|
@@ -25,6 +25,7 @@ import com.fs.his.service.IFsUserWxService;
|
|
|
import com.fs.his.utils.ConfigUtil;
|
|
|
import com.fs.system.domain.SysConfig;
|
|
|
import com.fs.system.mapper.SysConfigMapper;
|
|
|
+import io.netty.util.internal.StringUtil;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.Synchronized;
|
|
@@ -187,6 +188,122 @@ public class WxUserController extends AppBaseController{
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 看课互医小程序登陆接口
|
|
|
+ */
|
|
|
+ @ApiOperation("看课互医小程序登陆接口")
|
|
|
+ @PostMapping("/loginCourseHis")
|
|
|
+ @Transactional
|
|
|
+ public R loginCourseHis( @RequestBody LoginParam param) {
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(param.getCode())) {
|
|
|
+ return R.error("code不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ String appid="";
|
|
|
+
|
|
|
+ if(!StringUtil.isNullOrEmpty(param.getAppId())){
|
|
|
+ appid=param.getAppId();
|
|
|
+ }else {
|
|
|
+ FsSysConfig con = configUtil.getSysConfig();
|
|
|
+ appid = con.getAppid();
|
|
|
+ }
|
|
|
+
|
|
|
+// final WxMaService wxService = WxMaConfiguration.getMaService(con.getAppid());
|
|
|
+ final WxMaService wxService = WxMaConfiguration.getMaService(appid);
|
|
|
+ try {
|
|
|
+ WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
|
|
|
+ this.logger.info(session.getSessionKey());
|
|
|
+ this.logger.info(session.getOpenid());
|
|
|
+ // 解密
|
|
|
+ WxMaPhoneNumberInfo phoneNoInfo = wxService.getUserService().getPhoneNoInfo(session.getSessionKey(), param.getEncryptedData(), param.getIv());
|
|
|
+ //三端用户同步,先用unionid查询
|
|
|
+ FsUser user = new FsUser();
|
|
|
+ if (session.getUnionid()!=null){
|
|
|
+ user = userService.selectFsUserByUnionid(session.getUnionid());
|
|
|
+ if (user==null){
|
|
|
+ user = userService.selectFsUserByCourseOpenId(session.getOpenid());
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ user = userService.selectFsUserByCourseOpenId(session.getOpenid());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(user==null){
|
|
|
+ //新用户
|
|
|
+ String phoneNumber = phoneNoInfo.getPhoneNumber();
|
|
|
+
|
|
|
+
|
|
|
+ //查询手机号是否存在,如果存在,更新
|
|
|
+ FsUser checkPhone=userService.selectFsUserByPhone(encryptPhone(phoneNumber));
|
|
|
+ if (checkPhone==null){
|
|
|
+ checkPhone=userService.selectFsUserByPhone(phoneNumber);
|
|
|
+ }
|
|
|
+ if(checkPhone!=null){
|
|
|
+ user=checkPhone;
|
|
|
+ FsUser userMap=new FsUser();
|
|
|
+ userMap.setCourseMaOpenId(session.getOpenid());
|
|
|
+ userMap.setUserId(checkPhone.getUserId());
|
|
|
+ userMap.setUpdateTime(new DateTime());
|
|
|
+ if(session.getUnionid()!=null){
|
|
|
+ userMap.setUnionId(session.getUnionid());
|
|
|
+ }
|
|
|
+ userService.updateFsUser(userMap);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ //写入
|
|
|
+ user=new FsUser();
|
|
|
+ user.setPhone(phoneNoInfo.getPhoneNumber());
|
|
|
+ user.setNickName("微信用户"+phoneNoInfo.getPhoneNumber().substring(phoneNoInfo.getPhoneNumber().length()-4));
|
|
|
+ user.setAvatar("https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20230725/a848605591384ec29d49773dd58d9345.jpg");
|
|
|
+ user.setStatus(1);
|
|
|
+ user.setCourseMaOpenId(session.getOpenid());
|
|
|
+ user.setCreateTime(new Date());
|
|
|
+ if(session.getUnionid()!=null){
|
|
|
+ user.setUnionId(session.getUnionid());
|
|
|
+ }
|
|
|
+ userService.insertFsUser(user);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if(user.getStatus().equals(0)){
|
|
|
+
|
|
|
+ return R.error("此会员已禁用");
|
|
|
+ }
|
|
|
+ FsUser userMap=new FsUser();
|
|
|
+ userMap.setUserId(user.getUserId());
|
|
|
+ if(session.getUnionid()!=null){
|
|
|
+ userMap.setUnionId(session.getUnionid());
|
|
|
+ }
|
|
|
+ userMap.setCourseMaOpenId(session.getOpenid());
|
|
|
+ userMap.setPhone(phoneNoInfo.getPhoneNumber());
|
|
|
+ userMap.setUpdateTime(new DateTime());
|
|
|
+ userService.updateFsUser(userMap);
|
|
|
+ }
|
|
|
+ String token = jwtUtils.generateToken(user.getUserId());
|
|
|
+// redisCache.setCacheObject("token:"+user.getUserId(),token,365, TimeUnit.DAYS);
|
|
|
+ Map<String,Object> map=new HashMap<>();
|
|
|
+ map.put("token",token);
|
|
|
+ user.setPhone(encryptPhone(phoneNoInfo.getPhoneNumber()));
|
|
|
+ map.put("user",user);
|
|
|
+ FsUserLoginLog log = new FsUserLoginLog();
|
|
|
+ log.setCode(param.getCode());
|
|
|
+ log.setLoginJson(JSON.toJSONString(param));
|
|
|
+// log.setUserRegisterJson(JSON.toJSONString(jsonMap));
|
|
|
+ log.setStatus(1);
|
|
|
+ log.setUserId(user.getUserId());
|
|
|
+ log.setPhone(user.getPhone());
|
|
|
+ log.setMaOpenId(user.getMaOpenId());
|
|
|
+ log.setCreateTime(DateUtils.getNowDate());
|
|
|
+ fsUserLoginLogMapper.insertFsUserLoginLog(log);
|
|
|
+ return R.ok(map);
|
|
|
+ } catch (WxErrorException e) {
|
|
|
+ //this.logger.error(e.getMessage(), e);
|
|
|
+ return R.error("授权失败,"+e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@ApiOperation("小程序看课登录")
|
|
|
@PostMapping("/courseLogin")
|
|
|
@Transactional
|