diff --git a/src/main/java/com/sztzjy/linkCommerce/config/Constant.java b/src/main/java/com/sztzjy/linkCommerce/config/Constant.java index 87d5cfb..9d66b96 100644 --- a/src/main/java/com/sztzjy/linkCommerce/config/Constant.java +++ b/src/main/java/com/sztzjy/linkCommerce/config/Constant.java @@ -16,6 +16,8 @@ public class Constant { */ public static final String BASIC = "Basic"; + public static final String SYSTEMNAME = "电商互联网产品开发实训系统"; + public static final String PRO_GYQDGL="供应渠道管理"; public static final String MODULE_CGXQYC="采购需求预测"; public static final String MODULE_CGCPDW="采购产品定位"; diff --git a/src/main/java/com/sztzjy/linkCommerce/config/security/JwtUser.java b/src/main/java/com/sztzjy/linkCommerce/config/security/JwtUser.java index abc13a8..94f7e77 100644 --- a/src/main/java/com/sztzjy/linkCommerce/config/security/JwtUser.java +++ b/src/main/java/com/sztzjy/linkCommerce/config/security/JwtUser.java @@ -6,6 +6,7 @@ import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.Objects; @@ -29,6 +30,8 @@ public class JwtUser implements UserDetails { private String majorName; private int collegeId; private String collegeName; + private Date authorizeTime; + private Date authorizeEndTime; private List authorityCodes; @Override diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/LoginController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/LoginController.java index 83d7ba3..623e37e 100644 --- a/src/main/java/com/sztzjy/linkCommerce/controller/stu/LoginController.java +++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/LoginController.java @@ -1,9 +1,13 @@ package com.sztzjy.linkCommerce.controller.stu; +import cn.hutool.core.util.IdUtil; import cn.hutool.system.UserInfo; import com.sztzjy.linkCommerce.annotation.AnonymousAccess; +import com.sztzjy.linkCommerce.config.Constant; +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.SchoolClass; import com.sztzjy.linkCommerce.entity.SchoolClassExample; @@ -13,9 +17,11 @@ import com.sztzjy.linkCommerce.mapper.SchoolClassMapper; import com.sztzjy.linkCommerce.mapper.UserinfoMapper; import com.sztzjy.linkCommerce.service.SchoolService; import com.sztzjy.linkCommerce.service.UserInfoService; +import com.sztzjy.linkCommerce.util.ResultDataEntity; import com.sztzjy.linkCommerce.util.ResultEntity; import com.sztzjy.linkCommerce.util.RsaUtil; +import com.sztzjy.linkCommerce.util.TzApi; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -25,6 +31,7 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio 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.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -36,6 +43,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; @RestController @RequestMapping("/api/user") @@ -86,7 +94,12 @@ public class LoginController { map.put("schoolId", user.getSchoolId()); map.put("classId", user.getSchoolClassId()); if(user.getRole()==4){ - map.put("className",schoolClassMapper.selectByPrimaryKey(user.getSchoolClassId()).getClassName()); + SchoolClass schoolClass = schoolClassMapper.selectByPrimaryKey(user.getSchoolClassId()); + if (schoolClass == null) { + map.put("className",null); + }else { + map.put("className",schoolClass.getClassName()); + } } map.put("userId", user.getUserId()); map.put("token", token); @@ -95,7 +108,83 @@ public class LoginController { return new ResultEntity(HttpStatus.BAD_REQUEST, "账号不存在"); } }else { - return new ResultEntity(HttpStatus.BAD_REQUEST, "暂不支持智云跳转"); + if (!org.springframework.util.StringUtils.hasText(userName) && !org.springframework.util.StringUtils.hasText(passwordEncode) && !org.springframework.util.StringUtils.hasText(TOKEN)) { + throw new IllegalArgumentException("请提供登录凭据"); + } + if (org.springframework.util.StringUtils.hasText(TOKEN)) { + jwtUser = TokenProvider.getJWTUserByZhiYun(TOKEN); + if (jwtUser == null) { + throw new UnAuthorizedException("token 无效!"); + } + + passWord = jwtUser.getPassword(); + userName = jwtUser.getStudentId(); + if (!org.springframework.util.StringUtils.hasText(passWord)) { + throw new UnAuthorizedException("token 中缺少用户密码信息!"); + } + + try { + jwtUser = TzApi.foreignExchangeTradingLogin(userName, passWord, Constant.SYSTEMNAME); + if (jwtUser == null) { + throw new UnAuthorizedException("登录失败,用户不存在!"); + } + + Date authorizeTime = jwtUser.getAuthorizeTime(); + Date authorizeEndTime = jwtUser.getAuthorizeEndTime(); + + if (authorizeTime == null || authorizeEndTime == null) { + throw new UnAuthorizedException("系统未授权!"); + } + + Date now = new Date(); + if (now.before(authorizeTime) || now.after(authorizeEndTime)) { + throw new UnAuthorizedException("系统授权已过期!"); + } + + Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities()); + SecurityContextHolder.getContext().setAuthentication(authentication); + + String token = TokenProvider.createToken(jwtUser); + + UserinfoExample stuUserExample = new UserinfoExample(); + stuUserExample.createCriteria().andUsernameEqualTo(userName); + List userinfos = userinfoMapper.selectByExample(stuUserExample); + //不存在返回错误,正确放行 + if (userinfos.isEmpty()) { + return new ResultEntity(HttpStatus.BAD_REQUEST, "密码错误"); + } + + + + Map map = new HashMap<>(); + Userinfo user = userinfos.get(0); + map.put("name", user.getName()); + map.put("username", user.getUsername()); + map.put("roleId", String.valueOf(user.getRole())); + map.put("schoolId", user.getSchoolId()); + map.put("classId", user.getSchoolClassId()); + if(user.getRole()==4){ + SchoolClass schoolClass = schoolClassMapper.selectByPrimaryKey(user.getSchoolClassId()); + if (schoolClass == null) { + map.put("className",null); + }else { + map.put("className",schoolClass.getClassName()); + } + } + map.put("userId", user.getUserId()); + map.put("token", token); + + return new ResultEntity(HttpStatus.OK, map); + } catch (UnAuthorizedException e) { + throw e; // 抛出授权类异常,保留原语义 + } catch (Exception e) { + // 抛出其他登录异常,比如远程接口失败、系统错误等 + throw new RuntimeException("系统登录校验失败", e); + } + } + + throw new RuntimeException("系统登录校验失败"); + } } diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/ScoreController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/ScoreController.java index 953ed18..d8081eb 100644 --- a/src/main/java/com/sztzjy/linkCommerce/controller/stu/ScoreController.java +++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/ScoreController.java @@ -23,6 +23,7 @@ import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; @@ -42,21 +43,80 @@ public class ScoreController { UserInfoService userInfoService; - @PostMapping("/selectStuModuleScoreByUserId") @ApiOperation("查询学生模块分数") @AnonymousAccess public ResultEntity> selectStuModuleScore(@RequestParam String userId) { + // 定义模块的固定排序顺序 + List moduleOrder = Arrays.asList( + "行业需求分析", + "竞争环境分析", + "消费人群分析-RFM分析", + "消费人群分析-波士顿矩阵分析", + "用户数据分析-描述性统计", + "用户数据分析-聚类分析", + "数据化选品", + "产品定价", + "产品差异化定位", + "产品结构规划", + "发布渠道评估", + "产品推广测试", + "渠道表现分析", + "产品营销定位", + "采购需求预测", + "采购产品定位", + "供应商评估与选择", + "产品表现分析", + "产品问题诊断-五维四率", + "产品问题诊断-KANO模型", + "产品问题诊断-市场机会矩阵", + "产品问题诊断-流量数据分析法", + "产品问题诊断-用户评价分析", + "品类结构优化-帕累托/ABC分析", + "品类结构优化-购物篮分析" + ); + + // 创建查询条件 StuGradeExample stuGradeExample = new StuGradeExample(); stuGradeExample.createCriteria().andUserIdEqualTo(userId); + + // 执行查询 List stuGradeList = stuGradeMapper.selectByExample(stuGradeExample); - if(stuGradeList.isEmpty() || stuGradeList==null){ + + // 检查查询结果是否为空 + if(stuGradeList == null || stuGradeList.isEmpty()) { return new ResultEntity<>(HttpStatus.OK, "暂无数据"); - }else { - return new ResultEntity<>(HttpStatus.OK, "查询成功",stuGradeList); } + + // 按照预定义的模块顺序排序 + stuGradeList.sort((g1, g2) -> { + int index1 = moduleOrder.indexOf(g1.getModule()); + int index2 = moduleOrder.indexOf(g2.getModule()); + + // 如果模块不在排序列表中,则放在最后 + index1 = index1 == -1 ? Integer.MAX_VALUE : index1; + index2 = index2 == -1 ? Integer.MAX_VALUE : index2; + + return Integer.compare(index1, index2); + }); + + return new ResultEntity<>(HttpStatus.OK, "查询成功", stuGradeList); } +// @PostMapping("/selectStuModuleScoreByUserId") +// @ApiOperation("查询学生模块分数") +// @AnonymousAccess +// public ResultEntity> selectStuModuleScore(@RequestParam String userId) { +// StuGradeExample stuGradeExample = new StuGradeExample(); +// stuGradeExample.createCriteria().andUserIdEqualTo(userId); +// List stuGradeList = stuGradeMapper.selectByExample(stuGradeExample); +// if(stuGradeList.isEmpty() || stuGradeList==null){ +// return new ResultEntity<>(HttpStatus.OK, "暂无数据"); +// }else { +// return new ResultEntity<>(HttpStatus.OK, "查询成功",stuGradeList); +// } +// } + @PostMapping("/selectModuleScore") @ApiOperation("查询学生首页成绩和排名") @AnonymousAccess diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/TaskAllocationController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/TaskAllocationController.java index 67221e4..d8554d6 100644 --- a/src/main/java/com/sztzjy/linkCommerce/controller/stu/TaskAllocationController.java +++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/TaskAllocationController.java @@ -9,6 +9,7 @@ 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.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -31,7 +32,7 @@ public class TaskAllocationController { List taskAllocations = taskAllocationMapper.selectByExample(taskAllocationExample); if (taskAllocations == null || taskAllocations.isEmpty()) { TaskAllocationExample taskAllocationExampleAdmin = new TaskAllocationExample(); - taskAllocationExample.createCriteria().andClassIdEqualTo("999999999"); + taskAllocationExampleAdmin.createCriteria().andClassIdEqualTo("999999999"); taskAllocationExampleAdmin.setOrderByClause("sort asc"); taskAllocations = taskAllocationMapper.selectByExample(taskAllocationExampleAdmin); } @@ -39,8 +40,9 @@ public class TaskAllocationController { } @PostMapping("/updateTaskAllocationByClassId") - @ApiOperation("根据班级ID查询任务分配") + @ApiOperation("编辑任务分配") @AnonymousAccess + @Transactional public ResultEntity updateTaskAllocationByClassId(@RequestBody List taskAllocationList, @RequestParam String classId, @RequestParam String schoolId) { if ("999999999".equals(schoolId) || "999999999".equals(classId)) { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "超管数据无法修改"); diff --git a/src/main/java/com/sztzjy/linkCommerce/controller/stu/TeaScoreController.java b/src/main/java/com/sztzjy/linkCommerce/controller/stu/TeaScoreController.java index 30b4aee..54de28c 100644 --- a/src/main/java/com/sztzjy/linkCommerce/controller/stu/TeaScoreController.java +++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/TeaScoreController.java @@ -8,15 +8,19 @@ import com.sztzjy.linkCommerce.entity.*; import com.sztzjy.linkCommerce.mapper.StuGradeMapper; import com.sztzjy.linkCommerce.mapper.StuRankMapper; import com.sztzjy.linkCommerce.mapper.WeightMapper; +import com.sztzjy.linkCommerce.service.ScoreRankService; import com.sztzjy.linkCommerce.util.ResultEntity; +import com.sztzjy.linkCommerce.util.excel.FilePortUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; import java.util.List; @@ -30,16 +34,23 @@ public class TeaScoreController { StuRankMapper stuRankMapper; @Autowired StuGradeMapper stuGradeMapper; + @Autowired + ScoreRankService scoreRankService; @PostMapping("/selectStuRankAndScore") @ApiOperation("查询学生成绩和排名") @AnonymousAccess - public ResultEntity> selectStuRankAndScore(@RequestParam String classId, - @RequestParam String userName, - @RequestParam String name, @RequestParam Integer index, @RequestParam Integer size) { + public ResultEntity> selectStuRankAndScore(@RequestParam(required = false) String classId, + @RequestParam(required = false) String userName, + @RequestParam(required = false) String name, + @RequestParam String schoolId, + @RequestParam Integer index, @RequestParam Integer size) { PageHelper.startPage(index, size); StuRankExample stuRankExample = new StuRankExample(); StuRankExample.Criteria criteria = stuRankExample.createCriteria(); + criteria.andSchoolIdEqualTo(schoolId); + String nowDate = scoreRankService.getNowDate(); + criteria.andUpdateTimeEqualTo(nowDate); if(StringUtils.isNotBlank(classId)){ criteria.andSchoolClassIdEqualTo(classId); } @@ -60,10 +71,60 @@ public class TeaScoreController { @ApiOperation("查看学生成绩详情") @AnonymousAccess public ResultEntity> selectStuScoreDetail(@RequestParam String userId) { + // 定义模块的固定排序顺序 + List moduleOrder = Arrays.asList( + "行业需求分析", + "竞争环境分析", + "消费人群分析-RFM分析", + "消费人群分析-波士顿矩阵分析", + "用户数据分析-描述性统计", + "用户数据分析-聚类分析", + "数据化选品", + "产品定价", + "产品差异化定位", + "产品结构规划", + "发布渠道评估", + "产品推广测试", + "渠道表现分析", + "产品营销定位", + "采购需求预测", + "采购产品定位", + "供应商评估与选择", + "产品表现分析", + "产品问题诊断-五维四率", + "产品问题诊断-KANO模型", + "产品问题诊断-市场机会矩阵", + "产品问题诊断-流量数据分析法", + "产品问题诊断-用户评价分析", + "品类结构优化-帕累托/ABC分析", + "品类结构优化-购物篮分析" + ); + + // 创建查询条件 StuGradeExample stuGradeExample = new StuGradeExample(); stuGradeExample.createCriteria().andUserIdEqualTo(userId); + + // 执行查询 List stuGradeList = stuGradeMapper.selectByExample(stuGradeExample); - return new ResultEntity<>(HttpStatus.OK, "查看学生成绩详情成功",stuGradeList); + + // 检查查询结果是否为空 + if(stuGradeList == null || stuGradeList.isEmpty()) { + return new ResultEntity<>(HttpStatus.OK, "暂无数据"); + } + + // 按照预定义的模块顺序排序 + stuGradeList.sort((g1, g2) -> { + int index1 = moduleOrder.indexOf(g1.getModule()); + int index2 = moduleOrder.indexOf(g2.getModule()); + + // 如果模块不在排序列表中,则放在最后 + index1 = index1 == -1 ? Integer.MAX_VALUE : index1; + index2 = index2 == -1 ? Integer.MAX_VALUE : index2; + + return Integer.compare(index1, index2); + }); + + return new ResultEntity<>(HttpStatus.OK, "查看学生成绩详情成功", stuGradeList); } //获取学校权重 @@ -82,6 +143,7 @@ public class TeaScoreController { @PostMapping("/updateWeight") @ApiOperation("修改权重") @AnonymousAccess + @Transactional public ResultEntity updateWeight(@RequestBody Weight weight, @RequestParam String schoolId) { if("999999999".equals(schoolId)){ return new ResultEntity<>(HttpStatus.BAD_REQUEST, "权限不足"); @@ -107,4 +169,33 @@ public class TeaScoreController { } } } + + + @PostMapping("/exportStuScore") + @ApiOperation("导出学生成绩") + @AnonymousAccess + public void exportStuScore(HttpServletResponse response, + @RequestParam String schoolId) { + if (StringUtils.isNotBlank(schoolId)) { + StuRankExample stuRankExample = new StuRankExample(); + StuRankExample.Criteria criteria = stuRankExample.createCriteria(); + criteria.andSchoolIdEqualTo(schoolId); + String nowDate = scoreRankService.getNowDate(); + criteria.andUpdateTimeEqualTo(nowDate); + stuRankExample.setOrderByClause("stu_rank asc"); + List stuRankList = stuRankMapper.selectByExample(stuRankExample); + //导出的表名 + String title = "学生成绩"; + //表中第一行表头字段 + String[] headers = {"学号", "学生姓名", "班级名称", "排名", "总分数"}; + + //具体需要写入excel需要哪些字段,这些字段取自UserReward类,也就是上面的实际数据结果集的泛型 + List listColumn = Arrays.asList("username", "name", "className", "stuRank", "score"); + try { + FilePortUtil.exportExcel(response, title, headers, stuRankList, listColumn); + } catch (Exception e) { + e.printStackTrace(); + } + } + } } 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 acef749..bedb324 100644 --- a/src/main/java/com/sztzjy/linkCommerce/controller/stu/UserController.java +++ b/src/main/java/com/sztzjy/linkCommerce/controller/stu/UserController.java @@ -1,8 +1,6 @@ package com.sztzjy.linkCommerce.controller.stu; - - import com.alibaba.excel.EasyExcel; import com.fasterxml.jackson.core.JsonProcessingException; import com.github.pagehelper.PageHelper; @@ -116,15 +114,15 @@ public class UserController { @ApiOperation("院校管理-院校列表查询") @AnonymousAccess public ResultEntity> getSchoolList(@ApiParam("当前页") Integer index, - @ApiParam("每页条数") Integer size, - @ApiParam("院校名称") @RequestParam(required = false) String schoolName) { + @ApiParam("每页条数") Integer size, + @ApiParam("院校名称") @RequestParam(required = false) String schoolName) { PageHelper.startPage(index, size); - SchoolExample schoolExample=new SchoolExample(); + SchoolExample schoolExample = new SchoolExample(); SchoolExample.Criteria criteria = schoolExample.createCriteria(); - if(StringUtils.isNotEmpty(schoolName)){ - criteria.andSchoolNameLike("%"+schoolName+"%"); + if (StringUtils.isNotEmpty(schoolName)) { + criteria.andSchoolNameLike("%" + schoolName + "%"); } List schools = schoolMapper.selectByExample(schoolExample); PageInfo schoolPageInfo = new PageInfo<>(schools); @@ -177,14 +175,24 @@ public class UserController { @PostMapping("/seleteSchoolFaculty") @ApiOperation("院系管理-查询") @AnonymousAccess - public ResultEntity> seleteSchoolFaculty(@ApiParam("当前页") Integer index, - @ApiParam("每页条数") Integer size, + public ResultEntity> seleteSchoolFaculty(@ApiParam("当前页") @RequestParam Integer index, + @ApiParam("每页条数") @RequestParam 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("/seleteSchoolFacultyList") + @ApiOperation("院系管理-院系列表查询") + @AnonymousAccess + public ResultEntity> seleteSchoolFacultyList(@ApiParam("学校ID") @RequestParam String schoolId) { + SchoolFacultyExample schoolFacultyExample = new SchoolFacultyExample(); + schoolFacultyExample.createCriteria().andSchoolIdEqualTo(schoolId); + List schoolFacultyList = schoolFacultyMapper.selectByExample(schoolFacultyExample); + return new ResultEntity<>(HttpStatus.OK, "院系管理-院系列表查询查询", schoolFacultyList); + } + @PostMapping("/deleteSchoolFaculty") @ApiOperation("院系管理-删除") @@ -192,22 +200,28 @@ public class UserController { 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, "院系管理-删除失败-权限不足"); + if (userInfo.getRole() == 3) { + SchoolFaculty schoolFaculty = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId); + if (!schoolFaculty.getSchoolId().equals(userInfo.getSchoolId())) { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-删除失败-权限不足"); + } else { + int i = schoolFacultyMapper.deleteByPrimaryKey(schoolFacultyId); + if (i == 1) { + return new ResultEntity<>(HttpStatus.OK, "院系管理-删除成功"); + } else { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-删除失败"); } } + } + if (userInfo.getRole() == 1) { int i = schoolFacultyMapper.deleteByPrimaryKey(schoolFacultyId); if (i == 1) { return new ResultEntity<>(HttpStatus.OK, "院系管理-删除成功"); } else { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-删除失败"); } - } else { - return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-删除失败-权限不足"); } + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-删除失败-权限不足"); } @PostMapping("/updateSchoolFaculty") @@ -219,22 +233,28 @@ public class UserController { } //先查询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, "院系管理-编辑失败-权限不足"); + if (userInfo.getRole() == 3) { + SchoolFaculty schoolFacultyT = schoolFacultyMapper.selectByPrimaryKey(schoolFaculty.getSchoolFacultyId()); + if (!schoolFacultyT.getSchoolId().equals(userInfo.getSchoolId())) { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-编辑失败-权限不足"); + } else { + int i = schoolFacultyMapper.updateByPrimaryKey(schoolFaculty); + if (i == 1) { + return new ResultEntity<>(HttpStatus.OK, "院系管理-编辑成功"); + } else { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-编辑失败"); } } + } + if (userInfo.getRole() == 1) { 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, "院系管理-编辑失败-权限不足"); } + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系管理-编辑失败-权限不足"); } //*****************************************专业管理********************************************* @@ -284,8 +304,8 @@ public class UserController { @PostMapping("/selectSchoolMajor") @ApiOperation("专业管理-查询") @AnonymousAccess - public ResultEntity> selectSchoolMajor(@ApiParam("当前页") Integer index, - @ApiParam("每页条数") Integer size, + public ResultEntity> selectSchoolMajor(@ApiParam("当前页") @RequestParam Integer index, + @ApiParam("每页条数") @RequestParam Integer size, @ApiParam("学校ID") @RequestParam(required = false) String schoolId, @ApiParam("院系ID-学校管理员使用") @RequestParam(required = false) String schoolFacultyId, @ApiParam("专业名称") @RequestParam(required = false) String schoolMajorName) { @@ -293,6 +313,20 @@ public class UserController { return new ResultEntity<>(HttpStatus.OK, "专业管理-查询成功", pageInfo); } + @PostMapping("/selectSchoolMajorList") + @ApiOperation("专业管理-列表查询") + @AnonymousAccess + public ResultEntity> selectSchoolMajorList(@ApiParam("院系ID") @RequestParam String schoolFacultyId) { + if (StringUtils.isBlank(schoolFacultyId)) { + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "院系ID为null"); + } + SchoolMajorExample schoolMajorExample = new SchoolMajorExample(); + SchoolMajorExample.Criteria criteria = schoolMajorExample.createCriteria(); + criteria.andSchoolFacultyIdEqualTo(schoolFacultyId); + List schoolMajorList = schoolMajorMapper.selectByExample(schoolMajorExample); + return new ResultEntity<>(HttpStatus.OK, "专业管理-查询成功", schoolMajorList); + } + @PostMapping("/deleteSchoolMajor") @ApiOperation("专业管理-删除") @AnonymousAccess @@ -309,7 +343,7 @@ public class UserController { @PostMapping("/updateSchoolMajor") @ApiOperation("专业管理-编辑") @AnonymousAccess - public ResultEntity updateSchoolMajor(@RequestBody SchoolMajor schoolMajor, @RequestParam String userId) { + public ResultEntity updateSchoolMajor(@RequestBody SchoolMajor schoolMajor) { if (StringUtils.isBlank(schoolMajor.getSchoolMajorId())) { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "专业管理-编辑失败-主键ID缺失"); } @@ -365,6 +399,7 @@ public class UserController { String classNamePY = pinyin4jUtil.convertToPinyin(className); schoolClass.setClassSn(schoolNamePY + "_" + classNamePY); schoolClass.setCreateTime(new Date()); + schoolClass.setSchoolId(schoolId); int insert = schoolClassMapper.insert(schoolClass); if (insert == 1) { @@ -377,8 +412,8 @@ public class UserController { @PostMapping("/seleteSchoolClass") @ApiOperation("班级管理-查询") @AnonymousAccess - public ResultEntity> seleteSchoolClass(@ApiParam("当前页") Integer index, - @ApiParam("每页条数") Integer size, + public ResultEntity> seleteSchoolClass(@ApiParam("当前页") @RequestParam Integer index, + @ApiParam("每页条数") @RequestParam Integer size, @ApiParam("学校ID") @RequestParam(required = false) String schoolId, @ApiParam("专业ID-学校管理员使用") @RequestParam(required = false) String schoolMajorId, @ApiParam("班级名称") @RequestParam(required = false) String className, @@ -387,22 +422,66 @@ public class UserController { return new ResultEntity<>(HttpStatus.OK, "班级管理-查询成功", pageInfo); } + @PostMapping("/seleteSchoolFacultyNameAndMajorName") + @ApiOperation("班级管理-查询院系名称和专业名称") + @AnonymousAccess + public ResultEntity> seleteSchoolFacultyNameAndMajorName(@RequestParam String schoolMajorId) { + SchoolMajor schoolMajor = schoolMajorMapper.selectByPrimaryKey(schoolMajorId); + String schoolFacultyId = schoolMajor.getSchoolFacultyId(); + SchoolFaculty schoolFaculty = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId); + Map map = new HashMap<>(); + map.put(schoolFaculty.getSchoolFacultyName(), schoolMajor.getSchoolMajorName()); + return new ResultEntity<>(HttpStatus.OK, "班级管理-院系名称和专业名称查询成功", map); + } + + @PostMapping("/seleteSchoolClassList") + @ApiOperation("班级管理-列表查询") + @AnonymousAccess + public ResultEntity> seleteSchoolClassList(@RequestParam String schoolMajorId) { + SchoolClassExample schoolClassExample = new SchoolClassExample(); + SchoolClassExample.Criteria criteria = schoolClassExample.createCriteria(); + criteria.andSchoolMajorIdEqualTo(schoolMajorId); + List schoolClasses = schoolClassMapper.selectByExample(schoolClassExample); + return new ResultEntity<>(HttpStatus.OK, "班级管理-列表查询成功", schoolClasses); + } + + @PostMapping("/seleteSchoolClassListBySchoolId") + @ApiOperation("班级管理-列表查询通过学校ID") + @AnonymousAccess + public ResultEntity> seleteSchoolClassListBySchoolId(@RequestParam String schoolId) { + SchoolClassExample schoolClassExample = new SchoolClassExample(); + SchoolClassExample.Criteria criteria = schoolClassExample.createCriteria(); + criteria.andSchoolIdEqualTo(schoolId); + List schoolClasses = schoolClassMapper.selectByExample(schoolClassExample); + return new ResultEntity<>(HttpStatus.OK, "班级管理-列表查询通过学校ID查询成功", schoolClasses); + } + @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) { + if (userInfo.getRole() == 1) { int i = schoolClassMapper.deleteByPrimaryKey(schoolClassId); if (i == 1) { return new ResultEntity<>(HttpStatus.OK, "班级管理-删除成功"); - } else { + } + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-删除失败"); + } + if (userInfo.getRole() == 3) { + SchoolClass schoolClass = schoolClassMapper.selectByPrimaryKey(schoolClassId); + String schoolId = schoolClass.getSchoolId(); + String userInfoSchoolId = userInfo.getSchoolId(); + if (schoolId.equals(userInfoSchoolId)) { + int i = schoolClassMapper.deleteByPrimaryKey(schoolClassId); + if (i == 1) { + return new ResultEntity<>(HttpStatus.OK, "班级管理-删除成功"); + } return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-删除失败"); } - } else { - return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-删除失败-权限不足"); } + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-删除失败-权限不足"); } @@ -415,16 +494,25 @@ public class UserController { } //先查询useriD 是否够权限 Userinfo userInfo = userinfoMapper.selectByPrimaryKey(userId); - if (userInfo.getRole() == 1 || userInfo.getRole() == 2) { + if (userInfo.getRole() == 1) { int i = schoolClassMapper.updateByPrimaryKey(schoolClass); if (i == 1) { return new ResultEntity<>(HttpStatus.OK, "班级管理-编辑成功"); - } else { - return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-编辑失败"); } - } else { - return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-编辑失败-权限不足"); + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-编辑成功"); + } + if (userInfo.getRole() == 3) { + String schoolId = userInfo.getSchoolId(); + SchoolClass schoolClass1 = schoolClassMapper.selectByPrimaryKey(schoolClass.getSchoolClassId()); + if (schoolId.equals(schoolClass1.getSchoolId())) { + int i = schoolClassMapper.deleteByPrimaryKey(schoolClass.getSchoolClassId()); + if (i == 1) { + return new ResultEntity<>(HttpStatus.OK, "班级管理-删除成功"); + } + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-删除失败"); + } } + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "班级管理-编辑失败-权限不足"); } //新增 同步子系统账户 @@ -439,7 +527,7 @@ public class UserController { @ApiParam("教师名称") @RequestParam String name, @ApiParam("教师工号") @RequestParam String userName, @ApiParam("电话号码") @RequestParam(required = false) String phone, - @ApiParam("电子邮箱") @RequestParam(required = false) String email) throws JsonProcessingException { + @ApiParam("电子邮箱") @RequestParam(required = false) String email) { //先根据schoolId进行查询 如果不存在则返回 School school = schoolMapper.selectByPrimaryKey(schoolId); if (school == null) { @@ -457,7 +545,7 @@ public class UserController { } //检查userName是否已经存在 boolean b = userInfoService.existsByUserName(userName); - if(b){ + if (b) { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "账号已存在"); } Userinfo userInfo = new Userinfo(); @@ -495,7 +583,7 @@ public class UserController { PageHelper.startPage(index, size); UserinfoExample userInfoExample = new UserinfoExample(); UserinfoExample.Criteria criteria = userInfoExample.createCriteria(); - School school=new School(); + School school = new School(); if (StringUtils.isNotBlank(schoolId)) { school = schoolMapper.selectByPrimaryKey(schoolId); criteria.andSchoolIdEqualTo(schoolId); @@ -506,11 +594,12 @@ public class UserController { if (StringUtils.isNotBlank(userName)) { criteria.andUsernameEqualTo(userName); } + criteria.andRoleEqualTo(3); List userInfoList = userinfoMapper.selectByExample(userInfoExample); for (int i = 0; i < userInfoList.size(); i++) { - if(StringUtils.isNotBlank(schoolId)){ + if (StringUtils.isNotBlank(schoolId)) { userInfoList.get(i).setSchoolName(school.getSchoolName()); - }else { + } else { String schoolId1 = userInfoList.get(i).getSchoolId(); school = schoolMapper.selectByPrimaryKey(schoolId1); userInfoList.get(i).setSchoolName(school.getSchoolName()); @@ -526,7 +615,7 @@ public class UserController { @AnonymousAccess public ResultEntity updateTeacher(@RequestBody Userinfo userInfo) { int i = userinfoMapper.updateByPrimaryKey(userInfo); - if(i==1){ + if (i == 1) { return new ResultEntity<>(HttpStatus.OK, "编辑教师账号信息成功!"); } return new ResultEntity<>(HttpStatus.BAD_REQUEST, "编辑教师账号信息失败!"); @@ -540,7 +629,7 @@ public class UserController { Userinfo userInfo = userinfoMapper.selectByPrimaryKey(userId); userInfo.setPassword("123qwe"); int i = userinfoMapper.updateByPrimaryKey(userInfo); - if(i==1){ + if (i == 1) { return new ResultEntity<>(HttpStatus.OK, "初始化密码成功!"); } return new ResultEntity<>(HttpStatus.BAD_REQUEST, "初始化密码失败!"); @@ -554,7 +643,7 @@ public class UserController { @AnonymousAccess public ResultEntity deleteTeacher(@RequestParam String userId) { int i = userinfoMapper.deleteByPrimaryKey(userId); - if(i==1){ + if (i == 1) { return new ResultEntity<>(HttpStatus.OK, "删除成功!"); } return new ResultEntity<>(HttpStatus.BAD_REQUEST, "删除失败!"); @@ -564,7 +653,7 @@ public class UserController { @PostMapping("/uploadTeacherUserInfo") @ApiOperation("教师管理-导入教师账号") @AnonymousAccess - public ResultEntity uploadTeacherUserInfo(@RequestParam MultipartFile file){ + public ResultEntity uploadTeacherUserInfo(@RequestParam MultipartFile file) { // 基本校验 if (file.isEmpty()) { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "上传文件不能为空!"); @@ -588,7 +677,7 @@ public class UserController { // 数据校验 List errorMessages = validateService.validateTeacherData(teacherList); if (!errorMessages.isEmpty()) { - return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!",errorMessages); + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!", errorMessages); } // 异步处理导入***** @@ -596,7 +685,7 @@ public class UserController { return new ResultEntity<>(HttpStatus.OK, "导入成功!"); } catch (Exception e) { - return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!",e.getMessage()); + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!", e.getMessage()); } } @@ -606,7 +695,7 @@ public class UserController { @AnonymousAccess public void exportTeacherUserInfo(HttpServletResponse response, @RequestParam String schoolId) { - if(StringUtils.isNotBlank(schoolId)){ + if (StringUtils.isNotBlank(schoolId)) { UserinfoExample userInfoExample = new UserinfoExample(); userInfoExample.createCriteria().andSchoolIdEqualTo(schoolId).andRoleEqualTo(3); List list = userinfoMapper.selectByExample(userInfoExample); @@ -642,7 +731,7 @@ public class UserController { @ApiParam("学生姓名") @RequestParam String name, @ApiParam("学号") @RequestParam String userName, @ApiParam("电话号码") @RequestParam(required = false) String phone, - @ApiParam("电子邮箱") @RequestParam(required = false) String email) throws JsonProcessingException { + @ApiParam("电子邮箱") @RequestParam(required = false) String email) { //先根据schoolId进行查询 如果不存在则返回 School school = schoolMapper.selectByPrimaryKey(schoolId); if (school == null) { @@ -659,12 +748,12 @@ public class UserController { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该专业不存在"); } SchoolClass schoolClass = schoolClassMapper.selectByPrimaryKey(schoolClassId); - if(schoolClass==null){ + if (schoolClass == null) { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "该班级不存在"); } //检查userName是否已经存在 boolean b = userInfoService.existsByUserName(userName); - if(b){ + if (b) { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "账号已存在"); } Userinfo userInfo = new Userinfo(); @@ -679,7 +768,7 @@ public class UserController { userInfo.setSchoolId(schoolId); userInfo.setSchoolFacultyId(schoolFacultyId); userInfo.setSchoolMajorId(schoolMajorId); - userInfo.setSchoolClassId(null); + userInfo.setSchoolClassId(schoolClassId); userInfo.setCodeFrom("添加"); int insert = userinfoMapper.insert(userInfo); @@ -703,7 +792,7 @@ public class UserController { PageHelper.startPage(index, size); UserinfoExample userInfoExample = new UserinfoExample(); UserinfoExample.Criteria criteria = userInfoExample.createCriteria(); - School school=new School(); + School school = new School(); SchoolClass schoolClass = new SchoolClass(); if (StringUtils.isNotBlank(schoolId)) { school = schoolMapper.selectByPrimaryKey(schoolId); @@ -715,28 +804,29 @@ public class UserController { if (StringUtils.isNotBlank(userName)) { criteria.andUsernameEqualTo(userName); } - if(StringUtils.isNotBlank(schoolClassId)){ - schoolClass=schoolClassMapper.selectByPrimaryKey(schoolClassId); + if (StringUtils.isNotBlank(schoolClassId)) { + schoolClass = schoolClassMapper.selectByPrimaryKey(schoolClassId); criteria.andSchoolClassIdEqualTo(schoolClassId); } + criteria.andRoleEqualTo(4); List userInfoList = userinfoMapper.selectByExample(userInfoExample); for (int i = 0; i < userInfoList.size(); i++) { - if(StringUtils.isNotBlank(schoolId)){ + if (StringUtils.isNotBlank(schoolId)) { userInfoList.get(i).setSchoolName(school.getSchoolName()); - if(StringUtils.isNotBlank(schoolClassId)){ + if (StringUtils.isNotBlank(schoolClassId)) { userInfoList.get(i).setClassName(schoolClass.getClassName()); - }else { + } else { String schoolClassId1 = userInfoList.get(i).getSchoolClassId(); schoolClass = schoolClassMapper.selectByPrimaryKey(schoolClassId1); userInfoList.get(i).setClassName(schoolClass.getClassName()); } - }else { + } else { String schoolId1 = userInfoList.get(i).getSchoolId(); school = schoolMapper.selectByPrimaryKey(schoolId1); userInfoList.get(i).setSchoolName(school.getSchoolName()); - if(StringUtils.isNotBlank(schoolClassId)){ + if (StringUtils.isNotBlank(schoolClassId)) { userInfoList.get(i).setClassName(schoolClass.getClassName()); - }else { + } else { String schoolClassId1 = userInfoList.get(i).getSchoolClassId(); schoolClass = schoolClassMapper.selectByPrimaryKey(schoolClassId1); userInfoList.get(i).setClassName(schoolClass.getClassName()); @@ -753,7 +843,7 @@ public class UserController { @AnonymousAccess public ResultEntity updateStudent(@RequestBody Userinfo userInfo) { int i = userinfoMapper.updateByPrimaryKey(userInfo); - if(i==1){ + if (i == 1) { return new ResultEntity<>(HttpStatus.OK, "编辑学生账号信息成功!"); } return new ResultEntity<>(HttpStatus.BAD_REQUEST, "编辑学生账号信息失败!"); @@ -765,7 +855,7 @@ public class UserController { @AnonymousAccess public ResultEntity deleteStudent(@RequestParam String userId) { int i = userinfoMapper.deleteByPrimaryKey(userId); - if(i==1){ + if (i == 1) { return new ResultEntity<>(HttpStatus.OK, "删除成功!"); } return new ResultEntity<>(HttpStatus.BAD_REQUEST, "删除失败!"); @@ -779,7 +869,7 @@ public class UserController { Userinfo userInfo = userinfoMapper.selectByPrimaryKey(userId); userInfo.setPassword("123qwe"); int i = userinfoMapper.updateByPrimaryKey(userInfo); - if(i==1){ + if (i == 1) { return new ResultEntity<>(HttpStatus.OK, "初始化密码成功!"); } return new ResultEntity<>(HttpStatus.BAD_REQUEST, "初始化密码失败!"); @@ -790,7 +880,7 @@ public class UserController { @PostMapping("/uploadStudentUserInfo") @ApiOperation("学生管理-导入学生账号") @AnonymousAccess - public ResultEntity uploadStudentUserInfo(@RequestParam MultipartFile file){ + public ResultEntity uploadStudentUserInfo(@RequestParam MultipartFile file) { // 基本校验 if (file.isEmpty()) { return new ResultEntity<>(HttpStatus.BAD_REQUEST, "上传文件不能为空!"); @@ -814,7 +904,7 @@ public class UserController { // 数据校验 List errorMessages = validateService.validateStudentData(studentList); if (!errorMessages.isEmpty()) { - return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!",errorMessages); + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!", errorMessages); } // 异步处理导入***** @@ -822,7 +912,7 @@ public class UserController { return new ResultEntity<>(HttpStatus.OK, "导入成功!"); } catch (Exception e) { - return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!",e.getMessage()); + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "数据校验失败!", e.getMessage()); } } @@ -832,7 +922,7 @@ public class UserController { @AnonymousAccess public void exportStudentUserInfo(HttpServletResponse response, @RequestParam String schoolId) { - if(StringUtils.isNotBlank(schoolId)){ + if (StringUtils.isNotBlank(schoolId)) { UserinfoExample userInfoExample = new UserinfoExample(); userInfoExample.createCriteria().andSchoolIdEqualTo(schoolId).andRoleEqualTo(4); List list = userinfoMapper.selectByExample(userInfoExample); @@ -851,4 +941,56 @@ public class UserController { } } + + //修改密码 + @PostMapping("/updatePassword") + @ApiOperation("个人中心-修改密码") + @AnonymousAccess + public ResultEntity updatePassword(@RequestParam String userId, @RequestParam String password) { + Userinfo userInfo = userinfoMapper.selectByPrimaryKey(userId); + userInfo.setPassword(password); + int i = userinfoMapper.updateByPrimaryKey(userInfo); + if (i == 1) { + return new ResultEntity<>(HttpStatus.OK, "修改密码成功!"); + } + return new ResultEntity<>(HttpStatus.BAD_REQUEST, "修改密码失败!"); + } + + @PostMapping("/selectPersonInfo") + @ApiOperation("个人中心-查看用户数据") + @AnonymousAccess + public ResultEntity selectPersonInfo(@RequestParam String userId) { + Userinfo userInfo = userinfoMapper.selectByPrimaryKey(userId); + String schoolId = userInfo.getSchoolId(); + String schoolFacultyId = userInfo.getSchoolFacultyId(); + String schoolMajorId = userInfo.getSchoolMajorId(); + + String schoolName = schoolMapper.selectSchoolNameById(schoolId); + String schoolFacultyName = schoolFacultyMapper.selectByPrimaryKey(schoolFacultyId).getSchoolFacultyName(); + String schoolMajorName = schoolMajorMapper.selectByPrimaryKey(schoolMajorId).getSchoolMajorName(); + + userInfo.setSchoolId(schoolName); + userInfo.setSchoolName(schoolName); + userInfo.setSchoolFacultyId(schoolFacultyName); + userInfo.setSchoolMajorId(schoolMajorName); + if (userInfo.getRole() == 4) { //查看学生信息 + String schoolClassId = userInfo.getSchoolClassId(); + String className = schoolClassMapper.selectByPrimaryKey(schoolClassId).getClassName(); + userInfo.setSchoolClassId(className); + userInfo.setClassName(className); + } + + return new ResultEntity<>(HttpStatus.OK, "个人中心-查看用户数据成功!",userInfo); + } + + @ApiOperation("开放接口,自动同步学生信息") + @PostMapping("synchronizationStudentInfoByAuto") + @AnonymousAccess + public String synchronizationStudentInfoByAuto(@RequestBody List studentList) { +// JwtUser user = TokenProvider.getJWTUser(request); + return userInfoService.insertAllByAuto(studentList); + //return new ResultDataEntity(HttpStatus.OK); + } + + } diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClass.java b/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClass.java index dc0f572..9af42c3 100644 --- a/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClass.java +++ b/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClass.java @@ -28,6 +28,9 @@ public class SchoolClass { @ApiModelProperty(notes = "创建时间") private Date createTime; + @ApiModelProperty(notes = "学校ID") + private String schoolId; + public String getSchoolClassId() { return schoolClassId; } @@ -75,4 +78,12 @@ public class SchoolClass { public void setCreateTime(Date createTime) { this.createTime = createTime; } + + public String getSchoolId() { + return schoolId; + } + + public void setSchoolId(String schoolId) { + this.schoolId = schoolId == null ? null : schoolId.trim(); + } } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClassExample.java b/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClassExample.java index 7758b05..34edc90 100644 --- a/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClassExample.java +++ b/src/main/java/com/sztzjy/linkCommerce/entity/SchoolClassExample.java @@ -504,6 +504,76 @@ public class SchoolClassExample { addCriterion("create_time not between", value1, value2, "createTime"); return (Criteria) this; } + + public Criteria andSchoolIdIsNull() { + addCriterion("school_id is null"); + return (Criteria) this; + } + + public Criteria andSchoolIdIsNotNull() { + addCriterion("school_id is not null"); + return (Criteria) this; + } + + public Criteria andSchoolIdEqualTo(String value) { + addCriterion("school_id =", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdNotEqualTo(String value) { + addCriterion("school_id <>", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdGreaterThan(String value) { + addCriterion("school_id >", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdGreaterThanOrEqualTo(String value) { + addCriterion("school_id >=", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdLessThan(String value) { + addCriterion("school_id <", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdLessThanOrEqualTo(String value) { + addCriterion("school_id <=", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdLike(String value) { + addCriterion("school_id like", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdNotLike(String value) { + addCriterion("school_id not like", value, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdIn(List values) { + addCriterion("school_id in", values, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdNotIn(List values) { + addCriterion("school_id not in", values, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdBetween(String value1, String value2) { + addCriterion("school_id between", value1, value2, "schoolId"); + return (Criteria) this; + } + + public Criteria andSchoolIdNotBetween(String value1, String value2) { + addCriterion("school_id not between", value1, value2, "schoolId"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMajorMapper.java b/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMajorMapper.java index 31a0006..a26cbfe 100644 --- a/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMajorMapper.java +++ b/src/main/java/com/sztzjy/linkCommerce/mapper/SchoolMajorMapper.java @@ -31,5 +31,5 @@ public interface SchoolMajorMapper { int updateByPrimaryKey(SchoolMajor record); - List findSchoolMajorList(@Param("schoolMajorName") String schoolMajorName,@Param("schoolFacultyId")String schoolFacultyId); + List findSchoolMajorList(@Param("schoolId")String schoolId, @Param("schoolMajorName") String schoolMajorName,@Param("schoolFacultyId")String schoolFacultyId); } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/linkCommerce/service/SchoolService.java b/src/main/java/com/sztzjy/linkCommerce/service/SchoolService.java index 2a3e511..e105d72 100644 --- a/src/main/java/com/sztzjy/linkCommerce/service/SchoolService.java +++ b/src/main/java/com/sztzjy/linkCommerce/service/SchoolService.java @@ -31,4 +31,5 @@ public interface SchoolService { String selectMajorIdByFacultyIdAndMajorName(String schoolFacultyId, String schoolMajorName); + String selectClassIdByClassName(String schoolClassName, String schoolId); } diff --git a/src/main/java/com/sztzjy/linkCommerce/service/UserInfoService.java b/src/main/java/com/sztzjy/linkCommerce/service/UserInfoService.java index a68d3ce..f7017d9 100644 --- a/src/main/java/com/sztzjy/linkCommerce/service/UserInfoService.java +++ b/src/main/java/com/sztzjy/linkCommerce/service/UserInfoService.java @@ -1,5 +1,7 @@ package com.sztzjy.linkCommerce.service; +import com.sztzjy.linkCommerce.entity.ZYUserInfo; + import java.util.List; import java.util.Map; @@ -9,4 +11,6 @@ public interface UserInfoService { List getClassNameList(String userId); + + String insertAllByAuto(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 index 590a3e2..215480e 100644 --- a/src/main/java/com/sztzjy/linkCommerce/service/impl/ImportServiceImpl.java +++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/ImportServiceImpl.java @@ -58,7 +58,7 @@ public class ImportServiceImpl implements ImportService { 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.setSchoolClassId(schoolService.selectClassIdByClassName(studentImportDTO.getSchoolClassName(),userInfo.getSchoolId())); 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 index a03e426..dbe1ce7 100644 --- a/src/main/java/com/sztzjy/linkCommerce/service/impl/SchoolServiceImpl.java +++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/SchoolServiceImpl.java @@ -11,10 +11,12 @@ 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.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.UUID; @@ -35,6 +37,7 @@ public class SchoolServiceImpl implements SchoolService { public Integer addSchool(School school) { //新增院校 String schoolId = UUID.randomUUID().toString(); + school.setCreateTime(new Date()); school.setSchoolId(schoolId); int insert = schoolMapper.insert(school); return insert; @@ -88,7 +91,7 @@ public class SchoolServiceImpl implements SchoolService { // 使用 PageHelper 进行分页 PageHelper.startPage(index, size); // 调用 Mapper 查询数据 - List schoolMajorList = schoolMajorMapper.findSchoolMajorList(schoolMajorName, schoolFacultyId); + List schoolMajorList = schoolMajorMapper.findSchoolMajorList(schoolId,schoolMajorName, schoolFacultyId); // 返回分页结果 return new PageInfo<>(schoolMajorList); } @@ -100,13 +103,14 @@ public class SchoolServiceImpl implements SchoolService { // 查询院系信息,假设您有相应的 DAO 或 Mapper 可以用来执行查询 SchoolClassExample schoolClassExample = new SchoolClassExample(); SchoolClassExample.Criteria criteria = schoolClassExample.createCriteria(); - if (className != null) { + criteria.andSchoolIdEqualTo(schoolId); + if (StringUtils.isNotBlank(className)) { criteria.andClassNameLike("%" + className + "%"); } - if (classSn != null) { + if (StringUtils.isNotBlank(classSn)) { criteria.andClassSnEqualTo(classSn); } - if (schoolMajorId != null) { + if (StringUtils.isNotBlank(schoolMajorId)) { criteria.andSchoolMajorIdEqualTo(schoolMajorId); } List schoolClasses = schoolClassMapper.selectByExample(schoolClassExample); @@ -234,6 +238,17 @@ public class SchoolServiceImpl implements SchoolService { } } + @Override + public String selectClassIdByClassName(String schoolClassName, String schoolId) { + SchoolClassExample schoolClassExample = new SchoolClassExample(); + schoolClassExample.createCriteria().andSchoolIdEqualTo(schoolId).andClassNameEqualTo(schoolClassName); + List schoolClassList = schoolClassMapper.selectByExample(schoolClassExample); + if(schoolClassList.isEmpty() || schoolClassList==null){ + return null; + }else { + return schoolClassList.get(0).getSchoolClassId(); + } + } } diff --git a/src/main/java/com/sztzjy/linkCommerce/service/impl/ScoreRankServiceImpl.java b/src/main/java/com/sztzjy/linkCommerce/service/impl/ScoreRankServiceImpl.java index 941ecbb..8d9d115 100644 --- a/src/main/java/com/sztzjy/linkCommerce/service/impl/ScoreRankServiceImpl.java +++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/ScoreRankServiceImpl.java @@ -65,7 +65,8 @@ public class ScoreRankServiceImpl implements ScoreRankService { scoreRank.setUsername(userInfo.getUsername()); scoreRank.setName(userInfo.getName()); scoreRank.setSchoolClassId(userInfo.getSchoolClassId()); - scoreRank.setClassName(userInfo.getClassName()); + SchoolClass schoolClass = schoolClassMapper.selectByPrimaryKey(userInfo.getSchoolClassId()); + scoreRank.setClassName(schoolClass.getClassName()); //设置更新日期 年月日 String nowDate = getNowDate(); @@ -174,7 +175,8 @@ public class ScoreRankServiceImpl implements ScoreRankService { scoreRank.setUsername(userInfo.getUsername()); scoreRank.setName(userInfo.getName()); scoreRank.setSchoolClassId(userInfo.getSchoolClassId()); - scoreRank.setClassName(userInfo.getClassName()); + SchoolClass schoolClass = schoolClassMapper.selectByPrimaryKey(userInfo.getSchoolClassId()); + scoreRank.setClassName(schoolClass.getClassName()); //设置更新日期 年月日 String nowDate = getNowDate(); diff --git a/src/main/java/com/sztzjy/linkCommerce/service/impl/UserInfoServiceImpl.java b/src/main/java/com/sztzjy/linkCommerce/service/impl/UserInfoServiceImpl.java index bc34127..f400f65 100644 --- a/src/main/java/com/sztzjy/linkCommerce/service/impl/UserInfoServiceImpl.java +++ b/src/main/java/com/sztzjy/linkCommerce/service/impl/UserInfoServiceImpl.java @@ -1,19 +1,17 @@ package com.sztzjy.linkCommerce.service.impl; -import com.sztzjy.linkCommerce.entity.SchoolClass; -import com.sztzjy.linkCommerce.entity.SchoolClassExample; -import com.sztzjy.linkCommerce.entity.Userinfo; -import com.sztzjy.linkCommerce.entity.UserinfoExample; +import cn.hutool.core.lang.UUID; +import cn.hutool.core.util.IdUtil; +import com.sztzjy.linkCommerce.entity.*; import com.sztzjy.linkCommerce.mapper.*; import com.sztzjy.linkCommerce.service.UserInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; @Service @@ -57,6 +55,171 @@ public class UserInfoServiceImpl implements UserInfoService { return list; } + /** + * 同步智云 + * @param zyUserInfoList + * @return + */ + + @Override + public String insertAllByAuto(List zyUserInfoList) { + List users = new ArrayList<>(); + + // 用于存储已处理的学校、学院、专业、班级信息,避免重复插入 + Set processedSchools = new HashSet<>(); + Set processedFaculties = new HashSet<>(); + Set processedMajors = new HashSet<>(); + Set processedClasses = new HashSet<>(); + + // 存储学院和专业的映射关系 + Map facultyIdMap = new HashMap<>(); // collegeName -> facultyId + Map majorIdMap = new HashMap<>(); // majorName -> majorId + + for (int i = 0; i < zyUserInfoList.size(); i++) { + ZYUserInfo zyUserInfo = zyUserInfoList.get(i); + String username = zyUserInfo.getUsername(); + String name = zyUserInfo.getName(); + String password = zyUserInfo.getPassword(); + Integer roleId = zyUserInfo.getRoleId(); + + // 检查用户是否已存在 + UserinfoExample userInfoExample = new UserinfoExample(); + userInfoExample.createCriteria().andUsernameEqualTo(username); + List userInfos = userInfoMapper.selectByExample(userInfoExample); + + if (userInfos.isEmpty() || userInfos == null) { + // 处理学校信息 + String schoolId = zyUserInfo.getSchoolId().toString(); + if (!processedSchools.contains(schoolId)) { + // 检查数据库中是否已存在该学校 + School existingSchool = schoolMapper.selectByPrimaryKey(schoolId); + if (existingSchool == null) { + School school = new School(); + school.setSchoolId(schoolId); + school.setSchoolName(zyUserInfo.getSchoolName()); + school.setStatus(false); + schoolMapper.insertSelective(school); + } + processedSchools.add(schoolId); + } + + // 处理学院信息 + String collegeName = zyUserInfo.getCollegeName(); + String facultyId; + if (!facultyIdMap.containsKey(collegeName)) { + facultyId = UUID.randomUUID().toString(); + facultyIdMap.put(collegeName, facultyId); + + if (!processedFaculties.contains(collegeName)) { + // 检查数据库中是否已存在该学院(通过学校ID和学院名称) + SchoolFacultyExample facultyExample = new SchoolFacultyExample(); + facultyExample.createCriteria() + .andSchoolIdEqualTo(schoolId) + .andSchoolFacultyNameEqualTo(collegeName); + List existingFaculties = schoolFacultyMapper.selectByExample(facultyExample); + + if (existingFaculties.isEmpty()) { + SchoolFaculty schoolFaculty = new SchoolFaculty(); + schoolFaculty.setSchoolId(schoolId); + schoolFaculty.setSchoolFacultyId(facultyId); + schoolFaculty.setSchoolFacultyName(collegeName); + schoolFacultyMapper.insertSelective(schoolFaculty); + } else { + // 如果学院已存在,使用现有的学院ID + facultyId = existingFaculties.get(0).getSchoolFacultyId(); + facultyIdMap.put(collegeName, facultyId); + } + processedFaculties.add(collegeName); + } + } else { + facultyId = facultyIdMap.get(collegeName); + } + + // 处理专业信息 + String majorName = zyUserInfo.getMajorName(); + String majorId; + String majorKey = collegeName + "_" + majorName; // 组合键,因为不同学院可能有同名专业 + if (!majorIdMap.containsKey(majorKey)) { + majorId = UUID.randomUUID().toString(); + majorIdMap.put(majorKey, majorId); + + if (!processedMajors.contains(majorKey)) { + // 检查数据库中是否已存在该专业(通过学院ID和专业名称) + SchoolMajorExample majorExample = new SchoolMajorExample(); + majorExample.createCriteria() + .andSchoolFacultyIdEqualTo(facultyId) + .andSchoolMajorNameEqualTo(majorName); + List existingMajors = schoolMajorMapper.selectByExample(majorExample); + + if (existingMajors.isEmpty()) { + SchoolMajor schoolMajor = new SchoolMajor(); + schoolMajor.setSchoolFacultyId(facultyId); + schoolMajor.setSchoolMajorId(majorId); + schoolMajor.setSchoolMajorName(majorName); + schoolMajorMapper.insertSelective(schoolMajor); + } else { + // 如果专业已存在,使用现有的专业ID + majorId = existingMajors.get(0).getSchoolMajorId(); + majorIdMap.put(majorKey, majorId); + } + processedMajors.add(majorKey); + } + } else { + majorId = majorIdMap.get(majorKey); + } + + // 处理班级信息 + String classId = zyUserInfo.getClassId().toString(); + String className = zyUserInfo.getClassName(); + if (!processedClasses.contains(classId)) { + // 检查数据库中是否已存在该班级 + SchoolClass existingClass = schoolClassMapper.selectByPrimaryKey(classId); + if (existingClass == null) { + SchoolClass schoolClass = new SchoolClass(); + schoolClass.setSchoolClassId(classId); + schoolClass.setSchoolMajorId(majorId); + schoolClass.setClassName(className); + schoolClassMapper.insertSelective(schoolClass); + } + processedClasses.add(classId); + } + + // 创建用户信息 + Userinfo stuUser = new Userinfo(); + stuUser.setUserId(IdUtil.randomUUID()); + stuUser.setUsername(username); + if (!StringUtils.hasText(name)) { + stuUser.setName(username); + } else { + stuUser.setName(name); + } + stuUser.setPassword(password); + stuUser.setRole(roleId); + stuUser.setSchoolClassId(classId); + stuUser.setPhone(zyUserInfo.getPhone()); + stuUser.setClassName(className); + stuUser.setDisabledstatus(false); + stuUser.setSchoolId(schoolId); + stuUser.setSchoolName(zyUserInfo.getSchoolName()); + stuUser.setCodeFrom("智云同步"); + stuUser.setSchoolFacultyId(facultyId); + stuUser.setSchoolMajorId(majorId); + + users.add(stuUser); + } + } + + if (users.isEmpty()) { + return "账号已全部存在"; + } + + // 批量插入用户数据 + users.forEach(stuUser -> { + userInfoMapper.insertSelective(stuUser); + }); + + return "自动同步学生信息成功!" + "同步" + users.size() + "条用户数据"; + } } diff --git a/src/main/java/com/sztzjy/linkCommerce/util/TzApi.java b/src/main/java/com/sztzjy/linkCommerce/util/TzApi.java index adb6c17..a23c443 100644 --- a/src/main/java/com/sztzjy/linkCommerce/util/TzApi.java +++ b/src/main/java/com/sztzjy/linkCommerce/util/TzApi.java @@ -37,10 +37,11 @@ public class TzApi { private static CacheProvider cacheProvider = new CacheProvider(3600*12, 6000); - public static JwtUser foreignExchangeTradingLogin(String userName, String password) { + public static JwtUser foreignExchangeTradingLogin(String userName, String password,String systemName) { try { String requestBody = "username=" + URLEncoder.encode(userName, "UTF8") + - "&password=" + URLEncoder.encode(password, "UTF8"); + "&password=" + URLEncoder.encode(password, "UTF8")+ + "&systemName=" + URLEncoder.encode(systemName, "UTF8"); JSONObject object = HttpUtils.sendPost( LOGIN_URL, requestBody, @@ -75,6 +76,8 @@ public class TzApi { user.setSchoolName(dataObject.getStr("schoolname")); user.setCollegeId(dataObject.getInt("collegeid")); user.setCollegeName(dataObject.getStr("collegename")); + user.setAuthorizeTime(dataObject.getDate("authorizetime")); + user.setAuthorizeEndTime(dataObject.getDate("authorizeendtime")); user.setUsername(userName); user.setPassword(password); return user; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2e5dc9f..e551708 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -20,8 +20,7 @@ spring: pathmatch: matching-strategy: ant_path_matcher redis: - #host: 120.79.54.255 - host: 118.31.7.2 + host: 120.79.54.255 port: 6359 password: tzredis timeout: 1800000 @@ -88,7 +87,7 @@ mybatis: swagger: - enable: true + enable: false tokenHeader: Authorization title: 天择区块链金融 • 接口文档 description: 天择区块链金融WebAPI接口文档 diff --git a/src/main/resources/mappers/SchoolClassMapper.xml b/src/main/resources/mappers/SchoolClassMapper.xml index dc340a8..7454253 100644 --- a/src/main/resources/mappers/SchoolClassMapper.xml +++ b/src/main/resources/mappers/SchoolClassMapper.xml @@ -8,6 +8,7 @@ + @@ -68,7 +69,7 @@ - school_class_id, school_major_id, class_name, class_sn, status, create_time + school_class_id, school_major_id, class_name, class_sn, status, create_time, school_id @@ -178,6 +185,9 @@ create_time = #{record.createTime,jdbcType=TIMESTAMP}, + + school_id = #{record.schoolId,jdbcType=VARCHAR}, + @@ -190,7 +200,8 @@ class_name = #{record.className,jdbcType=VARCHAR}, class_sn = #{record.classSn,jdbcType=VARCHAR}, status = #{record.status,jdbcType=BIT}, - create_time = #{record.createTime,jdbcType=TIMESTAMP} + create_time = #{record.createTime,jdbcType=TIMESTAMP}, + school_id = #{record.schoolId,jdbcType=VARCHAR} @@ -213,6 +224,9 @@ create_time = #{createTime,jdbcType=TIMESTAMP}, + + school_id = #{schoolId,jdbcType=VARCHAR}, + where school_class_id = #{schoolClassId,jdbcType=VARCHAR} @@ -222,7 +236,8 @@ class_name = #{className,jdbcType=VARCHAR}, class_sn = #{classSn,jdbcType=VARCHAR}, status = #{status,jdbcType=BIT}, - create_time = #{createTime,jdbcType=TIMESTAMP} + create_time = #{createTime,jdbcType=TIMESTAMP}, + school_id = #{schoolId,jdbcType=VARCHAR} where school_class_id = #{schoolClassId,jdbcType=VARCHAR} \ No newline at end of file diff --git a/src/main/resources/mappers/SchoolMajorMapper.xml b/src/main/resources/mappers/SchoolMajorMapper.xml index 70c3ec9..75fccc7 100644 --- a/src/main/resources/mappers/SchoolMajorMapper.xml +++ b/src/main/resources/mappers/SchoolMajorMapper.xml @@ -270,8 +270,9 @@ school_major m JOIN school_faculty sf ON m.school_faculty_id = sf.school_faculty_id + JOIN school s ON sf.school_id = s.school_id WHERE - m.status !=2 + s.school_id = #{schoolId} AND m.school_major_name LIKE CONCAT('%', #{schoolMajorName}, '%') diff --git a/src/main/resources/mappers/StuRankMapper.xml b/src/main/resources/mappers/StuRankMapper.xml index f2d7ff2..d538dee 100644 --- a/src/main/resources/mappers/StuRankMapper.xml +++ b/src/main/resources/mappers/StuRankMapper.xml @@ -495,7 +495,7 @@