| | |
| | | package cn.gistack.system.user.service.impl; |
| | | |
| | | |
| | | import cn.gistack.pwd.dto.CBCResultDTO; |
| | | import cn.gistack.pwd.dto.ResultDTO; |
| | | import cn.gistack.pwd.fegin.IPwdClient; |
| | | import cn.gistack.system.cache.DictCache; |
| | | import cn.gistack.system.cache.ParamCache; |
| | | import cn.gistack.system.cache.SysCache; |
| | |
| | | import cn.gistack.system.user.service.IUserDeptService; |
| | | import cn.gistack.system.user.service.IUserOauthService; |
| | | import cn.gistack.system.user.service.IUserService; |
| | | import cn.gistack.system.user.supo.UserSUPO; |
| | | import cn.gistack.system.user.vo.UserVO; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | private final ISysClient sysClient; |
| | | private final BladeTenantProperties tenantProperties; |
| | | |
| | | private final IPwdClient pwdClient; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean submit(User user) { |
| | |
| | | return save(user) && submitUserDept(user); |
| | | } |
| | | |
| | | public Boolean encryptUserInfo(User user){ |
| | | UserSUPO userSUPO = new UserSUPO(); |
| | | userSUPO.setPhone(user.getPhone()); |
| | | userSUPO.setRoleId(user.getRoleId()); |
| | | userSUPO.setDeptId(user.getDeptId()); |
| | | |
| | | String message = JSONObject.toJSONString(userSUPO); |
| | | |
| | | R<CBCResultDTO> cbcRres = pwdClient.getCBCMacEncipher(message); |
| | | if (cbcRres.getCode() != 200){ |
| | | return false; |
| | | } |
| | | CBCResultDTO data = cbcRres.getData(); |
| | | String keyIndex = data.getKeyIndex(); |
| | | String maced = data.getMaced(); |
| | | String sm4IV = data.getSm4IV(); |
| | | |
| | | user.setKeyindexs(keyIndex); |
| | | user.setMaced(maced); |
| | | user.setSm4iv(sm4IV); |
| | | |
| | | R<ResultDTO> encryptRes = pwdClient.getEncrypt(sm4IV, keyIndex, message); |
| | | if (encryptRes.getCode() != 200){ |
| | | return false; |
| | | } |
| | | user.setEncdata(encryptRes.getData().getData()); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public boolean save(User entity) { |
| | | //对User进行加密 |
| | | encryptUserInfo(entity); |
| | | return super.save(entity); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean updateUser(User user) { |
| | |
| | | return updateById(user); |
| | | } |
| | | |
| | | @Override |
| | | public boolean updateById(User entity) { |
| | | |
| | | encryptUserInfo(entity); |
| | | |
| | | return super.updateById(entity); |
| | | } |
| | | |
| | | private boolean submitUserDept(User user) { |
| | | List<Long> deptIdList = Func.toLongList(user.getDeptId()); |
| | | List<UserDept> userDeptList = new ArrayList<>(); |
| | |
| | | return userDeptService.saveBatch(userDeptList); |
| | | } |
| | | |
| | | /** |
| | | * 自定义分页查询 |
| | | * @param page |
| | | * @param user |
| | | * @param deptId |
| | | * @param tenantId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public IPage<User> selectUserPage(IPage<User> page, User user, Long deptId, String tenantId) { |
| | | List<Long> deptIdList = SysCache.getDeptChildIds(deptId); |
| | | public IPage<UserVO> selectUserPage(IPage<UserVO> page, UserVO user, Long deptId, String tenantId) { |
| | | List<Long> deptIdList = new ArrayList<>(); |
| | | if (null!=user.getIsDept()) { |
| | | deptIdList.add(deptId); |
| | | }else { |
| | | deptIdList = SysCache.getDeptChildIds(deptId); |
| | | } |
| | | return page.setRecords(baseMapper.selectUserPage(page, user, deptIdList, tenantId)); |
| | | } |
| | | |
| | | @Override |
| | | public List<UserVO> getAllUser(UserVO user, Long deptId, String tenantId) { |
| | | List<Long> deptIdList = new ArrayList<>(); |
| | | if (null!=user.getIsDept()) { |
| | | deptIdList.add(deptId); |
| | | }else { |
| | | deptIdList = SysCache.getDeptChildIds(deptId); |
| | | } |
| | | return baseMapper.getAllUser(user, deptIdList, tenantId); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public UserInfo userInfo(String tenantId, String account, UserEnum userEnum) { |
| | | User user = baseMapper.getUser(tenantId, account); |
| | | return buildUserInfo(user, userEnum); |
| | | List<User> list = baseMapper.selectUserByPhoneOrAccount(tenantId, account); |
| | | if (list.size()>0){ |
| | | return buildUserInfo(list.get(0), userEnum); |
| | | } |
| | | return buildUserInfo(null, userEnum); |
| | | } |
| | | |
| | | private UserInfo buildUserInfo(User user) { |
| | |
| | | return baseMapper.customizeGetList(user); |
| | | } |
| | | |
| | | /** |
| | | * 根据手机号码查询用户信息 |
| | | * @param tenantId |
| | | * @param phone |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<User> userInfoByPhone(String tenantId, String phone) { |
| | | return list(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getPhone, phone).eq(User::getIsDeleted, BladeConstant.DB_NOT_DELETED)); |
| | | } |
| | | |
| | | /** |
| | | * 根据手机号码或者账户查询用户信息 |
| | | * @param tenantId 租户id |
| | | * @param key 账户或者手机号 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<User> userInfoByPhoneOrAccount(String tenantId, String key) { |
| | | return baseMapper.selectUserByPhoneOrAccount(tenantId,key); |
| | | } |
| | | |
| | | @Override |
| | | public List<User> getUserByPhoneIds(String phoneIds) { |
| | | return baseMapper.getUserByPhoneIds(phoneIds); |
| | | } |
| | | } |