diff --git a/src/main/java/com/huoran/iasf/common/exception/BusinessException.java b/src/main/java/com/huoran/iasf/common/exception/BusinessException.java index acff00a..c01cdf3 100644 --- a/src/main/java/com/huoran/iasf/common/exception/BusinessException.java +++ b/src/main/java/com/huoran/iasf/common/exception/BusinessException.java @@ -11,6 +11,7 @@ import com.huoran.iasf.common.exception.code.ResponseCodeInterface; * @date 2022年7月28日 */ public class BusinessException extends RuntimeException { + /** * 异常编号 */ diff --git a/src/main/java/com/huoran/iasf/common/job/task/TestTask.java b/src/main/java/com/huoran/iasf/common/job/task/TestTask.java index 3cfc47c..893bab2 100644 --- a/src/main/java/com/huoran/iasf/common/job/task/TestTask.java +++ b/src/main/java/com/huoran/iasf/common/job/task/TestTask.java @@ -2,7 +2,6 @@ package com.huoran.iasf.common.job.task; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; /** * 测试定时任务(演示Demo,可删除) @@ -12,7 +11,7 @@ import org.springframework.stereotype.Component; * @version V1.0 * @date 2022年7月28日 */ -@Component("testTask") +// @Component("testTask") public class TestTask { private Logger logger = LoggerFactory.getLogger(getClass()); diff --git a/src/main/java/com/huoran/iasf/common/job/utils/ScheduleJob.java b/src/main/java/com/huoran/iasf/common/job/utils/ScheduleJob.java index 613dea6..e533785 100644 --- a/src/main/java/com/huoran/iasf/common/job/utils/ScheduleJob.java +++ b/src/main/java/com/huoran/iasf/common/job/utils/ScheduleJob.java @@ -1,3 +1,4 @@ +/* package com.huoran.iasf.common.job.utils; import com.huoran.iasf.common.utils.R; @@ -14,13 +15,15 @@ import org.springframework.scheduling.quartz.QuartzJobBean; import java.lang.reflect.Method; +*/ /** * 定时任务 * * @author cheney * @version V1.0 * @date 2022年7月28日 - */ + *//* + public class ScheduleJob extends QuartzJobBean { private Logger logger = LoggerFactory.getLogger(getClass()); @@ -80,12 +83,14 @@ public class ScheduleJob extends QuartzJobBean { } } - /** + */ +/** * 判断bean是否有效 * * @param beanName beanName * @return 返回信息 - */ + *//* + public static R judgeBean(String beanName) { if (org.springframework.util.StringUtils.isEmpty(beanName)) { @@ -109,3 +114,4 @@ public class ScheduleJob extends QuartzJobBean { return R.success(); } } +*/ diff --git a/src/main/java/com/huoran/iasf/common/job/utils/ScheduleUtils.java b/src/main/java/com/huoran/iasf/common/job/utils/ScheduleUtils.java index af69315..646d56c 100644 --- a/src/main/java/com/huoran/iasf/common/job/utils/ScheduleUtils.java +++ b/src/main/java/com/huoran/iasf/common/job/utils/ScheduleUtils.java @@ -1,3 +1,4 @@ +/* package com.huoran.iasf.common.job.utils; import com.huoran.iasf.common.exception.BusinessException; @@ -5,33 +6,41 @@ import com.huoran.iasf.common.utils.Constant; import com.huoran.iasf.entity.SysJobEntity; import org.quartz.*; +*/ /** * 定时任务工具类 * * @author cheney * @version V1.0 * @date 2022年7月28日 - */ + *//* + public class ScheduleUtils { private final static String JOB_NAME = "TASK_"; - /** + */ +/** * 获取触发器key - */ + *//* + public static TriggerKey getTriggerKey(String jobId) { return TriggerKey.triggerKey(JOB_NAME + jobId); } - /** + */ +/** * 获取jobKey - */ + *//* + public static JobKey getJobKey(String jobId) { return JobKey.jobKey(JOB_NAME + jobId); } - /** + */ +/** * 获取表达式触发器 - */ + *//* + public static CronTrigger getCronTrigger(Scheduler scheduler, String jobId) { try { return (CronTrigger) scheduler.getTrigger(getTriggerKey(jobId)); @@ -40,9 +49,11 @@ public class ScheduleUtils { } } - /** + */ +/** * 创建定时任务 - */ + *//* + public static void createScheduleJob(Scheduler scheduler, SysJobEntity scheduleJob) { try { //构建job信息 @@ -69,9 +80,11 @@ public class ScheduleUtils { } } - /** + */ +/** * 更新定时任务 - */ + *//* + public static void updateScheduleJob(Scheduler scheduler, SysJobEntity scheduleJob) { try { TriggerKey triggerKey = getTriggerKey(scheduleJob.getId()); @@ -100,9 +113,11 @@ public class ScheduleUtils { } } - /** + */ +/** * 立即执行任务 - */ + *//* + public static void run(Scheduler scheduler, SysJobEntity scheduleJob) { try { //参数 @@ -115,9 +130,11 @@ public class ScheduleUtils { } } - /** + */ +/** * 暂停任务 - */ + *//* + public static void pauseJob(Scheduler scheduler, String jobId) { try { scheduler.pauseJob(getJobKey(jobId)); @@ -126,9 +143,11 @@ public class ScheduleUtils { } } - /** + */ +/** * 恢复任务 - */ + *//* + public static void resumeJob(Scheduler scheduler, String jobId) { try { scheduler.resumeJob(getJobKey(jobId)); @@ -137,9 +156,11 @@ public class ScheduleUtils { } } - /** + */ +/** * 删除定时任务 - */ + *//* + public static void deleteScheduleJob(Scheduler scheduler, String jobId) { try { scheduler.deleteJob(getJobKey(jobId)); @@ -148,3 +169,4 @@ public class ScheduleUtils { } } } +*/ diff --git a/src/main/java/com/huoran/iasf/common/utils/Constant.java b/src/main/java/com/huoran/iasf/common/utils/Constant.java index e06e3ec..6e4011c 100644 --- a/src/main/java/com/huoran/iasf/common/utils/Constant.java +++ b/src/main/java/com/huoran/iasf/common/utils/Constant.java @@ -12,7 +12,7 @@ public class Constant { /** * redis的token相关 */ - public static final String ACCESS_TOKEN = "authorization"; + public static final String ACCESS_TOKEN = "token"; public static final String PERMISSIONS_KEY = "permissions-key"; public static final String USERID_KEY = "userid-key"; public static final String USERNAME_KEY = "username-key"; diff --git a/src/main/java/com/huoran/iasf/controller/CaptchaController.java b/src/main/java/com/huoran/iasf/controller/CaptchaController.java index f02fc59..b6b4a16 100644 --- a/src/main/java/com/huoran/iasf/controller/CaptchaController.java +++ b/src/main/java/com/huoran/iasf/controller/CaptchaController.java @@ -1,13 +1,20 @@ package com.huoran.iasf.controller; +import com.huoran.iasf.service.RedisService; import com.wf.captcha.ArithmeticCaptcha; -import com.wf.captcha.utils.CaptchaUtil; +import com.wf.captcha.base.Captcha; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -23,19 +30,39 @@ import java.io.IOException; @Slf4j @RequestMapping("/sys") public class CaptchaController { + + @Resource + private RedisService redisService; /** * 获取验证码图片 * Gets captcha code. - * - * @param request the request - * @param response the response - * @throws IOException the io exception */ - @RequestMapping("/getVerify") +/* @RequestMapping("/getVerify") public void getCaptchaCode(HttpServletRequest request, HttpServletResponse response) throws IOException { ArithmeticCaptcha captcha = new ArithmeticCaptcha(130, 48); captcha.setLen(2); CaptchaUtil.out(captcha, request, response); + }*/ + + @ApiOperation(value = "登录验证码") + @GetMapping(value = "/getVerify",produces = "image/png") + public void captcha( + @ApiParam(name = "random", value = "随机数", required = true) + @RequestParam String random, HttpServletResponse response){ + Captcha captcha = new ArithmeticCaptcha(); + //生成验证码 + String text = captcha.text(); + //缓存验证码 + redisService.setAndExpire(random,text,120); + response.setContentType(MediaType.IMAGE_PNG_VALUE); + response.setHeader(HttpHeaders.PRAGMA, "No-cache"); + response.setHeader(HttpHeaders.CACHE_CONTROL, "No-cache"); + response.setDateHeader(HttpHeaders.EXPIRES, 0L); + try { + captcha.out(response.getOutputStream()); + } catch (IOException e) { + e.printStackTrace(); + } } } diff --git a/src/main/java/com/huoran/iasf/controller/RoleController.java b/src/main/java/com/huoran/iasf/controller/RoleController.java index 5cdfbd2..19b0a49 100644 --- a/src/main/java/com/huoran/iasf/controller/RoleController.java +++ b/src/main/java/com/huoran/iasf/controller/RoleController.java @@ -116,7 +116,7 @@ public class RoleController { if (!StringUtils.isEmpty(vo.getName())) { queryWrapper.like(SysRole::getName, vo.getName()); } - if (!StringUtils.isEmpty(vo.getStartTime())) { +/* if (!StringUtils.isEmpty(vo.getStartTime())) { queryWrapper.gt(SysRole::getCreateTime, vo.getStartTime()); } if (!StringUtils.isEmpty(vo.getEndTime())) { @@ -124,7 +124,7 @@ public class RoleController { } if (!StringUtils.isEmpty(vo.getStatus())) { queryWrapper.eq(SysRole::getStatus, vo.getStatus()); - } + }*/ queryWrapper.orderByDesc(SysRole::getCreateTime); return R.success(roleService.page(vo.getQueryPage(), queryWrapper)); } diff --git a/src/main/java/com/huoran/iasf/controller/UserController.java b/src/main/java/com/huoran/iasf/controller/UserController.java index a5a0d4b..336e554 100644 --- a/src/main/java/com/huoran/iasf/controller/UserController.java +++ b/src/main/java/com/huoran/iasf/controller/UserController.java @@ -3,7 +3,6 @@ package com.huoran.iasf.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.huoran.iasf.common.aop.annotation.LogAnnotation; -import com.huoran.iasf.common.exception.code.BaseResponseCode; import com.huoran.iasf.common.utils.R; import com.huoran.iasf.entity.SysUser; import com.huoran.iasf.entity.SysUserRole; @@ -11,7 +10,6 @@ import com.huoran.iasf.service.HttpSessionService; import com.huoran.iasf.service.UserRoleService; import com.huoran.iasf.service.UserService; import com.huoran.iasf.vo.req.UserRoleOperationReqVO; -import com.wf.captcha.utils.CaptchaUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -24,7 +22,6 @@ import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.List; @@ -49,13 +46,7 @@ public class UserController { @PostMapping(value = "/user/login") @ApiOperation(value = "用户登录接口") - public R login(@RequestBody @Valid SysUser vo, HttpServletRequest request) { - //判断验证码 - if (!CaptchaUtil.ver(vo.getCaptcha(), request)) { - // 清除session中的验证码 - CaptchaUtil.clear(request); - return R.fail("验证码错误!"); - } + public R login(@RequestBody @Valid SysUser vo) { return R.success(userService.login(vo)); } @@ -66,11 +57,11 @@ public class UserController { return R.success(); } - @GetMapping("/user/unLogin") + /*@GetMapping("/user/unLogin") @ApiOperation(value = "引导客户端去登录") public R unLogin() { return R.getResult(BaseResponseCode.TOKEN_ERROR); - } + }*/ @PutMapping("/user") @ApiOperation(value = "更新用户信息接口") diff --git a/src/main/java/com/huoran/iasf/entity/SysContentEntity.java b/src/main/java/com/huoran/iasf/entity/SysContentEntity.java index 7a4db1d..618708a 100644 --- a/src/main/java/com/huoran/iasf/entity/SysContentEntity.java +++ b/src/main/java/com/huoran/iasf/entity/SysContentEntity.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -27,51 +28,60 @@ public class SysContentEntity extends BaseEntity implements Serializable { * 主键id */ @TableId("id") + @ApiModelProperty(value = "主键id") private String id; /** * 主题 */ @TableField("title") + @ApiModelProperty(value = "主题") private String title; /** * 内容 */ @TableField("content") + @ApiModelProperty(value = "内容") private String content; /** * 单个图片url */ + @ApiModelProperty(value = "单个图片url") private String oneImg; /** * 多个图片url */ + @ApiModelProperty(value = "多个图片url") private String multipleImg; /** * 关键字 */ + @ApiModelProperty(value = "关键字") private String keywords; /** * 类型(数据字典) */ @TableField("type") + @ApiModelProperty(value = "类型") private String type; /** * 创建人 */ @TableField(value = "create_id", fill = FieldFill.INSERT) + @ApiModelProperty(value = "创建人") private String createId; /** * 创建时间 */ @TableField(value = "create_time", fill = FieldFill.INSERT) + @ApiModelProperty(value = "创建时间") private Date createTime; diff --git a/src/main/java/com/huoran/iasf/entity/SysDept.java b/src/main/java/com/huoran/iasf/entity/SysDept.java index f2ffe20..879a929 100644 --- a/src/main/java/com/huoran/iasf/entity/SysDept.java +++ b/src/main/java/com/huoran/iasf/entity/SysDept.java @@ -3,6 +3,7 @@ package com.huoran.iasf.entity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -21,25 +22,34 @@ public class SysDept implements Serializable { @TableId private String id; + @ApiModelProperty(value = "部门编号(规则:父级关系编码+自己的编码)") private String deptNo; @NotBlank(message = "机构名称不能为空") + @ApiModelProperty(value = "部门名称") private String name; @NotBlank(message = "父级不能为空") + @ApiModelProperty(value = "父级id") private String pid; @TableField(exist = false) + @ApiModelProperty(value = "父级部门名称") private String pidName; + @ApiModelProperty(value = "状态(1:正常;0:弃用)") private Integer status; + @ApiModelProperty(value = "为了维护更深层级关系") private String relationCode; + @ApiModelProperty(value = "部门经理user_id") private String deptManagerId; + @ApiModelProperty(value = "部门经理名称") private String managerName; + @ApiModelProperty(value = "部门经理联系电话") private String phone; @TableField(fill = FieldFill.INSERT) diff --git a/src/main/java/com/huoran/iasf/entity/SysFilesEntity.java b/src/main/java/com/huoran/iasf/entity/SysFilesEntity.java index eeb3e5d..21c2906 100644 --- a/src/main/java/com/huoran/iasf/entity/SysFilesEntity.java +++ b/src/main/java/com/huoran/iasf/entity/SysFilesEntity.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -27,24 +28,29 @@ public class SysFilesEntity extends BaseEntity implements Serializable { * 主键 */ @TableId("id") + @ApiModelProperty(value = "主键") private String id; /** * URL地址 */ @TableField("url") + @ApiModelProperty(value = "url地址") private String url; /** * 创建时间 */ @TableField(value = "create_date", fill = FieldFill.INSERT) + @ApiModelProperty(value = "创建时间") private Date createDate; @TableField("file_name") + @ApiModelProperty(value = "文件名称") private String fileName; @TableField("file_path") + @ApiModelProperty(value = "文件路径") private String filePath; diff --git a/src/main/java/com/huoran/iasf/entity/SysPermission.java b/src/main/java/com/huoran/iasf/entity/SysPermission.java index 70561b8..cdef760 100644 --- a/src/main/java/com/huoran/iasf/entity/SysPermission.java +++ b/src/main/java/com/huoran/iasf/entity/SysPermission.java @@ -3,6 +3,7 @@ package com.huoran.iasf.entity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -20,32 +21,37 @@ import java.util.Date; @Data public class SysPermission implements Serializable { - @TableId private String id; @NotBlank(message = "菜单权限名称不能为空") + @ApiModelProperty(value = "菜单权限名称") private String name; + @ApiModelProperty(value = "授权(多个用逗号分隔,如:sys:user:add,sys:user:edit)") private String perms; + @ApiModelProperty(value = "访问地址URL") private String url; + @ApiModelProperty(value = "图标") private String icon; + @ApiModelProperty(value = "a target属性:_self _blank") private String target; @NotNull(message = "所属菜单不能为空") + @ApiModelProperty(value = "父级菜单权限id") private String pid; + @ApiModelProperty(value = "排序") private Integer orderNum; @NotNull(message = "菜单权限类型不能为空") + @ApiModelProperty(value = "菜单权限类型(1:目录;2:菜单;3:按钮)") private Integer type; - /** - * 1正常 2禁用 - */ + @ApiModelProperty(value = "状态1:正常 0:禁用") private Integer status; @TableField(fill = FieldFill.INSERT) @@ -58,6 +64,7 @@ public class SysPermission implements Serializable { private Integer deleted; @TableField(exist = false) + @ApiModelProperty(value = "父级菜单权限名称") private String pidName; } \ No newline at end of file diff --git a/src/main/java/com/huoran/iasf/entity/SysRole.java b/src/main/java/com/huoran/iasf/entity/SysRole.java index 978aa8f..ce5e934 100644 --- a/src/main/java/com/huoran/iasf/entity/SysRole.java +++ b/src/main/java/com/huoran/iasf/entity/SysRole.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.huoran.iasf.vo.resp.DeptRespNodeVO; import com.huoran.iasf.vo.resp.PermissionRespNode; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -29,38 +30,52 @@ public class SysRole extends BaseEntity implements Serializable { private String id; @NotBlank(message = "名称不能为空") + @ApiModelProperty(value = "角色名称") private String name; + @ApiModelProperty(value = "角色描述") private String description; + @ApiModelProperty(value = "状态(1:正常0:弃用)") private Integer status; + @ApiModelProperty(value = "数据范围(1:所有 2:自定义 3: 本部门及以下部门 4:仅本部门") private Integer dataScope; @TableField(fill = FieldFill.INSERT) + @ApiModelProperty(value = "创建时间") private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) + @ApiModelProperty(value = "更新时间") private Date updateTime; @TableField(fill = FieldFill.INSERT) + @ApiModelProperty(value = "是否删除(1未删除;0已删除)") private Integer deleted; @TableField(exist = false) + @ApiModelProperty(value = "权限菜单") private List permissionRespNodes; + @TableField(exist = false) + @ApiModelProperty(value = "部门列表") private List deptRespNodes; - @TableField(exist = false) +/* @TableField(exist = false) + @ApiModelProperty(value = "开始时间") private String startTime; @TableField(exist = false) - private String endTime; + @ApiModelProperty(value = "结束时间") + private String endTime;*/ @TableField(exist = false) + @ApiModelProperty(value = "权限") private List permissions; @TableField(exist = false) + @ApiModelProperty(value = "部门") private List depts; } \ No newline at end of file diff --git a/src/main/java/com/huoran/iasf/entity/SysUser.java b/src/main/java/com/huoran/iasf/entity/SysUser.java index 0ed2156..c01d76a 100644 --- a/src/main/java/com/huoran/iasf/entity/SysUser.java +++ b/src/main/java/com/huoran/iasf/entity/SysUser.java @@ -3,6 +3,7 @@ package com.huoran.iasf.entity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -22,67 +23,96 @@ import java.util.List; @Data public class SysUser extends BaseEntity implements Serializable { @TableId + @ApiModelProperty(value = "用户id") private String id; @NotBlank(message = "账号不能为空") + @ApiModelProperty(value = "账户名称") private String username; + @ApiModelProperty(value = "加密盐值") private String salt; @NotBlank(message = "密码不能为空") + @ApiModelProperty(value = "用户密码") private String password; @TableField(exist = false) + @ApiModelProperty(value = "旧密码") private String oldPwd; @TableField(exist = false) + @ApiModelProperty(value = "新密码") private String newPwd; + @ApiModelProperty(value = "手机号码") private String phone; + @ApiModelProperty(value = "部门id") private String deptId; @TableField(exist = false) + @ApiModelProperty(value = "部门名称") private String deptName; @TableField(exist = false) + @ApiModelProperty(value = "部门编号(规则:父级关系编码+自己的编码)") private String deptNo; - + @ApiModelProperty(value = "真实名称") private String realName; + @ApiModelProperty(value = "昵称") private String nickName; + @ApiModelProperty(value = "邮箱(唯一)") private String email; + @ApiModelProperty(value = "账户状态(1.正常 0.锁定 )") private Integer status; + @ApiModelProperty(value = "性别(1.男 2.女)") private Integer sex; @TableField(fill = FieldFill.INSERT) + @ApiModelProperty(value = "是否删除(1未删除;0已删除)") private Integer deleted; + @ApiModelProperty(value = "创建人") private String createId; + @ApiModelProperty(value = "更新人") private String updateId; + @ApiModelProperty(value = "创建来源(1.web 2.android 3.ios )") private Integer createWhere; @TableField(fill = FieldFill.INSERT) + @ApiModelProperty(value = "创建时间") private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) + @ApiModelProperty(value = "更新时间") private Date updateTime; - @TableField(exist = false) +/* @TableField(exist = false) + @ApiModelProperty(value = "开始时间") private String startTime; @TableField(exist = false) - private String endTime; + @ApiModelProperty(value = "结束时间") + private String endTime;*/ @TableField(exist = false) + @ApiModelProperty(value = "角色id") private List roleIds; @TableField(exist = false) + @ApiModelProperty("随机数") + // @NotNull(message = "随机数不能为空") + private String random; + + @TableField(exist = false) + @ApiModelProperty(value = "验证码") private String captcha; } \ No newline at end of file diff --git a/src/main/java/com/huoran/iasf/service/HttpSessionService.java b/src/main/java/com/huoran/iasf/service/HttpSessionService.java index 97b6f08..cc11be1 100644 --- a/src/main/java/com/huoran/iasf/service/HttpSessionService.java +++ b/src/main/java/com/huoran/iasf/service/HttpSessionService.java @@ -25,17 +25,17 @@ import java.util.Set; @Service public class HttpSessionService { @Resource - private com.huoran.iasf.service.RedisService redisService; + private RedisService redisService; @Resource - private com.huoran.iasf.service.UserRoleService userRoleService; + private UserRoleService userRoleService; @Resource - private com.huoran.iasf.service.RolePermissionService rolePermissionService; + private RolePermissionService rolePermissionService; @Resource private HttpServletRequest request; @Resource - private com.huoran.iasf.service.PermissionService permissionService; + private PermissionService permissionService; @Resource - private com.huoran.iasf.service.RoleService roleService; + private RoleService roleService; @Value("${spring.redis.key.prefix.userToken}") private String userTokenPrefix; diff --git a/src/main/java/com/huoran/iasf/service/impl/SysJobServiceImpl.java b/src/main/java/com/huoran/iasf/service/impl/SysJobServiceImpl.java index 42082c0..594573a 100644 --- a/src/main/java/com/huoran/iasf/service/impl/SysJobServiceImpl.java +++ b/src/main/java/com/huoran/iasf/service/impl/SysJobServiceImpl.java @@ -1,3 +1,4 @@ +/* package com.huoran.iasf.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -16,13 +17,15 @@ import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.List; +*/ /** * 定时任务 服务类 * * @author cheney * @version V1.0 * @date 2022年7月28日 - */ + *//* + @Service("sysJobService") public class SysJobServiceImpl extends ServiceImpl implements SysJobService { @Resource @@ -30,9 +33,11 @@ public class SysJobServiceImpl extends ServiceImpl i @Resource private SysJobMapper sysJobMapper; - /** + */ +/** * 项目启动时,初始化定时器 - */ + *//* + @PostConstruct public void init() { List scheduleJobList = this.list(); @@ -112,4 +117,4 @@ public class SysJobServiceImpl extends ServiceImpl i baseMapper.updateById(sysJobEntity); }); } -} \ No newline at end of file +}*/ diff --git a/src/main/java/com/huoran/iasf/service/impl/UserServiceImpl.java b/src/main/java/com/huoran/iasf/service/impl/UserServiceImpl.java index 3ee04af..3a9d141 100644 --- a/src/main/java/com/huoran/iasf/service/impl/UserServiceImpl.java +++ b/src/main/java/com/huoran/iasf/service/impl/UserServiceImpl.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.huoran.iasf.common.exception.BusinessException; import com.huoran.iasf.common.exception.code.BaseResponseCode; @@ -51,6 +50,9 @@ public class UserServiceImpl extends ServiceImpl impleme @Resource private HttpSessionService httpSessionService; + @Resource + private RedisService redisService; + @Value("${spring.redis.allowMultipleLogin}") private Boolean allowMultipleLogin; @Value("${spring.profiles.active}") @@ -70,6 +72,8 @@ public class UserServiceImpl extends ServiceImpl impleme @Override public LoginRespVO login(SysUser vo) { + //验证码校验 + check(vo.getRandom(), vo.getCaptcha()); SysUser sysUser = sysUserMapper.selectOne(Wrappers.lambdaQuery().eq(SysUser::getUsername, vo.getUsername())); if (null == sysUser) { throw new BusinessException(BaseResponseCode.NOT_ACCOUNT); @@ -100,6 +104,26 @@ public class UserServiceImpl extends ServiceImpl impleme return respVO; } + /** + * 校验验证码 + * + * @param random 随机数 + * @param code 验证码 + * @return boolean + */ + public void check(String random, String code) { + String value = redisService.get(random); + //验证码已过期 + if (StringUtils.isEmpty(value)) { + throw new BusinessException(10004, "验证码已过期"); + } + //验证码错误 + if (!code.equals(value)) { + throw new BusinessException(10005, "验证码错误"); + } + redisService.del(random); + } + @Override public void updateUserInfo(SysUser vo) { @@ -161,12 +185,12 @@ public class UserServiceImpl extends ServiceImpl impleme if (!StringUtils.isEmpty(vo.getUsername())) { queryWrapper.like(SysUser::getUsername, vo.getUsername()); } - if (!StringUtils.isEmpty(vo.getStartTime())) { +/* if (!StringUtils.isEmpty(vo.getStartTime())) { queryWrapper.gt(SysUser::getCreateTime, vo.getStartTime()); } if (!StringUtils.isEmpty(vo.getEndTime())) { queryWrapper.lt(SysUser::getCreateTime, vo.getEndTime()); - } + }*/ if (!StringUtils.isEmpty(vo.getNickName())) { queryWrapper.like(SysUser::getNickName, vo.getNickName()); } @@ -220,9 +244,9 @@ public class UserServiceImpl extends ServiceImpl impleme if (sysUser == null) { throw new BusinessException(BaseResponseCode.DATA_ERROR); } - if ("test".equals(env) && "guest".equals(sysUser.getUsername())) { +/* if ("test".equals(env) && "guest".equals(sysUser.getUsername())) { throw new BusinessException("演示环境禁止修改演示账号密码"); - } + }*/ if (!PasswordUtils.matches(sysUser.getSalt(), vo.getOldPwd(), sysUser.getPassword())) { throw new BusinessException(BaseResponseCode.OLD_PASSWORD_ERROR); diff --git a/src/main/java/com/huoran/iasf/vo/req/UserRoleOperationReqVO.java b/src/main/java/com/huoran/iasf/vo/req/UserRoleOperationReqVO.java index ef3f8ea..600d009 100644 --- a/src/main/java/com/huoran/iasf/vo/req/UserRoleOperationReqVO.java +++ b/src/main/java/com/huoran/iasf/vo/req/UserRoleOperationReqVO.java @@ -16,9 +16,11 @@ import java.util.List; */ @Data public class UserRoleOperationReqVO { + @ApiModelProperty(value = "用户id") @NotBlank(message = "用户id不能为空") private String userId; + @ApiModelProperty(value = "角色id集合") @NotEmpty(message = "角色id集合不能为空") private List roleIds;