提交 23ac4cf2 编写于 作者: cxt104926's avatar cxt104926

优:分页/增:树形结构工具/改:班级表结构

上级 acb50b73
......@@ -71,7 +71,7 @@
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
<version>2.1.4</version>
</dependency>
<!-- MyBatis分页支持jar -->
<dependency>
......@@ -79,6 +79,11 @@
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
......
......@@ -11,20 +11,20 @@ public class OffsetPage {
public final static int MAX_LIMIT = 50;
@ApiModelProperty("当前页码")
private Integer pageNum;
private Integer page;
@ApiModelProperty("当前页数量")
private Integer limit;
public Integer getPageNum() {
if (this.pageNum == null){
this.pageNum = 1;
public Integer getPage() {
if (this.page == null){
this.page = 1;
}
return pageNum;
return page;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
public void setPage(Integer page) {
this.page = page;
}
public Integer getLimit() {
......
......@@ -10,7 +10,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
/**
* @author: cxt
......@@ -50,9 +50,9 @@ public class StuClassController {
}
@ApiOperation("查询所有班级id、名字")
@GetMapping("/getAll")
public HashMap<String,String> getStuClassAll(){
return this.stuClassService.getStuClassAll();
@GetMapping("/get/treeData")
public List<Object> getStuClassTreeData(){
return this.stuClassService.getStuClassTreeData();
}
@Autowired
......
package com.stu.stusystem.mapper.system;
import com.stu.stusystem.common.CommonMapper;
import com.stu.stusystem.model.em.TreeModel;
import com.stu.stusystem.model.system.StuClass;
import com.stu.stusystem.service.system.dto.StuClassQuery;
import com.stu.stusystem.service.system.vo.StuClassVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @author cxt
* @date 2020/9/8
*/
public interface StuClassMapper extends CommonMapper<StuClass> {
List<StuClassVO> getStuClassPage(@Param("query") StuClassQuery query);
@Select("select id,name,pid from stu_class")
List<TreeModel> treeSelect();
}
......@@ -5,7 +5,6 @@ import com.stu.stusystem.model.system.StuUser;
import com.stu.stusystem.service.system.dto.UserManagerQuery;
import com.stu.stusystem.service.system.vo.StuUserVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
......@@ -13,7 +12,6 @@ import java.util.List;
* @author cxt
* @date 2020/9/8
*/
@Repository
public interface StuMapper extends CommonMapper<StuUser> {
List<StuUserVO> getStuMangerPage(@Param("query") UserManagerQuery query);
}
package com.stu.stusystem.model.em;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author: cxt
* @time: 2021/3/29
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TreeModel {
private String id;
private String name;
private String pid;
//
// @JsonInclude(JsonInclude.Include.NON_EMPTY)
// private List<TreeModel> child;
}
......@@ -18,18 +18,19 @@ public class StuClass extends BaseModel {
@Id
private String id;
// 学院名称
private String hospitalName;
// 名称
private String name;
// 系名称
private String departmentName;
// 父id
private String pid;
// 标志(1:学院;2:系;3:班级)
private Integer sign;
// 年级
private String grade;
// 班级名称
private String className;
// 班主任id
// 管理者id
private String userId;
}
\ No newline at end of file
package com.stu.stusystem.service.system;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.stu.stusystem.common.ApiException;
import com.stu.stusystem.mapper.system.StuClassMapper;
import com.stu.stusystem.model.em.TreeModel;
import com.stu.stusystem.model.system.StuClass;
import com.stu.stusystem.model.system.StuUser;
import com.stu.stusystem.service.system.dto.StuClassDTO;
import com.stu.stusystem.service.system.dto.StuClassQuery;
import com.stu.stusystem.service.system.vo.StuClassVO;
import com.stu.stusystem.util.CopyBeanUtil;
import com.stu.stusystem.util.TreeModelUtil;
import com.stu.stusystem.util.UUIDUtil;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -17,10 +20,7 @@ import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.*;
/**
* @author cxt
......@@ -35,21 +35,9 @@ public class StuClassService {
* 分页查询列表
*/
public PageInfo<StuClassVO> getStuClassPage(StuClassQuery query) {
PageHelper.startPage(query.getPageNum(), query.getLimit());
Example example = new Example(StuClass.class);
Example.Criteria criteria = example.createCriteria();
if (query.getClassName() != null) {
criteria.andEqualTo("className", query.getClassName());
}
if (query.getUserId() != null) {
criteria.andEqualTo("user_id", query.getUserId());
}
example.orderBy("createTime").desc();
List<StuClass> stuCLasses = this.stuClassMapper.selectByExample(example);
StuClassVO stuClassVO = new StuClassVO();
List<StuClassVO> es = CopyBeanUtil.copyList(stuCLasses, stuClassVO);
return new PageInfo<>(es);
PageHelper.startPage(query.getPage(), query.getLimit());
List<StuClassVO> stuClassPage = this.stuClassMapper.getStuClassPage(query);
return new PageInfo<>(stuClassPage);
}
/**
......@@ -83,7 +71,7 @@ public class StuClassService {
*/
public void saveStuClass(StuClassDTO dto) {
List<StuClass> stuClasses = this.stuClassMapper.selectByExample(new Example.Builder(StuClass.class)
.where(WeekendSqls.<StuClass>custom().andEqualTo(StuClass::getClassName, dto.getClassName())).build());
.where(WeekendSqls.<StuClass>custom().andEqualTo(StuClass::getName, dto.getName())).build());
if (stuClasses.size() != 0) {
throw new ApiException("您添加的班级已存在");
}
......@@ -100,28 +88,13 @@ public class StuClassService {
}
/**
* 查询全部的班级
* 查询全部的班级:树形结构
*/
public HashMap<String, String> getStuClassAll() {
List<StuClass> stuClasses = this.stuClassMapper.selectAll();
HashMap<String, String> map = new HashMap<>();
for (StuClass sc : stuClasses) {
map.put(sc.getId(), sc.getClassName());
}
return map;
public List<Object> getStuClassTreeData() {
List<TreeModel> models = this.stuClassMapper.treeSelect();
return TreeModelUtil.buildTreeList(models);
}
/**
* 流:并行,串行
* filter,通过条件过滤出元素
* distinct,去重
* limit,会返回一个不超过给定长度的流,取前几个
* skip,返回一个扔掉前 n 个元素的流,扔掉前几个
* map,对流中做统一处理(加前/后缀)
* flatMap,里面需要的参数是个流,流的扁平化处理,比如将字符串拆分成一个个的字母集合。层级深时候使用flatmap
* sorted,排序
*/
@Autowired
public void setStuClassMapper(StuClassMapper stuClassMapper) {
this.stuClassMapper = stuClassMapper;
......
......@@ -33,7 +33,7 @@ public class UserManagerService {
* 分页查询
*/
public PageInfo<StuUserVO> getStuMangerPage(UserManagerQuery query) {
PageHelper.startPage(query.getPageNum(), query.getLimit());
PageHelper.startPage(query.getPage(), query.getLimit());
List<StuUserVO> stuMangerPage = this.stuMapper.getStuMangerPage(query);
return new PageInfo<>(stuMangerPage);
}
......
......@@ -18,18 +18,18 @@ public class StuClassDTO {
@Id
private String id;
@ApiModelProperty("学院名称")
private String hospitalName;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("系名称")
private String departmentName;
@ApiModelProperty("父id")
private String pid;
@ApiModelProperty("年级")
private String grade;
@ApiModelProperty("班级名称")
private String className;
@ApiModelProperty("标志(1:学院;2:系;3:班级)")
private Integer sign;
@ApiModelProperty("班主任id")
@ApiModelProperty("管理者id")
private String userId;
@ApiModelProperty("年级")
private String grade;
}
......@@ -14,9 +14,14 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
public class StuClassQuery extends OffsetPage {
@ApiModelProperty("班级名称")
private String className;
private String id;
@ApiModelProperty("班主任id")
@ApiModelProperty("父id")
private String pid;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("管理者id")
private String userId;
}
package com.stu.stusystem.service.system.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -17,18 +18,21 @@ public class StuClassVO {
@Id
private String id;
// 学院名称
private String hospitalName;
@ApiModelProperty("名称")
private String name;
// 系名称
private String departmentName;
@ApiModelProperty("父id")
private String pid;
// 年级
private String grade;
// 班级名称
private String className;
@ApiModelProperty("标志(1:学院;2:系;3:班级)")
private Integer sign;
// 班主任id
@ApiModelProperty("管理者id")
private String userId;
@ApiModelProperty("姓名")
private String userName;
@ApiModelProperty("年级")
private String grade;
}
......@@ -54,7 +54,6 @@ public class CopyBeanUtil {
list.add(null);
continue;
}
// T e = ta.newInstance(); // 获取到拷贝目标类型
copy(t, ta);
list.add(ta);
}
......
package com.stu.stusystem.util;
import com.stu.stusystem.model.em.TreeModel;
import lombok.Data;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* @author: cxt
* @time: 2021/3/29
* 树形数据工具
*/
@Data
public class TreeModelUtil {
public static List<Object> buildTreeList(List<TreeModel> tm) {
if (tm.size() == 0) {
return null;
}
List<Object> list = new ArrayList<>(); // 最后返回的数据
for (TreeModel x : tm) {
Map<String, Object> mapArr = new LinkedHashMap<>();
if (x.getPid().equals("")) {
mapArr.put("id", x.getId());
mapArr.put("name", x.getName());
mapArr.put("pid", x.getPid());
mapArr.put("child", getTreeList(x.getId(),tm));
list.add(mapArr);
}
}
return list;
}
public static List<?> getTreeList(String id,List<TreeModel> treeModels) {
List<Object> lists = new ArrayList<>();
for (TreeModel a : treeModels) {
Map<String, Object> childArray = new LinkedHashMap<>();
if (a.getPid().equals(id)) {
childArray.put("id", a.getId());
childArray.put("name", a.getName());
childArray.put("pid", a.getPid());
childArray.put("child", getTreeList(a.getId(),treeModels)); // 递归调用本方法
lists.add(childArray);
}
}
return lists;
}
}
......@@ -35,7 +35,7 @@ spring:
# 配置myBatis
mybatis:
mapper-locations: classpath:mapper/*.xml
mapper-locations: classpath:mapper/**/*.xml
# 配置PageHelper方言
pagehelper:
......
......@@ -17,24 +17,24 @@
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="hospital_name" type="varchar(50)" remarks="学院名称">
<constraints nullable="true"/>
<column name="name" type="varchar(50)" remarks="名称">
<constraints nullable="false"/>
</column>
<column name="department_name" type="varchar(50)" remarks="系名称">
<column name="pid" type="varchar(22)" remarks="父级id">
<constraints nullable="true"/>
</column>
<column name="grade" type="varchar(15)" remarks="年级">
<constraints nullable="true"/>
<column name="sign" type="tinyint(1)" remarks="标志(1:学院;2:系;3:班级)">
<constraints nullable="false"/>
</column>
<column name="class_name" type="varchar(50)" remarks="班级名称">
<column name="user_id" type="varchar(22)" remarks="管理者id">
<constraints nullable="false"/>
</column>
<column name="user_id" type="varchar(22)" remarks="班主任id">
<constraints nullable="false"/>
<column name="grade" type="varchar(15)" remarks="年级">
<constraints nullable="true"/>
</column>
<column name="create_time" type="time" remarks="创建时间">
......
......@@ -2,20 +2,22 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stu.stusystem.mapper.system.StuMapper">
<select id="getStuMangerPage" resultType="com.stu.stusystem.service.system.vo.StuUserVO">
SELECT id,name,account,
class_id AS classId ,
phone,id_card AS idCard
FROM stu_user
SELECT id,
name,
account,
class_id AS classId,
phone,
id_card AS idCard
FROM stu_user
<where>
<if test="query.name != null and query.name != ''">
name like concat('%', #{query.name},'%')
name like concat('%', #{query.name}, '%')
</if>
<if test="param1.classId != null and param1.classId != ''">
AND class_id = #{query.classId}
</if>
<if test="query.phone != null and query.phone != ''">
AND phone = #{query.phone}
AND phone = #{query.phone}
</if>
</where>
</select>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stu.stusystem.mapper.system.StuClassMapper">
<select id="getStuClassPage" resultType="com.stu.stusystem.service.system.vo.StuClassVO">
SELECT sc.id, sc.name, sc.pid, sc.sign, sc.grade, sc.user_id AS userId, su.name AS userName
FROM stu_class sc
LEFT JOIN stu_user su ON sc.user_id = su.id
<where>
<if test="query.id != null and query.id != ''">
sc.id = #{query.id,jdbcType=VARCHAR}
</if>
<if test="query.pid != null and query.pid != ''">
AND sc.pid = #{query.pid}
</if>
<if test="query.name != null and query.name != ''">
AND sc.name like concat('%', #{query.name}, '%')
</if>
<if test="query.userId != null and query.userId != ''">
AND sc.user_id = #{query.userId,jdbcType=VARCHAR}
</if>
</where>
order by sc.create_time desc
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册