|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|