新增润阳项目后端框架

This commit is contained in:
chenhaojie 2024-06-19 16:18:41 +08:00
parent 6585828171
commit 140d418a32
11 changed files with 79 additions and 80 deletions

View File

@ -31,6 +31,8 @@
<org.projectlombok.version>1.18.20</org.projectlombok.version>
<google.guava.version>29.0-jre</google.guava.version>
<apache.commons.text>1.9</apache.commons.text>
<postgresql.version>42.2.24</postgresql.version>
<sa.version>1.34.0</sa.version>
</properties>
<!--锁定版本-->
@ -76,25 +78,25 @@
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.24</version>
<version>${postgresql.version}</version>
</dependency>
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-core</artifactId>
<version>1.34.0</version>
<version>${sa.version}</version>
</dependency>
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.34.0</version>
<version>${sa.version}</version>
</dependency>
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis</artifactId>
<version>1.34.0</version>
<version>${sa.version}</version>
</dependency>
<!-- 验证码 -->

View File

@ -1,6 +1,5 @@
package com.das.common.captcha;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -17,10 +16,8 @@ public class CaptchaVO {
this.img = img;
}
@ApiModelProperty("唯一值")
private String key;
@ApiModelProperty("图像的base64")
private String img;
}

View File

@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@ -21,26 +20,34 @@ import java.util.Date;
@Data
public class BaseEntity implements Serializable {
/**
* 创建人
*/
@JsonSerialize(using = ToStringSerializer.class)
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty("创建人")
private Long createdBy;
/**
* 创建时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty("创建时间")
private Date createdTime;
/**
* 更新人
*/
@JsonSerialize(using = ToStringSerializer.class)
@TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty("更新人")
private Long updatedBy;
/**
* 更新时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty("更新时间")
private Date updatedTime;
}

View File

@ -1,7 +1,5 @@
package com.das.common.result;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.lang.Nullable;
import java.io.Serializable;
@ -11,7 +9,6 @@ import java.util.Optional;
* @author chenhaojie
* @Description 公共返回信息
*/
@ApiModel("统一响应结果")
public class R<T> implements Serializable {
private static final long serialVersionUID = 1L;
@ -19,25 +16,21 @@ public class R<T> implements Serializable {
/**
* 状态码
*/
@ApiModelProperty("状态码")
private int code;
/**
* 是否成功
*/
@ApiModelProperty("是否成功")
private boolean success;
/**
* 承载数据
*/
@ApiModelProperty("承载数据")
private T data;
/**
* 返回消息
*/
@ApiModelProperty("返回消息")
private String msg;
private R(IResultCode resultCode) {

View File

@ -11,7 +11,6 @@ import com.das.modules.auth.domain.vo.LoginVO;
import com.das.modules.auth.service.ILoginService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.google.code.kaptcha.Producer;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
@ -43,9 +42,8 @@ public class CaptchaImageController {
private AdminRedisTemplate adminRedisTemplate;
/**
* 限制频率在 5 秒钟 3次
* 获取验证码
*/
@ApiOperation("获取验证码")
@PostMapping("/captchaImage")
public R<CaptchaVO> getCaptcha() {
String uuid = IdUtil.fastSimpleUUID();

View File

@ -1,24 +1,16 @@
package com.das.modules.auth.controller;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.IdUtil;
import com.das.common.captcha.CaptchaProperties;
import com.das.common.captcha.CaptchaUtil;
import com.das.common.captcha.CaptchaVO;
import com.das.common.result.R;
import com.das.common.utils.AESUtil;
import com.das.common.utils.AdminRedisTemplate;
import com.das.modules.auth.domain.LoginUserDetails;
import com.das.modules.auth.domain.vo.LoginVO;
import com.das.modules.auth.domain.vo.TokenVo;
import com.das.modules.auth.service.ILoginService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.google.code.kaptcha.Producer;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@ -39,8 +31,11 @@ public class LoginController {
String key;
/**
* 登录接口
* @return 退出结果提示信息
*/
@PostMapping("/login")
@ApiOperation("登录接口")
public R<LoginUserDetails> login(@RequestParam String param, HttpServletRequest request, HttpServletResponse response) throws JsonProcessingException {
LoginUserDetails loginInfo = loginService.login(param,request, response);
return R.success(loginInfo);
@ -60,7 +55,6 @@ public class LoginController {
}
@PostMapping("/refreshToken")
@ApiOperation("刷新token接口")
public R<LoginVO> refreshToken(@NotEmpty(message = "刷新token不允许为空") @RequestParam("refreshToken")String refreshToken){
LoginVO loginVO = loginService.refreshToken(refreshToken);
return R.data(loginVO);

View File

@ -1,6 +1,5 @@
package com.das.modules.auth.domain.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@ -12,24 +11,34 @@ import javax.validation.constraints.NotBlank;
@Data
public class LoginRequest {
/**
* * 用户账号
*/
@NotBlank(message = "用户名不允许为空")
@ApiModelProperty("用户账号")
private String username;
/**
* 密码
*/
@NotBlank(message = "密码不允许为空")
@ApiModelProperty("密码")
private String password;
/**
* 是否记住
*/
@NotBlank(message = "是否记住")
@ApiModelProperty("是否记住")
private boolean keep;
/**
* 验证码
*/
@NotBlank(message = "验证码不允许为空")
@ApiModelProperty("验证码")
private String code;
/**
* 验证码唯一标识
*/
@NotBlank(message = "验证码唯一标识不允许为空")
@ApiModelProperty("验证码唯一标识")
private String uuid;

View File

@ -1,6 +1,5 @@
package com.das.modules.auth.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ -14,13 +13,19 @@ public class LoginVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("accessToken")
/**
*
*/
private String accessToken;
@ApiModelProperty("刷新token")
/**
*刷新token
*/
private String refreshToken;
@ApiModelProperty("过期时间,单位秒")
/**
*过期时间
*/
private Integer expire;
public LoginVO(){}

View File

@ -1,11 +1,6 @@
package com.das.modules.auth.domain.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.io.Serializable;
@ -20,38 +15,32 @@ public class SysUserVo implements Serializable {
/**
* 账号ID
*/
@ApiModelProperty("账号ID")
private Long id;
/**
* 账号名
*/
@ApiModelProperty("账号名")
private String account;
/**
* 账号本地名
*/
@ApiModelProperty("账号本地名")
private String userName;
/**
* 手机号
*/
@ApiModelProperty("手机号")
private String phone;
/**
* E-Mail地址
*/
@ApiModelProperty("E-Mail地址")
private String email;
/**
* 所属机构
*/
@ApiModelProperty("组织机构")
private Long orgId;

View File

@ -1,34 +1,27 @@
package com.das.modules.auth.domain.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 令牌实体
* @author Administrator
*/
@Api(description = "令牌实体")
@Data
public class TokenVo {
/**
* 令牌
*/
@ApiModelProperty("令牌值")
private String token;
/**
* 令牌超时时间单位()
*/
@ApiModelProperty("令牌超时时间,单位(秒)")
public long tokenTimeout;
/**
* 令牌活动超时间隔单位()
*/
@ApiModelProperty("令牌活动超时间隔,单位(秒)")
public long tokenActivityTimeout;
/**
* 账号ID
*/
@ApiModelProperty("账号ID")
public long accountId;
}

View File

@ -1,19 +1,14 @@
package com.das.modules.auth.entity;
import com.das.common.constant.BaseEntity;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.das.common.constant.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import java.util.Date;
/**
@ -25,40 +20,57 @@ import java.util.Date;
*/
@Data
@TableName("sys_user")
@ApiModel(value = "SysUser对象", description = "用户信息")
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class SysUser extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("用户ID")
/**
* 用户ID
*/
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
@ApiModelProperty("登录账号")
/**
* 登录账号
*/
private String account;
@ApiModelProperty("加密后的密码")
/**
* 加密后的密码
*/
private String password;
@ApiModelProperty("职员名称")
/**
* 职员名称
*/
private String userName;
@ApiModelProperty("职员邮箱")
/**
* 职员邮箱
*/
private String email;
@ApiModelProperty("职员联系电话")
/**
* 职员联系电话
*/
private String phone;
@ApiModelProperty("所属机构id")
/**
* 所属机构id
*/
private Long orgId;
/**
* 最近一次登录时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("最近一次登录时间")
private Date lastLogin;
@ApiModelProperty("乐观锁")
/**
* 乐观锁
*/
private int revision;
}