فهرست منبع

feat:销售app的微信授权登录、优化会员关联销售接口

caoliqin 1 ماه پیش
والد
کامیت
7d0edaf930

+ 8 - 0
fs-company-app/src/main/java/com/fs/app/controller/FsUserController.java

@@ -10,6 +10,7 @@ import com.fs.common.exception.ServiceException;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.service.ICompanyTagUserService;
 import com.fs.company.service.ICompanyUserService;
+import com.fs.course.param.newfs.FsUserCourseBeMemberParam;
 import com.fs.course.vo.newfs.FsCourseAnalysisVO;
 import com.fs.store.param.h5.CourseAnalysisParam;
 import com.fs.store.domain.FsUser;
@@ -271,4 +272,11 @@ public class FsUserController extends AppBaseController {
         return ResponseResult.ok(fsUserService.companyUserSummaryCount(userId, companyUserId));
     }
 
+    @Login
+    @ApiOperation("会员关联绑定销售")
+    @PostMapping("/beMember")
+    public ResponseResult<Boolean> becomeMember(@Valid @RequestBody FsUserCourseBeMemberParam param) {
+        return fsUserService.becomeMember(param);
+    }
+
 }

+ 101 - 0
fs-company-app/src/main/java/com/fs/app/controller/WxH5MpController.java

@@ -0,0 +1,101 @@
+package com.fs.app.controller;
+
+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.course.mapper.FsCourseWatchLogMapper;
+import com.fs.qw.mapper.QwExternalContactMapper;
+import com.fs.store.domain.FsUser;
+import com.fs.store.service.IFsUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
+import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.mp.api.WxMpService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+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 javax.validation.Valid;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+@Api("会员-h5-微信相关接口")
+@RestController
+@RequestMapping("/app/wx/h5/mp")
+@Slf4j
+public class WxH5MpController {
+    Logger logger = LoggerFactory.getLogger(getClass());
+    @Autowired
+    private WxMpService wxMpService;
+
+    @Autowired
+    private IFsUserService userService;
+
+    @Autowired
+    JwtUtils jwtUtils;
+    @Autowired
+    RedisCache redisCache;
+
+    @Autowired
+    FsCourseWatchLogMapper fsCourseWatchLogMapper;
+    @Autowired
+    QwExternalContactMapper qwExternalContactMapper;
+
+
+    @ApiOperation("微信授权登录成为会员")
+    @PostMapping("/loginByMp")
+    public R loginByMp(@Valid @RequestBody FsUserLoginByMpParam param) {
+        try {
+            //获取微信用户信息
+            WxOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.getOAuth2Service().getAccessToken(param.getCode());
+            WxOAuth2UserInfo wxMpUser = wxMpService.getOAuth2Service().getUserInfo(wxMpOAuth2AccessToken, null);
+            FsUser user = userService.selectFsUserByUnionid(wxMpUser.getUnionId());
+            if (user != null) {
+                //修改
+                FsUser userMap = new FsUser();
+                userMap.setUserId(user.getUserId());
+                userMap.setMpOpenId(wxMpUser.getOpenid());
+                userMap.setUpdateTime(new DateTime());
+                userMap.setNickname(wxMpUser.getNickname());
+                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.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());
+            }
+        }
+
+    }
+
+
+}

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

@@ -0,0 +1,11 @@
+package com.fs.app.param;
+
+import lombok.Data;
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+@Data
+public class FsUserLoginByMpParam implements Serializable {
+    @NotBlank(message = "code参数缺失")
+    private String code;
+}

+ 1 - 0
fs-service-system/src/main/java/com/fs/course/param/newfs/FsUserCourseBeMemberParam.java

@@ -17,6 +17,7 @@ public class FsUserCourseBeMemberParam implements Serializable {
     @ApiModelProperty(value = "销售id")
     private Long companyUserId;
 
+    @NotNull(message = "公司id不能为空")
     @ApiModelProperty(value = "公司id")
     private Long companyId;
 

+ 8 - 8
fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java

@@ -670,7 +670,7 @@ public class FsUserServiceImpl implements IFsUserService
         if (Objects.isNull(fsUser)){
             return ResponseResult.fail(401,"未授权");
         }
-        if (fsUser.getCompanyUserId() != null){
+        if (fsUser.getCompanyUserId() != null && !param.getCompanyUserId().equals(fsUser.getCompanyUserId())){
             return ResponseResult.fail(500,"该用户已成为其他销售会员");
         }
 
@@ -685,15 +685,15 @@ public class FsUserServiceImpl implements IFsUserService
         fsUser.setCompanyUserId(param.getCompanyUserId());
         fsUserMapper.updateFsUser(fsUser);
 
-        //关联会员标签,先删除再新增
-        Map<String, Object> map = new HashMap<>();
-        map.put("userId", param.getUserId());
-        map.put("companyId", fsUser.getCompanyId());
-        map.put("companyUserId", fsUser.getCompanyUserId());
-        companyTagUserMapper.deleteCompanyTagUserByMap(map);
-
         // 不为空则添加新标签
         if (Objects.nonNull(param.getTagIds()) && param.getTagIds().length > 0) {
+            //关联会员标签,先删除再新增
+            Map<String, Object> map = new HashMap<>();
+            map.put("userId", param.getUserId());
+            map.put("companyId", fsUser.getCompanyId());
+            map.put("companyUserId", fsUser.getCompanyUserId());
+            companyTagUserMapper.deleteCompanyTagUserByMap(map);
+
             CompanyTagUser companyTagUser = new CompanyTagUser();
             companyTagUser.setUserId(param.getUserId());
             companyTagUser.setCompanyId(fsUser.getCompanyId());

+ 0 - 7
fs-user-app/src/main/java/com/fs/app/controller/CourseWxH5Controller.java

@@ -129,12 +129,5 @@ public class CourseWxH5Controller extends AppBaseController {
         logger.error("zyp \n【h5看课中途报错】:{}",msg);
     }
 
-    @Login
-    @ApiOperation("会员关联绑定销售")
-    @PostMapping("/beMember")
-    public ResponseResult<Boolean> becomeMember(@Valid @RequestBody FsUserCourseBeMemberParam param) {
-        return fsUserService.becomeMember(param);
-    }
-
 
 }