小程序-提交专业查询接口

This commit is contained in:
mirage 2026-02-09 10:14:51 +08:00
parent 6bf92ff5e4
commit d210573d63
8 changed files with 491 additions and 0 deletions

View File

@ -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<PageResult<MajorListedVo>> list(@Validated PageValidate pageValidate,
@Validated MajorSearchValidate searchValidate) {
PageResult<MajorListedVo> list = iMajorService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value = "专业详情")
public AjaxResult<MajorDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
MajorDetailVo detail = iMajorService.detail(id);
return AjaxResult.success(detail);
}
}

View File

@ -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<MajorListedVo>
* @author LikeAdmin
*/
PageResult<MajorListedVo> list(PageValidate pageValidate, MajorSearchValidate searchValidate);
/**
* 专业详情
*
* @param id 主键ID
* @return MajorDetailVo
* @author LikeAdmin
*/
MajorDetailVo detail(Integer id);
}

View File

@ -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<MajorListedVo>
* @author LikeAdmin
*/
@Override
public PageResult<MajorListedVo> list(PageValidate pageValidate, MajorSearchValidate searchValidate) {
Integer page = pageValidate.getPage_no();
Integer limit = pageValidate.getPage_size();
QueryWrapper<Major> 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<Major> iPage = majorMapper.selectPage(new Page<>(page, limit), queryWrapper);
List<MajorListedVo> 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<Major>()
.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;
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}