From 8ab52ce68cb70a5c35ed16c6535308f399859cb5 Mon Sep 17 00:00:00 2001 From: zhouwentao <1577701412@qq.com> Date: Mon, 24 Jun 2024 21:15:27 +0800 Subject: [PATCH] updates --- .../org/jeecg/config/shiro/ShiroConfig.java | 1 + .../api/controller/StaticDataController.java | 53 ++++++++++++++++ .../modules/web/dto/RecommendMajorDTO.java | 4 +- .../yx/controller/YxScoreController.java | 60 +++++++++++++++++++ .../modules/yx/entity/YxCalculationMajor.java | 2 + .../mapper/xml/YxCalculationMajorMapper.xml | 5 +- .../yx/service/impl/UserScoreService.java | 40 +++++++++---- 7 files changed, 149 insertions(+), 16 deletions(-) create mode 100644 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/StaticDataController.java diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index 8a52ab3..960627c 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -79,6 +79,7 @@ public class ShiroConfig { } } + filterChainDefinitionMap.put("/api/static/data/**","anon"); filterChainDefinitionMap.put("/web/user/login/**","anon");//前台页面登录 filterChainDefinitionMap.put("/web/user/getQRStatus/**","anon");//前台查询redis中当前小程序码的状态 filterChainDefinitionMap.put("/wx/getQRCode/**","anon");//前台获取微信登录码 diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/StaticDataController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/StaticDataController.java new file mode 100644 index 0000000..5f48dff --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/controller/StaticDataController.java @@ -0,0 +1,53 @@ +package org.jeecg.modules.api.controller; + +import cn.hutool.json.JSONObject; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.api.vo.Result; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; + +/** + * @author ZhouWenTao + * @create 2024-06-24-20:23 + */ +@Api(tags = "静态参数接口") +@RestController +@RequestMapping("/api/static/data") +@Slf4j +public class StaticDataController { + @RequestMapping(value = "/getJson",method = RequestMethod.POST) + public Result getJson(@RequestBody JSONObject params, HttpServletRequest request){ + String key = params.getStr("key"); + if (StringUtils.isNotBlank(key)) { + JSONObject responseData = new JSONObject(); + switch (key){ + case "reload_major_modal_message": + responseData.set("message1","刷新专业是用来获取最新的专业录取规则,刷新后已填报志愿单将移除,需要手动再次添加。"); + responseData.set("message2","可刷新专业来获取最新的专业录取规则"); + // 刷新专业提示 + return Result.OK(responseData); + case "volunteer_preview": + // 查看志愿单按钮 + // 查看方式 1.跳转浏览器下载,2.web-view预览 + responseData.set("type","1"); + //附件地址 + responseData.set("filePrefixUrl","https://www.yitisheng.vip/volunteer/preview"); + responseData.set("webViewUrl","/"); + responseData.set("message","目前不支持小程序打印。已自动复制网址,请在手机浏览器里粘贴该网址进行打印。"); + return Result.OK(responseData); + + } + if ("reloadMajorModalMessage".equals(key)) { + + } + } + + return Result.OK(); + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/dto/RecommendMajorDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/dto/RecommendMajorDTO.java index 8535ae6..e7d3ae9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/dto/RecommendMajorDTO.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/web/dto/RecommendMajorDTO.java @@ -147,14 +147,14 @@ public class RecommendMajorDTO implements Serializable { private String xkfl; @ApiModelProperty(value = "专业类") private String zyl; - @ApiModelProperty(value = "内部折合分数") private BigDecimal privateStudentScore; @ApiModelProperty(value = "内部录取方式") private String privateRulesEnrollProbability; @ApiModelProperty(value = "内部录取方式运算符") private String privateProbabilityOperator; - @ApiModelProperty(value = "线差") private BigDecimal scoreLineDifference; + @ApiModelProperty(value = "状态") + private String state; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreController.java index 901bc23..890bc67 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreController.java @@ -2,6 +2,7 @@ package org.jeecg.modules.yx.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -13,6 +14,7 @@ import org.jeecg.common.util.AssertUtils; import org.jeecg.modules.web.dto.ArtRecommendMajorBaseDTO; import org.jeecg.modules.web.dto.RecommendMajorDTO; import org.jeecg.modules.yx.constant.YxConstant; +import org.jeecg.modules.yx.dto.VolunteerDTO; import org.jeecg.modules.yx.entity.*; import org.jeecg.modules.yx.service.*; import org.jeecg.modules.yx.service.impl.UserScoreService; @@ -43,6 +45,8 @@ public class YxScoreController { private IYxCalculationMajorService yxCalculationMajorService; @Autowired private IYxVolunteerService yxVolunteerService; + @Resource + private IYxVolunteerRecordService yxVolunteerRecordService; @Autowired private IYxHistoryScoreControlLineService yxHistoryScoreControlLineService; @Autowired @@ -215,6 +219,62 @@ public class YxScoreController { return Result.OK(responseBody); } + @PostMapping(value = "/reloadCalMajor") + @ApiOperation(value = "根据当前成绩刷新专业信息") + public Result reloadScore(@RequestBody cn.hutool.json.JSONObject jsonObject){ + String userId = jsonObject.getStr("zwsrqutuserId"); + if (StringUtils.isBlank(userId)) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + AssertUtils.notNull(sysUser, "请先登录!"); + userId = sysUser.getId(); + } + YxUserScore yxUserScore = yxUserScoreService.getActiveUserScore(userId); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(YxCalculationMajor::getScoreId, yxUserScore.getId()); + String scoreId = yxUserScore.getId(); + // 将当前成绩单的计算专业scoreId 改成加_ 当前时间戳 + String bakScoreId = scoreId+"_"+new Date().getTime(); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(YxCalculationMajor::getScoreId,scoreId); + updateWrapper.set(YxCalculationMajor::getScoreId,bakScoreId); + yxCalculationMajorService.update(updateWrapper); + try { + // 重新计算专业 + List recommendMajorDTOList = yxCalculationMajorService.calculationMajor(yxUserScore); + + // 清空当前成绩的志愿单列表 + List list = yxVolunteerService.list(new LambdaQueryWrapper().eq(YxVolunteer::getScoreId, scoreId)); + for (YxVolunteer yxVolunteer : list) { + LambdaQueryWrapper yxVolunteerRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); + yxVolunteerRecordLambdaQueryWrapper.eq(YxVolunteerRecord::getVolunteerId,yxVolunteer.getId()); + yxVolunteerRecordService.remove(yxVolunteerRecordLambdaQueryWrapper); + } + VolunteerDTO yxVolunteer = yxVolunteerService.getActiveByCreate(userId); + + //获取志愿单推荐数量 + ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = yxCalculationMajorService.checkLevelNum(recommendMajorDTOList); + yxUserScore.setJwtNum(artRecommendMajorBaseDTO.getJwt()); + yxUserScore.setKcjNum(artRecommendMajorBaseDTO.getKcj()); + yxUserScore.setKbdNum(artRecommendMajorBaseDTO.getKbd()); + yxUserScore.setNlqNum(artRecommendMajorBaseDTO.getNan()); + yxUserScoreService.updateById(yxUserScore); + + // 删除之前的专业 + yxCalculationMajorService.remove(new LambdaQueryWrapper().eq(YxCalculationMajor::getScoreId,bakScoreId)); + //返回对象 + JSONObject responseBody = JSONObject.parseObject(JSONObject.toJSONString(yxUserScore)); + responseBody.put("volunteer", yxVolunteer); + return Result.OK(responseBody); + }catch (Exception e){ + // 报错了,恢复计算专业 + updateWrapper.clear(); + updateWrapper.set(YxCalculationMajor::getScoreId,scoreId); + updateWrapper.eq(YxCalculationMajor::getScoreId,bakScoreId); + yxCalculationMajorService.update(updateWrapper); + return Result.error("操作失败,请联系管理员"); + } + } + @GetMapping(value = "/getUserScoreInfo") public Result getUserScoreInfo() { //获取分数信息 diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxCalculationMajor.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxCalculationMajor.java index cd7d230..7050ed8 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxCalculationMajor.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxCalculationMajor.java @@ -144,4 +144,6 @@ public class YxCalculationMajor implements Serializable { @Excel(name = "内部折合分数", width = 15) @ApiModelProperty(value = "内部折合分数") private java.math.BigDecimal privateStudentConvertedScore; + + private String state; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml index 987e808..08784b4 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml @@ -20,7 +20,7 @@ INSERT INTO ${tableName} (id,score_id, school_code, major_code, major_name, enrollment_code, tuition, detail, category, rules_enroll_probability, batch, student_old_converted_score, student_converted_score, enroll_probability, probability_operator, major_type, major_type_child, plan_num, main_subjects, - limitation, other_score_limitation,rules_enroll_probability_sx,kslx,private_student_converted_score,private_rules_enroll_probability,private_probability_operator) + limitation, other_score_limitation,rules_enroll_probability_sx,kslx,private_student_converted_score,private_rules_enroll_probability,private_probability_operator,state) VALUES (#{item.id},#{item.scoreId}, #{item.schoolCode}, #{item.majorCode}, #{item.majorName}, @@ -28,7 +28,7 @@ #{item.batch}, #{item.studentOldConvertedScore}, #{item.studentConvertedScore}, #{item.enrollProbability}, #{item.probabilityOperator}, #{item.majorType}, #{item.majorTypeChild}, #{item.planNum}, #{item.mainSubjects}, #{item.limitation}, #{item.otherScoreLimitation},#{item.rulesEnrollProbabilitySx},#{item.kslx}, - #{item.privateStudentConvertedScore},#{item.privateRulesEnrollProbability},#{item.privateProbabilityOperator} + #{item.privateStudentConvertedScore},#{item.privateRulesEnrollProbability},#{item.privateProbabilityOperator},#{item.state} ) @@ -38,6 +38,7 @@ cm.id, s.school_name, s.school_icon, + cm.state, cm.school_code, cm.major_code, cm.major_name, diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/UserScoreService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/UserScoreService.java index d0eaa7d..802860d 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/UserScoreService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/UserScoreService.java @@ -89,23 +89,39 @@ public class UserScoreService { * 获取当前用户今天剩余可保存成绩次数 */ public JSONObject todayOfEditScoreCount() { + long useCount = 0; + long residueCount = 0; LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); AssertUtils.notNull(loginUser, "请先登录!"); JSONObject jsonObject = new JSONObject(); Date date = new Date(); - String format = YxConstant.sdf.format(date); - String startTime = format + " 00:00:00"; - String endTime = format + " 23:59:59"; - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.between(YxUserScore::getCreateTime, startTime, endTime); - lambdaQueryWrapper.eq(YxUserScore::getCreateBy, loginUser.getId()); - long useCount = yxUserScoreMapper.selectCount(lambdaQueryWrapper); - long residueCount = 0; - if (YxConstant.todayMaxEditScoreCount > useCount) { - //当天没有超过更改次数 - residueCount = YxConstant.todayMaxEditScoreCount - useCount; + if (date.getTime()>=1719244800000l) { + // 2024-06-25 00:00:00 之后,仅可修改一次成绩 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.ge(YxUserScore::getCreateTime,"2024-06-25 00:00:00"); + lambdaQueryWrapper.eq(YxUserScore::getCreateBy, loginUser.getId()); + // 已修改次数 + useCount = yxUserScoreMapper.selectCount(lambdaQueryWrapper); + //设置可修改次数 + if (useCount>0) { + residueCount = 0; + }else{ + residueCount = 1; + } + }else{ + String format = YxConstant.sdf.format(date); + String startTime = format + " 00:00:00"; + String endTime = format + " 23:59:59"; + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.between(YxUserScore::getCreateTime, startTime, endTime); + lambdaQueryWrapper.eq(YxUserScore::getCreateBy, loginUser.getId()); + useCount = yxUserScoreMapper.selectCount(lambdaQueryWrapper); + residueCount = 0; + if (YxConstant.todayMaxEditScoreCount > useCount) { + //当天没有超过更改次数 + residueCount = YxConstant.todayMaxEditScoreCount - useCount; + } } - jsonObject.put("useCount", useCount); jsonObject.put("residueCount", residueCount); return jsonObject;