添加注释

master
chen 2 years ago
parent b70537c88b
commit a0e687b9ff
  1. 1
      src/main/java/com/huoran/iasf/common/exception/BusinessException.java
  2. 3
      src/main/java/com/huoran/iasf/common/job/task/TestTask.java
  3. 10
      src/main/java/com/huoran/iasf/common/job/utils/ScheduleJob.java
  4. 42
      src/main/java/com/huoran/iasf/common/job/utils/ScheduleUtils.java
  5. 2
      src/main/java/com/huoran/iasf/common/utils/Constant.java
  6. 41
      src/main/java/com/huoran/iasf/controller/CaptchaController.java
  7. 4
      src/main/java/com/huoran/iasf/controller/RoleController.java
  8. 15
      src/main/java/com/huoran/iasf/controller/UserController.java
  9. 10
      src/main/java/com/huoran/iasf/entity/SysContentEntity.java
  10. 10
      src/main/java/com/huoran/iasf/entity/SysDept.java
  11. 6
      src/main/java/com/huoran/iasf/entity/SysFilesEntity.java
  12. 15
      src/main/java/com/huoran/iasf/entity/SysPermission.java
  13. 19
      src/main/java/com/huoran/iasf/entity/SysRole.java
  14. 36
      src/main/java/com/huoran/iasf/entity/SysUser.java
  15. 10
      src/main/java/com/huoran/iasf/service/HttpSessionService.java
  16. 11
      src/main/java/com/huoran/iasf/service/impl/SysJobServiceImpl.java
  17. 34
      src/main/java/com/huoran/iasf/service/impl/UserServiceImpl.java
  18. 2
      src/main/java/com/huoran/iasf/vo/req/UserRoleOperationReqVO.java

@ -11,6 +11,7 @@ import com.huoran.iasf.common.exception.code.ResponseCodeInterface;
* @date 2022年7月28日 * @date 2022年7月28日
*/ */
public class BusinessException extends RuntimeException { public class BusinessException extends RuntimeException {
/** /**
* 异常编号 * 异常编号
*/ */

@ -2,7 +2,6 @@ package com.huoran.iasf.common.job.task;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/** /**
* 测试定时任务(演示Demo可删除) * 测试定时任务(演示Demo可删除)
@ -12,7 +11,7 @@ import org.springframework.stereotype.Component;
* @version V1.0 * @version V1.0
* @date 2022年7月28日 * @date 2022年7月28日
*/ */
@Component("testTask") // @Component("testTask")
public class TestTask { public class TestTask {
private Logger logger = LoggerFactory.getLogger(getClass()); private Logger logger = LoggerFactory.getLogger(getClass());

@ -1,3 +1,4 @@
/*
package com.huoran.iasf.common.job.utils; package com.huoran.iasf.common.job.utils;
import com.huoran.iasf.common.utils.R; import com.huoran.iasf.common.utils.R;
@ -14,13 +15,15 @@ import org.springframework.scheduling.quartz.QuartzJobBean;
import java.lang.reflect.Method; import java.lang.reflect.Method;
*/
/** /**
* 定时任务 * 定时任务
* *
* @author cheney * @author cheney
* @version V1.0 * @version V1.0
* @date 2022年7月28日 * @date 2022年7月28日
*/ *//*
public class ScheduleJob extends QuartzJobBean { public class ScheduleJob extends QuartzJobBean {
private Logger logger = LoggerFactory.getLogger(getClass()); private Logger logger = LoggerFactory.getLogger(getClass());
@ -80,12 +83,14 @@ public class ScheduleJob extends QuartzJobBean {
} }
} }
*/
/** /**
* 判断bean是否有效 * 判断bean是否有效
* *
* @param beanName beanName * @param beanName beanName
* @return 返回信息 * @return 返回信息
*/ *//*
public static R judgeBean(String beanName) { public static R judgeBean(String beanName) {
if (org.springframework.util.StringUtils.isEmpty(beanName)) { if (org.springframework.util.StringUtils.isEmpty(beanName)) {
@ -109,3 +114,4 @@ public class ScheduleJob extends QuartzJobBean {
return R.success(); return R.success();
} }
} }
*/

@ -1,3 +1,4 @@
/*
package com.huoran.iasf.common.job.utils; package com.huoran.iasf.common.job.utils;
import com.huoran.iasf.common.exception.BusinessException; 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 com.huoran.iasf.entity.SysJobEntity;
import org.quartz.*; import org.quartz.*;
*/
/** /**
* 定时任务工具类 * 定时任务工具类
* *
* @author cheney * @author cheney
* @version V1.0 * @version V1.0
* @date 2022年7月28日 * @date 2022年7月28日
*/ *//*
public class ScheduleUtils { public class ScheduleUtils {
private final static String JOB_NAME = "TASK_"; private final static String JOB_NAME = "TASK_";
*/
/** /**
* 获取触发器key * 获取触发器key
*/ *//*
public static TriggerKey getTriggerKey(String jobId) { public static TriggerKey getTriggerKey(String jobId) {
return TriggerKey.triggerKey(JOB_NAME + jobId); return TriggerKey.triggerKey(JOB_NAME + jobId);
} }
*/
/** /**
* 获取jobKey * 获取jobKey
*/ *//*
public static JobKey getJobKey(String jobId) { public static JobKey getJobKey(String jobId) {
return JobKey.jobKey(JOB_NAME + jobId); return JobKey.jobKey(JOB_NAME + jobId);
} }
*/
/** /**
* 获取表达式触发器 * 获取表达式触发器
*/ *//*
public static CronTrigger getCronTrigger(Scheduler scheduler, String jobId) { public static CronTrigger getCronTrigger(Scheduler scheduler, String jobId) {
try { try {
return (CronTrigger) scheduler.getTrigger(getTriggerKey(jobId)); return (CronTrigger) scheduler.getTrigger(getTriggerKey(jobId));
@ -40,9 +49,11 @@ public class ScheduleUtils {
} }
} }
*/
/** /**
* 创建定时任务 * 创建定时任务
*/ *//*
public static void createScheduleJob(Scheduler scheduler, SysJobEntity scheduleJob) { public static void createScheduleJob(Scheduler scheduler, SysJobEntity scheduleJob) {
try { try {
//构建job信息 //构建job信息
@ -69,9 +80,11 @@ public class ScheduleUtils {
} }
} }
*/
/** /**
* 更新定时任务 * 更新定时任务
*/ *//*
public static void updateScheduleJob(Scheduler scheduler, SysJobEntity scheduleJob) { public static void updateScheduleJob(Scheduler scheduler, SysJobEntity scheduleJob) {
try { try {
TriggerKey triggerKey = getTriggerKey(scheduleJob.getId()); TriggerKey triggerKey = getTriggerKey(scheduleJob.getId());
@ -100,9 +113,11 @@ public class ScheduleUtils {
} }
} }
*/
/** /**
* 立即执行任务 * 立即执行任务
*/ *//*
public static void run(Scheduler scheduler, SysJobEntity scheduleJob) { public static void run(Scheduler scheduler, SysJobEntity scheduleJob) {
try { try {
//参数 //参数
@ -115,9 +130,11 @@ public class ScheduleUtils {
} }
} }
*/
/** /**
* 暂停任务 * 暂停任务
*/ *//*
public static void pauseJob(Scheduler scheduler, String jobId) { public static void pauseJob(Scheduler scheduler, String jobId) {
try { try {
scheduler.pauseJob(getJobKey(jobId)); scheduler.pauseJob(getJobKey(jobId));
@ -126,9 +143,11 @@ public class ScheduleUtils {
} }
} }
*/
/** /**
* 恢复任务 * 恢复任务
*/ *//*
public static void resumeJob(Scheduler scheduler, String jobId) { public static void resumeJob(Scheduler scheduler, String jobId) {
try { try {
scheduler.resumeJob(getJobKey(jobId)); scheduler.resumeJob(getJobKey(jobId));
@ -137,9 +156,11 @@ public class ScheduleUtils {
} }
} }
*/
/** /**
* 删除定时任务 * 删除定时任务
*/ *//*
public static void deleteScheduleJob(Scheduler scheduler, String jobId) { public static void deleteScheduleJob(Scheduler scheduler, String jobId) {
try { try {
scheduler.deleteJob(getJobKey(jobId)); scheduler.deleteJob(getJobKey(jobId));
@ -148,3 +169,4 @@ public class ScheduleUtils {
} }
} }
} }
*/

@ -12,7 +12,7 @@ public class Constant {
/** /**
* redis的token相关 * 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 PERMISSIONS_KEY = "permissions-key";
public static final String USERID_KEY = "userid-key"; public static final String USERID_KEY = "userid-key";
public static final String USERNAME_KEY = "username-key"; public static final String USERNAME_KEY = "username-key";

@ -1,13 +1,20 @@
package com.huoran.iasf.controller; package com.huoran.iasf.controller;
import com.huoran.iasf.service.RedisService;
import com.wf.captcha.ArithmeticCaptcha; 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.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j; 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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
@ -23,19 +30,39 @@ import java.io.IOException;
@Slf4j @Slf4j
@RequestMapping("/sys") @RequestMapping("/sys")
public class CaptchaController { public class CaptchaController {
@Resource
private RedisService redisService;
/** /**
* 获取验证码图片 * 获取验证码图片
* Gets captcha code. * 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 { public void getCaptchaCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
ArithmeticCaptcha captcha = new ArithmeticCaptcha(130, 48); ArithmeticCaptcha captcha = new ArithmeticCaptcha(130, 48);
captcha.setLen(2); captcha.setLen(2);
CaptchaUtil.out(captcha, request, response); 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();
}
} }
} }

@ -116,7 +116,7 @@ public class RoleController {
if (!StringUtils.isEmpty(vo.getName())) { if (!StringUtils.isEmpty(vo.getName())) {
queryWrapper.like(SysRole::getName, vo.getName()); queryWrapper.like(SysRole::getName, vo.getName());
} }
if (!StringUtils.isEmpty(vo.getStartTime())) { /* if (!StringUtils.isEmpty(vo.getStartTime())) {
queryWrapper.gt(SysRole::getCreateTime, vo.getStartTime()); queryWrapper.gt(SysRole::getCreateTime, vo.getStartTime());
} }
if (!StringUtils.isEmpty(vo.getEndTime())) { if (!StringUtils.isEmpty(vo.getEndTime())) {
@ -124,7 +124,7 @@ public class RoleController {
} }
if (!StringUtils.isEmpty(vo.getStatus())) { if (!StringUtils.isEmpty(vo.getStatus())) {
queryWrapper.eq(SysRole::getStatus, vo.getStatus()); queryWrapper.eq(SysRole::getStatus, vo.getStatus());
} }*/
queryWrapper.orderByDesc(SysRole::getCreateTime); queryWrapper.orderByDesc(SysRole::getCreateTime);
return R.success(roleService.page(vo.getQueryPage(), queryWrapper)); return R.success(roleService.page(vo.getQueryPage(), queryWrapper));
} }

@ -3,7 +3,6 @@ package com.huoran.iasf.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huoran.iasf.common.aop.annotation.LogAnnotation; 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.common.utils.R;
import com.huoran.iasf.entity.SysUser; import com.huoran.iasf.entity.SysUser;
import com.huoran.iasf.entity.SysUserRole; 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.UserRoleService;
import com.huoran.iasf.service.UserService; import com.huoran.iasf.service.UserService;
import com.huoran.iasf.vo.req.UserRoleOperationReqVO; import com.huoran.iasf.vo.req.UserRoleOperationReqVO;
import com.wf.captcha.utils.CaptchaUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
@ -24,7 +22,6 @@ import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List; import java.util.List;
@ -49,13 +46,7 @@ public class UserController {
@PostMapping(value = "/user/login") @PostMapping(value = "/user/login")
@ApiOperation(value = "用户登录接口") @ApiOperation(value = "用户登录接口")
public R login(@RequestBody @Valid SysUser vo, HttpServletRequest request) { public R login(@RequestBody @Valid SysUser vo) {
//判断验证码
if (!CaptchaUtil.ver(vo.getCaptcha(), request)) {
// 清除session中的验证码
CaptchaUtil.clear(request);
return R.fail("验证码错误!");
}
return R.success(userService.login(vo)); return R.success(userService.login(vo));
} }
@ -66,11 +57,11 @@ public class UserController {
return R.success(); return R.success();
} }
@GetMapping("/user/unLogin") /*@GetMapping("/user/unLogin")
@ApiOperation(value = "引导客户端去登录") @ApiOperation(value = "引导客户端去登录")
public R unLogin() { public R unLogin() {
return R.getResult(BaseResponseCode.TOKEN_ERROR); return R.getResult(BaseResponseCode.TOKEN_ERROR);
} }*/
@PutMapping("/user") @PutMapping("/user")
@ApiOperation(value = "更新用户信息接口") @ApiOperation(value = "更新用户信息接口")

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -27,51 +28,60 @@ public class SysContentEntity extends BaseEntity implements Serializable {
* 主键id * 主键id
*/ */
@TableId("id") @TableId("id")
@ApiModelProperty(value = "主键id")
private String id; private String id;
/** /**
* 主题 * 主题
*/ */
@TableField("title") @TableField("title")
@ApiModelProperty(value = "主题")
private String title; private String title;
/** /**
* 内容 * 内容
*/ */
@TableField("content") @TableField("content")
@ApiModelProperty(value = "内容")
private String content; private String content;
/** /**
* 单个图片url * 单个图片url
*/ */
@ApiModelProperty(value = "单个图片url")
private String oneImg; private String oneImg;
/** /**
* 多个图片url * 多个图片url
*/ */
@ApiModelProperty(value = "多个图片url")
private String multipleImg; private String multipleImg;
/** /**
* 关键字 * 关键字
*/ */
@ApiModelProperty(value = "关键字")
private String keywords; private String keywords;
/** /**
* 类型数据字典 * 类型数据字典
*/ */
@TableField("type") @TableField("type")
@ApiModelProperty(value = "类型")
private String type; private String type;
/** /**
* 创建人 * 创建人
*/ */
@TableField(value = "create_id", fill = FieldFill.INSERT) @TableField(value = "create_id", fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建人")
private String createId; private String createId;
/** /**
* 创建时间 * 创建时间
*/ */
@TableField(value = "create_time", fill = FieldFill.INSERT) @TableField(value = "create_time", fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间")
private Date createTime; private Date createTime;

@ -3,6 +3,7 @@ package com.huoran.iasf.entity;
import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -21,25 +22,34 @@ public class SysDept implements Serializable {
@TableId @TableId
private String id; private String id;
@ApiModelProperty(value = "部门编号(规则:父级关系编码+自己的编码)")
private String deptNo; private String deptNo;
@NotBlank(message = "机构名称不能为空") @NotBlank(message = "机构名称不能为空")
@ApiModelProperty(value = "部门名称")
private String name; private String name;
@NotBlank(message = "父级不能为空") @NotBlank(message = "父级不能为空")
@ApiModelProperty(value = "父级id")
private String pid; private String pid;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "父级部门名称")
private String pidName; private String pidName;
@ApiModelProperty(value = "状态(1:正常;0:弃用)")
private Integer status; private Integer status;
@ApiModelProperty(value = "为了维护更深层级关系")
private String relationCode; private String relationCode;
@ApiModelProperty(value = "部门经理user_id")
private String deptManagerId; private String deptManagerId;
@ApiModelProperty(value = "部门经理名称")
private String managerName; private String managerName;
@ApiModelProperty(value = "部门经理联系电话")
private String phone; private String phone;
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -27,24 +28,29 @@ public class SysFilesEntity extends BaseEntity implements Serializable {
* 主键 * 主键
*/ */
@TableId("id") @TableId("id")
@ApiModelProperty(value = "主键")
private String id; private String id;
/** /**
* URL地址 * URL地址
*/ */
@TableField("url") @TableField("url")
@ApiModelProperty(value = "url地址")
private String url; private String url;
/** /**
* 创建时间 * 创建时间
*/ */
@TableField(value = "create_date", fill = FieldFill.INSERT) @TableField(value = "create_date", fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间")
private Date createDate; private Date createDate;
@TableField("file_name") @TableField("file_name")
@ApiModelProperty(value = "文件名称")
private String fileName; private String fileName;
@TableField("file_path") @TableField("file_path")
@ApiModelProperty(value = "文件路径")
private String filePath; private String filePath;

@ -3,6 +3,7 @@ package com.huoran.iasf.entity;
import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -20,32 +21,37 @@ import java.util.Date;
@Data @Data
public class SysPermission implements Serializable { public class SysPermission implements Serializable {
@TableId @TableId
private String id; private String id;
@NotBlank(message = "菜单权限名称不能为空") @NotBlank(message = "菜单权限名称不能为空")
@ApiModelProperty(value = "菜单权限名称")
private String name; private String name;
@ApiModelProperty(value = "授权(多个用逗号分隔,如:sys:user:add,sys:user:edit)")
private String perms; private String perms;
@ApiModelProperty(value = "访问地址URL")
private String url; private String url;
@ApiModelProperty(value = "图标")
private String icon; private String icon;
@ApiModelProperty(value = "a target属性:_self _blank")
private String target; private String target;
@NotNull(message = "所属菜单不能为空") @NotNull(message = "所属菜单不能为空")
@ApiModelProperty(value = "父级菜单权限id")
private String pid; private String pid;
@ApiModelProperty(value = "排序")
private Integer orderNum; private Integer orderNum;
@NotNull(message = "菜单权限类型不能为空") @NotNull(message = "菜单权限类型不能为空")
@ApiModelProperty(value = "菜单权限类型(1:目录;2:菜单;3:按钮)")
private Integer type; private Integer type;
/** @ApiModelProperty(value = "状态1:正常 0:禁用")
* 1正常 2禁用
*/
private Integer status; private Integer status;
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
@ -58,6 +64,7 @@ public class SysPermission implements Serializable {
private Integer deleted; private Integer deleted;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "父级菜单权限名称")
private String pidName; private String pidName;
} }

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.huoran.iasf.vo.resp.DeptRespNodeVO; import com.huoran.iasf.vo.resp.DeptRespNodeVO;
import com.huoran.iasf.vo.resp.PermissionRespNode; import com.huoran.iasf.vo.resp.PermissionRespNode;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -29,38 +30,52 @@ public class SysRole extends BaseEntity implements Serializable {
private String id; private String id;
@NotBlank(message = "名称不能为空") @NotBlank(message = "名称不能为空")
@ApiModelProperty(value = "角色名称")
private String name; private String name;
@ApiModelProperty(value = "角色描述")
private String description; private String description;
@ApiModelProperty(value = "状态(1:正常0:弃用)")
private Integer status; private Integer status;
@ApiModelProperty(value = "数据范围(1:所有 2:自定义 3: 本部门及以下部门 4:仅本部门")
private Integer dataScope; private Integer dataScope;
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间")
private Date createTime; private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE) @TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value = "更新时间")
private Date updateTime; private Date updateTime;
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "是否删除(1未删除;0已删除)")
private Integer deleted; private Integer deleted;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "权限菜单")
private List<PermissionRespNode> permissionRespNodes; private List<PermissionRespNode> permissionRespNodes;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "部门列表")
private List<DeptRespNodeVO> deptRespNodes; private List<DeptRespNodeVO> deptRespNodes;
@TableField(exist = false) /* @TableField(exist = false)
@ApiModelProperty(value = "开始时间")
private String startTime; private String startTime;
@TableField(exist = false) @TableField(exist = false)
private String endTime; @ApiModelProperty(value = "结束时间")
private String endTime;*/
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "权限")
private List<String> permissions; private List<String> permissions;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "部门")
private List<String> depts; private List<String> depts;
} }

@ -3,6 +3,7 @@ package com.huoran.iasf.entity;
import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -22,67 +23,96 @@ import java.util.List;
@Data @Data
public class SysUser extends BaseEntity implements Serializable { public class SysUser extends BaseEntity implements Serializable {
@TableId @TableId
@ApiModelProperty(value = "用户id")
private String id; private String id;
@NotBlank(message = "账号不能为空") @NotBlank(message = "账号不能为空")
@ApiModelProperty(value = "账户名称")
private String username; private String username;
@ApiModelProperty(value = "加密盐值")
private String salt; private String salt;
@NotBlank(message = "密码不能为空") @NotBlank(message = "密码不能为空")
@ApiModelProperty(value = "用户密码")
private String password; private String password;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "旧密码")
private String oldPwd; private String oldPwd;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "新密码")
private String newPwd; private String newPwd;
@ApiModelProperty(value = "手机号码")
private String phone; private String phone;
@ApiModelProperty(value = "部门id")
private String deptId; private String deptId;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "部门名称")
private String deptName; private String deptName;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "部门编号(规则:父级关系编码+自己的编码)")
private String deptNo; private String deptNo;
@ApiModelProperty(value = "真实名称")
private String realName; private String realName;
@ApiModelProperty(value = "昵称")
private String nickName; private String nickName;
@ApiModelProperty(value = "邮箱(唯一)")
private String email; private String email;
@ApiModelProperty(value = "账户状态(1.正常 0.锁定 )")
private Integer status; private Integer status;
@ApiModelProperty(value = "性别(1.男 2.女)")
private Integer sex; private Integer sex;
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "是否删除(1未删除;0已删除)")
private Integer deleted; private Integer deleted;
@ApiModelProperty(value = "创建人")
private String createId; private String createId;
@ApiModelProperty(value = "更新人")
private String updateId; private String updateId;
@ApiModelProperty(value = "创建来源(1.web 2.android 3.ios )")
private Integer createWhere; private Integer createWhere;
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间")
private Date createTime; private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE) @TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value = "更新时间")
private Date updateTime; private Date updateTime;
@TableField(exist = false) /* @TableField(exist = false)
@ApiModelProperty(value = "开始时间")
private String startTime; private String startTime;
@TableField(exist = false) @TableField(exist = false)
private String endTime; @ApiModelProperty(value = "结束时间")
private String endTime;*/
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "角色id")
private List<String> roleIds; private List<String> roleIds;
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty("随机数")
// @NotNull(message = "随机数不能为空")
private String random;
@TableField(exist = false)
@ApiModelProperty(value = "验证码")
private String captcha; private String captcha;
} }

@ -25,17 +25,17 @@ import java.util.Set;
@Service @Service
public class HttpSessionService { public class HttpSessionService {
@Resource @Resource
private com.huoran.iasf.service.RedisService redisService; private RedisService redisService;
@Resource @Resource
private com.huoran.iasf.service.UserRoleService userRoleService; private UserRoleService userRoleService;
@Resource @Resource
private com.huoran.iasf.service.RolePermissionService rolePermissionService; private RolePermissionService rolePermissionService;
@Resource @Resource
private HttpServletRequest request; private HttpServletRequest request;
@Resource @Resource
private com.huoran.iasf.service.PermissionService permissionService; private PermissionService permissionService;
@Resource @Resource
private com.huoran.iasf.service.RoleService roleService; private RoleService roleService;
@Value("${spring.redis.key.prefix.userToken}") @Value("${spring.redis.key.prefix.userToken}")
private String userTokenPrefix; private String userTokenPrefix;

@ -1,3 +1,4 @@
/*
package com.huoran.iasf.service.impl; package com.huoran.iasf.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -16,13 +17,15 @@ import javax.annotation.PostConstruct;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
*/
/** /**
* 定时任务 服务类 * 定时任务 服务类
* *
* @author cheney * @author cheney
* @version V1.0 * @version V1.0
* @date 2022年7月28日 * @date 2022年7月28日
*/ *//*
@Service("sysJobService") @Service("sysJobService")
public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJobEntity> implements SysJobService { public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJobEntity> implements SysJobService {
@Resource @Resource
@ -30,9 +33,11 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJobEntity> i
@Resource @Resource
private SysJobMapper sysJobMapper; private SysJobMapper sysJobMapper;
*/
/** /**
* 项目启动时初始化定时器 * 项目启动时初始化定时器
*/ *//*
@PostConstruct @PostConstruct
public void init() { public void init() {
List<SysJobEntity> scheduleJobList = this.list(); List<SysJobEntity> scheduleJobList = this.list();
@ -112,4 +117,4 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJobEntity> i
baseMapper.updateById(sysJobEntity); baseMapper.updateById(sysJobEntity);
}); });
} }
} }*/

@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huoran.iasf.common.exception.BusinessException; import com.huoran.iasf.common.exception.BusinessException;
import com.huoran.iasf.common.exception.code.BaseResponseCode; import com.huoran.iasf.common.exception.code.BaseResponseCode;
@ -51,6 +50,9 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
@Resource @Resource
private HttpSessionService httpSessionService; private HttpSessionService httpSessionService;
@Resource
private RedisService redisService;
@Value("${spring.redis.allowMultipleLogin}") @Value("${spring.redis.allowMultipleLogin}")
private Boolean allowMultipleLogin; private Boolean allowMultipleLogin;
@Value("${spring.profiles.active}") @Value("${spring.profiles.active}")
@ -70,6 +72,8 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
@Override @Override
public LoginRespVO login(SysUser vo) { public LoginRespVO login(SysUser vo) {
//验证码校验
check(vo.getRandom(), vo.getCaptcha());
SysUser sysUser = sysUserMapper.selectOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, vo.getUsername())); SysUser sysUser = sysUserMapper.selectOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, vo.getUsername()));
if (null == sysUser) { if (null == sysUser) {
throw new BusinessException(BaseResponseCode.NOT_ACCOUNT); throw new BusinessException(BaseResponseCode.NOT_ACCOUNT);
@ -100,6 +104,26 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
return respVO; 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 @Override
public void updateUserInfo(SysUser vo) { public void updateUserInfo(SysUser vo) {
@ -161,12 +185,12 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
if (!StringUtils.isEmpty(vo.getUsername())) { if (!StringUtils.isEmpty(vo.getUsername())) {
queryWrapper.like(SysUser::getUsername, vo.getUsername()); queryWrapper.like(SysUser::getUsername, vo.getUsername());
} }
if (!StringUtils.isEmpty(vo.getStartTime())) { /* if (!StringUtils.isEmpty(vo.getStartTime())) {
queryWrapper.gt(SysUser::getCreateTime, vo.getStartTime()); queryWrapper.gt(SysUser::getCreateTime, vo.getStartTime());
} }
if (!StringUtils.isEmpty(vo.getEndTime())) { if (!StringUtils.isEmpty(vo.getEndTime())) {
queryWrapper.lt(SysUser::getCreateTime, vo.getEndTime()); queryWrapper.lt(SysUser::getCreateTime, vo.getEndTime());
} }*/
if (!StringUtils.isEmpty(vo.getNickName())) { if (!StringUtils.isEmpty(vo.getNickName())) {
queryWrapper.like(SysUser::getNickName, vo.getNickName()); queryWrapper.like(SysUser::getNickName, vo.getNickName());
} }
@ -220,9 +244,9 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
if (sysUser == null) { if (sysUser == null) {
throw new BusinessException(BaseResponseCode.DATA_ERROR); 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("演示环境禁止修改演示账号密码"); throw new BusinessException("演示环境禁止修改演示账号密码");
} }*/
if (!PasswordUtils.matches(sysUser.getSalt(), vo.getOldPwd(), sysUser.getPassword())) { if (!PasswordUtils.matches(sysUser.getSalt(), vo.getOldPwd(), sysUser.getPassword())) {
throw new BusinessException(BaseResponseCode.OLD_PASSWORD_ERROR); throw new BusinessException(BaseResponseCode.OLD_PASSWORD_ERROR);

@ -16,9 +16,11 @@ import java.util.List;
*/ */
@Data @Data
public class UserRoleOperationReqVO { public class UserRoleOperationReqVO {
@ApiModelProperty(value = "用户id") @ApiModelProperty(value = "用户id")
@NotBlank(message = "用户id不能为空") @NotBlank(message = "用户id不能为空")
private String userId; private String userId;
@ApiModelProperty(value = "角色id集合") @ApiModelProperty(value = "角色id集合")
@NotEmpty(message = "角色id集合不能为空") @NotEmpty(message = "角色id集合不能为空")
private List<String> roleIds; private List<String> roleIds;

Loading…
Cancel
Save