|  | @@ -0,0 +1,138 @@
 | 
	
		
			
				|  |  | +package com.hwrj.cloud.portal.service.impl;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.portal.domain.MemberDetails;
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.portal.domain.UmsMemberPlaformDo;
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.portal.mapper.UmsMemberMapper;
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.portal.mapper.UmsMemberPlatformMapper;
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.portal.model.UmsMember;
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.portal.model.UmsMemberExample;
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.portal.model.UmsMemberPlatform;
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.portal.model.UmsMemberPlatformExample;
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.portal.service.UmsMemberCacheService;
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.portal.service.UmsMemberPlatformService;
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.portal.service.UmsMemberService;
 | 
	
		
			
				|  |  | +import com.hwrj.cloud.security.util.JwtTokenUtil;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Value;
 | 
	
		
			
				|  |  | +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 | 
	
		
			
				|  |  | +import org.springframework.security.core.context.SecurityContextHolder;
 | 
	
		
			
				|  |  | +import org.springframework.security.core.userdetails.UserDetails;
 | 
	
		
			
				|  |  | +import org.springframework.security.core.userdetails.UsernameNotFoundException;
 | 
	
		
			
				|  |  | +import org.springframework.security.crypto.password.PasswordEncoder;
 | 
	
		
			
				|  |  | +import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +import org.springframework.util.StringUtils;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.util.Date;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +@Service
 | 
	
		
			
				|  |  | +public class UmsMemberPlatformServiceImpl implements UmsMemberPlatformService {
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private UmsMemberPlatformMapper umsMemberPlatformMapper;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private UmsMemberMapper umsMemberMapper;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private UmsMemberCacheService memberCacheService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private PasswordEncoder passwordEncoder;
 | 
	
		
			
				|  |  | +    @Value("${forest.wx.password}")
 | 
	
		
			
				|  |  | +    private String password;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private JwtTokenUtil jwtTokenUtil;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private UmsMemberService umsMemberService;
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public String addUmsMemberPlatformService(UmsMemberPlatform umsMemberPlatform) {
 | 
	
		
			
				|  |  | +        String token = null;
 | 
	
		
			
				|  |  | +        UmsMemberPlatformExample example= new UmsMemberPlatformExample();
 | 
	
		
			
				|  |  | +        UmsMemberPlatformExample.Criteria criteria = example.createCriteria();
 | 
	
		
			
				|  |  | +        criteria.andOpenidEqualTo(umsMemberPlatform.getOpenid());
 | 
	
		
			
				|  |  | +        if (!StringUtils.isEmpty(umsMemberPlatform.getUnionid())){
 | 
	
		
			
				|  |  | +            criteria.andUnionidEqualTo(umsMemberPlatform.getUnionid());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        List<UmsMemberPlatform> umsMemberPlatforms = umsMemberPlatformMapper.selectByExample(example);
 | 
	
		
			
				|  |  | +        if (umsMemberPlatforms != null && umsMemberPlatforms.size()>0){
 | 
	
		
			
				|  |  | +            UmsMemberPlatform umsMemberPlatform1 = umsMemberPlatforms.get(0);
 | 
	
		
			
				|  |  | +            UmsMember umsMember1 = insetOrGetMemberPlatform(umsMemberPlatform1);
 | 
	
		
			
				|  |  | +            UserDetails userDetails = new MemberDetails(umsMember1);
 | 
	
		
			
				|  |  | +            UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            SecurityContextHolder.getContext().setAuthentication(authentication);
 | 
	
		
			
				|  |  | +            token = jwtTokenUtil.generateToken(userDetails);
 | 
	
		
			
				|  |  | +            memberCacheService.setToken(token,userDetails.getUsername());
 | 
	
		
			
				|  |  | +        }else {
 | 
	
		
			
				|  |  | +            int insert = umsMemberPlatformMapper.insert(umsMemberPlatform);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (insert>0){
 | 
	
		
			
				|  |  | +                UmsMemberPlatformExample example1= new UmsMemberPlatformExample();
 | 
	
		
			
				|  |  | +                UmsMemberPlatformExample.Criteria criteria1 = example.createCriteria();
 | 
	
		
			
				|  |  | +                criteria1.andOpenidEqualTo(umsMemberPlatform.getOpenid());
 | 
	
		
			
				|  |  | +                if (!StringUtils.isEmpty(umsMemberPlatform.getUnionid())){
 | 
	
		
			
				|  |  | +                    criteria1.andUnionidEqualTo(umsMemberPlatform.getUnionid());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                List<UmsMemberPlatform> umsMemberPlatforms1 = umsMemberPlatformMapper.selectByExample(example);
 | 
	
		
			
				|  |  | +                UmsMemberPlatform umsMemberPlatform1 = umsMemberPlatforms1.get(0);
 | 
	
		
			
				|  |  | +                UmsMember umsMember1 = insetOrGetMemberPlatform(umsMemberPlatform1);
 | 
	
		
			
				|  |  | +                UserDetails userDetails = new MemberDetails(umsMember1);
 | 
	
		
			
				|  |  | +                UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                SecurityContextHolder.getContext().setAuthentication(authentication);
 | 
	
		
			
				|  |  | +                token = jwtTokenUtil.generateToken(userDetails);
 | 
	
		
			
				|  |  | +                memberCacheService.setToken(token,userDetails.getUsername());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return token;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    public UmsMemberPlaformDo loadUmsMemberPlatform(UmsMemberPlatform umsMemberPlatform){
 | 
	
		
			
				|  |  | +        if (umsMemberPlatform != null){
 | 
	
		
			
				|  |  | +            return new UmsMemberPlaformDo(umsMemberPlatform);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        throw new UsernameNotFoundException("微信登录失败");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 添加用户并获取返回id
 | 
	
		
			
				|  |  | +     * @param umsMemberPlatform
 | 
	
		
			
				|  |  | +     * @return
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    public UmsMember insetOrGetMemberPlatform(UmsMemberPlatform umsMemberPlatform){
 | 
	
		
			
				|  |  | +        UmsMember umsMember = new UmsMember();
 | 
	
		
			
				|  |  | +        if (umsMemberPlatform.getMemberId()==null){
 | 
	
		
			
				|  |  | +            umsMember.setNickname(umsMemberPlatform.getNickname());
 | 
	
		
			
				|  |  | +            umsMember.setUsername(umsMemberPlatform.getOpenid());
 | 
	
		
			
				|  |  | +            umsMember.setPassword(passwordEncoder.encode(password));
 | 
	
		
			
				|  |  | +            umsMember.setMemberLevelId(4L);
 | 
	
		
			
				|  |  | +            umsMember.setStatus(1);
 | 
	
		
			
				|  |  | +            umsMember.setCreateTime(new Date());
 | 
	
		
			
				|  |  | +            umsMember.setIcon(umsMemberPlatform.getHeadimgurl());
 | 
	
		
			
				|  |  | +            int i = umsMemberMapper.insertSelective(umsMember);
 | 
	
		
			
				|  |  | +            UmsMemberExample example = new UmsMemberExample();
 | 
	
		
			
				|  |  | +            UmsMemberExample.Criteria criteria = example.createCriteria();
 | 
	
		
			
				|  |  | +            criteria.andUsernameEqualTo(umsMemberPlatform.getOpenid());
 | 
	
		
			
				|  |  | +            List<UmsMember> umsMembers = umsMemberMapper.selectByExample(example);
 | 
	
		
			
				|  |  | +            if (umsMembers==null||umsMembers.size()<1){
 | 
	
		
			
				|  |  | +                throw new RuntimeException("登录失败003");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            UmsMember ums = umsMembers.get(0);
 | 
	
		
			
				|  |  | +            UmsMemberPlatform ff = new UmsMemberPlatform();
 | 
	
		
			
				|  |  | +            ff.setId(umsMemberPlatform.getId());
 | 
	
		
			
				|  |  | +            umsMemberPlatform.setMemberId(ums.getId());
 | 
	
		
			
				|  |  | +            ff.setMemberId(ums.getId());
 | 
	
		
			
				|  |  | +            umsMemberPlatformMapper.updateByPrimaryKeySelective(ff);
 | 
	
		
			
				|  |  | +            return ums;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        }else {
 | 
	
		
			
				|  |  | +            UmsMember umsMember1 = umsMemberMapper.selectByPrimaryKey(umsMemberPlatform.getMemberId());
 | 
	
		
			
				|  |  | +            return umsMember1;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |