Merge remote-tracking branch 'origin/master'

pull/1/head
yz 2 years ago
commit 232a9c25e5

@ -35,7 +35,7 @@ public class GradeWeightController {
public ResultEntity add(@RequestBody GradeWeightBO bo) { public ResultEntity add(@RequestBody GradeWeightBO bo) {
Assert.notNull(bo, "参数错误"); Assert.notNull(bo, "参数错误");
JwtUser user = TokenProvider.getJWTUser(request); JwtUser user = TokenProvider.getJWTUser(request);
gradeWeightService.insert(bo,user); gradeWeightService.insert(bo, user);
return new ResultEntity(HttpStatus.OK); return new ResultEntity(HttpStatus.OK);
} }
@ -46,6 +46,9 @@ public class GradeWeightController {
public ResultEntity<List<GradeWeight>> findCurrentWeight() { public ResultEntity<List<GradeWeight>> findCurrentWeight() {
JwtUser currentUser = TokenProvider.getJWTUser(request); JwtUser currentUser = TokenProvider.getJWTUser(request);
List<GradeWeight> gradeWeights = gradeWeightService.findWeightBySchoolId(currentUser.getSchoolId()); List<GradeWeight> gradeWeights = gradeWeightService.findWeightBySchoolId(currentUser.getSchoolId());
if (gradeWeights == null || gradeWeights.size() == 0) {
gradeWeights = gradeWeightService.createDefaultWeights(currentUser);
}
return new ResultEntity<List<GradeWeight>>(gradeWeights); return new ResultEntity<List<GradeWeight>>(gradeWeights);
} }

@ -42,14 +42,13 @@ public class IndexController {
public ResultEntity<PageInfo<Member>> findAll(@ApiParam("分页索引:{0}为第一页") Integer index, public ResultEntity<PageInfo<Member>> findAll(@ApiParam("分页索引:{0}为第一页") Integer index,
@ApiParam("页量") @RequestParam Integer size, @ApiParam("页量") @RequestParam Integer size,
@ApiParam("班级") @RequestParam(required = false) String classGrade, @ApiParam("班级") @RequestParam(required = false) String classGrade,
@ApiParam("学号") @RequestParam(required = false) String studentNumber,
@ApiParam("姓名") @RequestParam(required = false) String name, @ApiParam("姓名") @RequestParam(required = false) String name,
@ApiParam("日期") @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime, @ApiParam("日期") @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime,
@ApiParam("实训任务名字") @RequestParam(required = false) String trainingName @ApiParam("实训任务名字") @RequestParam(required = false) String trainingName
) { ) {
JwtUser currentUser = TokenProvider.getJWTUser(request); JwtUser currentUser = TokenProvider.getJWTUser(request);
int schoolId = currentUser.getSchoolId(); int schoolId = currentUser.getSchoolId();
PageInfo<Member> byConditions = indexService.findByConditions(index, size, classGrade, studentNumber, name, startTime, trainingName, schoolId); PageInfo<Member> byConditions = indexService.findByConditions(index, size, classGrade, name, startTime, trainingName, schoolId);
return new ResultEntity<>(byConditions); return new ResultEntity<>(byConditions);
} }

@ -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.BigDecimalUtils;
import com.sztzjy.forex.trading_trading.util.ForexMarketDateUtil; import com.sztzjy.forex.trading_trading.util.ForexMarketDateUtil;
import com.sztzjy.forex.trading_trading.util.ResultEntity; 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.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.FileNotFoundException; 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; import java.util.List;
@ -60,6 +69,9 @@ public class MemberController {
@Autowired @Autowired
ForexMarketDateUtil forexMarketDateUtil; ForexMarketDateUtil forexMarketDateUtil;
@Autowired
IFileUtil fileUtil;
@AnonymousAccess @AnonymousAccess
@PostMapping("getMemberById") @PostMapping("getMemberById")
public ResultEntity getMember(@RequestBody String memberId) { public ResultEntity getMember(@RequestBody String memberId) {
@ -128,12 +140,13 @@ public class MemberController {
@ApiParam("页量") @RequestParam(required = false) Integer size) { @ApiParam("页量") @RequestParam(required = false) Integer size) {
JwtUser jwtUser = TokenProvider.getJWTUser(request); JwtUser jwtUser = TokenProvider.getJWTUser(request);
PageInfo<MemberVO> pageInfo = memberService.pagedListMembers(className, trainingName, markStatus, keyword, jwtUser.getSchoolId(),index, size); PageInfo<MemberVO> pageInfo = memberService.pagedListMembers(className, trainingName, markStatus, keyword, jwtUser,index, size);
if (!pageInfo.getList().isEmpty()) { if (!pageInfo.getList().isEmpty()) {
for (MemberVO vo : pageInfo.getList()) { for (MemberVO vo : pageInfo.getList()) {
Training training = trainingService.findById(vo.getTrainingId()); Training training = trainingService.findById(vo.getTrainingId());
if (vo.getYield() == null || training == null) continue; if (vo.getYield() == null || training == null) continue;
vo.setTradeTrainingScore(gradeWeightService.findWeightByWeightIdAndYield(training.getWeightId(), vo.getYield()).getActualScore()); vo.setTradeTrainingScore(gradeWeightService.findWeightByWeightIdAndYield(training.getWeightId(), vo.getYield()).getActualScore());
vo.setTotalScore(vo.getTradeTrainingScore() + (vo.getReportScore()==null?0:vo.getReportScore()));
} }
} }
return new ResultEntity<PageInfo<MemberVO>>(pageInfo); return new ResultEntity<PageInfo<MemberVO>>(pageInfo);
@ -148,20 +161,45 @@ public class MemberController {
@ApiParam("查询关键字:学号或学生名称") String keyword, @ApiParam("查询关键字:学号或学生名称") String keyword,
String TOKEN, String TOKEN,
HttpServletResponse response) throws FileNotFoundException { HttpServletResponse response) throws FileNotFoundException {
TokenProvider.getJWTUser(TOKEN); JwtUser jwtUser = TokenProvider.getJWTUser(TOKEN);
memberService.exportMembers(className, trainingName, markStatus, keyword, response);
List<MemberVO> members = memberService.exportMembers(className, trainingName, markStatus, keyword, jwtUser, response);
Assert.notNull(members, "没有可导出数据");
List<String> titles = Arrays.asList("实训任务名称", "班级", "学号", "姓名", "排名", "累计盈亏", "收益率", "模拟交易实训成绩", "实训报告成绩", "总成绩");
ExcelData excelData = ExcelData.create(titles);
for (MemberVO member : members) {
List<Object> 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) @Permission(codes = PermissionType.TRAINING_MANAGEMENT_SEARCH)
@ApiOperation("根据实训任务id获取成员列表") @ApiOperation("根据实训任务id获取成员列表")
@GetMapping("listMembersByTrainingId") @GetMapping("listMembersByTrainingId")
public ResultEntity<PageInfo<Member>> listMembersByTrainingId(@RequestParam String trainingId, public ResultEntity<PageInfo<MemberVO>> listMembersByTrainingId(@RequestParam String trainingId,
@ApiParam("班级id") Integer classId, @ApiParam("班级id") Integer classId,
@ApiParam("查询关键字:学号和姓名")String keyword, @ApiParam("查询关键字:学号和姓名")String keyword,
@RequestParam Integer index, @RequestParam Integer index,
@RequestParam Integer size) { @RequestParam Integer size) {
PageInfo<Member> members = memberService.pageListMemberByTrainingId(trainingId, classId,keyword,index, size); PageInfo<MemberVO> members = memberService.pageListMemberByTrainingId(trainingId, classId,keyword,index, size);
return new ResultEntity<PageInfo<Member>>(members); return new ResultEntity<PageInfo<MemberVO>>(members);
} }

@ -50,18 +50,33 @@ public class UserController {
@OperateLog(description = "用户登录") @OperateLog(description = "用户登录")
@ApiOperation(value = "用户登录", httpMethod = "POST") @ApiOperation(value = "用户登录", httpMethod = "POST")
@PostMapping("login") @PostMapping("login")
public ResultEntity<LoginResult> login(@ApiParam("用户名") @RequestParam String username, public ResultEntity<LoginResult> login(@ApiParam("用户名") String username,
@ApiParam("加密后的密文") @RequestParam String passwordEncode) { @ApiParam("加密后的密文") String passwordEncode,
@ApiParam("智云携带的token") String TOKEN) {
String password; String password;
try { JwtUser jwtUser;
password = RsaUtil.decryptByPrivateKey(passwordEncode); if (!StringUtils.hasText(username) && !StringUtils.hasText(passwordEncode) && !StringUtils.hasText(TOKEN)) {
} catch (Exception e) { throw new IllegalArgumentException("请提供登录凭据");
throw new IllegalArgumentException("密码错误"); }
if (StringUtils.hasText(TOKEN)) {
jwtUser = TokenProvider.getJWTUserByZhiYun(TOKEN);
if (jwtUser == null) {
throw new IllegalArgumentException("token无效");
}
} else {
try {
password = RsaUtil.decryptByPrivateKey(passwordEncode);
} catch (Exception e) {
throw new IllegalArgumentException("密码错误");
}
String md5Pwd = RsaUtil.calculateMD5(password);
String hashPwd = RsaUtil.formatHash(md5Pwd);
jwtUser = TzApi.foreignExchangeTradingLogin(username, hashPwd);
if (jwtUser == null) {
throw new IllegalArgumentException("用户名或密码错误");
}
} }
String md5Pwd = RsaUtil.calculateMD5(password);
String hashPwd = RsaUtil.formatHash(md5Pwd);
JwtUser jwtUser = TzApi.foreignExchangeTradingLogin(username, hashPwd);
jwtUser.setAuthorityCodes(roleAuthorityService.getAuthorityByRoleId(jwtUser.getRoleId())); jwtUser.setAuthorityCodes(roleAuthorityService.getAuthorityByRoleId(jwtUser.getRoleId()));
Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities()); Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication); SecurityContextHolder.getContext().setAuthentication(authentication);
@ -84,7 +99,6 @@ public class UserController {
} }
@ApiOperation(value = "注销登录", httpMethod = "POST") @ApiOperation(value = "注销登录", httpMethod = "POST")
@PostMapping("/logout") @PostMapping("/logout")
public ResultEntity logout(HttpServletRequest request) { public ResultEntity logout(HttpServletRequest request) {
@ -100,8 +114,7 @@ public class UserController {
} }
// @Permission()
// @Permission()
@AnonymousAccess @AnonymousAccess
@ApiOperation("获取当前在线用户") @ApiOperation("获取当前在线用户")
@GetMapping("online-users") @GetMapping("online-users")

@ -9,6 +9,8 @@ import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -33,7 +35,7 @@ public class MemberVO {
@ApiModelProperty("交易实训成绩") @ApiModelProperty("交易实训成绩")
public Double tradeTrainingScore; public Double tradeTrainingScore;
@ApiModelProperty("实训报告成绩") @ApiModelProperty("实训报告成绩")
public Double trainingReportScore; public Double reportScore;
@ApiModelProperty("总成绩") @ApiModelProperty("总成绩")
public Double totalScore; public Double totalScore;
@ApiModelProperty("排名") @ApiModelProperty("排名")
@ -42,7 +44,20 @@ public class MemberVO {
public String memberId; public String memberId;
@ApiModelProperty("实训id") @ApiModelProperty("实训id")
public String trainingId; 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<GradeWeight> gradeWeights) { public static MemberVO create(MemberVO vo, List<GradeWeight> gradeWeights) {
for (GradeWeight weight : gradeWeights) { for (GradeWeight weight : gradeWeights) {
@ -61,4 +76,12 @@ public class MemberVO {
}); });
return result; 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;
}
} }

@ -1,5 +1,6 @@
package com.sztzjy.forex.trading_trading.mappers; 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.dto.MemberVO;
import com.sztzjy.forex.trading_trading.entity.Member; import com.sztzjy.forex.trading_trading.entity.Member;
import com.sztzjy.forex.trading_trading.entity.MemberExample; 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.List;
import java.util.Map; import java.util.Map;
import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.*;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper @Mapper
public interface MemberMapper { public interface MemberMapper {
@ -65,8 +64,50 @@ public interface MemberMapper {
*/ */
List<Member> selectByExample(MemberExample example); List<Member> selectByExample(MemberExample example);
List<MemberVO> selectByCondition(MemberExample example);
List<MemberVO> pagedListMembers(MemberExample example);
@Select("<script>" +
"SELECT m.*, t.status AS trainingStatus " +
"FROM sys_member m " +
"LEFT JOIN sys_training t ON m.training_id = t.training_id " +
"WHERE m.school_id = #{schoolId} " +
"AND (t.status = 'FINISHED') " +
"<if test='className != null and className.trim() != \"\"'> " +
"AND m.class_grade = #{className} " +
"</if> " +
"<if test='trainingName != null and trainingName.trim() != \"\"'> " +
"AND t.training_name = #{trainingName} " +
"</if> " +
"<if test='markStatus != null'> " +
"<if test='markStatus == 0'> " +
"AND m.report_score IS NULL " +
"</if> " +
"<if test='markStatus == 1'> " +
"AND m.report_score IS NOT NULL " +
"</if> " +
"</if> " +
"<if test='keyword != null and keyword.trim() != \"\"'> " +
"AND (m.name LIKE CONCAT('%', #{keyword}, '%') OR m.student_number LIKE CONCAT('%', #{keyword}, '%')) " +
"</if>" +
" order by stu_rank " +
"</script>")
@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<MemberVO> 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. * This method was generated by MyBatis Generator.
@ -155,4 +196,25 @@ public interface MemberMapper {
" #{item} " + " #{item} " +
" </foreach> ") " </foreach> ")
void deleteMembersByTrainingIdNotInStudentInfos(@Param("trainingId") String trainingId, @Param("list") List<String> list); void deleteMembersByTrainingIdNotInStudentInfos(@Param("trainingId") String trainingId, @Param("list") List<String> list);
List<Member> selectMemberByNameAndNumber(
@Param("schoolId") Integer schoolId,
@Param("name") String name
);
List<Member> selectMembers(
@Param("schoolId") Integer schoolId,
@Param("name") String name,
@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();
} }

@ -37,8 +37,8 @@ public class GradeWeightService {
public GradeWeight createDefaultWeight(JwtUser user) { public GradeWeight createDefaultWeight(JwtUser user) {
GradeWeightBO bo = new GradeWeightBO(); GradeWeightBO bo = new GradeWeightBO();
bo.setSimulationTradingProfitScore(50); bo.setSimulationTradingProfitScore(60);
bo.setExperimentalReportScore(50); bo.setExperimentalReportScore(40);
List<GradeWeightDetailBO> details = new ArrayList<>(); List<GradeWeightDetailBO> details = new ArrayList<>();
//以原型来看当收益率30%以上时得分为100或者收益率0%以下得分50现给个默认值1000或-1000方便数据库区间查询 //以原型来看当收益率30%以上时得分为100或者收益率0%以下得分50现给个默认值1000或-1000方便数据库区间查询
details.add(new GradeWeightDetailBO(1000, 30, 100, 1)); details.add(new GradeWeightDetailBO(1000, 30, 100, 1));
@ -51,6 +51,22 @@ public class GradeWeightService {
return gradeWeights.get(0); return gradeWeights.get(0);
} }
public List<GradeWeight> createDefaultWeights(JwtUser user) {
GradeWeightBO bo = new GradeWeightBO();
bo.setSimulationTradingProfitScore(60);
bo.setExperimentalReportScore(40);
List<GradeWeightDetailBO> 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<GradeWeight> gradeWeights = GradeWeight.buildGradeWeights(bo, user);
gradeWeights.forEach(gradeWeightMapper::insertSelective);
return gradeWeights;
}
public List<GradeWeight> findWeightByWeightId(String weightId) { public List<GradeWeight> findWeightByWeightId(String weightId) {
GradeWeightExample example = new GradeWeightExample(); GradeWeightExample example = new GradeWeightExample();
GradeWeightExample.Criteria criteria = example.createCriteria(); GradeWeightExample.Criteria criteria = example.createCriteria();

@ -22,14 +22,12 @@ public class IndexService {
private final MemberMapper memberMapper; private final MemberMapper memberMapper;
private final TrainingMapper trainingMapper; private final TrainingMapper trainingMapper;
//TODO 实训任务结束后系统自动显示模拟交易实训成绩,教师评分之后显示实验报告成绩。
// 首页分页 排序 模糊查询 // 首页分页 排序 模糊查询
public PageInfo<Member> findByConditions(Integer index, Integer size, String classGrade, String studentNumber, String name, Date startTime, String trainingName, Integer schoolId) { public PageInfo<Member> findByConditions(Integer index, Integer size, String classGrade, String name, Date startTime, String trainingName, Integer schoolId) {
TrainingExample trainingExample = new TrainingExample(); TrainingExample trainingExample = new TrainingExample();
PageHelper.startPage(index, size); PageHelper.startPage(index, size);
// 跳转到首页 没有参数 显示所有 // 跳转到首页 没有参数 显示所有
if (classGrade == null && studentNumber == null && name == null && startTime == null && trainingName == null) { if (classGrade == null && name == null && startTime == null && trainingName == null) {
MemberExample memberExample = new MemberExample(); MemberExample memberExample = new MemberExample();
MemberExample.Criteria criteria = memberExample.createCriteria(); MemberExample.Criteria criteria = memberExample.createCriteria();
if (schoolId != null) { if (schoolId != null) {
@ -52,35 +50,25 @@ public class IndexService {
if (StringUtils.isNotEmpty(trainingName)) { if (StringUtils.isNotEmpty(trainingName)) {
criteria.andTrainingNameEqualTo(trainingName); criteria.andTrainingNameEqualTo(trainingName);
} }
if (startTime!=null) { if (startTime != null) {
criteria.andStartTimeEqualTo(startTime); criteria.andStartTimeEqualTo(startTime);
} }
List<Training> trainings = null; List<Training> trainings = null;
if (StringUtils.isNotEmpty(trainingName) || startTime!=null) { if (StringUtils.isNotEmpty(trainingName) || startTime != null) {
trainings = trainingMapper.selectByExample(trainingExample); trainings = trainingMapper.selectByExample(trainingExample);
} }
List<Member> members = new ArrayList<>(); List<Member> members = new ArrayList<>();
if (trainings == null || trainings.isEmpty()) {
if (classGrade == null && name == null) {
return null;
}
}
if (trainings != null && !trainings.isEmpty()) { if (trainings != null && !trainings.isEmpty()) {
//根据trainingName查到了对象 //根据trainingName查到了对象
for (Training training : trainings) { for (Training training : trainings) {
MemberExample memberExample = new MemberExample();
MemberExample.Criteria criteria1 = memberExample.createCriteria();
String trainingId = training.getTrainingId(); String trainingId = training.getTrainingId();
if (trainingId != null) { List<Member> membersForTraining = memberMapper.selectMembers(schoolId, name, classGrade, trainingId); //
criteria1.andTrainingIdEqualTo(trainingId);
}
if (StringUtils.isNotEmpty(classGrade)) {
criteria1.andClassGradeLike("%" + classGrade + "%");
}
if (StringUtils.isNotEmpty(studentNumber)) {
criteria1.andStudentNumberLike("%" + studentNumber + "%");
}
if (StringUtils.isNotEmpty(name)) {
criteria1.andNameLike("%" + name + "%");
}
memberExample.setOrderByClause("yield DESC");
List<Member> membersForTraining = memberMapper.selectByExample(memberExample);
for (int i = 1; i <= membersForTraining.size(); i++) { for (int i = 1; i <= membersForTraining.size(); i++) {
for (Member member : membersForTraining) { for (Member member : membersForTraining) {
member.setStuRank(i); member.setStuRank(i);
@ -88,33 +76,17 @@ public class IndexService {
} }
} }
members.addAll(membersForTraining); members.addAll(membersForTraining);
return new PageInfo<>(members);
} }
return new PageInfo<>(members);
}
//没有传training表中两个参数时直接查member表
MemberExample memberExample = new MemberExample();
MemberExample.Criteria criteria1 = memberExample.createCriteria();
if (schoolId != null) {
criteria1.andSchoolIdEqualTo(schoolId);
}
if (StringUtils.isNotEmpty(classGrade)) {
criteria1.andClassGradeLike("%" + classGrade + "%");
}
if (StringUtils.isNotEmpty(studentNumber)) {
criteria1.andStudentNumberLike("%" + studentNumber + "%");
}
if (StringUtils.isNotEmpty(name)) {
criteria1.andNameLike("%" + name + "%");
} }
memberExample.setOrderByClause("yield DESC");
PageHelper.startPage(index, size); PageHelper.startPage(index, size);
List<Member> membersForTraining = memberMapper.selectByExample(memberExample); List<Member> resultMembers = memberMapper.selectMemberByNameAndNumber(schoolId, name);
for (int i = 1; i <= membersForTraining.size(); i++) { for (int i = 1; i <= resultMembers.size(); i++) {
for (Member member : membersForTraining) { for (Member resultMember : resultMembers) {
member.setStuRank(i); resultMember.setStuRank(i);
i++; i++;
} }
} }
return new PageInfo<>(membersForTraining); return new PageInfo<>(resultMembers);
} }
} }

@ -5,10 +5,7 @@ import com.github.pagehelper.PageInfo;
import com.sztzjy.forex.trading_trading.config.Constant; import com.sztzjy.forex.trading_trading.config.Constant;
import com.sztzjy.forex.trading_trading.config.security.JwtUser; import com.sztzjy.forex.trading_trading.config.security.JwtUser;
import com.sztzjy.forex.trading_trading.dto.MemberVO; import com.sztzjy.forex.trading_trading.dto.MemberVO;
import com.sztzjy.forex.trading_trading.entity.ForexMarketData; import com.sztzjy.forex.trading_trading.entity.*;
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.mappers.MemberMapper; import com.sztzjy.forex.trading_trading.mappers.MemberMapper;
import com.sztzjy.forex.trading_trading.util.BigDecimalUtils; import com.sztzjy.forex.trading_trading.util.BigDecimalUtils;
import com.sztzjy.forex.trading_trading.util.ForexMarketDateUtil; import com.sztzjy.forex.trading_trading.util.ForexMarketDateUtil;
@ -28,6 +25,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
@Service @Service
public class MemberService { public class MemberService {
@ -90,39 +88,39 @@ public class MemberService {
String trainingName, String trainingName,
Integer markStatus, Integer markStatus,
String keyword, String keyword,
Integer schoolId, JwtUser user,
Integer page, Integer page,
Integer size) { Integer size) {
MemberExample example = new MemberExample(); // MemberExample example = new MemberExample();
MemberExample.Criteria criteria = example.createCriteria(); // MemberExample.Criteria criteria = example.createCriteria();
criteria.andSchoolIdEqualTo(schoolId); // criteria.andSchoolIdEqualTo(user.getSchoolId());
if (StringUtils.hasText(className)) { // if (StringUtils.hasText(className)) {
criteria.andClassGradeEqualTo(className); // criteria.andClassGradeEqualTo(className);
} // }
if (StringUtils.hasText(trainingName)) { // if (StringUtils.hasText(trainingName)) {
criteria.andTrainingNameEqualTo(trainingName); // criteria.andTrainingNameEqualTo(trainingName);
} // }
if (markStatus != null) { // if (markStatus != null) {
//未评分 // //未评分
if (markStatus == 0) { // if (markStatus == 0) {
criteria.andReportScoreIsNull(); // criteria.andReportScoreIsNull();
} else { // } else {
//已评分 // //已评分
criteria.andReportScoreIsNotNull(); // criteria.andReportScoreIsNotNull();
} // }
} // }
if (StringUtils.hasText(keyword)) { // if (StringUtils.hasText(keyword)) {
criteria.andNameLike("%" + keyword + "%"); // criteria.andNameLike("%" + keyword + "%");
MemberExample.Criteria orCriteria = example.createCriteria(); // MemberExample.Criteria orCriteria = example.createCriteria();
orCriteria.andStudentNumberEqualTo("%" + keyword + "%"); // orCriteria.andStudentNumberEqualTo("%" + keyword + "%");
example.or(orCriteria); // example.or(orCriteria);
} // }
PageHelper.startPage(page, size); PageHelper.startPage(page, size);
return new PageInfo<>(memberMapper.pagedListMembers(example)); return new PageInfo<>(memberMapper.pagedListMembers(className, trainingName, markStatus, keyword, user.getSchoolId()));
} }
public PageInfo<Member> pageListMemberByTrainingId(String trainingId, public PageInfo<MemberVO> pageListMemberByTrainingId(String trainingId,
Integer classId, Integer classId,
String keyword, String keyword,
Integer index, Integer index,
@ -130,25 +128,26 @@ public class MemberService {
MemberExample example = new MemberExample(); MemberExample example = new MemberExample();
MemberExample.Criteria criteria = example.createCriteria(); MemberExample.Criteria criteria = example.createCriteria();
criteria.andTrainingIdEqualTo(trainingId); criteria.andTrainingIdEqualTo(trainingId);
if (classId!=null&&classId>0) { if (classId != null && classId > 0) {
criteria.andClassIdEqualTo(classId); criteria.andClassIdEqualTo(classId);
} }
if(StringUtils.hasText(keyword)){ if (StringUtils.hasText(keyword)) {
criteria.andNameLike("%"+keyword+"%"); criteria.andNameLike("%" + keyword + "%");
MemberExample.Criteria orCriteria = example.createCriteria(); MemberExample.Criteria orCriteria = example.createCriteria();
orCriteria.andStudentNumberEqualTo("%"+keyword+"%"); orCriteria.andStudentNumberEqualTo("%" + keyword + "%");
example.or(orCriteria); example.or(orCriteria);
} }
example.setOrderByClause("stu_rank ASC"); example.setOrderByClause("stu_rank ASC");
PageHelper.startPage(index, size); PageHelper.startPage(index, size);
return new PageInfo<>(memberMapper.selectByExample(example)); return new PageInfo<>(memberMapper.selectByCondition(example));
} }
public void exportMembers(String className, public List<MemberVO> exportMembers(String className,
String trainingName, String trainingName,
Integer markStatus, Integer markStatus,
String keyword, String keyword,
JwtUser user,
HttpServletResponse response) throws FileNotFoundException { HttpServletResponse response) throws FileNotFoundException {
MemberExample example = new MemberExample(); MemberExample example = new MemberExample();
MemberExample.Criteria criteria = example.createCriteria(); MemberExample.Criteria criteria = example.createCriteria();
@ -173,30 +172,8 @@ public class MemberService {
orCriteria.andStudentNumberEqualTo("%" + keyword + "%"); orCriteria.andStudentNumberEqualTo("%" + keyword + "%");
example.or(orCriteria); example.or(orCriteria);
} }
List<MemberVO> members = memberMapper.pagedListMembers(example); List<MemberVO> members = memberMapper.pagedListMembers(className, trainingName, markStatus, keyword, user.getSchoolId());
Assert.notNull(members, "没有可导出数据"); return members;
List<String> titles = Arrays.asList("实训任务名称", "班级", "学号", "姓名", "排名", "累计盈亏", "收益率", "模拟交易实训成绩", "实训报告成绩", "总成绩");
ExcelData excelData = ExcelData.create(titles);
for (MemberVO member : members) {
List<Object> 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);
} }
public List<Map<String, Object>> classScoreTrend(Integer schoolId) { public List<Map<String, Object>> classScoreTrend(Integer schoolId) {
@ -223,17 +200,17 @@ public class MemberService {
return memberMapper.selectAllTrainingList(schoolId); return memberMapper.selectAllTrainingList(schoolId);
} }
public List<Member> findByTrainingId(String trainingId){ public List<Member> findByTrainingId(String trainingId) {
MemberExample example = new MemberExample(); MemberExample example = new MemberExample();
example.createCriteria().andTrainingIdEqualTo(trainingId); example.createCriteria().andTrainingIdEqualTo(trainingId);
return memberMapper.selectByExample(example); return memberMapper.selectByExample(example);
} }
public Member findByTrainingIdAndStudentNumber(String trainingId,String studentNumber){ public Member findByTrainingIdAndStudentNumber(String trainingId, String studentNumber) {
MemberExample example = new MemberExample(); MemberExample example = new MemberExample();
example.createCriteria().andTrainingIdEqualTo(trainingId).andStudentNumberEqualTo(studentNumber); example.createCriteria().andTrainingIdEqualTo(trainingId).andStudentNumberEqualTo(studentNumber);
List<Member> members = memberMapper.selectByExample(example); List<Member> members = memberMapper.selectByExample(example);
return members.size()>0?members.get(0):null; return members.size() > 0 ? members.get(0) : null;
} }
// 分批处理删除业务防止当studentNumbers过多时生成的SQL语句可能会超过数据库支持的最大长度限制从而导致SQL执行失败 // 分批处理删除业务防止当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()); Double positionProfitLoss = flashTotalPositionProfitLoss(member.getMemberId());
if (positionProfitLoss==null){ if (positionProfitLoss == null) {
positionProfitLoss=0.0; positionProfitLoss = 0.0;
} }
Double initialCapital = member.getInitialCapital();//初始资金 Double initialCapital = member.getInitialCapital();//初始资金
Double totalAssets = initialCapital+positionProfitLoss; Double totalAssets = initialCapital + positionProfitLoss;
Double netValue = bigDecimalUtils.add(totalAssets, positionProfitLoss); Double netValue = bigDecimalUtils.add(totalAssets, positionProfitLoss);
Double cumulativeProfitLoss = member.getCumulativeProfitLoss(); //累计盈亏 Double cumulativeProfitLoss = member.getCumulativeProfitLoss(); //累计盈亏
if(cumulativeProfitLoss==null){ if (cumulativeProfitLoss == null) {
member.setCumulativeProfitLoss(0.0); member.setCumulativeProfitLoss(0.0);
} }
Double marginUsed = member.getMarginUsed(); //获取已用保证金 Double marginUsed = member.getMarginUsed(); //获取已用保证金
if (marginUsed==null){ if (marginUsed == null) {
marginUsed=0.0; marginUsed = 0.0;
} }
return bigDecimalUtils.sub(netValue, marginUsed); return bigDecimalUtils.sub(netValue, marginUsed);
} }
@ -297,7 +274,7 @@ public class MemberService {
if (Constant.BUY_BUYSELLTYPE.equals(buySellType)) { //买 if (Constant.BUY_BUYSELLTYPE.equals(buySellType)) { //买
profitAndLoss = (nowSellPic - priceTransaction) * volumeTransaction * Constant.PEACEQUANTITY; profitAndLoss = (nowSellPic - priceTransaction) * volumeTransaction * Constant.PEACEQUANTITY;
} else { //卖 } else { //卖
profitAndLoss = (priceTransaction-nowBuyPic) * volumeTransaction * Constant.PEACEQUANTITY; profitAndLoss = (priceTransaction - nowBuyPic) * volumeTransaction * Constant.PEACEQUANTITY;
} }
} }
totalProfitAndLoss = totalProfitAndLoss + profitAndLoss; totalProfitAndLoss = totalProfitAndLoss + profitAndLoss;
@ -305,4 +282,8 @@ public class MemberService {
} }
return totalProfitAndLoss; return totalProfitAndLoss;
} }
public void updateStuRank(){
memberMapper.updateStuRank();
}
} }

@ -161,7 +161,9 @@ public class ReportService {
Assert.isTrue(member != null && member.getTrainingId() != null, "数据异常"); Assert.isTrue(member != null && member.getTrainingId() != null, "数据异常");
Training training = trainingService.findById(member.getTrainingId()); Training training = trainingService.findById(member.getTrainingId());
Assert.isTrue(training != null && training.getWeightId() != null, "数据异常"); 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); memberMapper.updateByPrimaryKeySelective(member);
} }

@ -345,4 +345,9 @@ public class ScheduledTask {
} }
} }
@Scheduled(cron = "0 */5 * * * ?")
public void updateStuRank() {
memberService.updateStuRank();
}
} }

@ -18,10 +18,7 @@ import org.springframework.util.StringUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service @Service
public class TrainingService { public class TrainingService {
@ -100,6 +97,7 @@ public class TrainingService {
TrainingExample example = new TrainingExample(); TrainingExample example = new TrainingExample();
TrainingExample.Criteria criteria = example.createCriteria(); TrainingExample.Criteria criteria = example.createCriteria();
criteria.andSchoolIdEqualTo(schoolId); criteria.andSchoolIdEqualTo(schoolId);
example.setOrderByClause("create_time desc");
PageHelper.startPage(pageNo, pageSize); PageHelper.startPage(pageNo, pageSize);
return new PageInfo<>(trainingMapper.selectByExample(example)); return new PageInfo<>(trainingMapper.selectByExample(example));
} }
@ -125,8 +123,12 @@ public class TrainingService {
for (Member member : members) { for (Member member : members) {
String trainingId = member.getTrainingId(); String trainingId = member.getTrainingId();
Training training = trainingMapper.selectByPrimaryKey(trainingId); Training training = trainingMapper.selectByPrimaryKey(trainingId);
trainingList.add(training); if (training != null) {
trainingList.add(training);
}
} }
List<String> statusOrder = Arrays.asList("ONGOING", "NOT_STARTED", "FINISHED");
trainingList.sort(Comparator.comparingInt(training -> statusOrder.indexOf(training.getStatus())));
return new PageInfo<>(trainingList); return new PageInfo<>(trainingList);
} }
return new PageInfo<>(); return new PageInfo<>();

@ -1,258 +1,260 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sztzjy.forex.trading_trading.mappers.MemberMapper"> <mapper namespace="com.sztzjy.forex.trading_trading.mappers.MemberMapper">
<resultMap id="BaseResultMap" type="com.sztzjy.forex.trading_trading.entity.Member"> <resultMap id="BaseResultMap" type="com.sztzjy.forex.trading_trading.entity.Member">
<!-- <!--
WARNING - @mbg.generated WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify. This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Wed Jul 19 15:55:18 CST 2023. This element was generated on Wed Jul 19 15:55:18 CST 2023.
--> -->
<id column="member_id" jdbcType="VARCHAR" property="memberId" /> <id column="member_id" jdbcType="VARCHAR" property="memberId"/>
<result column="training_id" jdbcType="VARCHAR" property="trainingId" /> <result column="training_id" jdbcType="VARCHAR" property="trainingId"/>
<result column="name" jdbcType="VARCHAR" property="name" /> <result column="name" jdbcType="VARCHAR" property="name"/>
<result column="student_number" jdbcType="VARCHAR" property="studentNumber" /> <result column="student_number" jdbcType="VARCHAR" property="studentNumber"/>
<result column="major" jdbcType="VARCHAR" property="major" /> <result column="major" jdbcType="VARCHAR" property="major"/>
<result column="class_grade" jdbcType="VARCHAR" property="classGrade" /> <result column="class_grade" jdbcType="VARCHAR" property="classGrade"/>
<result column="stu_rank" jdbcType="INTEGER" property="stuRank" /> <result column="stu_rank" jdbcType="INTEGER" property="stuRank"/>
<result column="initial_capital" jdbcType="DOUBLE" property="initialCapital" /> <result column="initial_capital" jdbcType="DOUBLE" property="initialCapital"/>
<result column="total_assets" jdbcType="DOUBLE" property="totalAssets" /> <result column="total_assets" jdbcType="DOUBLE" property="totalAssets"/>
<result column="net_value" jdbcType="DOUBLE" property="netValue" /> <result column="net_value" jdbcType="DOUBLE" property="netValue"/>
<result column="margin_used" jdbcType="DOUBLE" property="marginUsed" /> <result column="margin_used" jdbcType="DOUBLE" property="marginUsed"/>
<result column="available_funds" jdbcType="DOUBLE" property="availableFunds" /> <result column="available_funds" jdbcType="DOUBLE" property="availableFunds"/>
<result column="margin_level" jdbcType="DOUBLE" property="marginLevel" /> <result column="margin_level" jdbcType="DOUBLE" property="marginLevel"/>
<result column="position_profit_loss" jdbcType="DOUBLE" property="positionProfitLoss" /> <result column="position_profit_loss" jdbcType="DOUBLE" property="positionProfitLoss"/>
<result column="cumulative_profit_loss" jdbcType="DOUBLE" property="cumulativeProfitLoss" /> <result column="cumulative_profit_loss" jdbcType="DOUBLE" property="cumulativeProfitLoss"/>
<result column="yield" jdbcType="DOUBLE" property="yield" /> <result column="yield" jdbcType="DOUBLE" property="yield"/>
<result column="opening_trades" jdbcType="INTEGER" property="openingTrades" /> <result column="opening_trades" jdbcType="INTEGER" property="openingTrades"/>
<result column="closing_trades" jdbcType="INTEGER" property="closingTrades" /> <result column="closing_trades" jdbcType="INTEGER" property="closingTrades"/>
<result column="school_id" jdbcType="INTEGER" property="schoolId" /> <result column="school_id" jdbcType="INTEGER" property="schoolId"/>
<result column="create_school" jdbcType="VARCHAR" property="createSchool" /> <result column="create_school" jdbcType="VARCHAR" property="createSchool"/>
<result column="training_name" jdbcType="VARCHAR" property="trainingName" /> <result column="training_name" jdbcType="VARCHAR" property="trainingName"/>
<result column="report_score" jdbcType="INTEGER" property="reportScore" /> <result column="report_score" jdbcType="INTEGER" property="reportScore"/>
<result column="class_id" jdbcType="INTEGER" property="classId" /> <result column="class_id" jdbcType="INTEGER" property="classId"/>
</resultMap> </resultMap>
<sql id="Example_Where_Clause"> <sql id="Example_Where_Clause">
<!-- <!--
WARNING - @mbg.generated WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify. This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Wed Jul 19 15:55:18 CST 2023. This element was generated on Wed Jul 19 15:55:18 CST 2023.
--> -->
<where> <where>
<foreach collection="oredCriteria" item="criteria" separator="or"> <foreach collection="oredCriteria" item="criteria" separator="or">
<if test="criteria.valid"> <if test="criteria.valid">
<trim prefix="(" prefixOverrides="and" suffix=")"> <trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion"> <foreach collection="criteria.criteria" item="criterion">
<choose> <choose>
<when test="criterion.noValue"> <when test="criterion.noValue">
and ${criterion.condition} and ${criterion.condition}
</when> </when>
<when test="criterion.singleValue"> <when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value} and ${criterion.condition} #{criterion.value}
</when> </when>
<when test="criterion.betweenValue"> <when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when> </when>
<when test="criterion.listValue"> <when test="criterion.listValue">
and ${criterion.condition} and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="(" separator=","> <foreach close=")" collection="criterion.value" item="listItem" open="("
#{listItem} separator=",">
</foreach> #{listItem}
</when> </foreach>
</choose> </when>
</choose>
</foreach>
</trim>
</if>
</foreach> </foreach>
</trim> </where>
</if> </sql>
</foreach>
</where>
</sql>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!-- <!--
WARNING - @mbg.generated WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify. This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Wed Jul 19 15:55:18 CST 2023. This element was generated on Wed Jul 19 15:55:18 CST 2023.
--> -->
member_id, training_id, name, student_number, major, class_grade, stu_rank, initial_capital, member_id, training_id, name, student_number, major, class_grade, stu_rank, initial_capital,
total_assets, net_value, margin_used, available_funds, margin_level, position_profit_loss, total_assets, net_value, margin_used, available_funds, margin_level, position_profit_loss,
cumulative_profit_loss, yield, opening_trades, closing_trades, school_id, create_school, cumulative_profit_loss, yield, opening_trades, closing_trades, school_id, create_school,
training_name, report_score, class_id training_name, report_score, class_id
</sql> </sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap"> <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
<!-- <!--
WARNING - @mbg.generated WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify. This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Wed Jul 19 15:55:18 CST 2023. This element was generated on Wed Jul 19 15:55:18 CST 2023.
--> -->
select select
<include refid="Base_Column_List" /> <include refid="Base_Column_List"/>
from sys_member from sys_member
where member_id = #{memberId,jdbcType=VARCHAR} where member_id = #{memberId,jdbcType=VARCHAR}
</select> </select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String"> <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
<!-- <!--
WARNING - @mbg.generated WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify. This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Wed Jul 19 15:55:18 CST 2023. This element was generated on Wed Jul 19 15:55:18 CST 2023.
--> -->
delete from sys_member delete from sys_member
where member_id = #{memberId,jdbcType=VARCHAR} where member_id = #{memberId,jdbcType=VARCHAR}
</delete> </delete>
<delete id="deleteByExample" parameterType="com.sztzjy.forex.trading_trading.entity.MemberExample"> <delete id="deleteByExample" parameterType="com.sztzjy.forex.trading_trading.entity.MemberExample">
<!-- <!--
WARNING - @mbg.generated WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify. This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Wed Jul 19 15:55:18 CST 2023. This element was generated on Wed Jul 19 15:55:18 CST 2023.
--> -->
delete from sys_member delete from sys_member
<if test="_parameter != null"> <if test="_parameter != null">
<include refid="Example_Where_Clause" /> <include refid="Example_Where_Clause"/>
</if> </if>
</delete> </delete>
<insert id="insert" parameterType="com.sztzjy.forex.trading_trading.entity.Member"> <insert id="insert" parameterType="com.sztzjy.forex.trading_trading.entity.Member">
<!-- <!--
WARNING - @mbg.generated WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify. This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Wed Jul 19 15:55:18 CST 2023. This element was generated on Wed Jul 19 15:55:18 CST 2023.
--> -->
insert into sys_member (member_id, training_id, name, insert into sys_member (member_id, training_id, name,
student_number, major, class_grade, student_number, major, class_grade,
stu_rank, initial_capital, total_assets, stu_rank, initial_capital, total_assets,
net_value, margin_used, available_funds, net_value, margin_used, available_funds,
margin_level, position_profit_loss, cumulative_profit_loss, margin_level, position_profit_loss, cumulative_profit_loss,
yield, opening_trades, closing_trades, yield, opening_trades, closing_trades,
school_id, create_school, training_name, school_id, create_school, training_name,
report_score, class_id) report_score, class_id)
values (#{memberId,jdbcType=VARCHAR}, #{trainingId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, values (#{memberId,jdbcType=VARCHAR}, #{trainingId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR},
#{studentNumber,jdbcType=VARCHAR}, #{major,jdbcType=VARCHAR}, #{classGrade,jdbcType=VARCHAR}, #{studentNumber,jdbcType=VARCHAR}, #{major,jdbcType=VARCHAR}, #{classGrade,jdbcType=VARCHAR},
#{stuRank,jdbcType=INTEGER}, #{initialCapital,jdbcType=DOUBLE}, #{totalAssets,jdbcType=DOUBLE}, #{stuRank,jdbcType=INTEGER}, #{initialCapital,jdbcType=DOUBLE}, #{totalAssets,jdbcType=DOUBLE},
#{netValue,jdbcType=DOUBLE}, #{marginUsed,jdbcType=DOUBLE}, #{availableFunds,jdbcType=DOUBLE}, #{netValue,jdbcType=DOUBLE}, #{marginUsed,jdbcType=DOUBLE}, #{availableFunds,jdbcType=DOUBLE},
#{marginLevel,jdbcType=DOUBLE}, #{positionProfitLoss,jdbcType=DOUBLE}, #{cumulativeProfitLoss,jdbcType=DOUBLE}, #{marginLevel,jdbcType=DOUBLE}, #{positionProfitLoss,jdbcType=DOUBLE}, #{cumulativeProfitLoss,jdbcType=DOUBLE},
#{yield,jdbcType=DOUBLE}, #{openingTrades,jdbcType=INTEGER}, #{closingTrades,jdbcType=INTEGER}, #{yield,jdbcType=DOUBLE}, #{openingTrades,jdbcType=INTEGER}, #{closingTrades,jdbcType=INTEGER},
#{schoolId,jdbcType=INTEGER}, #{createSchool,jdbcType=VARCHAR}, #{trainingName,jdbcType=VARCHAR}, #{schoolId,jdbcType=INTEGER}, #{createSchool,jdbcType=VARCHAR}, #{trainingName,jdbcType=VARCHAR},
#{reportScore,jdbcType=INTEGER}, #{classId,jdbcType=INTEGER}) #{reportScore,jdbcType=INTEGER}, #{classId,jdbcType=INTEGER})
</insert> </insert>
<select id="countByExample" parameterType="com.sztzjy.forex.trading_trading.entity.MemberExample" resultType="java.lang.Long"> <select id="countByExample" parameterType="com.sztzjy.forex.trading_trading.entity.MemberExample"
<!-- resultType="java.lang.Long">
WARNING - @mbg.generated <!--
This element is automatically generated by MyBatis Generator, do not modify. WARNING - @mbg.generated
This element was generated on Wed Jul 19 15:55:18 CST 2023. This element is automatically generated by MyBatis Generator, do not modify.
--> This element was generated on Wed Jul 19 15:55:18 CST 2023.
select count(*) from sys_member -->
<if test="_parameter != null"> select count(*) from sys_member
<include refid="Example_Where_Clause" /> <if test="_parameter != null">
</if> <include refid="Example_Where_Clause"/>
</select> </if>
<update id="updateByExampleSelective" parameterType="map"> </select>
<!-- <update id="updateByExampleSelective" parameterType="map">
WARNING - @mbg.generated <!--
This element is automatically generated by MyBatis Generator, do not modify. WARNING - @mbg.generated
This element was generated on Wed Jul 19 15:55:18 CST 2023. This element is automatically generated by MyBatis Generator, do not modify.
--> This element was generated on Wed Jul 19 15:55:18 CST 2023.
update sys_member -->
set member_id = #{record.memberId,jdbcType=VARCHAR}, update sys_member
training_id = #{record.trainingId,jdbcType=VARCHAR}, set member_id = #{record.memberId,jdbcType=VARCHAR},
name = #{record.name,jdbcType=VARCHAR}, training_id = #{record.trainingId,jdbcType=VARCHAR},
student_number = #{record.studentNumber,jdbcType=VARCHAR}, name = #{record.name,jdbcType=VARCHAR},
major = #{record.major,jdbcType=VARCHAR}, student_number = #{record.studentNumber,jdbcType=VARCHAR},
class_grade = #{record.classGrade,jdbcType=VARCHAR}, major = #{record.major,jdbcType=VARCHAR},
stu_rank = #{record.stuRank,jdbcType=INTEGER}, class_grade = #{record.classGrade,jdbcType=VARCHAR},
initial_capital = #{record.initialCapital,jdbcType=DOUBLE}, stu_rank = #{record.stuRank,jdbcType=INTEGER},
total_assets = #{record.totalAssets,jdbcType=DOUBLE}, initial_capital = #{record.initialCapital,jdbcType=DOUBLE},
net_value = #{record.netValue,jdbcType=DOUBLE}, total_assets = #{record.totalAssets,jdbcType=DOUBLE},
margin_used = #{record.marginUsed,jdbcType=DOUBLE}, net_value = #{record.netValue,jdbcType=DOUBLE},
available_funds = #{record.availableFunds,jdbcType=DOUBLE}, margin_used = #{record.marginUsed,jdbcType=DOUBLE},
margin_level = #{record.marginLevel,jdbcType=DOUBLE}, available_funds = #{record.availableFunds,jdbcType=DOUBLE},
position_profit_loss = #{record.positionProfitLoss,jdbcType=DOUBLE}, margin_level = #{record.marginLevel,jdbcType=DOUBLE},
cumulative_profit_loss = #{record.cumulativeProfitLoss,jdbcType=DOUBLE}, position_profit_loss = #{record.positionProfitLoss,jdbcType=DOUBLE},
yield = #{record.yield,jdbcType=DOUBLE}, cumulative_profit_loss = #{record.cumulativeProfitLoss,jdbcType=DOUBLE},
opening_trades = #{record.openingTrades,jdbcType=INTEGER}, yield = #{record.yield,jdbcType=DOUBLE},
closing_trades = #{record.closingTrades,jdbcType=INTEGER}, opening_trades = #{record.openingTrades,jdbcType=INTEGER},
school_id = #{record.schoolId,jdbcType=INTEGER}, closing_trades = #{record.closingTrades,jdbcType=INTEGER},
create_school = #{record.createSchool,jdbcType=VARCHAR}, school_id = #{record.schoolId,jdbcType=INTEGER},
training_name = #{record.trainingName,jdbcType=VARCHAR}, create_school = #{record.createSchool,jdbcType=VARCHAR},
report_score = #{record.reportScore,jdbcType=INTEGER}, training_name = #{record.trainingName,jdbcType=VARCHAR},
class_id = #{record.classId,jdbcType=INTEGER} report_score = #{record.reportScore,jdbcType=INTEGER},
<if test="_parameter != null"> class_id = #{record.classId,jdbcType=INTEGER}
<include refid="Update_By_Example_Where_Clause" /> <if test="_parameter != null">
</if> <include refid="Update_By_Example_Where_Clause"/>
</update> </if>
<update id="updateByPrimaryKeySelective" parameterType="com.sztzjy.forex.trading_trading.entity.Member"> </update>
<!-- <update id="updateByPrimaryKeySelective" parameterType="com.sztzjy.forex.trading_trading.entity.Member">
WARNING - @mbg.generated <!--
This element is automatically generated by MyBatis Generator, do not modify. WARNING - @mbg.generated
This element was generated on Wed Jul 19 15:55:18 CST 2023. This element is automatically generated by MyBatis Generator, do not modify.
--> This element was generated on Wed Jul 19 15:55:18 CST 2023.
update sys_member -->
<set> update sys_member
<if test="trainingId != null"> <set>
training_id = #{trainingId,jdbcType=VARCHAR}, <if test="trainingId != null">
</if> training_id = #{trainingId,jdbcType=VARCHAR},
<if test="name != null"> </if>
name = #{name,jdbcType=VARCHAR}, <if test="name != null">
</if> name = #{name,jdbcType=VARCHAR},
<if test="studentNumber != null"> </if>
student_number = #{studentNumber,jdbcType=VARCHAR}, <if test="studentNumber != null">
</if> student_number = #{studentNumber,jdbcType=VARCHAR},
<if test="major != null"> </if>
major = #{major,jdbcType=VARCHAR}, <if test="major != null">
</if> major = #{major,jdbcType=VARCHAR},
<if test="classGrade != null"> </if>
class_grade = #{classGrade,jdbcType=VARCHAR}, <if test="classGrade != null">
</if> class_grade = #{classGrade,jdbcType=VARCHAR},
<if test="stuRank != null"> </if>
stu_rank = #{stuRank,jdbcType=INTEGER}, <if test="stuRank != null">
</if> stu_rank = #{stuRank,jdbcType=INTEGER},
<if test="initialCapital != null"> </if>
initial_capital = #{initialCapital,jdbcType=DOUBLE}, <if test="initialCapital != null">
</if> initial_capital = #{initialCapital,jdbcType=DOUBLE},
<if test="totalAssets != null"> </if>
total_assets = #{totalAssets,jdbcType=DOUBLE}, <if test="totalAssets != null">
</if> total_assets = #{totalAssets,jdbcType=DOUBLE},
<if test="netValue != null"> </if>
net_value = #{netValue,jdbcType=DOUBLE}, <if test="netValue != null">
</if> net_value = #{netValue,jdbcType=DOUBLE},
<if test="marginUsed != null"> </if>
margin_used = #{marginUsed,jdbcType=DOUBLE}, <if test="marginUsed != null">
</if> margin_used = #{marginUsed,jdbcType=DOUBLE},
<if test="availableFunds != null"> </if>
available_funds = #{availableFunds,jdbcType=DOUBLE}, <if test="availableFunds != null">
</if> available_funds = #{availableFunds,jdbcType=DOUBLE},
<if test="marginLevel != null"> </if>
margin_level = #{marginLevel,jdbcType=DOUBLE}, <if test="marginLevel != null">
</if> margin_level = #{marginLevel,jdbcType=DOUBLE},
<if test="positionProfitLoss != null"> </if>
position_profit_loss = #{positionProfitLoss,jdbcType=DOUBLE}, <if test="positionProfitLoss != null">
</if> position_profit_loss = #{positionProfitLoss,jdbcType=DOUBLE},
<if test="cumulativeProfitLoss != null"> </if>
cumulative_profit_loss = #{cumulativeProfitLoss,jdbcType=DOUBLE}, <if test="cumulativeProfitLoss != null">
</if> cumulative_profit_loss = #{cumulativeProfitLoss,jdbcType=DOUBLE},
<if test="yield != null"> </if>
yield = #{yield,jdbcType=DOUBLE}, <if test="yield != null">
</if> yield = #{yield,jdbcType=DOUBLE},
<if test="openingTrades != null"> </if>
opening_trades = #{openingTrades,jdbcType=INTEGER}, <if test="openingTrades != null">
</if> opening_trades = #{openingTrades,jdbcType=INTEGER},
<if test="closingTrades != null"> </if>
closing_trades = #{closingTrades,jdbcType=INTEGER}, <if test="closingTrades != null">
</if> closing_trades = #{closingTrades,jdbcType=INTEGER},
<if test="schoolId != null"> </if>
school_id = #{schoolId,jdbcType=INTEGER}, <if test="schoolId != null">
</if> school_id = #{schoolId,jdbcType=INTEGER},
<if test="createSchool != null"> </if>
create_school = #{createSchool,jdbcType=VARCHAR}, <if test="createSchool != null">
</if> create_school = #{createSchool,jdbcType=VARCHAR},
<if test="trainingName != null"> </if>
training_name = #{trainingName,jdbcType=VARCHAR}, <if test="trainingName != null">
</if> training_name = #{trainingName,jdbcType=VARCHAR},
<if test="reportScore != null"> </if>
report_score = #{reportScore,jdbcType=INTEGER}, <if test="reportScore != null">
</if> report_score = #{reportScore,jdbcType=INTEGER},
<if test="classId != null"> </if>
class_id = #{classId,jdbcType=INTEGER}, <if test="classId != null">
</if> class_id = #{classId,jdbcType=INTEGER},
</set> </if>
where member_id = #{memberId,jdbcType=VARCHAR} </set>
</update> where member_id = #{memberId,jdbcType=VARCHAR}
</update>
<resultMap id="BaseResultMapForMemberVO" type="com.sztzjy.forex.trading_trading.dto.MemberVO"> <resultMap id="BaseResultMapForMemberVO" type="com.sztzjy.forex.trading_trading.dto.MemberVO">
<id column="member_id" jdbcType="VARCHAR" property="memberId"/> <id column="member_id" jdbcType="VARCHAR" property="memberId"/>
<result column="training_id" jdbcType="VARCHAR" property="trainingId"/> <result column="training_id" jdbcType="VARCHAR" property="trainingId"/>
@ -263,11 +265,14 @@
<result column="cumulative_profit_loss" jdbcType="DOUBLE" property="cumulativeProfitLoss"/> <result column="cumulative_profit_loss" jdbcType="DOUBLE" property="cumulativeProfitLoss"/>
<result column="yield" jdbcType="DOUBLE" property="yield"/> <result column="yield" jdbcType="DOUBLE" property="yield"/>
<result column="training_name" jdbcType="VARCHAR" property="trainingName"/> <result column="training_name" jdbcType="VARCHAR" property="trainingName"/>
<result column="total_assets" jdbcType="DOUBLE" property="totalAssets"/>
<result column="initial_capital" jdbcType="DOUBLE" property="initialCapital"/>
<result column="available_funds" jdbcType="DOUBLE" property="availableFunds"/>
<result column="opening_trades" jdbcType="INTEGER" property="openingTrades"/>
<result column="closing_trades" jdbcType="INTEGER" property="closingTrades"/>
</resultMap> </resultMap>
<sql id="Update_By_Example_Where_Clause"> <sql id="Update_By_Example_Where_Clause">
<!-- <!--
WARNING - @mbg.generated WARNING - @mbg.generated
@ -323,13 +328,9 @@
order by ${orderByClause} order by ${orderByClause}
</if> </if>
</select> </select>
<select id="pagedListMembers" parameterType="com.sztzjy.forex.trading_trading.entity.MemberExample"
<select id="selectByCondition" parameterType="com.sztzjy.forex.trading_trading.entity.MemberExample"
resultMap="BaseResultMapForMemberVO"> resultMap="BaseResultMapForMemberVO">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Fri Jun 30 14:15:42 CST 2023.
-->
select select
<if test="distinct"> <if test="distinct">
distinct distinct
@ -343,6 +344,28 @@
order by ${orderByClause} order by ${orderByClause}
</if> </if>
</select> </select>
<!-- <select id="pagedListMembers" parameterType="com.sztzjy.forex.trading_trading.entity.MemberExample"-->
<!-- resultMap="BaseResultMapForMemberVO">-->
<!-- &lt;!&ndash;-->
<!-- WARNING - @mbg.generated-->
<!-- This element is automatically generated by MyBatis Generator, do not modify.-->
<!-- This element was generated on Fri Jun 30 14:15:42 CST 2023.-->
<!-- &ndash;&gt;-->
<!-- select-->
<!-- <if test="distinct">-->
<!-- distinct-->
<!-- </if>-->
<!-- <include refid="Base_Column_List"/>-->
<!-- from sys_member m-->
<!-- LEFT JOIN sys_training t ON m.training_id = t.training_id-->
<!-- <if test="_parameter != null">-->
<!-- <include refid="Example_Where_Clause"/>-->
<!-- </if>-->
<!-- and t.status = 'finished'-->
<!-- <if test="orderByClause != null">-->
<!-- order by ${orderByClause}-->
<!-- </if>-->
<!-- </select>-->
<insert id="insertAll" parameterType="java.util.List"> <insert id="insertAll" parameterType="java.util.List">
insert into sys_member (member_id, training_id, name, insert into sys_member (member_id, training_id, name,

Loading…
Cancel
Save