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

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

fix;

parent f1200510
...@@ -48,12 +48,12 @@ public class AdamRedisConst { ...@@ -48,12 +48,12 @@ public class AdamRedisConst {
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
public static final String LOCK_KEY_UMEMBER_NO = "adam:lk:member:no"; // public static final String LOCK_KEY_UMEMBER_NO = "adam:lk:member:no";
// // // // // // // // // // // // // // // // // // // //
public static final String LOCK_KEY_SMS_CODE_MOBILE = "adam:lk:sms:code:mobile:"; // public static final String LOCK_KEY_SMS_CODE_MOBILE = "adam:lk:sms:code:mobile:";
public static final String LOCK_KEY_UREGISTER = "adam:lk:register:"; // public static final String LOCK_KEY_UREGISTER = "adam:lk:register:";
public static final String LOCK_KEY_UIDENTITY = "adam:lk:identity:"; // public static final String LOCK_KEY_UIDENTITY = "adam:lk:identity:";
public static final String LOCK_KEY_UMEMBER_CODE = "adam:lk:member:code:"; // public static final String LOCK_KEY_UMEMBER_CODE = "adam:lk:member:code:";
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
} }
...@@ -3,36 +3,28 @@ package com.liquidnet.client.admin.zhengzai.adam.service.impl; ...@@ -3,36 +3,28 @@ package com.liquidnet.client.admin.zhengzai.adam.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberCodeAdminService; import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberCodeAdminService;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil; import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamMemberCodeParam; import com.liquidnet.service.adam.dto.AdamMemberCodeParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo; import com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.entity.AdamMemberCode; import com.liquidnet.service.adam.entity.AdamMemberCode;
import com.liquidnet.service.adam.mapper.AdamMemberCodeMapper; import com.liquidnet.service.adam.mapper.AdamMemberCodeMapper;
import com.liquidnet.service.adam.util.MemberUtil; import com.liquidnet.service.adam.util.MemberUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
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.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
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 AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMapper, AdamMemberCode> implements IAdamMemberCodeAdminService { public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMapper, AdamMemberCode> implements IAdamMemberCodeAdminService {
@Autowired @Autowired
AdamMemberCodeMapper memberCodeMapper; AdamMemberCodeMapper memberCodeMapper;
@Autowired // @Autowired
MongoTemplate mongoTemplate; // MongoTemplate mongoTemplate;
@Autowired @Autowired
RedisUtil redisUtil; RedisUtil redisUtil;
...@@ -42,9 +34,10 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa ...@@ -42,9 +34,10 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa
boolean exists; boolean exists;
do { do {
mCode = MemberUtil.freeCode(); mCode = MemberUtil.freeCode();
exists = mongoTemplate.exists( // exists = mongoTemplate.exists(
Query.query(Criteria.where("code").is(mCode)), AdamMemberCodeVo.class.getSimpleName() // Query.query(Criteria.where("code").is(mCode)), AdamMemberCodeVo.class.getSimpleName()
); // );
exists = redisUtil.hasKey(mCode);
} while (exists); } while (exists);
// 需要主动生成会员编号 // 需要主动生成会员编号
...@@ -64,7 +57,7 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa ...@@ -64,7 +57,7 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa
memberCodeMapper.insert(initMemberCode); memberCodeMapper.insert(initMemberCode);
AdamMemberCodeVo vo = AdamMemberCodeVo.getNew().copy(initMemberCode); AdamMemberCodeVo vo = AdamMemberCodeVo.getNew().copy(initMemberCode);
mongoTemplate.insert(vo, AdamMemberCodeVo.class.getSimpleName()); // mongoTemplate.insert(vo, AdamMemberCodeVo.class.getSimpleName());
setMemberCodeVoByCode(mCode, vo); setMemberCodeVoByCode(mCode, vo);
...@@ -75,25 +68,27 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa ...@@ -75,25 +68,27 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
int memberMaxNo = getMaxMemberNo(); int memberMaxNo = getMaxMemberNo();
if (-1 == memberMaxNo) { if (-1 == memberMaxNo) {
if (RedisLockUtil.tryLock(LOCK_KEY_UMEMBER_NO, 1, 3)) { // TODO: 2021/7/29 降级DB
memberMaxNo = getMaxMemberNo(); throw new LiquidnetServiceException();
if (-1 == memberMaxNo) { // if (RedisLockUtil.tryLock(LOCK_KEY_UMEMBER_NO, 1, 3)) {
Query query = Query.query(Criteria.where("memberId").is(memberId)).with(Sort.by(Sort.Direction.DESC, "memberNo")).limit(1); // memberMaxNo = getMaxMemberNo();
// if (-1 == memberMaxNo) {
AdamUserMemberVo latestMaxMemberNoVo = mongoTemplate.findOne(query, AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName()); // Query query = Query.query(Criteria.where("memberId").is(memberId)).with(Sort.by(Sort.Direction.DESC, "memberNo")).limit(1);
//
if (null == latestMaxMemberNoVo) { // AdamUserMemberVo latestMaxMemberNoVo = mongoTemplate.findOne(query, AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName());
AdamMemberVo memberVo = getMemberVoByMemberId(memberId); //
// if (null == latestMaxMemberNoVo) {
setMaxMemberNo(memberVo.getStartNo()); // AdamMemberVo memberVo = getMemberVoByMemberId(memberId);
} else { //
setMaxMemberNo(Integer.parseInt(latestMaxMemberNoVo.getMemberNo())); // setMaxMemberNo(memberVo.getStartNo());
} // } else {
} // setMaxMemberNo(Integer.parseInt(latestMaxMemberNoVo.getMemberNo()));
RedisLockUtil.unlock(LOCK_KEY_UMEMBER_NO); // }
} else { // }
return null; // RedisLockUtil.unlock(LOCK_KEY_UMEMBER_NO);
} // } else {
// return null;
// }
} }
String nextMemberNoStr = String.valueOf(incrMemberNo()); String nextMemberNoStr = String.valueOf(incrMemberNo());
if (Pattern.matches("([\\d])\\1{" + (nextMemberNoStr.length() - 1) + "}", nextMemberNoStr)) { if (Pattern.matches("([\\d])\\1{" + (nextMemberNoStr.length() - 1) + "}", nextMemberNoStr)) {
...@@ -109,22 +104,22 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa ...@@ -109,22 +104,22 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa
return null == o ? -1 : (int) o; return null == o ? -1 : (int) o;
} }
public AdamMemberVo getMemberVoByMemberId(String memberId) { // public AdamMemberVo getMemberVoByMemberId(String memberId) {
String key = AdamRedisConst.INFO_MEMBER_CATEGORY.concat(memberId); // String key = AdamRedisConst.INFO_MEMBER_CATEGORY.concat(memberId);
long s = System.currentTimeMillis(); // long s = System.currentTimeMillis();
AdamMemberVo vo = (AdamMemberVo) redisUtil.get(key); // AdamMemberVo vo = (AdamMemberVo) redisUtil.get(key);
if (null == vo) { // if (null == vo) {
s = System.currentTimeMillis(); // s = System.currentTimeMillis();
vo = mongoTemplate.findOne( // vo = mongoTemplate.findOne(
Query.query(Criteria.where("memberId").is(memberId).and("state").is(1)), // Query.query(Criteria.where("memberId").is(memberId).and("state").is(1)),
AdamMemberVo.class, AdamMemberVo.class.getSimpleName() // AdamMemberVo.class, AdamMemberVo.class.getSimpleName()
); // );
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (null != vo) redisUtil.set(key, vo); // if (null != vo) redisUtil.set(key, vo);
} // }
log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#RDM耗时:{}ms", System.currentTimeMillis() - s);
return vo; // return vo;
} // }
public boolean setMaxMemberNo(int val) { public boolean setMaxMemberNo(int val) {
return redisUtil.set(AdamRedisConst.INCR_MEMBER_NO, val); return redisUtil.set(AdamRedisConst.INCR_MEMBER_NO, val);
......
...@@ -9,7 +9,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode; ...@@ -9,7 +9,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil;
import com.liquidnet.common.sms.constant.SmsEnum; import com.liquidnet.common.sms.constant.SmsEnum;
import com.liquidnet.common.sms.processor.SmsProcessor; import com.liquidnet.common.sms.processor.SmsProcessor;
import com.liquidnet.commons.lang.constant.LnsEnum; import com.liquidnet.commons.lang.constant.LnsEnum;
...@@ -49,8 +48,6 @@ import java.util.Arrays; ...@@ -49,8 +48,6 @@ import java.util.Arrays;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_SMS_CODE_MOBILE;
@ApiSupport(order = 10010) @ApiSupport(order = 10010)
@Api(tags = "用户登录") @Api(tags = "用户登录")
@Slf4j @Slf4j
...@@ -132,7 +129,6 @@ public class AdamLoginController { ...@@ -132,7 +129,6 @@ public class AdamLoginController {
@GetMapping(value = {"send"}) @GetMapping(value = {"send"})
public ResponseDto<Object> sendSms(@Pattern(regexp = "\\d{11}", message = "手机号格式有误") @RequestParam String mobile) { public ResponseDto<Object> sendSms(@Pattern(regexp = "\\d{11}", message = "手机号格式有误") @RequestParam String mobile) {
log.debug("send to mobile:{}", mobile); log.debug("send to mobile:{}", mobile);
if (RedisLockUtil.tryLock(LOCK_KEY_SMS_CODE_MOBILE + mobile, 1, 5)) {
// Map<String, Object> respMap = null; // Map<String, Object> respMap = null;
// String respStr = null; // String respStr = null;
// try { // try {
...@@ -163,6 +159,12 @@ public class AdamLoginController { ...@@ -163,6 +159,12 @@ public class AdamLoginController {
// return ResponseDto.failure(ErrorMapping.get("10003")); // return ResponseDto.failure(ErrorMapping.get("10003"));
// } // }
String smsCodeByMobile = adamRdmService.getSmsCodeByMobile(mobile);
if (StringUtils.isNotEmpty(smsCodeByMobile)) {
return ResponseDto.failure(ErrorMapping.get("10003"));
}
String smsCode = RandomStringUtils.randomNumeric(6); String smsCode = RandomStringUtils.randomNumeric(6);
// SmsMessage smsMessage = SmsMessage.builder().setPhone(mobile).setSignName(SmsEnum.ADSignName.正在现场.name()) // SmsMessage smsMessage = SmsMessage.builder().setPhone(mobile).setSignName(SmsEnum.ADSignName.正在现场.name())
// .setTemplateCode(SmsEnum.ADTemplate.SMS_109535335.name()) // .setTemplateCode(SmsEnum.ADTemplate.SMS_109535335.name())
...@@ -177,9 +179,6 @@ public class AdamLoginController { ...@@ -177,9 +179,6 @@ public class AdamLoginController {
return ResponseDto.success(); return ResponseDto.success();
} }
return ResponseDto.failure(ErrorMapping.get("10002")); return ResponseDto.failure(ErrorMapping.get("10002"));
} else {
return ResponseDto.failure(ErrorMapping.get("10000"));
}
} }
@ApiOperationSupport(order = 3) @ApiOperationSupport(order = 3)
......
package com.liquidnet.service.adam.controller; package com.liquidnet.service.adam.controller;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.github.pagehelper.PageInfo;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil;
import com.liquidnet.commons.lang.constant.LnsEnum; import com.liquidnet.commons.lang.constant.LnsEnum;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil; import com.liquidnet.commons.lang.util.HttpUtil;
...@@ -16,8 +14,8 @@ import com.liquidnet.service.adam.dto.AdamMemberOrderCodeParam; ...@@ -16,8 +14,8 @@ import com.liquidnet.service.adam.dto.AdamMemberOrderCodeParam;
import com.liquidnet.service.adam.dto.AdamMemberOrderParam; import com.liquidnet.service.adam.dto.AdamMemberOrderParam;
import com.liquidnet.service.adam.dto.AdamMemberOrderResult; import com.liquidnet.service.adam.dto.AdamMemberOrderResult;
import com.liquidnet.service.adam.dto.vo.*; import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.adam.service.IAdamMemberOrderService;
import com.liquidnet.service.adam.service.AdamRdmService; import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamMemberOrderService;
import com.liquidnet.service.adam.service.IAdamUserService; import com.liquidnet.service.adam.service.IAdamUserService;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.PagedResult; import com.liquidnet.service.base.PagedResult;
...@@ -36,11 +34,8 @@ import org.springframework.web.bind.annotation.*; ...@@ -36,11 +34,8 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.List; import java.util.List;
import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_UMEMBER_CODE;
@ApiSupport(order = 10031) @ApiSupport(order = 10031)
@Api(tags = "购买会员") @Api(tags = "购买会员")
@Slf4j @Slf4j
...@@ -225,16 +220,16 @@ public class AdamMemberOrderController { ...@@ -225,16 +220,16 @@ public class AdamMemberOrderController {
return ResponseDto.failure(ErrorMapping.get("10000")); return ResponseDto.failure(ErrorMapping.get("10000"));
} }
} }
if (RedisLockUtil.tryLock(LOCK_KEY_UMEMBER_CODE + param.getMemberCode(), 1, 5)) { // if (RedisLockUtil.tryLock(LOCK_KEY_UMEMBER_CODE + param.getMemberCode(), 1, 5)) {
ResponseDto<AdamMemberOrderResult> responseDto = adamMemberOrderService.exchangeMemberCode(param); ResponseDto<AdamMemberOrderResult> responseDto = adamMemberOrderService.exchangeMemberCode(param);
if (!responseDto.isSuccess()) { // if (!responseDto.isSuccess()) {
RedisLockUtil.unlock(LOCK_KEY_UMEMBER_CODE + param.getMemberCode()); // RedisLockUtil.unlock(LOCK_KEY_UMEMBER_CODE + param.getMemberCode());
} // }
return responseDto; return responseDto;
} else { // } else {
return ResponseDto.failure(ErrorMapping.get("10000")); // return ResponseDto.failure(ErrorMapping.get("10000"));
} // }
} }
@ApiOperationSupport(order = 5) @ApiOperationSupport(order = 5)
......
...@@ -50,7 +50,8 @@ public class AdamRdmService { ...@@ -50,7 +50,8 @@ public class AdamRdmService {
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <Mobile, SMS CODE> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <Mobile, SMS CODE> */
public boolean setSmsCodeByMobile(String mobile, String smsCode) { public boolean setSmsCodeByMobile(String mobile, String smsCode) {
return redisUtil.set(AdamRedisConst.VALID_SMS_CODE_MOBILE + mobile, smsCode, 15 * 60); // TODO: 2021/7/29 改为1分钟
return redisUtil.set(AdamRedisConst.VALID_SMS_CODE_MOBILE + mobile, smsCode, 1 * 60);
} }
public String getSmsCodeByMobile(String mobile) { public String getSmsCodeByMobile(String mobile) {
...@@ -526,28 +527,14 @@ public class AdamRdmService { ...@@ -526,28 +527,14 @@ public class AdamRdmService {
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <AdamMemberCodeVo::buyOrderNo, MEMBER_CODE + STATE> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <AdamMemberCodeVo::buyOrderNo, MEMBER_CODE + STATE> */
public boolean setMemberCodeByBuyOrderNo(String buyOrderNo, String memberCodeAndState) { public boolean setMemberCodeByBuyOrderNo(String buyOrderNo, String memberCode) {
return redisUtil.set(buyOrderNo, memberCodeAndState); return redisUtil.set(buyOrderNo, memberCode);
} }
public String getMemberCodeByBuyOrderNo(String buyOrderNo) { public String getMemberCodeByBuyOrderNo(String buyOrderNo) {
return (String) redisUtil.get(buyOrderNo); return (String) redisUtil.get(buyOrderNo);
} }
public int getMemberCodeStateByBuyOrderNoVal(String memberCodeAndState) {
if (StringUtils.isEmpty(memberCodeAndState)) {
return 0;
}
return Integer.parseInt(org.apache.commons.lang3.StringUtils.right(memberCodeAndState, 1));
}
public String getMemberCodeByBuyOrderNoVal(String memberCodeAndState) {
if (StringUtils.isEmpty(memberCodeAndState)) {
return "";
}
return memberCodeAndState.substring(0, memberCodeAndState.length() - 1);
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | */
/** /**
...@@ -562,11 +549,7 @@ public class AdamRdmService { ...@@ -562,11 +549,7 @@ public class AdamRdmService {
// ); // );
// log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s); // log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
// return vo; // return vo;
String memberCodeByBuyOrderNo = this.getMemberCodeByBuyOrderNo(buyOrderNo); return this.getMemberCodeVoByCode(this.getMemberCodeByBuyOrderNo(buyOrderNo));
AdamMemberCodeVo vo = AdamMemberCodeVo.getNew();
vo.setCode(this.getMemberCodeByBuyOrderNoVal(memberCodeByBuyOrderNo));
vo.setState(this.getMemberCodeStateByBuyOrderNoVal(memberCodeByBuyOrderNo));
return vo;
} }
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | TAGS:List<AdamTagVo> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | TAGS:List<AdamTagVo> */
......
package com.liquidnet.service.adam.service.impl; package com.liquidnet.service.adam.service.impl;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil; import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.service.AdamRdmService; import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamUserMemberService; import com.liquidnet.service.adam.service.IAdamUserMemberService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -10,8 +9,6 @@ import org.springframework.stereotype.Service; ...@@ -10,8 +9,6 @@ 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 implements IAdamUserMemberService { public class AdamUserMemberServiceImpl implements IAdamUserMemberService {
...@@ -25,25 +22,27 @@ public class AdamUserMemberServiceImpl implements IAdamUserMemberService { ...@@ -25,25 +22,27 @@ public class AdamUserMemberServiceImpl implements IAdamUserMemberService {
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, 3)) { // TODO: 2021/7/29 降级DB
memberMaxNo = adamRdmService.getMaxMemberNo(); throw new LiquidnetServiceException();
if (-1 == memberMaxNo) { // if (RedisLockUtil.tryLock(LOCK_KEY_UMEMBER_NO, 1, 3)) {
// Query query = Query.query(Criteria.where("memberId").is(memberId)).with(Sort.by(Sort.Direction.DESC, "memberNo")).limit(1); // memberMaxNo = adamRdmService.getMaxMemberNo();
// // if (-1 == memberMaxNo) {
// AdamUserMemberVo latestMaxMemberNoVo = mongoTemplate.findOne(query, AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName()); //// Query query = Query.query(Criteria.where("memberId").is(memberId)).with(Sort.by(Sort.Direction.DESC, "memberNo")).limit(1);
////
//// AdamUserMemberVo latestMaxMemberNoVo = mongoTemplate.findOne(query, AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName());
////
//// if (null == latestMaxMemberNoVo) {
// AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(memberId);
// //
// if (null == latestMaxMemberNoVo) { // adamRdmService.setMaxMemberNo(memberVo.getStartNo());
AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(memberId); //// } else {
//// adamRdmService.setMaxMemberNo(Integer.parseInt(latestMaxMemberNoVo.getMemberNo()));
adamRdmService.setMaxMemberNo(memberVo.getStartNo()); //// }
// } else { // }
// adamRdmService.setMaxMemberNo(Integer.parseInt(latestMaxMemberNoVo.getMemberNo())); // RedisLockUtil.unlock(LOCK_KEY_UMEMBER_NO);
// } // } else {
} // return null;
RedisLockUtil.unlock(LOCK_KEY_UMEMBER_NO); // }
} else {
return null;
}
} }
String nextMemberNoStr = String.valueOf(adamRdmService.incrMemberNo()); String nextMemberNoStr = String.valueOf(adamRdmService.incrMemberNo());
if (Pattern.matches("([\\d])\\1{" + (nextMemberNoStr.length() - 1) + "}", nextMemberNoStr)) { if (Pattern.matches("([\\d])\\1{" + (nextMemberNoStr.length() - 1) + "}", nextMemberNoStr)) {
......
package com.liquidnet.service.adam.service.impl; package com.liquidnet.service.adam.service.impl;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil;
import com.liquidnet.common.exception.LiquidnetServiceException; import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamThirdPartParam; import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo; import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo; import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo;
...@@ -34,8 +32,6 @@ import java.time.LocalDateTime; ...@@ -34,8 +32,6 @@ import java.time.LocalDateTime;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_UREGISTER;
/** /**
* <p> * <p>
* 用户 服务实现类 * 用户 服务实现类
...@@ -70,7 +66,7 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -70,7 +66,7 @@ public class AdamUserServiceImpl implements IAdamUserService {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
AdamUserInfoVo userInfoVo = null; AdamUserInfoVo userInfoVo = null;
if (RedisLockUtil.tryLock(LOCK_KEY_UREGISTER + mobile, 1, 5)) { // if (RedisLockUtil.tryLock(LOCK_KEY_UREGISTER + mobile, 1, 5)) {
String uid = adamRdmService.getUidByMobile(mobile); String uid = adamRdmService.getUidByMobile(mobile);
if (StringUtils.isEmpty(uid)) { if (StringUtils.isEmpty(uid)) {
userInfoVo = AdamUserInfoVo.getNew(); userInfoVo = AdamUserInfoVo.getNew();
...@@ -110,8 +106,8 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -110,8 +106,8 @@ public class AdamUserServiceImpl implements IAdamUserService {
} else { } else {
userInfoVo = adamRdmService.getUserInfoVoByUid(uid); userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
} }
RedisLockUtil.unlock(LOCK_KEY_UREGISTER + mobile); // RedisLockUtil.unlock(LOCK_KEY_UREGISTER + mobile);
} // }
return userInfoVo; return userInfoVo;
} }
...@@ -121,7 +117,7 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -121,7 +117,7 @@ public class AdamUserServiceImpl implements IAdamUserService {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
AdamUserInfoVo userInfoVo = null; AdamUserInfoVo userInfoVo = null;
if (RedisLockUtil.tryLock(LOCK_KEY_UREGISTER + param.getOpenId() + param.getPlatform(), 1, 5)) { // if (RedisLockUtil.tryLock(LOCK_KEY_UREGISTER + param.getOpenId() + param.getPlatform(), 1, 5)) {
String uid = adamRdmService.getUidByPlatformOpenId(param.getPlatform(), param.getOpenId()); String uid = adamRdmService.getUidByPlatformOpenId(param.getPlatform(), param.getOpenId());
if (StringUtils.isEmpty(uid)) { if (StringUtils.isEmpty(uid)) {
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
...@@ -188,8 +184,8 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -188,8 +184,8 @@ public class AdamUserServiceImpl implements IAdamUserService {
} else { } else {
userInfoVo = adamRdmService.getUserInfoVoByUid(uid); userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
} }
RedisLockUtil.unlock(LOCK_KEY_UREGISTER + param.getOpenId() + param.getPlatform()); // RedisLockUtil.unlock(LOCK_KEY_UREGISTER + param.getOpenId() + param.getPlatform());
} // }
return userInfoVo; return userInfoVo;
} }
...@@ -377,9 +373,9 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -377,9 +373,9 @@ public class AdamUserServiceImpl implements IAdamUserService {
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public AdamRealInfoVo identity(String uid, String name, String idCard) { public AdamRealInfoVo identity(String uid, String name, String idCard) {
AdamRealInfoVo vo = null; AdamRealInfoVo vo = null;
if (RedisLockUtil.tryLock(AdamRedisConst.LOCK_KEY_UIDENTITY + uid, 1, 3)) { // if (RedisLockUtil.tryLock(AdamRedisConst.LOCK_KEY_UIDENTITY + uid, 1, 3)) {
vo = adamRdmService.getRealInfoVoByUid(uid); // vo = adamRdmService.getRealInfoVoByUid(uid);
if (null == vo) { // if (null == vo) {
if (!adamRdmService.isCertification(1, idCard, name)) { if (!adamRdmService.isCertification(1, idCard, name)) {
// String respStr = null; // String respStr = null;
// try { // try {
...@@ -431,9 +427,9 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -431,9 +427,9 @@ public class AdamUserServiceImpl implements IAdamUserService {
adamRdmService.setRealInfoVoByUid(uid, vo); adamRdmService.setRealInfoVoByUid(uid, vo);
adamRdmService.setCertification(1, idCard, name); adamRdmService.setCertification(1, idCard, name);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
} // }
RedisLockUtil.unlock(AdamRedisConst.LOCK_KEY_UIDENTITY + uid); // RedisLockUtil.unlock(AdamRedisConst.LOCK_KEY_UIDENTITY + uid);
} // }
return vo; return vo;
} }
} }
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
10000=请求频繁,稍后再试 10000=请求频繁,稍后再试
10001= 10001=
10002=验证码发送失败 10002=验证码发送失败
10003=已超时,请重新获取验证码 10003=发送过于频繁,请稍后再试
10004=验证码错误,请重新输入 10004=验证码错误,请重新输入
10005=手机号获取失败,请更换登录方式 10005=手机号获取失败,请更换登录方式
10006=第三方账号未注册 10006=第三方账号未注册
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
10211=订单不存在 10211=订单不存在
10212=订单状态查询失败 10212=订单状态查询失败
10213=感谢您选择登登登。距您上一次离开不足一年,登登登还没准备好再次邀您加入。不如我们给彼此多一些时间,有缘再相见。 10213=感谢您选择登登登。距您上一次离开不足一年,登登登还没准备好再次邀您加入。不如我们给彼此多一些时间,有缘再相见。
10214= 10214=兑换失败
10215=本次摩登天空会员购买名额已满 10215=本次摩登天空会员购买名额已满
10216= 10216=
......
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