|
|
@@ -18,6 +18,7 @@ import com.fs.his.config.FsSysConfig;
|
|
|
import com.fs.his.domain.FsUser;
|
|
|
import com.fs.his.domain.FsUserNewTask;
|
|
|
import com.fs.his.mapper.FsUserMapper;
|
|
|
+import com.fs.his.service.IFsUserCouponService;
|
|
|
import com.fs.his.service.IFsUserNewTaskService;
|
|
|
import com.fs.his.service.IFsUserService;
|
|
|
import com.fs.his.utils.ConfigUtil;
|
|
|
@@ -63,6 +64,9 @@ public class AppLoginController extends AppBaseController{
|
|
|
@Autowired
|
|
|
private RedisCache redisCache;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IFsUserCouponService fsUserCouponService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private ISmsService smsService;
|
|
|
@ApiOperation("注册app用户")
|
|
|
@@ -301,6 +305,52 @@ public class AppLoginController extends AppBaseController{
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @ApiOperation("苹果登录")
|
|
|
+ @PostMapping("/loginByApple")
|
|
|
+ @Transactional
|
|
|
+ public R loginByApple(@Validated @RequestBody FsUserLoginByAppleParam param) {
|
|
|
+ try {
|
|
|
+ if (StringUtils.isEmpty(param.getAppleKey())) {
|
|
|
+ return R.error("获取苹果key失败");
|
|
|
+ }
|
|
|
+ // 根据苹果key查询用户
|
|
|
+ FsUser user = userMapper.findUserByAppleKey(param.getAppleKey());
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ if (user == null) {
|
|
|
+ map.put("isNew", true);
|
|
|
+ return R.ok(map);
|
|
|
+ } else {
|
|
|
+ if (StringUtils.isNotEmpty(param.getJpushId())) {
|
|
|
+ updateExistingUserJpushId(user, param.getJpushId());
|
|
|
+ try {
|
|
|
+ //发送注册优惠券
|
|
|
+ fsUserCouponService.sendRegisterCoupon(user);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("发送注册优惠券失败:{}",e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(user.getPhone())) {
|
|
|
+ map.put("isNew", true);
|
|
|
+ return R.ok(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /*if (user.getStatus()==0){
|
|
|
+ return R.error("登录失败,账户被禁用");
|
|
|
+ }*/
|
|
|
+ int isFirstLogin = userNewTaskService.performTaskOne(user.getUserId());
|
|
|
+ String token = jwtUtils.generateToken(user.getUserId());
|
|
|
+ redisCache.setCacheObject("userToken:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);
|
|
|
+ map.put("token", token);
|
|
|
+ map.put("user", user);
|
|
|
+ map.put("isFirst",isFirstLogin);
|
|
|
+ return R.ok(map);
|
|
|
+ }catch (Exception e){
|
|
|
+ logger.error("zyp 苹果登录失败:{}", e.getMessage());
|
|
|
+ return R.error("登录失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@PostMapping("/loginByPhone")
|
|
|
public R loginByPhone(@RequestBody Map<String,String> map){
|
|
|
String phone = map.get("phone");
|
|
|
@@ -368,15 +418,33 @@ public class AppLoginController extends AppBaseController{
|
|
|
FsUser userMap = findUserByPhone(param.getPhone());
|
|
|
//绑定的手机号已存在用户的情况,将微信登录的时候创建的新号的UnionId移动到老号中,删除新号(将两个号合并)
|
|
|
if (userMap!=null){
|
|
|
+ if (userMap.getUserId().equals(user.getUserId())) {
|
|
|
+ user.setPhone(param.getPhone());
|
|
|
+ user.setLoginDevice(param.getLoginDevice());
|
|
|
+ user.setSource(param.getSource());
|
|
|
+ userService.updateFsUser(user);
|
|
|
+ return generateTokenAndReturn(user);
|
|
|
+ }
|
|
|
if (StringUtils.isNotEmpty(userMap.getUnionId())&&!userMap.getUnionId().equals(user.getUnionId())){
|
|
|
return R.error("该手机号已绑定其他微信");
|
|
|
}
|
|
|
- userMap.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
|
|
|
- userMap.setSource(param.getSource());
|
|
|
- userMap.setUnionId(user.getUnionId());
|
|
|
- if (userService.updateFsUser(userMap)>0){
|
|
|
- userService.realDeleteFsUserByUserId(user.getUserId());
|
|
|
- return generateTokenAndReturn(userMap);
|
|
|
+ //如果存在手机号也有用户,微信也有用户,保留创建时间比较久的用户
|
|
|
+ FsUser keepUser;
|
|
|
+ FsUser deleteUser;
|
|
|
+ if (userMap.getCreateTime().before(user.getCreateTime())){
|
|
|
+ keepUser = userMap;
|
|
|
+ deleteUser = user;
|
|
|
+ }else {
|
|
|
+ keepUser = user;
|
|
|
+ deleteUser = userMap;
|
|
|
+ }
|
|
|
+ keepUser.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
|
|
|
+ keepUser.setSource(param.getSource());
|
|
|
+ keepUser.setUnionId(user.getUnionId());
|
|
|
+ keepUser.setPhone(param.getPhone());
|
|
|
+ if (userService.updateFsUser(keepUser)>0){
|
|
|
+ userService.realDeleteFsUserByUserId(deleteUser.getUserId());
|
|
|
+ return generateTokenAndReturn(keepUser);
|
|
|
}
|
|
|
return R.error("绑定手机号失败");
|
|
|
}
|
|
|
@@ -414,20 +482,38 @@ public class AppLoginController extends AppBaseController{
|
|
|
FsUser user = findUserByPhone(param.getPhone());
|
|
|
if (user!=null && StringUtils.isEmpty(user.getUnionId())){
|
|
|
FsUser userByUnionId = userMapper.selectFsUserByUnionid(unionid);
|
|
|
- //绑定的微信已存在用户的情况,将手机号一键登录的时候创建的新号的UnionId移动到老号中,删除新号(将两个号合并)
|
|
|
+ //绑定的微信已存在用户的情况,将手机号一键登录的时候创建的新号的手机号移动到老号中,删除新号(将两个号合并)
|
|
|
if (userByUnionId!=null){
|
|
|
if (StringUtils.isNotEmpty(userByUnionId.getPhone())&&!user.getPhone().equals(userByUnionId.getPhone())){
|
|
|
return R.error("该微信已绑定其他手机号");
|
|
|
}
|
|
|
- userByUnionId.setPhone(param.getPhone());
|
|
|
- userByUnionId.setSource(param.getSource() != null ? param.getSource() : null );
|
|
|
- userByUnionId.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
|
|
|
- userByUnionId.setNickName(nickname);
|
|
|
- userByUnionId.setAvatar(avatar);
|
|
|
- userByUnionId.setSex(sex);
|
|
|
- if (userService.updateFsUser(userByUnionId)>0){
|
|
|
- userService.realDeleteFsUserByUserId(user.getUserId());
|
|
|
- return generateTokenAndReturn(userByUnionId);
|
|
|
+ if (userByUnionId.getUserId().equals(user.getUserId())) {
|
|
|
+ user.setPhone(param.getPhone());
|
|
|
+ user.setLoginDevice(param.getLoginDevice());
|
|
|
+ user.setSource(param.getSource());
|
|
|
+ user.setUnionId(unionid);
|
|
|
+ userService.updateFsUser(user);
|
|
|
+ return generateTokenAndReturn(user);
|
|
|
+ }
|
|
|
+ FsUser keepUser;
|
|
|
+ FsUser deleteUser;
|
|
|
+ if (user.getCreateTime().before(userByUnionId.getCreateTime())){
|
|
|
+ keepUser = user;
|
|
|
+ deleteUser = userByUnionId;
|
|
|
+ } else {
|
|
|
+ keepUser = userByUnionId;
|
|
|
+ deleteUser = user;
|
|
|
+ }
|
|
|
+ keepUser.setUnionId(unionid);
|
|
|
+ keepUser.setPhone(param.getPhone());
|
|
|
+ keepUser.setSource(param.getSource() != null ? param.getSource() : null );
|
|
|
+ keepUser.setLoginDevice(param.getLoginDevice() != null ? param.getLoginDevice() : null);
|
|
|
+ keepUser.setNickName(nickname);
|
|
|
+ keepUser.setAvatar(avatar);
|
|
|
+ keepUser.setSex(sex);
|
|
|
+ if (userService.updateFsUser(keepUser)>0){
|
|
|
+ userService.realDeleteFsUserByUserId(deleteUser.getUserId());
|
|
|
+ return generateTokenAndReturn(keepUser);
|
|
|
}
|
|
|
else {
|
|
|
return R.error("绑定微信失败");
|
|
|
@@ -447,7 +533,7 @@ public class AppLoginController extends AppBaseController{
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return R.error("数据参数异常!");
|
|
|
+ return generateTokenAndReturn(user);
|
|
|
}catch (Exception e){
|
|
|
logger.error("zyp 登录失败:{}", e.getMessage());
|
|
|
return R.error("登录失败");
|