| 
					
				 | 
			
			
				@@ -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,165 @@ 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,companyUser); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 处理用户与公司的关系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            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,CompanyUser companyUser) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        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.setCompanyId(company.getCompanyId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            newUser.setCompanyUserId(companyUser.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            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, user.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(user.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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |