记得上下班打卡 | git大法好,push需谨慎

Commit a7f0e40c authored by 张国柄's avatar 张国柄

fix:修改手机号刷新TK;

REG+锁;
parent c0d38a7e
......@@ -16,5 +16,5 @@ public interface IAdamUserInfoService extends IService<AdamUserInfo> {
void edit(AdamUserInfoVo userInfoVo);
void editMobile(String uid, String mobile);
String editMobile(String uid, String mobile);
}
......@@ -36,10 +36,12 @@ public class AdamRedisConst {
public static final String INCR_MEMBER_NO = INCR.concat("member_no");
public static final String INFO_MEMBERS = ADAM.concat(":list:members");
public static final String INFO_MEMBERS_INFO = ADAM.concat(":list:members:info:");
public static final String INFO_MEMBERS_PRICE_INFO = ADAM.concat(":list:members:price:info:");
public static final String INFO_MEMBERS_CODE_INFO = ADAM.concat(":list:members:code:info:");
public static final String INFO_MEMBERS_REPERTORY_INFO = ADAM.concat(":list:members:repertory:");
public static final String INFO_MEMBERS_ORDER_INFO = ADAM.concat(":list:members:order:");
/* ----------------------------------------------------------------- */
public static final String LOCK_KEY_UMEMBER_NO = "adam:lk:member_no";
// // // // // // // // // //
public static final String LOCK_KEY_UREGISTER = "adam:lk:register:";
/* ----------------------------------------------------------------- */
}
......@@ -128,12 +128,19 @@ public class AdamLoginController {
if (!this.checkSmsCode(mobile, code)) return ResponseDto.failure(ErrorMapping.get("10002"));
String uid = adamRdmService.getUidByMobile(mobile);
boolean toRegister = StringUtils.isEmpty(uid);
AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid);
AdamUserInfoVo userInfoVo;
if (toRegister) {
userInfoVo = adamUserService.register(mobile);
if (null == userInfoVo) {
return ResponseDto.failure(ErrorMapping.get("10003"));
}
} else {
userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
}
AdamLoginInfoVo loginInfoVo = AdamLoginInfoVo.getNew();
// if (userInfoVo.getIsComplete() == 1) {
if (!toRegister) {
loginInfoVo.setRealNameInfo(adamRdmService.getRealInfoVoByUid(userInfoVo.getUid()));
loginInfoVo.setThirdPartInfo(adamRdmService.getThirdPartVoListByUid(userInfoVo.getUid()));
......@@ -160,10 +167,17 @@ public class AdamLoginController {
String uid = adamRdmService.getUidByMobile(mobile);
boolean toRegister = StringUtils.isEmpty(uid);
AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid);
AdamUserInfoVo userInfoVo;
if (toRegister) {
userInfoVo = adamUserService.register(mobile);
if (null == userInfoVo) {
return ResponseDto.failure(ErrorMapping.get("10003"));
}
} else {
userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
}
AdamLoginInfoVo loginInfoVo = AdamLoginInfoVo.getNew();
// if (loginInfoVo.getUserInfo().getIsComplete() == 1) {
if (!toRegister) {
loginInfoVo.setRealNameInfo(adamRdmService.getRealInfoVoByUid(userInfoVo.getUid()));
loginInfoVo.setThirdPartInfo(adamRdmService.getThirdPartVoListByUid(userInfoVo.getUid()));
......@@ -197,10 +211,13 @@ public class AdamLoginController {
loginInfoVo.setUserMemberVo(adamRdmService.getUserMemberVoByUid(uid));
loginInfoVo.setMemberVo(adamRdmService.getMemberSimpleVo());
} else {// 新账号注册
if (!this.checkSmsCode(parameter.getMobile(), parameter.getCode()))
if (!this.checkSmsCode(parameter.getMobile(), parameter.getCode())) {
return ResponseDto.failure(ErrorMapping.get("10002"));
}
AdamUserInfoVo registerUserInfo = adamUserService.register(parameter);
if (null == registerUserInfo) {
return ResponseDto.failure(ErrorMapping.get("10003"));
}
loginInfoVo.setUserInfo(registerUserInfo);
loginInfoVo.setThirdPartInfo(adamRdmService.getThirdPartVoListByUid(registerUserInfo.getUid()));
loginInfoVo.setMemberVo(adamRdmService.getMemberSimpleVo());
......
......@@ -164,7 +164,7 @@ public class AdamMemberOrderController {
if (vo.getState() != 0) {
return ResponseDto.failure(ErrorMapping.get(vo.getState() == 1 ? "10208" : "10209"));
}
return ResponseDto.success();
return ResponseDto.success(0);
}
@ApiOperationSupport(order = 4)
......
......@@ -176,13 +176,13 @@ public class AdamUserController {
}
@ApiOperationSupport(order = 4)
@ApiOperation(value = "手机号修改")
@ApiOperation(value = "手机号修改", notes = "手机号修改会刷新TOKEN,刷新后的TOKEN对应响应参数中[`data`]")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mobile", value = "新手机号"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "code", value = "验证码"),
})
@PostMapping(value = {"edit/mobile"})
public ResponseDto<Object> editMobile(@Pattern(regexp = "\\d{11}", message = "手机号格式有误")
public ResponseDto<String> editMobile(@Pattern(regexp = "\\d{11}", message = "手机号格式有误")
@RequestParam String mobile,
@Pattern(regexp = "\\d{6}", message = "验证码格式有误")
@RequestParam String code) {
......@@ -190,11 +190,7 @@ public class AdamUserController {
if (!this.checkSmsCode(mobile, code)) return ResponseDto.failure(ErrorMapping.get("10002"));
String uid = CurrentUtil.getCurrentUid();
adamUserInfoService.editMobile(uid, mobile);
return ResponseDto.success();
return ResponseDto.success(adamUserInfoService.editMobile(CurrentUtil.getCurrentUid(), mobile));
}
@ApiOperationSupport(order = 5)
......
package com.liquidnet.service.adam.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.commons.lang.util.BsonUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
......@@ -20,8 +22,12 @@ import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
/**
* <p>
......@@ -37,9 +43,13 @@ public class AdamUserInfoServiceImpl extends ServiceImpl<AdamUserInfoMapper, Ada
@Autowired
MongoTemplate mongoTemplate;
@Autowired
IAdamRdmService adamRdmService;
@Autowired
RabbitTemplate rabbitTemplate;
@Autowired
IAdamRdmService adamRdmService;
RedisUtil redisUtil;
@Autowired
JwtValidator jwtValidator;
@Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
......@@ -81,7 +91,7 @@ public class AdamUserInfoServiceImpl extends ServiceImpl<AdamUserInfoMapper, Ada
@Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void editMobile(String uid, String mobile) {
public String editMobile(String uid, String mobile) {
LocalDateTime now = LocalDateTime.now();
// AdamUserInfoVo updateInfoVo = AdamUserInfoVo.getNew();
// updateInfoVo.setUpdatedAt(now);
......@@ -108,5 +118,24 @@ public class AdamUserInfoServiceImpl extends ServiceImpl<AdamUserInfoMapper, Ada
rabbitTemplate.convertAndSend(MQConst.EX_LNS_SQL_UCENTER, MQConst.RK_SQL_UCENTER,
SqlMapping.get("adam_user.edit.mobile", mobile, now, uid));
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
return this.flushSsoProcess(beforeUserInfoVo);
}
private String flushSsoProcess(AdamUserInfoVo userInfoVo) {
Map<String, Object> claimsMap = new HashMap<>();
claimsMap.put("sub", userInfoVo.getUid());
claimsMap.put("mobile", userInfoVo.getMobile());
claimsMap.put("nickname", userInfoVo.getNickname());
claimsMap.put("type", "user");
String token = jwtValidator.create(claimsMap);
redisUtil.set(
jwtValidator.getSsoRedisKey().concat(userInfoVo.getUid()),
DigestUtils.md5DigestAsHex(token.getBytes(StandardCharsets.UTF_8)),
jwtValidator.getExpireTtl() * 60
);
return token;
}
}
......@@ -2,7 +2,6 @@ package com.liquidnet.service.adam.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.entity.AdamUserMember;
......@@ -19,6 +18,8 @@ import org.springframework.stereotype.Service;
import java.util.regex.Pattern;
import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_UMEMBER_NO;
@Slf4j
@Service
public class AdamUserMemberServiceImpl extends ServiceImpl<AdamUserMemberMapper, AdamUserMember> implements IAdamUserMemberService {
......@@ -27,14 +28,12 @@ public class AdamUserMemberServiceImpl extends ServiceImpl<AdamUserMemberMapper,
@Autowired
IAdamRdmService adamRdmService;
private static final String LOCK_KEY_UMEMBER_NO = "adam:lk:member_no";
@Override
public String getNextMemberNo(String memberId) {
long s = System.currentTimeMillis();
int memberMaxNo = adamRdmService.getMaxMemberNo();
if (-1 == memberMaxNo) {
if (RedisLockUtil.tryLock(LOCK_KEY_UMEMBER_NO, 1, 3000)) {
if (RedisLockUtil.tryLock(LOCK_KEY_UMEMBER_NO, 1, 3)) {
memberMaxNo = adamRdmService.getMaxMemberNo();
if (-1 == memberMaxNo) {
Query query = Query.query(Criteria.where("memberId").is(memberId)).with(Sort.by(Sort.Direction.DESC, "memberNo")).limit(1);
......
......@@ -5,7 +5,7 @@
10001=验证码发送失败
10002=验证码无效
10003=
10003=系统繁忙,请稍候重试
10004=
10005=手机号获取失败,请更换登录方式
10006=第三方账号未注册
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment