mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-13 02:57:13 +08:00
refactor: 💥 调整后端请求、响应参数模型命名风格
XxxRequest => XxxReq XxxVO => XxxResp
This commit is contained in:
@@ -32,12 +32,12 @@ import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
|
||||
import top.charles7c.cnadmin.auth.model.request.AccountLoginRequest;
|
||||
import top.charles7c.cnadmin.auth.model.request.EmailLoginRequest;
|
||||
import top.charles7c.cnadmin.auth.model.request.PhoneLoginRequest;
|
||||
import top.charles7c.cnadmin.auth.model.vo.LoginVO;
|
||||
import top.charles7c.cnadmin.auth.model.vo.RouteVO;
|
||||
import top.charles7c.cnadmin.auth.model.vo.UserInfoVO;
|
||||
import top.charles7c.cnadmin.auth.model.req.AccountLoginReq;
|
||||
import top.charles7c.cnadmin.auth.model.req.EmailLoginReq;
|
||||
import top.charles7c.cnadmin.auth.model.req.PhoneLoginReq;
|
||||
import top.charles7c.cnadmin.auth.model.resp.LoginResp;
|
||||
import top.charles7c.cnadmin.auth.model.resp.RouteResp;
|
||||
import top.charles7c.cnadmin.auth.model.resp.UserInfoResp;
|
||||
import top.charles7c.cnadmin.auth.service.LoginService;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.model.dto.LoginUser;
|
||||
@@ -47,7 +47,7 @@ import top.charles7c.cnadmin.common.util.SecureUtils;
|
||||
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
||||
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
||||
import top.charles7c.cnadmin.monitor.annotation.Log;
|
||||
import top.charles7c.cnadmin.system.model.vo.UserDetailVO;
|
||||
import top.charles7c.cnadmin.system.model.resp.UserDetailResp;
|
||||
import top.charles7c.cnadmin.system.service.UserService;
|
||||
|
||||
/**
|
||||
@@ -69,46 +69,45 @@ public class AuthController {
|
||||
@SaIgnore
|
||||
@Operation(summary = "账号登录", description = "根据账号和密码进行登录认证")
|
||||
@PostMapping("/account")
|
||||
public LoginVO accountLogin(@Validated @RequestBody AccountLoginRequest loginRequest) {
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, loginRequest.getUuid());
|
||||
public LoginResp accountLogin(@Validated @RequestBody AccountLoginReq loginReq) {
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, loginReq.getUuid());
|
||||
String captcha = RedisUtils.getCacheObject(captchaKey);
|
||||
ValidationUtils.throwIfBlank(captcha, "验证码已失效");
|
||||
RedisUtils.deleteCacheObject(captchaKey);
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(loginRequest.getCaptcha(), captcha, "验证码错误");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(loginReq.getCaptcha(), captcha, "验证码错误");
|
||||
// 用户登录
|
||||
String rawPassword =
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(loginRequest.getPassword()));
|
||||
String rawPassword = ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(loginReq.getPassword()));
|
||||
ValidationUtils.throwIfBlank(rawPassword, "密码解密失败");
|
||||
String token = loginService.accountLogin(loginRequest.getUsername(), rawPassword);
|
||||
return LoginVO.builder().token(token).build();
|
||||
String token = loginService.accountLogin(loginReq.getUsername(), rawPassword);
|
||||
return LoginResp.builder().token(token).build();
|
||||
}
|
||||
|
||||
@SaIgnore
|
||||
@Operation(summary = "邮箱登录", description = "根据邮箱和验证码进行登录认证")
|
||||
@PostMapping("/email")
|
||||
public LoginVO emailLogin(@Validated @RequestBody EmailLoginRequest loginRequest) {
|
||||
String email = loginRequest.getEmail();
|
||||
public LoginResp emailLogin(@Validated @RequestBody EmailLoginReq loginReq) {
|
||||
String email = loginReq.getEmail();
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, email);
|
||||
String captcha = RedisUtils.getCacheObject(captchaKey);
|
||||
ValidationUtils.throwIfBlank(captcha, "验证码已失效");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(loginRequest.getCaptcha(), captcha, "验证码错误");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(loginReq.getCaptcha(), captcha, "验证码错误");
|
||||
RedisUtils.deleteCacheObject(captchaKey);
|
||||
String token = loginService.emailLogin(email);
|
||||
return LoginVO.builder().token(token).build();
|
||||
return LoginResp.builder().token(token).build();
|
||||
}
|
||||
|
||||
@SaIgnore
|
||||
@Operation(summary = "手机号登录", description = "根据手机号和验证码进行登录认证")
|
||||
@PostMapping("/phone")
|
||||
public LoginVO phoneLogin(@Validated @RequestBody PhoneLoginRequest loginRequest) {
|
||||
String phone = loginRequest.getPhone();
|
||||
public LoginResp phoneLogin(@Validated @RequestBody PhoneLoginReq loginReq) {
|
||||
String phone = loginReq.getPhone();
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, phone);
|
||||
String captcha = RedisUtils.getCacheObject(captchaKey);
|
||||
ValidationUtils.throwIfBlank(captcha, "验证码已失效");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(loginRequest.getCaptcha(), captcha, "验证码错误");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(loginReq.getCaptcha(), captcha, "验证码错误");
|
||||
RedisUtils.deleteCacheObject(captchaKey);
|
||||
String token = loginService.phoneLogin(phone);
|
||||
return LoginVO.builder().token(token).build();
|
||||
return LoginResp.builder().token(token).build();
|
||||
}
|
||||
|
||||
@SaIgnore
|
||||
@@ -123,19 +122,19 @@ public class AuthController {
|
||||
@Log(ignore = true)
|
||||
@Operation(summary = "获取用户信息", description = "获取登录用户信息")
|
||||
@GetMapping("/user/info")
|
||||
public UserInfoVO getUserInfo() {
|
||||
public UserInfoResp getUserInfo() {
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
UserDetailVO userDetailVO = userService.get(loginUser.getId());
|
||||
UserInfoVO userInfoVO = BeanUtil.copyProperties(userDetailVO, UserInfoVO.class);
|
||||
userInfoVO.setPermissions(loginUser.getPermissions());
|
||||
userInfoVO.setRoles(loginUser.getRoleCodes());
|
||||
return userInfoVO;
|
||||
UserDetailResp userDetailResp = userService.get(loginUser.getId());
|
||||
UserInfoResp userInfoResp = BeanUtil.copyProperties(userDetailResp, UserInfoResp.class);
|
||||
userInfoResp.setPermissions(loginUser.getPermissions());
|
||||
userInfoResp.setRoles(loginUser.getRoleCodes());
|
||||
return userInfoResp;
|
||||
}
|
||||
|
||||
@Log(ignore = true)
|
||||
@Operation(summary = "获取路由信息", description = "获取登录用户的路由信息")
|
||||
@GetMapping("/route")
|
||||
public List<RouteVO> listRoute() {
|
||||
public List<RouteResp> listRoute() {
|
||||
Long userId = LoginHelper.getUserId();
|
||||
return loginService.buildRouteTree(userId);
|
||||
}
|
||||
|
@@ -30,10 +30,10 @@ import com.xkcoding.justauth.AuthRequestFactory;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
|
||||
import top.charles7c.cnadmin.auth.model.vo.LoginVO;
|
||||
import top.charles7c.cnadmin.auth.model.resp.LoginResp;
|
||||
import top.charles7c.cnadmin.auth.service.LoginService;
|
||||
import top.charles7c.cnadmin.common.exception.BadRequestException;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
||||
import top.charles7c.cnadmin.monitor.annotation.Log;
|
||||
|
||||
@@ -71,7 +71,7 @@ public class SocialAuthController {
|
||||
@Operation(summary = "三方账号登录", description = "三方账号登录")
|
||||
@Parameter(name = "source", description = "来源", example = "gitee", in = ParameterIn.PATH)
|
||||
@PostMapping("/{source}")
|
||||
public LoginVO login(@PathVariable String source, @RequestBody AuthCallback callback) {
|
||||
public LoginResp login(@PathVariable String source, @RequestBody AuthCallback callback) {
|
||||
if (StpUtil.isLogin()) {
|
||||
StpUtil.logout();
|
||||
}
|
||||
@@ -80,7 +80,7 @@ public class SocialAuthController {
|
||||
ValidationUtils.throwIf(!response.ok(), response.getMsg());
|
||||
AuthUser authUser = response.getData();
|
||||
String token = loginService.socialLogin(authUser);
|
||||
return LoginVO.builder().token(token).build();
|
||||
return LoginResp.builder().token(token).build();
|
||||
}
|
||||
|
||||
private AuthRequest getAuthRequest(String source) {
|
||||
|
@@ -50,8 +50,8 @@ import top.charles7c.cnadmin.common.config.properties.CaptchaProperties;
|
||||
import top.charles7c.cnadmin.common.config.properties.ProjectProperties;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.model.vo.CaptchaVO;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.CaptchaResp;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.MailUtils;
|
||||
import top.charles7c.cnadmin.common.util.RedisUtils;
|
||||
import top.charles7c.cnadmin.common.util.TemplateUtils;
|
||||
@@ -76,7 +76,7 @@ public class CaptchaController {
|
||||
|
||||
@Operation(summary = "获取图片验证码", description = "获取图片验证码(Base64编码,带图片格式:data:image/gif;base64)")
|
||||
@GetMapping("/img")
|
||||
public CaptchaVO getImageCaptcha() {
|
||||
public CaptchaResp getImageCaptcha() {
|
||||
// 生成验证码
|
||||
CaptchaProperties.CaptchaImage captchaImage = captchaProperties.getImage();
|
||||
Captcha captcha = captchaImage.getCaptcha();
|
||||
@@ -85,7 +85,7 @@ public class CaptchaController {
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, uuid);
|
||||
RedisUtils.setCacheObject(captchaKey, captcha.text(),
|
||||
Duration.ofMinutes(captchaImage.getExpirationInMinutes()));
|
||||
return CaptchaVO.builder().uuid(uuid).img(captcha.toBase64()).build();
|
||||
return CaptchaResp.builder().uuid(uuid).img(captcha.toBase64()).build();
|
||||
}
|
||||
|
||||
@Operation(summary = "获取邮箱验证码", description = "发送验证码到指定邮箱")
|
||||
|
@@ -47,8 +47,8 @@ import top.charles7c.cnadmin.common.config.properties.LocalStorageProperties;
|
||||
import top.charles7c.cnadmin.common.config.properties.ProjectProperties;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.model.query.SortQuery;
|
||||
import top.charles7c.cnadmin.common.model.vo.LabelValueVO;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.LabelValueResp;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.FileUtils;
|
||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
||||
@@ -57,7 +57,7 @@ import top.charles7c.cnadmin.system.model.query.DeptQuery;
|
||||
import top.charles7c.cnadmin.system.model.query.MenuQuery;
|
||||
import top.charles7c.cnadmin.system.model.query.OptionQuery;
|
||||
import top.charles7c.cnadmin.system.model.query.RoleQuery;
|
||||
import top.charles7c.cnadmin.system.model.vo.RoleVO;
|
||||
import top.charles7c.cnadmin.system.model.resp.RoleResp;
|
||||
import top.charles7c.cnadmin.system.service.*;
|
||||
|
||||
/**
|
||||
@@ -109,8 +109,8 @@ public class CommonController {
|
||||
|
||||
@Operation(summary = "查询角色字典", description = "查询角色字典列表")
|
||||
@GetMapping("/dict/role")
|
||||
public List<LabelValueVO<Long>> listRoleDict(RoleQuery query, SortQuery sortQuery) {
|
||||
List<RoleVO> list = roleService.list(query, sortQuery);
|
||||
public List<LabelValueResp<Long>> listRoleDict(RoleQuery query, SortQuery sortQuery) {
|
||||
List<RoleResp> list = roleService.list(query, sortQuery);
|
||||
return roleService.buildDict(list);
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ public class CommonController {
|
||||
@Parameter(name = "code", description = "字典编码", example = "announcement_type", in = ParameterIn.PATH)
|
||||
@GetMapping("/dict/{code}")
|
||||
@Cacheable(key = "#code", cacheNames = CacheConsts.DICT_KEY_PREFIX)
|
||||
public List<LabelValueVO> listDict(@PathVariable String code) {
|
||||
public List<LabelValueResp> listDict(@PathVariable String code) {
|
||||
Optional<Class<?>> enumClass = this.getEnumClassByName(code);
|
||||
return enumClass.map(this::listEnumDict).orElseGet(() -> dictItemService.listByDictCode(code));
|
||||
}
|
||||
@@ -127,8 +127,8 @@ public class CommonController {
|
||||
@Operation(summary = "查询参数", description = "查询参数")
|
||||
@GetMapping("/option")
|
||||
@Cacheable(cacheNames = CacheConsts.OPTION_KEY_PREFIX)
|
||||
public List<LabelValueVO> listOption(@Validated OptionQuery query) {
|
||||
return optionService.list(query).stream().map(option -> new LabelValueVO(option.getCode(),
|
||||
public List<LabelValueResp> listOption(@Validated OptionQuery query) {
|
||||
return optionService.list(query).stream().map(option -> new LabelValueResp(option.getCode(),
|
||||
StrUtil.nullToDefault(option.getValue(), option.getDefaultValue()))).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@@ -154,11 +154,11 @@ public class CommonController {
|
||||
* 枚举类型
|
||||
* @return 枚举字典
|
||||
*/
|
||||
private List<LabelValueVO> listEnumDict(Class<?> enumClass) {
|
||||
private List<LabelValueResp> listEnumDict(Class<?> enumClass) {
|
||||
Object[] enumConstants = enumClass.getEnumConstants();
|
||||
return Arrays.stream(enumConstants).map(e -> {
|
||||
IBaseEnum<Integer> baseEnum = (IBaseEnum<Integer>)e;
|
||||
return new LabelValueVO<>(baseEnum.getDescription(), baseEnum.getValue(), baseEnum.getColor());
|
||||
return new LabelValueResp<>(baseEnum.getDescription(), baseEnum.getValue(), baseEnum.getColor());
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
@@ -33,12 +33,12 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
||||
import top.charles7c.cnadmin.monitor.annotation.Log;
|
||||
import top.charles7c.cnadmin.monitor.model.vo.DashboardAccessTrendVO;
|
||||
import top.charles7c.cnadmin.monitor.model.vo.DashboardGeoDistributionVO;
|
||||
import top.charles7c.cnadmin.monitor.model.vo.DashboardPopularModuleVO;
|
||||
import top.charles7c.cnadmin.monitor.model.vo.DashboardTotalVO;
|
||||
import top.charles7c.cnadmin.monitor.model.resp.DashboardAccessTrendResp;
|
||||
import top.charles7c.cnadmin.monitor.model.resp.DashboardGeoDistributionResp;
|
||||
import top.charles7c.cnadmin.monitor.model.resp.DashboardPopularModuleResp;
|
||||
import top.charles7c.cnadmin.monitor.model.resp.DashboardTotalResp;
|
||||
import top.charles7c.cnadmin.monitor.service.DashboardService;
|
||||
import top.charles7c.cnadmin.system.model.vo.DashboardAnnouncementVO;
|
||||
import top.charles7c.cnadmin.system.model.resp.DashboardAnnouncementResp;
|
||||
|
||||
/**
|
||||
* 仪表盘 API
|
||||
@@ -58,33 +58,33 @@ public class DashboardController {
|
||||
|
||||
@Operation(summary = "查询总计信息", description = "查询总计信息")
|
||||
@GetMapping("/total")
|
||||
public DashboardTotalVO getTotal() {
|
||||
public DashboardTotalResp getTotal() {
|
||||
return dashboardService.getTotal();
|
||||
}
|
||||
|
||||
@Operation(summary = "查询访问趋势信息", description = "查询访问趋势信息")
|
||||
@Parameter(name = "days", description = "日期数", example = "30", in = ParameterIn.PATH)
|
||||
@GetMapping("/access/trend/{days}")
|
||||
public List<DashboardAccessTrendVO> listAccessTrend(@PathVariable Integer days) {
|
||||
public List<DashboardAccessTrendResp> listAccessTrend(@PathVariable Integer days) {
|
||||
ValidationUtils.throwIf(7 != days && 30 != days, "仅支持查询近 7/30 天访问趋势信息");
|
||||
return dashboardService.listAccessTrend(days);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询热门模块列表", description = "查询热门模块列表")
|
||||
@GetMapping("/popular/module")
|
||||
public List<DashboardPopularModuleVO> listPopularModule() {
|
||||
public List<DashboardPopularModuleResp> listPopularModule() {
|
||||
return dashboardService.listPopularModule();
|
||||
}
|
||||
|
||||
@Operation(summary = "查询访客地域分布信息", description = "查询访客地域分布信息")
|
||||
@GetMapping("/geo/distribution")
|
||||
public DashboardGeoDistributionVO getGeoDistribution() {
|
||||
public DashboardGeoDistributionResp getGeoDistribution() {
|
||||
return dashboardService.getGeoDistribution();
|
||||
}
|
||||
|
||||
@Operation(summary = "查询公告列表", description = "查询公告列表")
|
||||
@GetMapping("/announcement")
|
||||
public List<DashboardAnnouncementVO> listAnnouncement() {
|
||||
public List<DashboardAnnouncementResp> listAnnouncement() {
|
||||
return dashboardService.listAnnouncement();
|
||||
}
|
||||
}
|
||||
|
@@ -30,15 +30,15 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||
import top.charles7c.cnadmin.common.model.resp.PageDataResp;
|
||||
import top.charles7c.cnadmin.monitor.annotation.Log;
|
||||
import top.charles7c.cnadmin.monitor.model.query.LoginLogQuery;
|
||||
import top.charles7c.cnadmin.monitor.model.query.OperationLogQuery;
|
||||
import top.charles7c.cnadmin.monitor.model.query.SystemLogQuery;
|
||||
import top.charles7c.cnadmin.monitor.model.vo.LoginLogVO;
|
||||
import top.charles7c.cnadmin.monitor.model.vo.OperationLogVO;
|
||||
import top.charles7c.cnadmin.monitor.model.vo.SystemLogDetailVO;
|
||||
import top.charles7c.cnadmin.monitor.model.vo.SystemLogVO;
|
||||
import top.charles7c.cnadmin.monitor.model.resp.LoginLogResp;
|
||||
import top.charles7c.cnadmin.monitor.model.resp.OperationLogResp;
|
||||
import top.charles7c.cnadmin.monitor.model.resp.SystemLogDetailResp;
|
||||
import top.charles7c.cnadmin.monitor.model.resp.SystemLogResp;
|
||||
import top.charles7c.cnadmin.monitor.service.LogService;
|
||||
|
||||
/**
|
||||
@@ -58,21 +58,21 @@ public class LogController {
|
||||
@Log(module = "登录日志")
|
||||
@Operation(summary = "分页查询登录日志列表", description = "分页查询登录日志列表")
|
||||
@GetMapping("/login")
|
||||
public PageDataVO<LoginLogVO> page(LoginLogQuery query, @Validated PageQuery pageQuery) {
|
||||
public PageDataResp<LoginLogResp> page(LoginLogQuery query, @Validated PageQuery pageQuery) {
|
||||
return logService.page(query, pageQuery);
|
||||
}
|
||||
|
||||
@Log(module = "操作日志")
|
||||
@Operation(summary = "分页查询操作日志列表", description = "分页查询操作日志列表")
|
||||
@GetMapping("/operation")
|
||||
public PageDataVO<OperationLogVO> page(OperationLogQuery query, @Validated PageQuery pageQuery) {
|
||||
public PageDataResp<OperationLogResp> page(OperationLogQuery query, @Validated PageQuery pageQuery) {
|
||||
return logService.page(query, pageQuery);
|
||||
}
|
||||
|
||||
@Log(module = "系统日志")
|
||||
@Operation(summary = "分页查询系统日志列表", description = "分页查询系统日志列表")
|
||||
@GetMapping("/system")
|
||||
public PageDataVO<SystemLogVO> page(SystemLogQuery query, @Validated PageQuery pageQuery) {
|
||||
public PageDataResp<SystemLogResp> page(SystemLogQuery query, @Validated PageQuery pageQuery) {
|
||||
return logService.page(query, pageQuery);
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ public class LogController {
|
||||
@Operation(summary = "查看系统日志详情", description = "查看系统日志详情")
|
||||
@Parameter(name = "id", description = "ID", example = "1", in = ParameterIn.PATH)
|
||||
@GetMapping("/system/{id}")
|
||||
public SystemLogDetailVO get(@PathVariable Long id) {
|
||||
public SystemLogDetailResp get(@PathVariable Long id) {
|
||||
return logService.get(id);
|
||||
}
|
||||
}
|
||||
|
@@ -30,11 +30,11 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
|
||||
import top.charles7c.cnadmin.auth.model.query.OnlineUserQuery;
|
||||
import top.charles7c.cnadmin.auth.model.vo.OnlineUserVO;
|
||||
import top.charles7c.cnadmin.auth.model.resp.OnlineUserResp;
|
||||
import top.charles7c.cnadmin.auth.service.OnlineUserService;
|
||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.PageDataResp;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
|
||||
/**
|
||||
@@ -54,7 +54,7 @@ public class OnlineUserController {
|
||||
@Operation(summary = "分页查询列表", description = "分页查询列表")
|
||||
@SaCheckPermission("monitor:online:user:list")
|
||||
@GetMapping
|
||||
public PageDataVO<OnlineUserVO> page(OnlineUserQuery query, @Validated PageQuery pageQuery) {
|
||||
public PageDataResp<OnlineUserResp> page(OnlineUserQuery query, @Validated PageQuery pageQuery) {
|
||||
return onlineUserService.page(query, pageQuery);
|
||||
}
|
||||
|
||||
|
@@ -30,12 +30,12 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import top.charles7c.cnadmin.common.annotation.CrudRequestMapping;
|
||||
import top.charles7c.cnadmin.common.base.BaseController;
|
||||
import top.charles7c.cnadmin.common.base.ValidateGroup;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
||||
import top.charles7c.cnadmin.system.model.query.AnnouncementQuery;
|
||||
import top.charles7c.cnadmin.system.model.request.AnnouncementRequest;
|
||||
import top.charles7c.cnadmin.system.model.vo.AnnouncementDetailVO;
|
||||
import top.charles7c.cnadmin.system.model.vo.AnnouncementVO;
|
||||
import top.charles7c.cnadmin.system.model.req.AnnouncementReq;
|
||||
import top.charles7c.cnadmin.system.model.resp.AnnouncementDetailResp;
|
||||
import top.charles7c.cnadmin.system.model.resp.AnnouncementResp;
|
||||
import top.charles7c.cnadmin.system.service.AnnouncementService;
|
||||
|
||||
/**
|
||||
@@ -49,32 +49,32 @@ import top.charles7c.cnadmin.system.service.AnnouncementService;
|
||||
@CrudRequestMapping(value = "/system/announcement",
|
||||
api = {Api.PAGE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT})
|
||||
public class AnnouncementController extends
|
||||
BaseController<AnnouncementService, AnnouncementVO, AnnouncementDetailVO, AnnouncementQuery, AnnouncementRequest> {
|
||||
BaseController<AnnouncementService, AnnouncementResp, AnnouncementDetailResp, AnnouncementQuery, AnnouncementReq> {
|
||||
|
||||
@Override
|
||||
@SaCheckPermission("system:announcement:add")
|
||||
public R<Long> add(@Validated(ValidateGroup.Crud.Add.class) @RequestBody AnnouncementRequest request) {
|
||||
this.checkTime(request);
|
||||
return super.add(request);
|
||||
public R<Long> add(@Validated(ValidateGroup.Crud.Add.class) @RequestBody AnnouncementReq req) {
|
||||
this.checkTime(req);
|
||||
return super.add(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SaCheckPermission("system:announcement:update")
|
||||
public R update(@Validated(ValidateGroup.Crud.Update.class) @RequestBody AnnouncementRequest request,
|
||||
public R update(@Validated(ValidateGroup.Crud.Update.class) @RequestBody AnnouncementReq req,
|
||||
@PathVariable Long id) {
|
||||
this.checkTime(request);
|
||||
return super.update(request, id);
|
||||
this.checkTime(req);
|
||||
return super.update(req, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查时间
|
||||
*
|
||||
* @param request
|
||||
* @param req
|
||||
* 创建或修改信息
|
||||
*/
|
||||
private void checkTime(AnnouncementRequest request) {
|
||||
LocalDateTime effectiveTime = request.getEffectiveTime();
|
||||
LocalDateTime terminateTime = request.getTerminateTime();
|
||||
private void checkTime(AnnouncementReq req) {
|
||||
LocalDateTime effectiveTime = req.getEffectiveTime();
|
||||
LocalDateTime terminateTime = req.getTerminateTime();
|
||||
if (null != effectiveTime && null != terminateTime) {
|
||||
ValidationUtils.throwIf(terminateTime.isBefore(effectiveTime), "终止时间必须晚于生效时间");
|
||||
}
|
||||
|
@@ -25,9 +25,9 @@ import org.springframework.web.bind.annotation.*;
|
||||
import top.charles7c.cnadmin.common.annotation.CrudRequestMapping;
|
||||
import top.charles7c.cnadmin.common.base.BaseController;
|
||||
import top.charles7c.cnadmin.system.model.query.DeptQuery;
|
||||
import top.charles7c.cnadmin.system.model.request.DeptRequest;
|
||||
import top.charles7c.cnadmin.system.model.vo.DeptDetailVO;
|
||||
import top.charles7c.cnadmin.system.model.vo.DeptVO;
|
||||
import top.charles7c.cnadmin.system.model.req.DeptReq;
|
||||
import top.charles7c.cnadmin.system.model.resp.DeptDetailResp;
|
||||
import top.charles7c.cnadmin.system.model.resp.DeptResp;
|
||||
import top.charles7c.cnadmin.system.service.DeptService;
|
||||
|
||||
/**
|
||||
@@ -39,4 +39,4 @@ import top.charles7c.cnadmin.system.service.DeptService;
|
||||
@Tag(name = "部门管理 API")
|
||||
@RestController
|
||||
@CrudRequestMapping(value = "/system/dept", api = {Api.TREE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT})
|
||||
public class DeptController extends BaseController<DeptService, DeptVO, DeptDetailVO, DeptQuery, DeptRequest> {}
|
||||
public class DeptController extends BaseController<DeptService, DeptResp, DeptDetailResp, DeptQuery, DeptReq> {}
|
||||
|
@@ -25,9 +25,9 @@ import org.springframework.web.bind.annotation.*;
|
||||
import top.charles7c.cnadmin.common.annotation.CrudRequestMapping;
|
||||
import top.charles7c.cnadmin.common.base.BaseController;
|
||||
import top.charles7c.cnadmin.system.model.query.DictQuery;
|
||||
import top.charles7c.cnadmin.system.model.request.DictRequest;
|
||||
import top.charles7c.cnadmin.system.model.vo.DictDetailVO;
|
||||
import top.charles7c.cnadmin.system.model.vo.DictVO;
|
||||
import top.charles7c.cnadmin.system.model.req.DictReq;
|
||||
import top.charles7c.cnadmin.system.model.resp.DictDetailResp;
|
||||
import top.charles7c.cnadmin.system.model.resp.DictResp;
|
||||
import top.charles7c.cnadmin.system.service.DictService;
|
||||
|
||||
/**
|
||||
@@ -39,4 +39,4 @@ import top.charles7c.cnadmin.system.service.DictService;
|
||||
@Tag(name = "字典管理 API")
|
||||
@RestController
|
||||
@CrudRequestMapping(value = "/system/dict", api = {Api.PAGE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT})
|
||||
public class DictController extends BaseController<DictService, DictVO, DictDetailVO, DictQuery, DictRequest> {}
|
||||
public class DictController extends BaseController<DictService, DictResp, DictDetailResp, DictQuery, DictReq> {}
|
@@ -25,9 +25,9 @@ import org.springframework.web.bind.annotation.*;
|
||||
import top.charles7c.cnadmin.common.annotation.CrudRequestMapping;
|
||||
import top.charles7c.cnadmin.common.base.BaseController;
|
||||
import top.charles7c.cnadmin.system.model.query.DictItemQuery;
|
||||
import top.charles7c.cnadmin.system.model.request.DictItemRequest;
|
||||
import top.charles7c.cnadmin.system.model.vo.DictItemDetailVO;
|
||||
import top.charles7c.cnadmin.system.model.vo.DictItemVO;
|
||||
import top.charles7c.cnadmin.system.model.req.DictItemReq;
|
||||
import top.charles7c.cnadmin.system.model.resp.DictItemDetailResp;
|
||||
import top.charles7c.cnadmin.system.model.resp.DictItemResp;
|
||||
import top.charles7c.cnadmin.system.service.DictItemService;
|
||||
|
||||
/**
|
||||
@@ -40,4 +40,4 @@ import top.charles7c.cnadmin.system.service.DictItemService;
|
||||
@RestController
|
||||
@CrudRequestMapping(value = "/system/dict/item", api = {Api.PAGE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE})
|
||||
public class DictItemController
|
||||
extends BaseController<DictItemService, DictItemVO, DictItemDetailVO, DictItemQuery, DictItemRequest> {}
|
||||
extends BaseController<DictItemService, DictItemResp, DictItemDetailResp, DictItemQuery, DictItemReq> {}
|
@@ -31,12 +31,12 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import top.charles7c.cnadmin.common.annotation.CrudRequestMapping;
|
||||
import top.charles7c.cnadmin.common.base.BaseController;
|
||||
import top.charles7c.cnadmin.common.base.ValidateGroup;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.URLUtils;
|
||||
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
||||
import top.charles7c.cnadmin.system.model.query.MenuQuery;
|
||||
import top.charles7c.cnadmin.system.model.request.MenuRequest;
|
||||
import top.charles7c.cnadmin.system.model.vo.MenuVO;
|
||||
import top.charles7c.cnadmin.system.model.req.MenuReq;
|
||||
import top.charles7c.cnadmin.system.model.resp.MenuResp;
|
||||
import top.charles7c.cnadmin.system.service.MenuService;
|
||||
|
||||
/**
|
||||
@@ -48,32 +48,31 @@ import top.charles7c.cnadmin.system.service.MenuService;
|
||||
@Tag(name = "菜单管理 API")
|
||||
@RestController
|
||||
@CrudRequestMapping(value = "/system/menu", api = {Api.TREE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT})
|
||||
public class MenuController extends BaseController<MenuService, MenuVO, MenuVO, MenuQuery, MenuRequest> {
|
||||
public class MenuController extends BaseController<MenuService, MenuResp, MenuResp, MenuQuery, MenuReq> {
|
||||
|
||||
@Override
|
||||
@SaCheckPermission("system:menu:add")
|
||||
public R<Long> add(@Validated(ValidateGroup.Crud.Add.class) @RequestBody MenuRequest request) {
|
||||
this.checkPath(request);
|
||||
return super.add(request);
|
||||
public R<Long> add(@Validated(ValidateGroup.Crud.Add.class) @RequestBody MenuReq req) {
|
||||
this.checkPath(req);
|
||||
return super.add(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SaCheckPermission("system:menu:update")
|
||||
public R update(@Validated(ValidateGroup.Crud.Update.class) @RequestBody MenuRequest request,
|
||||
@PathVariable Long id) {
|
||||
this.checkPath(request);
|
||||
return super.update(request, id);
|
||||
public R update(@Validated(ValidateGroup.Crud.Update.class) @RequestBody MenuReq req, @PathVariable Long id) {
|
||||
this.checkPath(req);
|
||||
return super.update(req, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查路由地址格式
|
||||
*
|
||||
* @param request
|
||||
* @param req
|
||||
* 创建或修改信息
|
||||
*/
|
||||
private void checkPath(MenuRequest request) {
|
||||
Boolean isExternal = ObjectUtil.defaultIfNull(request.getIsExternal(), false);
|
||||
String path = request.getPath();
|
||||
private void checkPath(MenuReq req) {
|
||||
Boolean isExternal = ObjectUtil.defaultIfNull(req.getIsExternal(), false);
|
||||
String path = req.getPath();
|
||||
ValidationUtils.throwIf(isExternal && !URLUtils.isHttpUrl(path), "路由地址格式错误,请以 http:// 或 https:// 开头");
|
||||
ValidationUtils.throwIf(!isExternal && URLUtils.isHttpUrl(path), "路由地址格式错误");
|
||||
}
|
||||
|
@@ -29,13 +29,13 @@ import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.PageDataResp;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
||||
import top.charles7c.cnadmin.monitor.annotation.Log;
|
||||
import top.charles7c.cnadmin.system.model.query.MessageQuery;
|
||||
import top.charles7c.cnadmin.system.model.vo.MessageUnreadVO;
|
||||
import top.charles7c.cnadmin.system.model.vo.MessageVO;
|
||||
import top.charles7c.cnadmin.system.model.resp.MessageResp;
|
||||
import top.charles7c.cnadmin.system.model.resp.MessageUnreadResp;
|
||||
import top.charles7c.cnadmin.system.service.MessageService;
|
||||
import top.charles7c.cnadmin.system.service.MessageUserService;
|
||||
|
||||
@@ -56,7 +56,7 @@ public class MessageController {
|
||||
|
||||
@Operation(summary = "分页查询列表", description = "分页查询列表")
|
||||
@GetMapping
|
||||
public PageDataVO<MessageVO> page(MessageQuery query, @Validated PageQuery pageQuery) {
|
||||
public PageDataResp<MessageResp> page(MessageQuery query, @Validated PageQuery pageQuery) {
|
||||
query.setUserId(LoginHelper.getUserId());
|
||||
return baseService.page(query, pageQuery);
|
||||
}
|
||||
@@ -69,7 +69,7 @@ public class MessageController {
|
||||
return R.ok("删除成功");
|
||||
}
|
||||
|
||||
@Operation(description = "标记已读", summary = "将消息标记为已读状态")
|
||||
@Operation(summary = "标记已读", description = "将消息标记为已读状态")
|
||||
@Parameter(name = "ids", description = "消息ID列表", example = "1,2", in = ParameterIn.QUERY)
|
||||
@PatchMapping("/read")
|
||||
public void readMessage(@RequestParam(required = false) List<Long> ids) {
|
||||
@@ -77,10 +77,10 @@ public class MessageController {
|
||||
}
|
||||
|
||||
@Log(ignore = true)
|
||||
@Operation(description = "查询未读消息数量", summary = "查询当前用户的未读消息数量")
|
||||
@Operation(summary = "查询未读消息数量", description = "查询当前用户的未读消息数量")
|
||||
@Parameter(name = "isDetail", description = "是否查询详情", example = "true", in = ParameterIn.QUERY)
|
||||
@GetMapping("/unread")
|
||||
public MessageUnreadVO countUnreadMessage(@RequestParam(required = false) Boolean detail) {
|
||||
public MessageUnreadResp countUnreadMessage(@RequestParam(required = false) Boolean detail) {
|
||||
return messageUserService.countUnreadMessageByUserId(LoginHelper.getUserId(), detail);
|
||||
}
|
||||
}
|
@@ -29,9 +29,9 @@ import org.springframework.web.bind.annotation.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
|
||||
import top.charles7c.cnadmin.system.model.query.OptionQuery;
|
||||
import top.charles7c.cnadmin.system.model.request.OptionRequest;
|
||||
import top.charles7c.cnadmin.system.model.request.OptionResetValueRequest;
|
||||
import top.charles7c.cnadmin.system.model.vo.OptionVO;
|
||||
import top.charles7c.cnadmin.system.model.req.OptionReq;
|
||||
import top.charles7c.cnadmin.system.model.req.OptionResetValueReq;
|
||||
import top.charles7c.cnadmin.system.model.resp.OptionResp;
|
||||
import top.charles7c.cnadmin.system.service.OptionService;
|
||||
|
||||
/**
|
||||
@@ -51,21 +51,21 @@ public class OptionController {
|
||||
@Operation(summary = "查询参数列表", description = "查询参数列表")
|
||||
@SaCheckPermission("system:config:list")
|
||||
@GetMapping
|
||||
public List<OptionVO> list(@Validated OptionQuery query) {
|
||||
public List<OptionResp> list(@Validated OptionQuery query) {
|
||||
return optionService.list(query);
|
||||
}
|
||||
|
||||
@Operation(summary = "修改参数", description = "修改参数")
|
||||
@SaCheckPermission("system:config:update")
|
||||
@PatchMapping
|
||||
public void update(@Validated @RequestBody List<OptionRequest> request) {
|
||||
optionService.update(request);
|
||||
public void update(@Validated @RequestBody List<OptionReq> req) {
|
||||
optionService.update(req);
|
||||
}
|
||||
|
||||
@Operation(summary = "重置参数", description = "重置参数")
|
||||
@SaCheckPermission("system:config:reset")
|
||||
@PatchMapping("/value")
|
||||
public void resetValue(@Validated @RequestBody OptionResetValueRequest request) {
|
||||
optionService.resetValue(request);
|
||||
public void resetValue(@Validated @RequestBody OptionResetValueReq req) {
|
||||
optionService.resetValue(req);
|
||||
}
|
||||
}
|
@@ -23,9 +23,9 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
import top.charles7c.cnadmin.common.annotation.CrudRequestMapping;
|
||||
import top.charles7c.cnadmin.common.base.BaseController;
|
||||
import top.charles7c.cnadmin.system.model.query.RoleQuery;
|
||||
import top.charles7c.cnadmin.system.model.request.RoleRequest;
|
||||
import top.charles7c.cnadmin.system.model.vo.RoleDetailVO;
|
||||
import top.charles7c.cnadmin.system.model.vo.RoleVO;
|
||||
import top.charles7c.cnadmin.system.model.req.RoleReq;
|
||||
import top.charles7c.cnadmin.system.model.resp.RoleDetailResp;
|
||||
import top.charles7c.cnadmin.system.model.resp.RoleResp;
|
||||
import top.charles7c.cnadmin.system.service.RoleService;
|
||||
|
||||
/**
|
||||
@@ -37,4 +37,4 @@ import top.charles7c.cnadmin.system.service.RoleService;
|
||||
@Tag(name = "角色管理 API")
|
||||
@RestController
|
||||
@CrudRequestMapping("/system/role")
|
||||
public class RoleController extends BaseController<RoleService, RoleVO, RoleDetailVO, RoleQuery, RoleRequest> {}
|
||||
public class RoleController extends BaseController<RoleService, RoleResp, RoleDetailResp, RoleQuery, RoleReq> {}
|
||||
|
@@ -39,19 +39,19 @@ import cn.hutool.core.util.ReUtil;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.enums.SocialSourceEnum;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.ExceptionUtils;
|
||||
import top.charles7c.cnadmin.common.util.RedisUtils;
|
||||
import top.charles7c.cnadmin.common.util.SecureUtils;
|
||||
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
||||
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
||||
import top.charles7c.cnadmin.system.model.entity.UserSocialDO;
|
||||
import top.charles7c.cnadmin.system.model.request.UserBasicInfoUpdateRequest;
|
||||
import top.charles7c.cnadmin.system.model.request.UserEmailUpdateRequest;
|
||||
import top.charles7c.cnadmin.system.model.request.UserPasswordUpdateRequest;
|
||||
import top.charles7c.cnadmin.system.model.request.UserPhoneUpdateRequest;
|
||||
import top.charles7c.cnadmin.system.model.vo.AvatarVO;
|
||||
import top.charles7c.cnadmin.system.model.vo.UserSocialBindVO;
|
||||
import top.charles7c.cnadmin.system.model.req.UserBasicInfoUpdateReq;
|
||||
import top.charles7c.cnadmin.system.model.req.UserEmailUpdateRequest;
|
||||
import top.charles7c.cnadmin.system.model.req.UserPasswordUpdateReq;
|
||||
import top.charles7c.cnadmin.system.model.req.UserPhoneUpdateReq;
|
||||
import top.charles7c.cnadmin.system.model.resp.AvatarResp;
|
||||
import top.charles7c.cnadmin.system.model.resp.UserSocialBindResp;
|
||||
import top.charles7c.cnadmin.system.service.UserService;
|
||||
import top.charles7c.cnadmin.system.service.UserSocialService;
|
||||
|
||||
@@ -79,27 +79,27 @@ public class UserCenterController {
|
||||
|
||||
@Operation(summary = "上传头像", description = "用户上传个人头像")
|
||||
@PostMapping("/avatar")
|
||||
public R<AvatarVO> uploadAvatar(@NotNull(message = "头像不能为空") MultipartFile avatarFile) {
|
||||
public R<AvatarResp> uploadAvatar(@NotNull(message = "头像不能为空") MultipartFile avatarFile) {
|
||||
ValidationUtils.throwIf(avatarFile::isEmpty, "头像不能为空");
|
||||
String newAvatar = userService.uploadAvatar(avatarFile, LoginHelper.getUserId());
|
||||
return R.ok("上传成功", AvatarVO.builder().avatar(newAvatar).build());
|
||||
return R.ok("上传成功", AvatarResp.builder().avatar(newAvatar).build());
|
||||
}
|
||||
|
||||
@Operation(summary = "修改基础信息", description = "修改用户基础信息")
|
||||
@PatchMapping("/basic/info")
|
||||
public R updateBasicInfo(@Validated @RequestBody UserBasicInfoUpdateRequest updateRequest) {
|
||||
userService.updateBasicInfo(updateRequest, LoginHelper.getUserId());
|
||||
public R updateBasicInfo(@Validated @RequestBody UserBasicInfoUpdateReq updateReq) {
|
||||
userService.updateBasicInfo(updateReq, LoginHelper.getUserId());
|
||||
return R.ok("修改成功");
|
||||
}
|
||||
|
||||
@Operation(summary = "修改密码", description = "修改用户登录密码")
|
||||
@PatchMapping("/password")
|
||||
public R updatePassword(@Validated @RequestBody UserPasswordUpdateRequest updateRequest) {
|
||||
public R updatePassword(@Validated @RequestBody UserPasswordUpdateReq updateReq) {
|
||||
String rawOldPassword =
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateRequest.getOldPassword()));
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateReq.getOldPassword()));
|
||||
ValidationUtils.throwIfNull(rawOldPassword, "当前密码解密失败");
|
||||
String rawNewPassword =
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateRequest.getNewPassword()));
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateReq.getNewPassword()));
|
||||
ValidationUtils.throwIfNull(rawNewPassword, "新密码解密失败");
|
||||
ValidationUtils.throwIf(!ReUtil.isMatch(RegexConsts.PASSWORD, rawNewPassword),
|
||||
"密码长度为 6 到 32 位,可以包含字母、数字、下划线,特殊字符,同时包含字母和数字");
|
||||
@@ -109,41 +109,41 @@ public class UserCenterController {
|
||||
|
||||
@Operation(summary = "修改手机号", description = "修改手机号")
|
||||
@PatchMapping("/phone")
|
||||
public R updatePhone(@Validated @RequestBody UserPhoneUpdateRequest updateRequest) {
|
||||
public R updatePhone(@Validated @RequestBody UserPhoneUpdateReq updateReq) {
|
||||
String rawCurrentPassword =
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateRequest.getCurrentPassword()));
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateReq.getCurrentPassword()));
|
||||
ValidationUtils.throwIfBlank(rawCurrentPassword, "当前密码解密失败");
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, updateRequest.getNewPhone());
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, updateReq.getNewPhone());
|
||||
String captcha = RedisUtils.getCacheObject(captchaKey);
|
||||
ValidationUtils.throwIfBlank(captcha, "验证码已失效");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(updateRequest.getCaptcha(), captcha, "验证码错误");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(updateReq.getCaptcha(), captcha, "验证码错误");
|
||||
RedisUtils.deleteCacheObject(captchaKey);
|
||||
userService.updatePhone(updateRequest.getNewPhone(), rawCurrentPassword, LoginHelper.getUserId());
|
||||
userService.updatePhone(updateReq.getNewPhone(), rawCurrentPassword, LoginHelper.getUserId());
|
||||
return R.ok("修改成功");
|
||||
}
|
||||
|
||||
@Operation(summary = "修改邮箱", description = "修改用户邮箱")
|
||||
@PatchMapping("/email")
|
||||
public R updateEmail(@Validated @RequestBody UserEmailUpdateRequest updateRequest) {
|
||||
public R updateEmail(@Validated @RequestBody UserEmailUpdateRequest updateReq) {
|
||||
String rawCurrentPassword =
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateRequest.getCurrentPassword()));
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateReq.getCurrentPassword()));
|
||||
ValidationUtils.throwIfBlank(rawCurrentPassword, "当前密码解密失败");
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, updateRequest.getNewEmail());
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, updateReq.getNewEmail());
|
||||
String captcha = RedisUtils.getCacheObject(captchaKey);
|
||||
ValidationUtils.throwIfBlank(captcha, "验证码已失效");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(updateRequest.getCaptcha(), captcha, "验证码错误");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(updateReq.getCaptcha(), captcha, "验证码错误");
|
||||
RedisUtils.deleteCacheObject(captchaKey);
|
||||
userService.updateEmail(updateRequest.getNewEmail(), rawCurrentPassword, LoginHelper.getUserId());
|
||||
userService.updateEmail(updateReq.getNewEmail(), rawCurrentPassword, LoginHelper.getUserId());
|
||||
return R.ok("修改成功");
|
||||
}
|
||||
|
||||
@Operation(summary = "查询绑定的三方账号", description = "查询绑定的三方账号")
|
||||
@GetMapping("/social")
|
||||
public List<UserSocialBindVO> listSocialBind() {
|
||||
public List<UserSocialBindResp> listSocialBind() {
|
||||
List<UserSocialDO> userSocialList = userSocialService.listByUserId(LoginHelper.getUserId());
|
||||
return userSocialList.stream().map(userSocial -> {
|
||||
String source = userSocial.getSource();
|
||||
UserSocialBindVO userSocialBind = new UserSocialBindVO();
|
||||
UserSocialBindResp userSocialBind = new UserSocialBindResp();
|
||||
userSocialBind.setSource(source);
|
||||
userSocialBind.setDescription(SocialSourceEnum.valueOf(source).getDescription());
|
||||
return userSocialBind;
|
||||
|
@@ -33,12 +33,12 @@ import top.charles7c.cnadmin.common.annotation.CrudRequestMapping;
|
||||
import top.charles7c.cnadmin.common.base.BaseController;
|
||||
import top.charles7c.cnadmin.common.base.ValidateGroup;
|
||||
import top.charles7c.cnadmin.common.constant.SysConsts;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.system.model.query.UserQuery;
|
||||
import top.charles7c.cnadmin.system.model.request.UserRequest;
|
||||
import top.charles7c.cnadmin.system.model.request.UserRoleUpdateRequest;
|
||||
import top.charles7c.cnadmin.system.model.vo.UserDetailVO;
|
||||
import top.charles7c.cnadmin.system.model.vo.UserVO;
|
||||
import top.charles7c.cnadmin.system.model.req.UserReq;
|
||||
import top.charles7c.cnadmin.system.model.req.UserRoleUpdateReq;
|
||||
import top.charles7c.cnadmin.system.model.resp.UserDetailResp;
|
||||
import top.charles7c.cnadmin.system.model.resp.UserResp;
|
||||
import top.charles7c.cnadmin.system.service.UserService;
|
||||
|
||||
/**
|
||||
@@ -51,12 +51,12 @@ import top.charles7c.cnadmin.system.service.UserService;
|
||||
@Validated
|
||||
@RestController
|
||||
@CrudRequestMapping("/system/user")
|
||||
public class UserController extends BaseController<UserService, UserVO, UserDetailVO, UserQuery, UserRequest> {
|
||||
public class UserController extends BaseController<UserService, UserResp, UserDetailResp, UserQuery, UserReq> {
|
||||
|
||||
@Override
|
||||
@SaCheckPermission("system:user:add")
|
||||
public R<Long> add(@Validated(ValidateGroup.Crud.Add.class) @RequestBody UserRequest request) {
|
||||
Long id = baseService.add(request);
|
||||
public R<Long> add(@Validated(ValidateGroup.Crud.Add.class) @RequestBody UserReq req) {
|
||||
Long id = baseService.add(req);
|
||||
return R.ok(String.format("新增成功,请牢记默认密码:%s", SysConsts.DEFAULT_PASSWORD), id);
|
||||
}
|
||||
|
||||
@@ -73,8 +73,8 @@ public class UserController extends BaseController<UserService, UserVO, UserDeta
|
||||
@Parameter(name = "id", description = "ID", example = "1", in = ParameterIn.PATH)
|
||||
@SaCheckPermission("system:user:role:update")
|
||||
@PatchMapping("/{id}/role")
|
||||
public R updateRole(@Validated @RequestBody UserRoleUpdateRequest updateRequest, @PathVariable Long id) {
|
||||
baseService.updateRole(updateRequest, id);
|
||||
public R updateRole(@Validated @RequestBody UserRoleUpdateReq updateReq, @PathVariable Long id) {
|
||||
baseService.updateRole(updateReq, id);
|
||||
return R.ok("分配成功");
|
||||
}
|
||||
}
|
||||
|
@@ -33,14 +33,14 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
|
||||
import top.charles7c.cnadmin.common.config.properties.ProjectProperties;
|
||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.PageDataResp;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
||||
import top.charles7c.cnadmin.tool.model.entity.FieldConfigDO;
|
||||
import top.charles7c.cnadmin.tool.model.entity.GenConfigDO;
|
||||
import top.charles7c.cnadmin.tool.model.query.TableQuery;
|
||||
import top.charles7c.cnadmin.tool.model.request.GenConfigRequest;
|
||||
import top.charles7c.cnadmin.tool.model.vo.TableVO;
|
||||
import top.charles7c.cnadmin.tool.model.req.GenConfigReq;
|
||||
import top.charles7c.cnadmin.tool.model.resp.TableResp;
|
||||
import top.charles7c.cnadmin.tool.service.GeneratorService;
|
||||
|
||||
/**
|
||||
@@ -62,7 +62,7 @@ public class GeneratorController {
|
||||
@Operation(summary = "分页查询数据表", description = "分页查询数据表")
|
||||
@SaCheckPermission("tool:generator:list")
|
||||
@GetMapping("/table")
|
||||
public PageDataVO<TableVO> pageTable(TableQuery query, @Validated PageQuery pageQuery) throws SQLException {
|
||||
public PageDataResp<TableResp> pageTable(TableQuery query, @Validated PageQuery pageQuery) throws SQLException {
|
||||
return generatorService.pageTable(query, pageQuery);
|
||||
}
|
||||
|
||||
@@ -88,8 +88,8 @@ public class GeneratorController {
|
||||
@Parameter(name = "tableName", description = "表名称", required = true, example = "sys_user", in = ParameterIn.PATH)
|
||||
@SaCheckPermission("tool:generator:list")
|
||||
@PostMapping("/config/{tableName}")
|
||||
public R saveConfig(@Validated @RequestBody GenConfigRequest request, @PathVariable String tableName) {
|
||||
generatorService.saveConfig(request, tableName);
|
||||
public R saveConfig(@Validated @RequestBody GenConfigReq req, @PathVariable String tableName) {
|
||||
generatorService.saveConfig(req, tableName);
|
||||
return R.ok("保存成功");
|
||||
}
|
||||
|
||||
|
@@ -246,19 +246,19 @@ generator:
|
||||
Query:
|
||||
templatePath: generator/Query.ftl
|
||||
packageName: model.query
|
||||
Request:
|
||||
templatePath: generator/Request.ftl
|
||||
packageName: model.request
|
||||
VO:
|
||||
templatePath: generator/VO.ftl
|
||||
packageName: model.vo
|
||||
Req:
|
||||
templatePath: generator/Req.ftl
|
||||
packageName: model.req
|
||||
Resp:
|
||||
templatePath: generator/Resp.ftl
|
||||
packageName: model.resp
|
||||
excludeFields:
|
||||
- id
|
||||
- createUser
|
||||
- createTime
|
||||
DetailVO:
|
||||
templatePath: generator/DetailVO.ftl
|
||||
packageName: model.vo
|
||||
DetailResp:
|
||||
templatePath: generator/DetailResp.ftl
|
||||
packageName: model.resp
|
||||
excludeFields:
|
||||
- id
|
||||
- createUser
|
||||
|
Reference in New Issue
Block a user