|
@@ -24,6 +24,7 @@ import shop.alien.entity.store.excelVo.util.ExcelGenerator;
|
|
import shop.alien.entity.store.vo.StoreUserVo;
|
|
import shop.alien.entity.store.vo.StoreUserVo;
|
|
import shop.alien.mapper.*;
|
|
import shop.alien.mapper.*;
|
|
import shop.alien.store.config.BaseRedisService;
|
|
import shop.alien.store.config.BaseRedisService;
|
|
|
|
+import shop.alien.store.service.NearMeService;
|
|
import shop.alien.store.service.StoreUserService;
|
|
import shop.alien.store.service.StoreUserService;
|
|
import shop.alien.store.util.FunctionMagic;
|
|
import shop.alien.store.util.FunctionMagic;
|
|
import shop.alien.util.common.DateUtils;
|
|
import shop.alien.util.common.DateUtils;
|
|
@@ -79,6 +80,8 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
|
|
|
|
private final LifeMessageMapper lifeMessageMapper;
|
|
private final LifeMessageMapper lifeMessageMapper;
|
|
|
|
|
|
|
|
+ private final NearMeService nearMeService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 手机号获取
|
|
* 手机号获取
|
|
*
|
|
*
|
|
@@ -91,7 +94,7 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
lambdaQueryWrapper.eq(StoreUser::getPhone, phone);
|
|
lambdaQueryWrapper.eq(StoreUser::getPhone, phone);
|
|
StoreUser user = this.getOne(lambdaQueryWrapper);
|
|
StoreUser user = this.getOne(lambdaQueryWrapper);
|
|
StoreUserVo storeUserVo = new StoreUserVo();
|
|
StoreUserVo storeUserVo = new StoreUserVo();
|
|
- if(user.getStatus() == -1){
|
|
|
|
|
|
+ if (user.getStatus() == -1) {
|
|
LocalDateTime localDateTime = user.getLogoutTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
|
LocalDateTime localDateTime = user.getLogoutTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
|
LocalDateTime future = localDateTime.plusDays(7);
|
|
LocalDateTime future = localDateTime.plusDays(7);
|
|
LocalDateTime now = LocalDateTime.now();
|
|
LocalDateTime now = LocalDateTime.now();
|
|
@@ -198,7 +201,7 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
boolean flag = false;
|
|
boolean flag = false;
|
|
//类型为0 忘记密码
|
|
//类型为0 忘记密码
|
|
if (type == 0) {
|
|
if (type == 0) {
|
|
- forgetPassword(phone, newPassword, verificationCode);
|
|
|
|
|
|
+ flag = forgetPassword(phone, newPassword, verificationCode);
|
|
}
|
|
}
|
|
//修改密码
|
|
//修改密码
|
|
else if (type == 1) {
|
|
else if (type == 1) {
|
|
@@ -212,7 +215,10 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
//修改成功后同步删除redis缓存token
|
|
//修改成功后同步删除redis缓存token
|
|
if (flag) {
|
|
if (flag) {
|
|
String token = "store_" + phone;
|
|
String token = "store_" + phone;
|
|
- baseRedisService.delete(token);
|
|
|
|
|
|
+ String toKenStr = baseRedisService.getString(token);
|
|
|
|
+ if (toKenStr != null) {
|
|
|
|
+ baseRedisService.delete(token);
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
log.error("密码修改失败");
|
|
log.error("密码修改失败");
|
|
throw new RuntimeException("密码修改失败");
|
|
throw new RuntimeException("密码修改失败");
|
|
@@ -221,11 +227,40 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
}
|
|
}
|
|
//更换绑定手机号
|
|
//更换绑定手机号
|
|
else if (type == 2) {
|
|
else if (type == 2) {
|
|
- ChangeBoundPhone(phone, newPhone, verificationCode);
|
|
|
|
|
|
+ flag = ChangeBoundPhone(phone, newPhone, verificationCode);
|
|
}
|
|
}
|
|
return flag;
|
|
return flag;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public Map<String, String> changePhoneVerification(String phone, String oldPassword, String verificationCode) {
|
|
|
|
+ Map<String, String> changePhoneMap = new HashMap<>();
|
|
|
|
+
|
|
|
|
+ if (oldPassword != null || !oldPassword.equals("")) {
|
|
|
|
+ LambdaUpdateWrapper<StoreUser> userLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
|
|
|
+ userLambdaUpdateWrapper.eq(StoreUser::getPhone, phone);
|
|
|
|
+ StoreUser storeUser = this.getOne(userLambdaUpdateWrapper);
|
|
|
|
+ if (storeUser.getPassword().equals(oldPassword)) {
|
|
|
|
+ changePhoneMap.put("passwordStatus", "0");
|
|
|
|
+ return changePhoneMap;
|
|
|
|
+ } else {
|
|
|
|
+ changePhoneMap.put("passwordStatus", "1");
|
|
|
|
+ return changePhoneMap;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ String oldPhoneVerification = "verification_" + phone;
|
|
|
|
+ //获取新手机号验证码
|
|
|
|
+ String redisVerificationCode = baseRedisService.getString(oldPhoneVerification);
|
|
|
|
+ if (redisVerificationCode.equals(verificationCode)) {
|
|
|
|
+ changePhoneMap.put("verificationStatus", "0");
|
|
|
|
+ return changePhoneMap;
|
|
|
|
+ } else {
|
|
|
|
+ changePhoneMap.put("verificationStatus", "1");
|
|
|
|
+ return changePhoneMap;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
private void passwordVerification(String phone, String password, String newPassword, String confirmNewPassword) {
|
|
private void passwordVerification(String phone, String password, String newPassword, String confirmNewPassword) {
|
|
LambdaUpdateWrapper<StoreUser> wrapperFans = new LambdaUpdateWrapper<>();
|
|
LambdaUpdateWrapper<StoreUser> wrapperFans = new LambdaUpdateWrapper<>();
|
|
wrapperFans.eq(StoreUser::getPhone, phone);
|
|
wrapperFans.eq(StoreUser::getPhone, phone);
|
|
@@ -259,7 +294,10 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
if (flag) {
|
|
if (flag) {
|
|
log.info("密码修改成功");
|
|
log.info("密码修改成功");
|
|
String token = "store_" + phone;
|
|
String token = "store_" + phone;
|
|
- baseRedisService.delete(token);
|
|
|
|
|
|
+ String tokenStr = baseRedisService.getString(token);
|
|
|
|
+ if (tokenStr != null) {
|
|
|
|
+ baseRedisService.delete(token);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if (!flag) {
|
|
if (!flag) {
|
|
log.error("密码修改失败");
|
|
log.error("密码修改失败");
|
|
@@ -273,33 +311,33 @@ 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 redisVerificationCode = baseRedisService.getString(key);
|
|
|
|
- if (!StringUtils.isEmpty(redisVerificationCode) && redisVerificationCode.equals(verificationCode)) {
|
|
|
|
- LambdaUpdateWrapper<StoreUser> storeUserWrapper = new LambdaUpdateWrapper<>();
|
|
|
|
- storeUserWrapper.eq(StoreUser::getPhone, phone);
|
|
|
|
- StoreUser storeUser = this.getOne(storeUserWrapper);
|
|
|
|
- if (storeUser != null) {
|
|
|
|
|
|
+ String newPhoneVerification = "verification_" + newPhone;
|
|
|
|
+ //获取新手机号验证码
|
|
|
|
+ String redisVerificationCode = baseRedisService.getString(newPhoneVerification);
|
|
|
|
+ if(!StringUtils.isEmpty(redisVerificationCode) && redisVerificationCode.equals(verificationCode)){
|
|
|
|
+ LambdaUpdateWrapper<StoreUser> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
|
+ updateWrapper.eq(StoreUser::getPhone, phone);
|
|
|
|
+ StoreUser storeUser = this.getOne(updateWrapper);
|
|
|
|
+ if(storeUser !=null){
|
|
storeUser.setPhone(newPhone);
|
|
storeUser.setPhone(newPhone);
|
|
flag = this.updateById(storeUser);
|
|
flag = this.updateById(storeUser);
|
|
|
|
+ if(flag){
|
|
|
|
+ String token = "store_" + phone;
|
|
|
|
+ String tokenStr = baseRedisService.getString(token);
|
|
|
|
+ if (tokenStr != null) {
|
|
|
|
+ baseRedisService.delete(token);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- if (flag) {
|
|
|
|
- log.info("新手机号绑定成功");
|
|
|
|
- String token = "store_" + phone;
|
|
|
|
- baseRedisService.delete(token);
|
|
|
|
- }
|
|
|
|
- if (!flag) {
|
|
|
|
- log.error("手机号更换绑定失败");
|
|
|
|
- throw new RuntimeException("手机号更换绑定失败");
|
|
|
|
- }
|
|
|
|
- return flag;
|
|
|
|
- } else {
|
|
|
|
|
|
+ }else{
|
|
throw new RuntimeException("验证码错误");
|
|
throw new RuntimeException("验证码错误");
|
|
}
|
|
}
|
|
|
|
+ return flag;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 设置用户信息
|
|
* 设置用户信息
|
|
|
|
+ *
|
|
* @return boolean
|
|
* @return boolean
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
@@ -534,19 +572,18 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
StoreUser storeUser = storeUserMapper.selectOne(storeUserLambdaQueryWrapper);
|
|
StoreUser storeUser = storeUserMapper.selectOne(storeUserLambdaQueryWrapper);
|
|
Map<String, String> storeMap = new HashMap<>();
|
|
Map<String, String> storeMap = new HashMap<>();
|
|
if (storeUser != null) {
|
|
if (storeUser != null) {
|
|
- storeMap.put("status",storeUser.getStatus().toString());
|
|
|
|
|
|
+ storeMap.put("status", storeUser.getStatus().toString());
|
|
if (null != storeUser.getStoreId()) {
|
|
if (null != storeUser.getStoreId()) {
|
|
StoreInfo storeInfo = storeInfoMapper.selectById(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("accountStore", "0");
|
|
|
|
+ } else {
|
|
|
|
+ //vaule为1代表绑定店铺注销
|
|
|
|
+ storeMap.put("accountStore", "1");
|
|
|
|
+ }
|
|
|
|
+ if (storeUser.getMoney() != null && storeUser.getMoney() > 0) {
|
|
//vaule为0代表有未体现的现金
|
|
//vaule为0代表有未体现的现金
|
|
- storeMap.put("accountMoney", "0");
|
|
|
|
|
|
+ storeMap.put("accountMoney", "1");
|
|
} else {
|
|
} else {
|
|
//vaule为1代表没有未体现的现金
|
|
//vaule为1代表没有未体现的现金
|
|
storeMap.put("accountMoney", "1");
|
|
storeMap.put("accountMoney", "1");
|
|
@@ -606,7 +643,10 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
LambdaQueryWrapper<StoreUser> storeUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<StoreUser> storeUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
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) {
|
|
|
|
|
|
+ String key = "verification_" + storeUser.getPhone();
|
|
|
|
+ String redisVerificationCode = baseRedisService.getString(key);
|
|
|
|
+ if (redisVerificationCode.equals(storeUserVo.getVerificationCode())) {
|
|
|
|
+ if (storeUser != null) {
|
|
// 添加注销原因
|
|
// 添加注销原因
|
|
storeUser.setLogoutReason(storeUserVo.getLogoutReason());
|
|
storeUser.setLogoutReason(storeUserVo.getLogoutReason());
|
|
// 添加注销code
|
|
// 添加注销code
|
|
@@ -630,7 +670,10 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
lifeMessage.setIsRead(0);
|
|
lifeMessage.setIsRead(0);
|
|
lifeMessage.setNoticeType(1);
|
|
lifeMessage.setNoticeType(1);
|
|
lifeNoticeMapper.insert(lifeMessage);
|
|
lifeNoticeMapper.insert(lifeMessage);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ throw new RuntimeException("验证码错误");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -646,41 +689,51 @@ public class StoreUserServiceImpl extends ServiceImpl<StoreUserMapper, StoreUser
|
|
storeUser.setStatus(0);
|
|
storeUser.setStatus(0);
|
|
// 清空注销原因
|
|
// 清空注销原因
|
|
storeUser.setLogoutReason(null);
|
|
storeUser.setLogoutReason(null);
|
|
|
|
+ // 清空注销code
|
|
|
|
+ storeUser.setLogoutCode(null);
|
|
// 清空注销申请时间
|
|
// 清空注销申请时间
|
|
storeUser.setLogoutTime(null);
|
|
storeUser.setLogoutTime(null);
|
|
// 更新logout_flag状态为0
|
|
// 更新logout_flag状态为0
|
|
storeUser.setLogoutFlag(0);
|
|
storeUser.setLogoutFlag(0);
|
|
int num = 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);
|
|
|
|
- }
|
|
|
|
|
|
+ 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
|
|
@Override
|
|
public void deleteStoreAccountInfo(StoreUserVo storeUserVo) {
|
|
public void deleteStoreAccountInfo(StoreUserVo storeUserVo) {
|
|
LambdaQueryWrapper<StoreUser> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<StoreUser> queryWrapper = new LambdaQueryWrapper<>();
|
|
queryWrapper.eq(StoreUser::getId, storeUserVo.getId());
|
|
queryWrapper.eq(StoreUser::getId, storeUserVo.getId());
|
|
|
|
+ queryWrapper.eq(StoreUser::getDeleteFlag, 0);
|
|
StoreUser storeUser = storeUserMapper.selectOne(queryWrapper);
|
|
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());
|
|
|
|
|
|
+ if (storeUser != null) {
|
|
|
|
+ storeUserMapper.deleteById(storeUserVo.getId());
|
|
|
|
+ nearMeService.removeGeolocation(Boolean.TRUE, storeUser.getId().toString());
|
|
|
|
+ String storePhone = "store_" + storeUserVo.getPhone();
|
|
|
|
+ String key = baseRedisService.getString(storePhone);
|
|
|
|
+ if (key != null) {
|
|
|
|
+ //删除用户redis中的token
|
|
|
|
+ baseRedisService.delete(key);
|
|
|
|
+ }
|
|
|
|
+ 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());
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|