From be354a98ec1db007a3fe2647549daff85f5cb38b Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Sun, 27 Apr 2025 12:24:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=97=E5=BC=80=E5=BE=97=E8=83=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/user/UserInfoController.java | 161 ++++++++++++++++++ .../model/dto/user/UserInfoAddRequest.java | 67 ++++++++ .../model/dto/user/UserInfoQueryRequest.java | 73 ++++++++ .../model/dto/user/UserInfoUpdateRequest.java | 73 ++++++++ .../promotion/model/vo/user/UserInfoVO.java | 73 ++++++++ 5 files changed, 447 insertions(+) create mode 100644 src/main/java/com/greenorange/promotion/controller/user/UserInfoController.java create mode 100644 src/main/java/com/greenorange/promotion/model/dto/user/UserInfoAddRequest.java create mode 100644 src/main/java/com/greenorange/promotion/model/dto/user/UserInfoQueryRequest.java create mode 100644 src/main/java/com/greenorange/promotion/model/dto/user/UserInfoUpdateRequest.java create mode 100644 src/main/java/com/greenorange/promotion/model/vo/user/UserInfoVO.java diff --git a/src/main/java/com/greenorange/promotion/controller/user/UserInfoController.java b/src/main/java/com/greenorange/promotion/controller/user/UserInfoController.java new file mode 100644 index 0000000..bbe0915 --- /dev/null +++ b/src/main/java/com/greenorange/promotion/controller/user/UserInfoController.java @@ -0,0 +1,161 @@ +package com.greenorange.promotion.controller.user; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.greenorange.promotion.common.BaseResponse; +import com.greenorange.promotion.common.ErrorCode; +import com.greenorange.promotion.common.ResultUtils; +import com.greenorange.promotion.exception.BusinessException; +import com.greenorange.promotion.exception.ThrowUtils; +import com.greenorange.promotion.model.dto.CommonBatchRequest; +import com.greenorange.promotion.model.dto.CommonRequest; +import com.greenorange.promotion.model.dto.user.UserInfoAddRequest; +import com.greenorange.promotion.model.dto.user.UserInfoQueryRequest; +import com.greenorange.promotion.model.dto.user.UserInfoUpdateRequest; +import com.greenorange.promotion.model.entity.UserInfo; +import com.greenorange.promotion.model.vo.user.UserInfoVO; +import com.greenorange.promotion.service.common.CommonService; +import com.greenorange.promotion.service.user.UserInfoService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 用户表 控制器 + */ +@RestController +@RequestMapping("userInfo") +@Slf4j +@Tag(name = "用户表管理") +public class UserInfoController { + + + @Resource + private UserInfoService userInfoService; + + @Resource + private CommonService commonService; + + + +// /** +// * web端管理员登录 +// * @param userInfoAddRequest 用户表添加请求体 +// * @return 是否添加成功 +// */ +// @PostMapping("add") +// @Operation(summary = "web端管理员添加用户表", description = "参数:用户表添加请求体,权限:管理员(boss, admin),方法名:addUserInfo") +// @AuthCheck(mustRole = UserConstant.ADMIN_ROLE) +// public BaseResponse addUserInfo(@RequestBody UserInfoAddRequest userInfoAddRequest) { +// ThrowUtils.throwIf(userInfoAddRequest == null, ErrorCode.PARAMS_ERROR); +// UserInfo userInfo = commonService.copyProperties(userInfoAddRequest, UserInfo.class); +// userInfoService.save(userInfo); +// return ResultUtils.success(true); +// } + + + + /** + * web端管理员添加用户表 + * @param userInfoAddRequest 用户表添加请求体 + * @return 是否添加成功 + */ + @PostMapping("add") + @Operation(summary = "web端管理员添加用户表", description = "参数:用户表添加请求体,权限:管理员(boss, admin),方法名:addUserInfo") + public BaseResponse addUserInfo(@RequestBody UserInfoAddRequest userInfoAddRequest) { + ThrowUtils.throwIf(userInfoAddRequest == null, ErrorCode.PARAMS_ERROR); + UserInfo userInfo = commonService.copyProperties(userInfoAddRequest, UserInfo.class); + userInfoService.save(userInfo); + return ResultUtils.success(true); + } + + /** + * web端管理员更新用户表 + * @param userInfoUpdateRequest 用户表更新请求体 + * @return 是否更新成功 + */ + @PostMapping("update") + @Operation(summary = "web端管理员更新用户表", description = "参数:用户表更新请求体,权限:管理员(boss, admin),方法名:updateUserInfo") + public BaseResponse updateUserInfo(@RequestBody UserInfoUpdateRequest userInfoUpdateRequest) { + ThrowUtils.throwIf(userInfoUpdateRequest == null || userInfoUpdateRequest.getId() <= 0, ErrorCode.PARAMS_ERROR); + UserInfo userInfo = commonService.copyProperties(userInfoUpdateRequest, UserInfo.class); + userInfoService.updateById(userInfo); + return ResultUtils.success(true); + } + + /** + * web端管理员删除用户表 + * @param commonRequest 用户表删除请求体 + * @return 是否删除成功 + */ + @PostMapping("delete") + @Operation(summary = "web端管理员删除用户表", description = "参数:用户表删除请求体,权限:管理员(boss, admin),方法名:delUserInfo") + public BaseResponse delUserInfo(@RequestBody CommonRequest commonRequest) { + ThrowUtils.throwIf(commonRequest == null || commonRequest.getId() <= 0, ErrorCode.PARAMS_ERROR); + Long id = commonRequest.getId(); + userInfoService.removeById(id); + return ResultUtils.success(true); + } + + /** + * Web端管理员分页查看用户表 + * @param userInfoQueryRequest 用户表查询请求体 + * @return 用户表列表 + */ + @PostMapping("page") + @Operation(summary = "Web端管理员分页查看用户表", description = "参数:用户表查询请求体,权限:管理员(boss, admin),方法名:listUserInfoByPage") + public BaseResponse> listUserInfoByPage(@RequestBody UserInfoQueryRequest userInfoQueryRequest) { + if (userInfoQueryRequest == null) throw new BusinessException(ErrorCode.PARAMS_ERROR); + long current = userInfoQueryRequest.getCurrent(); + long pageSize = userInfoQueryRequest.getPageSize(); + QueryWrapper queryWrapper = userInfoService.getQueryWrapper(userInfoQueryRequest); + Page page = userInfoService.page(new Page<>(current, pageSize), queryWrapper); + List userInfoList = page.getRecords(); + List userInfoVOList = commonService.convertList(userInfoList, UserInfoVO.class); + Page voPage = new Page<>(); + voPage.setRecords(userInfoVOList); + voPage.setPages(page.getPages()); + voPage.setCurrent(page.getCurrent()); + voPage.setTotal(page.getTotal()); + voPage.setSize(page.getSize()); + return ResultUtils.success(voPage); + } + + /** + * web端管理员根据id查询用户表 + * @param commonRequest 用户表查询请求体 + * @return 用户表信息 + */ + @PostMapping("queryById") + @Operation(summary = "web端管理员根据id查询用户表", description = "参数:用户表查询请求体,权限:管理员(boss, admin),方法名:queryUserInfoById") + public BaseResponse queryUserInfoById(@RequestBody CommonRequest commonRequest) { + ThrowUtils.throwIf(commonRequest == null || commonRequest.getId() <= 0, ErrorCode.PARAMS_ERROR); + Long id = commonRequest.getId(); + UserInfo userInfo = userInfoService.getById(id); + ThrowUtils.throwIf(userInfo == null, ErrorCode.OPERATION_ERROR, "当前用户不存在"); + UserInfoVO userInfoVO = commonService.copyProperties(userInfo, UserInfoVO.class); + return ResultUtils.success(userInfoVO); + } + + + /** + * web端管理员批量删除用户表 + * @param commonBatchRequest 用户表批量删除请求体 + * @return 是否删除成功 + */ + @PostMapping("delBatch") + @Operation(summary = "web端管理员批量删除用户表", description = "参数:用户表批量删除请求体,权限:管理员(boss, admin),方法名:delBatchUserInfo") + public BaseResponse delBatchUserInfo(@RequestBody CommonBatchRequest commonBatchRequest) { + ThrowUtils.throwIf(commonBatchRequest == null || commonBatchRequest.getIds() == null || commonBatchRequest.getIds().isEmpty(), ErrorCode.PARAMS_ERROR); + List ids = commonBatchRequest.getIds(); + userInfoService.removeByIds(ids); + return ResultUtils.success(true); + } +} diff --git a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoAddRequest.java new file mode 100644 index 0000000..7ee2a9e --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoAddRequest.java @@ -0,0 +1,67 @@ +package com.greenorange.promotion.model.dto.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 用户表添加请求体 + */ +@Data +@Schema(description = "用户表添加请求体", requiredProperties = {"name", "categoryId", "price", "image", "period", "isShelves"}) +public class UserInfoAddRequest implements Serializable { + + /** + * 用户昵称 + */ + @Schema(description = "用户昵称", example = "${field.example}") + private String nickName; + + /** + * 用户头像URL + */ + @Schema(description = "用户头像URL", example = "${field.example}") + private String userAvatar; + + /** + * 手机号 + */ + @Schema(description = "手机号", example = "${field.example}") + private String phoneNumber; + + /** + * 密码(建议加密存储) + */ + @Schema(description = "密码(建议加密存储)", example = "${field.example}") + private String userPassword; + + /** + * 邀请码 + */ + @Schema(description = "邀请码", example = "${field.example}") + private String invitationCode; + + /** + * 用户角色 + */ + @Schema(description = "用户角色", example = "${field.example}") + private String userRole; + + /** + * 上级用户id + */ + @Schema(description = "上级用户id", example = "${field.example}") + private Long parentUserId; + + /** + * 上级用户列表(1,2,3) + */ + @Schema(description = "上级用户列表(1,2,3)", example = "${field.example}") + private String superUserList; + + + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoQueryRequest.java b/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoQueryRequest.java new file mode 100644 index 0000000..919709d --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoQueryRequest.java @@ -0,0 +1,73 @@ +package com.greenorange.promotion.model.dto.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import java.io.Serial; +import java.io.Serializable; +import com.greenorange.promotion.common.PageRequest; + +/** + * 用户表查询请求体,继承自分页请求 PageRequest + */ +@Data +@Schema(description = "用户表查询请求体", requiredProperties = {"current", "pageSize"}) +public class UserInfoQueryRequest extends PageRequest implements Serializable { + + /** + * 用户表 ID + */ + @Schema(description = "用户表 ID", example = "1") + private Long id; + + /** + * 用户昵称 + */ + @Schema(description = "用户昵称", example = "${field.example}") + private String nickName; + + /** + * 用户头像URL + */ + @Schema(description = "用户头像URL", example = "${field.example}") + private String userAvatar; + + /** + * 手机号 + */ + @Schema(description = "手机号", example = "${field.example}") + private String phoneNumber; + + /** + * 密码(建议加密存储) + */ + @Schema(description = "密码(建议加密存储)", example = "${field.example}") + private String userPassword; + + /** + * 邀请码 + */ + @Schema(description = "邀请码", example = "${field.example}") + private String invitationCode; + + /** + * 用户角色 + */ + @Schema(description = "用户角色", example = "${field.example}") + private String userRole; + + /** + * 上级用户id + */ + @Schema(description = "上级用户id", example = "${field.example}") + private Long parentUserId; + + /** + * 上级用户列表(1,2,3) + */ + @Schema(description = "上级用户列表(1,2,3)", example = "${field.example}") + private String superUserList; + + + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoUpdateRequest.java new file mode 100644 index 0000000..02e810b --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/dto/user/UserInfoUpdateRequest.java @@ -0,0 +1,73 @@ +package com.greenorange.promotion.model.dto.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 用户表更新请求体 + */ +@Data +@Schema(description = "用户表更新请求体", requiredProperties = {"id", "name", "categoryId", "price", "image", "period", "isShelves"}) +public class UserInfoUpdateRequest implements Serializable { + + /** + * 用户表 ID + */ + @Schema(description = "用户表 ID", example = "1") + private Long id; + + /** + * 用户昵称 + */ + @Schema(description = "用户昵称", example = "${field.example}") + private String nickName; + + /** + * 用户头像URL + */ + @Schema(description = "用户头像URL", example = "${field.example}") + private String userAvatar; + + /** + * 手机号 + */ + @Schema(description = "手机号", example = "${field.example}") + private String phoneNumber; + + /** + * 密码(建议加密存储) + */ + @Schema(description = "密码(建议加密存储)", example = "${field.example}") + private String userPassword; + + /** + * 邀请码 + */ + @Schema(description = "邀请码", example = "${field.example}") + private String invitationCode; + + /** + * 用户角色 + */ + @Schema(description = "用户角色", example = "${field.example}") + private String userRole; + + /** + * 上级用户id + */ + @Schema(description = "上级用户id", example = "${field.example}") + private Long parentUserId; + + /** + * 上级用户列表(1,2,3) + */ + @Schema(description = "上级用户列表(1,2,3)", example = "${field.example}") + private String superUserList; + + + @Serial + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/greenorange/promotion/model/vo/user/UserInfoVO.java b/src/main/java/com/greenorange/promotion/model/vo/user/UserInfoVO.java new file mode 100644 index 0000000..69e444a --- /dev/null +++ b/src/main/java/com/greenorange/promotion/model/vo/user/UserInfoVO.java @@ -0,0 +1,73 @@ +package com.greenorange.promotion.model.vo.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 用户表 视图对象 + */ +@Data +@Schema(description = "用户表 视图对象") +public class UserInfoVO implements Serializable { + + /** + * 用户表 ID + */ + @Schema(description = "用户表 ID", example = "1") + private Long id; + + /** + * 用户昵称 + */ + @Schema(description = "用户昵称", example = "${field.example}") + private String nickName; + + /** + * 用户头像URL + */ + @Schema(description = "用户头像URL", example = "${field.example}") + private String userAvatar; + + /** + * 手机号 + */ + @Schema(description = "手机号", example = "${field.example}") + private String phoneNumber; + + /** + * 密码(建议加密存储) + */ + @Schema(description = "密码(建议加密存储)", example = "${field.example}") + private String userPassword; + + /** + * 邀请码 + */ + @Schema(description = "邀请码", example = "${field.example}") + private String invitationCode; + + /** + * 用户角色 + */ + @Schema(description = "用户角色", example = "${field.example}") + private String userRole; + + /** + * 上级用户id + */ + @Schema(description = "上级用户id", example = "${field.example}") + private Long parentUserId; + + /** + * 上级用户列表(1,2,3) + */ + @Schema(description = "上级用户列表(1,2,3)", example = "${field.example}") + private String superUserList; + + + @Serial + private static final long serialVersionUID = 1L; +}