using System; using System.Collections.Generic; namespace mxdemo.Mind { #region model public class ElectiveSetting { //"selectResult": { // "params": {}, // "roundId": 8, // "schoolId": 1, // "year": 2021, // "name": "第三次", // "beginTime": "2022-02-16", // "endTime": "2022-02-17", // "groupIds": "1,2,3,10,11,12", public int preferenceCount; // 选填志愿数量 // "groupList": [ // { // "params": {}, // "groupId": 1, // "mask": 448, // "name": "物化生", // "rank": 1 // }, // { // "params": { }, // "groupId": 2, // "mask": 416, // "name": "物化政", // "rank": 2 // }, // { // "params": { }, // "groupId": 3, // "mask": 400, // "name": "物化地", // "rank": 3 // }, // { // "params": { }, // "groupId": 10, // "mask": 56, // "name": "历政地", // "rank": 10 // }, // { // "params": { }, // "groupId": 11, // "mask": 104, // "name": "历政生", // "rank": 11 // }, // { // "params": { }, // "groupId": 12, // "mask": 88, // "name": "历生地", // "rank": 12 // } // ], // "state": "1" //}, //"allowSelect": false } // 学生这里无论什么时间得到的都是最终结果,不需要中间快照,以此区分校长的选科数据。 // 校长的选科数据,初选时与学生相同;补录时也需要这份数据、但也需要初选与补录的差异部分;排名均衡同理 public class ElectiveSelectModel { public int groupId; // 组合 public string groupName; // 名称 public int classCount; // 班级数 public int personCount; // 限制人数 public int personInTime; // 实时人数 public int rankInGroup; // 选科实时排名 public int rankInGrade; // 选科全校排名 public bool allowSelect; // 是否可以报名 public string disabledReason; // 不可报名时的原因 public bool selected; // 已报名 public int selectedRank; // 多志愿时的排序 } // 自选专业 public class ElectiveOptionalMajor { public int collegeId; public string collegeName; // 可能还包含院校的一些其它属性 public string majorCategoryCode; public string majorCategoryName; public Dictionary majors; public string limitationA; // 选科限制1 public string limitationB; // 选科限制2 public List matchedGroupIds; // 匹配的组合 } #endregion // 本期会涉及很多隐藏需求,前端会去back-ui按页面+按功能设置很多按钮功能,后续配置为权限组来操作 // 本期后台输出数据的时候不需要按权限屏蔽数据,全量输出即可,以减少后端开发的工作量 // 因为本期要控制隐藏的内容比功能入口、API入口要更精细的粒度,可能是列表的某几列,可能是某些按钮,如果严格API数据规范可能会增加海量的工作。 public interface IPrimaryElectiveService { // 旧接口getStudentSelected,返回内容+preferenceCount,志愿数 ElectiveSetting getStudentSelected(); // 学生获取选科状态数据,得到是每个组合最终状态和结果 List getPrimaryElectives(); // 学生获取自选专业及匹配情况 List getOptionalMajors(); // 初选报名。这里简化原型里的操作,直接提交,如需排序,调sortElectiveSelected接口,并刷新getPrimaryElectivesx void submitPrimaryElective(ElectiveSelectModel model); // 调整排序。这里简化原型里的操作,并刷新getPrimaryElectives void sortPrimaryElective(ElectiveSelectModel model); // 取消报名 void cancelPrimaryElective(ElectiveSelectModel model); } }