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

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

fix:修改手机号刷新TK;

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