From bbdc7334eac597d82a44d9dfe51fc9540119b4ec Mon Sep 17 00:00:00 2001 From: xiaoCJ <406612557@qq.com> Date: Tue, 4 Jul 2023 16:01:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9trainingID=E4=B8=BAString?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IndexController.java | 37 +++++++----- .../controller/TrainingController.java | 20 +++++-- .../trading_trading/mappers/MemberMapper.java | 28 +++++---- .../mappers/TrainingMapper.java | 4 +- .../trading_trading/service/IndexService.java | 39 +++++++++++- .../service/TrainingService.java | 59 ++++++++++++++++--- 6 files changed, 143 insertions(+), 44 deletions(-) diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/IndexController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/IndexController.java index 1f20474..19d9762 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/controller/IndexController.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/IndexController.java @@ -1,7 +1,8 @@ package com.sztzjy.forex.trading_trading.controller; import com.github.pagehelper.PageInfo; -import com.sztzjy.forex.trading_trading.annotation.AnonymousAccess; +import com.sztzjy.forex.trading_trading.config.security.JwtUser; +import com.sztzjy.forex.trading_trading.config.security.TokenProvider; import com.sztzjy.forex.trading_trading.entity.Member; import com.sztzjy.forex.trading_trading.mappers.MemberMapper; import com.sztzjy.forex.trading_trading.mappers.TrainingMapper; @@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletRequest; import java.util.List; @Api(tags = "首页") @@ -25,6 +27,7 @@ import java.util.List; @RequestMapping("api/index") @RequiredArgsConstructor public class IndexController { + private final HttpServletRequest request; private final IndexService indexService; private final TrainingService trainingService; @@ -42,27 +45,31 @@ public class IndexController { @ApiParam("日期") @RequestParam(required = false) String startTime, @ApiParam("实训任务名字") @RequestParam(required = false) String trainingName ) { - PageInfo byConditions = indexService.findByConditions(index, size, classGrade, studentNumber, name, startTime, trainingName); + JwtUser currentUser = TokenProvider.getJWTUser(request); + int schoolId = currentUser.getSchoolId(); + PageInfo byConditions = indexService.findByConditions(index, size, classGrade, studentNumber, name, startTime, trainingName,schoolId); return new ResultEntity<>(byConditions); } - //首页下拉获取实训任务名称 - @GetMapping("/getTrainingName") - @ApiOperation("首页下拉获取实训任务名称") - @AnonymousAccess - public ResultEntity> getTrainingName() { -// List trainingName = trainingMapper.selectTrainingName(); -// return new ResultEntity<>(HttpStatus.OK, trainingName); - return new ResultEntity>(HttpStatus.OK); - } +// //首页下拉获取实训任务名称 +// @GetMapping("/getTrainingName") +// @ApiOperation("首页下拉获取实训任务名称") +// @AnonymousAccess +// public ResultEntity> getTrainingName() { +//// List trainingName = trainingMapper.selectTrainingName(); +//// return new ResultEntity<>(HttpStatus.OK, trainingName); +// return new ResultEntity>(HttpStatus.OK); +// } //首页下拉获取班级 @GetMapping("/getClassGrade") @ApiOperation("首页下拉获取班级") - @AnonymousAccess +// @AnonymousAccess public ResultEntity> getClassGrade() { -// List classGrades = memberMapper.selectClassGrade(); -// return new ResultEntity<>(HttpStatus.OK, classGrades); - return new ResultEntity<>(HttpStatus.OK); + //获取当前登录用户的信息。和@AnonymousAccess互斥 + JwtUser currentUser = TokenProvider.getJWTUser(request); + int schoolId = currentUser.getSchoolId(); + List classGrades = memberMapper.selectClassGrade(schoolId); + return new ResultEntity<>(HttpStatus.OK, classGrades); } } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/TrainingController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/TrainingController.java index dba5f25..722ab4e 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/controller/TrainingController.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/TrainingController.java @@ -67,7 +67,7 @@ public class TrainingController { @Permission(codes = PermissionType.TRAINING_MANAGEMENT_DEL) @ApiOperation("教师端----删除一条实训记录") @PostMapping("deleteById") - public ResultEntity deleteById(@ApiParam("实训记录id") @RequestParam Integer trainingId) { + public ResultEntity deleteById(@ApiParam("实训记录id") @RequestParam String trainingId) { trainingService.delete(trainingId); //TODO 同步删除member表数据 return new ResultEntity(HttpStatus.OK); @@ -76,7 +76,7 @@ public class TrainingController { @Permission(codes = PermissionType.TRAINING_MANAGEMENT_EDIT) @ApiOperation("教师端----修改一条实训记录") @PostMapping("update") - public ResultEntity update(@ApiParam("实训记录id") @RequestParam Integer trainingId, + public ResultEntity update(@ApiParam("实训记录id") @RequestParam String trainingId, @ApiParam("实训记录名字") @RequestParam String trainingName) { //TODO 暂时只修改实训名字 待后续需求 @@ -89,7 +89,7 @@ public class TrainingController { @ApiOperation("教师端----根据实训记录id查询实训记录") @GetMapping("training/{id}") public ResultEntity get(@ApiParam("实训记录id") - @PathVariable Integer id) { + @PathVariable String id) { //TODO 后续还有根据实训id查看排行榜等需求待实现 return new ResultEntity(HttpStatus.OK, trainingService.findById(id)); } @@ -167,7 +167,7 @@ public class TrainingController { Assert.isTrue(StringUtils.hasText(keyword), "查询关键字不能为空"); JwtUser currentUser = TokenProvider.getJWTUser(request); - Training training = trainingService.findById(Integer.valueOf(trainingId)); + Training training = trainingService.findById(trainingId); Assert.notNull(training, "实训记录不存在"); List> maps = TzApi.GetStudentInfoByKeywordForForeignExchangeTrading(currentUser, keyword); if (maps == null || maps.size() == 0) { @@ -207,4 +207,16 @@ public class TrainingController { return members; } + + @Permission(codes = PermissionType.TRAINING_MANAGEMENT_SEARCH) + @ApiOperation("获取我的任务列表") + @GetMapping("/findTrainingList") +// @AnonymousAccess + public ResultEntity> findTrainingList(@ApiParam("页码") @RequestParam Integer index, + @ApiParam("页量") @RequestParam Integer size) { + JwtUser currentUser = TokenProvider.getJWTUser(request); + Integer schoolId = currentUser.getSchoolId(); + String username = currentUser.getUsername(); + return new ResultEntity>(HttpStatus.OK, trainingService.findTrainingList(index,size,schoolId, username)); + } } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/mappers/MemberMapper.java b/src/main/java/com/sztzjy/forex/trading_trading/mappers/MemberMapper.java index 36c1754..d7f0953 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/mappers/MemberMapper.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/mappers/MemberMapper.java @@ -6,13 +6,17 @@ import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; + @Mapper public interface MemberMapper { + + List selectClassGrade(Integer schoolId); + /** * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_member * - * @mbg.generated Fri Jun 30 10:29:24 CST 2023 + * @mbg.generated Fri Jun 30 14:15:42 CST 2023 */ long countByExample(MemberExample example); @@ -20,7 +24,7 @@ public interface MemberMapper { * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_member * - * @mbg.generated Fri Jun 30 10:29:24 CST 2023 + * @mbg.generated Fri Jun 30 14:15:42 CST 2023 */ int deleteByExample(MemberExample example); @@ -28,7 +32,7 @@ public interface MemberMapper { * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_member * - * @mbg.generated Fri Jun 30 10:29:24 CST 2023 + * @mbg.generated Fri Jun 30 14:15:42 CST 2023 */ int deleteByPrimaryKey(String memberId); @@ -36,7 +40,7 @@ public interface MemberMapper { * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_member * - * @mbg.generated Fri Jun 30 10:29:24 CST 2023 + * @mbg.generated Fri Jun 30 14:15:42 CST 2023 */ int insert(Member record); @@ -44,7 +48,7 @@ public interface MemberMapper { * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_member * - * @mbg.generated Fri Jun 30 10:29:24 CST 2023 + * @mbg.generated Fri Jun 30 14:15:42 CST 2023 */ int insertSelective(Member record); @@ -52,7 +56,7 @@ public interface MemberMapper { * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_member * - * @mbg.generated Fri Jun 30 10:29:24 CST 2023 + * @mbg.generated Fri Jun 30 14:15:42 CST 2023 */ List selectByExample(MemberExample example); @@ -60,7 +64,7 @@ public interface MemberMapper { * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_member * - * @mbg.generated Fri Jun 30 10:29:24 CST 2023 + * @mbg.generated Fri Jun 30 14:15:42 CST 2023 */ Member selectByPrimaryKey(String memberId); @@ -68,7 +72,7 @@ public interface MemberMapper { * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_member * - * @mbg.generated Fri Jun 30 10:29:24 CST 2023 + * @mbg.generated Fri Jun 30 14:15:42 CST 2023 */ int updateByExampleSelective(@Param("record") Member record, @Param("example") MemberExample example); @@ -76,7 +80,7 @@ public interface MemberMapper { * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_member * - * @mbg.generated Fri Jun 30 10:29:24 CST 2023 + * @mbg.generated Fri Jun 30 14:15:42 CST 2023 */ int updateByExample(@Param("record") Member record, @Param("example") MemberExample example); @@ -84,7 +88,7 @@ public interface MemberMapper { * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_member * - * @mbg.generated Fri Jun 30 10:29:24 CST 2023 + * @mbg.generated Fri Jun 30 14:15:42 CST 2023 */ int updateByPrimaryKeySelective(Member record); @@ -92,9 +96,7 @@ public interface MemberMapper { * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_member * - * @mbg.generated Fri Jun 30 10:29:24 CST 2023 + * @mbg.generated Fri Jun 30 14:15:42 CST 2023 */ int updateByPrimaryKey(Member record); - - List selectClassGrade(); } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/forex/trading_trading/mappers/TrainingMapper.java b/src/main/java/com/sztzjy/forex/trading_trading/mappers/TrainingMapper.java index cb1e58e..0271f58 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/mappers/TrainingMapper.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/mappers/TrainingMapper.java @@ -35,7 +35,7 @@ public interface TrainingMapper { * * @mbg.generated Thu Jun 29 18:43:01 CST 2023 */ - int deleteByPrimaryKey(Integer trainingId); + int deleteByPrimaryKey(String trainingId); /** * This method was generated by MyBatis Generator. @@ -67,7 +67,7 @@ public interface TrainingMapper { * * @mbg.generated Thu Jun 29 18:43:01 CST 2023 */ - Training selectByPrimaryKey(Integer trainingId); + Training selectByPrimaryKey(String trainingId); /** * This method was generated by MyBatis Generator. diff --git a/src/main/java/com/sztzjy/forex/trading_trading/service/IndexService.java b/src/main/java/com/sztzjy/forex/trading_trading/service/IndexService.java index 6d2bc48..dcbcc6a 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/IndexService.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/IndexService.java @@ -21,22 +21,40 @@ public class IndexService { private final MemberMapper memberMapper; private final TrainingMapper trainingMapper; - // 首页分页加模糊查询 - public PageInfo findByConditions(Integer index, Integer size, String classGrade, String studentNumber, String name, String startTime, String trainingName) { + //TODO 实训任务结束后系统自动显示模拟交易实训成绩,教师评分之后显示实验报告成绩。 + + // 首页分页 排序 模糊查询 + public PageInfo findByConditions(Integer index, Integer size, String classGrade, String studentNumber, String name, String startTime, String trainingName, Integer schoolId) { TrainingExample trainingExample = new TrainingExample(); PageHelper.startPage(index, size); +// 跳转到首页 没有参数 显示所有 if (classGrade == null && studentNumber == null && name == null && startTime == null && trainingName == null) { MemberExample memberExample = new MemberExample(); + MemberExample.Criteria criteria = memberExample.createCriteria(); + if (schoolId != null) { + criteria.andSchoolIdEqualTo(schoolId); + } + memberExample.setOrderByClause("yield DESC"); List members1 = memberMapper.selectByExample(memberExample); + for (int i = 1; i <= members1.size(); i++) { + for (Member member : members1) { + member.setStuRank(i); + i++; + } + } return new PageInfo<>(members1); } TrainingExample.Criteria criteria = trainingExample.createCriteria(); + if (schoolId != null) { + criteria.andSchoolIdEqualTo(schoolId); + } if (StringUtils.isNotEmpty(trainingName)) { criteria.andTrainingNameEqualTo(trainingName); } if (StringUtils.isNotEmpty(startTime)) { criteria.andStartTimeEqualTo(startTime); } + List trainings = null; if (StringUtils.isNotEmpty(trainingName) || StringUtils.isNotEmpty(startTime)) { trainings = trainingMapper.selectByExample(trainingExample); @@ -60,7 +78,14 @@ public class IndexService { if (StringUtils.isNotEmpty(name)) { criteria1.andNameLike("%" + name + "%"); } + memberExample.setOrderByClause("yield DESC"); List membersForTraining = memberMapper.selectByExample(memberExample); + for (int i = 1; i <= membersForTraining.size(); i++) { + for (Member member : membersForTraining) { + member.setStuRank(i); + i++; + } + } members.addAll(membersForTraining); } return new PageInfo<>(members); @@ -68,6 +93,9 @@ public class IndexService { //没有传training表中两个参数时,直接查member表 MemberExample memberExample = new MemberExample(); MemberExample.Criteria criteria1 = memberExample.createCriteria(); + if (schoolId != null) { + criteria1.andSchoolIdEqualTo(schoolId); + } if (StringUtils.isNotEmpty(classGrade)) { criteria1.andClassGradeLike("%" + classGrade + "%"); } @@ -77,7 +105,14 @@ public class IndexService { if (StringUtils.isNotEmpty(name)) { criteria1.andNameLike("%" + name + "%"); } + memberExample.setOrderByClause("yield DESC"); List membersForTraining = memberMapper.selectByExample(memberExample); + for (int i = 1; i <= membersForTraining.size(); i++) { + for (Member member : membersForTraining) { + member.setStuRank(i); + i++; + } + } return new PageInfo<>(membersForTraining); } } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/service/TrainingService.java b/src/main/java/com/sztzjy/forex/trading_trading/service/TrainingService.java index ac231a2..748c8b6 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/TrainingService.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/TrainingService.java @@ -1,26 +1,27 @@ package com.sztzjy.forex.trading_trading.service; import cn.hutool.core.util.IdUtil; -import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.sztzjy.forex.trading_trading.config.security.JwtUser; import com.sztzjy.forex.trading_trading.dto.TrainingBO; import com.sztzjy.forex.trading_trading.entity.Member; +import com.sztzjy.forex.trading_trading.entity.MemberExample; import com.sztzjy.forex.trading_trading.entity.Training; import com.sztzjy.forex.trading_trading.entity.TrainingExample; +import com.sztzjy.forex.trading_trading.mappers.MemberMapper; import com.sztzjy.forex.trading_trading.mappers.TrainingMapper; -import com.sztzjy.forex.trading_trading.util.TzApi; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import org.springframework.util.StringUtils; -import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; @Service public class TrainingService { @@ -28,6 +29,9 @@ public class TrainingService { @Autowired private TrainingMapper trainingMapper; + @Autowired + private MemberMapper memberMapper; + public Training create(TrainingBO bo, JwtUser currentUser) { //TODO 待完成通过学校id或者班级id到智云平台获取学生信息并将参与实训学生信息添加到member表中 @@ -57,11 +61,11 @@ public class TrainingService { } - public Training findById(Integer id) { + public Training findById(String id) { return trainingMapper.selectByPrimaryKey(id); } - public void delete(Integer id) { + public void delete(String id) { //TODO 删除实训还要删除member表中的trainingId相关数据 trainingMapper.deleteByPrimaryKey(id); } @@ -70,7 +74,7 @@ public class TrainingService { trainingMapper.updateByPrimaryKey(training); } - public Training update(Integer id, String name) { + public Training update(String id, String name) { Training training = findById(id); Assert.isTrue(StringUtils.hasText(name), "实训名称不能为空"); Assert.notNull(training, "该实训不存在"); @@ -84,7 +88,7 @@ public class TrainingService { } - private Boolean checkTrainingName(String name, Integer id) { + private Boolean checkTrainingName(String name, String id) { TrainingExample example = new TrainingExample(); example.createCriteria().andTrainingNameEqualTo(name); if (id != null) { @@ -107,4 +111,43 @@ public class TrainingService { return trainingMapper.selectTrainingNameList(user.getSchoolId()); } + // 我的任务列表 + public PageInfo findTrainingList(Integer index,Integer size,Integer schoolId,String username) { + PageHelper.startPage(index, size); + MemberExample memberExample = new MemberExample(); + MemberExample.Criteria criteria = memberExample.createCriteria(); + if (schoolId != null) { + criteria.andSchoolIdEqualTo(schoolId); + } + if (StringUtils.hasText(username)) { + criteria.andStudentNumberEqualTo(username); + } + List members = memberMapper.selectByExample(memberExample); + List trainingList = new ArrayList<>(); + if (!members.isEmpty()) { + for (Member member : members) { + String trainingId = member.getTrainingId(); + Training training = trainingMapper.selectByPrimaryKey(trainingId); + // 假设startTime和endTime为提供的时间参数 + Date startTime = training.getStartTime(); + Date endTime = training.getEndTime(); + // 获取当前时间 + LocalDateTime currentTime = LocalDateTime.now(); + // 将 Instant 对象转换为 LocalDateTime 对象(默认使用系统默认时区) + LocalDateTime startDateTime = LocalDateTime.ofInstant(startTime.toInstant(), ZoneId.systemDefault()); + LocalDateTime endDateTime = LocalDateTime.ofInstant(endTime.toInstant(), ZoneId.systemDefault()); + // 比较当前时间与startTime和endTime,设置状态字段status + if (currentTime.isBefore(startDateTime)) { + training.setStatus("0"); // 未开始 + } else if (currentTime.isAfter(endDateTime)) { + training.setStatus("2"); // 已结束 + } else { + training.setStatus("1");// 进行中 + } + trainingList.add(training); + } + return new PageInfo<>(trainingList); + } + return new PageInfo<>(); + } }