|
@@ -30,8 +30,9 @@ import shop.alien.util.common.DateUtils;
|
|
import shop.alien.util.common.JwtUtil;
|
|
import shop.alien.util.common.JwtUtil;
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
-import java.time.Instant;
|
|
|
|
-import java.time.ZoneId;
|
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
+import java.time.*;
|
|
|
|
+
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
|
@@ -85,18 +86,30 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
* @return StoreUser
|
|
* @return StoreUser
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public StoreUser getUserByPhone(String phone) {
|
|
|
|
|
|
+ public StoreUserVo getUserByPhone(String phone) {
|
|
LambdaQueryWrapper<StoreUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<StoreUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
lambdaQueryWrapper.eq(StoreUser::getPhone, phone);
|
|
lambdaQueryWrapper.eq(StoreUser::getPhone, phone);
|
|
StoreUser user = this.getOne(lambdaQueryWrapper);
|
|
StoreUser user = this.getOne(lambdaQueryWrapper);
|
|
- if (null == user) return new StoreUser();
|
|
|
|
|
|
+ StoreUserVo storeUserVo = new StoreUserVo();
|
|
|
|
+ if(user.getStatus() == -1){
|
|
|
|
+ LocalDateTime localDateTime = user.getLogoutTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
|
|
|
+ LocalDateTime future = localDateTime.plusDays(7);
|
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
|
+ Duration duration = Duration.between(now, future);
|
|
|
|
+ long correct = duration.toMillis();
|
|
|
|
+ storeUserVo.setCountdown(correct);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (null == user) return new StoreUserVo();
|
|
LambdaQueryWrapper<StoreInfo> wrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<StoreInfo> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq(StoreInfo::getId, user.getStoreId());
|
|
wrapper.eq(StoreInfo::getId, user.getStoreId());
|
|
StoreInfo info = storeInfoMapper.selectOne(wrapper);
|
|
StoreInfo info = storeInfoMapper.selectOne(wrapper);
|
|
if (null != info) user.setName(info.getStoreName());
|
|
if (null != info) user.setName(info.getStoreName());
|
|
- return user;
|
|
|
|
|
|
+ BeanUtils.copyProperties(user, storeUserVo);
|
|
|
|
+ return storeUserVo;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* token
|
|
* token
|
|
*
|
|
*
|
|
@@ -188,7 +201,7 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
forgetPassword(phone, newPassword, verificationCode);
|
|
forgetPassword(phone, newPassword, verificationCode);
|
|
}
|
|
}
|
|
//修改密码
|
|
//修改密码
|
|
- else if(type == 1){
|
|
|
|
|
|
+ else if (type == 1) {
|
|
//效验新密码规则
|
|
//效验新密码规则
|
|
passwordVerification(phone, oldPassword, newPassword, confirmNewPassword);
|
|
passwordVerification(phone, oldPassword, newPassword, confirmNewPassword);
|
|
LambdaUpdateWrapper<StoreUser> updateWrapper = new LambdaUpdateWrapper<>();
|
|
LambdaUpdateWrapper<StoreUser> updateWrapper = new LambdaUpdateWrapper<>();
|
|
@@ -207,8 +220,8 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
return flag;
|
|
return flag;
|
|
}
|
|
}
|
|
//更换绑定手机号
|
|
//更换绑定手机号
|
|
- else if(type == 2){
|
|
|
|
- ChangeBoundPhone(phone,newPhone,verificationCode);
|
|
|
|
|
|
+ else if (type == 2) {
|
|
|
|
+ ChangeBoundPhone(phone, newPhone, verificationCode);
|
|
}
|
|
}
|
|
return flag;
|
|
return flag;
|
|
}
|
|
}
|
|
@@ -258,15 +271,15 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private boolean ChangeBoundPhone(String phone, String newPhone, String verificationCode){
|
|
|
|
|
|
+ private boolean ChangeBoundPhone(String phone, String newPhone, String verificationCode) {
|
|
boolean flag = false;
|
|
boolean flag = false;
|
|
String key = "verification_" + phone;
|
|
String key = "verification_" + phone;
|
|
String redisVerificationCode = baseRedisService.getString(key);
|
|
String redisVerificationCode = baseRedisService.getString(key);
|
|
- if(!StringUtils.isEmpty(redisVerificationCode) && redisVerificationCode.equals(verificationCode)){
|
|
|
|
|
|
+ if (!StringUtils.isEmpty(redisVerificationCode) && redisVerificationCode.equals(verificationCode)) {
|
|
LambdaUpdateWrapper<StoreUser> storeUserWrapper = new LambdaUpdateWrapper<>();
|
|
LambdaUpdateWrapper<StoreUser> storeUserWrapper = new LambdaUpdateWrapper<>();
|
|
storeUserWrapper.eq(StoreUser::getPhone, phone);
|
|
storeUserWrapper.eq(StoreUser::getPhone, phone);
|
|
StoreUser storeUser = this.getOne(storeUserWrapper);
|
|
StoreUser storeUser = this.getOne(storeUserWrapper);
|
|
- if(storeUser!=null ){
|
|
|
|
|
|
+ if (storeUser != null) {
|
|
storeUser.setPhone(newPhone);
|
|
storeUser.setPhone(newPhone);
|
|
flag = this.updateById(storeUser);
|
|
flag = this.updateById(storeUser);
|
|
}
|
|
}
|
|
@@ -280,8 +293,7 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
throw new RuntimeException("手机号更换绑定失败");
|
|
throw new RuntimeException("手机号更换绑定失败");
|
|
}
|
|
}
|
|
return flag;
|
|
return flag;
|
|
- }
|
|
|
|
- else {
|
|
|
|
|
|
+ } else {
|
|
throw new RuntimeException("验证码错误");
|
|
throw new RuntimeException("验证码错误");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -514,6 +526,34 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public Map<String, String> storeCancelAccountVerification(StoreUserVo storeUserVo) {
|
|
|
|
+ // 通过id获取当前商家账号信息
|
|
|
|
+ LambdaQueryWrapper<StoreUser> storeUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ storeUserLambdaQueryWrapper.eq(StoreUser::getId, storeUserVo.getId());
|
|
|
|
+ StoreUser storeUser = storeUserMapper.selectOne(storeUserLambdaQueryWrapper);
|
|
|
|
+ Map<String, String> storeMap = new HashMap<>();
|
|
|
|
+ if (storeUser != null) {
|
|
|
|
+ if (null != storeUser.getStoreId()) {
|
|
|
|
+ StoreInfo storeInfo = storeInfoMapper.selectById(storeUser.getStoreId());
|
|
|
|
+ if (1 != storeInfo.getLogoutFlag()) {
|
|
|
|
+ //vaule为0代表有商铺未注销
|
|
|
|
+ storeMap.put("accountStore", "0");
|
|
|
|
+ } else {
|
|
|
|
+ //vaule为1代表可注销
|
|
|
|
+ storeMap.put("accountStore", "1");
|
|
|
|
+ }
|
|
|
|
+ } else if (storeUser.getMoney() != null && storeUser.getMoney() > 0) {
|
|
|
|
+ //vaule为0代表有未体现的现金
|
|
|
|
+ storeMap.put("accountMoney", "0");
|
|
|
|
+ } else {
|
|
|
|
+ //vaule为1代表没有未体现的现金
|
|
|
|
+ storeMap.put("accountMoney", "1");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return storeMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
/**
|
|
/**
|
|
* @param phone
|
|
* @param phone
|
|
@@ -566,21 +606,28 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
storeUserLambdaQueryWrapper.eq(StoreUser::getId, storeUserVo.getId());
|
|
storeUserLambdaQueryWrapper.eq(StoreUser::getId, storeUserVo.getId());
|
|
StoreUser storeUser = storeUserMapper.selectOne(storeUserLambdaQueryWrapper);
|
|
StoreUser storeUser = storeUserMapper.selectOne(storeUserLambdaQueryWrapper);
|
|
if (storeUser != null) {
|
|
if (storeUser != null) {
|
|
- if (null != storeUser.getStoreId()) {
|
|
|
|
- StoreInfo storeInfo = storeInfoMapper.selectById(storeUser.getStoreId());
|
|
|
|
- if (1 != storeInfo.getLogoutFlag()) {
|
|
|
|
- throw new RuntimeException("请先注销店铺再进行注销用户操作!");
|
|
|
|
- }
|
|
|
|
|
|
+ // 添加注销原因
|
|
|
|
+ storeUser.setLogoutReason(storeUserVo.getLogoutReason());
|
|
|
|
+ // 添加注销code
|
|
|
|
+ storeUser.setLogoutCode(storeUserVo.getLogoutCode());
|
|
|
|
+ // 注销中状态
|
|
|
|
+ storeUser.setStatus(-1);
|
|
|
|
+ // 添加注销申请时间
|
|
|
|
+ storeUser.setLogoutTime(new Date());
|
|
|
|
+ int num = storeUserMapper.updateById(storeUser);
|
|
|
|
+ if (num > 0) {
|
|
|
|
+ // 发送通知
|
|
|
|
+ LifeNotice lifeMessage = new LifeNotice();
|
|
|
|
+ lifeMessage.setReceiverId("user_" + storeUser.getPhone());
|
|
|
|
+ String text = "您提交的账号注销申请已成功提交, 系统将按流程进行处理. 注销申请提交后, 将进入7天的冷静期. 期间您可以随时在" +
|
|
|
|
+ "[账号信息]撤回申请. 冷静期结束后, 系统将正式开始注销操作. 账号内所有数据(包括但不限于个人信息、 资产等) 将被永久清除, 且无法恢复." +
|
|
|
|
+ "如有疑问, 可联系【客服】咨询. 感谢您使用我们的服务.";
|
|
|
|
+ lifeMessage.setContext(text);
|
|
|
|
+ lifeMessage.setSenderId("system");
|
|
|
|
+ lifeMessage.setIsRead(0);
|
|
|
|
+ lifeMessage.setNoticeType(1);
|
|
|
|
+ lifeNoticeMapper.insert(lifeMessage);
|
|
}
|
|
}
|
|
- // 修改注销标记为1
|
|
|
|
- storeUser.setLogoutFlag(1);
|
|
|
|
- // 添加注销原因
|
|
|
|
- storeUser.setLogoutReason(storeUserVo.getLogoutReason());
|
|
|
|
- // 添加注销申请时间
|
|
|
|
- storeUser.setLogoutTime(new Date());
|
|
|
|
- // 注销中状态
|
|
|
|
- storeUser.setStatus(-1);
|
|
|
|
- storeUserMapper.updateById(storeUser);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -592,11 +639,44 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
StoreUser storeUser = storeUserMapper.selectOne(storeUserLambdaQueryWrapper);
|
|
StoreUser storeUser = storeUserMapper.selectOne(storeUserLambdaQueryWrapper);
|
|
// 修改注销标记为0
|
|
// 修改注销标记为0
|
|
storeUser.setLogoutFlag(0);
|
|
storeUser.setLogoutFlag(0);
|
|
|
|
+ // 注销状态变为可用
|
|
|
|
+ storeUser.setStatus(0);
|
|
// 清空注销原因
|
|
// 清空注销原因
|
|
storeUser.setLogoutReason(null);
|
|
storeUser.setLogoutReason(null);
|
|
// 清空注销申请时间
|
|
// 清空注销申请时间
|
|
storeUser.setLogoutTime(null);
|
|
storeUser.setLogoutTime(null);
|
|
- storeUserMapper.updateById(storeUser);
|
|
|
|
|
|
+ int num = storeUserMapper.updateById(storeUser);
|
|
|
|
+ if (num > 0) {
|
|
|
|
+ // 发送通知
|
|
|
|
+ LifeNotice lifeMessage = new LifeNotice();
|
|
|
|
+ lifeMessage.setReceiverId("user_" + storeUser.getPhone());
|
|
|
|
+ String text = "处理结果:已撤回注销申请" +
|
|
|
|
+ "处理时间:"+ storeUser.getCreatedTime() +
|
|
|
|
+ "当前账号状态以为恢复正常. 您可以继续使用该账号登录并享受各项服务, 所有个人数据及账户信息" +
|
|
|
|
+ "均已妥善保留. 若您后续仍有注销需求, 可随时通过账号信息页面重新提交申请. 感谢您的理解与支持!";
|
|
|
|
+ lifeMessage.setContext(text);
|
|
|
|
+ lifeMessage.setSenderId("system");
|
|
|
|
+ lifeMessage.setIsRead(0);
|
|
|
|
+ lifeMessage.setNoticeType(1);
|
|
|
|
+ lifeNoticeMapper.insert(lifeMessage);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void deleteStoreAccountInfo(StoreUserVo storeUserVo) {
|
|
|
|
+ LambdaQueryWrapper<StoreUser> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ queryWrapper.eq(StoreUser::getId, storeUserVo.getId());
|
|
|
|
+ StoreUser storeUser = storeUserMapper.selectOne(queryWrapper);
|
|
|
|
+ // 删除已过注销时间的商家
|
|
|
|
+ storeUserMapper.deleteById(storeUserVo.getId());
|
|
|
|
+ //删除用户redis中的token
|
|
|
|
+ baseRedisService.delete("store_" + storeUserVo.getPhone());
|
|
|
|
+ LambdaQueryWrapper<LifeFans> lifeFansLambdaQueryWrapper = new LambdaQueryWrapper<LifeFans>().eq(LifeFans::getFollowedId, "store_" + storeUser.getPhone())
|
|
|
|
+ .or().eq(LifeFans::getFansId, "store_" + storeUser.getPhone());
|
|
|
|
+ lifeFansMapper.delete(lifeFansLambdaQueryWrapper);
|
|
|
|
+ if(storeUser.getStoreId()!=null){
|
|
|
|
+ storeInfoMapper.deleteById(storeUser.getStoreId());
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|