| | |
| | | package com.xiaopeng.account.service.impl; |
| | | |
| | | import cn.hutool.core.util.DesensitizedUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.xiaopeng.account.constant.I18nKeyConstant; |
| | |
| | | import com.xiaopeng.api.vo.account.LoginUser; |
| | | import com.xiaopeng.common.core.constant.UserConstants; |
| | | import com.xiaopeng.common.core.exception.ServiceException; |
| | | import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil; |
| | | import com.xiaopeng.common.core.utils.StringUtils; |
| | | import com.xiaopeng.common.core.web.page.PageInfo; |
| | | import com.xiaopeng.common.security.service.TokenService; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.Serializable; |
| | | import java.util.ArrayList; |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | @Override |
| | | public SysUser selectUserByUserName(String userName) |
| | | { |
| | | return userMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserAccount, userName).last("limit 1")); |
| | | SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserAccount, userName).last("limit 1")); |
| | | decryptPhone(user); |
| | | return user; |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public SysUser selectUserById(Long userId) { |
| | | return userMapper.selectUserById(userId); |
| | | SysUser user = userMapper.selectUserById(userId); |
| | | decryptPhone(user); |
| | | return user; |
| | | } |
| | | |
| | | /** |
| | |
| | | @Override |
| | | public boolean checkPhoneUnique(SysUser user) { |
| | | Long userId = StringUtils.isNull(user.getId()) ? -1L : user.getId(); |
| | | SysUser info = userMapper.checkPhoneUnique(user.getPhoneNumber()); |
| | | SysUser info = lambdaQuery() |
| | | .in(SysUser::getPhoneNumber, SensitiveDataCryptoUtil.queryValues(user.getPhoneNumber())) |
| | | .last("limit 1") |
| | | .one(); |
| | | if (StringUtils.isNotNull(info)) { |
| | | return UserConstants.NOT_UNIQUE; |
| | | } |
| | |
| | | // insertUserRole(user); |
| | | user.setCreateBy(tokenService.getLoginUser().getUsername()); |
| | | user.setUpdateBy(tokenService.getLoginUser().getUsername()); |
| | | encryptPhone(user); |
| | | try { |
| | | return userMapper.insert(user); |
| | | } finally { |
| | | decryptPhone(user); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | @Transactional |
| | | @ShardingSphereTransactionType(TransactionType.BASE) |
| | | public int updateUser(SysUser user) { |
| | | encryptPhone(user); |
| | | try { |
| | | return userMapper.updateUser(user); |
| | | } finally { |
| | | decryptPhone(user); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public int updateUserStatus(SysUser user) { |
| | | encryptPhone(user); |
| | | try { |
| | | return userMapper.updateUser(user); |
| | | } finally { |
| | | decryptPhone(user); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public int resetPwd(SysUser user) { |
| | | encryptPhone(user); |
| | | try { |
| | | return userMapper.updateUser(user); |
| | | } finally { |
| | | decryptPhone(user); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | @Override |
| | | public PageInfo<SysUser> getList(PageInfo<SysUser> pageInfo, SysUserListQuery sysUserListQuery) { |
| | | sysUserListQuery.setPhoneNumberQueryValues(SensitiveDataCryptoUtil.queryValues(sysUserListQuery.getPhoneNumber())); |
| | | PageInfo<SysUser> page = userMapper.getList(pageInfo, sysUserListQuery); |
| | | decryptPhones(page.getRecords()); |
| | | return page; |
| | | } |
| | | |
| | |
| | | public boolean resetUserPwd(Long id, String newPassword) { |
| | | return lambdaUpdate().eq(SysUser::getId, id).set(SysUser::getPassword, newPassword).update(); |
| | | } |
| | | |
| | | @Override |
| | | public boolean save(SysUser entity) { |
| | | encryptPhone(entity); |
| | | try { |
| | | return super.save(entity); |
| | | } finally { |
| | | decryptPhone(entity); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean updateById(SysUser entity) { |
| | | encryptPhone(entity); |
| | | try { |
| | | return super.updateById(entity); |
| | | } finally { |
| | | decryptPhone(entity); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public SysUser getById(Serializable id) { |
| | | SysUser user = super.getById(id); |
| | | decryptPhone(user); |
| | | return user; |
| | | } |
| | | |
| | | @Override |
| | | public SysUser getOne(Wrapper<SysUser> queryWrapper) { |
| | | SysUser user = super.getOne(queryWrapper); |
| | | decryptPhone(user); |
| | | return user; |
| | | } |
| | | |
| | | @Override |
| | | public List<SysUser> list() { |
| | | List<SysUser> list = super.list(); |
| | | decryptPhones(list); |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public List<SysUser> list(Wrapper<SysUser> queryWrapper) { |
| | | List<SysUser> list = super.list(queryWrapper); |
| | | decryptPhones(list); |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public List<SysUser> listByIds(Collection<? extends Serializable> idList) { |
| | | List<SysUser> list = super.listByIds(idList); |
| | | decryptPhones(list); |
| | | return list; |
| | | } |
| | | |
| | | private void encryptPhone(SysUser user) { |
| | | if (user != null) { |
| | | user.setPhoneNumber(SensitiveDataCryptoUtil.encrypt(user.getPhoneNumber())); |
| | | } |
| | | } |
| | | |
| | | private void decryptPhone(SysUser user) { |
| | | if (user != null) { |
| | | user.setPhoneNumber(SensitiveDataCryptoUtil.decryptIfPossible(user.getPhoneNumber())); |
| | | } |
| | | } |
| | | |
| | | private void decryptPhones(List<SysUser> users) { |
| | | if (users != null) { |
| | | users.forEach(this::decryptPhone); |
| | | } |
| | | } |
| | | } |