feat: 重构项目结构并新增微信小程序认证模块

This commit is contained in:
Ray.Hao
2026-03-24 07:52:05 +08:00
parent 465e63c99d
commit 8188c82c3d
158 changed files with 1342 additions and 1562 deletions

View File

@@ -5,20 +5,21 @@ import cn.idev.excel.ExcelWriter;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.youlai.boot.common.annotation.Log;
import com.youlai.boot.common.annotation.RepeatSubmit;
import com.youlai.boot.common.enums.ActionTypeEnum;
import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.common.model.Option;
import com.youlai.boot.core.web.ExcelResult;
import com.youlai.boot.core.web.PageResult;
import com.youlai.boot.core.web.Result;
import com.youlai.boot.framework.security.util.SecurityUtils;
import com.youlai.boot.shared.dto.Option;
import com.youlai.boot.common.result.ExcelResult;
import com.youlai.boot.common.result.PageResult;
import com.youlai.boot.common.result.Result;
import com.youlai.boot.common.util.ExcelUtils;
import com.youlai.boot.security.util.SecurityUtils;
import com.youlai.boot.system.listener.UserImportListener;
import com.youlai.boot.system.model.dto.UserExportDTO;
import com.youlai.boot.system.model.dto.UserImportDTO;
import com.youlai.boot.system.model.entity.User;
import com.youlai.boot.system.model.vo.UserExportVO;
import com.youlai.boot.system.model.form.UserImportForm;
import com.youlai.boot.system.model.entity.SysUser;
import com.youlai.boot.system.model.form.*;
import com.youlai.boot.system.model.query.UserQuery;
import com.youlai.boot.system.model.dto.CurrentUserDTO;
import com.youlai.boot.system.model.vo.CurrentUserVO;
import com.youlai.boot.system.model.vo.UserPageVO;
import com.youlai.boot.system.model.vo.UserProfileVO;
import com.youlai.boot.system.service.UserService;
@@ -57,7 +58,7 @@ public class UserController {
@Operation(summary = "用户列表")
@GetMapping
@Log(value = "用户列表", module = LogModuleEnum.USER)
@Log(module = LogModuleEnum.USER, value = ActionTypeEnum.LIST)
public PageResult<UserPageVO> getUserList(
@Valid UserQuery queryParams
) {
@@ -68,7 +69,7 @@ public class UserController {
@PostMapping
@PreAuthorize("@ss.hasPerm('sys:user:create')")
@RepeatSubmit
@Log(value = "新增用户", module = LogModuleEnum.USER)
@Log(module = LogModuleEnum.USER, value = ActionTypeEnum.INSERT)
public Result<?> saveUser(
@RequestBody @Valid UserForm userForm
) {
@@ -79,7 +80,6 @@ public class UserController {
@Operation(summary = "获取用户表单数据")
@GetMapping("/{userId}/form")
@PreAuthorize("@ss.hasPerm('sys:user:update')")
@Log(value = "用户表单数据", module = LogModuleEnum.USER)
public Result<UserForm> getUserForm(
@Parameter(description = "用户ID") @PathVariable Long userId
) {
@@ -90,7 +90,7 @@ public class UserController {
@Operation(summary = "修改用户")
@PutMapping(value = "/{userId}")
@PreAuthorize("@ss.hasPerm('sys:user:update')")
@Log(value = "修改用户", module = LogModuleEnum.USER)
@Log(module = LogModuleEnum.USER, value = ActionTypeEnum.UPDATE)
public Result<Void> updateUser(
@Parameter(description = "用户ID") @PathVariable Long userId,
@RequestBody @Valid UserForm userForm
@@ -102,7 +102,7 @@ public class UserController {
@Operation(summary = "删除用户")
@DeleteMapping("/{ids}")
@PreAuthorize("@ss.hasPerm('sys:user:delete')")
@Log(value = "删除用户", module = LogModuleEnum.USER)
@Log(module = LogModuleEnum.USER, value = ActionTypeEnum.DELETE)
public Result<Void> deleteUsers(
@Parameter(description = "用户ID多个以英文逗号(,)分割") @PathVariable String ids
) {
@@ -113,14 +113,14 @@ public class UserController {
@Operation(summary = "修改用户状态")
@PatchMapping(value = "/{userId}/status")
@PreAuthorize("@ss.hasPerm('sys:user:update')")
@Log(value = "修改用户状态", module = LogModuleEnum.USER)
@Log(module = LogModuleEnum.USER, value = ActionTypeEnum.UPDATE)
public Result<Void> updateUserStatus(
@Parameter(description = "用户ID") @PathVariable Long userId,
@Parameter(description = "用户状态(1:启用;0:禁用)") @RequestParam Integer status
) {
boolean result = userService.update(new LambdaUpdateWrapper<User>()
.eq(User::getId, userId)
.set(User::getStatus, status)
boolean result = userService.update(new LambdaUpdateWrapper<SysUser>()
.eq(SysUser::getId, userId)
.set(SysUser::getStatus, status)
);
return Result.judge(result);
}
@@ -128,6 +128,7 @@ public class UserController {
@Operation(summary = "重置指定用户密码")
@PutMapping(value = "/{userId}/password/reset")
@PreAuthorize("@ss.hasPerm('sys:user:reset-password')")
@Log(module = LogModuleEnum.USER, value = ActionTypeEnum.RESET_PASSWORD)
public Result<?> resetUserPassword(
@Parameter(description = "用户ID") @PathVariable Long userId,
@RequestParam String password
@@ -138,15 +139,13 @@ public class UserController {
@Operation(summary = "获取当前登录用户信息")
@GetMapping("/me")
@Log(value = "获取当前登录用户信息", module = LogModuleEnum.USER)
public Result<CurrentUserDTO> getCurrentUser() {
CurrentUserDTO currentUserDto = userService.getCurrentUserInfo();
return Result.success(currentUserDto);
public Result<CurrentUserVO> getCurrentUser() {
CurrentUserVO currentUserVo = userService.getCurrentUserInfo();
return Result.success(currentUserVo);
}
@Operation(summary = "用户导入模板下载")
@GetMapping("/template")
@Log(value = "用户导入模板下载", module = LogModuleEnum.USER)
public void downloadTemplate(HttpServletResponse response) {
String fileName = "用户导入模板.xlsx";
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
@@ -166,24 +165,24 @@ public class UserController {
@Operation(summary = "导入用户")
@PostMapping("/import")
@PreAuthorize("@ss.hasPerm('sys:user:import')")
@Log(value = "导入用户", module = LogModuleEnum.USER)
@Log(module = LogModuleEnum.USER, value = ActionTypeEnum.IMPORT)
public Result<ExcelResult> importUsers(MultipartFile file) throws IOException {
UserImportListener listener = new UserImportListener();
ExcelUtils.importExcel(file.getInputStream(), UserImportDTO.class, listener);
ExcelUtils.importExcel(file.getInputStream(), UserImportForm.class, listener);
return Result.success(listener.getExcelResult());
}
@Operation(summary = "导出用户")
@GetMapping("/export")
@PreAuthorize("@ss.hasPerm('sys:user:export')")
@Log(value = "导出用户", module = LogModuleEnum.USER)
@Log(module = LogModuleEnum.USER, value = ActionTypeEnum.EXPORT)
public void exportUsers(UserQuery queryParams, HttpServletResponse response) throws IOException {
String fileName = "用户列表.xlsx";
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8));
List<UserExportDTO> exportUserList = userService.listExportUsers(queryParams);
EasyExcel.write(response.getOutputStream(), UserExportDTO.class).sheet("用户列表")
List<UserExportVO> exportUserList = userService.listExportUsers(queryParams);
EasyExcel.write(response.getOutputStream(), UserExportVO.class).sheet("用户列表")
.doWrite(exportUserList);
}
@@ -196,7 +195,6 @@ public class UserController {
@Operation(summary = "获取个人中心用户信息")
@GetMapping("/profile")
@Log(value = "获取个人中心用户信息", module = LogModuleEnum.USER)
public Result<UserProfileVO> getUserProfile() {
Long userId = SecurityUtils.getUserId();
UserProfileVO userProfile = userService.getUserProfile(userId);
@@ -205,7 +203,7 @@ public class UserController {
@Operation(summary = "个人中心修改用户信息")
@PutMapping("/profile")
@Log(value = "个人中心修改用户信息", module = LogModuleEnum.USER)
@Log(module = LogModuleEnum.USER, value = ActionTypeEnum.UPDATE)
public Result<?> updateUserProfile(@RequestBody UserProfileForm formData) {
boolean result = userService.updateUserProfile(formData);
return Result.judge(result);
@@ -214,6 +212,7 @@ public class UserController {
@Operation(summary = "当前用户修改密码")
@PutMapping(value = "/password")
@Log(module = LogModuleEnum.USER, value = ActionTypeEnum.CHANGE_PASSWORD)
public Result<?> changeCurrentUserPassword(
@RequestBody PasswordUpdateForm data
) {
@@ -276,5 +275,4 @@ public class UserController {
return Result.judge(result);
}
}