From 4758180a4f4bc2cfbff2ae6be241f8dbf89fb0c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B2=85?= <907037276@qq.com> Date: Thu, 3 Aug 2023 22:53:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=99=E5=B8=88=E7=AB=AFbug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/GradeWeightController.java | 5 +- .../controller/MemberController.java | 50 ++++++- .../forex/trading_trading/dto/MemberVO.java | 27 +++- .../trading_trading/mappers/MemberMapper.java | 66 +++++++-- .../service/GradeWeightService.java | 20 ++- .../service/MemberService.java | 127 ++++++++---------- .../service/ReportService.java | 4 +- .../service/ScheduledTask.java | 5 + .../service/TrainingService.java | 1 + src/main/resources/mappers/MemberMapper.xml | 72 ++++------ 10 files changed, 241 insertions(+), 136 deletions(-) diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/GradeWeightController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/GradeWeightController.java index 1bb123a..8f3d032 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/controller/GradeWeightController.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/GradeWeightController.java @@ -35,7 +35,7 @@ public class GradeWeightController { public ResultEntity add(@RequestBody GradeWeightBO bo) { Assert.notNull(bo, "参数错误"); JwtUser user = TokenProvider.getJWTUser(request); - gradeWeightService.insert(bo,user); + gradeWeightService.insert(bo, user); return new ResultEntity(HttpStatus.OK); } @@ -46,6 +46,9 @@ public class GradeWeightController { public ResultEntity> findCurrentWeight() { JwtUser currentUser = TokenProvider.getJWTUser(request); List gradeWeights = gradeWeightService.findWeightBySchoolId(currentUser.getSchoolId()); + if (gradeWeights == null || gradeWeights.size() == 0) { + gradeWeights = gradeWeightService.createDefaultWeights(currentUser); + } return new ResultEntity>(gradeWeights); } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java index 2487058..303c952 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java @@ -20,16 +20,25 @@ import com.sztzjy.forex.trading_trading.service.TrainingService; import com.sztzjy.forex.trading_trading.util.BigDecimalUtils; import com.sztzjy.forex.trading_trading.util.ForexMarketDateUtil; import com.sztzjy.forex.trading_trading.util.ResultEntity; +import com.sztzjy.forex.trading_trading.util.excel.ExcelData; +import com.sztzjy.forex.trading_trading.util.excel.ExcelProvider; +import com.sztzjy.forex.trading_trading.util.file.IFileUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @@ -60,6 +69,9 @@ public class MemberController { @Autowired ForexMarketDateUtil forexMarketDateUtil; + @Autowired + IFileUtil fileUtil; + @AnonymousAccess @PostMapping("getMemberById") public ResultEntity getMember(@RequestBody String memberId) { @@ -128,12 +140,13 @@ public class MemberController { @ApiParam("页量") @RequestParam(required = false) Integer size) { JwtUser jwtUser = TokenProvider.getJWTUser(request); - PageInfo pageInfo = memberService.pagedListMembers(className, trainingName, markStatus, keyword, jwtUser.getSchoolId(),index, size); + PageInfo pageInfo = memberService.pagedListMembers(className, trainingName, markStatus, keyword, jwtUser,index, size); if (!pageInfo.getList().isEmpty()) { for (MemberVO vo : pageInfo.getList()) { Training training = trainingService.findById(vo.getTrainingId()); if (vo.getYield() == null || training == null) continue; vo.setTradeTrainingScore(gradeWeightService.findWeightByWeightIdAndYield(training.getWeightId(), vo.getYield()).getActualScore()); + vo.setTotalScore(vo.getTradeTrainingScore() + (vo.getReportScore()==null?0:vo.getReportScore())); } } return new ResultEntity>(pageInfo); @@ -148,20 +161,45 @@ public class MemberController { @ApiParam("查询关键字:学号或学生名称") String keyword, String TOKEN, HttpServletResponse response) throws FileNotFoundException { - TokenProvider.getJWTUser(TOKEN); - memberService.exportMembers(className, trainingName, markStatus, keyword, response); + JwtUser jwtUser = TokenProvider.getJWTUser(TOKEN); + + + List members = memberService.exportMembers(className, trainingName, markStatus, keyword, jwtUser, response); + Assert.notNull(members, "没有可导出数据"); + List titles = Arrays.asList("实训任务名称", "班级", "学号", "姓名", "排名", "累计盈亏", "收益率", "模拟交易实训成绩", "实训报告成绩", "总成绩"); + ExcelData excelData = ExcelData.create(titles); + for (MemberVO member : members) { + List rows = new ArrayList<>(); + rows.add(member.getTrainingName()); + rows.add(member.getClassGrade()); + rows.add(member.getStudentNumber()); + rows.add(member.getName()); + rows.add(member.getStuRank()); + rows.add(member.getCumulativeProfitLoss()); + rows.add(member.getYield()); + rows.add(member.getTradeTrainingScore()); + rows.add(member.getReportScore()); + rows.add(member.getTotalScore()); + excelData.addRow(rows); + } + String fileName = "学生排行榜数据.xlsx"; + String file = fileUtil.getFullPath(fileName); + FileOutputStream fileOut = new FileOutputStream(file); + ExcelProvider.SimpleExcelExport(excelData, fileOut); + fileUtil.download(response, fileName); + fileUtil.remove(file); } @Permission(codes = PermissionType.TRAINING_MANAGEMENT_SEARCH) @ApiOperation("根据实训任务id获取成员列表") @GetMapping("listMembersByTrainingId") - public ResultEntity> listMembersByTrainingId(@RequestParam String trainingId, + public ResultEntity> listMembersByTrainingId(@RequestParam String trainingId, @ApiParam("班级id") Integer classId, @ApiParam("查询关键字:学号和姓名")String keyword, @RequestParam Integer index, @RequestParam Integer size) { - PageInfo members = memberService.pageListMemberByTrainingId(trainingId, classId,keyword,index, size); - return new ResultEntity>(members); + PageInfo members = memberService.pageListMemberByTrainingId(trainingId, classId,keyword,index, size); + return new ResultEntity>(members); } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/dto/MemberVO.java b/src/main/java/com/sztzjy/forex/trading_trading/dto/MemberVO.java index bad93a0..44211b2 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/dto/MemberVO.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/dto/MemberVO.java @@ -9,6 +9,8 @@ import lombok.Data; import lombok.Getter; import lombok.Setter; +import java.text.DecimalFormat; +import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; @@ -33,7 +35,7 @@ public class MemberVO { @ApiModelProperty("交易实训成绩") public Double tradeTrainingScore; @ApiModelProperty("实训报告成绩") - public Double trainingReportScore; + public Double reportScore; @ApiModelProperty("总成绩") public Double totalScore; @ApiModelProperty("排名") @@ -42,7 +44,20 @@ public class MemberVO { public String memberId; @ApiModelProperty("实训id") public String trainingId; - + @ApiModelProperty("实训状态") + public String trainingStatus; + @ApiModelProperty("收益率百分比") + public String strYield; + @ApiModelProperty("总资产") + public Double totalAssets; + @ApiModelProperty("期初资金") + public Double initialCapital; + @ApiModelProperty("可用资金") + public Double availableFunds; + @ApiModelProperty("开仓次数") + public Integer openingTrades; + @ApiModelProperty("平仓次数") + public Integer closingTrades; public static MemberVO create(MemberVO vo, List gradeWeights) { for (GradeWeight weight : gradeWeights) { @@ -61,4 +76,12 @@ public class MemberVO { }); return result; } + + public String getStrYield() { + NumberFormat percentFormat = new DecimalFormat("#0.00%"); + this.yield = yield == null ? 0 : yield; + String formattedYield = percentFormat.format(this.yield); + return formattedYield; + + } } 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 c38fd56..26079ba 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 @@ -1,5 +1,6 @@ package com.sztzjy.forex.trading_trading.mappers; +import com.sztzjy.forex.trading_trading.config.security.JwtUser; import com.sztzjy.forex.trading_trading.dto.MemberVO; import com.sztzjy.forex.trading_trading.entity.Member; import com.sztzjy.forex.trading_trading.entity.MemberExample; @@ -7,10 +8,8 @@ import com.sztzjy.forex.trading_trading.entity.MemberExample; import java.util.List; import java.util.Map; -import org.apache.ibatis.annotations.Delete; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.*; +import org.apache.ibatis.type.JdbcType; @Mapper public interface MemberMapper { @@ -65,8 +64,50 @@ public interface MemberMapper { */ List selectByExample(MemberExample example); - - List pagedListMembers(MemberExample example); + List selectByCondition(MemberExample example); + + @Select("") + @Results(id = "memberVO", value = { + @Result(column = "member_id", property = "memberId", jdbcType = JdbcType.VARCHAR, id = true), + @Result(column = "training_id", property = "trainingId", jdbcType = JdbcType.VARCHAR), + @Result(column = "name", property = "name", jdbcType = JdbcType.VARCHAR), + @Result(column = "student_number",property = "studentNumber", jdbcType = JdbcType.VARCHAR), + @Result(column = "class_grade",property = "classGrade", jdbcType = JdbcType.VARCHAR), + @Result(column = "stu_rank",property = "stuRank", jdbcType = JdbcType.INTEGER), + @Result(column = "cumulative_profit_loss",property = "cumulativeProfitLoss", jdbcType = JdbcType.DECIMAL), + @Result(column = "report_score",property = "reportScore", jdbcType = JdbcType.DECIMAL), + @Result(column = "yield",property = "yield", jdbcType = JdbcType.DECIMAL), + @Result(column = "training_name",property = "trainingName", jdbcType = JdbcType.VARCHAR), + }) + List pagedListMembers(@Param("className") String className, + @Param("trainingName") String trainingName, + @Param("markStatus") Integer markStatus, + @Param("keyword") String keyword, + @Param("schoolId") Integer schoolId); /** * This method was generated by MyBatis Generator. @@ -164,7 +205,16 @@ public interface MemberMapper { List selectMembers( @Param("schoolId") Integer schoolId, @Param("name") String name, - @Param("classGrade")String classGrade, - @Param("trainingId")String trainingId + @Param("classGrade") String classGrade, + @Param("trainingId") String trainingId ); + @Update("UPDATE sys_member AS m " + + "JOIN ( " + + " SELECT member_id, training_id, ROW_NUMBER() OVER (PARTITION BY training_id ORDER BY yield DESC,report_score DESC) AS stu_rank " + + " FROM sys_member WHERE training_id <> '999999999' " + + ") AS ranked " + + "ON m.member_id = ranked.member_id " + + "JOIN sys_training AS T on m.training_id = T.training_id " + + "SET m.stu_rank = ranked.stu_rank WHERE T.status = 'ONGOING'") + void updateStuRank(); } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/forex/trading_trading/service/GradeWeightService.java b/src/main/java/com/sztzjy/forex/trading_trading/service/GradeWeightService.java index 3a380f4..1ff9f42 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/GradeWeightService.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/GradeWeightService.java @@ -37,8 +37,8 @@ public class GradeWeightService { public GradeWeight createDefaultWeight(JwtUser user) { GradeWeightBO bo = new GradeWeightBO(); - bo.setSimulationTradingProfitScore(50); - bo.setExperimentalReportScore(50); + bo.setSimulationTradingProfitScore(60); + bo.setExperimentalReportScore(40); List details = new ArrayList<>(); //以原型来看,当收益率30%以上时得分为100或者收益率0%以下得分50,现给个默认值1000或-1000方便数据库区间查询 details.add(new GradeWeightDetailBO(1000, 30, 100, 1)); @@ -51,6 +51,22 @@ public class GradeWeightService { return gradeWeights.get(0); } + public List createDefaultWeights(JwtUser user) { + GradeWeightBO bo = new GradeWeightBO(); + bo.setSimulationTradingProfitScore(60); + bo.setExperimentalReportScore(40); + List details = new ArrayList<>(); + //以原型来看,当收益率30%以上时得分为100或者收益率0%以下得分50,现给个默认值1000或-1000方便数据库区间查询 + details.add(new GradeWeightDetailBO(1000, 30, 100, 1)); + details.add(new GradeWeightDetailBO(30, 10, 80, 2)); + details.add(new GradeWeightDetailBO(10, 0, 60, 3)); + details.add(new GradeWeightDetailBO(0, -1000, 50, 4)); + bo.setDetail(details); + List gradeWeights = GradeWeight.buildGradeWeights(bo, user); + gradeWeights.forEach(gradeWeightMapper::insertSelective); + return gradeWeights; + } + public List findWeightByWeightId(String weightId) { GradeWeightExample example = new GradeWeightExample(); GradeWeightExample.Criteria criteria = example.createCriteria(); diff --git a/src/main/java/com/sztzjy/forex/trading_trading/service/MemberService.java b/src/main/java/com/sztzjy/forex/trading_trading/service/MemberService.java index 45b5372..4c55f13 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/MemberService.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/MemberService.java @@ -5,10 +5,7 @@ import com.github.pagehelper.PageInfo; import com.sztzjy.forex.trading_trading.config.Constant; import com.sztzjy.forex.trading_trading.config.security.JwtUser; import com.sztzjy.forex.trading_trading.dto.MemberVO; -import com.sztzjy.forex.trading_trading.entity.ForexMarketData; -import com.sztzjy.forex.trading_trading.entity.Member; -import com.sztzjy.forex.trading_trading.entity.MemberExample; -import com.sztzjy.forex.trading_trading.entity.TakeStash; +import com.sztzjy.forex.trading_trading.entity.*; import com.sztzjy.forex.trading_trading.mappers.MemberMapper; import com.sztzjy.forex.trading_trading.util.BigDecimalUtils; import com.sztzjy.forex.trading_trading.util.ForexMarketDateUtil; @@ -28,6 +25,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service public class MemberService { @@ -90,39 +88,39 @@ public class MemberService { String trainingName, Integer markStatus, String keyword, - Integer schoolId, + JwtUser user, Integer page, Integer size) { - MemberExample example = new MemberExample(); - MemberExample.Criteria criteria = example.createCriteria(); - criteria.andSchoolIdEqualTo(schoolId); - if (StringUtils.hasText(className)) { - criteria.andClassGradeEqualTo(className); - } - if (StringUtils.hasText(trainingName)) { - criteria.andTrainingNameEqualTo(trainingName); - } - if (markStatus != null) { - //未评分 - if (markStatus == 0) { - criteria.andReportScoreIsNull(); - } else { - //已评分 - criteria.andReportScoreIsNotNull(); - } - } - if (StringUtils.hasText(keyword)) { - criteria.andNameLike("%" + keyword + "%"); - MemberExample.Criteria orCriteria = example.createCriteria(); - orCriteria.andStudentNumberEqualTo("%" + keyword + "%"); - example.or(orCriteria); - } +// MemberExample example = new MemberExample(); +// MemberExample.Criteria criteria = example.createCriteria(); +// criteria.andSchoolIdEqualTo(user.getSchoolId()); +// if (StringUtils.hasText(className)) { +// criteria.andClassGradeEqualTo(className); +// } +// if (StringUtils.hasText(trainingName)) { +// criteria.andTrainingNameEqualTo(trainingName); +// } +// if (markStatus != null) { +// //未评分 +// if (markStatus == 0) { +// criteria.andReportScoreIsNull(); +// } else { +// //已评分 +// criteria.andReportScoreIsNotNull(); +// } +// } +// if (StringUtils.hasText(keyword)) { +// criteria.andNameLike("%" + keyword + "%"); +// MemberExample.Criteria orCriteria = example.createCriteria(); +// orCriteria.andStudentNumberEqualTo("%" + keyword + "%"); +// example.or(orCriteria); +// } PageHelper.startPage(page, size); - return new PageInfo<>(memberMapper.pagedListMembers(example)); + return new PageInfo<>(memberMapper.pagedListMembers(className, trainingName, markStatus, keyword, user.getSchoolId())); } - public PageInfo pageListMemberByTrainingId(String trainingId, + public PageInfo pageListMemberByTrainingId(String trainingId, Integer classId, String keyword, Integer index, @@ -130,25 +128,26 @@ public class MemberService { MemberExample example = new MemberExample(); MemberExample.Criteria criteria = example.createCriteria(); criteria.andTrainingIdEqualTo(trainingId); - if (classId!=null&&classId>0) { - criteria.andClassIdEqualTo(classId); + if (classId != null && classId > 0) { + criteria.andClassIdEqualTo(classId); } - if(StringUtils.hasText(keyword)){ - criteria.andNameLike("%"+keyword+"%"); + if (StringUtils.hasText(keyword)) { + criteria.andNameLike("%" + keyword + "%"); MemberExample.Criteria orCriteria = example.createCriteria(); - orCriteria.andStudentNumberEqualTo("%"+keyword+"%"); + orCriteria.andStudentNumberEqualTo("%" + keyword + "%"); example.or(orCriteria); } example.setOrderByClause("stu_rank ASC"); PageHelper.startPage(index, size); - return new PageInfo<>(memberMapper.selectByExample(example)); + return new PageInfo<>(memberMapper.selectByCondition(example)); } - public void exportMembers(String className, + public List exportMembers(String className, String trainingName, Integer markStatus, String keyword, + JwtUser user, HttpServletResponse response) throws FileNotFoundException { MemberExample example = new MemberExample(); MemberExample.Criteria criteria = example.createCriteria(); @@ -173,30 +172,8 @@ public class MemberService { orCriteria.andStudentNumberEqualTo("%" + keyword + "%"); example.or(orCriteria); } - List members = memberMapper.pagedListMembers(example); - Assert.notNull(members, "没有可导出数据"); - List titles = Arrays.asList("实训任务名称", "班级", "学号", "姓名", "排名", "累计盈亏", "收益率", "模拟交易实训成绩", "实训报告成绩", "总成绩"); - ExcelData excelData = ExcelData.create(titles); - for (MemberVO member : members) { - List rows = new ArrayList<>(); - rows.add(member.getTrainingName()); - rows.add(member.getClassGrade()); - rows.add(member.getStudentNumber()); - rows.add(member.getName()); - rows.add(member.getStuRank()); - rows.add(member.getCumulativeProfitLoss()); - rows.add(member.getYield()); - rows.add(member.getTradeTrainingScore()); - rows.add(member.getTrainingReportScore()); - rows.add(member.getTotalScore()); - excelData.addRow(rows); - } - String fileName = "学生排行榜数据.xlsx"; - String file = fileUtil.getFullPath(fileName); - FileOutputStream fileOut = new FileOutputStream(file); - ExcelProvider.SimpleExcelExport(excelData, fileOut); - fileUtil.download(response, fileName); - fileUtil.remove(file); + List members = memberMapper.pagedListMembers(className, trainingName, markStatus, keyword, user.getSchoolId()); + return members; } public List> classScoreTrend(Integer schoolId) { @@ -223,17 +200,17 @@ public class MemberService { return memberMapper.selectAllTrainingList(schoolId); } - public List findByTrainingId(String trainingId){ + public List findByTrainingId(String trainingId) { MemberExample example = new MemberExample(); example.createCriteria().andTrainingIdEqualTo(trainingId); return memberMapper.selectByExample(example); } - public Member findByTrainingIdAndStudentNumber(String trainingId,String studentNumber){ + public Member findByTrainingIdAndStudentNumber(String trainingId, String studentNumber) { MemberExample example = new MemberExample(); example.createCriteria().andTrainingIdEqualTo(trainingId).andStudentNumberEqualTo(studentNumber); List members = memberMapper.selectByExample(example); - return members.size()>0?members.get(0):null; + return members.size() > 0 ? members.get(0) : null; } // 分批处理删除业务,防止当studentNumbers过多时生成的SQL语句可能会超过数据库支持的最大长度限制,从而导致SQL执行失败 @@ -255,21 +232,21 @@ public class MemberService { } //获取可用资金 - public Double getAvailableFunds(Member member){ + public Double getAvailableFunds(Member member) { Double positionProfitLoss = flashTotalPositionProfitLoss(member.getMemberId()); - if (positionProfitLoss==null){ - positionProfitLoss=0.0; + if (positionProfitLoss == null) { + positionProfitLoss = 0.0; } Double initialCapital = member.getInitialCapital();//初始资金 - Double totalAssets = initialCapital+positionProfitLoss; + Double totalAssets = initialCapital + positionProfitLoss; Double netValue = bigDecimalUtils.add(totalAssets, positionProfitLoss); Double cumulativeProfitLoss = member.getCumulativeProfitLoss(); //累计盈亏 - if(cumulativeProfitLoss==null){ + if (cumulativeProfitLoss == null) { member.setCumulativeProfitLoss(0.0); } Double marginUsed = member.getMarginUsed(); //获取已用保证金 - if (marginUsed==null){ - marginUsed=0.0; + if (marginUsed == null) { + marginUsed = 0.0; } return bigDecimalUtils.sub(netValue, marginUsed); } @@ -297,7 +274,7 @@ public class MemberService { if (Constant.BUY_BUYSELLTYPE.equals(buySellType)) { //买 profitAndLoss = (nowSellPic - priceTransaction) * volumeTransaction * Constant.PEACEQUANTITY; } else { //卖 - profitAndLoss = (priceTransaction-nowBuyPic) * volumeTransaction * Constant.PEACEQUANTITY; + profitAndLoss = (priceTransaction - nowBuyPic) * volumeTransaction * Constant.PEACEQUANTITY; } } totalProfitAndLoss = totalProfitAndLoss + profitAndLoss; @@ -305,4 +282,8 @@ public class MemberService { } return totalProfitAndLoss; } + + public void updateStuRank(){ + memberMapper.updateStuRank(); + } } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/service/ReportService.java b/src/main/java/com/sztzjy/forex/trading_trading/service/ReportService.java index ca5fd29..947e5f6 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/ReportService.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/ReportService.java @@ -161,7 +161,9 @@ public class ReportService { Assert.isTrue(member != null && member.getTrainingId() != null, "数据异常"); Training training = trainingService.findById(member.getTrainingId()); Assert.isTrue(training != null && training.getWeightId() != null, "数据异常"); - member.setReportScore(gradeWeightService.findReportScore(training.getWeightId(), score)); + + Double reportScore = gradeWeightService.findReportScore(training.getWeightId(), score); + member.setReportScore(reportScore); memberMapper.updateByPrimaryKeySelective(member); } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/service/ScheduledTask.java b/src/main/java/com/sztzjy/forex/trading_trading/service/ScheduledTask.java index b333436..632c34a 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/ScheduledTask.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/ScheduledTask.java @@ -345,4 +345,9 @@ public class ScheduledTask { } } + @Scheduled(cron = "0 */5 * * * ?") + public void updateStuRank() { + memberService.updateStuRank(); + } + } 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 edf7371..a24328a 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 @@ -97,6 +97,7 @@ public class TrainingService { TrainingExample example = new TrainingExample(); TrainingExample.Criteria criteria = example.createCriteria(); criteria.andSchoolIdEqualTo(schoolId); + example.setOrderByClause("create_time desc"); PageHelper.startPage(pageNo, pageSize); return new PageInfo<>(trainingMapper.selectByExample(example)); } diff --git a/src/main/resources/mappers/MemberMapper.xml b/src/main/resources/mappers/MemberMapper.xml index cc3b9e9..078f09e 100644 --- a/src/main/resources/mappers/MemberMapper.xml +++ b/src/main/resources/mappers/MemberMapper.xml @@ -78,43 +78,6 @@ cumulative_profit_loss, yield, opening_trades, closing_trades, school_id, create_school, training_name, report_score, class_id - - - - - + + + + + + + + + + + + + + + + + + + + + + insert into sys_member (member_id, training_id, name,