6f132a4645a194d2f717a129428a45b5ead7586d.svn-base 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package org.jeecg.modules.system.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import org.jeecg.common.constant.CommonConstant;
  5. import org.jeecg.common.util.DateUtils;
  6. import org.jeecg.common.util.PasswordUtil;
  7. import org.jeecg.common.util.UUIDGenerator;
  8. import org.jeecg.common.util.oConvertUtils;
  9. import org.jeecg.modules.system.entity.SysRole;
  10. import org.jeecg.modules.system.entity.SysThirdAccount;
  11. import org.jeecg.modules.system.entity.SysUser;
  12. import org.jeecg.modules.system.entity.SysUserRole;
  13. import org.jeecg.modules.system.mapper.SysRoleMapper;
  14. import org.jeecg.modules.system.mapper.SysThirdAccountMapper;
  15. import org.jeecg.modules.system.mapper.SysUserMapper;
  16. import org.jeecg.modules.system.mapper.SysUserRoleMapper;
  17. import org.jeecg.modules.system.model.ThirdLoginModel;
  18. import org.jeecg.modules.system.service.ISysThirdAccountService;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import java.util.Date;
  22. import java.util.List;
  23. /**
  24. * @Description: 第三方登录账号表
  25. * @Author: jeecg-boot
  26. * @Date: 2020-11-17
  27. * @Version: V1.0
  28. */
  29. @Service
  30. public class SysThirdAccountServiceImpl extends ServiceImpl<SysThirdAccountMapper, SysThirdAccount> implements ISysThirdAccountService {
  31. @Autowired
  32. private SysThirdAccountMapper sysThirdAccountMapper;
  33. @Autowired
  34. private SysUserMapper sysUserMapper;
  35. @Autowired
  36. private SysRoleMapper sysRoleMapper;
  37. @Autowired
  38. private SysUserRoleMapper sysUserRoleMapper;
  39. @Override
  40. public void updateThirdUserId(SysUser sysUser,String thirdUserUuid) {
  41. //修改第三方登录账户表使其进行添加用户id
  42. LambdaQueryWrapper<SysThirdAccount> query = new LambdaQueryWrapper<>();
  43. query.eq(SysThirdAccount::getThirdUserUuid,thirdUserUuid);
  44. SysThirdAccount account = sysThirdAccountMapper.selectOne(query);
  45. SysThirdAccount sysThirdAccount = new SysThirdAccount();
  46. sysThirdAccount.setSysUserId(sysUser.getId());
  47. //根据当前用户id和登录方式查询第三方登录表
  48. LambdaQueryWrapper<SysThirdAccount> thirdQuery = new LambdaQueryWrapper<>();
  49. thirdQuery.eq(SysThirdAccount::getSysUserId,sysUser.getId());
  50. thirdQuery.eq(SysThirdAccount::getThirdType,account.getThirdType());
  51. SysThirdAccount sysThirdAccounts = sysThirdAccountMapper.selectOne(thirdQuery);
  52. if(sysThirdAccounts!=null){
  53. sysThirdAccount.setThirdUserId(sysThirdAccounts.getThirdUserId());
  54. sysThirdAccountMapper.deleteById(sysThirdAccounts.getId());
  55. }
  56. //更新用户账户表sys_user_id
  57. sysThirdAccountMapper.update(sysThirdAccount,query);
  58. }
  59. @Override
  60. public SysUser createUser(String phone, String thirdUserUuid) {
  61. //先查询第三方,获取登录方式
  62. LambdaQueryWrapper<SysThirdAccount> query = new LambdaQueryWrapper<>();
  63. query.eq(SysThirdAccount::getThirdUserUuid,thirdUserUuid);
  64. SysThirdAccount account = sysThirdAccountMapper.selectOne(query);
  65. //通过用户名查询数据库是否已存在
  66. SysUser userByName = sysUserMapper.getUserByName(thirdUserUuid);
  67. if(null!=userByName){
  68. //如果账号存在的话,则自动加上一个时间戳
  69. String format = DateUtils.yyyymmddhhmmss.get().format(new Date());
  70. thirdUserUuid = thirdUserUuid + format;
  71. }
  72. //添加用户
  73. SysUser user = new SysUser();
  74. user.setActivitiSync(CommonConstant.ACT_SYNC_0);
  75. user.setDelFlag(CommonConstant.DEL_FLAG_0);
  76. user.setStatus(1);
  77. user.setUsername(thirdUserUuid);
  78. user.setPhone(phone);
  79. //设置初始密码
  80. String salt = oConvertUtils.randomGen(8);
  81. user.setSalt(salt);
  82. String passwordEncode = PasswordUtil.encrypt(user.getUsername(), "123456", salt);
  83. user.setPassword(passwordEncode);
  84. user.setRealname(account.getRealname());
  85. user.setAvatar(account.getAvatar());
  86. String s = this.saveThirdUser(user);
  87. //更新用户第三方账户表的userId
  88. SysThirdAccount sysThirdAccount = new SysThirdAccount();
  89. sysThirdAccount.setSysUserId(s);
  90. sysThirdAccountMapper.update(sysThirdAccount,query);
  91. return user;
  92. }
  93. public String saveThirdUser(SysUser sysUser) {
  94. //保存用户
  95. String userid = UUIDGenerator.generate();
  96. sysUser.setId(userid);
  97. sysUserMapper.insert(sysUser);
  98. //获取第三方角色
  99. SysRole sysRole = sysRoleMapper.selectOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleCode, "third_role"));
  100. //保存用户角色
  101. SysUserRole userRole = new SysUserRole();
  102. userRole.setRoleId(sysRole.getId());
  103. userRole.setUserId(userid);
  104. sysUserRoleMapper.insert(userRole);
  105. return userid;
  106. }
  107. @Override
  108. public SysThirdAccount getOneBySysUserId(String sysUserId, String thirdType) {
  109. LambdaQueryWrapper<SysThirdAccount> queryWrapper = new LambdaQueryWrapper<>();
  110. queryWrapper.eq(SysThirdAccount::getSysUserId, sysUserId);
  111. queryWrapper.eq(SysThirdAccount::getThirdType, thirdType);
  112. return super.getOne(queryWrapper);
  113. }
  114. @Override
  115. public SysThirdAccount getOneByThirdUserId(String thirdUserId, String thirdType) {
  116. LambdaQueryWrapper<SysThirdAccount> queryWrapper = new LambdaQueryWrapper<>();
  117. queryWrapper.eq(SysThirdAccount::getThirdUserId, thirdUserId);
  118. queryWrapper.eq(SysThirdAccount::getThirdType, thirdType);
  119. return super.getOne(queryWrapper);
  120. }
  121. @Override
  122. public List<SysThirdAccount> listThirdUserIdByUsername(String[] sysUsernameArr, String thirdType) {
  123. return sysThirdAccountMapper.selectThirdIdsByUsername(sysUsernameArr, thirdType);
  124. }
  125. @Override
  126. public SysThirdAccount saveThirdUser(ThirdLoginModel tlm) {
  127. SysThirdAccount user = new SysThirdAccount();
  128. user.setDelFlag(CommonConstant.DEL_FLAG_0);
  129. user.setStatus(1);
  130. user.setThirdType(tlm.getSource());
  131. user.setAvatar(tlm.getAvatar());
  132. user.setRealname(tlm.getUsername());
  133. user.setThirdUserUuid(tlm.getUuid());
  134. user.setThirdUserId(tlm.getUuid());
  135. super.save(user);
  136. return user;
  137. }
  138. }