This commit is contained in:
chc 2022-10-21 11:27:28 +08:00
parent 5a1c6b9e7f
commit e8e2e8e315
4 changed files with 72 additions and 68 deletions

View File

@ -1,12 +1,8 @@
package cn.lili.controller.passport;
import cn.lili.cache.Cache;
import cn.lili.cache.CachePrefix;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.ResultUtil;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.member.entity.dos.Member;
@ -52,18 +48,6 @@ public class MemberBuyerController {
private SmsUtil smsUtil;
@Autowired
private VerificationService verificationService;
@Autowired
private Cache cache;
@ApiOperation(value = "手机号登录")
@ApiImplicitParams({
@ApiImplicitParam(name = "mobile", value = "手机号", required = true, paramType = "query")
})
@PostMapping("/phoneLogin")
public ResultMessage<Object> phoneLogin(@NotNull(message = "手机号为空") @RequestParam String mobile) {
return ResultUtil.data(memberService.mobilePhoneLogin(mobile));
}
@ApiOperation(value = "web-获取登录二维码")
@ -210,13 +194,8 @@ public class MemberBuyerController {
//校验短信验证码是否正确
if (smsUtil.verifyCode(mobile, VerificationEnums.FIND_USER, uuid, code)) {
//校验是否通过手机号可获取会员,存在则将会员信息存入缓存有效时间3分钟
Member member = memberService.findByMobile(mobile);
if (member == null) {
throw new ServiceException(ResultCode.USER_NOT_PHONE);
}
cache.put(CachePrefix.FIND_MOBILE + uuid, mobile, 300L);
memberService.findByMobile(uuid, mobile);
return ResultUtil.success();
} else {
throw new ServiceException(ResultCode.VERIFICATION_SMS_CHECKED_ERROR);
}
@ -247,11 +226,7 @@ public class MemberBuyerController {
@PutMapping("/modifyPass")
public ResultMessage<Member> modifyPass(@NotNull(message = "旧密码不能为空") @RequestParam String password,
@NotNull(message = "新密码不能为空") @RequestParam String newPassword) {
AuthUser tokenUser = UserContext.getCurrentUser();
if (tokenUser == null) {
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
}
return ResultUtil.data(memberService.modifyPass(tokenUser.getId(), password, newPassword));
return ResultUtil.data(memberService.modifyPass(password, newPassword));
}
@ApiOperation(value = "初始设置密码")

View File

@ -46,6 +46,8 @@ public interface MemberService extends IService<Member> {
*/
Member findByMobile(String mobile);
boolean findByMobile(String uuid, String mobile);
/**
* 通过用户名获取用户
*
@ -91,12 +93,11 @@ public interface MemberService extends IService<Member> {
/**
* 修改用户密码
*
* @param memberId 会员id
* @param oldPassword 旧密码
* @param newPassword 新密码
* @return 操作结果
*/
Member modifyPass(String memberId, String oldPassword, String newPassword);
Member modifyPass(String oldPassword, String newPassword);
/**
* 注册会员

View File

@ -5,6 +5,7 @@ import cn.hutool.core.convert.Convert;
import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.cache.Cache;
import cn.lili.cache.CachePrefix;
import cn.lili.common.aop.annotation.DemoSite;
import cn.lili.common.context.ThreadContextHolder;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.enums.SwitchEnum;
@ -16,11 +17,7 @@ import cn.lili.common.security.context.UserContext;
import cn.lili.common.security.enums.UserEnums;
import cn.lili.common.security.token.Token;
import cn.lili.common.sensitive.SensitiveWordsFilter;
import cn.lili.common.utils.BeanUtil;
import cn.lili.common.utils.CookieUtil;
import cn.lili.common.utils.StringUtils;
import cn.lili.common.utils.SnowFlake;
import cn.lili.common.utils.UuidUtils;
import cn.lili.common.utils.*;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.connect.config.ConnectAuthEnum;
import cn.lili.modules.connect.entity.Connect;
@ -43,7 +40,6 @@ import cn.lili.modules.store.entity.dos.Store;
import cn.lili.modules.store.entity.enums.StoreStatusEnum;
import cn.lili.modules.store.service.StoreService;
import cn.lili.mybatis.util.PageUtil;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.MemberTagsEnum;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -51,7 +47,6 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@ -124,6 +119,13 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
}
@Override
public Member findByMobile(String mobile) {
QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("mobile", mobile);
return this.baseMapper.selectOne(queryWrapper);
}
@Override
public boolean findByMobile(String uuid, String mobile) {
QueryWrapper<Member> queryWrapper = new QueryWrapper<>();
@ -152,6 +154,32 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
return memberTokenGenerate.createToken(member, false);
}
@Override
public void resetPassword(List<String> ids) {
String password = new BCryptPasswordEncoder().encode(StringUtils.md5("123456"));
LambdaUpdateWrapper<Member> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
lambdaUpdateWrapper.in(Member::getId, ids);
lambdaUpdateWrapper.set(Member::getPassword, password);
this.update(lambdaUpdateWrapper);
}
@Override
public void updateHaveShop(Boolean haveStore, String storeId, List<String> memberIds) {
List<Member> members = this.baseMapper.selectBatchIds(memberIds);
if (members.size() > 0) {
members.forEach(member -> {
member.setHaveStore(haveStore);
if (haveStore) {
member.setStoreId(storeId);
} else {
member.setStoreId(null);
}
});
this.updateBatchById(members);
}
}
@Override
public Token usernameStoreLogin(String username, String password) {
@ -262,6 +290,37 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
// 发送会员注册信息
applicationEventPublisher.publishEvent(new TransactionCommitSendMQEvent("new member register", rocketmqCustomProperties.getMemberTopic(), MemberTagsEnum.MEMBER_REGISTER.name(), member));
}
@Override
public Member editOwn(MemberEditDTO memberEditDTO) {
//查询会员信息
Member member = this.findByUsername(Objects.requireNonNull(UserContext.getCurrentUser()).getUsername());
//传递修改会员信息
BeanUtil.copyProperties(memberEditDTO, member);
//修改会员
this.updateById(member);
return member;
}
@DemoSite
public Member modifyPass(String oldPassword, String newPassword) {
AuthUser tokenUser = UserContext.getCurrentUser();
if (tokenUser == null) {
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
}
Member member = this.getById(tokenUser.getId());
//判断旧密码输入是否正确
if (!new BCryptPasswordEncoder().matches(oldPassword, member.getPassword())) {
throw new ServiceException(ResultCode.USER_OLD_PASSWORD_ERROR);
}
//修改会员密码
LambdaUpdateWrapper<Member> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
lambdaUpdateWrapper.eq(Member::getId, member.getId());
lambdaUpdateWrapper.set(Member::getPassword, new BCryptPasswordEncoder().encode(newPassword));
this.update(lambdaUpdateWrapper);
return member;
}
@Override
public boolean canInitPass() {
AuthUser tokenUser = UserContext.getCurrentUser();
@ -380,11 +439,6 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
@Override
public Member updateMember(ManagerMemberEditDTO managerMemberEditDTO) {
//判断是否用户登录并且会员ID为当前登录会员ID
AuthUser tokenUser = UserContext.getCurrentUser();
if (tokenUser == null) {
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
}
//过滤会员昵称敏感词
if (CharSequenceUtil.isNotBlank(managerMemberEditDTO.getNickName())) {
managerMemberEditDTO.setNickName(SensitiveWordsFilter.filter(managerMemberEditDTO.getNickName()));
@ -624,31 +678,6 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
}
}
@Override
public void updateHaveShop(Boolean haveStore, String storeId, List<String> memberIds) {
List<Member> members = this.baseMapper.selectBatchIds(memberIds);
if (members.size() > 0) {
members.forEach(member -> {
member.setHaveStore(haveStore);
if (haveStore) {
member.setStoreId(storeId);
} else {
member.setStoreId(null);
}
});
this.updateBatchById(members);
}
}
@Override
public void resetPassword(List<String> ids) {
String password = new BCryptPasswordEncoder().encode(StringUtils.md5("123456"));
LambdaUpdateWrapper<Member> lambdaUpdateWrapper = Wrappers.lambdaUpdate();
lambdaUpdateWrapper.in(Member::getId, ids);
lambdaUpdateWrapper.set(Member::getPassword, password);
this.update(lambdaUpdateWrapper);
}
/**
* 获取所有会员的手机号
*
@ -765,5 +794,4 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
throw new ServiceException(ResultCode.USER_EXIST);
}
}
}

View File

@ -78,7 +78,7 @@ public class StorePassportController {
if (tokenUser == null) {
throw new ServiceException(ResultCode.USER_NOT_LOGIN);
}
return ResultUtil.data(memberService.modifyPass(tokenUser.getId(), password, newPassword));
return ResultUtil.data(memberService.modifyPass(password, newPassword));
}
@ApiOperation(value = "刷新token")