From d210573d6371b4688f34419902111531a2869cb6 Mon Sep 17 00:00:00 2001 From: mirage <1127314491@qq.com> Date: Mon, 9 Feb 2026 10:14:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F-=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E4=B8=93=E4=B8=9A=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mdd/front/controller/MajorController.java | 40 +++++++ .../com/mdd/front/service/IMajorService.java | 34 ++++++ .../front/service/impl/MajorServiceImpl.java | 102 ++++++++++++++++++ .../validate/major/MajorCreateValidate.java | 67 ++++++++++++ .../validate/major/MajorSearchValidate.java | 36 +++++++ .../validate/major/MajorUpdateValidate.java | 70 ++++++++++++ .../com/mdd/front/vo/major/MajorDetailVo.java | 68 ++++++++++++ .../com/mdd/front/vo/major/MajorListedVo.java | 74 +++++++++++++ 8 files changed, 491 insertions(+) create mode 100644 server/like-front/src/main/java/com/mdd/front/controller/MajorController.java create mode 100644 server/like-front/src/main/java/com/mdd/front/service/IMajorService.java create mode 100644 server/like-front/src/main/java/com/mdd/front/service/impl/MajorServiceImpl.java create mode 100644 server/like-front/src/main/java/com/mdd/front/validate/major/MajorCreateValidate.java create mode 100644 server/like-front/src/main/java/com/mdd/front/validate/major/MajorSearchValidate.java create mode 100644 server/like-front/src/main/java/com/mdd/front/validate/major/MajorUpdateValidate.java create mode 100644 server/like-front/src/main/java/com/mdd/front/vo/major/MajorDetailVo.java create mode 100644 server/like-front/src/main/java/com/mdd/front/vo/major/MajorListedVo.java diff --git a/server/like-front/src/main/java/com/mdd/front/controller/MajorController.java b/server/like-front/src/main/java/com/mdd/front/controller/MajorController.java new file mode 100644 index 00000000..ac5d1a7f --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/controller/MajorController.java @@ -0,0 +1,40 @@ +package com.mdd.front.controller; + +import com.mdd.common.core.AjaxResult; +import com.mdd.common.core.PageResult; +import com.mdd.common.validator.annotation.IDMust; +import com.mdd.front.service.IMajorService; +import com.mdd.front.validate.common.PageValidate; +import com.mdd.front.validate.major.MajorSearchValidate; +import com.mdd.front.vo.major.MajorDetailVo; +import com.mdd.front.vo.major.MajorListedVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("adminapi/major") +@Api(tags = "专业管理") +public class MajorController { + + @Resource + IMajorService iMajorService; + + @GetMapping("/list") + @ApiOperation(value = "专业列表") + public AjaxResult> list(@Validated PageValidate pageValidate, + @Validated MajorSearchValidate searchValidate) { + PageResult list = iMajorService.list(pageValidate, searchValidate); + return AjaxResult.success(list); + } + + @GetMapping("/detail") + @ApiOperation(value = "专业详情") + public AjaxResult detail(@Validated @IDMust() @RequestParam("id") Integer id) { + MajorDetailVo detail = iMajorService.detail(id); + return AjaxResult.success(detail); + } +} diff --git a/server/like-front/src/main/java/com/mdd/front/service/IMajorService.java b/server/like-front/src/main/java/com/mdd/front/service/IMajorService.java new file mode 100644 index 00000000..40edec97 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/service/IMajorService.java @@ -0,0 +1,34 @@ +package com.mdd.front.service; + +import com.mdd.common.core.PageResult; +import com.mdd.front.validate.common.PageValidate; +import com.mdd.front.validate.major.MajorSearchValidate; +import com.mdd.front.vo.major.MajorDetailVo; +import com.mdd.front.vo.major.MajorListedVo; + +/** + * 专业服务接口类 + * + * @author LikeAdmin + */ +public interface IMajorService { + + /** + * 专业列表 + * + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + * @author LikeAdmin + */ + PageResult list(PageValidate pageValidate, MajorSearchValidate searchValidate); + + /** + * 专业详情 + * + * @param id 主键ID + * @return MajorDetailVo + * @author LikeAdmin + */ + MajorDetailVo detail(Integer id); +} diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/MajorServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/MajorServiceImpl.java new file mode 100644 index 00000000..40c0213a --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/MajorServiceImpl.java @@ -0,0 +1,102 @@ +package com.mdd.front.service.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.mdd.common.core.PageResult; +import com.mdd.common.entity.College; +import com.mdd.common.entity.Major; +import com.mdd.common.mapper.CollegeMapper; +import com.mdd.common.mapper.MajorMapper; +import com.mdd.common.util.TimeUtils; +import com.mdd.front.service.IMajorService; +import com.mdd.front.validate.common.PageValidate; +import com.mdd.front.validate.major.MajorSearchValidate; +import com.mdd.front.vo.major.MajorDetailVo; +import com.mdd.front.vo.major.MajorListedVo; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.LinkedList; +import java.util.List; + +/** + * 专业实现类 + * + * @author LikeAdmin + */ +@Service +public class MajorServiceImpl implements IMajorService { + + @Resource + MajorMapper majorMapper; + @Autowired + private CollegeMapper collegeMapper; + + /** + * 专业列表 + * + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + * @author LikeAdmin + */ + @Override + public PageResult list(PageValidate pageValidate, MajorSearchValidate searchValidate) { + Integer page = pageValidate.getPage_no(); + Integer limit = pageValidate.getPage_size(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByDesc("id"); + + majorMapper.setSearch(queryWrapper, searchValidate, new String[]{ + "=:majorCode@major_code:str", + "like:majorName@major_name:str", + "=:collegeId@college_id:int", + "=:majorType@major_type:int", + "=:disciplineCategory@discipline_category:str", + "=:directorId@director_id:int", + "=:majorStatus@major_status:int", + }); + + IPage iPage = majorMapper.selectPage(new Page<>(page, limit), queryWrapper); + + List list = new LinkedList<>(); + for (Major item : iPage.getRecords()) { + MajorListedVo vo = new MajorListedVo(); + BeanUtils.copyProperties(item, vo); + vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime())); + vo.setUpdateTime(TimeUtils.timestampToDate(item.getUpdateTime())); + College college = collegeMapper.selectById(item.getCollegeId()); + vo.setCollegeName(college.getCollegeName()); + list.add(vo); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + } + + /** + * 专业详情 + * + * @param id 主键参数 + * @return Major + * @author LikeAdmin + */ + @Override + public MajorDetailVo detail(Integer id) { + Major model = majorMapper.selectOne( + new QueryWrapper() + .eq("id", id) + .last("limit 1")); + Assert.notNull(model, "数据不存在"); + + MajorDetailVo vo = new MajorDetailVo(); + BeanUtils.copyProperties(model, vo); + College college = collegeMapper.selectById(model.getCollegeId()); + vo.setCollegeName(college.getCollegeName()); + return vo; + } +} diff --git a/server/like-front/src/main/java/com/mdd/front/validate/major/MajorCreateValidate.java b/server/like-front/src/main/java/com/mdd/front/validate/major/MajorCreateValidate.java new file mode 100644 index 00000000..6d0e0316 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/validate/major/MajorCreateValidate.java @@ -0,0 +1,67 @@ +package com.mdd.front.validate.major; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("专业创建参数") +public class MajorCreateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "专业代码") + @NotNull(message = "专业代码不为空") + private String majorCode; + + @NotNull(message = "专业名称不为空") + @ApiModelProperty(value = "专业名称") + private String majorName; + + @ApiModelProperty(value = "专业英文名") + private String majorEnglishName; + + @NotNull(message = "所属学院不为空") + @ApiModelProperty(value = "所属学院ID") + private Integer collegeId; + + @NotNull(message = "专业类型不为空") + @ApiModelProperty(value = "专业类型: [1=本科, 2=硕士, 3=博士, 4=专科]") + private Integer majorType; + + @ApiModelProperty(value = "学科门类") + private String disciplineCategory; + + @NotNull(message = "学年制不为空") + @ApiModelProperty(value = "学制(年)") + private Integer studyDuration; + + @ApiModelProperty(value = "专业简介") + private String majorDescription; + + @ApiModelProperty(value = "毕业要求学分") + private BigDecimal creditRequirement; + + @ApiModelProperty(value = "开设年份") + private Long establishedYear; + + @ApiModelProperty(value = "专业负责人用户ID") + private Integer directorId; + + @ApiModelProperty(value = "专业联系电话") + private String contactPhone; + + @ApiModelProperty(value = "招生状态: [1=正常招生, 2=暂停招生, 3=停止招生]") + private Integer enrollmentStatus; + + @ApiModelProperty(value = "专业状态: [1=正常, 2=停用]") + private Integer majorStatus; + + @ApiModelProperty(value = "排序") + private Integer sortOrder; + +} diff --git a/server/like-front/src/main/java/com/mdd/front/validate/major/MajorSearchValidate.java b/server/like-front/src/main/java/com/mdd/front/validate/major/MajorSearchValidate.java new file mode 100644 index 00000000..c6178f83 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/validate/major/MajorSearchValidate.java @@ -0,0 +1,36 @@ +package com.mdd.front.validate.major; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("专业搜素参数") +public class MajorSearchValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "专业代码") + private String majorCode; + + @ApiModelProperty(value = "专业名称") + private String majorName; + + @ApiModelProperty(value = "所属学院ID") + private Integer collegeId; + + @ApiModelProperty(value = "专业类型: [1=本科, 2=硕士, 3=博士, 4=专科]") + private Integer majorType; + + @ApiModelProperty(value = "学科门类") + private String disciplineCategory; + + @ApiModelProperty(value = "专业负责人用户ID") + private Integer directorId; + + @ApiModelProperty(value = "专业状态: [1=正常, 2=停用]") + private Integer majorStatus; + +} diff --git a/server/like-front/src/main/java/com/mdd/front/validate/major/MajorUpdateValidate.java b/server/like-front/src/main/java/com/mdd/front/validate/major/MajorUpdateValidate.java new file mode 100644 index 00000000..d1d91c64 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/validate/major/MajorUpdateValidate.java @@ -0,0 +1,70 @@ +package com.mdd.front.validate.major; + +import com.mdd.common.validator.annotation.IDMust; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 专业参数 + * @author LikeAdmin + */ +@Data +@ApiModel("专业更新参数") +public class MajorUpdateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @IDMust(message = "id参数必传且需大于0") + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "专业代码") + private String majorCode; + + @ApiModelProperty(value = "专业名称") + private String majorName; + + @ApiModelProperty(value = "专业英文名") + private String majorEnglishName; + + @ApiModelProperty(value = "所属学院ID") + private Integer collegeId; + + @ApiModelProperty(value = "专业类型: [1=本科, 2=硕士, 3=博士, 4=专科]") + private Integer majorType; + + @ApiModelProperty(value = "学科门类") + private String disciplineCategory; + + @ApiModelProperty(value = "学制(年)") + private Integer studyDuration; + + @ApiModelProperty(value = "专业简介") + private String majorDescription; + + @ApiModelProperty(value = "毕业要求学分") + private BigDecimal creditRequirement; + + @ApiModelProperty(value = "开设年份") + private Long establishedYear; + + @ApiModelProperty(value = "专业负责人用户ID") + private Integer directorId; + + @ApiModelProperty(value = "专业联系电话") + private String contactPhone; + + @ApiModelProperty(value = "招生状态: [1=正常招生, 2=暂停招生, 3=停止招生]") + private Integer enrollmentStatus; + + @ApiModelProperty(value = "专业状态: [1=正常, 2=停用]") + private Integer majorStatus; + + @ApiModelProperty(value = "排序") + private Integer sortOrder; + +} diff --git a/server/like-front/src/main/java/com/mdd/front/vo/major/MajorDetailVo.java b/server/like-front/src/main/java/com/mdd/front/vo/major/MajorDetailVo.java new file mode 100644 index 00000000..62432897 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/vo/major/MajorDetailVo.java @@ -0,0 +1,68 @@ +package com.mdd.front.vo.major; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("专业详情Vo") +public class MajorDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "所属学院") + private String collegeName; + + @ApiModelProperty(value = "专业代码") + private String majorCode; + + @ApiModelProperty(value = "专业名称") + private String majorName; + + @ApiModelProperty(value = "专业英文名") + private String majorEnglishName; + + @ApiModelProperty(value = "所属学院ID") + private Integer collegeId; + + @ApiModelProperty(value = "专业类型: [1=本科, 2=硕士, 3=博士, 4=专科]") + private Integer majorType; + + @ApiModelProperty(value = "学科门类") + private String disciplineCategory; + + @ApiModelProperty(value = "学制(年)") + private Integer studyDuration; + + @ApiModelProperty(value = "专业简介") + private String majorDescription; + + @ApiModelProperty(value = "毕业要求学分") + private BigDecimal creditRequirement; + + @ApiModelProperty(value = "开设年份") + private Long establishedYear; + + @ApiModelProperty(value = "专业负责人用户ID") + private Integer directorId; + + @ApiModelProperty(value = "专业联系电话") + private String contactPhone; + + @ApiModelProperty(value = "招生状态: [1=正常招生, 2=暂停招生, 3=停止招生]") + private Integer enrollmentStatus; + + @ApiModelProperty(value = "专业状态: [1=正常, 2=停用]") + private Integer majorStatus; + + @ApiModelProperty(value = "排序") + private Integer sortOrder; + + +} diff --git a/server/like-front/src/main/java/com/mdd/front/vo/major/MajorListedVo.java b/server/like-front/src/main/java/com/mdd/front/vo/major/MajorListedVo.java new file mode 100644 index 00000000..cb42f85b --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/vo/major/MajorListedVo.java @@ -0,0 +1,74 @@ +package com.mdd.front.vo.major; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel("专业列表Vo") +public class MajorListedVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "所属学院") + private String collegeName; + + @ApiModelProperty(value = "专业代码") + private String majorCode; + + @ApiModelProperty(value = "专业名称") + private String majorName; + + @ApiModelProperty(value = "专业英文名") + private String majorEnglishName; + + @ApiModelProperty(value = "专业类型: [1=本科, 2=硕士, 3=博士, 4=专科]") + private Integer majorType; + + @ApiModelProperty(value = "学科门类") + private String disciplineCategory; + + @ApiModelProperty(value = "学制(年)") + private Integer studyDuration; + + @ApiModelProperty(value = "专业简介") + private String majorDescription; + + @ApiModelProperty(value = "毕业要求学分") + private BigDecimal creditRequirement; + + @ApiModelProperty(value = "开设年份") + private Long establishedYear; + + @ApiModelProperty(value = "在校学生数") + private Integer studentCount; + + @ApiModelProperty(value = "专业负责人用户ID") + private Integer directorId; + + @ApiModelProperty(value = "专业联系电话") + private String contactPhone; + + @ApiModelProperty(value = "招生状态: [1=正常招生, 2=暂停招生, 3=停止招生]") + private Integer enrollmentStatus; + + @ApiModelProperty(value = "专业状态: [1=正常, 2=停用]") + private Integer majorStatus; + + @ApiModelProperty(value = "排序") + private Integer sortOrder; + + @ApiModelProperty(value = "创建时间") + private String createTime; + + @ApiModelProperty(value = "更新时间") + private String updateTime; + + +}