diff --git a/pom.xml b/pom.xml
index 9fb7ab85e5ac9927849b9144f4f793aa09b34d3d..e25b6cf100d3cd9d90d552017f8154dd8c4bed9c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,121 +1,72 @@
-
+
4.0.0
- com.hz
- getjob_backend
- 0.0.1-SNAPSHOT
- getjob_backend
- Demo project for Spring Boot
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.2.6.RELEASE
+
+
+ club.kittybunny
+ GetJobSys_BackEnd
+ 1.0-SNAPSHOT
1.8
- UTF-8
- UTF-8
- 2.3.0.RELEASE
-
org.springframework.boot
spring-boot-starter-web
- org.springframework.boot
- spring-boot-starter-actuator
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 2.1.2
- org.springframework.boot
- spring-boot-starter-aop
+ org.apache.commons
+ commons-dbcp2
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
- com.github.pagehelper
- pagehelper-spring-boot-starter
- 1.2.10
-
-
-
-
- org.mybatis.generator
- mybatis-generator-core
- 1.3.5
-
-
-
mysql
mysql-connector-java
- 8.0.15
-
-
-
-
- io.springfox
- springfox-swagger2
- 2.7.0
-
-
- io.springfox
- springfox-swagger-ui
- 2.7.0
-
org.springframework.boot
spring-boot-starter-test
test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+
+
-
-
-
- org.springframework.boot
- spring-boot-dependencies
- ${spring-boot.version}
- pom
- import
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.8.1
-
- 1.8
- 1.8
- UTF-8
-
-
org.springframework.boot
spring-boot-maven-plugin
- 2.3.0.RELEASE
-
- com.hz.GetjobBackendApplication
-
-
-
- repackage
-
- repackage
-
-
-
+
+
+
+
+ maven-compiler-plugin
+
+ 1.8
+ 1.8
+
+
+
+
-
+
\ No newline at end of file
diff --git a/src/main/java/club/kittybunny/getjobsysbackend/GetJobSysApplication.java b/src/main/java/club/kittybunny/getjobsysbackend/GetJobSysApplication.java
new file mode 100644
index 0000000000000000000000000000000000000000..3d2aa736c131b702479043dac3481c76875b974e
--- /dev/null
+++ b/src/main/java/club/kittybunny/getjobsysbackend/GetJobSysApplication.java
@@ -0,0 +1,17 @@
+package club.kittybunny.getjobsysbackend;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * @Author: bunny
+ * @Description: 我是兔子我会喵,我叫喵星兔
+ */
+@MapperScan(basePackages = {"club.kittybunny.getjobsysbackend.dao"})
+@SpringBootApplication
+public class GetJobSysApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(GetJobSysApplication.class, args);
+ }
+}
diff --git a/src/main/java/club/kittybunny/getjobsysbackend/controller/JobTypeController.java b/src/main/java/club/kittybunny/getjobsysbackend/controller/JobTypeController.java
new file mode 100644
index 0000000000000000000000000000000000000000..a1340ad33cd78ab64d35ecf6006fcf57ba70a793
--- /dev/null
+++ b/src/main/java/club/kittybunny/getjobsysbackend/controller/JobTypeController.java
@@ -0,0 +1,124 @@
+package club.kittybunny.getjobsysbackend.controller;
+
+import club.kittybunny.getjobsysbackend.entity.JobType;
+import club.kittybunny.getjobsysbackend.service.JobTypeService;
+import club.kittybunny.getjobsysbackend.vo.JobTypeEditVO;
+import club.kittybunny.getjobsysbackend.vo.JobTypeVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author: bunny
+ * @Description: 我是兔子我会喵,我叫喵星兔
+ */
+@RestController
+@RequestMapping(value = "/jobtype")
+public class JobTypeController {
+ @Autowired
+ private JobTypeService jobTypeService;
+
+ /**
+ * 访问地址:http://127.0.0.1:8777/jobtype/findbyupper/0 0是参数
+ *
+ * 首页查询职位分类用,get方式调用
+ *
+ * @param upperid 父节点主键,如果是0说明没有父节点。传入0查询出最大分类,传入id查询这个id主分类下子分类
+ * @return
+ */
+ @RequestMapping(value = "/findbyupper/{upperid}", method = RequestMethod.GET)
+ public List findJobTypeByUpper(@PathVariable("upperid") int upperid) {
+ List result = new ArrayList();
+
+ try {
+ List list = jobTypeService.findByUpperid(upperid, true);
+ for (JobType type : list) {
+ result.add(new JobTypeVO().create(type));
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ result = new ArrayList();
+ }
+
+
+ return result;
+ }
+
+ /**
+ * 新增分类时使用,只支持post
+ *
+ * 测试命令(post方式) curl -d "name=测试&upperId=1" http://127.0.0.1:8777/jobtype/insert
+ *
+ * @param name 工作类型名字,非空
+ * @param upperId 上级节点主键,空或者数据库不存在则判断为0
+ * @return
+ */
+ @RequestMapping(value = "/insert", method = RequestMethod.POST)
+ public int insert(@RequestParam String name, Integer upperId) {
+ int id = jobTypeService.insert(name, upperId, 1);
+ return id;
+ }
+
+ /**
+ * 访问地址:http://127.0.0.1:8777/jobtype/findbyid/1 1是参数主键
+ *
+ * 根据主键查询分类信息,用于修改等场景,get方式
+ * 只要是数据库有的数据直接查询出来,不管是否生效
+ *
+ * @param id 主键,非空
+ * @return
+ */
+ @RequestMapping(value = "/findbyid/{id}", method = RequestMethod.GET)
+ public JobTypeEditVO findById(@PathVariable("id") int id) {
+ JobTypeEditVO result = new JobTypeEditVO();
+ JobType jobType = jobTypeService.findById(id);
+ if (jobType == null) {
+ return null;
+ }
+ result = new JobTypeEditVO().create(jobType);
+ return result;
+ }
+ /**
+ * 接口地址和测试命令(post方式) curl -d "id=2&name=1&status=1" http://127.0.0.1:8777/jobtype/update
+ *
+ * 修改分类时使用,只支持post,
+ * 只能修改名字和是否生效,暂时设计为修改父节点要通过删除和增加实现,所以父节点id、菜单层级等无法修改。
+ *
+ *
+ * @param id 主键,非空
+ * @param name 工作类型名字,非空
+ * @param status 是否生效,非空,1-生效,0-无效
+ * @return 成功修改的数据条数,1-成功,0-失败
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ public int update(@RequestParam Integer id,@RequestParam String name, @RequestParam String status) {
+ JobType obj = new JobType();
+ obj.setId(id);
+ obj.setName(name);
+ obj.setStatus(status);
+ int result = jobTypeService.updateById(obj);
+ return result;
+ }
+ /**
+ * 访问地址: http://127.0.0.1:8777/jobtype/deleteById/1 1是主键参数
+ *
+ * 根据主键删除分类信息,get方式
+ * 为真实删除,若想分类不生效或者隐藏应该修改类型状态为不生效(status=0)
+ * 只能没有子分类或者没有相应职位的才可以删除,否则删除失败。
+ * 如果像删除有子分类的可以考虑设置为无效状态。
+ *
+ * 是否有职位目前未完成,因为还没有职位表。
+ *
+ * @param id 主键,非空
+ * @return 1-删除成功,0-删除失败。
+ */
+ @RequestMapping(value = "/deleteById/{id}", method = RequestMethod.GET)
+ public int deleteById(@PathVariable("id") int id) {
+ int result = jobTypeService.deleteById(id);
+ return result;
+ }
+
+}
diff --git a/src/main/java/club/kittybunny/getjobsysbackend/dao/JobTypeMapper.java b/src/main/java/club/kittybunny/getjobsysbackend/dao/JobTypeMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..db4eada0131586a60e7be326bce9518f03f6df98
--- /dev/null
+++ b/src/main/java/club/kittybunny/getjobsysbackend/dao/JobTypeMapper.java
@@ -0,0 +1,30 @@
+package club.kittybunny.getjobsysbackend.dao;
+
+import club.kittybunny.getjobsysbackend.entity.JobType;
+import club.kittybunny.getjobsysbackend.entity.JobTypeExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface JobTypeMapper {
+ long countByExample(JobTypeExample example);
+
+ int deleteByExample(JobTypeExample example);
+
+ int deleteByPrimaryKey(Integer id);
+
+ int insert(JobType record);
+
+ int insertSelective(JobType record);
+
+ List selectByExample(JobTypeExample example);
+
+ JobType selectByPrimaryKey(Integer id);
+
+ int updateByExampleSelective(@Param("record") JobType record, @Param("example") JobTypeExample example);
+
+ int updateByExample(@Param("record") JobType record, @Param("example") JobTypeExample example);
+
+ int updateByPrimaryKeySelective(JobType record);
+
+ int updateByPrimaryKey(JobType record);
+}
\ No newline at end of file
diff --git a/src/main/java/club/kittybunny/getjobsysbackend/entity/JobType.java b/src/main/java/club/kittybunny/getjobsysbackend/entity/JobType.java
new file mode 100644
index 0000000000000000000000000000000000000000..3a24cee47def41e0b279056e0dee83ee2bde103e
--- /dev/null
+++ b/src/main/java/club/kittybunny/getjobsysbackend/entity/JobType.java
@@ -0,0 +1,63 @@
+package club.kittybunny.getjobsysbackend.entity;
+
+public class JobType {
+ private Integer id;
+
+ private String name;
+
+ private Integer upperId;
+
+ private Integer level;
+
+ private String status;
+
+ private Integer serno;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name == null ? null : name.trim();
+ }
+
+ public Integer getUpperId() {
+ return upperId;
+ }
+
+ public void setUpperId(Integer upperId) {
+ this.upperId = upperId;
+ }
+
+ public Integer getLevel() {
+ return level;
+ }
+
+ public void setLevel(Integer level) {
+ this.level = level;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status == null ? null : status.trim();
+ }
+
+ public Integer getSerno() {
+ return serno;
+ }
+
+ public void setSerno(Integer serno) {
+ this.serno = serno;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/club/kittybunny/getjobsysbackend/entity/JobTypeExample.java b/src/main/java/club/kittybunny/getjobsysbackend/entity/JobTypeExample.java
new file mode 100644
index 0000000000000000000000000000000000000000..bab523d4efb1702c139c909b90b882d1a57f9674
--- /dev/null
+++ b/src/main/java/club/kittybunny/getjobsysbackend/entity/JobTypeExample.java
@@ -0,0 +1,580 @@
+package club.kittybunny.getjobsysbackend.entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class JobTypeExample {
+ protected String orderByClause;
+
+ protected boolean distinct;
+
+ protected List oredCriteria;
+
+ public JobTypeExample() {
+ oredCriteria = new ArrayList();
+ }
+
+ public void setOrderByClause(String orderByClause) {
+ this.orderByClause = orderByClause;
+ }
+
+ public String getOrderByClause() {
+ return orderByClause;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public List getOredCriteria() {
+ return oredCriteria;
+ }
+
+ public void or(Criteria criteria) {
+ oredCriteria.add(criteria);
+ }
+
+ public Criteria or() {
+ Criteria criteria = createCriteriaInternal();
+ oredCriteria.add(criteria);
+ return criteria;
+ }
+
+ public Criteria createCriteria() {
+ Criteria criteria = createCriteriaInternal();
+ if (oredCriteria.size() == 0) {
+ oredCriteria.add(criteria);
+ }
+ return criteria;
+ }
+
+ protected Criteria createCriteriaInternal() {
+ Criteria criteria = new Criteria();
+ return criteria;
+ }
+
+ public void clear() {
+ oredCriteria.clear();
+ orderByClause = null;
+ distinct = false;
+ }
+
+ protected abstract static class GeneratedCriteria {
+ protected List criteria;
+
+ protected GeneratedCriteria() {
+ super();
+ criteria = new ArrayList();
+ }
+
+ public boolean isValid() {
+ return criteria.size() > 0;
+ }
+
+ public List getAllCriteria() {
+ return criteria;
+ }
+
+ public List getCriteria() {
+ return criteria;
+ }
+
+ protected void addCriterion(String condition) {
+ if (condition == null) {
+ throw new RuntimeException("Value for condition cannot be null");
+ }
+ criteria.add(new Criterion(condition));
+ }
+
+ protected void addCriterion(String condition, Object value, String property) {
+ if (value == null) {
+ throw new RuntimeException("Value for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value));
+ }
+
+ protected void addCriterion(String condition, Object value1, Object value2, String property) {
+ if (value1 == null || value2 == null) {
+ throw new RuntimeException("Between values for " + property + " cannot be null");
+ }
+ criteria.add(new Criterion(condition, value1, value2));
+ }
+
+ public Criteria andIdIsNull() {
+ addCriterion("id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIsNotNull() {
+ addCriterion("id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdEqualTo(Integer value) {
+ addCriterion("id =", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotEqualTo(Integer value) {
+ addCriterion("id <>", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThan(Integer value) {
+ addCriterion("id >", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdGreaterThanOrEqualTo(Integer value) {
+ addCriterion("id >=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThan(Integer value) {
+ addCriterion("id <", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdLessThanOrEqualTo(Integer value) {
+ addCriterion("id <=", value, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdIn(List values) {
+ addCriterion("id in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotIn(List values) {
+ addCriterion("id not in", values, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdBetween(Integer value1, Integer value2) {
+ addCriterion("id between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andIdNotBetween(Integer value1, Integer value2) {
+ addCriterion("id not between", value1, value2, "id");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNull() {
+ addCriterion("name is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIsNotNull() {
+ addCriterion("name is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameEqualTo(String value) {
+ addCriterion("name =", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotEqualTo(String value) {
+ addCriterion("name <>", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThan(String value) {
+ addCriterion("name >", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameGreaterThanOrEqualTo(String value) {
+ addCriterion("name >=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThan(String value) {
+ addCriterion("name <", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLessThanOrEqualTo(String value) {
+ addCriterion("name <=", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameLike(String value) {
+ addCriterion("name like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotLike(String value) {
+ addCriterion("name not like", value, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameIn(List values) {
+ addCriterion("name in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotIn(List values) {
+ addCriterion("name not in", values, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameBetween(String value1, String value2) {
+ addCriterion("name between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andNameNotBetween(String value1, String value2) {
+ addCriterion("name not between", value1, value2, "name");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdIsNull() {
+ addCriterion("upper_id is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdIsNotNull() {
+ addCriterion("upper_id is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdEqualTo(Integer value) {
+ addCriterion("upper_id =", value, "upperId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdNotEqualTo(Integer value) {
+ addCriterion("upper_id <>", value, "upperId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdGreaterThan(Integer value) {
+ addCriterion("upper_id >", value, "upperId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdGreaterThanOrEqualTo(Integer value) {
+ addCriterion("upper_id >=", value, "upperId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdLessThan(Integer value) {
+ addCriterion("upper_id <", value, "upperId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdLessThanOrEqualTo(Integer value) {
+ addCriterion("upper_id <=", value, "upperId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdIn(List values) {
+ addCriterion("upper_id in", values, "upperId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdNotIn(List values) {
+ addCriterion("upper_id not in", values, "upperId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdBetween(Integer value1, Integer value2) {
+ addCriterion("upper_id between", value1, value2, "upperId");
+ return (Criteria) this;
+ }
+
+ public Criteria andUpperIdNotBetween(Integer value1, Integer value2) {
+ addCriterion("upper_id not between", value1, value2, "upperId");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelIsNull() {
+ addCriterion("level is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelIsNotNull() {
+ addCriterion("level is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelEqualTo(Integer value) {
+ addCriterion("level =", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelNotEqualTo(Integer value) {
+ addCriterion("level <>", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelGreaterThan(Integer value) {
+ addCriterion("level >", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelGreaterThanOrEqualTo(Integer value) {
+ addCriterion("level >=", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelLessThan(Integer value) {
+ addCriterion("level <", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelLessThanOrEqualTo(Integer value) {
+ addCriterion("level <=", value, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelIn(List values) {
+ addCriterion("level in", values, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelNotIn(List values) {
+ addCriterion("level not in", values, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelBetween(Integer value1, Integer value2) {
+ addCriterion("level between", value1, value2, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andLevelNotBetween(Integer value1, Integer value2) {
+ addCriterion("level not between", value1, value2, "level");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNull() {
+ addCriterion("status is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIsNotNull() {
+ addCriterion("status is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusEqualTo(String value) {
+ addCriterion("status =", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotEqualTo(String value) {
+ addCriterion("status <>", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThan(String value) {
+ addCriterion("status >", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusGreaterThanOrEqualTo(String value) {
+ addCriterion("status >=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThan(String value) {
+ addCriterion("status <", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLessThanOrEqualTo(String value) {
+ addCriterion("status <=", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusLike(String value) {
+ addCriterion("status like", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotLike(String value) {
+ addCriterion("status not like", value, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusIn(List values) {
+ addCriterion("status in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotIn(List values) {
+ addCriterion("status not in", values, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusBetween(String value1, String value2) {
+ addCriterion("status between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andStatusNotBetween(String value1, String value2) {
+ addCriterion("status not between", value1, value2, "status");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoIsNull() {
+ addCriterion("serno is null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoIsNotNull() {
+ addCriterion("serno is not null");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoEqualTo(Integer value) {
+ addCriterion("serno =", value, "serno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoNotEqualTo(Integer value) {
+ addCriterion("serno <>", value, "serno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoGreaterThan(Integer value) {
+ addCriterion("serno >", value, "serno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoGreaterThanOrEqualTo(Integer value) {
+ addCriterion("serno >=", value, "serno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoLessThan(Integer value) {
+ addCriterion("serno <", value, "serno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoLessThanOrEqualTo(Integer value) {
+ addCriterion("serno <=", value, "serno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoIn(List values) {
+ addCriterion("serno in", values, "serno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoNotIn(List values) {
+ addCriterion("serno not in", values, "serno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoBetween(Integer value1, Integer value2) {
+ addCriterion("serno between", value1, value2, "serno");
+ return (Criteria) this;
+ }
+
+ public Criteria andSernoNotBetween(Integer value1, Integer value2) {
+ addCriterion("serno not between", value1, value2, "serno");
+ return (Criteria) this;
+ }
+ }
+
+ public static class Criteria extends GeneratedCriteria {
+
+ protected Criteria() {
+ super();
+ }
+ }
+
+ public static class Criterion {
+ private String condition;
+
+ private Object value;
+
+ private Object secondValue;
+
+ private boolean noValue;
+
+ private boolean singleValue;
+
+ private boolean betweenValue;
+
+ private boolean listValue;
+
+ private String typeHandler;
+
+ public String getCondition() {
+ return condition;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public Object getSecondValue() {
+ return secondValue;
+ }
+
+ public boolean isNoValue() {
+ return noValue;
+ }
+
+ public boolean isSingleValue() {
+ return singleValue;
+ }
+
+ public boolean isBetweenValue() {
+ return betweenValue;
+ }
+
+ public boolean isListValue() {
+ return listValue;
+ }
+
+ public String getTypeHandler() {
+ return typeHandler;
+ }
+
+ protected Criterion(String condition) {
+ super();
+ this.condition = condition;
+ this.typeHandler = null;
+ this.noValue = true;
+ }
+
+ protected Criterion(String condition, Object value, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.typeHandler = typeHandler;
+ if (value instanceof List>) {
+ this.listValue = true;
+ } else {
+ this.singleValue = true;
+ }
+ }
+
+ protected Criterion(String condition, Object value) {
+ this(condition, value, null);
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+ super();
+ this.condition = condition;
+ this.value = value;
+ this.secondValue = secondValue;
+ this.typeHandler = typeHandler;
+ this.betweenValue = true;
+ }
+
+ protected Criterion(String condition, Object value, Object secondValue) {
+ this(condition, value, secondValue, null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/club/kittybunny/getjobsysbackend/service/JobTypeService.java b/src/main/java/club/kittybunny/getjobsysbackend/service/JobTypeService.java
new file mode 100644
index 0000000000000000000000000000000000000000..744804f6f75a1b1e2317f32df1ae519505b952bb
--- /dev/null
+++ b/src/main/java/club/kittybunny/getjobsysbackend/service/JobTypeService.java
@@ -0,0 +1,85 @@
+package club.kittybunny.getjobsysbackend.service;
+
+import club.kittybunny.getjobsysbackend.dao.JobTypeMapper;
+import club.kittybunny.getjobsysbackend.entity.JobType;
+import club.kittybunny.getjobsysbackend.entity.JobTypeExample;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author: bunny
+ * @Description: 我是兔子我会喵,我叫喵星兔
+ */
+@Service
+public class JobTypeService {
+ @Autowired
+ private JobTypeMapper jobTypeMapper;
+
+ /**
+ *
+ * @param upperid 父节点主键
+ * @param status 是否要求生效状态,如果是false则查询所有,true则查询生效的
+ * @return
+ * @throws Exception
+ */
+ public List findByUpperid(int upperid, boolean status) throws Exception {
+ JobTypeExample e = new JobTypeExample();
+
+ if (status) {
+ e.or().andUpperIdEqualTo(upperid).andStatusEqualTo("1");
+ } else {
+ e.or().andUpperIdEqualTo(upperid);
+ }
+ List list = jobTypeMapper.selectByExample(e);
+ return list == null ? new ArrayList() : list;
+ }
+
+ public int insert(String name, Integer upperId, Integer serno) {
+ JobType obj = new JobType();
+ obj.setName(name);
+ obj.setStatus("1");
+ obj.setSerno(serno > 0 ? serno : 1);
+ JobType upper = jobTypeMapper.selectByPrimaryKey(upperId);
+ if (upper == null) {
+ obj.setLevel(1);
+ obj.setUpperId(0);
+
+ } else {
+ obj.setLevel(upper.getLevel() + 1);
+ obj.setUpperId(upperId);
+ }
+ int result = jobTypeMapper.insert(obj);
+ return obj.getId()== null ? 0 : obj.getId();
+ }
+
+ public JobType findById(int id) {
+ return jobTypeMapper.selectByPrimaryKey(id);
+ }
+
+ public int updateById(JobType obj) {
+ return jobTypeMapper.updateByPrimaryKeySelective(obj);
+ }
+
+ /**
+ * 根据主键删除
+ * 只能没有子分类或者没有相应职位的才可以删除,否则删除失败。
+ * @param id
+ * @return
+ */
+ public int deleteById(int id) {
+ //是否有子分类
+ JobTypeExample e = new JobTypeExample();
+ e.or().andUpperIdEqualTo(id);
+ List list = jobTypeMapper.selectByExample(e);
+ if (list.size() > 0) {
+ return 0;
+ }
+ //是否有职位,待定
+
+
+ return jobTypeMapper.deleteByPrimaryKey(id);
+ }
+}
diff --git a/src/main/java/club/kittybunny/getjobsysbackend/vo/JobTypeEditVO.java b/src/main/java/club/kittybunny/getjobsysbackend/vo/JobTypeEditVO.java
new file mode 100644
index 0000000000000000000000000000000000000000..ddd0540755f478cb7a902345fcd9485acf511ac8
--- /dev/null
+++ b/src/main/java/club/kittybunny/getjobsysbackend/vo/JobTypeEditVO.java
@@ -0,0 +1,43 @@
+package club.kittybunny.getjobsysbackend.vo;
+
+import club.kittybunny.getjobsysbackend.entity.JobType;
+
+/**
+ * @Author: bunny
+ * @Description: 我是兔子我会喵,我叫喵星兔
+ */
+public class JobTypeEditVO {
+ private Integer id;
+ private String name;
+ private String status;
+ public JobTypeEditVO create(JobType jobType) {
+ this.id = jobType.getId();
+ this.name = jobType.getName();
+ this.status = jobType.getStatus();
+ return this;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+}
diff --git a/src/main/java/club/kittybunny/getjobsysbackend/vo/JobTypeVO.java b/src/main/java/club/kittybunny/getjobsysbackend/vo/JobTypeVO.java
new file mode 100644
index 0000000000000000000000000000000000000000..839128dfcf403e424b2324bcdb5f588860002be7
--- /dev/null
+++ b/src/main/java/club/kittybunny/getjobsysbackend/vo/JobTypeVO.java
@@ -0,0 +1,43 @@
+package club.kittybunny.getjobsysbackend.vo;
+
+import club.kittybunny.getjobsysbackend.entity.JobType;
+
+/**
+ * @Author: bunny
+ * @Description: 我是兔子我会喵,我叫喵星兔
+ */
+public class JobTypeVO {
+ private Integer id;
+ private String name;
+ //private Integer serno;
+ public JobTypeVO create(JobType jobType) {
+ this.id = jobType.getId();
+ this.name = jobType.getName();
+ //this.serno = jobType.getSerno();
+ return this;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /* public Integer getSerno() {
+ return serno;
+ }
+
+ public void setSerno(Integer serno) {
+ this.serno = serno;
+ }*/
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 2ee3dd79cb51702bd51b130204920584a85c0a29..3d0ee1d236886cc96ce06d3d38138519eb543b6f 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,13 +1,21 @@
-#应用程序名称
-spring.application.name=getjob_backend
-#访问端口号
-server.address=127.0.0.1
-server.port=8089
-#编码格式
-server.tomcat.uri-encoding=utf-8
-# 数据库相关配置
-spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.datasource.url=jdbc:mysql://localhost:3306/db_getJob?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
+server.port=8777
+#server.servlet.context-path=/bunnybatis
+spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
+spring.datasource.dbcp2.max-wait-millis=60000
+spring.datasource.dbcp2.min-idle=20
+spring.datasource.dbcp2.initial-size=2
+spring.datasource.dbcp2.validation-query=SELECT 1
+spring.datasource.dbcp2.connection-properties=characterEncoding=utf8
+spring.datasource.dbcp2.test-while-idle=true
+spring.datasource.dbcp2.test-on-borrow=true
+spring.datasource.dbcp2.test-on-return=false
+
+spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
+spring.datasource.url=jdbc:mysql://127.0.0.1:3306/getjobsys?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
-spring.datasource.password=long
-mybatis.mapper-locations=classpath:mapper/*.xml,classpath*:com/**/mapper/*.xml
\ No newline at end of file
+spring.datasource.password=123456
+
+
+#mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
+
+mybatis.mapper-locations=classpath:mybatis/sqlmap/*.xml
\ No newline at end of file
diff --git a/src/main/resources/db/getjobsys.sql b/src/main/resources/db/getjobsys.sql
new file mode 100644
index 0000000000000000000000000000000000000000..964c0e2492a23ecfb1f2164c2be71662492acaf0
--- /dev/null
+++ b/src/main/resources/db/getjobsys.sql
@@ -0,0 +1,54 @@
+/*
+ Navicat MySQL Data Transfer
+
+ Source Server : ali
+ Source Server Type : MySQL
+ Source Server Version : 50562
+ Source Host : localhost:3306
+ Source Schema : getjobsys
+
+ Target Server Type : MySQL
+ Target Server Version : 50562
+ File Encoding : 65001
+
+ Date: 18/08/2020 09:55:50
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for t_job_type
+-- ----------------------------
+DROP TABLE IF EXISTS `t_job_type`;
+CREATE TABLE `t_job_type` (
+ `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键,自增长',
+ `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '职位类别名称',
+ `upper_id` int(11) NOT NULL COMMENT '上级分类主键',
+ `level` int(11) NOT NULL COMMENT '分类层级',
+ `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否生效,1-生效,0-无效',
+ `serno` int(11) NOT NULL COMMENT '同级别编号,目前未使用',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;
+
+-- ----------------------------
+-- Records of t_job_type
+-- ----------------------------
+INSERT INTO `t_job_type` VALUES (1, '互联网IT', 0, 1, '1', 1);
+INSERT INTO `t_job_type` VALUES (2, '金融', 0, 1, '1', 1);
+INSERT INTO `t_job_type` VALUES (4, 'UI设计', 1, 1, '1', 1);
+INSERT INTO `t_job_type` VALUES (5, '投资经理', 2, 1, '1', 1);
+INSERT INTO `t_job_type` VALUES (6, '财产保险', 2, 2, '1', 1);
+INSERT INTO `t_job_type` VALUES (7, '服务业', 0, 1, '1', 1);
+INSERT INTO `t_job_type` VALUES (8, '贸易/零售', 0, 1, '1', 1);
+INSERT INTO `t_job_type` VALUES (9, '算法工程师', 1, 2, '1', 1);
+INSERT INTO `t_job_type` VALUES (10, '产品经理', 1, 2, '1', 1);
+INSERT INTO `t_job_type` VALUES (11, '精算师', 2, 2, '1', 1);
+INSERT INTO `t_job_type` VALUES (12, '导游', 7, 2, '1', 1);
+INSERT INTO `t_job_type` VALUES (13, '保安', 7, 2, '1', 1);
+INSERT INTO `t_job_type` VALUES (14, '美容师', 7, 2, '1', 1);
+INSERT INTO `t_job_type` VALUES (15, '外贸跟单', 8, 2, '1', 1);
+INSERT INTO `t_job_type` VALUES (16, '销售', 8, 2, '1', 1);
+INSERT INTO `t_job_type` VALUES (17, '人事/行政', 0, 1, '1', 1);
+
+SET FOREIGN_KEY_CHECKS = 1;
diff --git a/src/main/resources/mybatis/sqlmap/JobTypeMapper.xml b/src/main/resources/mybatis/sqlmap/JobTypeMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..583194d96496d6237cec5b32264d957ca9273034
--- /dev/null
+++ b/src/main/resources/mybatis/sqlmap/JobTypeMapper.xml
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ and ${criterion.condition}
+
+
+ and ${criterion.condition} #{criterion.value}
+
+
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+
+
+ and ${criterion.condition}
+
+ #{listItem}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ and ${criterion.condition}
+
+
+ and ${criterion.condition} #{criterion.value}
+
+
+ and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+
+
+ and ${criterion.condition}
+
+ #{listItem}
+
+
+
+
+
+
+
+
+
+
+ id, name, upper_id, level, status, serno
+
+
+
+
+ delete from t_job_type
+ where id = #{id,jdbcType=INTEGER}
+
+
+ delete from t_job_type
+
+
+
+
+
+
+ SELECT LAST_INSERT_ID()
+
+ insert into t_job_type (name, upper_id, level,
+ status, serno)
+ values (#{name,jdbcType=VARCHAR}, #{upperId,jdbcType=INTEGER}, #{level,jdbcType=INTEGER},
+ #{status,jdbcType=CHAR}, #{serno,jdbcType=INTEGER})
+
+
+
+ SELECT LAST_INSERT_ID()
+
+ insert into t_job_type
+
+
+ name,
+
+
+ upper_id,
+
+
+ level,
+
+
+ status,
+
+
+ serno,
+
+
+
+
+ #{name,jdbcType=VARCHAR},
+
+
+ #{upperId,jdbcType=INTEGER},
+
+
+ #{level,jdbcType=INTEGER},
+
+
+ #{status,jdbcType=CHAR},
+
+
+ #{serno,jdbcType=INTEGER},
+
+
+
+
+
+ update t_job_type
+
+
+ id = #{record.id,jdbcType=INTEGER},
+
+
+ name = #{record.name,jdbcType=VARCHAR},
+
+
+ upper_id = #{record.upperId,jdbcType=INTEGER},
+
+
+ level = #{record.level,jdbcType=INTEGER},
+
+
+ status = #{record.status,jdbcType=CHAR},
+
+
+ serno = #{record.serno,jdbcType=INTEGER},
+
+
+
+
+
+
+
+ update t_job_type
+ set id = #{record.id,jdbcType=INTEGER},
+ name = #{record.name,jdbcType=VARCHAR},
+ upper_id = #{record.upperId,jdbcType=INTEGER},
+ level = #{record.level,jdbcType=INTEGER},
+ status = #{record.status,jdbcType=CHAR},
+ serno = #{record.serno,jdbcType=INTEGER}
+
+
+
+
+
+ update t_job_type
+
+
+ name = #{name,jdbcType=VARCHAR},
+
+
+ upper_id = #{upperId,jdbcType=INTEGER},
+
+
+ level = #{level,jdbcType=INTEGER},
+
+
+ status = #{status,jdbcType=CHAR},
+
+
+ serno = #{serno,jdbcType=INTEGER},
+
+
+ where id = #{id,jdbcType=INTEGER}
+
+
+ update t_job_type
+ set name = #{name,jdbcType=VARCHAR},
+ upper_id = #{upperId,jdbcType=INTEGER},
+ level = #{level,jdbcType=INTEGER},
+ status = #{status,jdbcType=CHAR},
+ serno = #{serno,jdbcType=INTEGER}
+ where id = #{id,jdbcType=INTEGER}
+
+
\ No newline at end of file
diff --git a/src/test/java/Test.java b/src/test/java/Test.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca34f763b8e733e0f9bd542d3b45b23081eed91d
--- /dev/null
+++ b/src/test/java/Test.java
@@ -0,0 +1,6 @@
+/**
+ * @Author: bunny
+ * @Description: 我是兔子我会喵,我叫喵星兔
+ */
+public class Test {
+}