|  | @@ -1,5 +1,8 @@
 | 
											
												
													
														|  |  package com.yonge.cooleshow.portal.service.impl;
 |  |  package com.yonge.cooleshow.portal.service.impl;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 | 
											
												
													
														|  | 
 |  | +import com.yonge.cooleshow.auth.api.entity.SysUser;
 | 
											
												
													
														|  | 
 |  | +import com.yonge.cooleshow.common.exception.BizException;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.mall.common.exception.Asserts;
 |  |  import com.yonge.cooleshow.mall.common.exception.Asserts;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.mbg.mapper.UmsMemberLevelMapper;
 |  |  import com.yonge.cooleshow.mbg.mapper.UmsMemberLevelMapper;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.mbg.mapper.UmsMemberMapper;
 |  |  import com.yonge.cooleshow.mbg.mapper.UmsMemberMapper;
 | 
											
										
											
												
													
														|  | @@ -10,7 +13,6 @@ import com.yonge.cooleshow.mbg.model.UmsMemberLevelExample;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.portal.domain.MemberDetails;
 |  |  import com.yonge.cooleshow.portal.domain.MemberDetails;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.portal.service.UmsMemberCacheService;
 |  |  import com.yonge.cooleshow.portal.service.UmsMemberCacheService;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.portal.service.UmsMemberService;
 |  |  import com.yonge.cooleshow.portal.service.UmsMemberService;
 | 
											
												
													
														|  | -import com.macro.mall.security.util.JwtTokenUtil;
 |  | 
 | 
											
												
													
														|  |  import org.slf4j.Logger;
 |  |  import org.slf4j.Logger;
 | 
											
												
													
														|  |  import org.slf4j.LoggerFactory;
 |  |  import org.slf4j.LoggerFactory;
 | 
											
												
													
														|  |  import org.springframework.beans.factory.annotation.Autowired;
 |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
											
										
											
												
													
														|  | @@ -39,20 +41,15 @@ import java.util.Random;
 | 
											
												
													
														|  |  @Service
 |  |  @Service
 | 
											
												
													
														|  |  public class UmsMemberServiceImpl implements UmsMemberService {
 |  |  public class UmsMemberServiceImpl implements UmsMemberService {
 | 
											
												
													
														|  |      private static final Logger LOGGER = LoggerFactory.getLogger(UmsMemberServiceImpl.class);
 |  |      private static final Logger LOGGER = LoggerFactory.getLogger(UmsMemberServiceImpl.class);
 | 
											
												
													
														|  | -    @Autowired
 |  | 
 | 
											
												
													
														|  | -    private PasswordEncoder passwordEncoder;
 |  | 
 | 
											
												
													
														|  | -    @Autowired
 |  | 
 | 
											
												
													
														|  | -    private JwtTokenUtil jwtTokenUtil;
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      @Autowired
 |  |      @Autowired
 | 
											
												
													
														|  |      private UmsMemberMapper memberMapper;
 |  |      private UmsMemberMapper memberMapper;
 | 
											
												
													
														|  |      @Autowired
 |  |      @Autowired
 | 
											
												
													
														|  |      private UmsMemberLevelMapper memberLevelMapper;
 |  |      private UmsMemberLevelMapper memberLevelMapper;
 | 
											
												
													
														|  |      @Autowired
 |  |      @Autowired
 | 
											
												
													
														|  |      private UmsMemberCacheService memberCacheService;
 |  |      private UmsMemberCacheService memberCacheService;
 | 
											
												
													
														|  | -    @Value("${redis.key.authCode}")
 |  | 
 | 
											
												
													
														|  | -    private String REDIS_KEY_PREFIX_AUTH_CODE;
 |  | 
 | 
											
												
													
														|  | -    @Value("${redis.expire.authCode}")
 |  | 
 | 
											
												
													
														|  | -    private Long AUTH_CODE_EXPIRE_SECONDS;
 |  | 
 | 
											
												
													
														|  | 
 |  | +    @Autowired
 | 
											
												
													
														|  | 
 |  | +    private SysUserFeignService sysUserFeignService;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  |      public UmsMember getByUsername(String username) {
 |  |      public UmsMember getByUsername(String username) {
 | 
											
										
											
												
													
														|  | @@ -75,72 +72,34 @@ public class UmsMemberServiceImpl implements UmsMemberService {
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  | -    public void register(String username, String password, String telephone, String authCode) {
 |  | 
 | 
											
												
													
														|  | -        //验证验证码
 |  | 
 | 
											
												
													
														|  | -        if(!verifyAuthCode(authCode,telephone)){
 |  | 
 | 
											
												
													
														|  | -            Asserts.fail("验证码错误");
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        //查询是否已有该用户
 |  | 
 | 
											
												
													
														|  | -        UmsMemberExample example = new UmsMemberExample();
 |  | 
 | 
											
												
													
														|  | -        example.createCriteria().andUsernameEqualTo(username);
 |  | 
 | 
											
												
													
														|  | -        example.or(example.createCriteria().andPhoneEqualTo(telephone));
 |  | 
 | 
											
												
													
														|  | -        List<UmsMember> umsMembers = memberMapper.selectByExample(example);
 |  | 
 | 
											
												
													
														|  | -        if (!CollectionUtils.isEmpty(umsMembers)) {
 |  | 
 | 
											
												
													
														|  | -            Asserts.fail("该用户已经存在");
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        //没有该用户进行添加操作
 |  | 
 | 
											
												
													
														|  | -        UmsMember umsMember = new UmsMember();
 |  | 
 | 
											
												
													
														|  | -        umsMember.setUsername(username);
 |  | 
 | 
											
												
													
														|  | -        umsMember.setPhone(telephone);
 |  | 
 | 
											
												
													
														|  | -        umsMember.setPassword(passwordEncoder.encode(password));
 |  | 
 | 
											
												
													
														|  | -        umsMember.setCreateTime(new Date());
 |  | 
 | 
											
												
													
														|  | -        umsMember.setStatus(1);
 |  | 
 | 
											
												
													
														|  | -        //获取默认会员等级并设置
 |  | 
 | 
											
												
													
														|  | -        UmsMemberLevelExample levelExample = new UmsMemberLevelExample();
 |  | 
 | 
											
												
													
														|  | -        levelExample.createCriteria().andDefaultStatusEqualTo(1);
 |  | 
 | 
											
												
													
														|  | -        List<UmsMemberLevel> memberLevelList = memberLevelMapper.selectByExample(levelExample);
 |  | 
 | 
											
												
													
														|  | -        if (!CollectionUtils.isEmpty(memberLevelList)) {
 |  | 
 | 
											
												
													
														|  | -            umsMember.setMemberLevelId(memberLevelList.get(0).getId());
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        memberMapper.insert(umsMember);
 |  | 
 | 
											
												
													
														|  | -        umsMember.setPassword(null);
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    @Override
 |  | 
 | 
											
												
													
														|  | -    public String generateAuthCode(String telephone) {
 |  | 
 | 
											
												
													
														|  | -        StringBuilder sb = new StringBuilder();
 |  | 
 | 
											
												
													
														|  | -        Random random = new Random();
 |  | 
 | 
											
												
													
														|  | -        for(int i=0;i<6;i++){
 |  | 
 | 
											
												
													
														|  | -            sb.append(random.nextInt(10));
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        memberCacheService.setAuthCode(telephone,sb.toString());
 |  | 
 | 
											
												
													
														|  | -        return sb.toString();
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    @Override
 |  | 
 | 
											
												
													
														|  | -    public void updatePassword(String telephone, String password, String authCode) {
 |  | 
 | 
											
												
													
														|  | -        UmsMemberExample example = new UmsMemberExample();
 |  | 
 | 
											
												
													
														|  | -        example.createCriteria().andPhoneEqualTo(telephone);
 |  | 
 | 
											
												
													
														|  | -        List<UmsMember> memberList = memberMapper.selectByExample(example);
 |  | 
 | 
											
												
													
														|  | -        if(CollectionUtils.isEmpty(memberList)){
 |  | 
 | 
											
												
													
														|  | -            Asserts.fail("该账号不存在");
 |  | 
 | 
											
												
													
														|  | 
 |  | +    public UmsMember getCurrentMember() {
 | 
											
												
													
														|  | 
 |  | +        SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
											
												
													
														|  | 
 |  | +        if (sysUser == null || sysUser.getId() == null) {
 | 
											
												
													
														|  | 
 |  | +            throw new BizException("用户信息获取失败");
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        //验证验证码
 |  | 
 | 
											
												
													
														|  | -        if(!verifyAuthCode(authCode,telephone)){
 |  | 
 | 
											
												
													
														|  | -            Asserts.fail("验证码错误");
 |  | 
 | 
											
												
													
														|  | 
 |  | +        UmsMember umsMember = getById(sysUser.getId());
 | 
											
												
													
														|  | 
 |  | +        // 商城库用户不存在-> 创建
 | 
											
												
													
														|  | 
 |  | +        if (umsMember == null || umsMember.getId() == null) {
 | 
											
												
													
														|  | 
 |  | +            umsMember = new UmsMember();
 | 
											
												
													
														|  | 
 |  | +            umsMember.setId(sysUser.getId());
 | 
											
												
													
														|  | 
 |  | +            umsMember.setCreateTime(sysUser.getCreateTime());
 | 
											
												
													
														|  | 
 |  | +            umsMember.setUsername(sysUser.getUsername());
 | 
											
												
													
														|  | 
 |  | +            umsMember.setPassword(sysUser.getPassword());
 | 
											
												
													
														|  | 
 |  | +            umsMember.setPhone(sysUser.getPhone());
 | 
											
												
													
														|  | 
 |  | +            umsMember.setStatus(sysUser.getLockFlag());
 | 
											
												
													
														|  | 
 |  | +            umsMember.setIcon(sysUser.getAvatar());
 | 
											
												
													
														|  | 
 |  | +            umsMember.setGender(sysUser.getGender());
 | 
											
												
													
														|  | 
 |  | +            umsMember.setBirthday(sysUser.getBirthdate());
 | 
											
												
													
														|  | 
 |  | +            //获取默认会员等级并设置
 | 
											
												
													
														|  | 
 |  | +            UmsMemberLevelExample levelExample = new UmsMemberLevelExample();
 | 
											
												
													
														|  | 
 |  | +            levelExample.createCriteria().andDefaultStatusEqualTo(1);
 | 
											
												
													
														|  | 
 |  | +            List<UmsMemberLevel> memberLevelList = memberLevelMapper.selectByExample(levelExample);
 | 
											
												
													
														|  | 
 |  | +            if (!CollectionUtils.isEmpty(memberLevelList)) {
 | 
											
												
													
														|  | 
 |  | +                umsMember.setMemberLevelId(memberLevelList.get(0).getId());
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            memberMapper.insert(umsMember);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        UmsMember umsMember = memberList.get(0);
 |  | 
 | 
											
												
													
														|  | -        umsMember.setPassword(passwordEncoder.encode(password));
 |  | 
 | 
											
												
													
														|  | -        memberMapper.updateByPrimaryKeySelective(umsMember);
 |  | 
 | 
											
												
													
														|  | -        memberCacheService.delMember(umsMember.getId());
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    @Override
 |  | 
 | 
											
												
													
														|  | -    public UmsMember getCurrentMember() {
 |  | 
 | 
											
												
													
														|  | -        SecurityContext ctx = SecurityContextHolder.getContext();
 |  | 
 | 
											
												
													
														|  | -        Authentication auth = ctx.getAuthentication();
 |  | 
 | 
											
												
													
														|  | -        MemberDetails memberDetails = (MemberDetails) auth.getPrincipal();
 |  | 
 | 
											
												
													
														|  | -        return memberDetails.getUmsMember();
 |  | 
 | 
											
												
													
														|  | 
 |  | +        return umsMember;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
										
											
												
													
														|  | @@ -160,37 +119,4 @@ public class UmsMemberServiceImpl implements UmsMemberService {
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          throw new UsernameNotFoundException("用户名或密码错误");
 |  |          throw new UsernameNotFoundException("用户名或密码错误");
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    @Override
 |  | 
 | 
											
												
													
														|  | -    public String login(String username, String password) {
 |  | 
 | 
											
												
													
														|  | -        String token = null;
 |  | 
 | 
											
												
													
														|  | -        //密码需要客户端加密后传递
 |  | 
 | 
											
												
													
														|  | -        try {
 |  | 
 | 
											
												
													
														|  | -            UserDetails userDetails = loadUserByUsername(username);
 |  | 
 | 
											
												
													
														|  | -            if(!passwordEncoder.matches(password,userDetails.getPassword())){
 |  | 
 | 
											
												
													
														|  | -                throw new BadCredentialsException("密码不正确");
 |  | 
 | 
											
												
													
														|  | -            }
 |  | 
 | 
											
												
													
														|  | -            UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
 |  | 
 | 
											
												
													
														|  | -            SecurityContextHolder.getContext().setAuthentication(authentication);
 |  | 
 | 
											
												
													
														|  | -            token = jwtTokenUtil.generateToken(userDetails);
 |  | 
 | 
											
												
													
														|  | -        } catch (AuthenticationException e) {
 |  | 
 | 
											
												
													
														|  | -            LOGGER.warn("登录异常:{}", e.getMessage());
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        return token;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    @Override
 |  | 
 | 
											
												
													
														|  | -    public String refreshToken(String token) {
 |  | 
 | 
											
												
													
														|  | -        return jwtTokenUtil.refreshHeadToken(token);
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    //对输入的验证码进行校验
 |  | 
 | 
											
												
													
														|  | -    private boolean verifyAuthCode(String authCode, String telephone){
 |  | 
 | 
											
												
													
														|  | -        if(StringUtils.isEmpty(authCode)){
 |  | 
 | 
											
												
													
														|  | -            return false;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        String realAuthCode = memberCacheService.getAuthCode(telephone);
 |  | 
 | 
											
												
													
														|  | -        return authCode.equals(realAuthCode);
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |  }
 |  |  }
 |