| 
					
				 | 
			
			
				@@ -1,5 +1,8 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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.mbg.mapper.UmsMemberLevelMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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.service.UmsMemberCacheService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.portal.service.UmsMemberService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.macro.mall.security.util.JwtTokenUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -39,20 +41,15 @@ import java.util.Random; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class UmsMemberServiceImpl implements UmsMemberService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private static final Logger LOGGER = LoggerFactory.getLogger(UmsMemberServiceImpl.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private PasswordEncoder passwordEncoder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private JwtTokenUtil jwtTokenUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private UmsMemberMapper memberMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private UmsMemberLevelMapper memberLevelMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public UmsMember getByUsername(String username) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -75,72 +72,34 @@ public class UmsMemberServiceImpl implements UmsMemberService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @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 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -160,37 +119,4 @@ public class UmsMemberServiceImpl implements UmsMemberService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |