diff --git a/src/main/java/com/sztzjy/digital_credit/controller/StuExperimentTrainByCreditController.java b/src/main/java/com/sztzjy/digital_credit/controller/StuExperimentTrainByCreditController.java index 6261313..386f01c 100644 --- a/src/main/java/com/sztzjy/digital_credit/controller/StuExperimentTrainByCreditController.java +++ b/src/main/java/com/sztzjy/digital_credit/controller/StuExperimentTrainByCreditController.java @@ -36,8 +36,6 @@ public class StuExperimentTrainByCreditController { public ResultEntity trainByPublicSave(@RequestBody StuMachineLearning learning){ return experimentTrainByCreditService.trainByPublicSave(learning); - - } diff --git a/src/main/java/com/sztzjy/digital_credit/controller/StuUserPortraitController.java b/src/main/java/com/sztzjy/digital_credit/controller/StuUserPortraitController.java index 0937414..24ee449 100644 --- a/src/main/java/com/sztzjy/digital_credit/controller/StuUserPortraitController.java +++ b/src/main/java/com/sztzjy/digital_credit/controller/StuUserPortraitController.java @@ -9,10 +9,7 @@ import com.sztzjy.digital_credit.util.ResultEntity; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * @author 17803 @@ -43,4 +40,6 @@ public class StuUserPortraitController { + + } diff --git a/src/main/java/com/sztzjy/digital_credit/entity/StuUserPortrait.java b/src/main/java/com/sztzjy/digital_credit/entity/StuUserPortrait.java index 4767df9..4eb660a 100644 --- a/src/main/java/com/sztzjy/digital_credit/entity/StuUserPortrait.java +++ b/src/main/java/com/sztzjy/digital_credit/entity/StuUserPortrait.java @@ -1,9 +1,6 @@ package com.sztzjy.digital_credit.entity; import io.swagger.annotations.ApiModelProperty; - -import javax.validation.constraints.NotBlank; - /** * 综合案例:用户画像 * @@ -119,20 +116,21 @@ public class StuUserPortrait { @ApiModelProperty("34") private String stepNineD; - @ApiModelProperty("错误次数") + @ApiModelProperty("错误次数(每个空最多扣一分,错多次也是1分)") private Integer errorNumber; - @ApiModelProperty("用户ID(-1 未提交 1已提交)") - @NotBlank + @ApiModelProperty("用户ID") private String userId; - @ApiModelProperty("提交状态") + @ApiModelProperty("提交状态(0 未提交 1已提交)") private Integer subState; @ApiModelProperty("归属模块(小模块)") - @NotBlank private String module; + @ApiModelProperty("正确个数") + private Integer correctNumber; + public Integer getId() { return id; } @@ -452,4 +450,12 @@ public class StuUserPortrait { public void setModule(String module) { this.module = module == null ? null : module.trim(); } + + public Integer getCorrectNumber() { + return correctNumber; + } + + public void setCorrectNumber(Integer correctNumber) { + this.correctNumber = correctNumber; + } } \ No newline at end of file diff --git a/src/main/java/com/sztzjy/digital_credit/entity/StuUserPortraitExample.java b/src/main/java/com/sztzjy/digital_credit/entity/StuUserPortraitExample.java index f97a580..ffd1516 100644 --- a/src/main/java/com/sztzjy/digital_credit/entity/StuUserPortraitExample.java +++ b/src/main/java/com/sztzjy/digital_credit/entity/StuUserPortraitExample.java @@ -2873,6 +2873,66 @@ public class StuUserPortraitExample { addCriterion("module not between", value1, value2, "module"); return (Criteria) this; } + + public Criteria andCorrectNumberIsNull() { + addCriterion("correct_number is null"); + return (Criteria) this; + } + + public Criteria andCorrectNumberIsNotNull() { + addCriterion("correct_number is not null"); + return (Criteria) this; + } + + public Criteria andCorrectNumberEqualTo(Integer value) { + addCriterion("correct_number =", value, "correctNumber"); + return (Criteria) this; + } + + public Criteria andCorrectNumberNotEqualTo(Integer value) { + addCriterion("correct_number <>", value, "correctNumber"); + return (Criteria) this; + } + + public Criteria andCorrectNumberGreaterThan(Integer value) { + addCriterion("correct_number >", value, "correctNumber"); + return (Criteria) this; + } + + public Criteria andCorrectNumberGreaterThanOrEqualTo(Integer value) { + addCriterion("correct_number >=", value, "correctNumber"); + return (Criteria) this; + } + + public Criteria andCorrectNumberLessThan(Integer value) { + addCriterion("correct_number <", value, "correctNumber"); + return (Criteria) this; + } + + public Criteria andCorrectNumberLessThanOrEqualTo(Integer value) { + addCriterion("correct_number <=", value, "correctNumber"); + return (Criteria) this; + } + + public Criteria andCorrectNumberIn(List values) { + addCriterion("correct_number in", values, "correctNumber"); + return (Criteria) this; + } + + public Criteria andCorrectNumberNotIn(List values) { + addCriterion("correct_number not in", values, "correctNumber"); + return (Criteria) this; + } + + public Criteria andCorrectNumberBetween(Integer value1, Integer value2) { + addCriterion("correct_number between", value1, value2, "correctNumber"); + return (Criteria) this; + } + + public Criteria andCorrectNumberNotBetween(Integer value1, Integer value2) { + addCriterion("correct_number not between", value1, value2, "correctNumber"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/src/main/java/com/sztzjy/digital_credit/service/StuUserPortraitControllerService.java b/src/main/java/com/sztzjy/digital_credit/service/StuUserPortraitControllerService.java index d75ba31..663c00a 100644 --- a/src/main/java/com/sztzjy/digital_credit/service/StuUserPortraitControllerService.java +++ b/src/main/java/com/sztzjy/digital_credit/service/StuUserPortraitControllerService.java @@ -17,4 +17,5 @@ public interface StuUserPortraitControllerService { ResultEntity userPortraitByModuleSave(StuUserPortrait userPortrait); + } diff --git a/src/main/java/com/sztzjy/digital_credit/service/impl/StuUserPortraitControllerServiceImpl.java b/src/main/java/com/sztzjy/digital_credit/service/impl/StuUserPortraitControllerServiceImpl.java index c974f47..2f5354a 100644 --- a/src/main/java/com/sztzjy/digital_credit/service/impl/StuUserPortraitControllerServiceImpl.java +++ b/src/main/java/com/sztzjy/digital_credit/service/impl/StuUserPortraitControllerServiceImpl.java @@ -3,9 +3,13 @@ package com.sztzjy.digital_credit.service.impl;/** * @date 2024-04-23 14:11 */ +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.IdUtil; +import com.sztzjy.digital_credit.entity.StuUser; +import com.sztzjy.digital_credit.entity.StuUserExample; import com.sztzjy.digital_credit.entity.StuUserPortrait; import com.sztzjy.digital_credit.entity.StuUserPortraitExample; +import com.sztzjy.digital_credit.mapper.StuUserMapper; import com.sztzjy.digital_credit.mapper.StuUserPortraitMapper; import com.sztzjy.digital_credit.service.StuUserPortraitControllerService; import com.sztzjy.digital_credit.util.ResultEntity; @@ -14,6 +18,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.rmi.ServerException; +import java.util.HashMap; import java.util.List; @Service @@ -23,6 +30,9 @@ public class StuUserPortraitControllerServiceImpl implements StuUserPortraitCont @Autowired private StuUserPortraitMapper userPortraitMapper; + @Autowired + private StuUserMapper userMapper; + /** * 自动保存接口(根据module分类) * @param userPortrait @@ -46,15 +56,93 @@ public class StuUserPortraitControllerServiceImpl implements StuUserPortraitCont Integer id = portrait.getId(); BeanUtils.copyProperties(userPortrait,portrait); portrait.setId(id); + + //判断是否为提交状态,是提交状态 + if (portrait.getSubState() == 1) + { + //根据model算正确分数 + portrait = correctScoreCalculationByModule(portrait); + + //将分数保存到用户表,如果重新实训将用户表数据删除 + saveScoreToUser(portrait); + } + userPortraitMapper.updateByPrimaryKeySelective(portrait); + return new ResultEntity<>(HttpStatus.OK,"保存成功!"); }else { //插入 userPortrait.setId((int) IdUtil.getSnowflakeNextId()); + + //判断是否为提交状态,是提交状态 + if (userPortrait.getSubState() == 1) + { + //根据model算正确分数 + userPortrait = correctScoreCalculationByModule(userPortrait); + + //将分数保存到用户表,如果重新实训将用户表数据删除 + saveScoreToUser(userPortrait); + } + userPortraitMapper.insertSelective(userPortrait); + //判断是否为提交状态,是提交状态将分数保存到用户表,如果重新实训将用户表数据删除 return new ResultEntity<>(HttpStatus.OK,"保存成功!"); } + + } + + + + //将分数保存到用户表,如果重新实训将用户表数据删除 + private void saveScoreToUser(StuUserPortrait portrait) { + StuUserExample userExample = new StuUserExample(); + userExample.createCriteria().andUserIdEqualTo(portrait.getUserId()); + List stuUsers = userMapper.selectByExample(userExample); + if (!stuUsers.isEmpty()) + { + //获取用户总分累加 + BigDecimal caseUserProfileSocre = stuUsers.get(0).getCaseUserProfileSocre(); + + Integer correctNumber = portrait.getCorrectNumber(); + + stuUsers.get(0).setCaseUserProfileSocre(caseUserProfileSocre.add(Convert.toBigDecimal(correctNumber))); + + userMapper.updateByPrimaryKeySelective(stuUsers.get(0)); + + } + + throw new RuntimeException("用户信息不存在!"); + + + } + + + //根据model算正确分数 + private StuUserPortrait correctScoreCalculationByModule(StuUserPortrait portrait) { + + HashMap map = new HashMap<>(); + map.put("违约情况",6); + map.put("性别与违约分析",11); + map.put("学历与违约分析",12); + map.put("婚姻状况与违约分析",12); + map.put("年龄与违约分析",17); + map.put("还款状况与违约分析",23); + map.put("信用额度与违约分析",19); + + + Integer currentCount = map.get(portrait.getModule()); + + int score = currentCount - portrait.getErrorNumber(); + + if (score <= 0) + { + score = 0; + } + + portrait.setCorrectNumber(score); + + return portrait; } diff --git a/src/main/resources/mappers/StuUserPortraitMapper.xml b/src/main/resources/mappers/StuUserPortraitMapper.xml index 650bf15..0495a84 100644 --- a/src/main/resources/mappers/StuUserPortraitMapper.xml +++ b/src/main/resources/mappers/StuUserPortraitMapper.xml @@ -42,6 +42,7 @@ + @@ -107,7 +108,7 @@ step_four_c, step_four_d, step_five_a, step_five_b, step_five_c, step_five_d, step_six_a, step_six_b, step_six_c, step_six_d, step_seven_a, step_seven_b, step_seven_c, step_seven_d, step_eight_a, step_eight_b, step_eight_c, step_eight_d, step_nine_a, step_nine_b, - step_nine_c, step_nine_d, error_number, user_id, sub_state, module + step_nine_c, step_nine_d, error_number, user_id, sub_state, module, correct_number @@ -545,6 +552,9 @@ module = #{record.module,jdbcType=VARCHAR}, + + correct_number = #{record.correctNumber,jdbcType=INTEGER}, + @@ -591,7 +601,8 @@ error_number = #{record.errorNumber,jdbcType=INTEGER}, user_id = #{record.userId,jdbcType=VARCHAR}, sub_state = #{record.subState,jdbcType=INTEGER}, - module = #{record.module,jdbcType=VARCHAR} + module = #{record.module,jdbcType=VARCHAR}, + correct_number = #{record.correctNumber,jdbcType=INTEGER} @@ -716,6 +727,9 @@ module = #{module,jdbcType=VARCHAR}, + + correct_number = #{correctNumber,jdbcType=INTEGER}, + where id = #{id,jdbcType=INTEGER} @@ -759,7 +773,8 @@ error_number = #{errorNumber,jdbcType=INTEGER}, user_id = #{userId,jdbcType=VARCHAR}, sub_state = #{subState,jdbcType=INTEGER}, - module = #{module,jdbcType=VARCHAR} + module = #{module,jdbcType=VARCHAR}, + correct_number = #{correctNumber,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER} \ No newline at end of file