Sfoglia il codice sorgente

会员多项目登录

zyp 1 settimana fa
parent
commit
e1374d8632

+ 1 - 1
fs-service/src/main/java/com/fs/common/param/LoginMaWxParam.java

@@ -34,7 +34,7 @@ public class LoginMaWxParam implements Serializable {
     @ApiModelProperty(value = "用户头像")
     private String avatar;
 
-//    @NotNull(message = "项目id不能为空")
+    @NotNull(message = "项目id不能为空")
     @ApiModelProperty(value = "课程归属项目id")
     private Long projectId;
 

+ 49 - 52
fs-user-app/src/main/java/com/fs/app/controller/course/CourseFsUserLoginController.java

@@ -18,6 +18,8 @@ import com.fs.company.service.ICompanyService;
 import com.fs.company.service.ICompanyUserService;
 import com.fs.core.config.WxMaConfiguration;
 import com.fs.app.utils.JwtUtils;
+import com.fs.course.domain.FsUserCompanyUser;
+import com.fs.course.service.IFsUserCompanyUserService;
 import com.fs.his.domain.FsUser;
 import com.fs.his.domain.FsUserWx;
 import com.fs.his.enums.FsUserOperationEnum;
@@ -34,12 +36,14 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Date;
+import java.util.Objects;
 
 import static com.fs.his.utils.PhoneUtil.encryptPhone;
 
@@ -77,24 +81,33 @@ public class CourseFsUserLoginController extends AppBaseController {
     @Autowired
     private IFsUserWxService fsUserWxService;
 
+    @Autowired
+    private IFsUserCompanyUserService userCompanyUserService;
+
     @ApiOperation("小程序-授权登录")
     @PostMapping("/loginByMa")
     @UserOperationLog(operationType = FsUserOperationEnum.MINLOGIN)
-    public R login(@RequestBody LoginMaWxParam param) {
+    public R login(@Validated @RequestBody LoginMaWxParam param) {
         log.info("=====================进入小程序授权登录, 入参: {}", param);
         if (StringUtils.isBlank(param.getCode())) {
             return R.error("code不存在");
         }
 
         Company company = companyService.selectCompanyById(param.getCompanyId());
-        if (company.getCourseMiniAppId() == null) {
-            return R.error("小程序参数错误!");
+        if (company==null || company.getStatus()==0){
+            return R.error("注册失败团队已停用,或不存在!");
+        }
+
+        // 根据销售后台设置的  是否需要单独注册会员 来判断是否需要设置销售的值
+        CompanyUser companyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());;
+        if(companyUser == null || companyUser.getStatus().equals("1")){
+            return R.error("注册失败客服已停用,或不存在!");
         }
 //        if (!param.getAppId().equals(company.getCourseMiniAppId())){
 //            return R.error("无权限,");
 //        }
 
-        final WxMaService wxService = WxMaConfiguration.getMaService(company.getCourseMiniAppId());
+        final WxMaService wxService = WxMaConfiguration.getMaService(param.getAppId());
         try {
             WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
             this.logger.info(session.getSessionKey());
@@ -104,6 +117,10 @@ public class CourseFsUserLoginController extends AppBaseController {
                 return R.error("登陆失败,openid未授权,请稍后再试!");
             }
 
+            if (param.getAuthType() == 2 && StringUtils.isEmpty(session.getUnionid())){
+                return R.error("未绑定开发平台,请联系管理员!");
+            }
+
             // 手机号信息
             WxMaPhoneNumberInfo phoneNoInfo = null;
             if (param.getAuthType()==1){
@@ -116,19 +133,18 @@ public class CourseFsUserLoginController extends AppBaseController {
             FsUser user = getUserByAuthType(param, wxService, session, phoneNoInfo);
 
 
-            // 2. 获取销售信息
-            CompanyUser companyUser = getCompanyUser(param);
-
-            if (user!=null && user.getCompanyUserId() != null && !param.getCompanyUserId().equals(user.getCompanyUserId())) {
-                return R.error("该用户已成为其他销售会员");
-            }
-
             // 3. 处理用户注册或更新
             String ip = IpUtil.getRequestIp();
             user = handleUserRegisterOrUpdate(user, param, session, phoneNoInfo, company, companyUser, ip);
 
+
+            FsUserCompanyUser userCompanyUser = userCompanyUserService.selectByUserIdAndProjectId(user.getUserId(), param.getProjectId());
+            if (Objects.nonNull(userCompanyUser) && !param.getCompanyUserId().equals(userCompanyUser.getCompanyUserId())){
+                return R.error(500, "该用户("+user.getUserId() + ")已成为其他销售会员");
+            }
+
             // 4. 处理用户与小程序的绑定
-            handleFsUserWx(user, param, company, session);
+            handleFsUserWx(user, param, session);
 
             log.info("保存成功的用户信息user: {}, 用户id: {}", user, user.getUserId());
             String token = jwtUtils.generateToken(user.getUserId());
@@ -156,28 +172,16 @@ public class CourseFsUserLoginController extends AppBaseController {
         return user;
     }
 
-    /**
-     * 获取销售信息
-     */
-    private CompanyUser getCompanyUser(LoginMaWxParam param) {
-        if (param.getCompanyUserId() != null) {
-            return companyUserService.selectCompanyUserById(param.getCompanyUserId());
-        }
-        return null;
-    }
 
     /**
      * 处理用户注册或更新
      */
     private FsUser handleUserRegisterOrUpdate(FsUser user, LoginMaWxParam param, WxMaJscode2SessionResult session, WxMaPhoneNumberInfo phoneNoInfo, Company company, CompanyUser companyUser, String ip) {
         if (user == null) {
-
             return createUser(param, session, phoneNoInfo, company, companyUser);
-
         } else {
             // 已存在用户,更新信息
             return updateUser(user, param, session, phoneNoInfo, company, companyUser);
-
         }
     }
 
@@ -186,20 +190,18 @@ public class CourseFsUserLoginController extends AppBaseController {
      */
     private FsUser createUser(LoginMaWxParam param, WxMaJscode2SessionResult session, WxMaPhoneNumberInfo phoneNoInfo, Company company, CompanyUser companyUser) {
         FsUser user = new FsUser();
-        user.setNickName(param.getNickname() != null ? param.getNickname() : "微信用户");
-        user.setAvatar(param.getAvatar() != null ? param.getAvatar() : null);
         user.setStatus((company != null ? company.getFsUserIsDefaultBlack() : 0) == 1 ? 0 : 1);
-        // user.setCourseMaOpenId(session.getOpenid());
         user.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
         user.setCreateTime(new Date());
         if (param.getAuthType() == 1 && phoneNoInfo != null) {
             user.setPhone(phoneNoInfo.getPhoneNumber());
         }
-        if (companyUser != null && companyUser.getIsNeedRegisterMember() != null && companyUser.getIsNeedRegisterMember() != 1) {
-            user.setCompanyId(param.getCompanyId());
-            user.setCompanyUserId(param.getCompanyUserId());
-        }
         userService.insertFsUser(user);
+        if((companyUser.getIsAllowedAllRegister() == null || companyUser.getIsAllowedAllRegister() == 1)
+                && companyUser.getIsNeedRegisterMember() != null && companyUser.getIsNeedRegisterMember() != 1){
+            int defaultStatus = (company != null ? company.getFsUserIsDefaultBlack() : 0) == 1 ? 0 : 1;
+            userCompanyUserService.bindRelationship(user.getUserId(), param.getProjectId(), companyUser.getCompanyId(), companyUser.getUserId(), defaultStatus);
+        }
         return user;
     }
 
@@ -209,19 +211,11 @@ public class CourseFsUserLoginController extends AppBaseController {
     private FsUser updateUser(FsUser user, LoginMaWxParam param, WxMaJscode2SessionResult session, WxMaPhoneNumberInfo phoneNoInfo, Company company, CompanyUser companyUser) {
         FsUser userMap = new FsUser();
         userMap.setUserId(user.getUserId());
-        // userMap.setCourseMaOpenId(session.getOpenid());
         userMap.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
         userMap.setUpdateTime(new DateTime());
-        userMap.setNickName(param.getNickname() != null ? param.getNickname() : user.getNickName());
-        userMap.setAvatar(param.getAvatar() != null ? param.getAvatar() : user.getAvatar());
         if (param.getAuthType() == 1 && phoneNoInfo != null) {
             userMap.setPhone(phoneNoInfo.getPhoneNumber());
         }
-
-        if (companyUser != null && companyUser.getIsNeedRegisterMember() != null && companyUser.getIsNeedRegisterMember() != 1) {
-            userMap.setCompanyId(param.getCompanyId());
-            userMap.setCompanyUserId(param.getCompanyUserId());
-        }
         userService.updateFsUser(userMap);
         return userMap;
     }
@@ -229,27 +223,30 @@ public class CourseFsUserLoginController extends AppBaseController {
     /**
      * 处理用户与小程序的绑定
      */
-    private void handleFsUserWx(FsUser user, LoginMaWxParam param, Company company, WxMaJscode2SessionResult session) {
+    private void handleFsUserWx(FsUser user, LoginMaWxParam param, WxMaJscode2SessionResult session) {
         if (user == null) return;
-        FsUserWx fsUserWx = fsUserWxService.selectByAppIdAndUserId(company.getCourseMiniAppId(), user.getUserId(), 1);
-        if (fsUserWx == null) {
-            fsUserWx = new FsUserWx();
+        // 尝试更新
+        boolean updated = fsUserWxService.lambdaUpdate()
+                .eq(FsUserWx::getFsUserId, user.getUserId())
+                .eq(FsUserWx::getAppId, param.getAppId())
+                .eq(FsUserWx::getOpenId, session.getOpenid())
+                .set(FsUserWx::getCompanyId, param.getCompanyId())
+                .set(FsUserWx::getUnionId, session.getUnionid() == null ? "" : session.getUnionid())
+                .set(FsUserWx::getUpdateTime, new Date())
+                .update();
+
+        // 如果更新失败(记录不存在),则插入
+        if (!updated) {
+            FsUserWx fsUserWx = new FsUserWx();
             fsUserWx.setType(1);
             fsUserWx.setFsUserId(user.getUserId());
             fsUserWx.setCompanyId(param.getCompanyId());
-            fsUserWx.setAppId(company.getCourseMiniAppId());
+            fsUserWx.setAppId(param.getAppId());
             fsUserWx.setOpenId(session.getOpenid());
             fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
             fsUserWx.setCreateTime(new Date());
-            fsUserWxService.save(fsUserWx);
-        } else {
-            fsUserWx.setFsUserId(user.getUserId());
-            fsUserWx.setCompanyId(param.getCompanyId());
-            fsUserWx.setAppId(company.getCourseMiniAppId());
-            fsUserWx.setOpenId(session.getOpenid());
-            fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
             fsUserWx.setUpdateTime(new Date());
-            fsUserWxService.updateById(fsUserWx);
+            fsUserWxService.save(fsUserWx);
         }
     }
 

+ 2 - 2
fs-user-app/src/main/java/com/fs/app/controller/course/CourseQwLoginController.java

@@ -108,7 +108,7 @@ public class CourseQwLoginController extends AppBaseController {
             if(user != null){
                 FsUser userMap = new FsUser();
                 userMap.setUserId(user.getUserId());
-                userMap.setCourseMaOpenId(session.getOpenid());
+//                userMap.setCourseMaOpenId(session.getOpenid());
                 userMap.setUpdateTime(new DateTime());
                 userService.updateFsUser(userMap);
             }
@@ -118,7 +118,7 @@ public class CourseQwLoginController extends AppBaseController {
                 user.setNickName("微信用户");
                 user.setAvatar("https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230725/a848605591384ec29d49773dd58d9345.jpg");
                 user.setStatus(1);
-                user.setCourseMaOpenId(session.getOpenid());
+//                user.setCourseMaOpenId(session.getOpenid());
                 user.setUnionId(session.getUnionid());
                 user.setCreateTime(new Date());
                 userService.insertFsUser(user);