123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- package com.smcic.api.admin.service.impl;
- import cn.hutool.crypto.SecureUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.smcic.api.admin.dto.LoginDto;
- import com.smcic.api.admin.dto.NamePageDTO;
- import com.smcic.api.admin.dto.TokenDto;
- import com.smcic.api.admin.entity.AdminUserRole;
- import com.smcic.api.admin.entity.AdminUsers;
- import com.smcic.api.admin.mapper.AdminUsersMapper;
- import com.smcic.api.admin.service.IAdminUsersService;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.smcic.core.advice.APIException;
- import com.smcic.core.auth.AESUtil;
- import com.smcic.core.auth.HttpContextUtil;
- import org.apache.http.util.TextUtils;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.time.LocalDateTime;
- import java.util.Optional;
- import java.util.stream.Collectors;
- /**
- * <p>
- * 系统管理员用户 服务实现类
- * </p>
- *
- * @author syj
- * @since 2023-11-16
- */
- @Service
- public class AdminUsersServiceImpl extends ServiceImpl<AdminUsersMapper, AdminUsers> implements IAdminUsersService {
- @Resource
- private AdminUserRoleServiceImpl adminUserRoleService;
- public Page<AdminUsers> usersPage(NamePageDTO namePageDTO) {
- LambdaQueryWrapper<AdminUsers> lambdaQueryWrapper = Wrappers.lambdaQuery();
- Page<AdminUsers> adminUsers = baseMapper.selectPage(new Page<>(namePageDTO.getPage(), namePageDTO.getPageSize()),
- lambdaQueryWrapper.like(!TextUtils.isEmpty(namePageDTO.getName()), AdminUsers::getName, namePageDTO.getName())
- .eq(!TextUtils.isEmpty(namePageDTO.getPhone()), AdminUsers::getPhone, namePageDTO.getPhone())
- );
- if (adminUsers.getTotal() > 0){
- adminUsers.setRecords(adminUsers.getRecords().stream().peek(user -> {
- user.setAdminRoles(adminUserRoleService.getRoles(user.getUserId()));
- }).collect(Collectors.toList()));
- }
- return adminUsers;
- }
- @Transactional
- public void create(AdminUsers adminUsers) {
- if(lambdaQuery().eq(AdminUsers::getPhone, adminUsers.getPhone()).count() > 0){
- throw new APIException("手机号已存在");
- }
- if(lambdaQuery().eq(AdminUsers::getName, adminUsers.getName()).count() > 0){
- throw new APIException("用户名已存在");
- }
- adminUsers.setPassword(SecureUtil.sha256(adminUsers.getPassword()));
- adminUsers.setRegisterTime(LocalDateTime.now());
- save(adminUsers);
- adminUserRoleService.saveBatch(adminUsers.getAdminRoles().stream().map(adminRole -> {
- AdminUserRole adminUserRole = new AdminUserRole();
- adminUserRole.setRoleId(adminRole.getRoleId());
- adminUserRole.setUserId(adminUsers.getUserId());
- return adminUserRole;
- }).collect(Collectors.toList()));
- }
- @Transactional
- public void modify(AdminUsers adminUsers) {
- AdminUsers user = getById(adminUsers.getUserId());
- if (null == user){
- throw new APIException("用户不存在");
- }
- if (!adminUsers.getAdminRoles().isEmpty()){
- LambdaQueryWrapper<AdminUserRole> lambdaQueryWrapper = Wrappers.lambdaQuery();
- adminUserRoleService.remove(lambdaQueryWrapper.eq(AdminUserRole::getUserId, adminUsers.getUserId()));
- adminUserRoleService.saveBatch(adminUsers.getAdminRoles().stream().map(adminRole -> {
- AdminUserRole adminUserRole = new AdminUserRole();
- adminUserRole.setRoleId(adminRole.getRoleId());
- adminUserRole.setUserId(adminUsers.getUserId());
- return adminUserRole;
- }).collect(Collectors.toList()));
- }
- if(!TextUtils.isEmpty(adminUsers.getPassword())){
- adminUsers.setPassword(user.getPassword());
- }
- updateById(adminUsers);
- }
- @Transactional
- public void delete(Long userId) {
- adminUserRoleService.remove(adminUserRoleService.lambdaQuery().eq(AdminUserRole::getUserId, userId));
- removeById(userId);
- }
- public TokenDto login(LoginDto dto) {
- Optional<AdminUsers> adminUsers = lambdaQuery().and(wq -> wq.eq(AdminUsers::getName, dto.getLoginName()).or().eq(AdminUsers::getPhone, dto.getLoginName()))
- .eq(AdminUsers::getPassword, dto.getLoginPassword())
- .oneOpt();
- if (!adminUsers.isPresent()) {
- throw new APIException("用户不存在");
- }
- Long userId = adminUsers.get().getUserId();
- String token = AESUtil.encryptHex(userId.toString());
- TokenDto tokenDto = new TokenDto();
- tokenDto.setToken(token);
- return tokenDto;
- }
- public void logout(){
- Optional<String> token = HttpContextUtil.getToken();
- if (!token.isPresent()) {
- throw new APIException("获取token异常");
- }
- String userId = AESUtil.decryptStr(token.get());
- AdminUsers user = this.lambdaQuery().eq(AdminUsers::getUserId, Long.parseLong(userId)).one();
- if (user == null) {
- throw new RuntimeException("用户不存在");
- }
- user.setLogoutTime(LocalDateTime.now());
- updateById(user);
- }
- }
|