package com.hdward.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hdward.domain.ResponseResult;
import com.hdward.domain.dto.UserQueryDTO;
import com.hdward.domain.vo.UserVo;
import com.hdward.emums.AppHttpCodeEnum;
import com.hdward.entity.User;

import com.hdward.mapper.UserMapper;
import com.hdward.service.UserService;
import com.hdward.utils.BeanCopyUtils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {


    @Autowired
    private UserService userService;

    //添加角色
    @PostMapping("/addUser")
    public ResponseResult addUser(@RequestBody User user) {
        if (userService.addUser(user)) {
            return ResponseResult.okResult();
        } else {
            return ResponseResult.errorResult(AppHttpCodeEnum.USERNAME_EXIST);
        }
    }

    //删除角色:批量删除
    @PostMapping("/deleteUser")
    public ResponseResult deleteUser(@RequestBody List<Long> ids) {
        if (userService.deleteUser(ids)){
            return ResponseResult.okResult();
        }else {
            return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR);
        }
    }
    //编辑角色
    @PostMapping("/updateUser")
    public ResponseResult updateUser(@RequestBody User user) {
        if (userService.updateUser(user)) {
            return ResponseResult.okResult();
        } else {
            return ResponseResult.errorResult(AppHttpCodeEnum.SYSTEM_ERROR);
        }
    }
    //分页查询:根据用户名查询角色如果不输入用户名则查询所有角色
    @GetMapping("/getUserList")
    public Page<User> getUserList(@RequestBody UserQueryDTO queryDTO){
        return userService.getUserList(queryDTO);
    }

}

package com.hdward.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hdward.domain.dto.UserQueryDTO;
import com.hdward.entity.User;

import java.util.List;

public interface UserService extends IService<User> {

    boolean addUser(User user);

    boolean deleteUser(List<Long> ids);

    boolean updateUser(User user);

    Page<User> getUserList(UserQueryDTO queryDTO);
}

package com.hdward.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hdward.domain.dto.UserQueryDTO;
import com.hdward.entity.User;
import com.hdward.mapper.UserMapper;
import com.hdward.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Collections;
import java.util.Date;
import java.util.List;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    @Autowired
    private  UserMapper userMapper;
    @Override
    public boolean addUser(User user) {
        // 校验用户姓名是否为空
        if (user.getUserName() == null || user.getUserName().trim().isEmpty()) {
            return false; // 用户名不能为空
        }

        // 校验角色(admin)是否为空
        if (user.getAdmin() == null) {
            return false; // 角色不能为空
        }

        // 校验角色值是否有效(True 表示管理员,False 表示普通成员)
        if (!user.getAdmin().equals(Boolean.TRUE) && !user.getAdmin().equals(Boolean.FALSE)) {
            return false; // 角色无效
        }

        // 检查用户名是否已存在
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_name", user.getUserName());
        User existingUser = userMapper.selectOne(queryWrapper);

        // 如果用户名已存在,返回false
        if (existingUser != null) {
            return false; // 用户已存在
        }

        // 设置创建时间和修改时间
        //user.setCreateAt(new Date());
        //user.setModifiedAt(new Date());

        // 执行插入操作
        int rowsAffected = userMapper.insert(user);

        // 返回插入结果
        return rowsAffected > 0;
    }

    @Override
    public boolean deleteUser(List<Long> ids) {
        // 使用CollectionUtils.isEmpty()判断ids是否为空
        if (CollectionUtils.isEmpty(ids)) {
            return false; // 如果ids为空或空列表,直接返回false
        }

        // 使用MyBatis-Plus提供的removeByIds方法批量删除
        int rowsAffected = userMapper.deleteBatchIds(ids);

        // 返回操作结果,判断受影响的行数是否大于0
        return rowsAffected > 0;
    }

    @Override
    public boolean updateUser(User user) {
        // 校验用户ID是否存在
        if (user.getId() == null) {
            return false; // 用户ID不能为空
        }

        // 校验角色(admin)是否为空
        if (user.getAdmin() == null) {
            return false; // 角色不能为空
        }

        // 校验角色值是否有效(True 表示管理员,False 表示普通成员)
        if (!user.getAdmin().equals(Boolean.TRUE) && !user.getAdmin().equals(Boolean.FALSE)) {
            return false; // 角色无效
        }

        // 校验用户是否存在
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id", user.getId());
        User existingUser = userMapper.selectOne(queryWrapper);

        // 如果用户不存在,返回false
        if (existingUser == null) {
            return false; // 用户不存在
        }

        // 设置修改时间
        //user.setModifiedAt(new Date());

        // 执行更新操作
        int rowsAffected = userMapper.updateById(user);

        // 返回操作结果
        return rowsAffected > 0;
    }

    @Override
    public  Page<User> getUserList(UserQueryDTO queryDTO) {
        // 创建分页对象
        Page<User> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize());

        // 创建查询条件
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();

        // 根据userName查询
        if (queryDTO.getUserName() != null && !queryDTO.getUserName().trim().isEmpty()) {
            queryWrapper.like("user_name", queryDTO.getUserName());
        }

        // 根据admin查询(0: 普通成员, 1: 管理员)
        if (queryDTO.getAdmin() != null) {
            queryWrapper.eq("admin", queryDTO.getAdmin());
        }

        // 根据department查询
        if (queryDTO.getDepartment() != null && !queryDTO.getDepartment().trim().isEmpty()) {
            queryWrapper.like("department", queryDTO.getDepartment());
        }

        // 执行分页查询
        return userMapper.selectPage(page, queryWrapper);
    }
}

package com.hdward.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hdward.entity.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

dto

package com.hdward.domain.dto;

import lombok.Data;

@Data
public class UserQueryDTO {

    private String userName;  // 用户名查询条件
    private Integer admin;    // 角色类型查询条件,0代表普通成员,1代表管理员
    private String department; // 部门查询条件
    private Integer pageNum = 1;   // 当前页,默认第一页
    private Integer pageSize = 10; // 每页显示条数,默认10条

    // 其他需要的查询条件可以继续扩展
}

user

package com.hdward.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.util.Date;

@Data
@TableName("users")
public class User {
    @TableId(value = "id", type = IdType.AUTO)// 主键
    private Long id;

    @TableField("user_name")
    private String userName;

    @TableField("admin")
    private Boolean admin;

    @TableField("name")
    private String name;

    @TableField(value = "create_at", fill = FieldFill.INSERT)
    private Date createAt;

    @TableField(value = "modified_at", fill = FieldFill.INSERT_UPDATE)
    private Date modifiedAt;

    @TableField("uuid")
    private String uuid;

    @TableField("mobile")
    private String mobile;

    @TableField("email")
    private String email;

    @TableField("department")
    private String department;

    @TableField("name_zh")
    private String nameZh;

    @TableField("name_en")
    private String nameEn;
}