diff --git a/pom.xml b/pom.xml index 707d1a984b1b07bc546830a495eb16ceb1e1a1e0..ddc82d90a65d8b1dec4279d831f1134ff8266818 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - com.template Template-back @@ -128,64 +126,6 @@ mongodb-driver-sync 3.9.1 --> - - - - - - - - - - - - com.aliyun.oss diff --git a/template-back-common/pom.xml b/template-back-common/pom.xml index 82fc99ad56c82d11ef7675ffe1c47a2c3bafaee7..e64180860168cdc3c49bdeee5671c1279c3fe412 100644 --- a/template-back-common/pom.xml +++ b/template-back-common/pom.xml @@ -111,6 +111,12 @@ commons-io 2.4 + + io.swagger + swagger-annotations + 1.5.22 + compile + diff --git a/template-back-common/src/main/java/com/template/back/common/mapper/school/CampusMapper.java b/template-back-common/src/main/java/com/template/back/common/mapper/school/CampusMapper.java index 323a97fa8319412499c7ab691519b4b2f594ac1d..729d55ff2d7115ea82837167203761ed4070d0b7 100644 --- a/template-back-common/src/main/java/com/template/back/common/mapper/school/CampusMapper.java +++ b/template-back-common/src/main/java/com/template/back/common/mapper/school/CampusMapper.java @@ -2,11 +2,13 @@ package com.template.back.common.mapper.school; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.template.back.common.pojo.school.Campus; +import org.apache.ibatis.annotations.Mapper; /** * @author 张骞 * @version 1.0.0 * 校区映射接口 */ +@Mapper public interface CampusMapper extends BaseMapper { } diff --git a/template-back-common/src/main/java/com/template/back/common/mapper/system/AdminMapper.java b/template-back-common/src/main/java/com/template/back/common/mapper/system/AdminMapper.java index 5135afeade8061c0aba170dda7fccfbc4ca4e772..4b988e476cbc20a1bdaa0b866c538279fb0efc18 100644 --- a/template-back-common/src/main/java/com/template/back/common/mapper/system/AdminMapper.java +++ b/template-back-common/src/main/java/com/template/back/common/mapper/system/AdminMapper.java @@ -3,6 +3,7 @@ package com.template.back.common.mapper.system; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.template.back.common.pojo.system.Admin; import com.template.back.common.pojo.system.Role; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -10,8 +11,9 @@ import java.util.List; /** * @author 张骞 * @version 1.0 - * 管理员用户封装类 + * 管理员用户mapper */ +@Mapper public interface AdminMapper extends BaseMapper { //中间表查询方法,关联用户和角色之间的关系,根据角色id查询用户 @Select("select admin_id, name,user_name from tb_admin where admin_id IN (SELECT admin_id FROM tb_role_admin WHERE role_id = #{roleId}) ") diff --git a/template-back-common/src/main/java/com/template/back/common/mapper/system/DeptMapper.java b/template-back-common/src/main/java/com/template/back/common/mapper/system/DeptMapper.java index 688db7cd331aa9f0aaf930b98a026ddf514439b6..077c7c33a72d90a9895b13bb83f827565bbf8f53 100644 --- a/template-back-common/src/main/java/com/template/back/common/mapper/system/DeptMapper.java +++ b/template-back-common/src/main/java/com/template/back/common/mapper/system/DeptMapper.java @@ -2,7 +2,13 @@ package com.template.back.common.mapper.system; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.template.back.common.pojo.system.Dept; +import org.apache.ibatis.annotations.Mapper; - +/** + * @author 张骞 + * @version 1.0 + * 管理员部门mapper + */ +@Mapper public interface DeptMapper extends BaseMapper { } diff --git a/template-back-common/src/main/java/com/template/back/common/mapper/system/HeartbeatMapper.java b/template-back-common/src/main/java/com/template/back/common/mapper/system/HeartbeatMapper.java index ef42f17a2673c1c98c521747cbfaf40afb01615e..3b9936b9bb461ccd8eb0f8d0793024ca87783366 100644 --- a/template-back-common/src/main/java/com/template/back/common/mapper/system/HeartbeatMapper.java +++ b/template-back-common/src/main/java/com/template/back/common/mapper/system/HeartbeatMapper.java @@ -2,11 +2,13 @@ package com.template.back.common.mapper.system; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.template.back.common.pojo.Heartbeat; +import org.apache.ibatis.annotations.Mapper; /** * @author 张骞 * @version 1.0.0 * 心跳连接映射类 */ +@Mapper public interface HeartbeatMapper extends BaseMapper { } diff --git a/template-back-common/src/main/java/com/template/back/common/mapper/system/LoggerMapper.java b/template-back-common/src/main/java/com/template/back/common/mapper/system/LoggerMapper.java index e8db0631a5eaad13c0c815202e2461d0ad4b889b..acf0c4d46f01d7bbebeaec86c1fd0b7e463bbe97 100644 --- a/template-back-common/src/main/java/com/template/back/common/mapper/system/LoggerMapper.java +++ b/template-back-common/src/main/java/com/template/back/common/mapper/system/LoggerMapper.java @@ -2,6 +2,7 @@ package com.template.back.common.mapper.system; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.template.back.common.pojo.system.Logger; +import org.apache.ibatis.annotations.Mapper; /** @@ -9,5 +10,6 @@ import com.template.back.common.pojo.system.Logger; * @version 1.0.0 * @Description logger对应的mapper,使用了mybatisplus */ +@Mapper public interface LoggerMapper extends BaseMapper { } diff --git a/template-back-common/src/main/java/com/template/back/common/mapper/system/ModuleMapper.java b/template-back-common/src/main/java/com/template/back/common/mapper/system/ModuleMapper.java index 9d8945eb58b04bc4ff709f65ee911f0eabe65b3c..9df1dc67630c10eae62d49230239ca01c9bfc32f 100644 --- a/template-back-common/src/main/java/com/template/back/common/mapper/system/ModuleMapper.java +++ b/template-back-common/src/main/java/com/template/back/common/mapper/system/ModuleMapper.java @@ -2,13 +2,17 @@ package com.template.back.common.mapper.system; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.template.back.common.pojo.system.Module; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; /** - * 模块映射接口 + * @author 张骞 + * @version 1.0 + * 功能模块mapper */ +@Mapper public interface ModuleMapper extends BaseMapper { /** * 根据用户id,查询对应的模块,需要通过中间表查询 diff --git a/template-back-common/src/main/java/com/template/back/common/mapper/system/RoleMapper.java b/template-back-common/src/main/java/com/template/back/common/mapper/system/RoleMapper.java index 4ee74eb784e3881ed7df65c72c2f8dff2e4be349..c58a468b864d52be2be2cebac5234d957d4d1913 100644 --- a/template-back-common/src/main/java/com/template/back/common/mapper/system/RoleMapper.java +++ b/template-back-common/src/main/java/com/template/back/common/mapper/system/RoleMapper.java @@ -6,14 +6,18 @@ import com.template.back.common.pojo.system.Role; import com.template.back.common.vo.TreeVo; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; import java.util.Map; /** - * 角色映射接口 + * @author 张骞 + * @version 1.0 + * 角色mapper */ +@Mapper public interface RoleMapper extends BaseMapper { /** * 根据角色查询已经授权的模块 diff --git a/template-back-common/src/main/java/com/template/back/common/mapper/system/SettingMapper.java b/template-back-common/src/main/java/com/template/back/common/mapper/system/SettingMapper.java index 367e50e86800bde687734318fcc2b07bd5261816..66d4560d478f4e56190ad92f1ecaf95aa05db8f9 100644 --- a/template-back-common/src/main/java/com/template/back/common/mapper/system/SettingMapper.java +++ b/template-back-common/src/main/java/com/template/back/common/mapper/system/SettingMapper.java @@ -2,11 +2,13 @@ package com.template.back.common.mapper.system; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.template.back.common.pojo.system.Setting; +import org.apache.ibatis.annotations.Mapper; /** * @author 张骞 * @version 1.0 * 自定义设置项保存数据 */ +@Mapper public interface SettingMapper extends BaseMapper { } diff --git a/template-back-common/src/main/java/com/template/back/common/pojo/BasePojo.java b/template-back-common/src/main/java/com/template/back/common/pojo/BasePojo.java index fbc9231b9ab497f5e402185e592bfb17f34fee59..7e3ca3487ad0d6c36c3f32c23f9cf874be69f810 100644 --- a/template-back-common/src/main/java/com/template/back/common/pojo/BasePojo.java +++ b/template-back-common/src/main/java/com/template/back/common/pojo/BasePojo.java @@ -2,7 +2,12 @@ package com.template.back.common.pojo; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.Version; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.apache.ibatis.annotations.Delete; import java.time.LocalDateTime; import java.util.Date; @@ -10,17 +15,39 @@ import java.util.Date; /** * @author 张骞 * @version 1.0.0 + * @Date 2022年8月14日18:39:33 * @Description 自动填充新增日期和修改日期,需要配合handler */ -@Data +@ApiModel("公共类") //knife4j框架注解,对类的解释说明 +@Data //注解get/set方法 public abstract class BasePojo { + //新增时的保存时间 + @ApiModelProperty("新增时间") @TableField(fill = FieldFill.INSERT) private LocalDateTime created; + //新增和修改时的保存时间 + @ApiModelProperty("修改时间") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updated; - //记录当前操作人信息,不进行自动填充,根据需求在业务层自行填充 - private String operator; + //记录当前操作用户姓名 + @ApiModelProperty("操作用户名称") + @TableField(fill = FieldFill.INSERT_UPDATE) + private String operatorName; + + //记录当前操作用户id + @ApiModelProperty("操作用户Id") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Long operatorId; + + //乐观锁字段 + @ApiModelProperty("乐观锁字段") + @Version + private Integer version; + + @ApiModelProperty("逻辑删除字段") + @TableLogic + private Integer deleted; } diff --git a/template-back-common/src/main/java/com/template/back/common/pojo/DataTree.java b/template-back-common/src/main/java/com/template/back/common/pojo/DataTree.java index 8e2d9875a1acb7f76553fe722c1db98719d97191..b915497ccfc2673a01a45c10d875bedd19d89d61 100644 --- a/template-back-common/src/main/java/com/template/back/common/pojo/DataTree.java +++ b/template-back-common/src/main/java/com/template/back/common/pojo/DataTree.java @@ -1,5 +1,6 @@ package com.template.back.common.pojo; +import java.io.Serializable; import java.util.List; /** @@ -8,7 +9,9 @@ import java.util.List; * @param * element ui 树形控件使用 */ -public interface DataTree { +public interface DataTree extends Serializable { + //定义序列化id + static final Long serialVersionUID = 1L; public Object getId(); public Object getParentId(); public void setChildren(List children); diff --git a/template-back-common/src/main/java/com/template/back/common/pojo/Heartbeat.java b/template-back-common/src/main/java/com/template/back/common/pojo/Heartbeat.java index 74c1ecff711aa6588ab334aa3a819ca0a2578d93..b5450b046e2b4cdfa4716723c9a1a58e6be6fd1c 100644 --- a/template-back-common/src/main/java/com/template/back/common/pojo/Heartbeat.java +++ b/template-back-common/src/main/java/com/template/back/common/pojo/Heartbeat.java @@ -1,6 +1,8 @@ package com.template.back.common.pojo; import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -10,12 +12,14 @@ import lombok.NoArgsConstructor; * @version 1.0.0 * 心跳连接表,用于查询 */ -@Data -@AllArgsConstructor -@NoArgsConstructor +@ApiModel("心跳连接模拟数据") //knife4j框架注解,对类的解释说明 +@Data //注解get/set方法 public class Heartbeat { //成员变量 + @ApiModelProperty("主键Id") @TableId //注解为主键 private Long id; //id + + @ApiModelProperty("名称") private String name; //名称 } diff --git a/template-back-common/src/main/java/com/template/back/common/pojo/school/Campus.java b/template-back-common/src/main/java/com/template/back/common/pojo/school/Campus.java index 263f51ab550ec41f66b21f8eaccf7cc67eee7051..597c0271bcb597785bddbcef4a2deb9252cdabca 100644 --- a/template-back-common/src/main/java/com/template/back/common/pojo/school/Campus.java +++ b/template-back-common/src/main/java/com/template/back/common/pojo/school/Campus.java @@ -4,30 +4,47 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.Version; import com.template.back.common.pojo.BasePojo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** * @author 张骞 - * @version 1.0.0 - * 校区数据实体模型 + * @version 2.0.0 + * @Date 2022年8月14日17:41:04 + * 校区数据实体模型,其他模型可以参考此模型 */ +@ApiModel("校区") //knife4j框架注解,对类的解释说明 @Data //注解get/set方法 @AllArgsConstructor //注解全参数构造方法 @NoArgsConstructor //注解无参构造方法 -public class Campus extends BasePojo { +public class Campus extends BasePojo implements Serializable { + + //定义序列化id + private static final Long serialVersionUID = 1L; + //成员变量 + @ApiModelProperty("主键id") @TableId(type = IdType.UUID ) //注解为主键,字段开启驼峰命名法 private String campusId; //主键id,使用UUID形式 + + @ApiModelProperty("学校名称") private String name; //学校名称 - private Date coopTime; //合作时间 + + @ApiModelProperty("合作时间") + private LocalDate coopTime; //合作时间 + + + @ApiModelProperty("所属销售") private String sale; //所属销售 + + @ApiModelProperty("校区备注") private String remark; //校区备注 - //乐观锁字段 - @Version - private Integer version; } diff --git a/template-back-common/src/main/java/com/template/back/common/pojo/system/Admin.java b/template-back-common/src/main/java/com/template/back/common/pojo/system/Admin.java index d997ef82f471bc99b85228f7b9c81c4ac8597bce..05f7431a191c9d859153f54193bc34b900e21cc0 100644 --- a/template-back-common/src/main/java/com/template/back/common/pojo/system/Admin.java +++ b/template-back-common/src/main/java/com/template/back/common/pojo/system/Admin.java @@ -4,30 +4,50 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.Version; import com.template.back.common.pojo.BasePojo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; + /** - * 后台管理员数据模型 + * @author 张骞 + * @version 2.0.0 + * @Date 2022年8月14日17:41:04 + * 后台用户数据模型 */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Admin extends BasePojo { +@ApiModel("后台用户") //knife4j框架注解,对类的解释说明 +@Data //注解get/set方法 +@AllArgsConstructor //注解全参数构造方法 +@NoArgsConstructor //注解无参构造方法 +public class Admin extends BasePojo implements Serializable { + //定义序列化id + private static final Long serialVersionUID = 1L; + + //成员变量 + @ApiModelProperty("主键id") @TableId //注解为主键 private Long adminId; //主键id + + @ApiModelProperty("用户姓名") private String name; //用户姓名 + + @ApiModelProperty("用户登录名") private String userName; //用户登录名 + + @ApiModelProperty("用户密码") private String password; //用户密码 + + @ApiModelProperty("用户状态") private Long state; //用户状态 + + @ApiModelProperty("部门id") private String deptId; //部门id //关联的部门类型 + @ApiModelProperty("关联的部门类型") @TableField(exist = false) //该字段在数据库中不存在 private Dept dept; - - //乐观锁字段 - @Version - private Integer version; } diff --git a/template-back-common/src/main/java/com/template/back/common/pojo/system/Dept.java b/template-back-common/src/main/java/com/template/back/common/pojo/system/Dept.java index 2f3115024b6d930815f59643ebe990791bf805ca..2b562c237840cb9aaa7e923608a27aff0c71a4b6 100644 --- a/template-back-common/src/main/java/com/template/back/common/pojo/system/Dept.java +++ b/template-back-common/src/main/java/com/template/back/common/pojo/system/Dept.java @@ -3,23 +3,37 @@ package com.template.back.common.pojo.system; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.Version; import com.template.back.common.pojo.BasePojo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; + /** - * 后台管理员关联部门用户模型 + * @author 张骞 + * @version 2.0.0 + * @Date 2022年8月14日17:41:04 + * 后台部门数据模型 */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Dept extends BasePojo { +@ApiModel("部门") //knife4j框架注解,对类的解释说明 +@Data //注解get/set方法 +@AllArgsConstructor //注解全参数构造方法 +@NoArgsConstructor //注解无参构造方法 +public class Dept extends BasePojo implements Serializable { + //定义序列化id + private static final Long serialVersionUID = 1L; + //成员变量 + @ApiModelProperty("主键id") @TableId //注解为主键 private Long deptId; //部门id + + @ApiModelProperty("部门名称") private String deptName; //部门名称 + + @ApiModelProperty("备注") private String remark; //备注 - @Version //乐观锁字段 - private Integer version; } diff --git a/template-back-common/src/main/java/com/template/back/common/pojo/system/Logger.java b/template-back-common/src/main/java/com/template/back/common/pojo/system/Logger.java index 6a3d7d0d9f93b6ceebc546b7ecbe54df2593d524..b897e73943ce135c381e6128a1dd1202b1d7334b 100644 --- a/template-back-common/src/main/java/com/template/back/common/pojo/system/Logger.java +++ b/template-back-common/src/main/java/com/template/back/common/pojo/system/Logger.java @@ -1,35 +1,80 @@ package com.template.back.common.pojo.system; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.template.back.common.pojo.BasePojo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; +import java.time.LocalDateTime; + /** * @author 张骞 - * @version 1.0.0 - * 记录日志数据模型 + * @version 2.0.0 + * @Date 2022年8月14日17:44:48 + * 自定义错误日志数据模型 */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Logger extends BasePojo { - //日志记录的成员变量信息 +@ApiModel("自定义错误日志") //knife4j框架注解,对类的解释说明 +@Data //注解get/set方法 +@AllArgsConstructor //注解全参数构造方法 +@NoArgsConstructor //注解无参构造方法 +public class Logger implements Serializable { + //定义序列化id + private static final Long serialVersionUID = 1L; - //用户id,在配置文件中设置为自增长 + //成员变量 + @ApiModelProperty("主键id") @TableId //注解为主键 private Long id; + //记录异常出现的类 + @ApiModelProperty("记录异常出现的类") private String classes; + //记录异常出现的方法 + @ApiModelProperty("记录异常出现的方法") private String method; + //记录操作时出现异常的用户id + @ApiModelProperty("记录操作时出现异常的用户id") private String userId; + //出现异常的用户姓名 + @ApiModelProperty("出现异常的用户姓名") private String nickName; + //具体的异常信息 + @ApiModelProperty("具体的异常信息") private String exception; + //开发者备注 + @ApiModelProperty("开发者备注") private String remark; + + //本表没有乐观锁字段与逻辑删除字段,这里不继承basePojo,所以添加如下字段 + + //新增时的保存时间 + @ApiModelProperty("新增时间") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime created; + + //新增和修改时的保存时间 + @ApiModelProperty("修改时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updated; + + //记录当前操作用户姓名 + @ApiModelProperty("操作用户名称") + @TableField(fill = FieldFill.INSERT_UPDATE) + private String operator_name; + + //记录当前操作用户id + @ApiModelProperty("操作用户Id") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Long operator_id; } diff --git a/template-back-common/src/main/java/com/template/back/common/pojo/system/Module.java b/template-back-common/src/main/java/com/template/back/common/pojo/system/Module.java index e4189c569aaff1654d1dc43c507ff01847faf231..6c0a6d74a7afbd2891c83d42749a66d3046828ac 100644 --- a/template-back-common/src/main/java/com/template/back/common/pojo/system/Module.java +++ b/template-back-common/src/main/java/com/template/back/common/pojo/system/Module.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.Version; import com.template.back.common.pojo.BasePojo; import com.template.back.common.pojo.DataTree; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -12,34 +14,55 @@ import lombok.NoArgsConstructor; import java.util.List; /** + * @author 张骞 + * @version 2.0.0 + * @Date 2022年8月14日18:21:34 * 功能模块数据模型 */ +@ApiModel("功能模块") //knife4j框架注解,对类的解释说明 @Data //注解生成get/set方法 @AllArgsConstructor //注解生成全参构造 @NoArgsConstructor //注解生成无参构造 public class Module extends BasePojo implements DataTree { //成员变量 + @ApiModelProperty("主键id") @TableId(value = "module_id") //注解为主键,指定主键在数据库中的名字 private Long id; //模块id + @ApiModelProperty("排序字段") private String sort; //排序字段 + + @ApiModelProperty("父模块id") private Long parentId; //父模块id + + @ApiModelProperty("模块名称") private String name; //模块名称 + + @ApiModelProperty("类型0 主菜单/1 左侧菜单/2按钮/3 链接/4 状态") private Long ctype; //'0 主菜单/1 左侧菜单/2按钮/3 链接/4 状态' + + @ApiModelProperty("状态1启用0停用") private Long state; //'1启用0停用' + + @ApiModelProperty("静态页链接地址") private String curl; //'模块前端静态页链接地址' + + @ApiModelProperty("页面请求地址") private String req; //'模块前端静态页点击按钮或者刷新页面后的请求地址' + + @ApiModelProperty("备注") private String remark; //'备注' + + @ApiModelProperty("图标") private String icon; //'图标 如果是按钮,这里则是按钮的显示状态' //本类的自关联对象 + @ApiModelProperty("本类的自关联对象") @TableField(exist = false) //该字段在数据库中不存在 private Module module; - @Version //乐观锁字段 - private Integer version; - //数据表中不存在,为子模块字段,在树形工具类中使用 + @ApiModelProperty("子模块") @TableField(exist= false) private List children; } diff --git a/template-back-common/src/main/java/com/template/back/common/pojo/system/Role.java b/template-back-common/src/main/java/com/template/back/common/pojo/system/Role.java index 8762529cef74e9ef7b1382e009d7f48805c1378d..3f5b6ee9364c18c68f3daf466fa43561b9a92410 100644 --- a/template-back-common/src/main/java/com/template/back/common/pojo/system/Role.java +++ b/template-back-common/src/main/java/com/template/back/common/pojo/system/Role.java @@ -4,25 +4,42 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.Version; import com.template.back.common.pojo.BasePojo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; + /** - * 角色模块数据模型 + * @author 张骞 + * @version 2.0.0 + * @Date 2022年8月14日18:25:30 + * 后台用户角色数据模型 */ +@ApiModel("后台用户角色") //knife4j框架注解,对类的解释说明 @Data //注解生成get/set方法 @AllArgsConstructor //注解生成全参构造 @NoArgsConstructor //注解生成无参构造 -public class Role extends BasePojo { +public class Role extends BasePojo implements Serializable { + + //定义序列化id + private static final Long serialVersionUID = 1L; + //创建成员变量 + @ApiModelProperty("主键id") @TableId //注解为主键 private Long roleId; + + @ApiModelProperty("角色名称") private String name; //名称 + + @ApiModelProperty("描述信息") private String remark; //描述信息 + + @ApiModelProperty("用户与角色关联回显数据") @TableField(exist = false) //该字段在数据库中不存在 private String checked; //用于用户与角色关联回显数据,标记当前用户和角色的关联关系 - @Version //乐观锁字段 - private Integer version; } diff --git a/template-back-common/src/main/java/com/template/back/common/pojo/system/Setting.java b/template-back-common/src/main/java/com/template/back/common/pojo/system/Setting.java index 31d75164249b9be19b119252b4b08a5c5fa71864..d3d55bbe354d59dfc55ffd4a316a6652d7c3358d 100644 --- a/template-back-common/src/main/java/com/template/back/common/pojo/system/Setting.java +++ b/template-back-common/src/main/java/com/template/back/common/pojo/system/Setting.java @@ -3,28 +3,43 @@ package com.template.back.common.pojo.system; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.Version; import com.template.back.common.pojo.BasePojo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; + /** * @author 张骞 * @version 1.0.0 + * @Date 2022年8月14日18:27:11 * 自定义可读取参数数据模型 * 键值对模式 */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class Setting extends BasePojo { +@ApiModel("后台自定义设置") //knife4j框架注解,对类的解释说明 +@Data //注解get/set方法 +@AllArgsConstructor //注解全参数构造方法 +@NoArgsConstructor //注解无参构造方法 +public class Setting extends BasePojo implements Serializable { + //定义序列化id + private static final Long serialVersionUID = 1L; + //成员变量 + @ApiModelProperty("主键id") @TableId //注解为主键 private Long id; + + @ApiModelProperty("排序字段") private String sort; //排序字段 + + @ApiModelProperty("参数名称") private String name; //参数名称 + + @ApiModelProperty("具体参数") private String param; //具体参数 - private String remark; //备注 - @Version //乐观锁字段 - private Integer version; + @ApiModelProperty("备注") + private String remark; //备注 } diff --git a/template-back-common/src/main/java/com/template/back/common/utils/CaChe.java b/template-back-common/src/main/java/com/template/back/common/utils/CaChe.java deleted file mode 100644 index d738350fa5b8ab0959f3db38d8855ec9536d7e83..0000000000000000000000000000000000000000 --- a/template-back-common/src/main/java/com/template/back/common/utils/CaChe.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.template.back.common.utils; - -import java.lang.annotation.*; - -/** - * @author 张骞 - * @version 1.0.0 - * @Description 被标记为Cache的Controller进行缓存,其他情况不进行缓存 - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -@Documented //标记注解 -public @interface CaChe { - /** - * 缓存时间,可以在注解中修改 - * @return - */ - String time() default "60"; -} diff --git a/template-back-common/src/main/java/com/template/back/common/vo/R.java b/template-back-common/src/main/java/com/template/back/common/vo/R.java index 9ee8cfb94baff70d1f56c99e15988fec0aaba0aa..4c3db364b766b352ef1522366eb2f9c128bcd8c7 100644 --- a/template-back-common/src/main/java/com/template/back/common/vo/R.java +++ b/template-back-common/src/main/java/com/template/back/common/vo/R.java @@ -1,7 +1,10 @@ package com.template.back.common.vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.io.Serializable; import java.util.HashMap; import java.util.Map; @@ -12,12 +15,20 @@ import java.util.Map; * A. 如果业务执行结果为成功, 构建R对象时, 只需要调用 success 方法; 如果需要返回数据传递 object 参数, 如果无需返回, 可以直接传递null。 * B. 如果业务执行结果为失败, 构建R对象时, 只需要调用error 方法, 传递错误提示信息即可。 */ +@ApiModel("web请求返回") //swagger类注解 @Data //注解生成get/set方法 -public class R { +public class R implements Serializable { //返回结果集的成员变量 + @ApiModelProperty("响应编码,1-成功,0或者其他数字-失败") private Integer code; //相应编码,1-成功,0或者其他数字-失败 + + @ApiModelProperty("错误信息") private String msg; //错误信息 + + @ApiModelProperty("响应数据") private T data; //数据 + + @ApiModelProperty("响应动态数据") private Map map = new HashMap(); //相应的动态数据 /** diff --git a/template-back-server/pom.xml b/template-back-server/pom.xml index 5bda71ff937d31b9e885656e12418710c2649f53..d748ad47b74ecf00101084cf907fc150117f324e 100644 --- a/template-back-server/pom.xml +++ b/template-back-server/pom.xml @@ -12,7 +12,7 @@ 4.0.0 template-back-server - war + 8 @@ -20,6 +20,31 @@ + + + com.github.xiaoymin + knife4j-spring-boot-starter + 3.0.2 + + + + org.springframework.boot + spring-boot-starter-cache + + + + org.springframework.boot + spring-boot-starter-websocket + + + + org.thymeleaf + thymeleaf-spring5 + + + org.thymeleaf.extras + thymeleaf-extras-java8time + org.springframework.boot @@ -109,65 +134,44 @@ fastjson 1.2.76 - - - - - - - - - - + + + + + + org.apache.maven.plugins + maven-resources-plugin + 3.1.0 + + UTF-8 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + + org.springframework.boot + spring-boot-maven-plugin + 2.4.5 + + + + repackage + + + + + + diff --git a/template-back-server/src/main/java/com/template/back/server/BackApplication.java b/template-back-server/src/main/java/com/template/back/server/BackApplication.java index 47c177be02c9a3c87250db16ce679f10ba298067..fe93b10551cace409da4dcb9e40ac73cbd5fbb8f 100644 --- a/template-back-server/src/main/java/com/template/back/server/BackApplication.java +++ b/template-back-server/src/main/java/com/template/back/server/BackApplication.java @@ -7,6 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration; import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableScheduling; @@ -17,6 +18,8 @@ import org.springframework.scheduling.annotation.EnableScheduling; */ //开启定时任务 @EnableScheduling +//启用Spring Cache框架注解 +@EnableCaching //由于上传逻辑移动至common工程,所以需要改变扫描把范围才能扫描到 @ComponentScan(basePackages={"com.template"}) //排除mongo的自动配置 diff --git a/template-back-server/src/main/java/com/template/back/server/config/WebConfig.java b/template-back-server/src/main/java/com/template/back/server/config/WebConfig.java index 11d3d94f39fa1acb68067f2082085951c165a7ed..413ac79250f9181b38961e76a3d951d2134b37b8 100644 --- a/template-back-server/src/main/java/com/template/back/server/config/WebConfig.java +++ b/template-back-server/src/main/java/com/template/back/server/config/WebConfig.java @@ -2,17 +2,24 @@ package com.template.back.server.config; import com.template.back.common.mapper.JacksonObjectMapper; import com.template.back.server.interceptor.AuthorInterceptor; -import com.template.back.server.interceptor.RedisCacheInterceptor; import com.template.back.server.interceptor.AdminLoginInterceptor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; import java.util.List; @@ -24,16 +31,23 @@ import java.util.List; @Configuration @Slf4j public class WebConfig extends WebMvcConfigurationSupport { + //注入登录拦截器 @Autowired private AdminLoginInterceptor adminLoginInterceptor; - //注入缓存拦截器 - @Autowired - private RedisCacheInterceptor redisCacheInterceptor; + + //注入权限拦截器 @Autowired private AuthorInterceptor authorInterceptor; + /** + * 定义前端资源需要放行的部分 + */ + private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { + "classpath:/META-INF/resources/", "classpath:/resources/", + "classpath:/backend/", "classpath:/public/" }; + /** * 将自定义方法加入拦截器 * @param registry @@ -42,10 +56,9 @@ public class WebConfig extends WebMvcConfigurationSupport { public void addInterceptors(InterceptorRegistry registry) { //考虑拦截器的顺序 //登录使用了过滤器,不再使用拦截器 - //registry.addInterceptor(this.adminLoginInterceptor).addPathPatterns("/**"); + registry.addInterceptor(this.adminLoginInterceptor).addPathPatterns("/**"); //权限拦截器 registry.addInterceptor(this.authorInterceptor).addPathPatterns("/**"); - registry.addInterceptor(this.redisCacheInterceptor).addPathPatterns("/**"); } /** * 进行静态资源映射的方法 @@ -55,9 +68,25 @@ public class WebConfig extends WebMvcConfigurationSupport { protected void addResourceHandlers(ResourceHandlerRegistry registry) { log.info("开始进行静态资源映射……"); registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/"); - registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/"); + //注册前端资源,避免前端js和css无法被加载 + registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS); //配置本地磁盘的静态资源路径 registry.addResourceHandler("/common/download/**").addResourceLocations("file:E:/001/"); + //配置swagger资源(下面两个都是) + registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); + } + + /** + * 自定义首页地址 + * @param registry + */ + @Override + public void addViewControllers(ViewControllerRegistry registry) { + //登录的路径 + registry.addViewController("/").setViewName("forward:/backend/pages/login/login.html"); + registry.setOrder(Ordered.HIGHEST_PRECEDENCE); + super.addViewControllers(registry); } /** @@ -73,4 +102,32 @@ public class WebConfig extends WebMvcConfigurationSupport { //03.将上面的消息转换器对象追加到mvc框架的转换器集合中 converters.add(0,messageConverter); } + + /** + * knife4j框架配置使用 + * @return + */ + @Bean + public Docket createRestApi() { + // 文档类型 + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.basePackage("com.template.back.server.controller")) + .paths(PathSelectors.any()) + .build(); + } + + /** + * knife4j框架配置使用 + * @return + */ + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("Z-Admin") + .version("2.1") + .description("Z-Admin后台管理接口文档") + .build(); + } + } diff --git a/template-back-server/src/main/java/com/template/back/server/controller/school/CampusController.java b/template-back-server/src/main/java/com/template/back/server/controller/school/CampusController.java index ca10c7a76489f7eee2a7dba572bb381a617dc0c1..902fd2c852f2000ac30dccdbc6e3661ec893fe53 100644 --- a/template-back-server/src/main/java/com/template/back/server/controller/school/CampusController.java +++ b/template-back-server/src/main/java/com/template/back/server/controller/school/CampusController.java @@ -7,15 +7,22 @@ import com.template.back.common.pojo.school.Campus; import com.template.back.common.pojo.system.Admin; import com.template.back.common.service.LoggerService; import com.template.back.common.utils.AdminThreadLocal; +import com.template.back.common.vo.R; import com.template.back.server.service.school.CampusService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; +import java.util.List; import java.util.Map; /** @@ -23,8 +30,9 @@ import java.util.Map; * @version 1.0.0 * 加盟校控制层代码,本框架单表增删改查标准代码 */ -@Controller //标记为控制层 -@RequestMapping("/school/campus") //注解请求映射路径 +@Api(tags = "校区管理相关接口") +@RestController //标记为restful风格的控制层 +@RequestMapping("/school/campus/") //注解请求映射路径 @Slf4j //注解日志 public class CampusController { //注入自定义日志业务层 @@ -35,179 +43,150 @@ public class CampusController { @Autowired private CampusService campusService; + /** - * 查询列表 + * 查询部门列表 * - * @param page 当前页码 - * @param pageSize 每页的数据长度 - * @param modelAndView 视图对象 + * @param page 当前页码 + * @param pageSize 每页的数据长度 * @return */ - @RequestMapping("list") - public ModelAndView list(@RequestParam(value = "page", defaultValue = "1", required = false) Integer page, - @RequestParam(value = "size", defaultValue = "12", required = false) Integer pageSize, - ModelAndView modelAndView) { + @ApiOperation(value = "查看加盟校列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page",value = "当前页码",required = true,defaultValue = "1"), + @ApiImplicitParam(name = "pageSize",value = "每页数据长度",required = true,defaultValue = "10"), + @ApiImplicitParam(name = "campusName",value = "根据校区名称查询",required = false), + @ApiImplicitParam(name = "address",value = "根据校区地址查询",required = false), + @ApiImplicitParam(name = "startData",value = "根据开始时间查询,和结束时间共用",required = false), + @ApiImplicitParam(name = "endData",value = "根据结束时间查询,和开始时间共用",required = false), + }) //knife4j注解,用于对接口参数进行说明 + @Cacheable(value = "campusCache",key = "#page + '_' + #pageSize+ '_' +#campusName + '_' + #address+ '_' + #startData + '_' + #endData") //spring cache写入缓存 + @GetMapping("page") + public R list(@RequestParam(value = "page", defaultValue = "1") Integer page, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, + @RequestParam(value = "campusName", required = false) String campusName, + @RequestParam(value = "address", required = false) String address, + @RequestParam(value = "startData", required = false)String startData, + @RequestParam(value = "endData", required = false)String endData) { try { //调用业务层方法 - Page all = this.campusService.findPage(page, pageSize); + Page all = this.campusService.findPage(page, pageSize, campusName, address,startData,endData); //向前端存入数据 - modelAndView.addObject("page", all); - //请求转发 - modelAndView.setViewName("WEB-INF/pages/school/campus/list"); - return modelAndView; + return R.success(all); } catch (Exception exception) { //记录日志 - this.loggerService.saveLogAndUser(this.getClass().getName(), //获取当前类名及类数据 + this.loggerService.saveLog(this.getClass().getName(), //获取当前类名及类数据 Thread.currentThread().getStackTrace()[1].getMethodName(), //获取当前方法名 - this.getAdmin().getName(), //获取当前登录的用户名 - exception, "查询校区列表"); //功能中文描述 - log.error("后台工程出现异常!异常信息为:" + exception); + exception, "查询加盟校列表"); + log.error("后台工程:controller.CampusController出现异常!异常信息为:" + exception); } //出现异常,返回错误信息 - modelAndView.setStatus(HttpStatus.INTERNAL_SERVER_ERROR); - return modelAndView; + return R.error("查询数据列表异常!"); } /** - * 跳转到新增页面的方法 + * 新增数据的方法 + * @param campus + * @return + */ + @ApiOperation(value = "新增加盟校数据") + @ApiImplicitParams({@ApiImplicitParam(name = "campus",value = "新增的加盟校数据",required = true)}) //knife4j注解,用于对接口参数进行说明 + @CacheEvict(value = "campusCache",allEntries = true) //新增数据后,删除对应的缓存数据 + @PostMapping("save") + public R addSave(@RequestBody Campus campus){ + //调用业务层的方法进行保存 + Boolean insert = this.campusService.save(campus); + if(insert){ + return R.success("数据保存成功!"); + }else { + return R.error("数据保存失败!"); + } + + } + + /** + * 根据id查询单条数据,用于数据回显 * + * @param id * @return */ - @RequestMapping("toAdd") - public ModelAndView toAdd(ModelAndView modelAndView) { - //转发页面,如果自关联、一对多、多对多,可以模仿系统管理部分的方法 - modelAndView.setViewName("WEB-INF/pages/school/campus/add"); - return modelAndView; + @ApiOperation(value = "根据id查询单条数据") + @ApiImplicitParams({@ApiImplicitParam(name = "id",value = "选中的校区id",required = true)}) //knife4j注解,用于对接口参数进行说明 + @PostMapping("findById") + public R findById(@RequestParam(value = "id") String id) { + //如果传入的数据不为空,则开始查询 + if (ObjectUtil.isNotEmpty(id)) { + Campus campus = this.campusService.findOne(id); + if (ObjectUtil.isNotEmpty(campus)) { + return R.success(campus); + } + } + return R.error("未查询到要修改的数据!"); } /** - * 新增保存数据的方法 - * @param modelAndView 视图对象 - * @param param 前端FROM表单提交数据 - * @return 返回视图对象 + * 修数据的方法 + * @return */ - @RequestMapping("save") - public ModelAndView insert(ModelAndView modelAndView, @RequestParam Map param){ + @ApiOperation(value = "修改加盟校数据") + @ApiImplicitParams({@ApiImplicitParam(name = "campus",value = "修改的加盟校数据",required = true)}) //knife4j注解,用于对接口参数进行说明 + @CacheEvict(value = "campusCache",allEntries = true) + @PutMapping("edit") + public R edit(@RequestBody Campus campus){ try { - //使用HuTool下的插件,进行map属性注入 - Campus campus = BeanUtil.fillBeanWithMap(param, new Campus(), false); //调用业务层的方法进行数据插入 - Boolean insert = this.campusService.insert(campus); - if(!insert){ - //写入错误信息 - modelAndView.addObject("error","业务层返回数据保存失败!"); - //转发页面 - modelAndView.setViewName("WEB-INF/pages/school/campus/add"); - }else { - //返回页面,请求重定向到列表页 - modelAndView.setViewName("redirect:/school/campus/list"); - } - return modelAndView; + Boolean update = this.campusService.update(campus); + return R.success("数据修改成功!"); } catch (Exception exception) { //记录日志 - this.loggerService.saveLogAndUser(this.getClass().getName(), //获取当前类名及类数据 + this.loggerService.saveLog(this.getClass().getName(), //获取当前类名及类数据 Thread.currentThread().getStackTrace()[1].getMethodName(), //获取当前方法名 - this.getAdmin().getName(), //获取当前登录的用户名 - exception, "新增校区数据"); //功能中文描述 - log.error("后台工程出现异常!异常信息为:" + exception); + exception, ""); + log.error("后台工程:controller.CampusController出现异常!异常信息为:" + exception); } //出现异常,返回错误信息 - //写入错误信息 - modelAndView.addObject("error","控制层返回数据保存失败!"); - //转发页面继续回到新增页 - modelAndView.setViewName("WEB-INF/pages/school/campus/add"); - return modelAndView; + return R.error("数据修改失败!"); } /** * 根据id删除数据的方法 - * - * @param modelAndView - * @param id + * @param ids * @return */ - @RequestMapping("delete") - public ModelAndView delete(ModelAndView modelAndView, @RequestParam("id") String id) { + @ApiOperation(value = "根据id删除数据的方法") + @ApiImplicitParams({@ApiImplicitParam(name = "ids",value = "选中的加盟校id集合",required = true)}) //knife4j注解,用于对接口参数进行说明 + @CacheEvict(value = "campusCache",allEntries = true) + @PostMapping("delete") + public R delete(@RequestParam("ids") List ids) { try { + //调用业务层的删除方法 - Boolean delete = this.campusService.deleteById(id); + Boolean delete = this.campusService.removeByIds(ids); + //判断业务层返回的状态 if(!delete){ //写入错误数据 - modelAndView.addObject("error","数据删除失败!"); - } - //返回页面,请求重定向到列表页 - modelAndView.setViewName("redirect:/school/campus/list"); - return modelAndView; - } catch (Exception exception) { - //记录日志 - this.loggerService.saveLogAndUser(this.getClass().getName(), //获取当前类名及类数据 - Thread.currentThread().getStackTrace()[1].getMethodName(), //获取当前方法名 - this.getAdmin().getName(), //获取当前登录的用户名 - exception, "删除校区数据"); //功能中文描述 - log.error("后台工程出现异常!异常信息为:" + exception); - } - //出现异常,返回错误信息 - modelAndView.setStatus(HttpStatus.INTERNAL_SERVER_ERROR); - return modelAndView; - } - - /** - * 跳转到修改数据页面的方法 - * - * @param modelAndView - * @param id - * @return - */ - @RequestMapping("toEdit") - public ModelAndView toEdit(ModelAndView modelAndView, @RequestParam("id") String id) { - //01.数据回显 - if (ObjectUtil.isNotEmpty(id)) { - Campus campus = this.campusService.findOne(id); - if (ObjectUtil.isNotEmpty(campus)) { - //将数据写入 - modelAndView.addObject("campus", campus); + return R.error("数据删除失败!"); } - } - //02.请求重定向到修改页面 - modelAndView.setViewName("WEB-INF/pages/school/campus/update"); - return modelAndView; - } - - /** - * 保存修改后数据的方法 - * - * @return - */ - @RequestMapping("edit") - public ModelAndView edit(ModelAndView modelAndView, @RequestParam Map param) { - try { - //使用hutool下的插件,进行map属性注入 - Campus campus = BeanUtil.fillBeanWithMap(param, new Campus(), false); - //调用业务层的方法进行数据插入 - Boolean update = this.campusService.update(campus); - //返回页面,请求重定向到列表页 - modelAndView.setViewName("redirect:/school/campus/list"); - return modelAndView; + return R.success("数据删除成功!"); } catch (Exception exception) { //记录日志 - this.loggerService.saveLogAndUser(this.getClass().getName(), //获取当前类名及类数据 + this.loggerService.saveLog(this.getClass().getName(), //获取当前类名及类数据 Thread.currentThread().getStackTrace()[1].getMethodName(), //获取当前方法名 - this.getAdmin().getName(), //获取当前登录的用户名 - exception, "保存校区修改"); //功能中文描述 - log.error("后台工程出现异常!异常信息为:" + exception); + exception, ""); + log.error("后台工程:controller.CampusController出现异常!异常信息为:" + exception); } //出现异常,返回错误信息 - modelAndView.setStatus(HttpStatus.INTERNAL_SERVER_ERROR); - return modelAndView; + return R.error("数据删除失败!"); } - /** * 获取当前登录用户信息的方法 + * * @return 返回当前登录的用户对象 */ - public Admin getAdmin(){ + public Admin getAdmin() { return AdminThreadLocal.get(); } } + diff --git a/template-back-server/src/main/java/com/template/back/server/controller/system/AdminController.java b/template-back-server/src/main/java/com/template/back/server/controller/system/AdminController.java index f3ec013c093e99214e275789497963abf0655edf..f60a24f2b4ab482fee77fb90f8335364360243c0 100644 --- a/template-back-server/src/main/java/com/template/back/server/controller/system/AdminController.java +++ b/template-back-server/src/main/java/com/template/back/server/controller/system/AdminController.java @@ -15,6 +15,10 @@ import com.template.back.server.service.system.AdminService; import com.template.back.server.service.system.DeptService; import com.template.back.server.service.system.ModuleService; import com.template.back.server.service.system.RoleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -28,6 +32,7 @@ import java.util.Map; * @version 1.0.0 * 管理员控制层代码 */ +@Api(tags = "后台用户相关接口") //knife4j注解,用于自动生成api文档 @RestController //注解为restful风格controller @RequestMapping("system/user") @Slf4j @@ -56,6 +61,10 @@ public class AdminController { * * @return 返回页面重定向地址 */ + @ApiOperation(value = "后台用户登录接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({ + @ApiImplicitParam(name = "map",value = "用户信息 userName-用户名 password-密码",required = true) + }) //knife4j注解,用于对接口参数进行说明 @NoAuthorization //不需要验证登录 @PostMapping("/login") public R login(@RequestBody Map map, HttpServletRequest req) { @@ -100,6 +109,9 @@ public class AdminController { * * @return */ + @ApiOperation(value = "加载用户权限菜单接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({ + }) //knife4j注解,用于对接口参数进行说明 @PostMapping("author") public R> queryAuthor(HttpServletRequest request) { //01.获取当前登录的用户信息 @@ -132,6 +144,9 @@ public class AdminController { * @param req * @return */ + @ApiOperation(value = "后台用户退出接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({ + }) //knife4j注解,用于对接口参数进行说明 @PostMapping("logout") public R logout(HttpServletRequest req) { //删除请求域的数据 @@ -149,6 +164,12 @@ public class AdminController { * @param name 查询的条件 * @return */ + @ApiOperation(value = "查询后台用户列表接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({ + @ApiImplicitParam(name = "page",value = "当前页码",required = true,defaultValue = "1"), + @ApiImplicitParam(name = "pageSize",value = "每页数据长度",required = true,defaultValue = "10"), + @ApiImplicitParam(name = "name",value = "根据用户姓名查询",required = false) + }) //knife4j注解,用于对接口参数进行说明 @GetMapping("page") public R list(@RequestParam(value = "page", defaultValue = "1") Integer page, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, @@ -176,8 +197,10 @@ public class AdminController { * @param admin * @return */ + @ApiOperation(value = "新增后台用户接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "admin",value = "新增的后台用户",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("save") - public R insert(@RequestBody Admin admin) { + public R addSave(@RequestBody Admin admin) { try { //1.这里需要验证用户名唯一,根据用户名查询数据 Admin login = this.adminService.login(admin.getUserName()); @@ -213,6 +236,8 @@ public class AdminController { * @param ids * @return */ + @ApiOperation(value = "删除后台用户接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "ids",value = "选中的课程id集合",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("delete") public R delete(@RequestParam("ids") List ids) { try { @@ -235,14 +260,7 @@ public class AdminController { return R.error("数据删除失败!"); } - /** - * 获取当前登录用户信息的方法 - * - * @return 返回当前登录的用户对象 - */ - public Admin getAdmin() { - return AdminThreadLocal.get(); - } + /** * 根据id查询单个的方法 @@ -250,6 +268,8 @@ public class AdminController { * @param id * @return */ + @ApiOperation(value = "根据id查询单条数据接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "id",value = "选中的用户id",required = true)}) //knife4j注解,用于对接口参数进行说明 @GetMapping("/findById") public R findById(@RequestParam("id") Long id) { //01.数据回显 @@ -269,8 +289,10 @@ public class AdminController { * * @return */ + @ApiOperation(value = "修改后台用户接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "admin",value = "修改的后台用户",required = true)}) //knife4j注解,用于对接口参数进行说明 @PutMapping("edit") - public R edit(@RequestBody Admin admin) { + public R update(@RequestBody Admin admin) { try { //调用业务层的方法进行数据插入 Boolean update = this.adminService.update(admin); @@ -291,6 +313,8 @@ public class AdminController { * * @return */ + @ApiOperation(value = "根据用户查询角色接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "id",value = "后台用户id",required = true)}) //knife4j注解,用于对接口参数进行说明 @GetMapping("userRoleList") public R> userRoleList(@RequestParam("id") Long id) { //数据回显 @@ -307,6 +331,8 @@ public class AdminController { * * @return */ + @ApiOperation(value = "根据用户查询角色接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "map",value = "adminId-后台用户id roles-选中的角色集合",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("/updateRole") public R updateRole(@RequestBody Map map) { //调取业务层的方法 @@ -315,4 +341,13 @@ public class AdminController { return R.success("用户授权成功!"); } + /** + * 获取当前登录用户信息的方法 + * + * @return 返回当前登录的用户对象 + */ + public Admin getAdmin() { + return AdminThreadLocal.get(); + } + } diff --git a/template-back-server/src/main/java/com/template/back/server/controller/system/DeptController.java b/template-back-server/src/main/java/com/template/back/server/controller/system/DeptController.java index 7fb6b8e5b2a1cb0bbacde9d5366977d228f36f9b..c0aed0b63d16c05b10a482aa2a8416b673d36026 100644 --- a/template-back-server/src/main/java/com/template/back/server/controller/system/DeptController.java +++ b/template-back-server/src/main/java/com/template/back/server/controller/system/DeptController.java @@ -9,6 +9,10 @@ import com.template.back.common.service.LoggerService; import com.template.back.common.vo.R; import com.template.back.server.service.system.AdminService; import com.template.back.server.service.system.DeptService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -21,6 +25,7 @@ import java.util.List; * 部门管理控制层程序 * 更新日志:前端更换为html页面,使用json格式数据进行交互,后端进行对应更改 */ +@Api(tags = "后台部门相关接口") //knife4j注解,用于自动生成api文档 @RestController //标记为控制层 @RequestMapping("/system/dept") //定义请求映射路径 @Slf4j //注解日志 @@ -43,6 +48,12 @@ public class DeptController { * @param pageSize 每页的数据长度 * @return */ + @ApiOperation(value = "查询部门列表接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({ + @ApiImplicitParam(name = "page",value = "当前页码",required = true,defaultValue = "1"), + @ApiImplicitParam(name = "pageSize",value = "每页数据长度",required = true,defaultValue = "10"), + @ApiImplicitParam(name = "deptName",value = "部门名称",required = false) + }) //knife4j注解,用于对接口参数进行说明 @GetMapping("page") public R list(@RequestParam(value = "page",defaultValue = "1")Integer page, @RequestParam(value = "pageSize",defaultValue = "10")Integer pageSize, @@ -68,6 +79,8 @@ public class DeptController { * * @return */ + @ApiOperation(value = "新增部门接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "dept",value = "新增的部门",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("save") public R addSave(@RequestBody Dept dept) { try { @@ -92,6 +105,8 @@ public class DeptController { * @param ids * @return */ + @ApiOperation(value = "删除部门接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "ids",value = "选中的部门id集合",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("delete") public R delete(@RequestParam("ids") List ids) { try { @@ -127,6 +142,8 @@ public class DeptController { * @param id * @return */ + @ApiOperation(value = "根据id查询单条数据接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "id",value = "选中的部门id",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("/findById") public R findById(@RequestParam("id") Long id) { //01.数据回显 @@ -146,8 +163,10 @@ public class DeptController { * 保存修改后数据的方法 * @return */ + @ApiOperation(value = "修改部门接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "dept",value = "修改的部门",required = true)}) //knife4j注解,用于对接口参数进行说明 @PutMapping("edit") - public R edit(@RequestBody Dept dept){ + public R update(@RequestBody Dept dept){ try { //调用业务层的方法进行数据插入 Boolean update = this.deptService.update(dept); @@ -168,6 +187,7 @@ public class DeptController { * 查询列表的方法 * @return */ + @ApiOperation(value = "查询全部部门接口") //knife4j注解,用于对接口方法进行说明 @GetMapping("/list") public R> list(){ //01.调用业务层方法 diff --git a/template-back-server/src/main/java/com/template/back/server/controller/system/LoggerController.java b/template-back-server/src/main/java/com/template/back/server/controller/system/LoggerController.java index 7050ab35852bf92a65ea930c78302e087a797ee0..8837db340af7cf01b6de5d0ba93af693eda0c31f 100644 --- a/template-back-server/src/main/java/com/template/back/server/controller/system/LoggerController.java +++ b/template-back-server/src/main/java/com/template/back/server/controller/system/LoggerController.java @@ -3,6 +3,10 @@ package com.template.back.server.controller.system; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.template.back.common.service.LoggerService; import com.template.back.common.vo.R; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -14,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController; * @author 张骞 * 自定义日志控制层 */ +@Api(tags = "后台日志相关接口") //knife4j注解,用于自动生成api文档 @RestController @RequestMapping("system/logger") @Slf4j @@ -29,6 +34,11 @@ public class LoggerController { * 查看日志列表的功能 * @return */ + @ApiOperation(value = "查询日志列表接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({ + @ApiImplicitParam(name = "page",value = "当前页码",required = true,defaultValue = "1"), + @ApiImplicitParam(name = "pageSize",value = "每页数据长度",required = true,defaultValue = "10") + }) //knife4j注解,用于对接口参数进行说明 @GetMapping("page") public R loggerList(@RequestParam(value = "page",defaultValue = "1")Integer page, @RequestParam(value = "pageSize",defaultValue = "10")Integer pageSize diff --git a/template-back-server/src/main/java/com/template/back/server/controller/system/ModuleController.java b/template-back-server/src/main/java/com/template/back/server/controller/system/ModuleController.java index 584cc14a99cd5e7d9fe9852de81c77f5e079b800..cc145b165406dbfdf92bda159ee535666e7b0091 100644 --- a/template-back-server/src/main/java/com/template/back/server/controller/system/ModuleController.java +++ b/template-back-server/src/main/java/com/template/back/server/controller/system/ModuleController.java @@ -11,6 +11,10 @@ import com.template.back.common.utils.AdminThreadLocal; import com.template.back.common.vo.R; import com.template.back.server.service.system.ModuleService; import com.template.back.server.service.system.RoleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -23,6 +27,7 @@ import java.util.List; * 模块管理控制层程序 * 更新日志:前端更换为html页面,使用json格式数据进行交互,后端进行对应更改 */ +@Api(tags = "功能模块相关接口") //knife4j注解,用于自动生成api文档 @RestController //标记为控制层 @RequestMapping("/system/module") //定义请求映射路径 @Slf4j //注解日志 @@ -46,6 +51,12 @@ public class ModuleController { * @param name * @return */ + @ApiOperation(value = "查询模块列表接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({ + @ApiImplicitParam(name = "page",value = "当前页码",required = true,defaultValue = "1"), + @ApiImplicitParam(name = "pageSize",value = "每页数据长度",required = true,defaultValue = "10"), + @ApiImplicitParam(name = "name",value = "模块名称",required = false) + }) //knife4j注解,用于对接口参数进行说明 @GetMapping("page") public R list(@RequestParam(value = "page",defaultValue = "1")Integer page, @RequestParam(value = "pageSize",defaultValue = "10")Integer pageSize, @@ -71,8 +82,10 @@ public class ModuleController { * @param module * @return */ + @ApiOperation(value = "新增模块接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "module",value = "新增的模块",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("save") - public R insert(@RequestBody Module module){ + public R addSave(@RequestBody Module module){ try { //调用业务层的方法进行数据插入 Boolean insert = this.moduleService.insert(module); @@ -95,19 +108,15 @@ public class ModuleController { return R.error("数据保存失败!"); } - /** - * 获取当前登录用户信息的方法 - * @return 返回当前登录的用户对象 - */ - public Admin getAdmin(){ - return AdminThreadLocal.get(); - } + /** * 根据id集合删除数据的方法 * @param ids * @return */ + @ApiOperation(value = "删除模块接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "ids",value = "选中的模块id集合",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("delete") public R delete(@RequestParam("ids") List ids) { try { @@ -151,6 +160,8 @@ public class ModuleController { * @param id * @return */ + @ApiOperation(value = "根据id查询单条数据接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "id",value = "选中的模块id",required = true)}) //knife4j注解,用于对接口参数进行说明 @GetMapping("/findById") public R findById(@RequestParam("id") Long id) { //01.数据回显 @@ -169,8 +180,10 @@ public class ModuleController { * 保存修改后数据的方法 * @return */ + @ApiOperation(value = "修改后台用户接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "module",value = "修改的模块",required = true)}) //knife4j注解,用于对接口参数进行说明 @PutMapping("edit") - public R edit(@RequestBody Module module){ + public R update(@RequestBody Module module){ try { //调用业务层的方法进行数据插入 Boolean update = this.moduleService.update(module); @@ -191,6 +204,7 @@ public class ModuleController { * 查询列表的方法 * @return */ + @ApiOperation(value = "查询全部模块接口") //knife4j注解,用于对接口方法进行说明 @GetMapping("/list") public R> list(){ //01.调用业务层方法 @@ -199,5 +213,12 @@ public class ModuleController { return R.success(moduleList); } + /** + * 获取当前登录用户信息的方法 + * @return 返回当前登录的用户对象 + */ + public Admin getAdmin(){ + return AdminThreadLocal.get(); + } } diff --git a/template-back-server/src/main/java/com/template/back/server/controller/system/RoleController.java b/template-back-server/src/main/java/com/template/back/server/controller/system/RoleController.java index f715f734b7626f42ea9c2e8c84728d197f7c66a2..0ea8d3160188345bdd37555182b97bdadb1de472 100644 --- a/template-back-server/src/main/java/com/template/back/server/controller/system/RoleController.java +++ b/template-back-server/src/main/java/com/template/back/server/controller/system/RoleController.java @@ -11,6 +11,10 @@ import com.template.back.common.vo.TreeVo; import com.template.back.server.service.system.AdminService; import com.template.back.server.service.system.ModuleService; import com.template.back.server.service.system.RoleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -25,6 +29,7 @@ import java.util.Map; * 角色管理控制层程序 * 更新日志:前端更换为html页面,使用json格式数据进行交互,后端进行对应更改 */ +@Api(tags = "角色相关接口") //knife4j注解,用于自动生成api文档 @RestController //标记为控制层 @RequestMapping("/system/role") //定义请求映射路径 @Slf4j //注解日志 @@ -52,6 +57,12 @@ public class RoleController { * @param name //前端传入的查询条件 * @return */ + @ApiOperation(value = "查询角色列表接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({ + @ApiImplicitParam(name = "page",value = "当前页码",required = true,defaultValue = "1"), + @ApiImplicitParam(name = "pageSize",value = "每页数据长度",required = true,defaultValue = "10"), + @ApiImplicitParam(name = "name",value = "角色名称",required = false) + }) //knife4j注解,用于对接口参数进行说明 @GetMapping("page") public R list(@RequestParam(value = "page",defaultValue = "1")Integer page, @RequestParam(value = "pageSize",defaultValue = "10")Integer pageSize, @@ -78,6 +89,8 @@ public class RoleController { * @param role * @return */ + @ApiOperation(value = "新增角色接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "role",value = "新增的角色",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("save") public R addSave(@RequestBody Role role) { try { @@ -101,6 +114,8 @@ public class RoleController { * @param ids * @return */ + @ApiOperation(value = "删除后台用户接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "ids",value = "选中的角色id集合",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("delete") public R delete(@RequestParam("ids") List ids) { try { @@ -138,6 +153,8 @@ public class RoleController { * @param id * @return */ + @ApiOperation(value = "根据id查询单条数据接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "id",value = "选中的角色id",required = true)}) //knife4j注解,用于对接口参数进行说明 @GetMapping("/findById") public R findById(@RequestParam("id") Long id) { //01.数据回显 @@ -156,6 +173,8 @@ public class RoleController { * 保存修改后数据的方法 * @return */ + @ApiOperation(value = "修改角色接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "role",value = "修改的角色",required = true)}) //knife4j注解,用于对接口参数进行说明 @PutMapping("edit") public R edit(@RequestBody Role role) { try { @@ -180,6 +199,8 @@ public class RoleController { * * @return */ + @ApiOperation(value = "查询角色授权接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "id",value = "选中的角色id",required = true)}) //knife4j注解,用于对接口参数进行说明 @GetMapping("author") public R author(@RequestParam("id") Long roleId) { try { @@ -205,6 +226,8 @@ public class RoleController { * 保存授权数据 * @return */ + @ApiOperation(value = "保存角色授权接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "map",value = "st-选中的角色id checkedArray-选中的模块集合",required = true)}) //knife4j注解,用于对接口参数进行说明 @PutMapping("updateRoleModule") public R updateRoleModule(@RequestBody Map map) { //解析前台传入的数据 diff --git a/template-back-server/src/main/java/com/template/back/server/controller/system/SettingController.java b/template-back-server/src/main/java/com/template/back/server/controller/system/SettingController.java index 6ae453ae931afb9e041f102f77f731de03eb68ab..d45b070aeefd3fb7456b6600b7c49f30a1ddb5bb 100644 --- a/template-back-server/src/main/java/com/template/back/server/controller/system/SettingController.java +++ b/template-back-server/src/main/java/com/template/back/server/controller/system/SettingController.java @@ -6,6 +6,10 @@ import com.template.back.common.pojo.system.Setting; import com.template.back.common.service.LoggerService; import com.template.back.common.vo.R; import com.template.back.server.service.system.SettingService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -17,6 +21,7 @@ import java.util.List; * @version 1.0 * 自定义设置管理控制层程序,设置内容以键值对的形式存在 */ +@Api(tags = "自定义设置相关接口") //knife4j注解,用于自动生成api文档 @RestController //标记为控制层 @RequestMapping("/system/setting") //定义请求映射路径 @Slf4j //注解日志 @@ -36,6 +41,12 @@ public class SettingController { * @param name * @return */ + @ApiOperation(value = "查询设置列表接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({ + @ApiImplicitParam(name = "page",value = "当前页码",required = true,defaultValue = "1"), + @ApiImplicitParam(name = "pageSize",value = "每页数据长度",required = true,defaultValue = "10"), + @ApiImplicitParam(name = "name",value = "设置名称",required = false) + }) //knife4j注解,用于对接口参数进行说明 @GetMapping("page") public R list(@RequestParam(value = "page",defaultValue = "1")Integer page, @RequestParam(value = "pageSize",defaultValue = "10")Integer pageSize, @@ -63,6 +74,8 @@ public class SettingController { * @param setting * @return */ + @ApiOperation(value = "新增设置接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "setting",value = "新增的设置参数",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("save") public R addSave(@RequestBody Setting setting) { try { @@ -86,6 +99,8 @@ public class SettingController { * @param ids * @return */ + @ApiOperation(value = "删除后台用户接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "ids",value = "选中的设置id集合",required = true)}) //knife4j注解,用于对接口参数进行说明 @PostMapping("delete") public R delete(@RequestParam("ids") List ids) { try { @@ -114,6 +129,8 @@ public class SettingController { * @param id * @return */ + @ApiOperation(value = "根据id查询单条数据接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "id",value = "选中的设置id",required = true)}) //knife4j注解,用于对接口参数进行说明 @GetMapping("/findById") public R findById(@RequestParam("id") Long id) { //01.数据回显 @@ -131,8 +148,10 @@ public class SettingController { * 保存修改后数据的方法 * @return */ + @ApiOperation(value = "修改设置接口") //knife4j注解,用于对接口方法进行说明 + @ApiImplicitParams({@ApiImplicitParam(name = "setting",value = "修改的设置",required = true)}) //knife4j注解,用于对接口参数进行说明 @PutMapping("edit") - public R edit(@RequestBody Setting setting){ + public R update(@RequestBody Setting setting){ try { //调用业务层的方法进行数据插入 Boolean update = this.settingService.update(setting); diff --git a/template-back-server/src/main/java/com/template/back/server/controller/system/TestController.java b/template-back-server/src/main/java/com/template/back/server/controller/system/TestController.java index 1cc6ed05f0d79b7a4e6cd33deaa68c4fcf14513c..3d9fd762713ca97df3338ec327668acbe8d3637b 100644 --- a/template-back-server/src/main/java/com/template/back/server/controller/system/TestController.java +++ b/template-back-server/src/main/java/com/template/back/server/controller/system/TestController.java @@ -1,8 +1,11 @@ package com.template.back.server.controller.system; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import java.text.DateFormat; @@ -13,11 +16,13 @@ import java.util.Date; * @version 1.0.0 * 测试控制层代码 */ +@Api(tags = "测试相关接口") //knife4j注解,用于自动生成api文档 @Controller @Slf4j public class TestController { - @RequestMapping("/hello") + @ApiOperation(value = "测试接口") //knife4j注解,用于对接口方法进行说明 + @GetMapping("/hello") public String hello(Model m){ m.addAttribute("now", DateFormat.getDateTimeInstance().format(new Date())); return "login"; //视图重定向hello.jsp diff --git a/template-back-server/src/main/java/com/template/back/server/filter/LoginCheckFilter.java b/template-back-server/src/main/java/com/template/back/server/filter/LoginCheckFilter.java deleted file mode 100644 index 985033d41f43ae14d6b75c4cb2127005ddef7a75..0000000000000000000000000000000000000000 --- a/template-back-server/src/main/java/com/template/back/server/filter/LoginCheckFilter.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.template.back.server.filter; - -import com.alibaba.fastjson.JSON; -import com.template.back.common.pojo.system.Admin; -import com.template.back.common.utils.AdminThreadLocal; -import com.template.back.common.vo.R; -import lombok.extern.slf4j.Slf4j; -import org.springframework.util.AntPathMatcher; - -import javax.servlet.*; -import javax.servlet.annotation.WebFilter; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -/** - * @author 张骞 - * @version 1.0.0 - * 用户登录过滤器,拦截器使用有些问题,所以使用过滤器 -*/ -@WebFilter(filterName = "loginCheckFilter",urlPatterns = "/*") -@Slf4j -public class LoginCheckFilter implements Filter { - //创建路径匹配器对象 - private static final AntPathMatcher PATH_MATCHER = new AntPathMatcher(); - - @Override - public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - HttpServletRequest request = (HttpServletRequest) servletRequest; - HttpServletResponse response = (HttpServletResponse) servletResponse; - //01.获取本次请求的URI - String url = request.getRequestURI(); - //log.info("拦截到请求:{}", url); - - //02.判断本次请求, 是否需要登录, 才可以访问 - //2.1定义不需要过滤的数组 - String[] urls = new String[]{ - "/system/user/login", - "/system/user//logout", - "/backend/**", - "/common/**", - "/upload/**", - "/backend/pages/login/login.html" - }; - //2.2使用私有方法进行请求匹配 - Boolean check = this.check(urls, url); - - //03.如果不需要,则直接放行 - if (check) { - //log.info("本次请求{}不需要进行登录拦截", url); - filterChain.doFilter(request,response); - return; - } - - //04-1.判断后台用户登录状态,如果已登录,则直接放行 - Admin admin = (Admin) request.getSession().getAttribute("admin"); - if (null != admin) { - log.info("用户已登录,用户id为:{}", request.getSession().getAttribute("admin")); - //将登录的用户id放入ThreadLocal - AdminThreadLocal.set(admin); - //log.info("过滤器层返回数据:后台用户校验成功!"); - //放行操作 - filterChain.doFilter(request,response); - return; - } - - //05.如果未登录, 则返回未登录结果 - log.info("当前用户未登录!"); - response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN"))); - //返回false,如果返回true的话,write方法会报错 - return; - } - - /** - * 路径匹配,检查本次请求是否需要放行 - * - * @param urls - * @param uri - * @return - */ - private Boolean check(String[] urls, String uri) { - //01.遍历要放行的请求集合 - for (String url : urls) { - //02.调用请求匹配器的方法 - boolean match = PATH_MATCHER.match(url, uri); - //03.如果匹配,返回true - if (match) { - return true; - } - } - //04.如果不匹配,返回false - return false; - } -} diff --git a/template-back-server/src/main/java/com/template/back/server/handler/MyMetaObjectHandler.java b/template-back-server/src/main/java/com/template/back/server/handler/MyMetaObjectHandler.java index bd1977b6d50c8c93990ad48f3738662e2a028000..26acf9b30261a96d71ed572008fb0056bd9fcdaf 100644 --- a/template-back-server/src/main/java/com/template/back/server/handler/MyMetaObjectHandler.java +++ b/template-back-server/src/main/java/com/template/back/server/handler/MyMetaObjectHandler.java @@ -1,6 +1,8 @@ package com.template.back.server.handler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.template.back.common.pojo.system.Admin; +import com.template.back.common.utils.AdminThreadLocal; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; @@ -30,6 +32,12 @@ public class MyMetaObjectHandler implements MetaObjectHandler { //如果字段为空,则填充更新字段 setFieldValByName("updated",LocalDateTime.now(),metaObject); } + + //处理pojo的更新人字段 + setFieldValByName("operator_name",getAdmin().getName(),metaObject); + + //处理pojo的更新人id字段 + setFieldValByName("operator_id",getAdmin().getAdminId(),metaObject); } //更新数据时的方法 @@ -37,5 +45,18 @@ public class MyMetaObjectHandler implements MetaObjectHandler { public void updateFill(MetaObject metaObject) { //无论数据是否为空,每次更新,均更新该字段 setFieldValByName("updated",LocalDateTime.now(),metaObject); + + //处理pojo的更新人字段 + setFieldValByName("operator_name",getAdmin().getName(),metaObject); + + //处理pojo的更新人id字段 + setFieldValByName("operator_id",getAdmin().getAdminId(),metaObject); + } + + /** + * 获取当前登录用户的方法 + */ + private Admin getAdmin(){ + return AdminThreadLocal.get(); } } diff --git a/template-back-server/src/main/java/com/template/back/server/interceptor/AdminLoginInterceptor.java b/template-back-server/src/main/java/com/template/back/server/interceptor/AdminLoginInterceptor.java index 94a17effa592cfc2006077b345033d24a4672eac..de90f233c6a3a4bbecdc6b74d8d8d45e7a90b9b7 100644 --- a/template-back-server/src/main/java/com/template/back/server/interceptor/AdminLoginInterceptor.java +++ b/template-back-server/src/main/java/com/template/back/server/interceptor/AdminLoginInterceptor.java @@ -1,14 +1,18 @@ package com.template.back.server.interceptor; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.template.back.common.pojo.system.Admin; import com.template.back.common.utils.AdminThreadLocal; import com.template.back.common.utils.NoAuthorization; +import com.template.back.common.vo.R; import com.template.back.server.service.system.AdminService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; +import org.springframework.util.AntPathMatcher; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; @@ -23,14 +27,24 @@ import javax.servlet.http.HttpServletResponse; @Component //注解加载到spring容器中 @Slf4j //日志注解 public class AdminLoginInterceptor implements HandlerInterceptor { + + //knife4j框架的doc文档地址开关 + @Value("${doc-interceptor-state}") + private Boolean docState; + //注入业务层对象,用来验证用户登录信息 @Autowired private AdminService adminService; + //创建路径匹配器对象 + private static final AntPathMatcher PATH_MATCHER = new AntPathMatcher(); + //注入redis模板类,用于每次验证写入用户登录信息 @Autowired private RedisTemplate redisTemplate; + private static String sessionId = null; + /** * 请求的前置处理,将User对象写入到ThreadLocal中 * @@ -42,6 +56,13 @@ public class AdminLoginInterceptor implements HandlerInterceptor { */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + //00.获取sessionId + sessionId = request.getSession().getId(); + + //01.获取本次请求的URI + String url = request.getRequestURI(); + log.info("拦截到请求:{}", url); + //将Admin对象写入到ThreadLocal中 //校验当前的Handler if (!(handler instanceof HandlerMethod)) { @@ -62,6 +83,53 @@ public class AdminLoginInterceptor implements HandlerInterceptor { } } + //2-3.对knife4j框架 + String[] docUrls = new String[]{ + "/doc.html", //从这里开始,是swagger框架过滤使用 + "/webjars/**", + "/swagger-resources", + "/v2/api-docs" + }; + + //2-3-2使用私有方法进行请求匹配 + Boolean docCheck = this.check(docUrls, url); + + //2-3-3如果不需要,则直接放行 + if (docCheck) { + log.info("拦截到knife4j请求{}", url); + //判断配置文件的状态,如果为true,则放行,否则不放行 + if(docState){ + return true; + }else { + //如果配置文件为false,则始终返回false + return false; + } + } + + + //2-4.判断本次请求, 是否需要登录, 才可以访问 + //2-4-1定义需要过滤的数组 + String[] urls = new String[]{ + "/system/user/login", + "/system/user/logout", + "/backend/**", + "/common/**", + "/upload/**", + "/backend/pages/login/login.html", + "/", + "error.jsp", + "*.js", + "*.css" + }; + //2-4-2使用私有方法进行请求匹配 + Boolean check = this.check(urls, url); + + //2-4-3如果不需要,则直接放行 + if (check) { + log.info("本次请求{}不需要进行登录拦截", url); + return true; + } + //01.从session中拿到当前登录的用户数据 Admin admin = (Admin) request.getSession().getAttribute("admin"); //02.验证数据是否为空,如果不为空,则在数据库中查询用户信息 @@ -72,7 +140,8 @@ public class AdminLoginInterceptor implements HandlerInterceptor { if(null != admin1){ //用户验证成功,写入数据 AdminThreadLocal.set(admin1); - //将用户登录的状态数据写入redis + //04-3-2重新写入session,为session延时 + request.getSession().setAttribute("admin", admin); log.info("过滤器层返回数据:后台用户校验成功!"); return true; } @@ -80,7 +149,8 @@ public class AdminLoginInterceptor implements HandlerInterceptor { } //03用户状态验证失败,返回到登录页面 - response.sendRedirect(request.getContextPath() + "/backend/pages/login/login.html"); +// response.sendRedirect(request.getContextPath() + "/backend/pages/login/login.html"); + response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN"))); log.error("过滤器层返回数据:用户登录验证失败!"); return false; } @@ -99,6 +169,27 @@ public class AdminLoginInterceptor implements HandlerInterceptor { AdminThreadLocal.remove(); //把登录状态信息从redis中删除 } + + /** + * 路径匹配,检查本次请求是否需要放行 + * + * @param urls + * @param uri + * @return + */ + private Boolean check(String[] urls, String uri) { + //01.遍历要放行的请求集合 + for (String url : urls) { + //02.调用请求匹配器的方法 + boolean match = PATH_MATCHER.match(url, uri); + //03.如果匹配,返回true + if (match) { + return true; + } + } + //04.如果不匹配,返回false + return false; + } } diff --git a/template-back-server/src/main/java/com/template/back/server/interceptor/MyResponseBodyAdvice.java b/template-back-server/src/main/java/com/template/back/server/interceptor/MyResponseBodyAdvice.java deleted file mode 100644 index 683baddd8778c273c66339d6825e1b73777029f6..0000000000000000000000000000000000000000 --- a/template-back-server/src/main/java/com/template/back/server/interceptor/MyResponseBodyAdvice.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.template.back.server.interceptor; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.template.back.common.utils.CaChe; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.MethodParameter; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.http.MediaType; -import org.springframework.http.server.ServerHttpRequest; -import org.springframework.http.server.ServerHttpResponse; -import org.springframework.http.server.ServletServerHttpRequest; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; -import java.util.concurrent.TimeUnit; - -/** - * @author 张骞 - * @version 1.0 - * 缓存响应及写入功能 - */ -@ControllerAdvice -@Slf4j -public class MyResponseBodyAdvice implements ResponseBodyAdvice { - @Value("${tanhua.cache.enable}") //注入全局变量的设置值 - private Boolean enable; - @Autowired //注入redis模板类 - private RedisTemplate redisTemplate; - //序列化对象 - private static final ObjectMapper MAPPER = new ObjectMapper(); - /** - * 判断当前全局设置是否支持本操作 - * @param methodParameter - * @param aClass - * @return - */ - @Override - public boolean supports(MethodParameter methodParameter, Class aClass) { - //需要判断三个条件:配置文件中全局开关处于开启状态;是get请求;包含了@Cache注解 - //三个条件同时满足,flag为true - boolean flag = enable && methodParameter.hasMethodAnnotation(GetMapping.class) && methodParameter.hasMethodAnnotation(CaChe.class); - return flag; - } - - /** - * 输出之前的操作,缓存未命中的话,在这里重新写入缓存 - * @param o 返回的数据 - * @param methodParameter - * @param mediaType - * @param aClass - * @param serverHttpRequest - * @param serverHttpResponse - * @return - */ - @Override - public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) { - //如果传入的数据为空,则不需要处理 - if(null == o){ - return null; - } - - try{ - //将数据写入缓存 - String redisValue = null; - //判断o的类型是不是String类型 - if(o instanceof String){ - redisValue = (String) o; - }else { - String string = MAPPER.writeValueAsString(o); - redisValue = string; - } - - //调用拦截器的方法,生成redisKey - String redisKey = RedisCacheInterceptor.createRedisKey(((ServletServerHttpRequest)serverHttpRequest).getServletRequest()); - - //获取超时时间 - CaChe caChe = methodParameter.getMethodAnnotation(CaChe.class); - - //缓存的时间单位是秒 - this.redisTemplate.opsForValue().set(redisKey,redisValue,Long.valueOf(caChe.time()), TimeUnit.SECONDS); - - //输出日志 - log.info("数据已经写入缓存!"); - - }catch (Exception exception){ - log.error("将数据写入缓存失败!错误详情:"+exception); - } - - - - return o; - } -} diff --git a/template-back-server/src/main/java/com/template/back/server/interceptor/RedisCacheInterceptor.java b/template-back-server/src/main/java/com/template/back/server/interceptor/RedisCacheInterceptor.java deleted file mode 100644 index 3136fe343688cbf204a8ae605c09d174060ea205..0000000000000000000000000000000000000000 --- a/template-back-server/src/main/java/com/template/back/server/interceptor/RedisCacheInterceptor.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.template.back.server.interceptor; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.template.back.common.utils.CaChe; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.codec.digest.DigestUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.method.HandlerMethod; -import org.springframework.web.servlet.HandlerInterceptor; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * @author 张骞 - * @version 1.0 - * 缓存过滤功能 - */ -@Component //注解为Spring的bean进行管理 -@Slf4j -public class RedisCacheInterceptor implements HandlerInterceptor { - @Value("${tanhua.cache.enable}") //注入配置文件中的全局缓存开关数据 - private Boolean enable; - @Autowired //注入redis模板类,对缓存进行操作 - private RedisTemplate redisTemplate; - //对数据进行序列化 - private static final ObjectMapper MAPPER = new ObjectMapper(); - - /** - * 请求的前置处理,起到拦截并且写入缓存的作用 - * - * @param request - * @param response - * @param handler - * @return - * @throws Exception - */ - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - //设置缓存全局开关校验 - if (!enable) { - return true; //如果开关没有开启,则直接返回true,进行放行 - } - - //校验当前的Handler - if (!(handler instanceof HandlerMethod)) { - return true; - } - - //判断当前请求是否为get - if (!((HandlerMethod) handler).hasMethodAnnotation(GetMapping.class)) { - return true; - } - - //判断当前请求是否添加了Cache注解 - if (!((HandlerMethod) handler).hasMethodAnnotation(CaChe.class)) { - return true; - } - - //缓存命中 - //根据方法生成redisKey - String redisKey = createRedisKey(request); - //根据redisKey进行数据查询 - String cacheData = this.redisTemplate.opsForValue().get(redisKey); - //如果查询的数据为空,表示缓存没有命中 - if(StringUtils.isEmpty(cacheData)){ - log.info("当前请求没有命中缓存!"); - return true; - } - - //如果缓存命中,进行输出 - //设置字符集及数据信息 - response.setCharacterEncoding("UTF-8"); - response.setContentType("application/json; charset=utf-8"); - //输出查询的数据 - response.getWriter().write(cacheData); - log.info("当前请求已经命中缓存!"); - return false; //默认返回false,意味着进行拦截 - } - - /** - * 生成redis中的key,规则:SERVER_CACHE_DATA_MD5(url + param + token) - * - * @param request - * @return - */ - public static String createRedisKey(HttpServletRequest request) throws Exception { - String url = request.getRequestURI(); //请求的url - //Map parameterMap = request.getParameterMap(); - String param = MAPPER.writeValueAsString(request.getParameterMap()); //请求的param - String token = request.getHeader("Authorization"); //从请求头中拿到token数据 - - String data = url + "_" + param + "_" + token; - return "SERVER_CACHE_DATA_" + DigestUtils.md5Hex(data); - } -} diff --git a/template-back-server/src/main/java/com/template/back/server/service/school/CampusService.java b/template-back-server/src/main/java/com/template/back/server/service/school/CampusService.java index 2e54d6f7c49adbda844c961efa0976b28f89e3d6..3544b70c378fc5a53f0b71f2222825a23eae32bb 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/school/CampusService.java +++ b/template-back-server/src/main/java/com/template/back/server/service/school/CampusService.java @@ -1,28 +1,28 @@ package com.template.back.server.service.school; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.template.back.common.pojo.school.Campus; +import org.eclipse.jdt.internal.compiler.env.IModule; + /** * @author 张骞 * @version 1.0.1 * 校区管理业务层约束接口 */ -public interface CampusService { +public interface CampusService extends IService { /** * 分页查询的方法 * @param page 当前页码,默认1 * @param pageSize 当前页码,默认12 - * @return 返回自定义的分页VO数据 - */ - Page findPage(Integer page, Integer pageSize); - - /** - * 新增数据的方法 - * @param campus - * @return + * @param campusName 根据校区名称查询条件 + * @param address 根据校区地址查询条件 + * @param startData 根据开始日期查询条件 + * @param endData 根据结束日期查询条件 + * @return 返回自定义的分页VO数据 */ - Boolean insert(Campus campus); + Page findPage(Integer page, Integer pageSize,String campusName,String address, String startData, String endData); /** * 根据id删除数据的方法 diff --git a/template-back-server/src/main/java/com/template/back/server/service/school/Impl/CampusServiceImpl.java b/template-back-server/src/main/java/com/template/back/server/service/school/Impl/CampusServiceImpl.java index bbacd2dc8d4ad8bfec111aa5d7212559786e68d8..24d901631bee179e1f305d5a245d4007b7fd8890 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/school/Impl/CampusServiceImpl.java +++ b/template-back-server/src/main/java/com/template/back/server/service/school/Impl/CampusServiceImpl.java @@ -1,9 +1,13 @@ package com.template.back.server.service.school.Impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.template.back.common.mapper.school.CampusMapper; import com.template.back.common.pojo.school.Campus; import com.template.back.common.pojo.system.Admin; @@ -12,13 +16,17 @@ import com.template.back.server.service.school.CampusService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.List; + /** * @author 张骞 * @version 1.0.1 * 校区管理业务层 */ @Service //注解为spring管理的业务层 -public class CampusServiceImpl implements CampusService { +public class CampusServiceImpl extends ServiceImpl implements CampusService { //注入mapper接口 @Autowired private CampusMapper campusMapper; @@ -27,44 +35,47 @@ public class CampusServiceImpl implements CampusService { * 分页查询的方法 * @param page 当前页码,默认1 * @param pageSize 当前页码,默认12 - * @return 返回自定义的分页VO数据 + * @param campusName 根据校区名称查询条件 + * @param address 根据校区地址查询条件 + * @param startData 根据开始日期查询条件 + * @param endData 根据结束日期查询条件 + * @return 返回自定义的分页VO数据 */ @Override - public Page findPage(Integer page, Integer pageSize) { + public Page findPage(Integer page, Integer pageSize,String campusName,String address, String startData, String endData) { //01.配置MP的查询条件,根据时间排序 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.orderByDesc("created"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.orderByDesc(Campus::getCreated); + + //1.1根据校区名称查询 + if(StrUtil.isNotEmpty(campusName)){ + queryWrapper.like(Campus::getName,campusName); + } + + //2.4构造根据起止日期开始查询的条件,日期需要转换格式 + if (StrUtil.isAllNotEmpty(startData, endData)) { + LocalDate startDate = LocalDate.parse(startData, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + LocalDate endDate = LocalDate.parse(endData, DateTimeFormatter.ofPattern("yyyy-MM-dd")); + queryWrapper.ge(Campus::getCoopTime,startDate); + queryWrapper.le(Campus::getCoopTime,endDate); + } + //02.配置分页数据 - Page campusPage = new Page<>(page, pageSize); + Page pageCampus = new Page<>(page,pageSize); + //03.查询数据 - IPage campusIPage = this.campusMapper.selectPage(campusPage, queryWrapper); - //04.封装分页数据并返回 - return campusPage; - } + IPage campusIPage = this.campusMapper.selectPage(pageCampus, queryWrapper); - /** - * 新增数据的方法 - * @param campus - * @return - */ - @Override - public Boolean insert(Campus campus) { - //对数据进行非空验证的方法 - Boolean aBoolean = this.dataValidation(campus); - if(aBoolean){ - //01.生成UUID(注解自动生成) - //campus.setCampusId(UUID.randomUUID().toString()); - //02.获取当前操作的用户信息 - Admin admin = AdminThreadLocal.get(); - //03.更改当前数据的修改人信息 - campus.setOperator(admin.getName()); - //04.保存数据 - int insert = this.campusMapper.insert(campus); - return insert == 1; - } - return false; + //04.获取数据 + List campusList = campusIPage.getRecords(); + + + //06.封装分页数据返回 + pageCampus.setRecords(campusList); + return pageCampus; } + /** * 根据id删除数据的方法 * @param id diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/AdminService.java b/template-back-server/src/main/java/com/template/back/server/service/system/AdminService.java index 569592981f943f92a454225d3cdb0301174be020..86014d22bd647036de18b3d19b6f3b833286db81 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/AdminService.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/AdminService.java @@ -1,6 +1,7 @@ package com.template.back.server.service.system; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.template.back.common.pojo.system.Admin; import java.util.List; @@ -10,7 +11,7 @@ import java.util.List; * @version * 用户业务层封装类 */ -public interface AdminService { +public interface AdminService extends IService { /** * 后台用户登录的校验方法 * @param username 提交的用户名 diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/DeptService.java b/template-back-server/src/main/java/com/template/back/server/service/system/DeptService.java index beb1e9274016959dbe3d30f3fadd66a821c8284a..351b3d08992a482a22721e73ba1d025e69a6c1ad 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/DeptService.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/DeptService.java @@ -1,6 +1,7 @@ package com.template.back.server.service.system; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.template.back.common.pojo.system.Dept; import java.util.List; @@ -10,7 +11,7 @@ import java.util.List; * @version 1.0 * 部门管理业务层接口 */ -public interface DeptService { +public interface DeptService extends IService { /** * 分页查询的方法 diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/AdminServiceImpl.java b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/AdminServiceImpl.java index 838a5ea518b4d074a13e36c9feb01ac35c21e676..e43895f10b5af251b30f02bed8b938729281a8f8 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/AdminServiceImpl.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/AdminServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.template.back.common.mapper.system.AdminMapper; import com.template.back.common.mapper.system.DeptMapper; import com.template.back.common.mapper.system.RoleMapper; @@ -28,7 +29,7 @@ import java.util.List; */ @Service //业务层注解 @Slf4j //控制台日志注解 -public class AdminServiceImpl implements AdminService { +public class AdminServiceImpl extends ServiceImpl implements AdminService { //TODO 管理员用户密码的保存,没有进行加密,若考虑安全问题,可以使用MD5加密 //注入自定义日志业务层 @Autowired @@ -191,9 +192,7 @@ public class AdminServiceImpl implements AdminService { if (ObjectUtil.isAllNotEmpty(admin.getName(), admin.getUserName(), admin.getPassword(), admin.getState())) { //01.获取当前操作的用户信息 Admin adminInfo = AdminThreadLocal.get(); - //02.更改当前数据的修改人信息 - admin.setOperator(adminInfo.getName()); - //03.保存数据 + //02.保存数据 int insert = this.adminMapper.insert(admin); return insert == 1; } diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/DeptServiceImpl.java b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/DeptServiceImpl.java index 90491168767ed826b46d4c7535fa05b8100a873d..2cd276c75d1294b3684d1a65d3f83e7d4d1b87e8 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/DeptServiceImpl.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/DeptServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.template.back.common.mapper.system.DeptMapper; import com.template.back.common.pojo.system.Admin; import com.template.back.common.pojo.system.Dept; @@ -23,7 +24,7 @@ import java.util.List; */ @Service //注解标注为Spring的业务层 @Slf4j //日志注解 -public class DeptServiceImpl implements DeptService { +public class DeptServiceImpl extends ServiceImpl implements DeptService { //注入自定义日志业务层 @Autowired private LoggerService loggerService; @@ -64,9 +65,7 @@ public class DeptServiceImpl implements DeptService { public Boolean insert(Dept dept){ //01.获取当前操作的用户信息 Admin admin = AdminThreadLocal.get(); - //02.更改当前数据的修改人信息 - dept.setOperator(admin.getName()); - //03.保存数据 + //02.保存数据 int insert = this.deptMapper.insert(dept); return insert == 1; } diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/LoggerServiceImpl.java b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/LoggerServiceImpl.java index 298c99c65dde68f0969bfb7bf482fe11c0d38bc3..eb4a0f047a21764cfbe70c9790de7e0a04d62351 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/LoggerServiceImpl.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/LoggerServiceImpl.java @@ -3,6 +3,7 @@ package com.template.back.server.service.system.Impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.template.back.common.mapper.system.LoggerMapper; import com.template.back.common.pojo.system.Logger; import com.template.back.server.service.system.LoggerService; @@ -13,7 +14,7 @@ import org.springframework.stereotype.Service; @Service @Slf4j -public class LoggerServiceImpl implements LoggerService { +public class LoggerServiceImpl extends ServiceImpl implements LoggerService { //注入自定义日志业务层 @Autowired private LoggerService loggerService; diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/ModuleServiceImpl.java b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/ModuleServiceImpl.java index 7d6a55447589b8436e8ed53aeb8706de3510955e..d1995a1a4d76a6cac5ce3d4dd37cf7d8a34d4e93 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/ModuleServiceImpl.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/ModuleServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.template.back.common.mapper.system.ModuleMapper; import com.template.back.common.mapper.system.RoleMapper; import com.template.back.common.pojo.system.Admin; @@ -25,7 +26,7 @@ import java.util.List; * 模块管理业务层 */ @Service //标记为SpringBoot管理的业务层 -public class ModuleServiceImpl implements ModuleService { +public class ModuleServiceImpl extends ServiceImpl implements ModuleService { //注入mapper @Autowired private ModuleMapper moduleMapper; @@ -108,9 +109,7 @@ public class ModuleServiceImpl implements ModuleService { if(ObjectUtil.isAllNotEmpty(module.getName(),module.getCurl(),module.getCtype(),module.getState())){ //01.获取当前操作的用户信息 Admin admin = AdminThreadLocal.get(); - //02.更改当前数据的修改人信息 - module.setOperator(admin.getName()); - //03.保存数据 + //02.保存数据 int insert = this.moduleMapper.insert(module); return insert == 1; } diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/RoleServiceImpl.java b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/RoleServiceImpl.java index 41e9f54570a126f8769b26769b763cb68befb96c..a8236f4faaa9cabd8c99473c958218d8aab0d1a3 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/RoleServiceImpl.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/RoleServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.template.back.common.mapper.system.RoleMapper; import com.template.back.common.pojo.system.Admin; import com.template.back.common.pojo.system.Role; @@ -26,7 +27,7 @@ import java.util.*; */ @Service //标记为SpringBoot管理的业务层 @Slf4j //日志注解 -public class RoleServiceImpl implements RoleService { +public class RoleServiceImpl extends ServiceImpl implements RoleService { //注入mapper @Autowired private RoleMapper roleMapper; @@ -65,9 +66,7 @@ public class RoleServiceImpl implements RoleService { if(ObjectUtil.isAllNotEmpty(role.getName())){ //01.获取当前操作的用户信息 Admin admin = AdminThreadLocal.get(); - //02.更改当前数据的修改人信息 - role.setOperator(admin.getName()); - //03.保存数据 + //02.保存数据 int insert = this.roleMapper.insert(role); return insert == 1; } diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/SettingServiceImpl.java b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/SettingServiceImpl.java index ff6bf8daf6e8b72b488fa5c503c96cc1e92cdfa5..132281bcd4a43d3e5b98d6135628b0970a4484b0 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/Impl/SettingServiceImpl.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/Impl/SettingServiceImpl.java @@ -3,6 +3,7 @@ package com.template.back.server.service.system.Impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.template.back.common.mapper.system.SettingMapper; import com.template.back.common.pojo.system.Admin; import com.template.back.common.pojo.system.Setting; @@ -21,7 +22,7 @@ import java.util.List; */ @Service //标记为SpringBoot管理的业务层 @Slf4j //日志注解 -public class SettingServiceImpl implements SettingService { +public class SettingServiceImpl extends ServiceImpl implements SettingService { //注入mapper对象 @Autowired private SettingMapper settingMapper; @@ -57,9 +58,7 @@ public class SettingServiceImpl implements SettingService { public Boolean insert(Setting setting) { //01.获取当前操作的用户信息 Admin admin = AdminThreadLocal.get(); - //02.更改当前数据的修改人信息 - setting.setOperator(admin.getName()); - //03.保存数据 + //02.保存数据 int insert = this.settingMapper.insert(setting); return insert == 1; } diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/LoggerService.java b/template-back-server/src/main/java/com/template/back/server/service/system/LoggerService.java index 6b636709662adf90c64675510ba3184dfe480216..1e7dff316158bbc054f1070524245f76e4c2fd40 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/LoggerService.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/LoggerService.java @@ -1,13 +1,15 @@ package com.template.back.server.service.system; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.template.back.common.pojo.system.Logger; /** * @author 张骞 * @version 1.0.2 * 错误捕获日志业务层接口 */ -public interface LoggerService { +public interface LoggerService extends IService { Page findPage(Integer page, Integer pageSize); } diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/ModuleService.java b/template-back-server/src/main/java/com/template/back/server/service/system/ModuleService.java index 2bd31b690bbd0a6e9b0ba870628a25b0509bc061..9980668337a426236608042dd75922f009c8a199 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/ModuleService.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/ModuleService.java @@ -1,6 +1,7 @@ package com.template.back.server.service.system; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.template.back.common.pojo.system.Module; import com.template.back.common.vo.TreeVo; @@ -9,7 +10,7 @@ import java.util.List; /** * 模块管理业务层约束接口 */ -public interface ModuleService { +public interface ModuleService extends IService { /** * 分页查询 diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/RoleService.java b/template-back-server/src/main/java/com/template/back/server/service/system/RoleService.java index f53959b4c3abc2c581584bf3ca7ed15b0700a8c6..c22f4ebf2e67a2ea87c4d7c3fa085ada7db16385 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/RoleService.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/RoleService.java @@ -1,6 +1,7 @@ package com.template.back.server.service.system; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.template.back.common.pojo.system.Role; import com.template.back.common.vo.TreeVo; @@ -10,7 +11,7 @@ import java.util.Map; /** * 角色管理业务层约束接口 */ -public interface RoleService { +public interface RoleService extends IService { /** * 分页查询 diff --git a/template-back-server/src/main/java/com/template/back/server/service/system/SettingService.java b/template-back-server/src/main/java/com/template/back/server/service/system/SettingService.java index 0d9cc91bcff99aa7abaa58852df07f5dd8ac914f..cc84fbb5f0417721a9cedf52f6f3851d104f14e8 100644 --- a/template-back-server/src/main/java/com/template/back/server/service/system/SettingService.java +++ b/template-back-server/src/main/java/com/template/back/server/service/system/SettingService.java @@ -1,6 +1,7 @@ package com.template.back.server.service.system; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; import com.template.back.common.pojo.system.Setting; import java.util.List; @@ -10,7 +11,7 @@ import java.util.List; * @version * 设置类业务层 */ -public interface SettingService { +public interface SettingService extends IService { /** * 分页查询的方法 * @param page diff --git a/template-back-server/src/main/resources/application.properties b/template-back-server/src/main/resources/application.properties index 787a3b9a8fbed23e95d81d5745b29df8e648d014..baf42c92921f41878159baa67106f725dc99fb39 100644 --- a/template-back-server/src/main/resources/application.properties +++ b/template-back-server/src/main/resources/application.properties @@ -1,27 +1,56 @@ spring.application.name = template-back server.port = 18078 -#Ȩ޹ -author-interceptor-state=true +# +# Ĭ8192 +server.tomcat.max-connections=100 +# ȴгȣĬ100 +server.tomcat.accept-count=100 +# ߳Ĭ20048gڴ棬ֵ߳800 +server.tomcat.threads.max=200 +# С߳Ĭ10ʵһЩԱӦͻȻķ +server.tomcat.threads.min-spare=20 -#mybatisplusڿ̨sqlͽ -loggoing.level.com.template.back.common.mapper.system =debug +# Ȩ޹ +author-interceptor-state=false + +# knife4jĵأҪر +doc-interceptor-state=true -#ϴļĴС +# ϴļĴС spring.servlet.multipart.max-file-size=50MB spring.servlet.multipart.max-request-size=50MB +# mysqlݿ spring.datasource.driver-class-name=com.mysql.jdbc.Driver -spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring_db?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false +spring.datasource.url=jdbc:mysql://58.56.31.21:3306/spring_db?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false spring.datasource.username=spring_db spring.datasource.password=123456 +# ߼ɾ +# ߼ɾֵ 1 +mybatis-plus.global-config.db-config.logic-delete-value=1 +# ߼δɾֵ 0 +mybatis-plus.global-config.db-config.logic-not-delete-value=0 + +# mybatisplusڿ̨sqlͽ +loggoing.level.com.template.back.common.mapper.system =debug + # Redis spring.redis.jedis.pool.max-wait = 5000ms spring.redis.jedis.pool.max-Idle = 100 spring.redis.jedis.pool.min-Idle = 10 spring.redis.timeout = 10s +# mapperɨλ +mybatis-plus.mapper-locations=classpath*:com/template/back/mapper/*/*.xml +# öٰɨλ +mybatis-plus.type-enums-package=com.template.back.common.enums +# ǰ׺ +mybatis-plus.global-config.db-config.table-prefix=tb_ +# idΪ +mybatis-plus.global-config.db-config.id-type=auto + #reidsȺϢ #spring.redis.cluster.nodes = 192.168.31.81:6379,192.168.31.81:6380,192.168.31.81:6381 #spring.redis.cluster.max-redirects=5 @@ -29,18 +58,17 @@ spring.redis.timeout = 10s #ڵredisã벻ÿԷſ spring.redis.host=127.0.0.1 spring.redis.port=6379 -spring.redis.password=123456 +#spring.redis.password=123456 -# öٰɨλ -mybatis-plus.type-enums-package=com.template.back.common.enums -# ǰ׺ -mybatis-plus.global-config.db-config.table-prefix=tb_ -# idΪ -mybatis-plus.global-config.db-config.id-type=auto +# ûʱ,λ +spring.cache.redis.time-to-live=1800000 # ־ logging.config = classpath:logback-spring.xml +#ʱ +scheduled-thread-pool: 2 + #dubboģʹ÷ֲʽſ #dubbo.application.name = itcast-tanhua-server #dubbo.registry.address = zookeeper://192.168.31.81:2181 @@ -48,13 +76,8 @@ logging.config = classpath:logback-spring.xml #dubbo.registry.timeout = 10000 #÷ijʱʱ -dubbo.consumer.timeout = 10000 +#dubbo.consumer.timeout = 10000 -#Ƿݻ -tanhua.cache.enable=false - -#ʱ -scheduled-thread-pool: 2 # =================================================================== # ֲʽļϵͳFDFS diff --git a/template-back-server/src/main/resources/backend/index_tabs.html b/template-back-server/src/main/resources/backend/index.html similarity index 75% rename from template-back-server/src/main/resources/backend/index_tabs.html rename to template-back-server/src/main/resources/backend/index.html index 7e30b4bf58189a3836464a83b9a9f04a37e0f2b9..25cff7e8addb7b2fc203610fa54d6d1fce0182d7 100644 --- a/template-back-server/src/main/resources/backend/index_tabs.html +++ b/template-back-server/src/main/resources/backend/index.html @@ -7,7 +7,7 @@ - 张骞|后台管理系统 + Z-Admin|后台管理系统 @@ -21,6 +21,7 @@ + - - - -
- - - - - -
- - - -
- - - - - - - - - - {{nickname}},您好 - - - - - 修改密码 - - - 退出登录 - - - - -
-
- -
- - - - - - -
- - -
- -
- - - - - 部门管理 - 用户管理 - 角色管理 - 模块管理 - 参数设置 - 系统运行日志 - - - - 校区管理 - 会员管理 - 在线状态 - - - - 口才级别管理 - 口才教案管理 - 口才课件管理 - - - - 口才级别管理 - 口才教案管理 - 口才课件管理 - - - - - - -
-
-
- - - - -
- -
-
- - - -

©2022-方未云后台管理系统-方未教育技术支持中心 -

-
-
- -
- - - - - - 当前登录账户:{{nickname}} - (用户名请联系方未工作人员更改) - - - - - - - - - - - - - - - - - - -
- - - - - - \ No newline at end of file diff --git a/template-back-server/src/main/resources/backend/index_collapse.html b/template-back-server/src/main/resources/backend/index_collapse.html deleted file mode 100644 index 89422364f3e183274b23cd08fb8ac3cfcdb1c136..0000000000000000000000000000000000000000 --- a/template-back-server/src/main/resources/backend/index_collapse.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - - - - - - - 张骞|后台管理系统 - - - - - - - - - - - - - - - - - - - -
- - - - - -
- - - - - - - - - - - - - - - {{v.text}} - - - - - -
-
- - - - - - - - - - - {{headTitle}} - - - - - - {{ userInfo.name }},您好 - - - - - - 修改密码 - - - - 退出登录 - - - - - - - - - - - - -
- -
- - -
-
- - - - -
- -

{{pageInfo}}

-
-
- - -
- - -
- - - - - - - - - 当前登录账户:{{ userInfo.name }} - (用户名请联系方未工作人员更改) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - \ No newline at end of file diff --git a/template-back-server/src/main/resources/backend/js/home_page/home_page.js b/template-back-server/src/main/resources/backend/js/home_page/home_page.js new file mode 100644 index 0000000000000000000000000000000000000000..d502b46e381542e6c123b7ba514f031550538e9e --- /dev/null +++ b/template-back-server/src/main/resources/backend/js/home_page/home_page.js @@ -0,0 +1,308 @@ +var canvas; +var context; +var width; +var height; +var quads = []; +var displacementVec; + +window.onload = function() +{ + canvas = document.getElementById('canvas'); +// canvas.style.width = window.innerWidth + "px"; + canvas.style.width = (window.innerWidth - 380) + "px"; + setTimeout(function() { +// canvas.style.height = window.innerHeight + "px"; + canvas.style.height = "400px"; +}, 0); + + context = canvas.getContext('2d'); + width = canvas.width = window.innerWidth; + height = canvas.height = window.innerHeight; +displacementVec = vec2d.create(0.02, 0.02); + +generateTriangles(); + + loop(); +}; + +function generateTriangles() +{ + var length = 32 - 1; + var i = length; + + for(i; i > -1; --i) + { + var obj = quad.create(width >> 1, (i / length) * (height >> 1) + (height >> 2), Math.sin((i / length) * (Math.PI)) * (width >> 3)); + quads.push(obj); + } +} + +function loop() +{ + updateTriangles(); + renderTriangles(); + + requestAnimationFrame(loop); +} + +function updateTriangles() +{ + var i = quads.length - 1; + + for(i; i > -1; --i) + { + var quad = quads[i]; + quad.update(); + } +} + +function renderTriangles() +{ + context.lineWidth = 1; + context.fillStyle = '#383c4d'; // 背景颜色 + context.strokeStyle = '#409eff'; // 图形颜色 + context.globalAlpha = 0.15; + context.fillRect(0, 0, canvas.width, canvas.height); + context.globalAlpha = 1; + context.fillStyle = '#ffffff'; // 影子颜色 + + var i = quads.length - 1; + var j; + + for(i; i > -1; --i) + { + var quad = quads[i]; + j = quad.getPoints().length - 1; + + for(j; j > -1; --j) + { + var p1 = quad.getPoints()[j]; + var p2 = (j > 0) ? quad.getPoints()[j - 1] : quad.getPoints()[quad.getPoints().length - 1]; + + context.beginPath(); + context.moveTo(quad.getPos().getX() + Math.cos(p1.getAngle().getX()) * p1.getSize(), quad.getPos().getY() + Math.sin(p1.getAngle().getY()) * p1.getSize()); + context.lineTo(quad.getPos().getX() + Math.cos(p2.getAngle().getX()) * p2.getSize(), quad.getPos().getY() + Math.sin(p2.getAngle().getY()) * p2.getSize()); + context.arc(quad.getPos().getX() + Math.cos(p1.getAngle().getX()) * p1.getSize(), quad.getPos().getY() + Math.sin(p1.getAngle().getY()) * p1.getSize(), 4, 0, Math.PI * 2); + context.fill(); + context.stroke(); + context.closePath(); + } + } + + + +} + +//vec2d definition: + +var vec2d = +{ + _x: 1, + _y: 0, + + create: function(x, y) + { + var obj = Object.create(this); + obj.setX(x); + obj.setY(y); + + return obj; + }, + + getX: function() + { + return this._x; + }, + + setX: function(value) + { + this._x = value; + }, + + getY: function() + { + return this._y; + }, + + setY: function(value) + { + this._y = value; + }, + + setXY: function(x, y) + { + this._x = x; + this._y = y; + }, + + getLength: function() + { + return Math.sqrt(this._x * this._x + this._y * this._y); + }, + + setLength: function(length) + { + var angle = this.getAngle(); + this._x = Math.cos(angle) * length; + this._y = Math.sin(angle) * length; + }, + + getAngle: function() + { + return Math.atan2(this._y, this._x); + }, + + setAngle: function(angle) + { + var length = this.getLength(); + this._x = Math.cos(angle) * length; + this._y = Math.sin(angle) * length; + }, + + add: function(vector) + { + this._x += vector.getX(); + this._y += vector.getY(); + }, + + substract: function(vector) + { + this._x -= vector.getX(); + this._y -= vector.getY(); + }, + + multiply: function(value) + { + this._x *= value; + this._y *= value; + }, + + divide: function(value) + { + this._x *= value; + this._y *= value; + } +}; + +//quad definition: + +var quad = +{ + _pos: null, + _size: null, + _points: null, + + create: function(x, y, size) + { + var obj = Object.create(this); + obj.setPos(vec2d.create(x, y)); + obj.setSize(size); + obj.setPoints + ( + [ + point.create(size, 0, 0), + point.create(size, Math.PI / 2, Math.PI / 2), + point.create(size, Math.PI, Math.PI), + point.create(size, Math.PI * 1.5, Math.PI * 1.5) + ] + ); + + return obj; + }, + + update: function() + { + var i = this._points.length - 1; + + for(i; i > -1; --i) + { + var point = this._points[i]; + point.update(); + } + }, + + getPos: function() + { + return this._pos; + }, + + setPos: function(vector) + { + this._pos = vector; + }, + + getSize: function() + { + return this._size; + }, + + setSize: function(size) + { + this._size = size; + }, + + getPoints: function() + { + return this._points; + }, + + setPoints: function(points) + { + this._points = points; + } +}; + +//point definition: + +var point = +{ + _pos: null, + _size: null, + _angle: null, + + create: function(size, angleX, angleY) + { + var obj = Object.create(this); + obj.setPos(vec2d.create(0, 0)); + obj.setSize(size); + obj.setAngle(vec2d.create(angleX, angleY)); + obj.getAngle().add(vec2d.create(size / 200, size / 200)); + + return obj; + }, + + update: function() + { + this.getAngle().add(displacementVec); + }, + + getPos: function() + { + return this._pos; + }, + + setPos: function(vector) + { + this._pos = vector; + }, + + getSize: function() + { + return this._size; + }, + + setSize: function(size) + { + this._size = size; + }, + + getAngle: function() + { + return this._angle; + }, + + setAngle: function(angle) + { + this._angle = angle; + }, +}; \ No newline at end of file diff --git a/template-back-server/src/main/resources/backend/pages/home/home_page.html b/template-back-server/src/main/resources/backend/pages/home/home_page.html new file mode 100644 index 0000000000000000000000000000000000000000..4a7703118199fea021fbb44d1f096c91ee7f7c85 --- /dev/null +++ b/template-back-server/src/main/resources/backend/pages/home/home_page.html @@ -0,0 +1,180 @@ + + + + + + + + + + Z-Admin|系统中心 + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + Z-Admin自检系统 +
+
+ +
+
+ + 自动检测执行中... +
+
+ + 服务器状态:{{state}} +
+
+ + 当前连接:{{server}} +
+
+ + 系统日期:{{date | formatDate}} +
+
+ + 系统时间:{{date | formatTime}} +
+
+
+ + + +
+ +
+ + Z-Admin持续计算中,提供服务端支持[GPU算法视觉呈现] +
+
+ +
+ +
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/template-back-server/src/main/resources/backend/pages/login/login.html b/template-back-server/src/main/resources/backend/pages/login/login.html index 7dbcccf4ef25c6267b06ba5d764d27932af8115b..407773351f7ad5440594072a6a784444fa212267 100644 --- a/template-back-server/src/main/resources/backend/pages/login/login.html +++ b/template-back-server/src/main/resources/backend/pages/login/login.html @@ -33,7 +33,7 @@ -