|
@@ -18,6 +18,8 @@ import com.fs.company.service.ICompanyService;
|
|
import com.fs.company.service.ICompanyUserService;
|
|
import com.fs.company.service.ICompanyUserService;
|
|
import com.fs.core.config.WxMaConfiguration;
|
|
import com.fs.core.config.WxMaConfiguration;
|
|
import com.fs.app.utils.JwtUtils;
|
|
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.FsUser;
|
|
import com.fs.his.domain.FsUserWx;
|
|
import com.fs.his.domain.FsUserWx;
|
|
import com.fs.his.enums.FsUserOperationEnum;
|
|
import com.fs.his.enums.FsUserOperationEnum;
|
|
@@ -34,12 +36,14 @@ import org.apache.commons.lang3.StringUtils;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
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.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
import static com.fs.his.utils.PhoneUtil.encryptPhone;
|
|
import static com.fs.his.utils.PhoneUtil.encryptPhone;
|
|
|
|
|
|
@@ -77,24 +81,33 @@ public class CourseFsUserLoginController extends AppBaseController {
|
|
@Autowired
|
|
@Autowired
|
|
private IFsUserWxService fsUserWxService;
|
|
private IFsUserWxService fsUserWxService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private IFsUserCompanyUserService userCompanyUserService;
|
|
|
|
+
|
|
@ApiOperation("小程序-授权登录")
|
|
@ApiOperation("小程序-授权登录")
|
|
@PostMapping("/loginByMa")
|
|
@PostMapping("/loginByMa")
|
|
@UserOperationLog(operationType = FsUserOperationEnum.MINLOGIN)
|
|
@UserOperationLog(operationType = FsUserOperationEnum.MINLOGIN)
|
|
- public R login(@RequestBody LoginMaWxParam param) {
|
|
|
|
|
|
+ public R login(@Validated @RequestBody LoginMaWxParam param) {
|
|
log.info("=====================进入小程序授权登录, 入参: {}", param);
|
|
log.info("=====================进入小程序授权登录, 入参: {}", param);
|
|
if (StringUtils.isBlank(param.getCode())) {
|
|
if (StringUtils.isBlank(param.getCode())) {
|
|
return R.error("code不存在");
|
|
return R.error("code不存在");
|
|
}
|
|
}
|
|
|
|
|
|
Company company = companyService.selectCompanyById(param.getCompanyId());
|
|
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())){
|
|
// if (!param.getAppId().equals(company.getCourseMiniAppId())){
|
|
// return R.error("无权限,");
|
|
// return R.error("无权限,");
|
|
// }
|
|
// }
|
|
|
|
|
|
- final WxMaService wxService = WxMaConfiguration.getMaService(company.getCourseMiniAppId());
|
|
|
|
|
|
+ final WxMaService wxService = WxMaConfiguration.getMaService(param.getAppId());
|
|
try {
|
|
try {
|
|
WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
|
|
WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
|
|
this.logger.info(session.getSessionKey());
|
|
this.logger.info(session.getSessionKey());
|
|
@@ -104,6 +117,10 @@ public class CourseFsUserLoginController extends AppBaseController {
|
|
return R.error("登陆失败,openid未授权,请稍后再试!");
|
|
return R.error("登陆失败,openid未授权,请稍后再试!");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (param.getAuthType() == 2 && StringUtils.isEmpty(session.getUnionid())){
|
|
|
|
+ return R.error("未绑定开发平台,请联系管理员!");
|
|
|
|
+ }
|
|
|
|
+
|
|
// 手机号信息
|
|
// 手机号信息
|
|
WxMaPhoneNumberInfo phoneNoInfo = null;
|
|
WxMaPhoneNumberInfo phoneNoInfo = null;
|
|
if (param.getAuthType()==1){
|
|
if (param.getAuthType()==1){
|
|
@@ -116,19 +133,18 @@ public class CourseFsUserLoginController extends AppBaseController {
|
|
FsUser user = getUserByAuthType(param, wxService, session, phoneNoInfo);
|
|
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. 处理用户注册或更新
|
|
// 3. 处理用户注册或更新
|
|
String ip = IpUtil.getRequestIp();
|
|
String ip = IpUtil.getRequestIp();
|
|
user = handleUserRegisterOrUpdate(user, param, session, phoneNoInfo, company, companyUser, ip);
|
|
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. 处理用户与小程序的绑定
|
|
// 4. 处理用户与小程序的绑定
|
|
- handleFsUserWx(user, param, company, session);
|
|
|
|
|
|
+ handleFsUserWx(user, param, session);
|
|
|
|
|
|
log.info("保存成功的用户信息user: {}, 用户id: {}", user, user.getUserId());
|
|
log.info("保存成功的用户信息user: {}, 用户id: {}", user, user.getUserId());
|
|
String token = jwtUtils.generateToken(user.getUserId());
|
|
String token = jwtUtils.generateToken(user.getUserId());
|
|
@@ -156,28 +172,16 @@ public class CourseFsUserLoginController extends AppBaseController {
|
|
return user;
|
|
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) {
|
|
private FsUser handleUserRegisterOrUpdate(FsUser user, LoginMaWxParam param, WxMaJscode2SessionResult session, WxMaPhoneNumberInfo phoneNoInfo, Company company, CompanyUser companyUser, String ip) {
|
|
if (user == null) {
|
|
if (user == null) {
|
|
-
|
|
|
|
return createUser(param, session, phoneNoInfo, company, companyUser);
|
|
return createUser(param, session, phoneNoInfo, company, companyUser);
|
|
-
|
|
|
|
} else {
|
|
} else {
|
|
// 已存在用户,更新信息
|
|
// 已存在用户,更新信息
|
|
return updateUser(user, param, session, phoneNoInfo, company, companyUser);
|
|
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) {
|
|
private FsUser createUser(LoginMaWxParam param, WxMaJscode2SessionResult session, WxMaPhoneNumberInfo phoneNoInfo, Company company, CompanyUser companyUser) {
|
|
FsUser user = new FsUser();
|
|
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.setStatus((company != null ? company.getFsUserIsDefaultBlack() : 0) == 1 ? 0 : 1);
|
|
- // user.setCourseMaOpenId(session.getOpenid());
|
|
|
|
user.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
|
|
user.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
|
|
user.setCreateTime(new Date());
|
|
user.setCreateTime(new Date());
|
|
if (param.getAuthType() == 1 && phoneNoInfo != null) {
|
|
if (param.getAuthType() == 1 && phoneNoInfo != null) {
|
|
user.setPhone(phoneNoInfo.getPhoneNumber());
|
|
user.setPhone(phoneNoInfo.getPhoneNumber());
|
|
}
|
|
}
|
|
- if (companyUser != null && companyUser.getIsNeedRegisterMember() != null && companyUser.getIsNeedRegisterMember() != 1) {
|
|
|
|
- user.setCompanyId(param.getCompanyId());
|
|
|
|
- user.setCompanyUserId(param.getCompanyUserId());
|
|
|
|
- }
|
|
|
|
userService.insertFsUser(user);
|
|
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;
|
|
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) {
|
|
private FsUser updateUser(FsUser user, LoginMaWxParam param, WxMaJscode2SessionResult session, WxMaPhoneNumberInfo phoneNoInfo, Company company, CompanyUser companyUser) {
|
|
FsUser userMap = new FsUser();
|
|
FsUser userMap = new FsUser();
|
|
userMap.setUserId(user.getUserId());
|
|
userMap.setUserId(user.getUserId());
|
|
- // userMap.setCourseMaOpenId(session.getOpenid());
|
|
|
|
userMap.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
|
|
userMap.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
|
|
userMap.setUpdateTime(new DateTime());
|
|
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) {
|
|
if (param.getAuthType() == 1 && phoneNoInfo != null) {
|
|
userMap.setPhone(phoneNoInfo.getPhoneNumber());
|
|
userMap.setPhone(phoneNoInfo.getPhoneNumber());
|
|
}
|
|
}
|
|
-
|
|
|
|
- if (companyUser != null && companyUser.getIsNeedRegisterMember() != null && companyUser.getIsNeedRegisterMember() != 1) {
|
|
|
|
- userMap.setCompanyId(param.getCompanyId());
|
|
|
|
- userMap.setCompanyUserId(param.getCompanyUserId());
|
|
|
|
- }
|
|
|
|
userService.updateFsUser(userMap);
|
|
userService.updateFsUser(userMap);
|
|
return 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;
|
|
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.setType(1);
|
|
fsUserWx.setFsUserId(user.getUserId());
|
|
fsUserWx.setFsUserId(user.getUserId());
|
|
fsUserWx.setCompanyId(param.getCompanyId());
|
|
fsUserWx.setCompanyId(param.getCompanyId());
|
|
- fsUserWx.setAppId(company.getCourseMiniAppId());
|
|
|
|
|
|
+ fsUserWx.setAppId(param.getAppId());
|
|
fsUserWx.setOpenId(session.getOpenid());
|
|
fsUserWx.setOpenId(session.getOpenid());
|
|
fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
|
|
fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
|
|
fsUserWx.setCreateTime(new Date());
|
|
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());
|
|
fsUserWx.setUpdateTime(new Date());
|
|
- fsUserWxService.updateById(fsUserWx);
|
|
|
|
|
|
+ fsUserWxService.save(fsUserWx);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|