ソースを参照

1、调整app登录限制

yys 2 週間 前
コミット
54cf444e32

+ 37 - 6
fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java

@@ -12,6 +12,7 @@ import com.fs.common.VerifyCodeUtil;
 import com.fs.common.annotation.Log;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.core.domain.R;
+import com.fs.common.core.domain.entity.SysDictData;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.enums.BusinessType;
@@ -38,6 +39,8 @@ import com.fs.im.dto.OpenImResponseDTO;
 import com.fs.im.service.OpenIMService;
 import com.fs.qw.domain.QwUser;
 import com.fs.qw.service.ILuckyBagService;
+import com.fs.system.service.ISysDictDataService;
+import com.fs.system.service.ISysDictTypeService;
 import com.fs.voice.utils.StringUtil;
 import com.fs.watch.domain.WatchDeviceSetup;
 import com.fs.watch.domain.WatchUser;
@@ -70,6 +73,9 @@ public class AppLoginController extends AppBaseController{
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
     @Autowired
     private IFsUserService userService;
+
+    @Autowired
+    private ISysDictTypeService iSysDictTypeService;
     @Autowired
     private FsUserMapper userMapper;
     @Autowired
@@ -142,13 +148,14 @@ public class AppLoginController extends AppBaseController{
     @ApiOperation("登录")
     @PostMapping("/login")
     @Transactional
-    public R login(@Validated @RequestBody FsUserLoginParam param) {
+    public R login(@Validated @RequestBody FsUserLoginParam param,
+                   @RequestHeader(value = "isWechatInstalled", required = false) Boolean isWechatInstalled) {
         int loginType = param.getLoginType();
         switch (loginType) {
             case 1:
-                return handleLoginType1(param);
+                return handleLoginType1(param,isWechatInstalled);
             case 3:
-                return handleLoginType3(param);
+                return handleLoginType3(param,isWechatInstalled);
             default:
                 return R.error("请选择正确的登陆类型!");
         }
@@ -476,7 +483,8 @@ public class AppLoginController extends AppBaseController{
     }
 
     @PostMapping("/loginByPhone")
-    public R loginByPhone(@RequestBody Map<String,String> map){
+    public R loginByPhone(@RequestBody Map<String,String> map,
+                          @RequestHeader(value = "isWechatInstalled", required = false) Boolean isWechatInstalled){
         String phone = map.get("phone");
         String code = map.get("code");
         String encryptPhone = encryptPhone(phone);
@@ -500,6 +508,10 @@ public class AppLoginController extends AppBaseController{
         }
 
         FsUser info=user.get(0);
+
+        if (isWechatInstalled && isInit()){
+            return generateTokenAndReturn(info);
+        }
         FsUser userMap = new FsUser();
         userMap.setUserId(info.getUserId());
         String jpushId = map.get("jpushId");
@@ -731,7 +743,7 @@ public class AppLoginController extends AppBaseController{
 //
 //    }
 
-    private R handleLoginType1(FsUserLoginParam param) {
+    private R handleLoginType1(FsUserLoginParam param, Boolean isWechatInstalled) {
         if (StringUtils.isEmpty(param.getPhone()) || StringUtils.isEmpty(param.getPassword())) {
             return R.error("账号或密码不能为空");
         }
@@ -744,6 +756,9 @@ public class AppLoginController extends AppBaseController{
         //当前手机号只绑定了单个微信,直接登录
         if (usersByPhone.size()==1){
             user = usersByPhone.get(0);
+            if (isWechatInstalled && isInit()){
+                return generateTokenAndReturn(user);
+            }
             if (user.getUnionId()==null){
                 if (user.getPhone().length()<=11){
                     FsUser fsUser = new FsUser();
@@ -786,6 +801,19 @@ public class AppLoginController extends AppBaseController{
 
     }
 
+    /**
+     * 后台配置
+     *
+     * @return
+     */
+    private boolean isInit() {
+        List<SysDictData> sysDictData = iSysDictTypeService.selectDictDataByType("is_init");
+        if (CollectionUtil.isNotEmpty(sysDictData)){
+            return sysDictData.get(0).getDictValue().equals("1");
+        }
+        return false;
+    }
+
     @PostMapping("/sendCode")
     public R sendCode(@RequestBody Map<String, String> body){
         String phone = body.get("phone");
@@ -864,7 +892,7 @@ public class AppLoginController extends AppBaseController{
 //        return generateTokenAndReturn(user);
 //    }
 
-    private R handleLoginType3(FsUserLoginParam param) {
+    private R handleLoginType3(FsUserLoginParam param, Boolean isWechatInstalled) {
         if (StringUtils.isEmpty(param.getPhone())) {
             return R.error("获取手机号失败");
         }
@@ -885,6 +913,9 @@ public class AppLoginController extends AppBaseController{
         }
         if (usersByPhone.size()==1){
             user = usersByPhone.get(0);
+            if (isWechatInstalled && isInit()){
+                return generateTokenAndReturn(user);
+            }
             if (user.getUnionId()==null){
                 if (user.getPhone().length()<=11){
                     FsUser fsUser = new FsUser();