Переглянути джерело

积分规则修改,规则增加输入限制

wanxl 1 рік тому
батько
коміт
d2c1aab625

+ 3 - 0
src/main/java/com/sqx/modules/integral/controller/AdminUserIntegralController.java

@@ -61,6 +61,9 @@ public class AdminUserIntegralController {
     @ApiOperation("管理端更新积分规则")
     @PostMapping(value = "updateIntegralRules")
     public Result updateIntegralRules(IntegralRulesDto irDto){
+        if(irDto.getRuleAmount1().compareTo(irDto.getRuleMaxAmount())>=0){
+            return Result.error("门限金额不能小于规则一金额");
+        }
         String rules=irDto.getRuleAmount1()+","+irDto.getRuleValue1()+","+irDto.getRuleMaxAmount()+","+irDto.getRuleAmount2()+
                 ","+irDto.getRuleValue2();
         //积分开关

+ 6 - 3
src/main/java/com/sqx/modules/integral/controller/app/UserIntegralController.java

@@ -90,10 +90,13 @@ public class UserIntegralController {
         double amount= Double.parseDouble(money);
         int intergral=0;
         if (amount>a){
-            intergral=intergral+b;
-            if (amount>c+d){
+            if(amount<c){
+                intergral=intergral+(int)(amount/a)*b;
+            } else if (amount>c+d){
                 int count= (int) ((amount-c)/d);
-                intergral=intergral+count*e;
+                intergral=intergral+(c/a)*b+count*e;
+            }else{
+                intergral=intergral+(c/a)*b;
             }
         }
         int max =Integer.parseInt(maxIntegral);

+ 13 - 0
src/main/java/com/sqx/modules/integral/dto/IntegralRulesDto.java

@@ -8,6 +8,7 @@ import javax.validation.constraints.Pattern;
 
 @Data
 public class IntegralRulesDto {
+    
     @ApiModelProperty("积分获取开关 1开、0关")
     @NotBlank(message = "积分获取开关不能为空")
     @Pattern(regexp = "(0|1)", message = "积分获取开关只能为0或1")
@@ -15,23 +16,35 @@ public class IntegralRulesDto {
 
     @ApiModelProperty("积分获取规则金额1")
     @NotBlank(message = "积分获取规则金额1不能为空")
+    @Pattern(regexp = "^[0-9]*$", message = "积分获取规则金额只能为数字")
     private String ruleAmount1;
+
     @ApiModelProperty("积分获取规则积分1")
     @NotBlank(message = "积分获取规则积分1不能为空")
+    @Pattern(regexp = "^[0-9]*$", message = "积分获取规则金额只能为数字")
     private String ruleValue1;
+
     @ApiModelProperty("积分获取二阶段规则金额")
     @NotBlank(message = "积分获取二阶段规则金额不能为空")
+    @Pattern(regexp = "^[0-9]*$", message = "积分获取规则金额只能为数字")
     private String ruleMaxAmount;
+
     @ApiModelProperty("积分获取规则金额2")
     @NotBlank(message = "金额2不能为空")
+    @Pattern(regexp = "^[0-9]*$", message = "积分获取规则金额只能为数字")
     private String ruleAmount2;
+
     @ApiModelProperty("积分获取规则积分2")
     @NotBlank(message = "积分2不能为空")
+    @Pattern(regexp = "^[0-9]*$", message = "积分获取规则金额只能为数字")
     private String ruleValue2;
+
     @ApiModelProperty("积分过期规则(-1为永不过期)")
     @NotBlank(message = "过期天数不能为空")
     private String overdue;
+
     @ApiModelProperty("单笔订单获取积分上限")
     @NotBlank(message = "积分上限不能为空")
+    @Pattern(regexp = "^[0-9]*$", message = "积分获取规则金额只能为数字")
     private String maxIntegral;
 }

+ 6 - 3
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -2059,10 +2059,13 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
                 double amount= tbOrder.getPayMoney().doubleValue();
                 int intergral=0;
                 if (amount>am1){
-                    intergral=intergral+av1;
-                    if (amount>mx+am2){
+                    if(amount<mx){
+                        intergral=intergral+(int)(amount/am1)*av1;
+                    } else if (amount>mx+am2){
                         int count= (int) ((amount-mx)/am2);
-                        intergral=intergral+count*av2;
+                        intergral=intergral+(mx/am1)*av1+count*av2;
+                    }else{
+                        intergral=intergral+(mx/am1)*av1;
                     }
                 }
                 int max =Math.min(Integer.parseInt(maxIntegral), intergral);