diff --git a/pom.xml b/pom.xml
index 9d0f048..4a3c5ff 100644
--- a/pom.xml
+++ b/pom.xml
@@ -241,7 +241,11 @@
-
+
+ com.belerweb
+ pinyin4j
+ 2.5.0
+
diff --git a/src/main/java/com/sztzjy/linkCommerce/config/Constant.java b/src/main/java/com/sztzjy/linkCommerce/config/Constant.java
index 492d7c6..8241226 100644
--- a/src/main/java/com/sztzjy/linkCommerce/config/Constant.java
+++ b/src/main/java/com/sztzjy/linkCommerce/config/Constant.java
@@ -16,46 +16,14 @@ public class Constant {
*/
public static final String BASIC = "Basic";
-
- public static final String[] MODULES={"数字贸易概论","数字贸易标准和规则","数字贸易法律法规","数字贸易知识产权保护","数字贸易技术","数字产品物流","数字贸易金融",
- "数字产品贸易","数字技术贸易","数字服务贸易","数据贸易","数字贸易营销","aigc数字运营"};
-
- public static final String[] PROJECTS={"项目一","项目二","项目三","项目四","项目五","项目六","项目七",
- "项目八","项目九","项目十","项目十","项目十二","项目十三"};
-
- public static final String PRO_XXSC="学习时长";
- public static final String PRO_ZYXX="资源学习";
- public static final String PRO_XXCP="学习测评";
- public static final String PRO_SYSX="实验实训";
- public static final String PRO_SXBG="实训报告";
-
- public static final String DANDUGOUMAI = "单独购买";
- public static final String PINDUANGOUMAI = "我要开团";
-
- public static final String COMMENT_NUMBER="评论数";
-
- public static final String BROWSE_NUMBER="被浏览数";
-
- public static final String ZSGY_TCHMODULE = "学习时长";
- public static final String ZYXX_TCHMODULE = "资源学习";
- public static final String XXCP_TCHMODULE = "学习测评";
- public static final String SYSX_TCHMODULE = "实验实训";
- public static final String SYBG_TCHMODULE = "实验报告";
-
-
- public static final String PRO_XXMB="学习目标";
- public static final String PRO_LLZS="理论知识";
- public static final String PRO_RWZJ="任务总结";
- public static final String PRO_KHTS="课后提升";
-
-
- public static final String CODE = "code";
- public static final String IP = "ip";
- public static final String END = "END";
- public static final String READY = "READY";
-
-
- public static final String MANUAL = "manual";
+ public static final String PRO_GYQDGL="供应渠道管理";
+ public static final String MODULE_CGXQYC="采购需求预测";
+ public static final String MODULE_CGCPDW="采购产品定位";
+ public static final String MODULE_GYSPGYXZ="供应商评估与选择";
+ public static final String PRO_CPPGYKH="产品评估与考核";
+ public static final String MODULE_CPBXFX="产品表现分析";
+ public static final String MODULE_CPWTZD="产品问题诊断";
+ public static final String MODULE_PNJGYH="品类结构优化";
public static final String YONGHUSHUXINGBIAO= "客户细分数据表";
diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/CgxqycController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/CgxqycController.java
new file mode 100644
index 0000000..1c954f5
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/CgxqycController.java
@@ -0,0 +1,114 @@
+package com.sztzjy.linkCommerce.controller.stu;
+
+import com.sztzjy.linkCommerce.annotation.AnonymousAccess;
+import com.sztzjy.linkCommerce.config.Constant;
+import com.sztzjy.linkCommerce.entity.*;
+import com.sztzjy.linkCommerce.mapper.CgxqycAnswerMapper;
+import com.sztzjy.linkCommerce.mapper.CgxqycStuAnswerMapper;
+import com.sztzjy.linkCommerce.mapper.StuGradeMapper;
+import com.sztzjy.linkCommerce.util.ResultEntity;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Api(tags = "采购需求预测相关")
+@RequestMapping("api/cgxqyc")
+@RestController
+public class CgxqycController {
+ @Autowired
+ CgxqycStuAnswerMapper cgxqycStuAnswerMapper;
+ @Autowired
+ CgxqycAnswerMapper cgxqycAnswerMapper;
+ @Autowired
+ StuGradeMapper stuGradeMapper;
+
+ @PostMapping("/selectCgxqycAnswer")
+ @ApiOperation("采购需求预测-回显")
+ @AnonymousAccess
+ public ResultEntity selectCgxqycAnswer(@RequestParam String userId) {
+ CgxqycStuAnswerExample cgxqycStuAnswerExample = new CgxqycStuAnswerExample();
+ cgxqycStuAnswerExample.createCriteria().andUserIdEqualTo(userId);
+ List cgxqycStuAnswerList = cgxqycStuAnswerMapper.selectByExample(cgxqycStuAnswerExample);
+ if (cgxqycStuAnswerList == null || cgxqycStuAnswerList.isEmpty()) {
+ return new ResultEntity<>(HttpStatus.OK, "未提交");
+ } else {
+ return new ResultEntity<>(HttpStatus.OK, "采购需求预测-回显", cgxqycStuAnswerList.get(0));
+ }
+ }
+
+// @PostMapping("/commitCgxqycAnswer")
+// @ApiOperation("采购需求预测-提交")
+// @AnonymousAccess
+// public ResultEntity commitCgxqycAnswer(@RequestBody CgxqycStuAnswer cgxqycStuAnswer, @RequestParam String userId) {
+// CgxqycAnswer cgxqycAnswer = cgxqycAnswerMapper.selectByExample(new CgxqycAnswerExample()).get(0);
+// String monthlyDataStu = cgxqycStuAnswer.getMonthlyData();
+// String monthlyData = cgxqycAnswer.getMonthlyData();
+// int monthlyDataErrorCount = compareLists(monthlyDataStu, monthlyData).errorCount;
+// String seasonalIndexStu = cgxqycStuAnswer.getSeasonalIndex();
+// String seasonalIndex = cgxqycAnswer.getSeasonalIndex();
+// int seasonalIndexErrorCount = compareLists(seasonalIndexStu, seasonalIndex).errorCount;
+// String demandForecastStu = cgxqycStuAnswer.getDemandForecast();
+// String demandForecast = cgxqycAnswer.getDemandForecast();
+// int demandForecastErrorCount = compareLists(demandForecastStu, demandForecast).errorCount;
+// int errorCount = monthlyDataErrorCount + seasonalIndexErrorCount + demandForecastErrorCount;
+// //先查询是否提交过
+// StuGradeExample stuGradeExample = new StuGradeExample();
+// stuGradeExample.createCriteria().andUserIdEqualTo(userId).andProjectEqualTo(Constant.PRO_GYQDGL).andModuleEqualTo(Constant.MODULE_CGXQYC);
+// List stuGradeList = stuGradeMapper.selectByExample(stuGradeExample);
+// if (stuGradeList.isEmpty() || stuGradeList == null) {
+// //新建学生成绩
+//// stuGradeMapper.insert()
+// } else {
+// return new ResultEntity<>(HttpStatus.BAD_REQUEST, "已提交过");
+// }
+//
+// }
+
+
+ public Result compareLists(String stulist, String answerList) {
+ // 将字符串分割成数组
+ String[] submitted = stulist.split(",");
+ String[] answers = answerList.split(",");
+
+ int errorCount = 0; // 错误数量
+ List errorPositions = new ArrayList<>(); // 错误位置
+
+ // 获取较长数组的长度
+ int maxLength = Math.max(submitted.length, answers.length);
+
+ // 遍历较长的数组
+ for (int i = 0; i < maxLength; i++) {
+ String submittedValue = (i < submitted.length) ? submitted[i] : null;
+ String answerValue = (i < answers.length) ? answers[i] : null;
+
+ // 检查对应位置是否相同
+ if (!equals(submittedValue, answerValue)) {
+ errorCount++;
+ errorPositions.add(i + 1); // +1 使位置从 1 开始
+ }
+ }
+
+ return new Result(errorCount, errorPositions);
+ }
+
+ // 自定义 equals 方法处理 null 和空字符串的场景
+ public static boolean equals(String a, String b) {
+ return (a == null ? b == null : a.equals(b));
+ }
+
+ // 内部类用来保存比较结果
+ static class Result {
+ int errorCount;
+ List errorPositions;
+
+ Result(int errorCount, List errorPositions) {
+ this.errorCount = errorCount;
+ this.errorPositions = errorPositions;
+ }
+ }
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/UserController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/UserController.java
index 0f2ef5f..acef749 100644
--- a/src/main/java/com/sztzjy/linkCommerce/controller/stu/UserController.java
+++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/UserController.java
@@ -2,39 +2,36 @@ package com.sztzjy.linkCommerce.controller.stu;
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.util.IdUtil;
+
+import com.alibaba.excel.EasyExcel;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
import com.sztzjy.linkCommerce.annotation.AnonymousAccess;
-import com.sztzjy.linkCommerce.annotation.OperateLog;
-import com.sztzjy.linkCommerce.config.exception.UnAuthorizedException;
-import com.sztzjy.linkCommerce.config.security.JwtUser;
-import com.sztzjy.linkCommerce.config.security.LoginResult;
-import com.sztzjy.linkCommerce.config.security.TokenProvider;
-import com.sztzjy.linkCommerce.entity.StuUser;
-import com.sztzjy.linkCommerce.entity.StuUserExample;
-import com.sztzjy.linkCommerce.entity.ZYUserInfo;
-import com.sztzjy.linkCommerce.mapper.StuUserMapper;
-import com.sztzjy.linkCommerce.service.StuUserService;
+import com.sztzjy.linkCommerce.entity.*;
+import com.sztzjy.linkCommerce.entity.dto.SchoolClassDto;
+import com.sztzjy.linkCommerce.entity.dto.SchoolFacultyDto;
+import com.sztzjy.linkCommerce.entity.dto.SchoolMajorDto;
+import com.sztzjy.linkCommerce.entity.importDto.StudentImportDTO;
+import com.sztzjy.linkCommerce.entity.importDto.TeacherImportDTO;
+import com.sztzjy.linkCommerce.mapper.*;
+import com.sztzjy.linkCommerce.service.ImportService;
+import com.sztzjy.linkCommerce.service.SchoolService;
+import com.sztzjy.linkCommerce.service.UserInfoService;
+import com.sztzjy.linkCommerce.service.ValidateService;
import com.sztzjy.linkCommerce.util.*;
+import com.sztzjy.linkCommerce.util.excel.FilePortUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
+import java.io.InputStream;
import java.util.*;
@@ -42,297 +39,816 @@ import java.util.*;
@RequestMapping("api/user")
@RestController
public class UserController {
+ @Autowired
+ SchoolService schoolService;
+ @Autowired
+ SchoolMapper schoolMapper;
+ @Autowired
+ UserinfoMapper userinfoMapper;
+ @Autowired
+ SchoolMajorMapper schoolMajorMapper;
+ @Autowired
+ SchoolClassMapper schoolClassMapper;
+ @Autowired
+ Pinyin4jUtil pinyin4jUtil;
+ @Autowired
+ UserInfoService userInfoService;
+ @Autowired
+ ValidateService validateService;
+ @Autowired
+ ImportService importService;
- @Resource
- private StuUserService stuUserService;
- @Resource
- private HttpServletRequest request;
- @Autowired
- private StuUserMapper userMapper;
- @Resource
- private AuthenticationManagerBuilder authenticationManagerBuilder;
+ @PostMapping("/addSchool")
+ @ApiOperation("院校管理-院校新增")
+ @AnonymousAccess
+ public ResultEntity addSchool(@RequestBody School school) {
+ //参数校验
+ if (org.apache.commons.lang3.StringUtils.isBlank(school.getSchoolName())) {
+ return new ResultEntity<>(HttpStatus.ACCEPTED, "院校名称不能为空");
+ }
+ if (org.apache.commons.lang3.StringUtils.isBlank(school.getSchoolGrade())) {
+ return new ResultEntity<>(HttpStatus.ACCEPTED, "院校层次不能为空");
+ }
+ if (org.apache.commons.lang3.StringUtils.isBlank(school.getSchoolProvince())) {
+ return new ResultEntity<>(HttpStatus.ACCEPTED, "所属省不能为空");
+ }
+ if (org.apache.commons.lang3.StringUtils.isBlank(school.getSchoolCity())) {
+ return new ResultEntity<>(HttpStatus.ACCEPTED, "所属城市不能为空");
+ }
+ if (org.apache.commons.lang3.StringUtils.isBlank(school.getSchoolContacts())) {
+ return new ResultEntity<>(HttpStatus.ACCEPTED, "院校联系人不能为空");
+ }
+ Integer result = schoolService.addSchool(school);
+ if (result > 0) {
+ return new ResultEntity<>(HttpStatus.OK, "新增成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "新增失败");
+ }
+ }
- @Autowired
- private RedisUtil redisUtil;
+ @PostMapping("/updateSchool")
+ @ApiOperation("院校管理-院校编辑")
+ @AnonymousAccess
+ public ResultEntity updateSchool(@RequestBody School school) {
+ Integer result = schoolService.updateSchool(school);
+ if (result > 0) {
+ return new ResultEntity<>(HttpStatus.OK, "编辑成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.ACCEPTED, "编辑失败");
+ }
+ }
+ @GetMapping("/deleteSchool")
+ @ApiOperation("院校管理-院校删除")
+ public ResultEntity deleteSchool(String schoolId) {
-// @Value("${item.name}")
-// String itemName;
+ Integer result = schoolService.deleteSchool(schoolId);
+ if (result > 0) {
+ return new ResultEntity<>(HttpStatus.OK, "删除成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.ACCEPTED, "删除失败");
+ }
+ }
+
+ @GetMapping("/getSchoolList")
+ @ApiOperation("院校管理-院校列表查询")
+ @AnonymousAccess
+ public ResultEntity> getSchoolList(@ApiParam("当前页") Integer index,
+ @ApiParam("每页条数") Integer size,
+ @ApiParam("院校名称") @RequestParam(required = false) String schoolName) {
+
+ PageHelper.startPage(index, size);
+ SchoolExample schoolExample=new SchoolExample();
+ SchoolExample.Criteria criteria = schoolExample.createCriteria();
+
+ if(StringUtils.isNotEmpty(schoolName)){
+ criteria.andSchoolNameLike("%"+schoolName+"%");
+ }
+ List schools = schoolMapper.selectByExample(schoolExample);
+ PageInfo schoolPageInfo = new PageInfo<>(schools);
+ return new ResultEntity<>(HttpStatus.OK, "院校列表查询-查询成功", schoolPageInfo);
+ }
+
+
+ //*****************************************院系管理*********************************************
+ //*****************************************院系管理*********************************************
+ //*****************************************院系管理*********************************************
@Autowired
- private StuUserMapper stuUserMapper;
+ SchoolFacultyMapper schoolFacultyMapper;
+ @PostMapping("/addSchoolFaculty")
+ @ApiOperation("院系管理-添加院系")
+ @AnonymousAccess
+ public ResultEntity addSchoolFaculty(@ApiParam("学校ID") @RequestParam String schoolId,
+ @ApiParam("院系名称") @RequestParam String schoolFacultyName,
+ @ApiParam("联系人") @RequestParam(required = false) String schoolFacultyContact,
+ @ApiParam("联系人电话") @RequestParam(required = false) String schoolFacultyContactTel,
+ @ApiParam("联系人地址") @RequestParam(required = false) String schoolFacultyContactAddress) {
+ //先根据schoolId进行查询 如果不存在则返回
+ School school = schoolMapper.selectByPrimaryKey(schoolId);
+ if (school == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该学校不存在");
+ }
+ //查询该学校下院系下 专业名称是否重复
+ SchoolFacultyExample schoolFacultyExample = new SchoolFacultyExample();
+ schoolFacultyExample.createCriteria().andSchoolIdEqualTo(schoolId).andSchoolFacultyNameEqualTo(schoolFacultyName);
+ List schoolFaculties = schoolFacultyMapper.selectByExample(schoolFacultyExample);
+ if (!schoolFaculties.isEmpty()) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系名称重复");
+ }
+ SchoolFaculty schoolFaculty = new SchoolFaculty();
+ schoolFaculty.setSchoolFacultyId(String.valueOf(UUID.randomUUID()));
+ schoolFaculty.setSchoolId(schoolId);
+ schoolFaculty.setSchoolFacultyName(schoolFacultyName);
+ schoolFaculty.setSchoolFacultyContact(schoolFacultyContact);
+ schoolFaculty.setSchoolFacultyContactTel(schoolFacultyContactTel);
+ schoolFaculty.setSchoolFacultyContactAddress(schoolFacultyContactAddress);
+ schoolFaculty.setCreateTime(new Date());
+ int insert = schoolFacultyMapper.insert(schoolFaculty);
+ if (insert == 1) {
+ return new ResultEntity<>(HttpStatus.OK, "新增院系成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "新增院系失败");
+ }
+ }
+
+ @PostMapping("/seleteSchoolFaculty")
+ @ApiOperation("院系管理-查询")
+ @AnonymousAccess
+ public ResultEntity> seleteSchoolFaculty(@ApiParam("当前页") Integer index,
+ @ApiParam("每页条数") Integer size,
+ @ApiParam("学校ID") @RequestParam(required = false) String schoolId,
+ @ApiParam("院系名称") @RequestParam(required = false) String schoolFacultyName) {
+ PageInfo pageInfo = schoolService.seleteSchoolFaculty(index, size, schoolId, schoolFacultyName);
+ return new ResultEntity<>(HttpStatus.OK, "院系管理-查询成功", pageInfo);
+ }
+ @PostMapping("/deleteSchoolFaculty")
+ @ApiOperation("院系管理-删除")
@AnonymousAccess
- @ApiOperation("用户登录")
- @PostMapping("login")
- @OperateLog(description = "登录授权")
- public ResultDataEntity login(@ApiParam("用户名") String username,
- @ApiParam("加密后的密码") String passwordEncode,
- @ApiParam("智云携带的token")@RequestParam(required = false) String TOKEN,
- @RequestParam(required = false) Integer type,
- HttpServletResponse response) throws IOException {
- JwtUser jwtUser;
- String password;
-
- if(org.apache.commons.lang3.StringUtils.isBlank(TOKEN)){ //子系统登录
- try {
- password = RsaUtil.decryptByPrivateKey(passwordEncode);
- } catch (Exception e) {
- return new ResultDataEntity(HttpStatus.BAD_REQUEST, "密码错误");
- }
- try {
- StuUserExample example = new StuUserExample();
- StuUserExample.Criteria criteria = example.createCriteria();
- criteria.andStudentIdEqualTo(username);
- List stuUsers = userMapper.selectByExample(example);
- if(stuUsers.isEmpty()){
- throw new UnAuthorizedException("账号不存在");
- }else {
- StuUser stuUser = stuUsers.get(0);
- LoginResult loginResult = new LoginResult();
- if(org.apache.commons.lang3.StringUtils.isBlank(stuUser.getPassword()) && "123qwe".equals(password)){
- stuUser.setPassword("123qwe");
- if(org.apache.commons.lang3.StringUtils.isBlank(stuUser.getClassId())){
- stuUser.setRoleId(3);
- }else {
- stuUser.setRoleId(4);
- }
- userMapper.updateByPrimaryKeySelective(stuUser);
- UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
- Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
- SecurityContextHolder.getContext().setAuthentication(authentication);
- jwtUser = (JwtUser) authentication.getPrincipal();
- String token = TokenProvider.createToken(jwtUser);
- loginResult.setClassId(Convert.toInt(stuUser.getClassId()));
- loginResult.setUserId(stuUser.getUserId());
- loginResult.setUsername(stuUser.getStudentId());
- loginResult.setName(stuUser.getName());
- loginResult.setRoleId(stuUser.getRoleId());
- loginResult.setSchoolName(stuUser.getSchoolName());
- loginResult.setSchoolId(Integer.valueOf(stuUser.getSchoolId()));
- loginResult.setAccessToken(token);
- loginResult.setStudentId(stuUser.getStudentId());
-// redisUtil.set(itemName+"-token:"+jwtUser.getUserId(),token,43200);
-//
-// //redisUtil.set(itemName+"-userId:"+jwtUser.getUserId(),System.currentTimeMillis(),36000);
-// // 设置 loginTime
-// Long newLoginTime = System.currentTimeMillis();
-// Long newLastActiveTime = System.currentTimeMillis();
-// redisUtil.hset(itemName+"-userId:"+jwtUser.getUserId(), "loginTime", newLoginTime,43200);
-//
-//
-// // 设置 lastActiveTime
-// redisUtil.hset(itemName+"-userId:"+jwtUser.getUserId(), "lastActiveTime", newLastActiveTime,43200);
-
-
- return new ResultDataEntity<>(HttpStatus.OK,loginResult);
- }else {
- if(password.equals(stuUser.getPassword())){
- UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
- Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
- SecurityContextHolder.getContext().setAuthentication(authentication);
- jwtUser = (JwtUser) authentication.getPrincipal();
- String token = TokenProvider.createToken(jwtUser);
- loginResult.setClassId(Convert.toInt(stuUser.getClassId()));
- loginResult.setUserId(stuUser.getUserId());
- loginResult.setName(stuUser.getName());
- loginResult.setUsername(stuUser.getStudentId());
- loginResult.setRoleId(stuUser.getRoleId());
- loginResult.setSchoolId(Integer.valueOf(stuUser.getSchoolId()));
- loginResult.setStudentId(stuUser.getStudentId());
- loginResult.setAccessToken(token);
- loginResult.setSchoolName(stuUser.getSchoolName());
-// redisUtil.set(itemName+"-token:"+jwtUser.getUserId(),token,43200);
-// // redisUtil.set(itemName+"-userId:"+jwtUser.getUserId(),System.currentTimeMillis(),3600);
-//
-// Long newLoginTime = System.currentTimeMillis();
-// Long newLastActiveTime = System.currentTimeMillis();
-//
-// // 设置 loginTime
-// redisUtil.hset(itemName+"-userId:"+jwtUser.getUserId(), "loginTime", newLoginTime,43200);
-//
-//
-// // 设置 lastActiveTime
-// redisUtil.hset(itemName+"-userId:"+jwtUser.getUserId(), "lastActiveTime", newLastActiveTime,43200);
-
- return new ResultDataEntity<>(HttpStatus.OK,loginResult);
- }else {
- throw new UnAuthorizedException("密码错误");
- }
- }
+ public ResultEntity deleteSchoolFaculty(@ApiParam("院系ID") @RequestParam String schoolFacultyId, @RequestParam String userId) {
+ //先查询useriD 是否够权限
+ Userinfo userInfo = userinfoMapper.selectByPrimaryKey(userId);
+ if (userInfo.getRole() == 1 || userInfo.getRole() == 2) {
+ if (userInfo.getRole() == 2) {
+ SchoolFaculty schoolFaculty = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId);
+ if (!schoolFaculty.getSchoolId().equals(userInfo.getSchoolId())) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-删除失败-权限不足");
}
- } catch (Exception e) {
- throw new UnAuthorizedException("密码错误");
}
- }else { //单点登录
- if (!StringUtils.hasText(username) && !StringUtils.hasText(passwordEncode) && !StringUtils.hasText(TOKEN)) {
- throw new IllegalArgumentException("请提供登录凭据");
+ int i = schoolFacultyMapper.deleteByPrimaryKey(schoolFacultyId);
+ if (i == 1) {
+ return new ResultEntity<>(HttpStatus.OK, "院系管理-删除成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-删除失败");
}
- if (StringUtils.hasText(TOKEN)) {
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-删除失败-权限不足");
+ }
+ }
- if (type==null)
- {
- type = 0;
+ @PostMapping("/updateSchoolFaculty")
+ @ApiOperation("院系管理-编辑")
+ @AnonymousAccess
+ public ResultEntity updateSchoolFaculty(@RequestBody SchoolFaculty schoolFaculty, @RequestParam String userId) {
+ if (StringUtils.isBlank(schoolFaculty.getSchoolFacultyId())) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-编辑失败-主键ID缺失");
+ }
+ //先查询useriD 是否够权限
+ Userinfo userInfo = userinfoMapper.selectByPrimaryKey(userId);
+ if (userInfo.getRole() == 1 || userInfo.getRole() == 2) {
+ if (userInfo.getRole() == 2) {
+ SchoolFaculty schoolFacultyT = schoolFacultyMapper.selectByPrimaryKey(schoolFaculty.getSchoolFacultyId());
+ if (!schoolFacultyT.getSchoolId().equals(userInfo.getSchoolId())) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-编辑失败-权限不足");
}
+ }
+ int i = schoolFacultyMapper.updateByPrimaryKey(schoolFaculty);
+ if (i == 1) {
+ return new ResultEntity<>(HttpStatus.OK, "院系管理-编辑成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-编辑失败");
+ }
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-编辑失败-权限不足");
+ }
+ }
- if (type ==1 )
- {
- jwtUser = TokenProvider.getJWTUserOne(TOKEN);
- }else {
- jwtUser = TokenProvider.getJWTUserByZhiYun(TOKEN);
- }
+ //*****************************************专业管理*********************************************
+ //*****************************************专业管理*********************************************
+ //*****************************************专业管理*********************************************
- // jwtUser = TokenProvider.getJWTUserByZhiYun(TOKEN);
+ @PostMapping("/addSchoolMajor")
+ @ApiOperation("专业管理-添加专业")
+ @AnonymousAccess
+ public ResultEntity addSchoolMajor(@ApiParam("学校ID") @RequestParam String schoolId,
+ @ApiParam("院系ID") @RequestParam String schoolFacultyId,
+ @ApiParam("专业名称") @RequestParam String schoolMajorName,
+ @ApiParam("联系人") @RequestParam(required = false) String schoolMajorContact,
+ @ApiParam("联系人电话") @RequestParam(required = false) String schoolMajorContactTel) {
+ //先根据schoolId进行查询 如果不存在则返回
+ School school = schoolMapper.selectByPrimaryKey(schoolId);
+ if (school == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该学校不存在");
+ }
+ //再根据schoolFacultyId查询 如果不存在则返回
+ SchoolFaculty schoolFaculty = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId);
+ if (schoolFaculty == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该院系不存在");
+ }
+ //查询该学校下院系下 专业名称是否重复
+ SchoolMajorExample schoolMajorExample = new SchoolMajorExample();
+ schoolMajorExample.createCriteria().andSchoolFacultyIdEqualTo(schoolFacultyId).andSchoolMajorNameEqualTo(schoolMajorName);
+ List schoolMajors = schoolMajorMapper.selectByExample(schoolMajorExample);
+ if (!schoolMajors.isEmpty()) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "专业名称重复");
+ }
+ SchoolMajor schoolMajor = new SchoolMajor();
+ schoolMajor.setSchoolMajorId(String.valueOf(UUID.randomUUID()));
+ schoolMajor.setSchoolFacultyId(schoolFacultyId);
+ schoolMajor.setSchoolMajorName(schoolMajorName);
+ schoolMajor.setSchoolMajorContact(schoolMajorContact);
+ schoolMajor.setSchoolMajorContactTel(schoolMajorContactTel);
+ schoolMajor.setCreateTime(new Date());
+ int insert = schoolMajorMapper.insert(schoolMajor);
+ if (insert == 1) {
+ return new ResultEntity<>(HttpStatus.OK, "新增专业成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "新增专业失败");
+ }
+ }
- if (jwtUser == null) {
- throw new UnAuthorizedException("token无效");
- }
- } else {
- try {
- password = RsaUtil.decryptByPrivateKey(passwordEncode);
- } catch (Exception e) {
- throw new UnAuthorizedException("密码错误");
- }
+ @PostMapping("/selectSchoolMajor")
+ @ApiOperation("专业管理-查询")
+ @AnonymousAccess
+ public ResultEntity> selectSchoolMajor(@ApiParam("当前页") Integer index,
+ @ApiParam("每页条数") Integer size,
+ @ApiParam("学校ID") @RequestParam(required = false) String schoolId,
+ @ApiParam("院系ID-学校管理员使用") @RequestParam(required = false) String schoolFacultyId,
+ @ApiParam("专业名称") @RequestParam(required = false) String schoolMajorName) {
+ PageInfo pageInfo = schoolService.seleteSchoolMajor(index, size, schoolId, schoolMajorName, schoolFacultyId);
+ return new ResultEntity<>(HttpStatus.OK, "专业管理-查询成功", pageInfo);
+ }
- jwtUser = TzApi.foreignExchangeTradingLogin(username, password);
- if (jwtUser == null) {
- throw new UnAuthorizedException("用户名或密码错误");
- }
- }
+ @PostMapping("/deleteSchoolMajor")
+ @ApiOperation("专业管理-删除")
+ @AnonymousAccess
+ public ResultEntity deleteSchoolMajor(@ApiParam("专业ID") @RequestParam String schoolMajorId, @RequestParam String userId) {
+ int i = schoolMajorMapper.deleteByPrimaryKey(schoolMajorId);
+ if (i == 1) {
+ return new ResultEntity<>(HttpStatus.OK, "专业管理-删除成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "专业管理-删除失败");
+ }
+ }
- String studentId = jwtUser.getStudentId();
- if (!StringUtils.hasText(studentId)) {
- studentId= jwtUser.getUsername();
- if (!StringUtils.hasText(studentId)) {
- studentId= jwtUser.getName();
- }
+
+ @PostMapping("/updateSchoolMajor")
+ @ApiOperation("专业管理-编辑")
+ @AnonymousAccess
+ public ResultEntity updateSchoolMajor(@RequestBody SchoolMajor schoolMajor, @RequestParam String userId) {
+ if (StringUtils.isBlank(schoolMajor.getSchoolMajorId())) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "专业管理-编辑失败-主键ID缺失");
+ }
+ int i = schoolMajorMapper.updateByPrimaryKey(schoolMajor);
+ if (i == 1) {
+ return new ResultEntity<>(HttpStatus.OK, "专业管理-编辑成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "专业管理-编辑失败");
+ }
+ }
+
+ //*****************************************班级管理*********************************************
+ //*****************************************班级管理*********************************************
+ //*****************************************班级管理*********************************************
+
+
+ @PostMapping("/addSchoolClass")
+ @ApiOperation("班级管理-添加班级")
+ @AnonymousAccess
+ public ResultEntity addSchoolClass(@ApiParam("学校ID") @RequestParam String schoolId,
+ @ApiParam("院系ID") @RequestParam String schoolFacultyId,
+ @ApiParam("专业ID") @RequestParam String schoolMajorId,
+ @ApiParam("班级名称") @RequestParam String className) {
+ //先根据schoolId进行查询 如果不存在则返回
+ School school = schoolMapper.selectByPrimaryKey(schoolId);
+ if (school == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该学校不存在");
+ }
+ //再根据schoolFacultyId查询 如果不存在则返回
+ SchoolFaculty schoolFaculty = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId);
+ if (schoolFaculty == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该院系不存在");
+ }
+ //再根据schoolMajorId查询 如果不存在则返回
+ SchoolMajor schoolMajor = schoolMajorMapper.selectByPrimaryKey(schoolMajorId);
+ if (schoolMajor == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该专业不存在");
+ }
+ //查询班级名称是否存在
+ SchoolClassExample schoolClassExample = new SchoolClassExample();
+ schoolClassExample.createCriteria().andSchoolMajorIdEqualTo(schoolMajorId).andClassNameEqualTo(className);
+ List schoolClasses = schoolClassMapper.selectByExample(schoolClassExample);
+ if (!schoolClasses.isEmpty()) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级名称重复");
+ }
+ SchoolClass schoolClass = new SchoolClass();
+ schoolClass.setSchoolClassId(String.valueOf(UUID.randomUUID()));
+ schoolClass.setSchoolMajorId(schoolMajorId);
+ schoolClass.setClassName(className);
+ //设置classSn 先获取学校名称
+ String schoolName = school.getSchoolName();
+ String schoolNamePY = pinyin4jUtil.convertToPinyin(schoolName);
+ String classNamePY = pinyin4jUtil.convertToPinyin(className);
+ schoolClass.setClassSn(schoolNamePY + "_" + classNamePY);
+ schoolClass.setCreateTime(new Date());
+
+ int insert = schoolClassMapper.insert(schoolClass);
+ if (insert == 1) {
+ return new ResultEntity<>(HttpStatus.OK, "新增班级成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "新增班级失败");
+ }
+ }
+
+ @PostMapping("/seleteSchoolClass")
+ @ApiOperation("班级管理-查询")
+ @AnonymousAccess
+ public ResultEntity> seleteSchoolClass(@ApiParam("当前页") Integer index,
+ @ApiParam("每页条数") Integer size,
+ @ApiParam("学校ID") @RequestParam(required = false) String schoolId,
+ @ApiParam("专业ID-学校管理员使用") @RequestParam(required = false) String schoolMajorId,
+ @ApiParam("班级名称") @RequestParam(required = false) String className,
+ @ApiParam("班级编号") @RequestParam(required = false) String classSn) {
+ PageInfo pageInfo = schoolService.seleteSchoolClass(index, size, schoolId, className, classSn, schoolMajorId);
+ return new ResultEntity<>(HttpStatus.OK, "班级管理-查询成功", pageInfo);
+ }
+
+ @PostMapping("/deleteSchoolClass")
+ @ApiOperation("班级管理-删除")
+ @AnonymousAccess
+ public ResultEntity deleteSchoolClass(@ApiParam("班级ID") @RequestParam String schoolClassId, @RequestParam String userId) {
+ //先查询useriD 是否够权限
+ Userinfo userInfo = userinfoMapper.selectByPrimaryKey(userId);
+ if (userInfo.getRole() == 1 || userInfo.getRole() == 2) {
+ int i = schoolClassMapper.deleteByPrimaryKey(schoolClassId);
+ if (i == 1) {
+ return new ResultEntity<>(HttpStatus.OK, "班级管理-删除成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-删除失败");
}
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-删除失败-权限不足");
+ }
+ }
- //根据StudentId查询用户数据 并且赋予userId
- StuUserExample stuUserExample = new StuUserExample();
- stuUserExample.createCriteria().andStudentIdEqualTo(studentId);
- List stuUserList = stuUserMapper.selectByExample(stuUserExample);
- String userId = null;
- if (CollectionUtils.isEmpty(stuUserList)) {
- StuUser student = new StuUser();
- userId = IdUtil.randomUUID();
-
- student.setUserId(userId);
- student.setStudentId(studentId);
- if (StringUtils.hasText(jwtUser.getName())){
- student.setName(jwtUser.getName());
- }else {
- student.setName(studentId);
- }
- student.setPassword(jwtUser.getPassword());
- student.setRoleId(jwtUser.getRoleId());
- student.setClassId(String.valueOf(jwtUser.getClassId()));
- student.setClassName(jwtUser.getClassName());
- student.setMajor(jwtUser.getMajorName());
- student.setSchoolId(String.valueOf(jwtUser.getSchoolId()));
- student.setSchoolName(jwtUser.getSchoolName());
- stuUserMapper.insertSelective(student);
+
+ @PostMapping("/updateSchoolClass")
+ @ApiOperation("班级管理-编辑")
+ @AnonymousAccess
+ public ResultEntity updateSchoolClass(@RequestBody SchoolClass schoolClass, @RequestParam String userId) {
+ if (StringUtils.isBlank(schoolClass.getSchoolClassId())) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-编辑失败-主键ID缺失");
+ }
+ //先查询useriD 是否够权限
+ Userinfo userInfo = userinfoMapper.selectByPrimaryKey(userId);
+ if (userInfo.getRole() == 1 || userInfo.getRole() == 2) {
+ int i = schoolClassMapper.updateByPrimaryKey(schoolClass);
+ if (i == 1) {
+ return new ResultEntity<>(HttpStatus.OK, "班级管理-编辑成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-编辑失败");
}
- if (StringUtils.hasText(userId)){
- jwtUser.setUserId(userId);
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-编辑失败-权限不足");
+ }
+ }
+
+ //新增 同步子系统账户
+ @PostMapping("/addTeacherAccount")
+ @ApiOperation("教师管理-添加教师账号")
+ @AnonymousAccess
+ public ResultEntity addTeacherAccount(@ApiParam("学校ID") @RequestParam String schoolId,
+ @ApiParam("学校名称") @RequestParam String schoolName,
+ @ApiParam("院系ID") @RequestParam String schoolFacultyId,
+ @ApiParam("专业ID") @RequestParam String schoolMajorId,
+ @ApiParam("专业名称") @RequestParam String schoolMajorName,
+ @ApiParam("教师名称") @RequestParam String name,
+ @ApiParam("教师工号") @RequestParam String userName,
+ @ApiParam("电话号码") @RequestParam(required = false) String phone,
+ @ApiParam("电子邮箱") @RequestParam(required = false) String email) throws JsonProcessingException {
+ //先根据schoolId进行查询 如果不存在则返回
+ School school = schoolMapper.selectByPrimaryKey(schoolId);
+ if (school == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该学校不存在");
+ }
+ //再根据schoolFacultyId查询 如果不存在则返回
+ SchoolFaculty schoolFaculty = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId);
+ if (schoolFaculty == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该院系不存在");
+ }
+ //再根据schoolMajorId查询 如果不存在则返回
+ SchoolMajor schoolMajor = schoolMajorMapper.selectByPrimaryKey(schoolMajorId);
+ if (schoolMajor == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该专业不存在");
+ }
+ //检查userName是否已经存在
+ boolean b = userInfoService.existsByUserName(userName);
+ if(b){
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "账号已存在");
+ }
+ Userinfo userInfo = new Userinfo();
+ userInfo.setUserId(UUID.randomUUID().toString());
+ userInfo.setName(name);
+ userInfo.setUsername(userName);
+ userInfo.setPassword("123qwe");
+ userInfo.setPhone(phone);
+ userInfo.setEmail(email);
+ userInfo.setCreateTime(new Date());
+ userInfo.setRole(3);
+ userInfo.setSchoolId(schoolId);
+ userInfo.setSchoolFacultyId(schoolFacultyId);
+ userInfo.setSchoolMajorId(schoolMajorId);
+ userInfo.setSchoolClassId(null);
+ userInfo.setCodeFrom("添加");
+
+ int insert = userinfoMapper.insert(userInfo);
+ if (insert == 1) {
+ return new ResultEntity<>(HttpStatus.OK, "教师管理-添加教师账号成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "教师管理-添加教师账号失败");
+ }
+ }
+
+ //分页条件查询
+ @PostMapping("/selectTeacher")
+ @ApiOperation("教师管理-查询教师账号信息")
+ @AnonymousAccess
+ public ResultEntity> selectTeacher(@ApiParam("学校ID") @RequestParam(required = false) String schoolId,
+ @ApiParam("教师名称") @RequestParam(required = false) String name,
+ @ApiParam("教师工号") @RequestParam(required = false) String userName,
+ @RequestParam Integer index,
+ @RequestParam Integer size) {
+ PageHelper.startPage(index, size);
+ UserinfoExample userInfoExample = new UserinfoExample();
+ UserinfoExample.Criteria criteria = userInfoExample.createCriteria();
+ School school=new School();
+ if (StringUtils.isNotBlank(schoolId)) {
+ school = schoolMapper.selectByPrimaryKey(schoolId);
+ criteria.andSchoolIdEqualTo(schoolId);
+ }
+ if (StringUtils.isNotBlank(name)) {
+ criteria.andNameEqualTo(name);
+ }
+ if (StringUtils.isNotBlank(userName)) {
+ criteria.andUsernameEqualTo(userName);
+ }
+ List userInfoList = userinfoMapper.selectByExample(userInfoExample);
+ for (int i = 0; i < userInfoList.size(); i++) {
+ if(StringUtils.isNotBlank(schoolId)){
+ userInfoList.get(i).setSchoolName(school.getSchoolName());
}else {
- jwtUser.setUserId(stuUserList.get(0).getUserId());
+ String schoolId1 = userInfoList.get(i).getSchoolId();
+ school = schoolMapper.selectByPrimaryKey(schoolId1);
+ userInfoList.get(i).setSchoolName(school.getSchoolName());
}
-
- Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities());
- SecurityContextHolder.getContext().setAuthentication(authentication);
- String token = TokenProvider.createToken(jwtUser);
-//
-// redisUtil.set(itemName+"-token:"+jwtUser.getUserId(),token,43200);
-//
-// // redisUtil.set(itemName+"-userId:"+jwtUser.getUserId(),System.currentTimeMillis(),3600);
-//
-// Long newLoginTime = System.currentTimeMillis();
-// Long newLastActiveTime = System.currentTimeMillis();
-//
-// // 设置 loginTime
-// redisUtil.hset(itemName+"-userId:"+jwtUser.getUserId(), "loginTime", newLoginTime,43200);
-//
-// // 设置 lastActiveTime
-// redisUtil.hset(itemName+"-userId:"+jwtUser.getUserId(), "lastActiveTime", newLastActiveTime,43200);
-
- return new ResultDataEntity(HttpStatus.OK,LoginResult.create(jwtUser, token));
}
+ PageInfo pageInfo = new PageInfo<>(userInfoList);
+ return new ResultEntity<>(HttpStatus.OK, "查询教师账号信息成功!", pageInfo);
+ }
+ //编辑
+ @PostMapping("/updateTeacher")
+ @ApiOperation("教师管理-编辑教师账号信息")
+ @AnonymousAccess
+ public ResultEntity updateTeacher(@RequestBody Userinfo userInfo) {
+ int i = userinfoMapper.updateByPrimaryKey(userInfo);
+ if(i==1){
+ return new ResultEntity<>(HttpStatus.OK, "编辑教师账号信息成功!");
+ }
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "编辑教师账号信息失败!");
}
+ //初始化密码
+ @PostMapping("/updateTeacherPassword")
+ @ApiOperation("教师管理-初始化密码")
+ @AnonymousAccess
+ public ResultEntity updateTeacher(@RequestParam String userId) {
+ Userinfo userInfo = userinfoMapper.selectByPrimaryKey(userId);
+ userInfo.setPassword("123qwe");
+ int i = userinfoMapper.updateByPrimaryKey(userInfo);
+ if(i==1){
+ return new ResultEntity<>(HttpStatus.OK, "初始化密码成功!");
+ }
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "初始化密码失败!");
+ }
+ //微信绑定 *****
- @ApiOperation("明文密码公钥加密方法(该方法仅在开发阶段开放用于测试接口)")
+ //删除
+ @PostMapping("/deleteTeacher")
+ @ApiOperation("教师管理-删除")
@AnonymousAccess
- @GetMapping("encrypt")
- public ResultDataEntity encrypt(@ApiParam("明文密码") String pwd) throws Exception {
- return new ResultDataEntity<>(HttpStatus.OK,"加密成功",RsaUtil.encryptByPublicKey(pwd));
+ public ResultEntity deleteTeacher(@RequestParam String userId) {
+ int i = userinfoMapper.deleteByPrimaryKey(userId);
+ if(i==1){
+ return new ResultEntity<>(HttpStatus.OK, "删除成功!");
+ }
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "删除失败!");
}
+ //导入 同步子系统账户
+ @PostMapping("/uploadTeacherUserInfo")
+ @ApiOperation("教师管理-导入教师账号")
+ @AnonymousAccess
+ public ResultEntity uploadTeacherUserInfo(@RequestParam MultipartFile file){
+ // 基本校验
+ if (file.isEmpty()) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "上传文件不能为空!");
+ }
+
+ String originalFilename = file.getOriginalFilename();
+ if (!originalFilename.endsWith(".xls") && !originalFilename.endsWith(".xlsx")) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "请上传Excel文件!");
+ }
+ if (file.getSize() > 10 * 1024 * 1024) { // 10MB限制
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "文件大小不能超过10MB!");
+ }
+ try (InputStream inputStream = file.getInputStream()) {
+ // 解析Excel
+ List teacherList = EasyExcel.read(inputStream)
+ .head(TeacherImportDTO.class)
+ .sheet()
+ .doReadSync();
+
+ // 数据校验
+ List errorMessages = validateService.validateTeacherData(teacherList);
+ if (!errorMessages.isEmpty()) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!",errorMessages);
+ }
- @ApiOperation("同步学生信息")
- @PostMapping("synchronizationStudentInfo")
- public ResultDataEntity synchronizationStudentInfo() {
- JwtUser user = TokenProvider.getJWTUser(request);
- stuUserService.insertAll(user);
- return new ResultDataEntity(HttpStatus.OK);
+ // 异步处理导入*****
+ importService.processTeacherImport(teacherList);
+ return new ResultEntity<>(HttpStatus.OK, "导入成功!");
+
+ } catch (Exception e) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!",e.getMessage());
+ }
}
+ //导出
+ @PostMapping("/exportTeacherUserInfo")
+ @ApiOperation("教师管理-导出")
+ @AnonymousAccess
+ public void exportTeacherUserInfo(HttpServletResponse response,
+ @RequestParam String schoolId) {
+ if(StringUtils.isNotBlank(schoolId)){
+ UserinfoExample userInfoExample = new UserinfoExample();
+ userInfoExample.createCriteria().andSchoolIdEqualTo(schoolId).andRoleEqualTo(3);
+ List list = userinfoMapper.selectByExample(userInfoExample);
+ //导出的表名
+ String title = "老师账号汇总";
+ //表中第一行表头字段
+ String[] headers = {"姓名", "工号", "性别", "手机号", "邮箱"};
+
+ //具体需要写入excel需要哪些字段,这些字段取自UserReward类,也就是上面的实际数据结果集的泛型
+ List listColumn = Arrays.asList("name", "username", "sex", "phone", "email");
+ try {
+ FilePortUtil.exportExcel(response, title, headers, list, listColumn);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ //*****************************************学生管理*********************************************
+ //*****************************************学生管理*********************************************
+ //*****************************************学生管理*********************************************
+ //新增 *****创建资金账户
+ @PostMapping("/addStudentAccount")
+ @ApiOperation("学生管理-添加学生账号")
+ @AnonymousAccess
+ public ResultEntity addStudentAccount(@ApiParam("学校ID") @RequestParam String schoolId,
+ @ApiParam("学校名称") @RequestParam String schoolName,
+ @ApiParam("院系ID") @RequestParam String schoolFacultyId,
+ @ApiParam("专业ID") @RequestParam String schoolMajorId,
+ @ApiParam("专业名称") @RequestParam String schoolMajorName,
+ @ApiParam("班级名称") @RequestParam String schoolClassName,
+ @ApiParam("班级Id") @RequestParam String schoolClassId,
+ @ApiParam("学生姓名") @RequestParam String name,
+ @ApiParam("学号") @RequestParam String userName,
+ @ApiParam("电话号码") @RequestParam(required = false) String phone,
+ @ApiParam("电子邮箱") @RequestParam(required = false) String email) throws JsonProcessingException {
+ //先根据schoolId进行查询 如果不存在则返回
+ School school = schoolMapper.selectByPrimaryKey(schoolId);
+ if (school == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该学校不存在");
+ }
+ //再根据schoolFacultyId查询 如果不存在则返回
+ SchoolFaculty schoolFaculty = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId);
+ if (schoolFaculty == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该院系不存在");
+ }
+ //再根据schoolMajorId查询 如果不存在则返回
+ SchoolMajor schoolMajor = schoolMajorMapper.selectByPrimaryKey(schoolMajorId);
+ if (schoolMajor == null) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该专业不存在");
+ }
+ SchoolClass schoolClass = schoolClassMapper.selectByPrimaryKey(schoolClassId);
+ if(schoolClass==null){
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该班级不存在");
+ }
+ //检查userName是否已经存在
+ boolean b = userInfoService.existsByUserName(userName);
+ if(b){
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "账号已存在");
+ }
+ Userinfo userInfo = new Userinfo();
+ userInfo.setUserId(UUID.randomUUID().toString());
+ userInfo.setName(name);
+ userInfo.setUsername(userName);
+ userInfo.setPassword("123qwe");
+ userInfo.setPhone(phone);
+ userInfo.setEmail(email);
+ userInfo.setCreateTime(new Date());
+ userInfo.setRole(4);
+ userInfo.setSchoolId(schoolId);
+ userInfo.setSchoolFacultyId(schoolFacultyId);
+ userInfo.setSchoolMajorId(schoolMajorId);
+ userInfo.setSchoolClassId(null);
+ userInfo.setCodeFrom("添加");
+
+ int insert = userinfoMapper.insert(userInfo);
+ if (insert == 1) {
+ return new ResultEntity<>(HttpStatus.OK, "学生管理-添加学生账号成功");
+ } else {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "学生管理-添加学生账号失败");
+ }
+ }
- @ApiOperation("开放接口,自动同步学生信息")
- @PostMapping("synchronizationStudentInfoByAuto")
+ //查询
+ @PostMapping("/selectStudent")
+ @ApiOperation("学生管理-查询学生账号信息")
@AnonymousAccess
- public String synchronizationStudentInfoByAuto(@RequestBody List zyUserInfoList) {
-// JwtUser user = TokenProvider.getJWTUser(request);
-// stuUserService.insertAllByAuto(studentList);
- List users = new ArrayList<>();
- for (int i = 0; i < zyUserInfoList.size(); i++) {
- ZYUserInfo zyUserInfo = zyUserInfoList.get(i);
- String username = zyUserInfo.getUsername(); // studentid
- String name = zyUserInfo.getName();
- String password = zyUserInfo.getPassword();
- Integer roleId = zyUserInfo.getRoleId(); //3教师 4学生
-
- StuUserExample userInfoExample = new StuUserExample();
- userInfoExample.createCriteria().andStudentIdEqualTo(username);
- List userInfos = stuUserMapper.selectByExample(userInfoExample);
- if(userInfos.isEmpty() || userInfos==null){
- StuUser stuUser = new StuUser();
- stuUser.setUserId(IdUtil.randomUUID());
- stuUser.setStudentId(zyUserInfo.getUsername());
- if (!StringUtils.hasText(name)){
- stuUser.setName(username);
+ public ResultEntity> selectStudent(@ApiParam("学校ID") @RequestParam(required = false) String schoolId,
+ @ApiParam("班级ID") @RequestParam(required = false) String schoolClassId,
+ @ApiParam("学生姓名") @RequestParam(required = false) String name,
+ @ApiParam("学生学号") @RequestParam(required = false) String userName,
+ @RequestParam Integer index,
+ @RequestParam Integer size) {
+ PageHelper.startPage(index, size);
+ UserinfoExample userInfoExample = new UserinfoExample();
+ UserinfoExample.Criteria criteria = userInfoExample.createCriteria();
+ School school=new School();
+ SchoolClass schoolClass = new SchoolClass();
+ if (StringUtils.isNotBlank(schoolId)) {
+ school = schoolMapper.selectByPrimaryKey(schoolId);
+ criteria.andSchoolIdEqualTo(schoolId);
+ }
+ if (StringUtils.isNotBlank(name)) {
+ criteria.andNameEqualTo(name);
+ }
+ if (StringUtils.isNotBlank(userName)) {
+ criteria.andUsernameEqualTo(userName);
+ }
+ if(StringUtils.isNotBlank(schoolClassId)){
+ schoolClass=schoolClassMapper.selectByPrimaryKey(schoolClassId);
+ criteria.andSchoolClassIdEqualTo(schoolClassId);
+ }
+ List userInfoList = userinfoMapper.selectByExample(userInfoExample);
+ for (int i = 0; i < userInfoList.size(); i++) {
+ if(StringUtils.isNotBlank(schoolId)){
+ userInfoList.get(i).setSchoolName(school.getSchoolName());
+ if(StringUtils.isNotBlank(schoolClassId)){
+ userInfoList.get(i).setClassName(schoolClass.getClassName());
}else {
- stuUser.setName(name);
+ String schoolClassId1 = userInfoList.get(i).getSchoolClassId();
+ schoolClass = schoolClassMapper.selectByPrimaryKey(schoolClassId1);
+ userInfoList.get(i).setClassName(schoolClass.getClassName());
+ }
+ }else {
+ String schoolId1 = userInfoList.get(i).getSchoolId();
+ school = schoolMapper.selectByPrimaryKey(schoolId1);
+ userInfoList.get(i).setSchoolName(school.getSchoolName());
+ if(StringUtils.isNotBlank(schoolClassId)){
+ userInfoList.get(i).setClassName(schoolClass.getClassName());
+ }else {
+ String schoolClassId1 = userInfoList.get(i).getSchoolClassId();
+ schoolClass = schoolClassMapper.selectByPrimaryKey(schoolClassId1);
+ userInfoList.get(i).setClassName(schoolClass.getClassName());
}
-// stuUser.setUsername(username);
- stuUser.setPassword(password);
- stuUser.setRoleId(roleId);
- stuUser.setClassId(zyUserInfo.getClassId().toString());
-// stuUser.setPhone(zyUserInfo.getPhone());
- stuUser.setClassName(zyUserInfo.getClassName());
- stuUser.setMajor(zyUserInfo.getMajorName());
- stuUser.setSchoolId(zyUserInfo.getSchoolId().toString());
- stuUser.setSchoolName(zyUserInfo.getSchoolName());
-// stuUser.setCreateTime(new Date());
- users.add(stuUser);
}
}
- if (users.isEmpty()) {
- return "账号已全部存在";
+ PageInfo pageInfo = new PageInfo<>(userInfoList);
+ return new ResultEntity<>(HttpStatus.OK, "查询学生账号信息成功!", pageInfo);
+ }
+
+ //编辑
+ @PostMapping("/updateStudent")
+ @ApiOperation("学生管理-编辑学生账号信息")
+ @AnonymousAccess
+ public ResultEntity updateStudent(@RequestBody Userinfo userInfo) {
+ int i = userinfoMapper.updateByPrimaryKey(userInfo);
+ if(i==1){
+ return new ResultEntity<>(HttpStatus.OK, "编辑学生账号信息成功!");
+ }
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "编辑学生账号信息失败!");
+ }
+
+ //删除
+ @PostMapping("/deleteStudent")
+ @ApiOperation("学生管理-删除")
+ @AnonymousAccess
+ public ResultEntity deleteStudent(@RequestParam String userId) {
+ int i = userinfoMapper.deleteByPrimaryKey(userId);
+ if(i==1){
+ return new ResultEntity<>(HttpStatus.OK, "删除成功!");
}
- users.forEach(stuUser -> {
- stuUserMapper.insertSelective(stuUser);
- });
- return "自动同步学生信息成功!"+"同步"+users.size()+"条用户数据";
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "删除失败!");
+ }
+ //初始化密码
+ @PostMapping("/updateStudentPassword")
+ @ApiOperation("学生管理-初始化密码")
+ @AnonymousAccess
+ public ResultEntity updateStudentPassword(@RequestParam String userId) {
+ Userinfo userInfo = userinfoMapper.selectByPrimaryKey(userId);
+ userInfo.setPassword("123qwe");
+ int i = userinfoMapper.updateByPrimaryKey(userInfo);
+ if(i==1){
+ return new ResultEntity<>(HttpStatus.OK, "初始化密码成功!");
+ }
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "初始化密码失败!");
}
+ //微信绑定*****
+ //导入 ***** 创建资金账户
+ @PostMapping("/uploadStudentUserInfo")
+ @ApiOperation("学生管理-导入学生账号")
+ @AnonymousAccess
+ public ResultEntity uploadStudentUserInfo(@RequestParam MultipartFile file){
+ // 基本校验
+ if (file.isEmpty()) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "上传文件不能为空!");
+ }
+
+ String originalFilename = file.getOriginalFilename();
+ if (!originalFilename.endsWith(".xls") && !originalFilename.endsWith(".xlsx")) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "请上传Excel文件!");
+ }
+ if (file.getSize() > 10 * 1024 * 1024) { // 10MB限制
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "文件大小不能超过10MB!");
+ }
+ try (InputStream inputStream = file.getInputStream()) {
+ // 解析Excel
+ List studentList = EasyExcel.read(inputStream)
+ .head(StudentImportDTO.class)
+ .sheet()
+ .doReadSync();
+
+ // 数据校验
+ List errorMessages = validateService.validateStudentData(studentList);
+ if (!errorMessages.isEmpty()) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!",errorMessages);
+ }
+
+ // 异步处理导入*****
+ importService.processStudentImport(studentList);
+ return new ResultEntity<>(HttpStatus.OK, "导入成功!");
+
+ } catch (Exception e) {
+ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!",e.getMessage());
+ }
+ }
+
+ //导出
+ @PostMapping("/exportStudentUserInfo")
+ @ApiOperation("学生管理-导出")
+ @AnonymousAccess
+ public void exportStudentUserInfo(HttpServletResponse response,
+ @RequestParam String schoolId) {
+ if(StringUtils.isNotBlank(schoolId)){
+ UserinfoExample userInfoExample = new UserinfoExample();
+ userInfoExample.createCriteria().andSchoolIdEqualTo(schoolId).andRoleEqualTo(4);
+ List list = userinfoMapper.selectByExample(userInfoExample);
+ //导出的表名
+ String title = "学生账号汇总";
+ //表中第一行表头字段
+ String[] headers = {"姓名", "学号", "性别", "手机号", "邮箱"};
+
+ //具体需要写入excel需要哪些字段,这些字段取自UserReward类,也就是上面的实际数据结果集的泛型
+ List listColumn = Arrays.asList("name", "username", "sex", "phone", "email");
+ try {
+ FilePortUtil.exportExcel(response, title, headers, list, listColumn);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
}
diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/Userinfo.java b/src/main/java/com/sztzjy/linkCommerce/entity/Userinfo.java
index fc6c3e7..70a6478 100644
--- a/src/main/java/com/sztzjy/linkCommerce/entity/Userinfo.java
+++ b/src/main/java/com/sztzjy/linkCommerce/entity/Userinfo.java
@@ -69,6 +69,27 @@ public class Userinfo {
@ApiModelProperty(notes = "班级ID(关联班级表,教师账号为null)")
private String schoolClassId;
+ @ApiModelProperty("班级名称 回显用")
+ private String className;
+ @ApiModelProperty("学校名称 回显用")
+ private String schoolName;
+
+ public String getClassName() {
+ return className;
+ }
+
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ public String getSchoolName() {
+ return schoolName;
+ }
+
+ public void setSchoolName(String schoolName) {
+ this.schoolName = schoolName;
+ }
+
public String getUserId() {
return userId;
}
diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/dto/SchoolClassDto.java b/src/main/java/com/sztzjy/linkCommerce/entity/dto/SchoolClassDto.java
new file mode 100644
index 0000000..4ebc9d0
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/entity/dto/SchoolClassDto.java
@@ -0,0 +1,14 @@
+package com.sztzjy.linkCommerce.entity.dto;
+
+import com.sztzjy.linkCommerce.entity.SchoolClass;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SchoolClassDto {
+ @ApiModelProperty("学校名称")
+ String schoolName;
+
+ @ApiModelProperty("schoolClass对象")
+ SchoolClass schoolClass;
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/dto/SchoolFacultyDto.java b/src/main/java/com/sztzjy/linkCommerce/entity/dto/SchoolFacultyDto.java
new file mode 100644
index 0000000..95ed2ea
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/entity/dto/SchoolFacultyDto.java
@@ -0,0 +1,15 @@
+package com.sztzjy.linkCommerce.entity.dto;
+
+import com.sztzjy.linkCommerce.entity.SchoolFaculty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SchoolFacultyDto {
+
+ @ApiModelProperty("学校名称")
+ String schoolName;
+
+ @ApiModelProperty("schoolFaculty对象")
+ SchoolFaculty schoolFaculty;
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/dto/SchoolMajorDto.java b/src/main/java/com/sztzjy/linkCommerce/entity/dto/SchoolMajorDto.java
new file mode 100644
index 0000000..66d0195
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/entity/dto/SchoolMajorDto.java
@@ -0,0 +1,20 @@
+package com.sztzjy.linkCommerce.entity.dto;
+
+import com.sztzjy.linkCommerce.entity.SchoolMajor;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class SchoolMajorDto {
+ @ApiModelProperty("专业ID")
+ private String schoolMajorId;
+
+ @ApiModelProperty("学校名称")
+ String schoolName;
+
+ @ApiModelProperty("院系名称")
+ String schoolFacultyName;
+
+ @ApiModelProperty("专业对象")
+ SchoolMajor schoolMajor;
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/importDto/StudentImportDTO.java b/src/main/java/com/sztzjy/linkCommerce/entity/importDto/StudentImportDTO.java
new file mode 100644
index 0000000..639bb2f
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/entity/importDto/StudentImportDTO.java
@@ -0,0 +1,31 @@
+package com.sztzjy.linkCommerce.entity.importDto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class StudentImportDTO {
+ @ApiModelProperty("院校名称")
+ private String schoolName;
+
+ @ApiModelProperty("院系名称")
+ private String schoolFacultyName;
+
+ @ApiModelProperty("专业名称")
+ private String schoolMajorName;
+
+ @ApiModelProperty("班级名称")
+ private String schoolClassName;
+
+ @ApiModelProperty("学生姓名")
+ private String studentName;
+
+ @ApiModelProperty("学号")
+ private String userName;
+
+ @ApiModelProperty("电话")
+ private String phone;
+
+ @ApiModelProperty("邮箱")
+ private String email;
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/importDto/TeacherImportDTO.java b/src/main/java/com/sztzjy/linkCommerce/entity/importDto/TeacherImportDTO.java
new file mode 100644
index 0000000..8eaba68
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/entity/importDto/TeacherImportDTO.java
@@ -0,0 +1,28 @@
+package com.sztzjy.linkCommerce.entity.importDto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class TeacherImportDTO {
+ @ApiModelProperty("院校名称")
+ private String schoolName;
+
+ @ApiModelProperty("院系名称")
+ private String schoolFacultyName;
+
+ @ApiModelProperty("专业名称")
+ private String schoolMajorName;
+
+ @ApiModelProperty("教师姓名")
+ private String teacherName;
+
+ @ApiModelProperty("工号")
+ private String userName;
+
+ @ApiModelProperty("电话")
+ private String phone;
+
+ @ApiModelProperty("邮箱")
+ private String email;
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/mapper/CgxqycAnswerMapper.java b/src/main/java/com/sztzjy/linkCommerce/mapper/CgxqycAnswerMapper.java
index 7a4259b..db171b2 100644
--- a/src/main/java/com/sztzjy/linkCommerce/mapper/CgxqycAnswerMapper.java
+++ b/src/main/java/com/sztzjy/linkCommerce/mapper/CgxqycAnswerMapper.java
@@ -3,8 +3,10 @@ package com.sztzjy.linkCommerce.mapper;
import com.sztzjy.linkCommerce.entity.CgxqycAnswer;
import com.sztzjy.linkCommerce.entity.CgxqycAnswerExample;
import java.util.List;
-import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+@Mapper
public interface CgxqycAnswerMapper {
long countByExample(CgxqycAnswerExample example);
diff --git a/src/main/java/com/sztzjy/linkCommerce/mapper/CgxqycStuAnswerMapper.java b/src/main/java/com/sztzjy/linkCommerce/mapper/CgxqycStuAnswerMapper.java
index f302bda..39d7cb5 100644
--- a/src/main/java/com/sztzjy/linkCommerce/mapper/CgxqycStuAnswerMapper.java
+++ b/src/main/java/com/sztzjy/linkCommerce/mapper/CgxqycStuAnswerMapper.java
@@ -3,8 +3,10 @@ package com.sztzjy.linkCommerce.mapper;
import com.sztzjy.linkCommerce.entity.CgxqycStuAnswer;
import com.sztzjy.linkCommerce.entity.CgxqycStuAnswerExample;
import java.util.List;
-import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+@Mapper
public interface CgxqycStuAnswerMapper {
long countByExample(CgxqycStuAnswerExample example);
diff --git a/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolClassMapper.java b/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolClassMapper.java
index e5c088e..5c8fdae 100644
--- a/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolClassMapper.java
+++ b/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolClassMapper.java
@@ -3,8 +3,10 @@ package com.sztzjy.linkCommerce.mapper;
import com.sztzjy.linkCommerce.entity.SchoolClass;
import com.sztzjy.linkCommerce.entity.SchoolClassExample;
import java.util.List;
-import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+@Mapper
public interface SchoolClassMapper {
long countByExample(SchoolClassExample example);
diff --git a/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolFacultyMapper.java b/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolFacultyMapper.java
index 036a5ae..4cf8ddd 100644
--- a/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolFacultyMapper.java
+++ b/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolFacultyMapper.java
@@ -3,8 +3,10 @@ package com.sztzjy.linkCommerce.mapper;
import com.sztzjy.linkCommerce.entity.SchoolFaculty;
import com.sztzjy.linkCommerce.entity.SchoolFacultyExample;
import java.util.List;
-import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+@Mapper
public interface SchoolFacultyMapper {
long countByExample(SchoolFacultyExample example);
diff --git a/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMajorMapper.java b/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMajorMapper.java
index cea0359..31a0006 100644
--- a/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMajorMapper.java
+++ b/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMajorMapper.java
@@ -3,8 +3,11 @@ package com.sztzjy.linkCommerce.mapper;
import com.sztzjy.linkCommerce.entity.SchoolMajor;
import com.sztzjy.linkCommerce.entity.SchoolMajorExample;
import java.util.List;
-import org.apache.ibatis.annotations.Param;
+import com.sztzjy.linkCommerce.entity.dto.SchoolMajorDto;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+@Mapper
public interface SchoolMajorMapper {
long countByExample(SchoolMajorExample example);
@@ -27,4 +30,6 @@ public interface SchoolMajorMapper {
int updateByPrimaryKeySelective(SchoolMajor record);
int updateByPrimaryKey(SchoolMajor record);
+
+ List findSchoolMajorList(@Param("schoolMajorName") String schoolMajorName,@Param("schoolFacultyId")String schoolFacultyId);
}
\ No newline at end of file
diff --git a/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMapper.java b/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMapper.java
index 2dcab38..e711c40 100644
--- a/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMapper.java
+++ b/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMapper.java
@@ -3,8 +3,12 @@ package com.sztzjy.linkCommerce.mapper;
import com.sztzjy.linkCommerce.entity.School;
import com.sztzjy.linkCommerce.entity.SchoolExample;
import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+@Mapper
public interface SchoolMapper {
long countByExample(SchoolExample example);
@@ -27,4 +31,7 @@ public interface SchoolMapper {
int updateByPrimaryKeySelective(School record);
int updateByPrimaryKey(School record);
+
+ @Select("select school_name from school where school_id =#{schoolId}")
+ String selectSchoolNameById(@Param("schoolId") String schoolId);
}
\ No newline at end of file
diff --git a/src/main/java/com/sztzjy/linkCommerce/mapper/StuGradeMapper.java b/src/main/java/com/sztzjy/linkCommerce/mapper/StuGradeMapper.java
index 6684d89..a0abeb4 100644
--- a/src/main/java/com/sztzjy/linkCommerce/mapper/StuGradeMapper.java
+++ b/src/main/java/com/sztzjy/linkCommerce/mapper/StuGradeMapper.java
@@ -3,8 +3,10 @@ package com.sztzjy.linkCommerce.mapper;
import com.sztzjy.linkCommerce.entity.StuGrade;
import com.sztzjy.linkCommerce.entity.StuGradeExample;
import java.util.List;
-import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+@Mapper
public interface StuGradeMapper {
long countByExample(StuGradeExample example);
diff --git a/src/main/java/com/sztzjy/linkCommerce/mapper/UserinfoMapper.java b/src/main/java/com/sztzjy/linkCommerce/mapper/UserinfoMapper.java
index a9abd98..a6da269 100644
--- a/src/main/java/com/sztzjy/linkCommerce/mapper/UserinfoMapper.java
+++ b/src/main/java/com/sztzjy/linkCommerce/mapper/UserinfoMapper.java
@@ -3,8 +3,10 @@ package com.sztzjy.linkCommerce.mapper;
import com.sztzjy.linkCommerce.entity.Userinfo;
import com.sztzjy.linkCommerce.entity.UserinfoExample;
import java.util.List;
-import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+@Mapper
public interface UserinfoMapper {
long countByExample(UserinfoExample example);
diff --git a/src/main/java/com/sztzjy/linkCommerce/service/ImportService.java b/src/main/java/com/sztzjy/linkCommerce/service/ImportService.java
new file mode 100644
index 0000000..7af701b
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/service/ImportService.java
@@ -0,0 +1,12 @@
+package com.sztzjy.linkCommerce.service;
+
+import com.sztzjy.linkCommerce.entity.importDto.StudentImportDTO;
+import com.sztzjy.linkCommerce.entity.importDto.TeacherImportDTO;
+
+import java.util.List;
+
+public interface ImportService {
+ void processTeacherImport(List teacherList);
+
+ void processStudentImport(List studentList);
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/service/SchoolService.java b/src/main/java/com/sztzjy/linkCommerce/service/SchoolService.java
new file mode 100644
index 0000000..6f26970
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/service/SchoolService.java
@@ -0,0 +1,31 @@
+package com.sztzjy.linkCommerce.service;
+
+import com.github.pagehelper.PageInfo;
+import com.sztzjy.linkCommerce.entity.School;
+import com.sztzjy.linkCommerce.entity.dto.SchoolClassDto;
+import com.sztzjy.linkCommerce.entity.dto.SchoolFacultyDto;
+import com.sztzjy.linkCommerce.entity.dto.SchoolMajorDto;
+
+public interface SchoolService {
+ Integer addSchool(School school);
+
+ Integer updateSchool(School school);
+
+ Integer deleteSchool(String schoolId);
+
+ PageInfo seleteSchoolFaculty(Integer index, Integer size, String schoolId, String schoolFacultyName);
+
+ PageInfo seleteSchoolMajor(Integer index, Integer size, String schoolId, String schoolMajorName, String schoolFacultyId);
+
+ PageInfo seleteSchoolClass(Integer index, Integer size, String schoolId, String className, String classSn, String schoolMajorId);
+
+ boolean existsBySchoolMajorName(String schoolName,String schoolMajorName, String schoolFacultyName);
+
+ boolean existsBySchoolClassName(String schoolName, String schoolMajorName, String schoolFacultyName, String schoolClassName);
+
+ String selectSchoolIdBySchoolName(String schoolName);
+
+ String selectFacultyIdBySchoolIdAndFacultyName(String schoolId, String schoolFacultyName);
+
+ String selectMajorIdByFacultyIdAndMajorName(String schoolFacultyId, String schoolMajorName);
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/service/UserInfoService.java b/src/main/java/com/sztzjy/linkCommerce/service/UserInfoService.java
new file mode 100644
index 0000000..473371b
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/service/UserInfoService.java
@@ -0,0 +1,6 @@
+package com.sztzjy.linkCommerce.service;
+
+public interface UserInfoService {
+
+ boolean existsByUserName(String userName);
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/service/ValidateService.java b/src/main/java/com/sztzjy/linkCommerce/service/ValidateService.java
new file mode 100644
index 0000000..e2f962e
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/service/ValidateService.java
@@ -0,0 +1,12 @@
+package com.sztzjy.linkCommerce.service;
+
+import com.sztzjy.linkCommerce.entity.importDto.StudentImportDTO;
+import com.sztzjy.linkCommerce.entity.importDto.TeacherImportDTO;
+
+import java.util.List;
+
+public interface ValidateService {
+ List validateTeacherData(List teacherList);
+
+ List validateStudentData(List studentList);
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/service/impl/ImportServiceImpl.java b/src/main/java/com/sztzjy/linkCommerce/service/impl/ImportServiceImpl.java
new file mode 100644
index 0000000..590a3e2
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/ImportServiceImpl.java
@@ -0,0 +1,66 @@
+package com.sztzjy.linkCommerce.service.impl;
+
+import com.sztzjy.linkCommerce.entity.Userinfo;
+import com.sztzjy.linkCommerce.entity.importDto.StudentImportDTO;
+import com.sztzjy.linkCommerce.entity.importDto.TeacherImportDTO;
+import com.sztzjy.linkCommerce.mapper.UserinfoMapper;
+import com.sztzjy.linkCommerce.service.ImportService;
+import com.sztzjy.linkCommerce.service.SchoolService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+//批量导入相关
+@Service
+public class ImportServiceImpl implements ImportService {
+ @Autowired
+ SchoolService schoolService;
+ @Autowired
+ UserinfoMapper userInfoMapper;
+ @Override
+ public void processTeacherImport(List teacherList) {
+ for (int i = 0; i < teacherList.size(); i++) {
+ TeacherImportDTO teacherImportDTO = teacherList.get(i);
+ Userinfo userInfo = new Userinfo();
+ userInfo.setUserId(UUID.randomUUID().toString());
+ userInfo.setName(teacherImportDTO.getTeacherName());
+ userInfo.setUsername(teacherImportDTO.getUserName());
+ userInfo.setPassword("123qwe");
+ userInfo.setPhone(teacherImportDTO.getPhone());
+ userInfo.setEmail(teacherImportDTO.getEmail());
+ userInfo.setCreateTime(new Date());
+ userInfo.setRole(3);
+ userInfo.setSchoolId(schoolService.selectSchoolIdBySchoolName(teacherImportDTO.getSchoolName()));
+ userInfo.setSchoolFacultyId(schoolService.selectFacultyIdBySchoolIdAndFacultyName(userInfo.getSchoolId(),teacherImportDTO.getSchoolFacultyName()));
+ userInfo.setSchoolMajorId(schoolService.selectMajorIdByFacultyIdAndMajorName(userInfo.getSchoolFacultyId(),teacherImportDTO.getSchoolMajorName()));
+ userInfo.setSchoolClassId(null);
+ userInfo.setCodeFrom("导入");
+ userInfoMapper.insert(userInfo);
+ }
+ }
+
+ @Override
+ public void processStudentImport(List studentList) {
+ for (int i = 0; i < studentList.size(); i++) {
+ StudentImportDTO studentImportDTO = studentList.get(i);
+ Userinfo userInfo = new Userinfo();
+ userInfo.setUserId(UUID.randomUUID().toString());
+ userInfo.setName(studentImportDTO.getStudentName());
+ userInfo.setUsername(studentImportDTO.getUserName());
+ userInfo.setPassword("123qwe");
+ userInfo.setPhone(studentImportDTO.getPhone());
+ userInfo.setEmail(studentImportDTO.getEmail());
+ userInfo.setCreateTime(new Date());
+ userInfo.setRole(4);
+ userInfo.setSchoolId(schoolService.selectSchoolIdBySchoolName(studentImportDTO.getSchoolName()));
+ userInfo.setSchoolFacultyId(schoolService.selectFacultyIdBySchoolIdAndFacultyName(userInfo.getSchoolId(),studentImportDTO.getSchoolFacultyName()));
+ userInfo.setSchoolMajorId(schoolService.selectMajorIdByFacultyIdAndMajorName(userInfo.getSchoolFacultyId(),studentImportDTO.getSchoolMajorName()));
+ userInfo.setSchoolClassId(null);
+ userInfo.setCodeFrom("导入");
+ userInfoMapper.insert(userInfo);
+ }
+ }
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/service/impl/SchoolServiceImpl.java b/src/main/java/com/sztzjy/linkCommerce/service/impl/SchoolServiceImpl.java
new file mode 100644
index 0000000..bff02a3
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/SchoolServiceImpl.java
@@ -0,0 +1,236 @@
+package com.sztzjy.linkCommerce.service.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.sztzjy.linkCommerce.entity.*;
+import com.sztzjy.linkCommerce.entity.dto.SchoolClassDto;
+import com.sztzjy.linkCommerce.entity.dto.SchoolFacultyDto;
+import com.sztzjy.linkCommerce.entity.dto.SchoolMajorDto;
+import com.sztzjy.linkCommerce.mapper.SchoolClassMapper;
+import com.sztzjy.linkCommerce.mapper.SchoolFacultyMapper;
+import com.sztzjy.linkCommerce.mapper.SchoolMajorMapper;
+import com.sztzjy.linkCommerce.mapper.SchoolMapper;
+import com.sztzjy.linkCommerce.service.SchoolService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+import java.util.List;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+@Service
+public class SchoolServiceImpl implements SchoolService {
+ @Autowired
+ SchoolMapper schoolMapper;
+ @Autowired
+ SchoolFacultyMapper schoolFacultyMapper;
+ @Autowired
+ SchoolMajorMapper schoolMajorMapper;
+ @Autowired
+ SchoolClassMapper schoolClassMapper;
+
+ @Override
+ public Integer addSchool(School school) {
+ //新增院校
+ String schoolId = UUID.randomUUID().toString();
+ school.setSchoolId(schoolId);
+ int insert = schoolMapper.insert(school);
+ return insert;
+ }
+
+ @Override
+ public Integer updateSchool(School school) {
+ int i = schoolMapper.updateByPrimaryKey(school);
+ return i;
+ }
+
+ @Override
+ public Integer deleteSchool(String schoolId) {
+ int i = schoolMapper.deleteByPrimaryKey(schoolId);
+ return i;
+ }
+
+ @Override
+ public PageInfo seleteSchoolFaculty(Integer index, Integer size, String schoolId, String schoolFacultyName) {
+ PageHelper.startPage(index, size);
+
+ // 查询院系信息,假设您有相应的 DAO 或 Mapper 可以用来执行查询
+ SchoolFacultyExample schoolFacultyExample = new SchoolFacultyExample();
+ SchoolFacultyExample.Criteria criteria = schoolFacultyExample.createCriteria();
+ if (schoolId != null) {
+ criteria.andSchoolIdEqualTo(schoolId);
+ }
+ if (schoolFacultyName != null) {
+ criteria.andSchoolFacultyNameLike("%" + schoolFacultyName + "%");
+ }
+ List schoolFaculties = schoolFacultyMapper.selectByExample(schoolFacultyExample);
+
+ // 将院系信息转换为 DTO
+ List dtoList = schoolFaculties.stream()
+ .map(schoolFaculty -> {
+ SchoolFacultyDto dto = new SchoolFacultyDto();
+ dto.setSchoolFaculty(schoolFaculty);
+ // 设置信息学校名称,假设在 schoolFaculty 对象中有 school_id,您可以通过服务获取学校名称
+ String schoolName = schoolMapper.selectSchoolNameById(schoolFaculty.getSchoolId());
+ dto.setSchoolName(schoolName);
+ return dto;
+ })
+ .collect(Collectors.toList());
+
+ // 创建 PageInfo 对象,将 DTO 列表封装成分页结果
+ return new PageInfo<>(dtoList);
+ }
+
+ @Override
+ public PageInfo seleteSchoolMajor(Integer index, Integer size, String schoolId, String schoolMajorName, String schoolFacultyId) {
+ // 使用 PageHelper 进行分页
+ PageHelper.startPage(index, size);
+ // 调用 Mapper 查询数据
+ List schoolMajorList = schoolMajorMapper.findSchoolMajorList(schoolMajorName, schoolFacultyId);
+ // 返回分页结果
+ return new PageInfo<>(schoolMajorList);
+ }
+
+ @Override
+ public PageInfo seleteSchoolClass(Integer index, Integer size, String schoolId, String className, String classSn, String schoolMajorId) {
+ PageHelper.startPage(index, size);
+
+ // 查询院系信息,假设您有相应的 DAO 或 Mapper 可以用来执行查询
+ SchoolClassExample schoolClassExample = new SchoolClassExample();
+ SchoolClassExample.Criteria criteria = schoolClassExample.createCriteria();
+ if (className != null) {
+ criteria.andClassNameLike("%" + className + "%");
+ }
+ if (classSn != null) {
+ criteria.andClassSnEqualTo(classSn);
+ }
+ if (schoolMajorId != null) {
+ criteria.andSchoolMajorIdEqualTo(schoolMajorId);
+ }
+ List schoolClasses = schoolClassMapper.selectByExample(schoolClassExample);
+
+ // 将院系信息转换为 DTO
+ List dtoList = schoolClasses.stream()
+ .map(schoolClass -> {
+ SchoolClassDto dto = new SchoolClassDto();
+ dto.setSchoolClass(schoolClass);
+ String schoolName = schoolMapper.selectSchoolNameById(schoolId);
+ dto.setSchoolName(schoolName);
+ return dto;
+ })
+ .collect(Collectors.toList());
+
+ // 创建 PageInfo 对象,将 DTO 列表封装成分页结果
+ return new PageInfo<>(dtoList);
+ }
+
+ @Override
+ public boolean existsBySchoolMajorName(String schoolName, String schoolMajorName, String schoolFacultyName) {
+ SchoolExample schoolExample = new SchoolExample();
+ schoolExample.createCriteria().andSchoolNameEqualTo(schoolName);
+ List schoolList = schoolMapper.selectByExample(schoolExample);
+ if (schoolList.isEmpty() || schoolList == null) {
+ return false;
+ } else {
+ School school = schoolList.get(0);
+ String schoolId = school.getSchoolId();
+ SchoolFacultyExample schoolFacultyExample = new SchoolFacultyExample();
+ schoolFacultyExample.createCriteria().andSchoolIdEqualTo(schoolId).andSchoolFacultyNameEqualTo(schoolFacultyName);
+ List schoolFacultyList = schoolFacultyMapper.selectByExample(schoolFacultyExample);
+ if (schoolFacultyList.isEmpty() || schoolFacultyList == null) {
+ return false;
+ } else {
+ SchoolFaculty schoolFaculty = schoolFacultyList.get(0);
+ String schoolFacultyId = schoolFaculty.getSchoolFacultyId();
+ SchoolMajorExample schoolMajorExample = new SchoolMajorExample();
+ schoolMajorExample.createCriteria().andSchoolMajorNameEqualTo(schoolMajorName).andSchoolFacultyIdEqualTo(schoolFacultyId);
+ List schoolMajorList = schoolMajorMapper.selectByExample(schoolMajorExample);
+ if (schoolMajorList.isEmpty() || schoolMajorList == null) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+ }
+ }
+
+ @Override
+ public boolean existsBySchoolClassName(String schoolName, String schoolMajorName, String schoolFacultyName, String schoolClassName) {
+ SchoolExample schoolExample = new SchoolExample();
+ schoolExample.createCriteria().andSchoolNameEqualTo(schoolName);
+ List schoolList = schoolMapper.selectByExample(schoolExample);
+ if (schoolList.isEmpty() || schoolList == null) {
+ return false;
+ } else {
+ School school = schoolList.get(0);
+ String schoolId = school.getSchoolId();
+ SchoolFacultyExample schoolFacultyExample = new SchoolFacultyExample();
+ schoolFacultyExample.createCriteria().andSchoolIdEqualTo(schoolId).andSchoolFacultyNameEqualTo(schoolFacultyName);
+ List schoolFacultyList = schoolFacultyMapper.selectByExample(schoolFacultyExample);
+ if (schoolFacultyList.isEmpty() || schoolFacultyList == null) {
+ return false;
+ } else {
+ SchoolFaculty schoolFaculty = schoolFacultyList.get(0);
+ String schoolFacultyId = schoolFaculty.getSchoolFacultyId();
+ SchoolMajorExample schoolMajorExample = new SchoolMajorExample();
+ schoolMajorExample.createCriteria().andSchoolMajorNameEqualTo(schoolMajorName).andSchoolFacultyIdEqualTo(schoolFacultyId);
+ List schoolMajorList = schoolMajorMapper.selectByExample(schoolMajorExample);
+ if (schoolMajorList.isEmpty() || schoolMajorList == null) {
+ return false;
+ } else {
+ SchoolMajor schoolMajor = schoolMajorList.get(0);
+ String schoolMajorId = schoolMajor.getSchoolMajorId();
+ SchoolClassExample schoolClassExample = new SchoolClassExample();
+ schoolClassExample.createCriteria().andClassNameEqualTo(schoolClassName).andSchoolMajorIdEqualTo(schoolMajorId);
+ List schoolClasseList = schoolClassMapper.selectByExample(schoolClassExample);
+ if(schoolClasseList.isEmpty() || schoolClasseList==null){
+ return false;
+ }else {
+ return true;
+ }
+ }
+ }
+ }
+ }
+
+ //根据学校名称查询学校ID
+ @Override
+ public String selectSchoolIdBySchoolName(String schoolName) {
+ SchoolExample schoolExample = new SchoolExample();
+ schoolExample.createCriteria().andSchoolNameEqualTo(schoolName);
+ List schoolList = schoolMapper.selectByExample(schoolExample);
+ if (schoolList.isEmpty() || schoolList == null) {
+ return null;
+ } else {
+ return schoolList.get(0).getSchoolId();
+ }
+ }
+
+ //根据学校ID和院系名查询院系ID
+ @Override
+ public String selectFacultyIdBySchoolIdAndFacultyName(String schoolId, String schoolFacultyName) {
+ SchoolFacultyExample schoolFacultyExample = new SchoolFacultyExample();
+ schoolFacultyExample.createCriteria().andSchoolIdEqualTo(schoolId).andSchoolFacultyNameEqualTo(schoolFacultyName);
+ List schoolFacultyList = schoolFacultyMapper.selectByExample(schoolFacultyExample);
+ if (schoolFacultyList.isEmpty() || schoolFacultyList == null) {
+ return null;
+ } else {
+ return schoolFacultyList.get(0).getSchoolFacultyId();
+ }
+ }
+
+ //根据院系ID和专业名称查询专业ID
+ @Override
+ public String selectMajorIdByFacultyIdAndMajorName(String schoolFacultyId, String schoolMajorName) {
+ SchoolMajorExample schoolMajorExample = new SchoolMajorExample();
+ schoolMajorExample.createCriteria().andSchoolMajorNameEqualTo(schoolMajorName).andSchoolFacultyIdEqualTo(schoolFacultyId);
+ List schoolMajorList = schoolMajorMapper.selectByExample(schoolMajorExample);
+ if (schoolMajorList.isEmpty() || schoolMajorList == null) {
+ return null;
+ } else {
+ return schoolMajorList.get(0).getSchoolMajorId();
+ }
+ }
+
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/service/impl/UserInfoServiceImpl.java b/src/main/java/com/sztzjy/linkCommerce/service/impl/UserInfoServiceImpl.java
new file mode 100644
index 0000000..807a8ea
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/UserInfoServiceImpl.java
@@ -0,0 +1,38 @@
+package com.sztzjy.linkCommerce.service.impl;
+
+import com.sztzjy.linkCommerce.entity.Userinfo;
+import com.sztzjy.linkCommerce.entity.UserinfoExample;
+import com.sztzjy.linkCommerce.mapper.*;
+
+import com.sztzjy.linkCommerce.service.UserInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+
+@Service
+public class UserInfoServiceImpl implements UserInfoService {
+ @Autowired
+ UserinfoMapper userInfoMapper;
+ @Autowired
+ SchoolMapper schoolMapper;
+ @Autowired
+ SchoolFacultyMapper schoolFacultyMapper;
+ @Autowired
+ SchoolMajorMapper schoolMajorMapper;
+ @Autowired
+ SchoolClassMapper schoolClassMapper;
+
+ @Override
+ public boolean existsByUserName(String userName) {
+ UserinfoExample userInfoExample = new UserinfoExample();
+ userInfoExample.createCriteria().andUsernameEqualTo(userName);
+ List userInfos = userInfoMapper.selectByExample(userInfoExample);
+ if(userInfos.isEmpty() || userInfos==null){
+ return false;
+ }else {
+ return true;
+ }
+ }
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/service/impl/ValidateServiceImpl.java b/src/main/java/com/sztzjy/linkCommerce/service/impl/ValidateServiceImpl.java
new file mode 100644
index 0000000..7124469
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/ValidateServiceImpl.java
@@ -0,0 +1,185 @@
+package com.sztzjy.linkCommerce.service.impl;
+
+import com.sztzjy.linkCommerce.entity.importDto.StudentImportDTO;
+import com.sztzjy.linkCommerce.entity.importDto.TeacherImportDTO;
+import com.sztzjy.linkCommerce.service.SchoolService;
+import com.sztzjy.linkCommerce.service.UserInfoService;
+import com.sztzjy.linkCommerce.service.ValidateService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+//数据校验
+@Service
+public class ValidateServiceImpl implements ValidateService {
+ @Autowired
+ SchoolService schoolService;
+ @Autowired
+ UserInfoService userInfoService;
+
+ @Override
+ public List validateTeacherData(List teacherList) {
+ List errors = new ArrayList<>();
+
+ if (teacherList == null || teacherList.isEmpty()) {
+ errors.add("Excel中没有数据");
+ return errors;
+ }
+
+ // 用于检查工号重复
+ Set teacherNos = new HashSet<>();
+
+ for (int i = 0; i < teacherList.size(); i++) {
+ TeacherImportDTO teacher = teacherList.get(i);
+ int rowNum = i + 2; // Excel行号(标题行+1)
+
+ // 1. 校验院校名称
+ if (StringUtils.isBlank(teacher.getSchoolName())) {
+ errors.add("第" + rowNum + "行: 院校名称不能为空");
+ }
+
+ // 2. 校验院系名称
+ if (StringUtils.isBlank(teacher.getSchoolFacultyName())) {
+ errors.add("第" + rowNum + "行: 院系名称不能为空");
+ }
+
+ // 3. 校验专业名称
+ if (StringUtils.isBlank(teacher.getSchoolMajorName())) {
+ errors.add("第" + rowNum + "行: 专业名称不能为空");
+ } else if (!schoolService.existsBySchoolMajorName(teacher.getSchoolName(),teacher.getSchoolMajorName(), teacher.getSchoolFacultyName())) {
+ errors.add("第" + rowNum + "行: 专业'" + teacher.getSchoolMajorName() +
+ "'在院系'" + teacher.getSchoolFacultyName() + "'下不存在");
+ }
+
+ // 4. 校验教师姓名
+ if (StringUtils.isBlank(teacher.getTeacherName())) {
+ errors.add("第" + rowNum + "行: 教师姓名不能为空");
+ }
+
+ // 5. 校验工号
+ if (StringUtils.isBlank(teacher.getUserName())) {
+ errors.add("第" + rowNum + "行: 工号不能为空");
+ } else {
+ // 5.1 检查是否为数字
+ if (!teacher.getUserName().matches("\\d+")) {
+ errors.add("第" + rowNum + "行: 工号必须为数字");
+ }
+
+ // 5.2 检查是否重复(在当前文件中)
+ if (teacherNos.contains(teacher.getUserName())) {
+ errors.add("第" + rowNum + "行: 工号" + teacher.getUserName() + "工号已存在");
+ }
+ teacherNos.add(teacher.getUserName());
+
+ // 5.3 检查是否已存在于数据库(异步检查,避免频繁查询)
+ if (userInfoService.existsByUserName(teacher.getUserName())) {
+ errors.add("第" + rowNum + "行: 工号" + teacher.getUserName() + "已存在");
+ }
+ }
+
+ // 6. 校验电话
+ if (StringUtils.isNotBlank(teacher.getPhone())) {
+ if (!teacher.getPhone().matches("^1[3-9]\\d{9}$")) {
+ errors.add("第" + rowNum + "行: 电话格式不正确");
+ }
+ }
+
+ // 7. 校验邮箱
+ if (StringUtils.isNotBlank(teacher.getEmail())) {
+ if (!teacher.getEmail().matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$")) {
+ errors.add("第" + rowNum + "行: 邮箱格式不正确");
+ }
+ }
+ }
+
+ return errors;
+ }
+
+ @Override
+ public List validateStudentData(List studentList) {
+ List errors = new ArrayList<>();
+
+ if (studentList == null || studentList.isEmpty()) {
+ errors.add("Excel中没有数据");
+ return errors;
+ }
+
+ // 用于检查工号重复
+ Set teacherNos = new HashSet<>();
+
+ for (int i = 0; i < studentList.size(); i++) {
+ StudentImportDTO student = studentList.get(i);
+ int rowNum = i + 2; // Excel行号(标题行+1)
+
+ // 1. 校验院校名称
+ if (StringUtils.isBlank(student.getSchoolName())) {
+ errors.add("第" + rowNum + "行: 院校名称不能为空");
+ }
+
+ // 2. 校验院系名称
+ if (StringUtils.isBlank(student.getSchoolFacultyName())) {
+ errors.add("第" + rowNum + "行: 院系名称不能为空");
+ }
+
+ // 3. 校验专业名称
+ if (StringUtils.isBlank(student.getSchoolMajorName())) {
+ errors.add("第" + rowNum + "行: 专业名称不能为空");
+ }
+
+ // 4. 校验班级名称
+ if (StringUtils.isBlank(student.getSchoolClassName())) {
+ errors.add("第" + rowNum + "行: 专业名称不能为空");
+ } else if (!schoolService.existsBySchoolClassName(student.getSchoolName(),student.getSchoolMajorName(), student.getSchoolFacultyName(),student.getSchoolClassName())) {
+ errors.add("第" + rowNum + "行: 班级'" + student.getSchoolClassName() +
+ "'在专业'" + student.getSchoolMajorName() + "'下不存在");
+ }
+
+ // 4. 校验教师姓名
+ if (StringUtils.isBlank(student.getStudentName())) {
+ errors.add("第" + rowNum + "行: 学生姓名不能为空");
+ }
+
+ // 5. 校验工号
+ if (StringUtils.isBlank(student.getUserName())) {
+ errors.add("第" + rowNum + "行: 学号号不能为空");
+ } else {
+ // 5.1 检查是否为数字
+ if (!student.getUserName().matches("\\d+")) {
+ errors.add("第" + rowNum + "行: 学号必须为数字");
+ }
+
+ // 5.2 检查是否重复(在当前文件中)
+ if (teacherNos.contains(student.getUserName())) {
+ errors.add("第" + rowNum + "行: 学号" + student.getUserName() + "学号已存在");
+ }
+ teacherNos.add(student.getUserName());
+
+ // 5.3 检查是否已存在于数据库(异步检查,避免频繁查询)
+ if (userInfoService.existsByUserName(student.getUserName())) {
+ errors.add("第" + rowNum + "行: 学号" + student.getUserName() + "已存在");
+ }
+ }
+
+ // 6. 校验电话
+ if (StringUtils.isNotBlank(student.getPhone())) {
+ if (!student.getPhone().matches("^1[3-9]\\d{9}$")) {
+ errors.add("第" + rowNum + "行: 电话格式不正确");
+ }
+ }
+
+ // 7. 校验邮箱
+ if (StringUtils.isNotBlank(student.getEmail())) {
+ if (!student.getEmail().matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$")) {
+ errors.add("第" + rowNum + "行: 邮箱格式不正确");
+ }
+ }
+ }
+
+ return errors;
+ }
+}
diff --git a/src/main/java/com/sztzjy/linkCommerce/util/Pinyin4jUtil.java b/src/main/java/com/sztzjy/linkCommerce/util/Pinyin4jUtil.java
new file mode 100644
index 0000000..abc98f0
--- /dev/null
+++ b/src/main/java/com/sztzjy/linkCommerce/util/Pinyin4jUtil.java
@@ -0,0 +1,45 @@
+package com.sztzjy.linkCommerce.util;
+
+import net.sourceforge.pinyin4j.PinyinHelper;
+import org.springframework.stereotype.Component;
+
+@Component
+public class Pinyin4jUtil {
+
+ //将汉族首字母返回
+ public String convertToPinyin(String chinese) {
+ StringBuilder pinyinBuilder = new StringBuilder();
+
+ for (char c : chinese.toCharArray()) {
+ // 判断是否为汉字字符
+ String[] pinyins = PinyinHelper.toHanyuPinyinStringArray(c);
+ if (pinyins != null && pinyins.length > 0) {
+ // 取拼音的第一个发音并转换为小写
+ pinyinBuilder.append(pinyins[0].toLowerCase().charAt(0)); // 仅取第一个拼音的第一个字母
+ } else {
+ // 追加非汉字字符(如数字和字母)
+ pinyinBuilder.append(c);
+ }
+ }
+
+ return pinyinBuilder.toString();
+ }
+
+// public static void main(String[] args) {
+// String chinese = "广州科技1号一周大学";
+// StringBuilder pinyinBuilder = new StringBuilder();
+//
+// for (char c : chinese.toCharArray()) {
+// // 判断是否为汉字字符
+// String[] pinyins = PinyinHelper.toHanyuPinyinStringArray(c);
+// if (pinyins != null && pinyins.length > 0) {
+// // 取拼音的第一个发音并转换为小写
+// pinyinBuilder.append(pinyins[0].toLowerCase().charAt(0)); // 仅取第一个拼音的第一个字母
+// } else {
+// // 追加非汉字字符(如数字和字母)
+// pinyinBuilder.append(c);
+// }
+// }
+// System.out.println(pinyinBuilder.toString().trim());
+// }
+}
diff --git a/src/main/resources/mappers/SchoolMajorMapper.xml b/src/main/resources/mappers/SchoolMajorMapper.xml
index 9b28b10..69ae1bd 100644
--- a/src/main/resources/mappers/SchoolMajorMapper.xml
+++ b/src/main/resources/mappers/SchoolMajorMapper.xml
@@ -241,4 +241,28 @@
create_time = #{createTime,jdbcType=TIMESTAMP}
where school_major_id = #{schoolMajorId,jdbcType=VARCHAR}
+
+
\ No newline at end of file