diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java new file mode 100644 index 00000000..019fc7c6 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java @@ -0,0 +1,105 @@ +package org.dromara.xg.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.xg.domain.vo.XgStudentMsgVo; +import org.dromara.xg.domain.bo.XgStudentMsgBo; +import org.dromara.xg.service.IXgStudentMsgService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 学生信息 + * + * @author zlwu + * @date 2025-07-24 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/studentMsg/studentMsg") +public class XgStudentMsgController extends BaseController { + + private final IXgStudentMsgService xgStudentMsgService; + + /** + * 查询学生信息列表 + */ + @SaCheckPermission("studentMsg:studentMsg:list") + @GetMapping("/list") + public TableDataInfo list(XgStudentMsgBo bo, PageQuery pageQuery) { + return xgStudentMsgService.queryPageList(bo, pageQuery); + } + + /** + * 导出学生信息列表 + */ + @SaCheckPermission("studentMsg:studentMsg:export") + @Log(title = "学生信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XgStudentMsgBo bo, HttpServletResponse response) { + List list = xgStudentMsgService.queryList(bo); + ExcelUtil.exportExcel(list, "学生信息", XgStudentMsgVo.class, response); + } + + /** + * 获取学生信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("studentMsg:studentMsg:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xgStudentMsgService.queryById(id)); + } + + /** + * 新增学生信息 + */ + @SaCheckPermission("studentMsg:studentMsg:add") + @Log(title = "学生信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XgStudentMsgBo bo) { + return toAjax(xgStudentMsgService.insertByBo(bo)); + } + + /** + * 修改学生信息 + */ + @SaCheckPermission("studentMsg:studentMsg:edit") + @Log(title = "学生信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XgStudentMsgBo bo) { + return toAjax(xgStudentMsgService.updateByBo(bo)); + } + + /** + * 删除学生信息 + * + * @param ids 主键串 + */ + @SaCheckPermission("studentMsg:studentMsg:remove") + @Log(title = "学生信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xgStudentMsgService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgStudentMsg.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgStudentMsg.java new file mode 100644 index 00000000..cdf865ee --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgStudentMsg.java @@ -0,0 +1,548 @@ +package org.dromara.xg.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 学生信息对象 xg_student_msg + * + * @author zlwu + * @date 2025-07-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xg_student_msg") +public class XgStudentMsg extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID(雪花ID) + */ + @TableId(value = "id") + private Long id; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic(value = "0", delval = "1") + private Long deleted; + + /** + * 学号 + */ + private String studentNo; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 姓名 + */ + private String name; + + /** + * 英文姓名 + */ + private String nameEnglish; + + /** + * 曾用名 + */ + private String formerName; + + /** + * 性别:M-男,F-女 + */ + private String gender; + + /** + * 出生日期 + */ + private Date birthDate; + + /** + * 民族 + */ + private String nationality; + + /** + * 籍贯 + */ + private String nativePlace; + + /** + * 政治面貌 + */ + private String politicalStatus; + + /** + * 户籍所在地 + */ + private String hukouLocation; + + /** + * 家庭地址 + */ + private String homeAddress; + + /** + * 现住址 + */ + private String currentAddress; + + /** + * 邮政编码 + */ + private String postalCode; + + /** + * 照片URL + */ + private String photoUrl; + + /** + * 学生照片存储路径 + */ + private String photoPath; + + /** + * 手机号码 + */ + private String phone; + + /** + * 是否住校:0-否,1-是 + */ + private Long isBoarder; + + /** + * 文化程度 + */ + private String educationLevel; + + /** + * 户口类型:农业、非农业 + */ + private String householdRegisterType; + + /** + * 宗教信仰 + */ + private String religion; + + /** + * 生源地区(省市县) + */ + private String sourceRegion; + + /** + * 毕业院校 + */ + private String graduateSchool; + + /** + * 电子邮箱 + */ + private String email; + + /** + * QQ号码 + */ + private String qq; + + /** + * 微信号 + */ + private String wechat; + + /** + * 婚姻状况:1 未婚、2 已婚、3 离异、4 丧偶 + */ + private String maritalStatus; + + /** + * 紧急联系人姓名 + */ + private String emergencyContactName; + + /** + * 紧急联系人电话 + */ + private String emergencyContactPhone; + + /** + * 紧急联系人关系 + */ + private String emergencyContactRelation; + + /** + * 是否贫困生:0-否,1-是 + */ + private Long isPoorStudent; + + /** + * 是否少数民族:0-否,1-是 + */ + private Long isMinority; + + /** + * 是否残疾:0-否,1-是 + */ + private Long isDisabled; + + /** + * 是否孤儿:0-否,1-是 + */ + private Long isOrphan; + + /** + * 是否留守儿童:0-否,1-是 + */ + private Long isLeftBehindChild; + + /** + * 是否独生子女:0-否,1-是 + */ + private Long isSingleChild; + + /** + * 是否低保:0-否,1-是 + */ + private Long isLowIncome; + + /** + * 是否有助学贷款:0-否,1-是 + */ + private Long hasLoan; + + /** + * 助学贷款金额 + */ + private Long loanAmount; + + /** + * 特长爱好 + */ + private String specialties; + + /** + * 获奖情况 + */ + private String awards; + + /** + * 违纪记录 + */ + private String violations; + + /** + * 社会活动 + */ + private String socialActivities; + + /** + * 父亲姓名 + */ + private String fatherName; + + /** + * 父亲电话 + */ + private String fatherPhone; + + /** + * 父亲工作单位 + */ + private String fatherWorkUnit; + + /** + * 母亲姓名 + */ + private String motherName; + + /** + * 母亲电话 + */ + private String motherPhone; + + /** + * 母亲工作单位 + */ + private String motherWorkUnit; + + /** + * 监护人姓名 + */ + private String guardianName; + + /** + * 监护人电话 + */ + private String guardianPhone; + + /** + * 监护人关系 + */ + private String guardianRelation; + + /** + * 家庭年收入 + */ + private Long familyIncome; + + /** + * 人均收入 + */ + private Long perCapitaIncome; + + /** + * 收入来源 + */ + private String incomeSource; + + /** + * 家庭经济状况:富裕、一般、困难、特困 + */ + private String familyEconomicStatus; + + /** + * 家庭成员数量 + */ + private Long familyMembers; + + /** + * 身高(cm) + */ + private Long height; + + /** + * 体重(kg) + */ + private Long weight; + + /** + * 血型 + */ + private String bloodType; + + /** + * 健康状况 + */ + private String healthStatus; + + /** + * 特殊体质或疾病 + */ + private String specialCondition; + + /** + * 病史 + */ + private String medicalHistory; + + /** + * 过敏史 + */ + private String allergies; + + /** + * 残疾类型 1 - 视力残疾 2 - 听力残疾 3 - 智力残疾 9 - 其他残疾 + */ + private String disabilityType; + + /** + * 残疾等级 + */ + private String disabilityLevel; + + /** + * 录取类别:统招、自主招生、专项计划等 + */ + private String admissionCategory; + + /** + * 学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业 + */ + private String studentStatus; + + /** + * 入学年份 + */ + private Long enrollmentYear; + + /** + * 入学日期 + */ + private Date enrollmentDate; + + /** + * 银行卡号 + */ + private String bankCardNo; + + /** + * 开户银行 + */ + private String bankName; + + /** + * 开户支行 + */ + private String bankBranch; + + /** + * 持卡人姓名 + */ + private String cardHolderName; + + /** + * 信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定 + */ + private String infoStatus; + + /** + * 数据来源:manual-手工录入,import-批量导入,sync-系统同步 + */ + private String dataSource; + + /** + * 最后修改批次ID + */ + private Long lastBatchId; + + /** + * 最后审核时间 + */ + private Date lastAuditTime; + + /** + * 信息是否完整:0-不完整,1-完整 + */ + private Long isComplete; + + /** + * 完整度百分比 + */ + private Long completionRate; + + /** + * 学制(年)- 预留,数据从班级表关联 + */ + private Long schoolSystem; + + /** + * 学历层次 - 预留,数据从班级表关联 + */ + private String academicLevel; + + /** + * 培养方式:全日制、在职、函授、夜大等 - 预留,数据从班级表关联 + */ + private String trainingType; + + /** + * 专业id - 预留,数据从班级表关联 + */ + private String majorId; + + /** + * 专业名称 - 预留,数据从班级表关联 + */ + private String majorName; + + /** + * 班级id - 预留,数据从班级表关联 + */ + private String classId; + + /** + * 班级名称 - 预留,数据从班级表关联 + */ + private String className; + + /** + * 年级 - 预留,数据从班级表关联 + */ + private String grade; + + /** + * 学院id - 预留,数据从班级表关联 + */ + private String collegeId; + + /** + * 学院名称 - 预留,数据从班级表关联 + */ + private String collegeName; + + /** + * 辅导员ID - 预留,数据从班级表关联 + */ + private Long counselorId; + + /** + * 辅导员姓名 - 预留,数据从班级表关联 + */ + private String counselorName; + + /** + * 班主任ID - 预留,数据从班级表关联 + */ + private Long classTeacherId; + + /** + * 班主任姓名 - 预留,数据从班级表关联 + */ + private String classTeacherName; + + /** + * 宿舍楼栋 - 预留,数据从班级表关联 + */ + private String dormitoryBuilding; + + /** + * 宿舍房间号 - 预留,数据从班级表关联 + */ + private String dormitoryRoom; + + /** + * 扩展字段1 + */ + private String extField1; + + /** + * 扩展字段2 + */ + private String extField2; + + /** + * 扩展字段3 + */ + private String extField3; + + /** + * 扩展字段4 + */ + private String extField4; + + /** + * 扩展字段5 + */ + private String extField5; + + /** + * 备注信息 + */ + private String remark; + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgSysUser.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgSysUser.java index e183e286..cd893516 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgSysUser.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgSysUser.java @@ -48,4 +48,8 @@ public class XgSysUser extends TenantEntity { @TableLogic private String delFlag; + /** + * 账户类型 1 - 教职工 2- 学生 + */ + private String accountType; } diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgStudentMsgBo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgStudentMsgBo.java new file mode 100644 index 00000000..37a3b729 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgStudentMsgBo.java @@ -0,0 +1,550 @@ +package org.dromara.xg.domain.bo; + +import org.dromara.xg.domain.XgStudentMsg; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 学生信息业务对象 xg_student_msg + * + * @author zlwu + * @date 2025-07-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XgStudentMsg.class, reverseConvertGenerate = false) +public class XgStudentMsgBo extends BaseEntity { + + /** + * 主键ID(雪花ID) + */ + @NotNull(message = "主键ID(雪花ID)不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 删除标志(0代表存在 1代表删除) + */ + private Long deleted; + + /** + * 学号 + */ + @NotBlank(message = "学号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String studentNo; + + /** + * 身份证号 + */ + private String idCard; + + /** + * 姓名 + */ + @NotBlank(message = "姓名不能为空", groups = { AddGroup.class, EditGroup.class }) + private String name; + + /** + * 英文姓名 + */ + private String nameEnglish; + + /** + * 曾用名 + */ + private String formerName; + + /** + * 性别:M-男,F-女 + */ + @NotBlank(message = "性别:M-男,F-女不能为空", groups = { AddGroup.class, EditGroup.class }) + private String gender; + + /** + * 出生日期 + */ + private Date birthDate; + + /** + * 民族 + */ + private String nationality; + + /** + * 籍贯 + */ + private String nativePlace; + + /** + * 政治面貌 + */ + private String politicalStatus; + + /** + * 户籍所在地 + */ + private String hukouLocation; + + /** + * 家庭地址 + */ + private String homeAddress; + + /** + * 现住址 + */ + private String currentAddress; + + /** + * 邮政编码 + */ + private String postalCode; + + /** + * 照片URL + */ + private String photoUrl; + + /** + * 学生照片存储路径 + */ + private String photoPath; + + /** + * 手机号码 + */ + private String phone; + + /** + * 是否住校:0-否,1-是 + */ + private Long isBoarder; + + /** + * 文化程度 + */ + private String educationLevel; + + /** + * 户口类型:农业、非农业 + */ + private String householdRegisterType; + + /** + * 宗教信仰 + */ + private String religion; + + /** + * 生源地区(省市县) + */ + private String sourceRegion; + + /** + * 毕业院校 + */ + private String graduateSchool; + + /** + * 电子邮箱 + */ + private String email; + + /** + * QQ号码 + */ + private String qq; + + /** + * 微信号 + */ + private String wechat; + + /** + * 婚姻状况:1 未婚、2 已婚、3 离异、4 丧偶 + */ + private String maritalStatus; + + /** + * 紧急联系人姓名 + */ + private String emergencyContactName; + + /** + * 紧急联系人电话 + */ + private String emergencyContactPhone; + + /** + * 紧急联系人关系 + */ + private String emergencyContactRelation; + + /** + * 是否贫困生:0-否,1-是 + */ + private Long isPoorStudent; + + /** + * 是否少数民族:0-否,1-是 + */ + private Long isMinority; + + /** + * 是否残疾:0-否,1-是 + */ + private Long isDisabled; + + /** + * 是否孤儿:0-否,1-是 + */ + private Long isOrphan; + + /** + * 是否留守儿童:0-否,1-是 + */ + private Long isLeftBehindChild; + + /** + * 是否独生子女:0-否,1-是 + */ + private Long isSingleChild; + + /** + * 是否低保:0-否,1-是 + */ + private Long isLowIncome; + + /** + * 是否有助学贷款:0-否,1-是 + */ + private Long hasLoan; + + /** + * 助学贷款金额 + */ + private Long loanAmount; + + /** + * 特长爱好 + */ + private String specialties; + + /** + * 获奖情况 + */ + private String awards; + + /** + * 违纪记录 + */ + private String violations; + + /** + * 社会活动 + */ + private String socialActivities; + + /** + * 父亲姓名 + */ + private String fatherName; + + /** + * 父亲电话 + */ + private String fatherPhone; + + /** + * 父亲工作单位 + */ + private String fatherWorkUnit; + + /** + * 母亲姓名 + */ + private String motherName; + + /** + * 母亲电话 + */ + private String motherPhone; + + /** + * 母亲工作单位 + */ + private String motherWorkUnit; + + /** + * 监护人姓名 + */ + private String guardianName; + + /** + * 监护人电话 + */ + private String guardianPhone; + + /** + * 监护人关系 + */ + private String guardianRelation; + + /** + * 家庭年收入 + */ + private Long familyIncome; + + /** + * 人均收入 + */ + private Long perCapitaIncome; + + /** + * 收入来源 + */ + private String incomeSource; + + /** + * 家庭经济状况:富裕、一般、困难、特困 + */ + private String familyEconomicStatus; + + /** + * 家庭成员数量 + */ + private Long familyMembers; + + /** + * 身高(cm) + */ + private Long height; + + /** + * 体重(kg) + */ + private Long weight; + + /** + * 血型 + */ + private String bloodType; + + /** + * 健康状况 + */ + private String healthStatus; + + /** + * 特殊体质或疾病 + */ + private String specialCondition; + + /** + * 病史 + */ + private String medicalHistory; + + /** + * 过敏史 + */ + private String allergies; + + /** + * 残疾类型 1 - 视力残疾 2 - 听力残疾 3 - 智力残疾 9 - 其他残疾 + */ + private String disabilityType; + + /** + * 残疾等级 + */ + private String disabilityLevel; + + /** + * 录取类别:统招、自主招生、专项计划等 + */ + private String admissionCategory; + + /** + * 学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业 + */ + private String studentStatus; + + /** + * 入学年份 + */ + private Long enrollmentYear; + + /** + * 入学日期 + */ + private Date enrollmentDate; + + /** + * 银行卡号 + */ + private String bankCardNo; + + /** + * 开户银行 + */ + private String bankName; + + /** + * 开户支行 + */ + private String bankBranch; + + /** + * 持卡人姓名 + */ + private String cardHolderName; + + /** + * 信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定 + */ + private String infoStatus; + + /** + * 数据来源:manual-手工录入,import-批量导入,sync-系统同步 + */ + private String dataSource; + + /** + * 最后修改批次ID + */ + private Long lastBatchId; + + /** + * 最后审核时间 + */ + private Date lastAuditTime; + + /** + * 信息是否完整:0-不完整,1-完整 + */ + private Long isComplete; + + /** + * 完整度百分比 + */ + private Long completionRate; + + /** + * 学制(年)- 预留,数据从班级表关联 + */ + private Long schoolSystem; + + /** + * 学历层次 - 预留,数据从班级表关联 + */ + private String academicLevel; + + /** + * 培养方式:全日制、在职、函授、夜大等 - 预留,数据从班级表关联 + */ + private String trainingType; + + /** + * 专业id - 预留,数据从班级表关联 + */ + private String majorId; + + /** + * 专业名称 - 预留,数据从班级表关联 + */ + private String majorName; + + /** + * 班级id - 预留,数据从班级表关联 + */ + private String classId; + + /** + * 班级名称 - 预留,数据从班级表关联 + */ + private String className; + + /** + * 年级 - 预留,数据从班级表关联 + */ + private String grade; + + /** + * 学院id - 预留,数据从班级表关联 + */ + private String collegeId; + + /** + * 学院名称 - 预留,数据从班级表关联 + */ + private String collegeName; + + /** + * 辅导员ID - 预留,数据从班级表关联 + */ + private Long counselorId; + + /** + * 辅导员姓名 - 预留,数据从班级表关联 + */ + private String counselorName; + + /** + * 班主任ID - 预留,数据从班级表关联 + */ + private Long classTeacherId; + + /** + * 班主任姓名 - 预留,数据从班级表关联 + */ + private String classTeacherName; + + /** + * 宿舍楼栋 - 预留,数据从班级表关联 + */ + private String dormitoryBuilding; + + /** + * 宿舍房间号 - 预留,数据从班级表关联 + */ + private String dormitoryRoom; + + /** + * 扩展字段1 + */ + private String extField1; + + /** + * 扩展字段2 + */ + private String extField2; + + /** + * 扩展字段3 + */ + private String extField3; + + /** + * 扩展字段4 + */ + private String extField4; + + /** + * 扩展字段5 + */ + private String extField5; + + /** + * 备注信息 + */ + private String remark; + + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgStudentMsgVo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgStudentMsgVo.java new file mode 100644 index 00000000..deec9939 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgStudentMsgVo.java @@ -0,0 +1,664 @@ +package org.dromara.xg.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.xg.domain.XgStudentMsg; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 学生信息视图对象 xg_student_msg + * + * @author zlwu + * @date 2025-07-24 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XgStudentMsg.class) +public class XgStudentMsgVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID(雪花ID) + */ + @ExcelProperty(value = "主键ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "雪=花ID") + private Long id; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @ExcelProperty(value = "删除标志", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=代表存在,1=代表删除") + private Long deleted; + + /** + * 学号 + */ + @ExcelProperty(value = "学号") + private String studentNo; + + /** + * 身份证号 + */ + @ExcelProperty(value = "身份证号") + private String idCard; + + /** + * 姓名 + */ + @ExcelProperty(value = "姓名") + private String name; + + /** + * 英文姓名 + */ + @ExcelProperty(value = "英文姓名") + private String nameEnglish; + + /** + * 曾用名 + */ + @ExcelProperty(value = "曾用名") + private String formerName; + + /** + * 性别:M-男,F-女 + */ + @ExcelProperty(value = "性别:M-男,F-女") + private String gender; + + /** + * 出生日期 + */ + @ExcelProperty(value = "出生日期") + private Date birthDate; + + /** + * 民族 + */ + @ExcelProperty(value = "民族 ") + private String nationality; + + /** + * 籍贯 + */ + @ExcelProperty(value = "籍贯") + private String nativePlace; + + /** + * 政治面貌 + */ + @ExcelProperty(value = "政治面貌") + private String politicalStatus; + + /** + * 户籍所在地 + */ + @ExcelProperty(value = "户籍所在地") + private String hukouLocation; + + /** + * 家庭地址 + */ + @ExcelProperty(value = "家庭地址") + private String homeAddress; + + /** + * 现住址 + */ + @ExcelProperty(value = "现住址") + private String currentAddress; + + /** + * 邮政编码 + */ + @ExcelProperty(value = "邮政编码") + private String postalCode; + + /** + * 照片URL + */ + @ExcelProperty(value = "照片URL") + private String photoUrl; + + /** + * 学生照片存储路径 + */ + @ExcelProperty(value = "学生照片存储路径") + private String photoPath; + + /** + * 手机号码 + */ + @ExcelProperty(value = "手机号码") + private String phone; + + /** + * 是否住校:0-否,1-是 + */ + @ExcelProperty(value = "是否住校:0-否,1-是") + private Long isBoarder; + + /** + * 文化程度 + */ + @ExcelProperty(value = "文化程度") + private String educationLevel; + + /** + * 户口类型:农业、非农业 + */ + @ExcelProperty(value = "户口类型:农业、非农业") + private String householdRegisterType; + + /** + * 宗教信仰 + */ + @ExcelProperty(value = "宗教信仰") + private String religion; + + /** + * 生源地区(省市县) + */ + @ExcelProperty(value = "生源地区", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "省=市县") + private String sourceRegion; + + /** + * 毕业院校 + */ + @ExcelProperty(value = "毕业院校") + private String graduateSchool; + + /** + * 电子邮箱 + */ + @ExcelProperty(value = "电子邮箱") + private String email; + + /** + * QQ号码 + */ + @ExcelProperty(value = "QQ号码") + private String qq; + + /** + * 微信号 + */ + @ExcelProperty(value = "微信号") + private String wechat; + + /** + * 婚姻状况:1 未婚、2 已婚、3 离异、4 丧偶 + */ + @ExcelProperty(value = "婚姻状况:1 未婚、2 已婚、3 离异、4 丧偶 ") + private String maritalStatus; + + /** + * 紧急联系人姓名 + */ + @ExcelProperty(value = "紧急联系人姓名") + private String emergencyContactName; + + /** + * 紧急联系人电话 + */ + @ExcelProperty(value = "紧急联系人电话") + private String emergencyContactPhone; + + /** + * 紧急联系人关系 + */ + @ExcelProperty(value = "紧急联系人关系") + private String emergencyContactRelation; + + /** + * 是否贫困生:0-否,1-是 + */ + @ExcelProperty(value = "是否贫困生:0-否,1-是") + private Long isPoorStudent; + + /** + * 是否少数民族:0-否,1-是 + */ + @ExcelProperty(value = "是否少数民族:0-否,1-是") + private Long isMinority; + + /** + * 是否残疾:0-否,1-是 + */ + @ExcelProperty(value = "是否残疾:0-否,1-是") + private Long isDisabled; + + /** + * 是否孤儿:0-否,1-是 + */ + @ExcelProperty(value = "是否孤儿:0-否,1-是") + private Long isOrphan; + + /** + * 是否留守儿童:0-否,1-是 + */ + @ExcelProperty(value = "是否留守儿童:0-否,1-是") + private Long isLeftBehindChild; + + /** + * 是否独生子女:0-否,1-是 + */ + @ExcelProperty(value = "是否独生子女:0-否,1-是") + private Long isSingleChild; + + /** + * 是否低保:0-否,1-是 + */ + @ExcelProperty(value = "是否低保:0-否,1-是") + private Long isLowIncome; + + /** + * 是否有助学贷款:0-否,1-是 + */ + @ExcelProperty(value = "是否有助学贷款:0-否,1-是") + private Long hasLoan; + + /** + * 助学贷款金额 + */ + @ExcelProperty(value = "助学贷款金额") + private Long loanAmount; + + /** + * 特长爱好 + */ + @ExcelProperty(value = "特长爱好") + private String specialties; + + /** + * 获奖情况 + */ + @ExcelProperty(value = "获奖情况") + private String awards; + + /** + * 违纪记录 + */ + @ExcelProperty(value = "违纪记录") + private String violations; + + /** + * 社会活动 + */ + @ExcelProperty(value = "社会活动") + private String socialActivities; + + /** + * 父亲姓名 + */ + @ExcelProperty(value = "父亲姓名") + private String fatherName; + + /** + * 父亲电话 + */ + @ExcelProperty(value = "父亲电话") + private String fatherPhone; + + /** + * 父亲工作单位 + */ + @ExcelProperty(value = "父亲工作单位") + private String fatherWorkUnit; + + /** + * 母亲姓名 + */ + @ExcelProperty(value = "母亲姓名") + private String motherName; + + /** + * 母亲电话 + */ + @ExcelProperty(value = "母亲电话") + private String motherPhone; + + /** + * 母亲工作单位 + */ + @ExcelProperty(value = "母亲工作单位") + private String motherWorkUnit; + + /** + * 监护人姓名 + */ + @ExcelProperty(value = "监护人姓名") + private String guardianName; + + /** + * 监护人电话 + */ + @ExcelProperty(value = "监护人电话") + private String guardianPhone; + + /** + * 监护人关系 + */ + @ExcelProperty(value = "监护人关系") + private String guardianRelation; + + /** + * 家庭年收入 + */ + @ExcelProperty(value = "家庭年收入") + private Long familyIncome; + + /** + * 人均收入 + */ + @ExcelProperty(value = "人均收入") + private Long perCapitaIncome; + + /** + * 收入来源 + */ + @ExcelProperty(value = "收入来源") + private String incomeSource; + + /** + * 家庭经济状况:富裕、一般、困难、特困 + */ + @ExcelProperty(value = "家庭经济状况:富裕、一般、困难、特困") + private String familyEconomicStatus; + + /** + * 家庭成员数量 + */ + @ExcelProperty(value = "家庭成员数量") + private Long familyMembers; + + /** + * 身高(cm) + */ + @ExcelProperty(value = "身高", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "c=m") + private Long height; + + /** + * 体重(kg) + */ + @ExcelProperty(value = "体重", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "k=g") + private Long weight; + + /** + * 血型 + */ + @ExcelProperty(value = "血型") + private String bloodType; + + /** + * 健康状况 + */ + @ExcelProperty(value = "健康状况") + private String healthStatus; + + /** + * 特殊体质或疾病 + */ + @ExcelProperty(value = "特殊体质或疾病") + private String specialCondition; + + /** + * 病史 + */ + @ExcelProperty(value = "病史") + private String medicalHistory; + + /** + * 过敏史 + */ + @ExcelProperty(value = "过敏史") + private String allergies; + + /** + * 残疾类型 1 - 视力残疾 2 - 听力残疾 3 - 智力残疾 9 - 其他残疾 + */ + @ExcelProperty(value = "残疾类型 1 - 视力残疾 2 - 听力残疾 3 - 智力残疾 9 - 其他残疾") + private String disabilityType; + + /** + * 残疾等级 + */ + @ExcelProperty(value = "残疾等级") + private String disabilityLevel; + + /** + * 录取类别:统招、自主招生、专项计划等 + */ + @ExcelProperty(value = "录取类别:统招、自主招生、专项计划等") + private String admissionCategory; + + /** + * 学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业 + */ + @ExcelProperty(value = "学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业") + private String studentStatus; + + /** + * 入学年份 + */ + @ExcelProperty(value = "入学年份") + private Long enrollmentYear; + + /** + * 入学日期 + */ + @ExcelProperty(value = "入学日期") + private Date enrollmentDate; + + /** + * 银行卡号 + */ + @ExcelProperty(value = "银行卡号") + private String bankCardNo; + + /** + * 开户银行 + */ + @ExcelProperty(value = "开户银行") + private String bankName; + + /** + * 开户支行 + */ + @ExcelProperty(value = "开户支行") + private String bankBranch; + + /** + * 持卡人姓名 + */ + @ExcelProperty(value = "持卡人姓名") + private String cardHolderName; + + /** + * 信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定 + */ + @ExcelProperty(value = "信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定") + private String infoStatus; + + /** + * 数据来源:manual-手工录入,import-批量导入,sync-系统同步 + */ + @ExcelProperty(value = "数据来源:manual-手工录入,import-批量导入,sync-系统同步") + private String dataSource; + + /** + * 最后修改批次ID + */ + @ExcelProperty(value = "最后修改批次ID") + private Long lastBatchId; + + /** + * 最后审核时间 + */ + @ExcelProperty(value = "最后审核时间") + private Date lastAuditTime; + + /** + * 信息是否完整:0-不完整,1-完整 + */ + @ExcelProperty(value = "信息是否完整:0-不完整,1-完整") + private Long isComplete; + + /** + * 完整度百分比 + */ + @ExcelProperty(value = "完整度百分比") + private Long completionRate; + + /** + * 学制(年)- 预留,数据从班级表关联 + */ + @ExcelProperty(value = "学制", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "年=") + private Long schoolSystem; + + /** + * 学历层次 - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "学历层次 - 预留,数据从班级表关联") + private String academicLevel; + + /** + * 培养方式:全日制、在职、函授、夜大等 - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "培养方式:全日制、在职、函授、夜大等 - 预留,数据从班级表关联") + private String trainingType; + + /** + * 专业id - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "专业id - 预留,数据从班级表关联") + private String majorId; + + /** + * 专业名称 - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "专业名称 - 预留,数据从班级表关联") + private String majorName; + + /** + * 班级id - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "班级id - 预留,数据从班级表关联") + private String classId; + + /** + * 班级名称 - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "班级名称 - 预留,数据从班级表关联") + private String className; + + /** + * 年级 - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "年级 - 预留,数据从班级表关联") + private String grade; + + /** + * 学院id - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "学院id - 预留,数据从班级表关联") + private String collegeId; + + /** + * 学院名称 - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "学院名称 - 预留,数据从班级表关联") + private String collegeName; + + /** + * 辅导员ID - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "辅导员ID - 预留,数据从班级表关联") + private Long counselorId; + + /** + * 辅导员姓名 - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "辅导员姓名 - 预留,数据从班级表关联") + private String counselorName; + + /** + * 班主任ID - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "班主任ID - 预留,数据从班级表关联") + private Long classTeacherId; + + /** + * 班主任姓名 - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "班主任姓名 - 预留,数据从班级表关联") + private String classTeacherName; + + /** + * 宿舍楼栋 - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "宿舍楼栋 - 预留,数据从班级表关联") + private String dormitoryBuilding; + + /** + * 宿舍房间号 - 预留,数据从班级表关联 + */ + @ExcelProperty(value = "宿舍房间号 - 预留,数据从班级表关联") + private String dormitoryRoom; + + /** + * 扩展字段1 + */ + @ExcelProperty(value = "扩展字段1") + private String extField1; + + /** + * 扩展字段2 + */ + @ExcelProperty(value = "扩展字段2") + private String extField2; + + /** + * 扩展字段3 + */ + @ExcelProperty(value = "扩展字段3") + private String extField3; + + /** + * 扩展字段4 + */ + @ExcelProperty(value = "扩展字段4") + private String extField4; + + /** + * 扩展字段5 + */ + @ExcelProperty(value = "扩展字段5") + private String extField5; + + /** + * 备注信息 + */ + @ExcelProperty(value = "备注信息") + private String remark; + + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentMsgMapper.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentMsgMapper.java new file mode 100644 index 00000000..7e2a7255 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentMsgMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xg.mapper; + +import org.dromara.xg.domain.XgStudentMsg; +import org.dromara.xg.domain.vo.XgStudentMsgVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 学生信息Mapper接口 + * + * @author zlwu + * @date 2025-07-24 + */ +public interface XgStudentMsgMapper extends BaseMapperPlus { + +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgSysUserMapper.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgSysUserMapper.java index 1722095d..a4d34de6 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgSysUserMapper.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgSysUserMapper.java @@ -20,4 +20,12 @@ public interface XgSysUserMapper extends BaseMapperPlus { */ List selectActiveUserList(); + /** + * 根据账户类型查询有效用户列表 + * + * @param accountType 账户类型 + * @return 用户列表 + */ + List selectActiveUserListByAccountType(String accountType); + } diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentMsgService.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentMsgService.java new file mode 100644 index 00000000..d58bc4d3 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentMsgService.java @@ -0,0 +1,68 @@ +package org.dromara.xg.service; + +import org.dromara.xg.domain.vo.XgStudentMsgVo; +import org.dromara.xg.domain.bo.XgStudentMsgBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 学生信息Service接口 + * + * @author zlwu + * @date 2025-07-24 + */ +public interface IXgStudentMsgService { + + /** + * 查询学生信息 + * + * @param id 主键 + * @return 学生信息 + */ + XgStudentMsgVo queryById(Long id); + + /** + * 分页查询学生信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 学生信息分页列表 + */ + TableDataInfo queryPageList(XgStudentMsgBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的学生信息列表 + * + * @param bo 查询条件 + * @return 学生信息列表 + */ + List queryList(XgStudentMsgBo bo); + + /** + * 新增学生信息 + * + * @param bo 学生信息 + * @return 是否新增成功 + */ + Boolean insertByBo(XgStudentMsgBo bo); + + /** + * 修改学生信息 + * + * @param bo 学生信息 + * @return 是否修改成功 + */ + Boolean updateByBo(XgStudentMsgBo bo); + + /** + * 校验并批量删除学生信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormManagerServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormManagerServiceImpl.java index 4f60aa02..f897b784 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormManagerServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgDormManagerServiceImpl.java @@ -89,7 +89,7 @@ public class XgDormManagerServiceImpl implements IXgDormManagerService { sql.append("INNER JOIN sys_user_role ur ON u.user_id = ur.user_id "); sql.append("INNER JOIN sys_role r ON ur.role_id = r.role_id "); sql.append( - "WHERE r.role_key = 'teacher' AND u.status = '0' and not exists (select 1 from xg_dorm_manager where user_id = u.user_id and deleted = '0' and manager_type = '" + "WHERE (r.role_key = 'teacher' or u.account_type='1') AND u.status = '0' and not exists (select 1 from xg_dorm_manager where user_id = u.user_id and deleted = '0' and manager_type = '" + managerType + "') "); List params = new ArrayList<>(); diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java new file mode 100644 index 00000000..08b76d10 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentMsgServiceImpl.java @@ -0,0 +1,233 @@ +package org.dromara.xg.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.dromara.xg.domain.bo.XgStudentMsgBo; +import org.dromara.xg.domain.vo.XgStudentMsgVo; +import org.dromara.xg.domain.XgStudentMsg; +import org.dromara.xg.mapper.XgStudentMsgMapper; +import org.dromara.xg.service.IXgStudentMsgService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 学生信息Service业务层处理 + * + * @author zlwu + * @date 2025-07-24 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class XgStudentMsgServiceImpl implements IXgStudentMsgService { + + private final XgStudentMsgMapper baseMapper; + + /** + * 查询学生信息 + * + * @param id 主键 + * @return 学生信息 + */ + @Override + public XgStudentMsgVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询学生信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 学生信息分页列表 + */ + @Override + public TableDataInfo queryPageList(XgStudentMsgBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的学生信息列表 + * + * @param bo 查询条件 + * @return 学生信息列表 + */ + @Override + public List queryList(XgStudentMsgBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XgStudentMsgBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(XgStudentMsg::getId); + lqw.eq(bo.getDeleted() != null, XgStudentMsg::getDeleted, bo.getDeleted()); + lqw.eq(StringUtils.isNotBlank(bo.getStudentNo()), XgStudentMsg::getStudentNo, bo.getStudentNo()); + lqw.eq(StringUtils.isNotBlank(bo.getIdCard()), XgStudentMsg::getIdCard, bo.getIdCard()); + lqw.like(StringUtils.isNotBlank(bo.getName()), XgStudentMsg::getName, bo.getName()); + lqw.eq(StringUtils.isNotBlank(bo.getNameEnglish()), XgStudentMsg::getNameEnglish, bo.getNameEnglish()); + lqw.like(StringUtils.isNotBlank(bo.getFormerName()), XgStudentMsg::getFormerName, bo.getFormerName()); + lqw.eq(StringUtils.isNotBlank(bo.getGender()), XgStudentMsg::getGender, bo.getGender()); + lqw.eq(bo.getBirthDate() != null, XgStudentMsg::getBirthDate, bo.getBirthDate()); + lqw.eq(StringUtils.isNotBlank(bo.getNationality()), XgStudentMsg::getNationality, bo.getNationality()); + lqw.eq(StringUtils.isNotBlank(bo.getNativePlace()), XgStudentMsg::getNativePlace, bo.getNativePlace()); + lqw.eq(StringUtils.isNotBlank(bo.getPoliticalStatus()), XgStudentMsg::getPoliticalStatus, bo.getPoliticalStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getHukouLocation()), XgStudentMsg::getHukouLocation, bo.getHukouLocation()); + lqw.eq(StringUtils.isNotBlank(bo.getHomeAddress()), XgStudentMsg::getHomeAddress, bo.getHomeAddress()); + lqw.eq(StringUtils.isNotBlank(bo.getCurrentAddress()), XgStudentMsg::getCurrentAddress, bo.getCurrentAddress()); + lqw.eq(StringUtils.isNotBlank(bo.getPostalCode()), XgStudentMsg::getPostalCode, bo.getPostalCode()); + lqw.eq(StringUtils.isNotBlank(bo.getPhotoUrl()), XgStudentMsg::getPhotoUrl, bo.getPhotoUrl()); + lqw.eq(StringUtils.isNotBlank(bo.getPhotoPath()), XgStudentMsg::getPhotoPath, bo.getPhotoPath()); + lqw.eq(StringUtils.isNotBlank(bo.getPhone()), XgStudentMsg::getPhone, bo.getPhone()); + lqw.eq(bo.getIsBoarder() != null, XgStudentMsg::getIsBoarder, bo.getIsBoarder()); + lqw.eq(StringUtils.isNotBlank(bo.getEducationLevel()), XgStudentMsg::getEducationLevel, bo.getEducationLevel()); + lqw.eq(StringUtils.isNotBlank(bo.getHouseholdRegisterType()), XgStudentMsg::getHouseholdRegisterType, bo.getHouseholdRegisterType()); + lqw.eq(StringUtils.isNotBlank(bo.getReligion()), XgStudentMsg::getReligion, bo.getReligion()); + lqw.eq(StringUtils.isNotBlank(bo.getSourceRegion()), XgStudentMsg::getSourceRegion, bo.getSourceRegion()); + lqw.eq(StringUtils.isNotBlank(bo.getGraduateSchool()), XgStudentMsg::getGraduateSchool, bo.getGraduateSchool()); + lqw.eq(StringUtils.isNotBlank(bo.getEmail()), XgStudentMsg::getEmail, bo.getEmail()); + lqw.eq(StringUtils.isNotBlank(bo.getQq()), XgStudentMsg::getQq, bo.getQq()); + lqw.eq(StringUtils.isNotBlank(bo.getWechat()), XgStudentMsg::getWechat, bo.getWechat()); + lqw.eq(StringUtils.isNotBlank(bo.getMaritalStatus()), XgStudentMsg::getMaritalStatus, bo.getMaritalStatus()); + lqw.like(StringUtils.isNotBlank(bo.getEmergencyContactName()), XgStudentMsg::getEmergencyContactName, bo.getEmergencyContactName()); + lqw.eq(StringUtils.isNotBlank(bo.getEmergencyContactPhone()), XgStudentMsg::getEmergencyContactPhone, bo.getEmergencyContactPhone()); + lqw.eq(StringUtils.isNotBlank(bo.getEmergencyContactRelation()), XgStudentMsg::getEmergencyContactRelation, bo.getEmergencyContactRelation()); + lqw.eq(bo.getIsPoorStudent() != null, XgStudentMsg::getIsPoorStudent, bo.getIsPoorStudent()); + lqw.eq(bo.getIsMinority() != null, XgStudentMsg::getIsMinority, bo.getIsMinority()); + lqw.eq(bo.getIsDisabled() != null, XgStudentMsg::getIsDisabled, bo.getIsDisabled()); + lqw.eq(bo.getIsOrphan() != null, XgStudentMsg::getIsOrphan, bo.getIsOrphan()); + lqw.eq(bo.getIsLeftBehindChild() != null, XgStudentMsg::getIsLeftBehindChild, bo.getIsLeftBehindChild()); + lqw.eq(bo.getIsSingleChild() != null, XgStudentMsg::getIsSingleChild, bo.getIsSingleChild()); + lqw.eq(bo.getIsLowIncome() != null, XgStudentMsg::getIsLowIncome, bo.getIsLowIncome()); + lqw.eq(bo.getHasLoan() != null, XgStudentMsg::getHasLoan, bo.getHasLoan()); + lqw.eq(bo.getLoanAmount() != null, XgStudentMsg::getLoanAmount, bo.getLoanAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getSpecialties()), XgStudentMsg::getSpecialties, bo.getSpecialties()); + lqw.eq(StringUtils.isNotBlank(bo.getAwards()), XgStudentMsg::getAwards, bo.getAwards()); + lqw.eq(StringUtils.isNotBlank(bo.getViolations()), XgStudentMsg::getViolations, bo.getViolations()); + lqw.eq(StringUtils.isNotBlank(bo.getSocialActivities()), XgStudentMsg::getSocialActivities, bo.getSocialActivities()); + lqw.like(StringUtils.isNotBlank(bo.getFatherName()), XgStudentMsg::getFatherName, bo.getFatherName()); + lqw.eq(StringUtils.isNotBlank(bo.getFatherPhone()), XgStudentMsg::getFatherPhone, bo.getFatherPhone()); + lqw.eq(StringUtils.isNotBlank(bo.getFatherWorkUnit()), XgStudentMsg::getFatherWorkUnit, bo.getFatherWorkUnit()); + lqw.like(StringUtils.isNotBlank(bo.getMotherName()), XgStudentMsg::getMotherName, bo.getMotherName()); + lqw.eq(StringUtils.isNotBlank(bo.getMotherPhone()), XgStudentMsg::getMotherPhone, bo.getMotherPhone()); + lqw.eq(StringUtils.isNotBlank(bo.getMotherWorkUnit()), XgStudentMsg::getMotherWorkUnit, bo.getMotherWorkUnit()); + lqw.like(StringUtils.isNotBlank(bo.getGuardianName()), XgStudentMsg::getGuardianName, bo.getGuardianName()); + lqw.eq(StringUtils.isNotBlank(bo.getGuardianPhone()), XgStudentMsg::getGuardianPhone, bo.getGuardianPhone()); + lqw.eq(StringUtils.isNotBlank(bo.getGuardianRelation()), XgStudentMsg::getGuardianRelation, bo.getGuardianRelation()); + lqw.eq(bo.getFamilyIncome() != null, XgStudentMsg::getFamilyIncome, bo.getFamilyIncome()); + lqw.eq(bo.getPerCapitaIncome() != null, XgStudentMsg::getPerCapitaIncome, bo.getPerCapitaIncome()); + lqw.eq(StringUtils.isNotBlank(bo.getIncomeSource()), XgStudentMsg::getIncomeSource, bo.getIncomeSource()); + lqw.eq(StringUtils.isNotBlank(bo.getFamilyEconomicStatus()), XgStudentMsg::getFamilyEconomicStatus, bo.getFamilyEconomicStatus()); + lqw.eq(bo.getFamilyMembers() != null, XgStudentMsg::getFamilyMembers, bo.getFamilyMembers()); + lqw.eq(bo.getHeight() != null, XgStudentMsg::getHeight, bo.getHeight()); + lqw.eq(bo.getWeight() != null, XgStudentMsg::getWeight, bo.getWeight()); + lqw.eq(StringUtils.isNotBlank(bo.getBloodType()), XgStudentMsg::getBloodType, bo.getBloodType()); + lqw.eq(StringUtils.isNotBlank(bo.getHealthStatus()), XgStudentMsg::getHealthStatus, bo.getHealthStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getSpecialCondition()), XgStudentMsg::getSpecialCondition, bo.getSpecialCondition()); + lqw.eq(StringUtils.isNotBlank(bo.getMedicalHistory()), XgStudentMsg::getMedicalHistory, bo.getMedicalHistory()); + lqw.eq(StringUtils.isNotBlank(bo.getAllergies()), XgStudentMsg::getAllergies, bo.getAllergies()); + lqw.eq(StringUtils.isNotBlank(bo.getDisabilityType()), XgStudentMsg::getDisabilityType, bo.getDisabilityType()); + lqw.eq(StringUtils.isNotBlank(bo.getDisabilityLevel()), XgStudentMsg::getDisabilityLevel, bo.getDisabilityLevel()); + lqw.eq(StringUtils.isNotBlank(bo.getAdmissionCategory()), XgStudentMsg::getAdmissionCategory, bo.getAdmissionCategory()); + lqw.eq(StringUtils.isNotBlank(bo.getStudentStatus()), XgStudentMsg::getStudentStatus, bo.getStudentStatus()); + lqw.eq(bo.getEnrollmentYear() != null, XgStudentMsg::getEnrollmentYear, bo.getEnrollmentYear()); + lqw.eq(bo.getEnrollmentDate() != null, XgStudentMsg::getEnrollmentDate, bo.getEnrollmentDate()); + lqw.eq(StringUtils.isNotBlank(bo.getBankCardNo()), XgStudentMsg::getBankCardNo, bo.getBankCardNo()); + lqw.like(StringUtils.isNotBlank(bo.getBankName()), XgStudentMsg::getBankName, bo.getBankName()); + lqw.eq(StringUtils.isNotBlank(bo.getBankBranch()), XgStudentMsg::getBankBranch, bo.getBankBranch()); + lqw.like(StringUtils.isNotBlank(bo.getCardHolderName()), XgStudentMsg::getCardHolderName, bo.getCardHolderName()); + lqw.eq(StringUtils.isNotBlank(bo.getInfoStatus()), XgStudentMsg::getInfoStatus, bo.getInfoStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getDataSource()), XgStudentMsg::getDataSource, bo.getDataSource()); + lqw.eq(bo.getLastBatchId() != null, XgStudentMsg::getLastBatchId, bo.getLastBatchId()); + lqw.eq(bo.getLastAuditTime() != null, XgStudentMsg::getLastAuditTime, bo.getLastAuditTime()); + lqw.eq(bo.getIsComplete() != null, XgStudentMsg::getIsComplete, bo.getIsComplete()); + lqw.eq(bo.getCompletionRate() != null, XgStudentMsg::getCompletionRate, bo.getCompletionRate()); + lqw.eq(bo.getSchoolSystem() != null, XgStudentMsg::getSchoolSystem, bo.getSchoolSystem()); + lqw.eq(StringUtils.isNotBlank(bo.getAcademicLevel()), XgStudentMsg::getAcademicLevel, bo.getAcademicLevel()); + lqw.eq(StringUtils.isNotBlank(bo.getTrainingType()), XgStudentMsg::getTrainingType, bo.getTrainingType()); + lqw.eq(StringUtils.isNotBlank(bo.getMajorId()), XgStudentMsg::getMajorId, bo.getMajorId()); + lqw.like(StringUtils.isNotBlank(bo.getMajorName()), XgStudentMsg::getMajorName, bo.getMajorName()); + lqw.eq(StringUtils.isNotBlank(bo.getClassId()), XgStudentMsg::getClassId, bo.getClassId()); + lqw.like(StringUtils.isNotBlank(bo.getClassName()), XgStudentMsg::getClassName, bo.getClassName()); + lqw.eq(StringUtils.isNotBlank(bo.getGrade()), XgStudentMsg::getGrade, bo.getGrade()); + lqw.eq(StringUtils.isNotBlank(bo.getCollegeId()), XgStudentMsg::getCollegeId, bo.getCollegeId()); + lqw.like(StringUtils.isNotBlank(bo.getCollegeName()), XgStudentMsg::getCollegeName, bo.getCollegeName()); + lqw.eq(bo.getCounselorId() != null, XgStudentMsg::getCounselorId, bo.getCounselorId()); + lqw.like(StringUtils.isNotBlank(bo.getCounselorName()), XgStudentMsg::getCounselorName, bo.getCounselorName()); + lqw.eq(bo.getClassTeacherId() != null, XgStudentMsg::getClassTeacherId, bo.getClassTeacherId()); + lqw.like(StringUtils.isNotBlank(bo.getClassTeacherName()), XgStudentMsg::getClassTeacherName, bo.getClassTeacherName()); + lqw.eq(StringUtils.isNotBlank(bo.getDormitoryBuilding()), XgStudentMsg::getDormitoryBuilding, bo.getDormitoryBuilding()); + lqw.eq(StringUtils.isNotBlank(bo.getDormitoryRoom()), XgStudentMsg::getDormitoryRoom, bo.getDormitoryRoom()); + lqw.eq(StringUtils.isNotBlank(bo.getExtField1()), XgStudentMsg::getExtField1, bo.getExtField1()); + lqw.eq(StringUtils.isNotBlank(bo.getExtField2()), XgStudentMsg::getExtField2, bo.getExtField2()); + lqw.eq(StringUtils.isNotBlank(bo.getExtField3()), XgStudentMsg::getExtField3, bo.getExtField3()); + lqw.eq(StringUtils.isNotBlank(bo.getExtField4()), XgStudentMsg::getExtField4, bo.getExtField4()); + lqw.eq(StringUtils.isNotBlank(bo.getExtField5()), XgStudentMsg::getExtField5, bo.getExtField5()); + return lqw; + } + + /** + * 新增学生信息 + * + * @param bo 学生信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XgStudentMsgBo bo) { + XgStudentMsg add = MapstructUtils.convert(bo, XgStudentMsg.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改学生信息 + * + * @param bo 学生信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XgStudentMsgBo bo) { + XgStudentMsg update = MapstructUtils.convert(bo, XgStudentMsg.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XgStudentMsg entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除学生信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgSysUserServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgSysUserServiceImpl.java index ff298a7b..43a2d4c0 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgSysUserServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgSysUserServiceImpl.java @@ -21,12 +21,12 @@ public class XgSysUserServiceImpl implements IXgSysUserService { private final XgSysUserMapper baseMapper; /** - * 查询所有有效用户列表 + * 查询所有有效用户列表(account_type=1) * * @return 有效用户列表 */ @Override public List selectActiveUserList() { - return baseMapper.selectActiveUserList(); + return baseMapper.selectActiveUserListByAccountType("1"); } } diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentMsg/XgStudentMsgMapper.xml b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentMsg/XgStudentMsgMapper.xml new file mode 100644 index 00000000..91cc7009 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentMsg/XgStudentMsgMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/xg/XgSysUserMapper.xml b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/xg/XgSysUserMapper.xml index 76782df8..bd36d7d1 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/xg/XgSysUserMapper.xml +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/xg/XgSysUserMapper.xml @@ -24,4 +24,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by create_time desc + + + diff --git a/docs/变更管理/code-adjust-record-2025-07-24-claude.md b/docs/变更管理/code-adjust-record-2025-07-24-claude.md new file mode 100644 index 00000000..6f483ca6 --- /dev/null +++ b/docs/变更管理/code-adjust-record-2025-07-24-claude.md @@ -0,0 +1,20 @@ +# 变更记录 2025-07-24 + +## 系统用户查询功能调整 + +### 变更时间 +2025-07-24 14:35:26 + +### 变更内容 +1. 修改了系统用户查询功能,在 `XgSysUserServiceImpl.selectActiveUserList()` 方法中,增加了 account_type=1 的过滤条件 +2. 在 XgSysUserMapper 接口中添加了 `selectActiveUserListByAccountType(Integer accountType)` 方法 +3. 在 XgSysUserMapper.xml 中添加了相应的查询实现,增加 account_type = #{accountType} 条件 + +### 变更原因 +需要限制系统用户查询结果,只返回 account_type=1 的用户记录 + +### 变更影响 +该变更不影响其他功能,只是进一步限制了查询结果的范围 + +### 变更人 +Claude AI 辅助开发 \ No newline at end of file diff --git a/docs/开发文档/API/学工管理学生信息管理API.md b/docs/开发文档/API/学工管理学生信息管理API.md index 2864dc8c..bc06bead 100644 --- a/docs/开发文档/API/学工管理学生信息管理API.md +++ b/docs/开发文档/API/学工管理学生信息管理API.md @@ -675,6 +675,51 @@ } ``` +### 2.23 获取部门下拉树结构 +- **接口路径**: GET `/system/user/deptTree` +- **权限标识**: `xg:studentInfo:list` +- **功能描述**: 获取部门下拉树结构数据 +- **更新时间**: 2025-07-24(更新:添加deptId参数) + +#### 请求参数 +| 参数名 | 类型 | 必填 | 说明 | +|--------|------|------|------| +| deptId | integer | 否 | 部门ID,用于筛选特定部门下的数据,默认不传则获取所有部门 | + +#### 响应数据 +```json +{ + "code": 200, + "msg": "查询成功", + "data": [ + { + "id": 101, + "label": "计算机学院", + "children": [ + { + "id": 1001, + "label": "计算机科学与技术专业" + }, + { + "id": 1002, + "label": "软件工程专业" + } + ] + }, + { + "id": 102, + "label": "电子信息学院", + "children": [ + { + "id": 2001, + "label": "电子信息工程专业" + } + ] + } + ] +} +``` + ## 3. 班级信息管理接口 ### 3.1 查询班级信息列表 diff --git a/docs/设计文档/database/hzdyjs_xg.sql b/docs/设计文档/database/hzdyjs_xg.sql index b0ad58ba..f6d22d05 100644 --- a/docs/设计文档/database/hzdyjs_xg.sql +++ b/docs/设计文档/database/hzdyjs_xg.sql @@ -3484,6 +3484,7 @@ CREATE TABLE `sys_user` ( `user_name` varchar(30) NOT NULL COMMENT '用户账号', `nick_name` varchar(30) NOT NULL COMMENT '用户昵称', `user_type` varchar(10) DEFAULT 'sys_user' COMMENT '用户类型(sys_user系统用户)', + `account_type` varchar(255) DEFAULT '1' NULL COMMENT '账户类型 1 - 教职工 2- 学生', `email` varchar(50) DEFAULT '' COMMENT '用户邮箱', `phonenumber` varchar(11) DEFAULT '' COMMENT '手机号码', `sex` char(1) DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)', diff --git a/docs/设计文档/database/sys_region 省市区县表.sql b/docs/设计文档/database/sys_region 省市区县表.sql new file mode 100644 index 00000000..fd5106ba --- /dev/null +++ b/docs/设计文档/database/sys_region 省市区县表.sql @@ -0,0 +1,24 @@ +CREATE TABLE `sys_region` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `code` varchar(20) NOT NULL COMMENT '行政区划编码', + `name` varchar(50) NOT NULL COMMENT '行政区划名称', + `short_name` varchar(30) DEFAULT NULL COMMENT '行政区划简称', + `parent_code` bigint(20) DEFAULT '0' COMMENT '父级行政区划编码,顶级为0', + `level` tinyint(1) NOT NULL COMMENT '层级(1:省,2:市,3:区/县,4:街道/镇)', + `sort` int(11) DEFAULT '0' COMMENT '排序', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `longitude` decimal(10,7) DEFAULT NULL COMMENT '经度', + `latitude` decimal(10,7) DEFAULT NULL COMMENT '纬度', + `create_by` bigint(20) DEFAULT NULL COMMENT '创建者', + `create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` bigint(20) DEFAULT NULL COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除标识(0未删除 1已删除)', + `tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID', + + PRIMARY KEY (`id`), + UNIQUE KEY `idx_region_code` (`code`,`deleted`,`tenant_id`), + KEY `idx_region_parent_id` (`parent_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='行政区划表'; \ No newline at end of file diff --git a/web/src/api/studentMsg/authmsg/index.ts b/web/src/api/studentMsg/authmsg/index.ts new file mode 100644 index 00000000..1b7c30be --- /dev/null +++ b/web/src/api/studentMsg/authmsg/index.ts @@ -0,0 +1,65 @@ +import request from '@/utils/request'; + +// 获取管理员列表 +export function getAdminList(params?: any) { + // 根据不同类型构造不同参数 + return request({ + url: '/studentMsg/admin/list', + method: 'get', + params + }); +} + +// 新增管理员 +export function addAdmin(data: any) { + return request({ + url: '/studentMsg/admin', + method: 'post', + data + }); +} + +// 更新管理员 +export function updateAdmin(data: any) { + return request({ + url: '/studentMsg/admin', + method: 'put', + data + }); +} + +// 删除管理员 +export function deleteAdmin(id: number | string) { + return request({ + url: `/studentMsg/admin/${id}`, + method: 'delete' + }); +} + +// 分配范围 +export function assignScope(params: any, data: any) { + return request({ + url: '/studentMsg/admin/assignScope', + method: 'post', + params, + data + }); +} + +// 获取范围名称 +export function getScopeNames(params: any) { + return request({ + url: '/studentMsg/admin/getScopeNames', + method: 'get', + params + }); +} + +// 获取可分配的范围 +export function getScopeOptions(type: string) { + return request({ + url: '/studentMsg/admin/getScopeOptions', + method: 'get', + params: { type } + }); +} diff --git a/web/src/api/studentMsg/index.ts b/web/src/api/studentMsg/index.ts new file mode 100644 index 00000000..f3855ff3 --- /dev/null +++ b/web/src/api/studentMsg/index.ts @@ -0,0 +1,424 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { StudentQuery, StudentVO, StudentForm, XgDeptTreeVO, R, TableDataInfo } from './types'; + + +/** + * 查询部门下拉树结构 + * @param deptId 部门ID + */ +export const XgDeptTreeSelect = (belongDeptId?: number): AxiosPromise => { + // 实际项目中连接后端接口 + return request({ + url: '/system/user/deptTree', + method: 'get', + params: { + belongDeptId + } + }); + + // // 模拟数据,直接返回与页面组件期望格式一致的数据 + // return Promise.resolve({ + // data: mockDeptTree, + // status: 200, + // statusText: 'OK', + // headers: {}, + // config: {} as any + // }) as any; +}; + + +// 查询学生列表 +export function listStudent(query?: StudentQuery): AxiosPromise>> { + // 实际使用时连接后端接口 + // return request({ + // url: '/studentMsg/student/list', + // method: 'get', + // params: query + // }); + + // 模拟数据 + return Promise.resolve({ + data: { + code: 200, + msg: 'success', + data: { + total: mockStudentData.length, + rows: mockStudentData + } + } + } as any); +} + +// 查询学生详细 +export function getStudent(studentId?: string | number): AxiosPromise> { + if (studentId) { + // 实际使用时连接后端接口 + // return request({ + // url: '/studentMsg/student/' + studentId, + // method: 'get' + // }); + + // 模拟数据 + const student = mockStudentData.find(item => item.studentId === studentId); + return Promise.resolve({ + data: { + code: 200, + msg: 'success', + data: { + student: student || {}, + majors: mockMajors, + classes: mockClasses + } + } + } as any); + } else { + // 新增时返回初始空对象和选项数据 + return Promise.resolve({ + data: { + code: 200, + msg: 'success', + data: { + student: {}, + majors: mockMajors, + classes: mockClasses + } + } + } as any); + } +} + +// 新增学生 +export function addStudent(data: StudentForm): AxiosPromise> { + // 实际使用时连接后端接口 + // return request({ + // url: '/studentMsg/student', + // method: 'post', + // data: data + // }); + + // 模拟数据 + return Promise.resolve({ + data: { + code: 200, + msg: '添加成功' + } + } as any); +} + +// 修改学生 +export function updateStudent(data: StudentForm): AxiosPromise> { + // 实际使用时连接后端接口 + // return request({ + // url: '/studentMsg/student', + // method: 'put', + // data: data + // }); + + // 模拟数据 + return Promise.resolve({ + data: { + code: 200, + msg: '修改成功' + } + } as any); +} + +// 删除学生 +export function delStudent(studentId: string | number | Array): AxiosPromise> { + // 实际使用时连接后端接口 + // return request({ + // url: '/studentMsg/student/' + studentId, + // method: 'delete' + // }); + + // 模拟数据 + return Promise.resolve({ + data: { + code: 200, + msg: '删除成功' + } + } as any); +} + +// 查询院系树结构 +export function deptTreeSelect(): AxiosPromise> { + // 实际使用时连接后端接口 + // return request({ + // url: '/studentMsg/dept/treeselect', + // method: 'get' + // }); + + // 模拟数据 + return Promise.resolve({ + data: { + code: 200, + msg: 'success', + data: mockDeptTree + } + } as any); +} + +// 导出学生 +export function exportStudent(query?: StudentQuery): AxiosPromise { + // 实际使用时连接后端接口 + // return request({ + // url: '/studentMsg/student/export', + // method: 'get', + // params: query + // }); + + // 模拟数据 + return Promise.resolve({ + data: mockStudentData, + status: 200, + statusText: 'OK', + headers: {}, + config: {} as any + }) as any; +} + +// 学生状态修改 +export function changeStudentStatus(studentId: string | number, status: string): AxiosPromise> { + // 实际使用时连接后端接口 + // return request({ + // url: '/studentMsg/student/changeStatus', + // method: 'put', + // data: { + // studentId, + // status + // } + // }); + + // 模拟数据 + return Promise.resolve({ + data: { + code: 200, + msg: '状态修改成功' + } + } as any); +} + +// 模拟数据 - 学生列表 +const mockStudentData: StudentVO[] = [ + { + studentId: 1, + studentNo: '202001001', + studentName: '张三', + nickName: '小张', + sex: '0', + age: 20, + phonenumber: '13800138001', + email: 'zhangsan@example.com', + idCard: '110101200101011234', + deptId: 105, + deptName: '计算机科学与技术系', + majorId: 1, + majorName: '计算机科学与技术', + classId: 101, + className: '计算机2001班', + address: '北京市海淀区', + status: '0', + createTime: '2023-01-01 10:00:00', + remark: '' + }, + { + studentId: 2, + studentNo: '202001002', + studentName: '李四', + nickName: '小李', + sex: '0', + age: 21, + phonenumber: '13800138002', + email: 'lisi@example.com', + idCard: '110101200001011235', + deptId: 105, + deptName: '计算机科学与技术系', + majorId: 1, + majorName: '计算机科学与技术', + classId: 101, + className: '计算机2001班', + address: '上海市浦东新区', + status: '0', + createTime: '2023-01-01 10:10:00', + remark: '' + }, + { + studentId: 3, + studentNo: '202001003', + studentName: '王五', + nickName: '小王', + sex: '0', + age: 19, + phonenumber: '13800138003', + email: 'wangwu@example.com', + idCard: '110101200201011236', + deptId: 106, + deptName: '软件工程系', + majorId: 2, + majorName: '软件工程', + classId: 201, + className: '软工2001班', + address: '广州市天河区', + status: '0', + createTime: '2023-01-02 09:00:00', + remark: '' + }, + { + studentId: 4, + studentNo: '202001004', + studentName: '赵六', + nickName: '小赵', + sex: '1', + age: 20, + phonenumber: '13800138004', + email: 'zhaoliu@example.com', + idCard: '110101200101011237', + deptId: 106, + deptName: '软件工程系', + majorId: 2, + majorName: '软件工程', + classId: 201, + className: '软工2001班', + address: '深圳市南山区', + status: '0', + createTime: '2023-01-02 10:30:00', + remark: '' + }, + { + studentId: 5, + studentNo: '202001005', + studentName: '钱七', + nickName: '小钱', + sex: '1', + age: 21, + phonenumber: '13800138005', + email: 'qianqi@example.com', + idCard: '110101200001011238', + deptId: 107, + deptName: '人工智能系', + majorId: 3, + majorName: '人工智能', + classId: 301, + className: '人工智能2001班', + address: '杭州市西湖区', + status: '1', // 停用状态 + createTime: '2023-01-03 11:20:00', + remark: '休学中' + } +]; + +// 模拟数据 - 院系树 +const mockDeptTree = [ + { + id: 100, + label: '信息学院', + children: [ + { + id: 105, + label: '计算机科学与技术系', + children: [] + }, + { + id: 106, + label: '软件工程系', + children: [] + }, + { + id: 107, + label: '人工智能系', + children: [] + } + ] + }, + { + id: 200, + label: '经济管理学院', + children: [ + { + id: 205, + label: '市场营销系', + children: [] + }, + { + id: 206, + label: '财务管理系', + children: [] + } + ] + } +]; + +// 模拟数据 - 专业 +const mockMajors = [ + { + majorId: 1, + majorName: '计算机科学与技术', + deptId: 105 + }, + { + majorId: 2, + majorName: '软件工程', + deptId: 106 + }, + { + majorId: 3, + majorName: '人工智能', + deptId: 107 + }, + { + majorId: 4, + majorName: '市场营销', + deptId: 205 + }, + { + majorId: 5, + majorName: '财务管理', + deptId: 206 + } +]; + +// 模拟数据 - 班级 +const mockClasses = [ + { + classId: 101, + className: '计算机2001班', + majorId: 1 + }, + { + classId: 102, + className: '计算机2002班', + majorId: 1 + }, + { + classId: 201, + className: '软工2001班', + majorId: 2 + }, + { + classId: 202, + className: '软工2002班', + majorId: 2 + }, + { + classId: 301, + className: '人工智能2001班', + majorId: 3 + }, + { + classId: 401, + className: '市场营销2001班', + majorId: 4 + }, + { + classId: 501, + className: '财务管理2001班', + majorId: 5 + } +]; + +export default { listStudent, getStudent, addStudent, updateStudent, delStudent, deptTreeSelect, exportStudent, changeStudentStatus, XgDeptTreeSelect }; diff --git a/web/src/api/studentMsg/studentMsg/index.ts b/web/src/api/studentMsg/studentMsg/index.ts new file mode 100644 index 00000000..daaf01ae --- /dev/null +++ b/web/src/api/studentMsg/studentMsg/index.ts @@ -0,0 +1,63 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { StudentMsgVO, StudentMsgForm, StudentMsgQuery } from '@/api/studentMsg/studentMsg/types'; + +/** + * 查询学生信息列表 + * @param query + * @returns {*} + */ + +export const listStudentMsg = (query?: StudentMsgQuery): AxiosPromise => { + return request({ + url: '/studentMsg/studentMsg/list', + method: 'get', + params: query + }); +}; + +/** + * 查询学生信息详细 + * @param id + */ +export const getStudentMsg = (id: string | number): AxiosPromise => { + return request({ + url: '/studentMsg/studentMsg/' + id, + method: 'get' + }); +}; + +/** + * 新增学生信息 + * @param data + */ +export const addStudentMsg = (data: StudentMsgForm) => { + return request({ + url: '/studentMsg/studentMsg', + method: 'post', + data: data + }); +}; + +/** + * 修改学生信息 + * @param data + */ +export const updateStudentMsg = (data: StudentMsgForm) => { + return request({ + url: '/studentMsg/studentMsg', + method: 'put', + data: data + }); +}; + +/** + * 删除学生信息 + * @param id + */ +export const delStudentMsg = (id: string | number | Array) => { + return request({ + url: '/studentMsg/studentMsg/' + id, + method: 'delete' + }); +}; diff --git a/web/src/api/studentMsg/studentMsg/types.ts b/web/src/api/studentMsg/studentMsg/types.ts new file mode 100644 index 00000000..61ca72a8 --- /dev/null +++ b/web/src/api/studentMsg/studentMsg/types.ts @@ -0,0 +1,1566 @@ +export interface StudentMsgVO { + /** + * 主键ID(雪花ID) + */ + id: string | number; + + /** + * 删除标志(0代表存在 1代表删除) + */ + deleted: number; + + /** + * 学号 + */ + studentNo: string; + + /** + * 身份证号 + */ + idCard: string | number; + + /** + * 姓名 + */ + name: string; + + /** + * 英文姓名 + */ + nameEnglish: string; + + /** + * 曾用名 + */ + formerName: string; + + /** + * 性别:M-男,F-女 + */ + gender: string; + + /** + * 出生日期 + */ + birthDate: string; + + /** + * 民族 + */ + nationality: string; + + /** + * 籍贯 + */ + nativePlace: string; + + /** + * 政治面貌 + */ + politicalStatus: string; + + /** + * 户籍所在地 + */ + hukouLocation: string; + + /** + * 家庭地址 + */ + homeAddress: string; + + /** + * 现住址 + */ + currentAddress: string; + + /** + * 邮政编码 + */ + postalCode: string; + + /** + * 照片URL + */ + photoUrl: string; + + /** + * 学生照片存储路径 + */ + photoPath: string; + + /** + * 手机号码 + */ + phone: string; + + /** + * 是否住校:0-否,1-是 + */ + isBoarder: number; + + /** + * 文化程度 + */ + educationLevel: string; + + /** + * 户口类型:农业、非农业 + */ + householdRegisterType: string; + + /** + * 宗教信仰 + */ + religion: string; + + /** + * 生源地区(省市县) + */ + sourceRegion: string; + + /** + * 毕业院校 + */ + graduateSchool: string; + + /** + * 电子邮箱 + */ + email: string; + + /** + * QQ号码 + */ + qq: string; + + /** + * 微信号 + */ + wechat: string; + + /** + * 婚姻状况:1 未婚、2 已婚、3 离异、4 丧偶 + */ + maritalStatus: string; + + /** + * 紧急联系人姓名 + */ + emergencyContactName: string; + + /** + * 紧急联系人电话 + */ + emergencyContactPhone: string; + + /** + * 紧急联系人关系 + */ + emergencyContactRelation: string; + + /** + * 是否贫困生:0-否,1-是 + */ + isPoorStudent: number; + + /** + * 是否少数民族:0-否,1-是 + */ + isMinority: number; + + /** + * 是否残疾:0-否,1-是 + */ + isDisabled: number; + + /** + * 是否孤儿:0-否,1-是 + */ + isOrphan: number; + + /** + * 是否留守儿童:0-否,1-是 + */ + isLeftBehindChild: number; + + /** + * 是否独生子女:0-否,1-是 + */ + isSingleChild: number; + + /** + * 是否低保:0-否,1-是 + */ + isLowIncome: number; + + /** + * 是否有助学贷款:0-否,1-是 + */ + hasLoan: number; + + /** + * 助学贷款金额 + */ + loanAmount: number; + + /** + * 特长爱好 + */ + specialties: string; + + /** + * 获奖情况 + */ + awards: string; + + /** + * 违纪记录 + */ + violations: string; + + /** + * 社会活动 + */ + socialActivities: string; + + /** + * 父亲姓名 + */ + fatherName: string; + + /** + * 父亲电话 + */ + fatherPhone: string; + + /** + * 父亲工作单位 + */ + fatherWorkUnit: string; + + /** + * 母亲姓名 + */ + motherName: string; + + /** + * 母亲电话 + */ + motherPhone: string; + + /** + * 母亲工作单位 + */ + motherWorkUnit: string; + + /** + * 监护人姓名 + */ + guardianName: string; + + /** + * 监护人电话 + */ + guardianPhone: string; + + /** + * 监护人关系 + */ + guardianRelation: string; + + /** + * 家庭年收入 + */ + familyIncome: number; + + /** + * 人均收入 + */ + perCapitaIncome: number; + + /** + * 收入来源 + */ + incomeSource: string; + + /** + * 家庭经济状况:富裕、一般、困难、特困 + */ + familyEconomicStatus: string; + + /** + * 家庭成员数量 + */ + familyMembers: number; + + /** + * 身高(cm) + */ + height: number; + + /** + * 体重(kg) + */ + weight: number; + + /** + * 血型 + */ + bloodType: string; + + /** + * 健康状况 + */ + healthStatus: string; + + /** + * 特殊体质或疾病 + */ + specialCondition: string; + + /** + * 病史 + */ + medicalHistory: string; + + /** + * 过敏史 + */ + allergies: string; + + /** + * 残疾类型 1 - 视力残疾 2 - 听力残疾 3 - 智力残疾 9 - 其他残疾 + */ + disabilityType: string; + + /** + * 残疾等级 + */ + disabilityLevel: string; + + /** + * 录取类别:统招、自主招生、专项计划等 + */ + admissionCategory: string; + + /** + * 学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业 + */ + studentStatus: string; + + /** + * 入学年份 + */ + enrollmentYear: number; + + /** + * 入学日期 + */ + enrollmentDate: string; + + /** + * 银行卡号 + */ + bankCardNo: string; + + /** + * 开户银行 + */ + bankName: string; + + /** + * 开户支行 + */ + bankBranch: string; + + /** + * 持卡人姓名 + */ + cardHolderName: string; + + /** + * 信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定 + */ + infoStatus: string; + + /** + * 数据来源:manual-手工录入,import-批量导入,sync-系统同步 + */ + dataSource: string; + + /** + * 最后修改批次ID + */ + lastBatchId: string | number; + + /** + * 最后审核时间 + */ + lastAuditTime: string; + + /** + * 信息是否完整:0-不完整,1-完整 + */ + isComplete: number; + + /** + * 完整度百分比 + */ + completionRate: number; + + /** + * 学制(年)- 预留,数据从班级表关联 + */ + schoolSystem: number; + + /** + * 学历层次 - 预留,数据从班级表关联 + */ + academicLevel: string; + + /** + * 培养方式:全日制、在职、函授、夜大等 - 预留,数据从班级表关联 + */ + trainingType: string; + + /** + * 专业id - 预留,数据从班级表关联 + */ + majorId: string | number; + + /** + * 专业名称 - 预留,数据从班级表关联 + */ + majorName: string; + + /** + * 班级id - 预留,数据从班级表关联 + */ + classId: string | number; + + /** + * 班级名称 - 预留,数据从班级表关联 + */ + className: string; + + /** + * 年级 - 预留,数据从班级表关联 + */ + grade: string; + + /** + * 学院id - 预留,数据从班级表关联 + */ + collegeId: string | number; + + /** + * 学院名称 - 预留,数据从班级表关联 + */ + collegeName: string; + + /** + * 辅导员ID - 预留,数据从班级表关联 + */ + counselorId: string | number; + + /** + * 辅导员姓名 - 预留,数据从班级表关联 + */ + counselorName: string; + + /** + * 班主任ID - 预留,数据从班级表关联 + */ + classTeacherId: string | number; + + /** + * 班主任姓名 - 预留,数据从班级表关联 + */ + classTeacherName: string; + + /** + * 宿舍楼栋 - 预留,数据从班级表关联 + */ + dormitoryBuilding: string; + + /** + * 宿舍房间号 - 预留,数据从班级表关联 + */ + dormitoryRoom: string; + + /** + * 扩展字段1 + */ + extField1: string; + + /** + * 扩展字段2 + */ + extField2: string; + + /** + * 扩展字段3 + */ + extField3: string; + + /** + * 扩展字段4 + */ + extField4: string; + + /** + * 扩展字段5 + */ + extField5: string; + + /** + * 备注信息 + */ + remark: string; + +} + +export interface StudentMsgForm extends BaseEntity { + /** + * 主键ID(雪花ID) + */ + id?: string | number; + + /** + * 删除标志(0代表存在 1代表删除) + */ + deleted?: number; + + /** + * 学号 + */ + studentNo?: string; + + /** + * 身份证号 + */ + idCard?: string | number; + + /** + * 姓名 + */ + name?: string; + + /** + * 英文姓名 + */ + nameEnglish?: string; + + /** + * 曾用名 + */ + formerName?: string; + + /** + * 性别:M-男,F-女 + */ + gender?: string; + + /** + * 出生日期 + */ + birthDate?: string; + + /** + * 民族 + */ + nationality?: string; + + /** + * 籍贯 + */ + nativePlace?: string; + + /** + * 政治面貌 + */ + politicalStatus?: string; + + /** + * 户籍所在地 + */ + hukouLocation?: string; + + /** + * 家庭地址 + */ + homeAddress?: string; + + /** + * 现住址 + */ + currentAddress?: string; + + /** + * 邮政编码 + */ + postalCode?: string; + + /** + * 照片URL + */ + photoUrl?: string; + + /** + * 学生照片存储路径 + */ + photoPath?: string; + + /** + * 手机号码 + */ + phone?: string; + + /** + * 是否住校:0-否,1-是 + */ + isBoarder?: number; + + /** + * 文化程度 + */ + educationLevel?: string; + + /** + * 户口类型:农业、非农业 + */ + householdRegisterType?: string; + + /** + * 宗教信仰 + */ + religion?: string; + + /** + * 生源地区(省市县) + */ + sourceRegion?: string; + + /** + * 毕业院校 + */ + graduateSchool?: string; + + /** + * 电子邮箱 + */ + email?: string; + + /** + * QQ号码 + */ + qq?: string; + + /** + * 微信号 + */ + wechat?: string; + + /** + * 婚姻状况:1 未婚、2 已婚、3 离异、4 丧偶 + */ + maritalStatus?: string; + + /** + * 紧急联系人姓名 + */ + emergencyContactName?: string; + + /** + * 紧急联系人电话 + */ + emergencyContactPhone?: string; + + /** + * 紧急联系人关系 + */ + emergencyContactRelation?: string; + + /** + * 是否贫困生:0-否,1-是 + */ + isPoorStudent?: number; + + /** + * 是否少数民族:0-否,1-是 + */ + isMinority?: number; + + /** + * 是否残疾:0-否,1-是 + */ + isDisabled?: number; + + /** + * 是否孤儿:0-否,1-是 + */ + isOrphan?: number; + + /** + * 是否留守儿童:0-否,1-是 + */ + isLeftBehindChild?: number; + + /** + * 是否独生子女:0-否,1-是 + */ + isSingleChild?: number; + + /** + * 是否低保:0-否,1-是 + */ + isLowIncome?: number; + + /** + * 是否有助学贷款:0-否,1-是 + */ + hasLoan?: number; + + /** + * 助学贷款金额 + */ + loanAmount?: number; + + /** + * 特长爱好 + */ + specialties?: string; + + /** + * 获奖情况 + */ + awards?: string; + + /** + * 违纪记录 + */ + violations?: string; + + /** + * 社会活动 + */ + socialActivities?: string; + + /** + * 父亲姓名 + */ + fatherName?: string; + + /** + * 父亲电话 + */ + fatherPhone?: string; + + /** + * 父亲工作单位 + */ + fatherWorkUnit?: string; + + /** + * 母亲姓名 + */ + motherName?: string; + + /** + * 母亲电话 + */ + motherPhone?: string; + + /** + * 母亲工作单位 + */ + motherWorkUnit?: string; + + /** + * 监护人姓名 + */ + guardianName?: string; + + /** + * 监护人电话 + */ + guardianPhone?: string; + + /** + * 监护人关系 + */ + guardianRelation?: string; + + /** + * 家庭年收入 + */ + familyIncome?: number; + + /** + * 人均收入 + */ + perCapitaIncome?: number; + + /** + * 收入来源 + */ + incomeSource?: string; + + /** + * 家庭经济状况:富裕、一般、困难、特困 + */ + familyEconomicStatus?: string; + + /** + * 家庭成员数量 + */ + familyMembers?: number; + + /** + * 身高(cm) + */ + height?: number; + + /** + * 体重(kg) + */ + weight?: number; + + /** + * 血型 + */ + bloodType?: string; + + /** + * 健康状况 + */ + healthStatus?: string; + + /** + * 特殊体质或疾病 + */ + specialCondition?: string; + + /** + * 病史 + */ + medicalHistory?: string; + + /** + * 过敏史 + */ + allergies?: string; + + /** + * 残疾类型 1 - 视力残疾 2 - 听力残疾 3 - 智力残疾 9 - 其他残疾 + */ + disabilityType?: string; + + /** + * 残疾等级 + */ + disabilityLevel?: string; + + /** + * 录取类别:统招、自主招生、专项计划等 + */ + admissionCategory?: string; + + /** + * 学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业 + */ + studentStatus?: string; + + /** + * 入学年份 + */ + enrollmentYear?: number; + + /** + * 入学日期 + */ + enrollmentDate?: string; + + /** + * 银行卡号 + */ + bankCardNo?: string; + + /** + * 开户银行 + */ + bankName?: string; + + /** + * 开户支行 + */ + bankBranch?: string; + + /** + * 持卡人姓名 + */ + cardHolderName?: string; + + /** + * 信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定 + */ + infoStatus?: string; + + /** + * 数据来源:manual-手工录入,import-批量导入,sync-系统同步 + */ + dataSource?: string; + + /** + * 最后修改批次ID + */ + lastBatchId?: string | number; + + /** + * 最后审核时间 + */ + lastAuditTime?: string; + + /** + * 信息是否完整:0-不完整,1-完整 + */ + isComplete?: number; + + /** + * 完整度百分比 + */ + completionRate?: number; + + /** + * 学制(年)- 预留,数据从班级表关联 + */ + schoolSystem?: number; + + /** + * 学历层次 - 预留,数据从班级表关联 + */ + academicLevel?: string; + + /** + * 培养方式:全日制、在职、函授、夜大等 - 预留,数据从班级表关联 + */ + trainingType?: string; + + /** + * 专业id - 预留,数据从班级表关联 + */ + majorId?: string | number; + + /** + * 专业名称 - 预留,数据从班级表关联 + */ + majorName?: string; + + /** + * 班级id - 预留,数据从班级表关联 + */ + classId?: string | number; + + /** + * 班级名称 - 预留,数据从班级表关联 + */ + className?: string; + + /** + * 年级 - 预留,数据从班级表关联 + */ + grade?: string; + + /** + * 学院id - 预留,数据从班级表关联 + */ + collegeId?: string | number; + + /** + * 学院名称 - 预留,数据从班级表关联 + */ + collegeName?: string; + + /** + * 辅导员ID - 预留,数据从班级表关联 + */ + counselorId?: string | number; + + /** + * 辅导员姓名 - 预留,数据从班级表关联 + */ + counselorName?: string; + + /** + * 班主任ID - 预留,数据从班级表关联 + */ + classTeacherId?: string | number; + + /** + * 班主任姓名 - 预留,数据从班级表关联 + */ + classTeacherName?: string; + + /** + * 宿舍楼栋 - 预留,数据从班级表关联 + */ + dormitoryBuilding?: string; + + /** + * 宿舍房间号 - 预留,数据从班级表关联 + */ + dormitoryRoom?: string; + + /** + * 扩展字段1 + */ + extField1?: string; + + /** + * 扩展字段2 + */ + extField2?: string; + + /** + * 扩展字段3 + */ + extField3?: string; + + /** + * 扩展字段4 + */ + extField4?: string; + + /** + * 扩展字段5 + */ + extField5?: string; + + /** + * 备注信息 + */ + remark?: string; + +} + +export interface StudentMsgQuery extends PageQuery { + + /** + * 删除标志(0代表存在 1代表删除) + */ + deleted?: number; + + /** + * 学号 + */ + studentNo?: string; + + /** + * 身份证号 + */ + idCard?: string | number; + + /** + * 姓名 + */ + name?: string; + + /** + * 英文姓名 + */ + nameEnglish?: string; + + /** + * 曾用名 + */ + formerName?: string; + + /** + * 性别:M-男,F-女 + */ + gender?: string; + + /** + * 出生日期 + */ + birthDate?: string; + + /** + * 民族 + */ + nationality?: string; + + /** + * 籍贯 + */ + nativePlace?: string; + + /** + * 政治面貌 + */ + politicalStatus?: string; + + /** + * 户籍所在地 + */ + hukouLocation?: string; + + /** + * 家庭地址 + */ + homeAddress?: string; + + /** + * 现住址 + */ + currentAddress?: string; + + /** + * 邮政编码 + */ + postalCode?: string; + + /** + * 照片URL + */ + photoUrl?: string; + + /** + * 学生照片存储路径 + */ + photoPath?: string; + + /** + * 手机号码 + */ + phone?: string; + + /** + * 是否住校:0-否,1-是 + */ + isBoarder?: number; + + /** + * 文化程度 + */ + educationLevel?: string; + + /** + * 户口类型:农业、非农业 + */ + householdRegisterType?: string; + + /** + * 宗教信仰 + */ + religion?: string; + + /** + * 生源地区(省市县) + */ + sourceRegion?: string; + + /** + * 毕业院校 + */ + graduateSchool?: string; + + /** + * 电子邮箱 + */ + email?: string; + + /** + * QQ号码 + */ + qq?: string; + + /** + * 微信号 + */ + wechat?: string; + + /** + * 婚姻状况:1 未婚、2 已婚、3 离异、4 丧偶 + */ + maritalStatus?: string; + + /** + * 紧急联系人姓名 + */ + emergencyContactName?: string; + + /** + * 紧急联系人电话 + */ + emergencyContactPhone?: string; + + /** + * 紧急联系人关系 + */ + emergencyContactRelation?: string; + + /** + * 是否贫困生:0-否,1-是 + */ + isPoorStudent?: number; + + /** + * 是否少数民族:0-否,1-是 + */ + isMinority?: number; + + /** + * 是否残疾:0-否,1-是 + */ + isDisabled?: number; + + /** + * 是否孤儿:0-否,1-是 + */ + isOrphan?: number; + + /** + * 是否留守儿童:0-否,1-是 + */ + isLeftBehindChild?: number; + + /** + * 是否独生子女:0-否,1-是 + */ + isSingleChild?: number; + + /** + * 是否低保:0-否,1-是 + */ + isLowIncome?: number; + + /** + * 是否有助学贷款:0-否,1-是 + */ + hasLoan?: number; + + /** + * 助学贷款金额 + */ + loanAmount?: number; + + /** + * 特长爱好 + */ + specialties?: string; + + /** + * 获奖情况 + */ + awards?: string; + + /** + * 违纪记录 + */ + violations?: string; + + /** + * 社会活动 + */ + socialActivities?: string; + + /** + * 父亲姓名 + */ + fatherName?: string; + + /** + * 父亲电话 + */ + fatherPhone?: string; + + /** + * 父亲工作单位 + */ + fatherWorkUnit?: string; + + /** + * 母亲姓名 + */ + motherName?: string; + + /** + * 母亲电话 + */ + motherPhone?: string; + + /** + * 母亲工作单位 + */ + motherWorkUnit?: string; + + /** + * 监护人姓名 + */ + guardianName?: string; + + /** + * 监护人电话 + */ + guardianPhone?: string; + + /** + * 监护人关系 + */ + guardianRelation?: string; + + /** + * 家庭年收入 + */ + familyIncome?: number; + + /** + * 人均收入 + */ + perCapitaIncome?: number; + + /** + * 收入来源 + */ + incomeSource?: string; + + /** + * 家庭经济状况:富裕、一般、困难、特困 + */ + familyEconomicStatus?: string; + + /** + * 家庭成员数量 + */ + familyMembers?: number; + + /** + * 身高(cm) + */ + height?: number; + + /** + * 体重(kg) + */ + weight?: number; + + /** + * 血型 + */ + bloodType?: string; + + /** + * 健康状况 + */ + healthStatus?: string; + + /** + * 特殊体质或疾病 + */ + specialCondition?: string; + + /** + * 病史 + */ + medicalHistory?: string; + + /** + * 过敏史 + */ + allergies?: string; + + /** + * 残疾类型 1 - 视力残疾 2 - 听力残疾 3 - 智力残疾 9 - 其他残疾 + */ + disabilityType?: string; + + /** + * 残疾等级 + */ + disabilityLevel?: string; + + /** + * 录取类别:统招、自主招生、专项计划等 + */ + admissionCategory?: string; + + /** + * 学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业 + */ + studentStatus?: string; + + /** + * 入学年份 + */ + enrollmentYear?: number; + + /** + * 入学日期 + */ + enrollmentDate?: string; + + /** + * 银行卡号 + */ + bankCardNo?: string; + + /** + * 开户银行 + */ + bankName?: string; + + /** + * 开户支行 + */ + bankBranch?: string; + + /** + * 持卡人姓名 + */ + cardHolderName?: string; + + /** + * 信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定 + */ + infoStatus?: string; + + /** + * 数据来源:manual-手工录入,import-批量导入,sync-系统同步 + */ + dataSource?: string; + + /** + * 最后修改批次ID + */ + lastBatchId?: string | number; + + /** + * 最后审核时间 + */ + lastAuditTime?: string; + + /** + * 信息是否完整:0-不完整,1-完整 + */ + isComplete?: number; + + /** + * 完整度百分比 + */ + completionRate?: number; + + /** + * 学制(年)- 预留,数据从班级表关联 + */ + schoolSystem?: number; + + /** + * 学历层次 - 预留,数据从班级表关联 + */ + academicLevel?: string; + + /** + * 培养方式:全日制、在职、函授、夜大等 - 预留,数据从班级表关联 + */ + trainingType?: string; + + /** + * 专业id - 预留,数据从班级表关联 + */ + majorId?: string | number; + + /** + * 专业名称 - 预留,数据从班级表关联 + */ + majorName?: string; + + /** + * 班级id - 预留,数据从班级表关联 + */ + classId?: string | number; + + /** + * 班级名称 - 预留,数据从班级表关联 + */ + className?: string; + + /** + * 年级 - 预留,数据从班级表关联 + */ + grade?: string; + + /** + * 学院id - 预留,数据从班级表关联 + */ + collegeId?: string | number; + + /** + * 学院名称 - 预留,数据从班级表关联 + */ + collegeName?: string; + + /** + * 辅导员ID - 预留,数据从班级表关联 + */ + counselorId?: string | number; + + /** + * 辅导员姓名 - 预留,数据从班级表关联 + */ + counselorName?: string; + + /** + * 班主任ID - 预留,数据从班级表关联 + */ + classTeacherId?: string | number; + + /** + * 班主任姓名 - 预留,数据从班级表关联 + */ + classTeacherName?: string; + + /** + * 宿舍楼栋 - 预留,数据从班级表关联 + */ + dormitoryBuilding?: string; + + /** + * 宿舍房间号 - 预留,数据从班级表关联 + */ + dormitoryRoom?: string; + + /** + * 扩展字段1 + */ + extField1?: string; + + /** + * 扩展字段2 + */ + extField2?: string; + + /** + * 扩展字段3 + */ + extField3?: string; + + /** + * 扩展字段4 + */ + extField4?: string; + + /** + * 扩展字段5 + */ + extField5?: string; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/web/src/api/studentMsg/types.ts b/web/src/api/studentMsg/types.ts new file mode 100644 index 00000000..7c0a8245 --- /dev/null +++ b/web/src/api/studentMsg/types.ts @@ -0,0 +1,80 @@ +/** + * 部门树结构 + */ +export interface XgDeptTreeVO extends BaseEntity { + id: number | string; + label: string; + parentId: number | string; + weight: number; + children: XgDeptTreeVO[]; + disabled: boolean; +} + +// 学生查询参数 +export interface StudentQuery { + pageNum: number; + pageSize: number; + studentName?: string; + studentNo?: string; + phonenumber?: string; + status?: string; + deptId?: number; +} + +// 学生视图对象 +export interface StudentVO { + studentId: number | string; + studentNo: string; + studentName: string; + nickName?: string; + sex?: string; + age?: number; + phonenumber?: string; + email?: string; + idCard?: string; + deptId?: number; + deptName?: string; + majorId?: number; + majorName?: string; + classId?: number; + className?: string; + address?: string; + status?: string; + createBy?: number; + createTime?: string; + updateBy?: number; + updateTime?: string; + remark?: string; +} + +// 学生表单对象 +export interface StudentForm { + studentId?: number | string; + deptId?: number; + studentNo: string; + studentName: string; + nickName?: string; + password?: string; + phonenumber?: string; + email?: string; + idCard?: string; + sex?: string; + status?: string; + majorId?: number; + classId?: number; + address?: string; + remark?: string; +} + +// 统一响应类型 +export interface R { + code: number; + msg: string; + data: T; +} + +// 表格数据信息类型 +export interface TableDataInfo { + total: number; + rows: T; +} diff --git a/web/src/views/studentMsg/authmsg/components/AdminDialog.vue b/web/src/views/studentMsg/authmsg/components/AdminDialog.vue new file mode 100644 index 00000000..1b499ad6 --- /dev/null +++ b/web/src/views/studentMsg/authmsg/components/AdminDialog.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/web/src/views/studentMsg/authmsg/components/ScopeDialog.vue b/web/src/views/studentMsg/authmsg/components/ScopeDialog.vue new file mode 100644 index 00000000..da169ece --- /dev/null +++ b/web/src/views/studentMsg/authmsg/components/ScopeDialog.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/web/src/views/studentMsg/authmsg/index.vue b/web/src/views/studentMsg/authmsg/index.vue new file mode 100644 index 00000000..5e4acf23 --- /dev/null +++ b/web/src/views/studentMsg/authmsg/index.vue @@ -0,0 +1,391 @@ + + + + + diff --git a/web/src/views/studentMsg/studentMsg/index.vue b/web/src/views/studentMsg/studentMsg/index.vue new file mode 100644 index 00000000..5583c02b --- /dev/null +++ b/web/src/views/studentMsg/studentMsg/index.vue @@ -0,0 +1,713 @@ + + +