123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- package org.jeecg.modules.system.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import org.jeecg.common.constant.CommonConstant;
- import org.jeecg.common.util.DateUtils;
- import org.jeecg.common.util.PasswordUtil;
- import org.jeecg.common.util.UUIDGenerator;
- import org.jeecg.common.util.oConvertUtils;
- import org.jeecg.modules.system.entity.SysRole;
- import org.jeecg.modules.system.entity.SysThirdAccount;
- import org.jeecg.modules.system.entity.SysUser;
- import org.jeecg.modules.system.entity.SysUserRole;
- import org.jeecg.modules.system.mapper.SysRoleMapper;
- import org.jeecg.modules.system.mapper.SysThirdAccountMapper;
- import org.jeecg.modules.system.mapper.SysUserMapper;
- import org.jeecg.modules.system.mapper.SysUserRoleMapper;
- import org.jeecg.modules.system.model.ThirdLoginModel;
- import org.jeecg.modules.system.service.ISysThirdAccountService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.Date;
- import java.util.List;
- /**
- * @Description: 第三方登录账号表
- * @Author: jeecg-boot
- * @Date: 2020-11-17
- * @Version: V1.0
- */
- @Service
- public class SysThirdAccountServiceImpl extends ServiceImpl<SysThirdAccountMapper, SysThirdAccount> implements ISysThirdAccountService {
-
- @Autowired
- private SysThirdAccountMapper sysThirdAccountMapper;
-
- @Autowired
- private SysUserMapper sysUserMapper;
- @Autowired
- private SysRoleMapper sysRoleMapper;
- @Autowired
- private SysUserRoleMapper sysUserRoleMapper;
-
- @Override
- public void updateThirdUserId(SysUser sysUser,String thirdUserUuid) {
- //修改第三方登录账户表使其进行添加用户id
- LambdaQueryWrapper<SysThirdAccount> query = new LambdaQueryWrapper<>();
- query.eq(SysThirdAccount::getThirdUserUuid,thirdUserUuid);
- SysThirdAccount account = sysThirdAccountMapper.selectOne(query);
- SysThirdAccount sysThirdAccount = new SysThirdAccount();
- sysThirdAccount.setSysUserId(sysUser.getId());
- //根据当前用户id和登录方式查询第三方登录表
- LambdaQueryWrapper<SysThirdAccount> thirdQuery = new LambdaQueryWrapper<>();
- thirdQuery.eq(SysThirdAccount::getSysUserId,sysUser.getId());
- thirdQuery.eq(SysThirdAccount::getThirdType,account.getThirdType());
- SysThirdAccount sysThirdAccounts = sysThirdAccountMapper.selectOne(thirdQuery);
- if(sysThirdAccounts!=null){
- sysThirdAccount.setThirdUserId(sysThirdAccounts.getThirdUserId());
- sysThirdAccountMapper.deleteById(sysThirdAccounts.getId());
- }
- //更新用户账户表sys_user_id
- sysThirdAccountMapper.update(sysThirdAccount,query);
- }
-
- @Override
- public SysUser createUser(String phone, String thirdUserUuid) {
- //先查询第三方,获取登录方式
- LambdaQueryWrapper<SysThirdAccount> query = new LambdaQueryWrapper<>();
- query.eq(SysThirdAccount::getThirdUserUuid,thirdUserUuid);
- SysThirdAccount account = sysThirdAccountMapper.selectOne(query);
- //通过用户名查询数据库是否已存在
- SysUser userByName = sysUserMapper.getUserByName(thirdUserUuid);
- if(null!=userByName){
- //如果账号存在的话,则自动加上一个时间戳
- String format = DateUtils.yyyymmddhhmmss.get().format(new Date());
- thirdUserUuid = thirdUserUuid + format;
- }
- //添加用户
- SysUser user = new SysUser();
- user.setActivitiSync(CommonConstant.ACT_SYNC_0);
- user.setDelFlag(CommonConstant.DEL_FLAG_0);
- user.setStatus(1);
- user.setUsername(thirdUserUuid);
- user.setPhone(phone);
- //设置初始密码
- String salt = oConvertUtils.randomGen(8);
- user.setSalt(salt);
- String passwordEncode = PasswordUtil.encrypt(user.getUsername(), "123456", salt);
- user.setPassword(passwordEncode);
- user.setRealname(account.getRealname());
- user.setAvatar(account.getAvatar());
- String s = this.saveThirdUser(user);
- //更新用户第三方账户表的userId
- SysThirdAccount sysThirdAccount = new SysThirdAccount();
- sysThirdAccount.setSysUserId(s);
- sysThirdAccountMapper.update(sysThirdAccount,query);
- return user;
- }
-
- public String saveThirdUser(SysUser sysUser) {
- //保存用户
- String userid = UUIDGenerator.generate();
- sysUser.setId(userid);
- sysUserMapper.insert(sysUser);
- //获取第三方角色
- SysRole sysRole = sysRoleMapper.selectOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleCode, "third_role"));
- //保存用户角色
- SysUserRole userRole = new SysUserRole();
- userRole.setRoleId(sysRole.getId());
- userRole.setUserId(userid);
- sysUserRoleMapper.insert(userRole);
- return userid;
- }
- @Override
- public SysThirdAccount getOneBySysUserId(String sysUserId, String thirdType) {
- LambdaQueryWrapper<SysThirdAccount> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(SysThirdAccount::getSysUserId, sysUserId);
- queryWrapper.eq(SysThirdAccount::getThirdType, thirdType);
- return super.getOne(queryWrapper);
- }
- @Override
- public SysThirdAccount getOneByThirdUserId(String thirdUserId, String thirdType) {
- LambdaQueryWrapper<SysThirdAccount> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(SysThirdAccount::getThirdUserId, thirdUserId);
- queryWrapper.eq(SysThirdAccount::getThirdType, thirdType);
- return super.getOne(queryWrapper);
- }
- @Override
- public List<SysThirdAccount> listThirdUserIdByUsername(String[] sysUsernameArr, String thirdType) {
- return sysThirdAccountMapper.selectThirdIdsByUsername(sysUsernameArr, thirdType);
- }
- @Override
- public SysThirdAccount saveThirdUser(ThirdLoginModel tlm) {
- SysThirdAccount user = new SysThirdAccount();
- user.setDelFlag(CommonConstant.DEL_FLAG_0);
- user.setStatus(1);
- user.setThirdType(tlm.getSource());
- user.setAvatar(tlm.getAvatar());
- user.setRealname(tlm.getUsername());
- user.setThirdUserUuid(tlm.getUuid());
- user.setThirdUserId(tlm.getUuid());
- super.save(user);
- return user;
- }
- }
|