靓号-调整过期逻辑
This commit is contained in:
@@ -11,6 +11,7 @@ import com.accompany.business.service.prettyno.PrettyNumberService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.business.vo.pretty.PrettyNumberExamineVo;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.enumeration.I18nAlertEnum;
|
||||
import com.accompany.core.exception.AdminServiceException;
|
||||
import com.accompany.core.model.PartitionInfo;
|
||||
@@ -123,22 +124,22 @@ public class PrettyNumberExamineAdminService {
|
||||
examine.setStatus(PrettyNumberExamineStatusEnum.pass);
|
||||
examine.setOperater(adminUser.getUsername());
|
||||
|
||||
long uid = examine.getUid();
|
||||
//通过消息
|
||||
PrettyNumber prettyNumber = prettyNumberService.get(examine.getPrettyNo());
|
||||
if(prettyNumber.getStatus() == PrettyNumberStatusEnum.used.getValue()){
|
||||
throw new AdminServiceException(500, "SID has used");
|
||||
if (null == prettyNumber){
|
||||
throw new AdminServiceException(BusiStatus.PRETTY_NUMBER_NOT_EXIST);
|
||||
} else if (PrettyNumberStatusEnum.no_used.getValue() != prettyNumber.getStatus()
|
||||
&& !prettyNumber.getUseUid().equals(uid)){
|
||||
throw new AdminServiceException("SID has used");
|
||||
}
|
||||
|
||||
//是否已经存在靓号
|
||||
Users users = usersService.getUsersByUid(examine.getUid());
|
||||
if (users.getHasPrettyErbanNo() !=null && users.getHasPrettyErbanNo()){
|
||||
if (Boolean.TRUE.equals(users.getHasPrettyErbanNo())) {
|
||||
PrettyNumber prettyNo = prettyNumberService.get(users.getErbanNo());
|
||||
//全面解绑
|
||||
prettyNumberService.unBindPrettyNo(prettyNo.getPrettyNo(), "新后台靓号活动审核通过,解绑以前靓号",adminUser.getUsername(),true);
|
||||
}
|
||||
if (prettyNumber.getStatus() == PrettyNumberStatusEnum.occupy.getValue()) {
|
||||
//解除占用
|
||||
prettyNumberService.removeOccupy(prettyNumber.getPrettyNo(), adminUser.getUsername());
|
||||
prettyNumberService.unBindPrettyNo(prettyNo.getPrettyNo(), "新后台靓号活动审核通过,解绑以前靓号", adminUser.getUsername(),true);
|
||||
}
|
||||
|
||||
//绑定靓号
|
||||
|
@@ -16,7 +16,6 @@ public class PrettyNumber {
|
||||
private Integer wealthLevel;
|
||||
|
||||
private Long useUid;
|
||||
|
||||
private Long useErbanNo;
|
||||
|
||||
private Byte status;
|
||||
|
@@ -122,9 +122,9 @@ public class AccountService extends ServiceImpl<AccountMapper, Account> {
|
||||
* @param erbanNo
|
||||
* @return
|
||||
*/
|
||||
public Boolean updateAccountErbanNo(Long uid, Long erbanNo) {
|
||||
public boolean updateAccountErbanNo(Long uid, Long erbanNo) {
|
||||
Account account = getById(uid);
|
||||
if (!StringUtils.isEmpty(account)) {
|
||||
if (null != account) {
|
||||
if (!CommonUtil.checkPhoneFormat(account.getPhoneAreaCode(),account.getPhone())) {
|
||||
account.setPhone(CommonUtil.genSpecialPhoneForInitAccount(String.valueOf(erbanNo)));
|
||||
}
|
||||
|
@@ -22,6 +22,7 @@ import com.google.gson.reflect.TypeToken;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
@@ -354,9 +355,8 @@ public class UsersBaseService extends BaseService {
|
||||
saveUserCache(userDb);
|
||||
}
|
||||
|
||||
|
||||
public int updateByErbanNo(Long uid, Long erbanNo, boolean isPrettyNo) {
|
||||
Boolean result = accountService.updateAccountErbanNo(uid, erbanNo);
|
||||
public boolean updateByErbanNo(Long uid, Long erbanNo, boolean isPrettyNo) {
|
||||
boolean result = accountService.updateAccountErbanNo(uid, erbanNo);
|
||||
if (result) {
|
||||
Users user = usersMapper.selectByPrimaryKey(uid);
|
||||
if (user != null) {
|
||||
@@ -366,10 +366,10 @@ public class UsersBaseService extends BaseService {
|
||||
}
|
||||
user.setErbanNo(erbanNo);
|
||||
user.setHasPrettyErbanNo(isPrettyNo);
|
||||
return usersMapper.updateByPrimaryKeySelective(user);
|
||||
return usersMapper.updateByPrimaryKeySelective(user) > 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
public void updatePasswd(Users user, String newPasswd) {
|
||||
@@ -387,14 +387,14 @@ public class UsersBaseService extends BaseService {
|
||||
* @return
|
||||
*/
|
||||
public boolean changeErbanNo(Long uid, Long oldErbanNo, Long newErbanNo, boolean isPrettyNo) {
|
||||
int count = updateByErbanNo(uid, newErbanNo, isPrettyNo);
|
||||
if (count > 0) {
|
||||
boolean result = updateByErbanNo(uid, newErbanNo, isPrettyNo);
|
||||
if (result) {
|
||||
// 清空用户关联的缓存
|
||||
deleteUserRelateCache(uid.toString());
|
||||
|
||||
refreshErbanNoCache(uid, oldErbanNo, newErbanNo);
|
||||
}
|
||||
return count > 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
public void deleteUserRelateCache(String uid) {
|
||||
|
@@ -73,7 +73,7 @@ public class PrettyNumberBizService {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void apply(Long uid, Long erbanNo) {
|
||||
Users u = usersService.getNotNullUsersByUid(uid);
|
||||
//找出靓号状态
|
||||
@@ -85,7 +85,7 @@ public class PrettyNumberBizService {
|
||||
|
||||
prettyNumber.setUseUid(u.getUid());
|
||||
prettyNumber.setUseErbanNo(u.getErbanNo());
|
||||
if (u.getHasPrettyErbanNo() !=null && u.getHasPrettyErbanNo()){
|
||||
if (Boolean.TRUE.equals(u.getHasPrettyErbanNo())){
|
||||
PrettyNumber byPrettyNo = prettyNumberService.get(u.getErbanNo());
|
||||
prettyNumber.setUseErbanNo(byPrettyNo.getUseErbanNo());
|
||||
}
|
||||
|
@@ -12,6 +12,7 @@ import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.common.utils.StringUtils;
|
||||
import com.accompany.core.base.SpringContextHolder;
|
||||
import com.accompany.core.enumeration.I18nAlertEnum;
|
||||
import com.accompany.core.exception.ServiceException;
|
||||
import com.accompany.core.model.PrettyNumber;
|
||||
@@ -25,9 +26,9 @@ import com.accompany.core.vo.PrettyNumberVo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
@@ -76,6 +77,7 @@ public class PrettyNumberService extends ServiceImpl<PrettyNumberMapper, PrettyN
|
||||
* @param days
|
||||
* @param adminUserName
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean bindPrettyNo(Long prettyNo, Long uid, String desc, Integer days, String adminUserName) {
|
||||
PrettyNumber prettyNumber = get(prettyNo);
|
||||
if (StringUtils.isEmpty(adminUserName)) {
|
||||
@@ -87,7 +89,8 @@ public class PrettyNumberService extends ServiceImpl<PrettyNumberMapper, PrettyN
|
||||
if (!prettyNumber.getIsValid()) {
|
||||
throw new ServiceException(BusiStatus.PRETTY_NUMBER_NOT_VALID);
|
||||
}
|
||||
if (prettyNumber.getStatus() == PrettyNumberStatusEnum.used.getValue()) {
|
||||
if (PrettyNumberStatusEnum.no_used.getValue() != prettyNumber.getStatus()
|
||||
&& !prettyNumber.getUseUid().equals(uid)) {
|
||||
throw new ServiceException(BusiStatus.PRETTY_NUMBER_ALREADY_USED);
|
||||
}
|
||||
|
||||
@@ -142,6 +145,7 @@ public class PrettyNumberService extends ServiceImpl<PrettyNumberMapper, PrettyN
|
||||
* @param prettyNo
|
||||
* @param desc
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean unBindPrettyNo(Long prettyNo, String desc, String adminUserName, boolean isAllUnBind) {
|
||||
PrettyNumber prettyNumber = get(prettyNo);
|
||||
if (StringUtils.isEmpty(adminUserName)) {
|
||||
@@ -153,7 +157,7 @@ public class PrettyNumberService extends ServiceImpl<PrettyNumberMapper, PrettyN
|
||||
if (!prettyNumber.getIsValid()) {
|
||||
throw new ServiceException(BusiStatus.PRETTY_NUMBER_NOT_VALID);
|
||||
}
|
||||
if (prettyNumber.getStatus() != PrettyNumberStatusEnum.used.getValue()) {
|
||||
if (PrettyNumberStatusEnum.used.getValue() != prettyNumber.getStatus()) {
|
||||
throw new ServiceException(BusiStatus.PRETTY_NUMBER_NOT_USED);
|
||||
}
|
||||
|
||||
@@ -164,10 +168,6 @@ public class PrettyNumberService extends ServiceImpl<PrettyNumberMapper, PrettyN
|
||||
|
||||
Long curErbanNo = prettyNumber.getPrettyNo();
|
||||
Long targetErbanNo = prettyNumber.getUseErbanNo();
|
||||
// 更改用户萌声号
|
||||
|
||||
usersService.updateUserTimeByErbanNo(curErbanNo);
|
||||
usersService.updateUserTimeByErbanNo(targetErbanNo);
|
||||
|
||||
boolean isSuccess = usersBaseService.changeErbanNo(prettyNumber.getUseUid(), curErbanNo, targetErbanNo, false);
|
||||
if (isSuccess) {
|
||||
@@ -187,9 +187,8 @@ public class PrettyNumberService extends ServiceImpl<PrettyNumberMapper, PrettyN
|
||||
PrettyNumberRecord record = buildRecord(prettyNo, curErbanNo, users.getUid(), targetErbanNo,
|
||||
desc, PrettyNumberOperatorEnum.unbind, null, null, adminUserName);
|
||||
recordMapper.insert(record);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return isSuccess;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -303,16 +302,18 @@ public class PrettyNumberService extends ServiceImpl<PrettyNumberMapper, PrettyN
|
||||
long now = System.currentTimeMillis();
|
||||
usedList.forEach((pretty) -> {
|
||||
try {
|
||||
// TODO 考虑EventSourcing实现.
|
||||
List<PrettyNumberRecord> recordList = findBindRecordByPretty(pretty.getPrettyNo());
|
||||
if (CollectionUtils.isNotEmpty(recordList)) {
|
||||
PrettyNumberRecord record = recordList.get(recordList.size() - 1);
|
||||
Date endTime = record.getEndTime();
|
||||
|
||||
if (endTime.getTime() <= now) {
|
||||
afterPrettyNoExpire(pretty,"系統掃描靚號過期.進行解綁");
|
||||
}
|
||||
PrettyNumberRecord record = findBindRecordByPretty(pretty.getPrettyNo(), pretty.getUseUid());
|
||||
if (null == record){
|
||||
return;
|
||||
}
|
||||
|
||||
Date endTime = record.getEndTime();
|
||||
if (endTime.getTime() > now) {
|
||||
return;
|
||||
}
|
||||
|
||||
afterPrettyNoExpire(pretty, now);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to scan pretty number for uid: {}, Please check it.", pretty.getUseUid(), e);
|
||||
}
|
||||
@@ -320,11 +321,11 @@ public class PrettyNumberService extends ServiceImpl<PrettyNumberMapper, PrettyN
|
||||
|
||||
}
|
||||
|
||||
public void afterPrettyNoExpire(PrettyNumber pretty, String desc){
|
||||
public void afterPrettyNoExpire(PrettyNumber pretty, long now){
|
||||
String desc = (pretty.getPrettyDesc()!=null?pretty.getPrettyDesc():"")
|
||||
+(" ["+DateTimeUtil.getCurrentDateTime()+" 靚號過期]");
|
||||
// 解绑靓号
|
||||
unBindPrettyNo(pretty.getPrettyNo(), desc, DEFAULT_OPERATOR, true);
|
||||
// 下架靓号
|
||||
prettyNoExpire(pretty.getPrettyNo());
|
||||
SpringContextHolder.getBean(PrettyNumberService.class).unBindPrettyNo(pretty.getPrettyNo(), desc, DEFAULT_OPERATOR, true);
|
||||
// 发送过期小秘书通知
|
||||
sendExpiredMsg(pretty.getUseUid(), pretty.getPrettyNo());
|
||||
}
|
||||
@@ -363,10 +364,12 @@ public class PrettyNumberService extends ServiceImpl<PrettyNumberMapper, PrettyN
|
||||
* @param prettyNo
|
||||
* @return
|
||||
*/
|
||||
public List<PrettyNumberRecord> findBindRecordByPretty(Long prettyNo) {
|
||||
return recordMapper.selectList(Wrappers.<PrettyNumberRecord>lambdaQuery()
|
||||
public PrettyNumberRecord findBindRecordByPretty(Long prettyNo, Long uid) {
|
||||
return recordMapper.selectOne(Wrappers.<PrettyNumberRecord>lambdaQuery()
|
||||
.eq(PrettyNumberRecord::getPrettyNo, prettyNo)
|
||||
.eq(PrettyNumberRecord::getOperator, PrettyNumberOperatorEnum.bind.getValue()));
|
||||
.eq(PrettyNumberRecord::getUid, uid)
|
||||
.eq(PrettyNumberRecord::getOperator, PrettyNumberOperatorEnum.bind.getValue())
|
||||
.orderByDesc(PrettyNumberRecord::getCreateTime), false);
|
||||
}
|
||||
|
||||
public void sendMsg(Long prettyNumber, Long uid) {
|
||||
@@ -379,16 +382,6 @@ public class PrettyNumberService extends ServiceImpl<PrettyNumberMapper, PrettyN
|
||||
sendSysMsgService.sendMsg(neteaseSendMsgParam);
|
||||
}
|
||||
|
||||
private void prettyNoExpire(Long prettyNo){
|
||||
// 下架靓号
|
||||
PrettyNumber pretty = get(prettyNo);
|
||||
pretty.setIsValid(false);
|
||||
pretty.setUpdateTime(new Date());
|
||||
pretty.setPrettyDesc((pretty.getPrettyDesc()!=null?pretty.getPrettyDesc():"")
|
||||
+(" ["+DateTimeUtil.getCurrentDateTime()+" 靚號過期]"));
|
||||
this.mapper.updateById(pretty);
|
||||
}
|
||||
|
||||
public List<PrettyNumberVo> search(int wealthLevel, List<String> searchKey) {
|
||||
return this.mapper.search(wealthLevel, searchKey);
|
||||
}
|
||||
|
Reference in New Issue
Block a user