Browse Source

1、调整位置

yfh 1 month ago
parent
commit
53b900e759

+ 40 - 161
fs-company-app/src/main/java/com/fs/app/controller/WxH5MpController.java

@@ -1,25 +1,14 @@
 package com.fs.app.controller;
 
-import cn.binarywang.wx.miniapp.api.WxMaService;
-import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.hutool.core.date.DateTime;
 import com.fs.app.param.FsUserLoginByMpParam;
 import com.fs.app.utils.JwtUtils;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
-import com.fs.company.domain.Company;
-import com.fs.company.domain.CompanyUser;
-import com.fs.company.service.ICompanyService;
-import com.fs.company.service.ICompanyUserService;
 import com.fs.course.mapper.FsCourseWatchLogMapper;
-import com.fs.his.domain.FsUserWx;
-import com.fs.his.service.IFsUserWxService;
 import com.fs.qw.mapper.QwExternalContactMapper;
 import com.fs.store.domain.FsUser;
-import com.fs.store.domain.FsUserCompanyUser;
-import com.fs.store.service.IFsUserCompanyUserService;
 import com.fs.store.service.IFsUserService;
-import com.fs.wx.miniapp.config.WxMaConfiguration;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -40,7 +29,6 @@ import javax.validation.Valid;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
 @Api("会员-h5-微信相关接口")
@@ -54,8 +42,6 @@ public class WxH5MpController {
 
     @Autowired
     private IFsUserService userService;
-    @Autowired
-    private IFsUserWxService fsUserWxService;
 
     @Autowired
     JwtUtils jwtUtils;
@@ -66,120 +52,58 @@ public class WxH5MpController {
     FsCourseWatchLogMapper fsCourseWatchLogMapper;
     @Autowired
     QwExternalContactMapper qwExternalContactMapper;
-    @Autowired
-    ICompanyService companyService;
-    @Autowired
-    private IFsUserCompanyUserService userCompanyUserService;
 
-    @Autowired
-    private ICompanyUserService companyUserService;
 
     @ApiOperation("微信授权登录成为会员")
     @PostMapping("/loginByMp")
     public R loginByMp(@Valid @RequestBody FsUserLoginByMpParam param) {
-        log.info("=====================进入小程序授权登录, 入参: {}", param);
-
-        // 参数校验
-        if (StringUtils.isBlank(param.getCode())) {
-            return R.error("code不存在");
-        }
-
-        // 公司状态校验
-        Company company = companyService.selectCompanyById(param.getCompanyId());
-        if (company == null || company.getStatus() == 0) {
-            return R.error("注册失败团队已停用,或不存在!");
-        }
-
-        // 客服状态校验
-        CompanyUser companyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());
-        if (companyUser == null || "1".equals(companyUser.getStatus())) {
-            return R.error("注册失败客服已停用,或不存在!");
-        }
-
         try {
-            // 获取微信用户信息
+            //获取微信用户信息
             WxOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(param.getCode());
             WxOAuth2UserInfo wxMpUser = wxMpService.getOAuth2Service().getUserInfo(wxMpOAuth2AccessToken, null);
-
-            // 处理用户信息
-            FsUser user = processUserInfo(wxMpUser, company);
-
-            // 处理用户与公司的关系
-            processUserCompanyRelationship(user, param, companyUser, company);
-
-            // 检查用户是否已绑定其他销售
-            FsUserCompanyUser userCompanyUser = userCompanyUserService.selectByUserIdAndProjectId(user.getUserId(), param.getProjectId());
-            if (Objects.nonNull(userCompanyUser) && !param.getCompanyUserId().equals(userCompanyUser.getCompanyUserId())){
-                return R.error(500, "该用户("+user.getUserId() + ")已成为其他销售会员");
+//            FsUser user = userService.selectFsUserByUnionid(wxMpUser.getUnionId());
+            FsUser user;
+            if(StringUtils.isNotEmpty(wxMpUser.getUnionId())) {
+                user = userService.selectFsUserByUnionId(wxMpUser.getUnionId());
+            } else {
+                user = userService.selectFsUserByMpOpenId(wxMpUser.getOpenid());
             }
-
-            // 生成token并返回结果
-            return generateLoginResult(user);
+            if (user != null) {
+                //修改
+                FsUser userMap = new FsUser();
+                userMap.setUserId(user.getUserId());
+                userMap.setMpOpenId(wxMpUser.getOpenid());
+                userMap.setUnionId(wxMpUser.getUnionId());
+                userMap.setUpdateTime(new DateTime());
+                userMap.setNickname(wxMpUser.getNickname());
+                userMap.setAvatar(wxMpUser.getHeadImgUrl());
+                userService.updateFsUser(userMap);
+            } else {
+                //新增
+                user = new FsUser();
+                user.setNickname(wxMpUser.getNickname());
+                user.setAvatar(wxMpUser.getHeadImgUrl());
+                user.setStatus(1);
+                user.setMpOpenId(wxMpUser.getOpenid());
+                user.setUnionId(wxMpUser.getUnionId());
+                user.setCreateTime(new Date());
+                userService.insertFsUser(user);
+            }
+            log.info("用户信息user: {}, 用户id: {}", user, user.getUserId());
+            String token = jwtUtils.generateToken(user.getUserId());
+            redisCache.setCacheObject("token:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
+            Map<String, Object> map = new HashMap<>();
+            map.put("token", token);
+            map.put("user", user);
+            return R.ok(map);
         } catch (WxErrorException e) {
-            this.logger.error(e.getMessage(), e);
-            return R.error("授权失败," + e.getMessage());
-        }
-    }
-
-    private FsUser processUserInfo(WxOAuth2UserInfo wxMpUser, Company company) {
-        FsUser user = userService.selectFsUserByUnionId(wxMpUser.getUnionId());
-
-        if (user != null) {
-            // 更新现有用户信息
-            FsUser userUpdate = new FsUser();
-            userUpdate.setUserId(user.getUserId());
-            userUpdate.setMpOpenId(wxMpUser.getOpenid());
-            userUpdate.setUnionId(wxMpUser.getUnionId());
-            userUpdate.setUpdateTime(new DateTime());
-            userUpdate.setNickname(wxMpUser.getNickname());
-            userUpdate.setAvatar(wxMpUser.getHeadImgUrl());
-            userService.updateFsUser(userUpdate);
-            return userUpdate;
-        } else {
-            // 创建新用户
-            FsUser newUser = new FsUser();
-            newUser.setNickname(wxMpUser.getNickname());
-            newUser.setAvatar(wxMpUser.getHeadImgUrl());
-            newUser.setStatus(1);
-            newUser.setMpOpenId(wxMpUser.getOpenid());
-            newUser.setUnionId(wxMpUser.getUnionId());
-            newUser.setCreateTime(new Date());
-            newUser.setStatus(company != null && company.getFsUserIsDefaultBlack() == 1 ? 0 : 1);
-            userService.insertFsUser(newUser);
-            return newUser;
-        }
-    }
-
-    private void processUserCompanyRelationship(FsUser user, FsUserLoginByMpParam param,
-                                                CompanyUser companyUser, Company company) {
-        if ((companyUser.getIsAllowedAllRegister() == null || companyUser.getIsAllowedAllRegister() == 1)
-                && companyUser.getIsNeedRegisterMember() != null && companyUser.getIsNeedRegisterMember() != 1) {
-            int defaultStatus = (company != null && company.getFsUserIsDefaultBlack() == 1) ? 0 : 1;
-            userCompanyUserService.bindRelationship(
-                    user.getUserId(),
-                    param.getProjectId(),
-                    companyUser.getCompanyId(),
-                    companyUser.getUserId(),
-                    defaultStatus
-            );
+            if (e.getError().getErrorCode() == 40163) {
+                return R.error(40163, e.getError().getErrorMsg());
+            } else {
+                return R.error("授权失败," + e.getMessage());
+            }
         }
-    }
 
-    private R generateLoginResult(FsUser user) {
-        String token = jwtUtils.generateToken(user.getUserId());
-        redisCache.setCacheObject("token:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
-
-        Map<String, Object> result = new HashMap<>();
-        result.put("token", token);
-        result.put("user", user);
-        return R.ok(result);
-    }
-
-    private R handleWxErrorException(WxErrorException e) {
-        if (e.getError().getErrorCode() == 40163) {
-            return R.error(40163, e.getError().getErrorMsg());
-        }
-        return R.error("授权失败," + e.getMessage());
     }
 
     @ApiOperation("单独返回用户头像和昵称的接口,不保存用户数据")
@@ -205,51 +129,6 @@ public class WxH5MpController {
         }
 
     }
-    @ApiOperation("处理用户与小程序的绑定")
-    @PostMapping("/handleFsUserWx")
-    public R handleFsUserWx(@RequestBody FsUserLoginByMpParam param) {
-        try {
-            final WxMaService wxService = WxMaConfiguration.getMaService(param.getAppId());
-            //获取微信用户信息
-            WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
 
-            FsUser user = userService.selectFsUserById(param.getUserId());
-            handleFsUserWx(user, param, session);
-            return R.ok();
-        } catch (WxErrorException e) {
-            if (e.getError().getErrorCode() == 40163) {
-                return R.error(40163, e.getError().getErrorMsg());
-            } else {
-                return R.error("获取用户信息失败," + e.getMessage());
-            }
-        }
-
-    }
-    private void handleFsUserWx(FsUser user, FsUserLoginByMpParam param, WxMaJscode2SessionResult session) {
-        if (user == null) return;
-        // 尝试更新
-        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(param.getAppId());
-            fsUserWx.setOpenId(session.getOpenid());
-            fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
-            fsUserWx.setCreateTime(new Date());
-            fsUserWx.setUpdateTime(new Date());
-            fsUserWxService.save(fsUserWx);
-        }
-    }
 
 }

+ 0 - 28
fs-company-app/src/main/java/com/fs/app/param/FsUserLoginByMpParam.java

@@ -1,39 +1,11 @@
 package com.fs.app.param;
 
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 @Data
 public class FsUserLoginByMpParam implements Serializable {
-
     @NotBlank(message = "code参数缺失")
-    @ApiModelProperty(value = "小程序登陆code")
     private String code;
-
-    @NotNull(message = "公司id不能为空")
-    @ApiModelProperty(value = "公司id")
-    private Long companyId;
-
-    @NotNull(message = "销售id不能为空")
-    @ApiModelProperty(value = "销售id")
-    private Long companyUserId;
-
-    //    @NotBlank(message = "用户昵称不能为空")
-    @ApiModelProperty(value = "用户昵称")
-    private String nickname;
-
-    @NotNull(message = "项目id不能为空")
-    @ApiModelProperty(value = "课程归属项目id")
-    private Long projectId;
-
-    private String appId;
-
-    /**
-     * 用户id
-     */
-    private Long userId;
-
 }

+ 154 - 52
fs-user-app/src/main/java/com/fs/app/controller/WxH5MpController.java

@@ -1,5 +1,7 @@
 package com.fs.app.controller;
 
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.hutool.core.date.DateTime;
 import com.fs.app.param.FsUserLoginByMpParam;
 import com.fs.app.utils.JwtUtils;
@@ -10,10 +12,14 @@ import com.fs.company.domain.CompanyUser;
 import com.fs.company.service.ICompanyService;
 import com.fs.company.service.ICompanyUserService;
 import com.fs.course.mapper.FsCourseWatchLogMapper;
+import com.fs.his.domain.FsUserWx;
+import com.fs.his.service.IFsUserWxService;
 import com.fs.qw.mapper.QwExternalContactMapper;
 import com.fs.store.domain.FsUser;
+import com.fs.store.domain.FsUserCompanyUser;
 import com.fs.store.service.IFsUserCompanyUserService;
 import com.fs.store.service.IFsUserService;
+import com.fs.wx.miniapp.config.WxMaConfiguration;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -34,6 +40,7 @@ import javax.validation.Valid;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
 @Api("会员-h5-微信相关接口(后面不需要这个接口了,再删除))")
@@ -63,68 +70,163 @@ public class WxH5MpController {
     ICompanyUserService companyUserService;
     @Autowired
     private IFsUserCompanyUserService userCompanyUserService;
-
+    @Autowired
+    private IFsUserWxService fsUserWxService;
 
     @ApiOperation("课程分享链接公众号登录")
     @PostMapping("/loginByMp")
-    public R loginByMp(@Valid @RequestBody FsUserLoginByMpParam param) throws WxErrorException {
-//        try {
-            //获取微信用户信息
+    public R loginByMp(@Valid @RequestBody FsUserLoginByMpParam param) {
+        log.info("=====================进入小程序授权登录, 入参: {}", param);
+
+        // 参数校验
+        if (StringUtils.isBlank(param.getCode())) {
+            return R.error("code不存在");
+        }
+
+        // 公司状态校验
+        Company company = companyService.selectCompanyById(param.getCompanyId());
+        if (company == null || company.getStatus() == 0) {
+            return R.error("注册失败团队已停用,或不存在!");
+        }
+
+        // 客服状态校验
+        CompanyUser companyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());
+        if (companyUser == null || "1".equals(companyUser.getStatus())) {
+            return R.error("注册失败客服已停用,或不存在!");
+        }
+
+        try {
+            // 获取微信用户信息
             WxOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(param.getCode());
             WxOAuth2UserInfo wxMpUser = wxMpService.getOAuth2Service().getUserInfo(wxMpOAuth2AccessToken, null);
-            //1、特殊(需求设计:需要根据公司是否开启黑名单来设置会员初始化的状态)
-            Company company = null;
-            if(param.getCompanyId() != null){
-                company = companyService.selectCompanyById(param.getCompanyId());
-            }
-            // 根据销售后台设置的  是否需要单独注册会员 来判断是否需要设置销售的值
-            CompanyUser companyUser = companyUserService.selectCompanyUserById(param.getCompanyUserId());
 
-            FsUser user;
-            if(StringUtils.isNotEmpty(wxMpUser.getUnionId())) {
-                user = userService.selectFsUserByUnionId(wxMpUser.getUnionId());
-            } else {
-                user = userService.selectFsUserByMpOpenId(wxMpUser.getOpenid());
+            // 处理用户信息
+            FsUser user = processUserInfo(wxMpUser, company);
+
+            // 处理用户与公司的关系
+            processUserCompanyRelationship(user, param, companyUser, company);
+
+            // 检查用户是否已绑定其他销售
+            FsUserCompanyUser userCompanyUser = userCompanyUserService.selectByUserIdAndProjectId(user.getUserId(), param.getProjectId());
+            if (Objects.nonNull(userCompanyUser) && !param.getCompanyUserId().equals(userCompanyUser.getCompanyUserId())){
+                return R.error(500, "该用户("+user.getUserId() + ")已成为其他销售会员");
             }
-            if (user != null) {
-                //修改
-                FsUser userMap = new FsUser();
-                userMap.setUserId(user.getUserId());
-                userMap.setMpOpenId(wxMpUser.getOpenid());
-                userMap.setUnionId(wxMpUser.getUnionId());
-                userMap.setUpdateTime(new DateTime());
-                userMap.setAvatar(wxMpUser.getHeadImgUrl());
-                userMap.setNickname(wxMpUser.getNickname());
-                userService.updateFsUser(userMap);
+
+            // 生成token并返回结果
+            return generateLoginResult(user);
+        } catch (WxErrorException e) {
+            this.logger.error(e.getMessage(), e);
+            return R.error("授权失败," + e.getMessage());
+        }
+    }
+
+    private FsUser processUserInfo(WxOAuth2UserInfo wxMpUser, Company company) {
+        FsUser user = userService.selectFsUserByUnionId(wxMpUser.getUnionId());
+
+        if (user != null) {
+            // 更新现有用户信息
+            FsUser userUpdate = new FsUser();
+            userUpdate.setUserId(user.getUserId());
+            userUpdate.setMpOpenId(wxMpUser.getOpenid());
+            userUpdate.setUnionId(wxMpUser.getUnionId());
+            userUpdate.setUpdateTime(new DateTime());
+            userUpdate.setNickname(wxMpUser.getNickname());
+            userUpdate.setAvatar(wxMpUser.getHeadImgUrl());
+            userService.updateFsUser(userUpdate);
+            return userUpdate;
+        } else {
+            // 创建新用户
+            FsUser newUser = new FsUser();
+            newUser.setNickname(wxMpUser.getNickname());
+            newUser.setAvatar(wxMpUser.getHeadImgUrl());
+            newUser.setStatus(1);
+            newUser.setMpOpenId(wxMpUser.getOpenid());
+            newUser.setUnionId(wxMpUser.getUnionId());
+            newUser.setCreateTime(new Date());
+            newUser.setStatus(company != null && company.getFsUserIsDefaultBlack() == 1 ? 0 : 1);
+            userService.insertFsUser(newUser);
+            return newUser;
+        }
+    }
+
+    private void processUserCompanyRelationship(FsUser user, FsUserLoginByMpParam param,
+                                                CompanyUser companyUser, Company company) {
+        if ((companyUser.getIsAllowedAllRegister() == null || companyUser.getIsAllowedAllRegister() == 1)
+                && companyUser.getIsNeedRegisterMember() != null && companyUser.getIsNeedRegisterMember() != 1) {
+            int defaultStatus = (company != null && company.getFsUserIsDefaultBlack() == 1) ? 0 : 1;
+            userCompanyUserService.bindRelationship(
+                    user.getUserId(),
+                    param.getProjectId(),
+                    companyUser.getCompanyId(),
+                    companyUser.getUserId(),
+                    defaultStatus
+            );
+        }
+    }
+
+    private R generateLoginResult(FsUser user) {
+        String token = jwtUtils.generateToken(user.getUserId());
+        redisCache.setCacheObject("token:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
+
+        Map<String, Object> result = new HashMap<>();
+        result.put("token", token);
+        result.put("user", user);
+        return R.ok(result);
+    }
+
+    private R handleWxErrorException(WxErrorException e) {
+        if (e.getError().getErrorCode() == 40163) {
+            return R.error(40163, e.getError().getErrorMsg());
+        }
+        return R.error("授权失败," + e.getMessage());
+    }
+
+
+    @ApiOperation("处理用户与小程序的绑定")
+    @PostMapping("/handleFsUserWx")
+    public R handleFsUserWx(@RequestBody FsUserLoginByMpParam param) {
+        try {
+            final WxMaService wxService = WxMaConfiguration.getMaService(param.getAppId());
+            //获取微信用户信息
+            WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
+
+            FsUser user = userService.selectFsUserById(param.getUserId());
+            handleFsUserWx(user, param, session);
+            return R.ok();
+        } catch (WxErrorException e) {
+            if (e.getError().getErrorCode() == 40163) {
+                return R.error(40163, e.getError().getErrorMsg());
             } else {
-                //新增
-                user = new FsUser();
-                user.setNickname(wxMpUser.getNickname());
-                user.setAvatar(wxMpUser.getHeadImgUrl());
-                user.setMpOpenId(wxMpUser.getOpenid());
-                user.setUnionId(wxMpUser.getUnionId());
-                user.setCreateTime(new Date());
-                userService.insertFsUser(user);
-                if((companyUser.getIsAllowedAllRegister() == null || companyUser.getIsAllowedAllRegister() != 0) && 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 R.error("获取用户信息失败," + e.getMessage());
             }
-            log.error("用户信息user: {}, 用户id: {}", user, user.getUserId());
-            String token = jwtUtils.generateToken(user.getUserId());
-            redisCache.setCacheObject("token:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
-            Map<String, Object> map = new HashMap<>();
-            map.put("token", token);
-            map.put("user", user);
-            return R.ok(map);
-//        } catch (WxErrorException e) {
-//            if (e.getError().getErrorCode() == 40163) {
-//                return R.error(40163, e.getError().getErrorMsg());
-//            } else {
-//                return R.error("授权失败," + e.getMessage());
-//            }
-//        }
+        }
+
+    }
+    private void handleFsUserWx(FsUser user, FsUserLoginByMpParam param, WxMaJscode2SessionResult session) {
+        if (user == null) return;
+        // 尝试更新
+        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(param.getAppId());
+            fsUserWx.setOpenId(session.getOpenid());
+            fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
+            fsUserWx.setCreateTime(new Date());
+            fsUserWx.setUpdateTime(new Date());
+            fsUserWxService.save(fsUserWx);
+        }
     }
 
 }

+ 7 - 0
fs-user-app/src/main/java/com/fs/app/param/FsUserLoginByMpParam.java

@@ -23,4 +23,11 @@ public class FsUserLoginByMpParam implements Serializable {
     @NotNull(message = "项目ID不能为空")
     @ApiModelProperty(value = "项目ID")
     private Long projectId;
+
+    private String appId;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
 }