FengChaoYu 8 mesiacov pred
rodič
commit
c1e1756ed7

+ 11 - 1
mall-server-api/src/main/java/com/gree/mall/manager/controller/common/CommonController.java

@@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotBlank;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -211,5 +212,14 @@ public class CommonController {
     }
 
 
-
+    @GetMapping("/computeVal")
+    @ApiOperation(value = "后台计算值", notes = "后台计算值 ", httpMethod = "GET")
+    public ResponseHelper<BigDecimal> computeVal(@RequestParam(defaultValue = "0") BigDecimal frontVal,
+                                                 @RequestParam(defaultValue = "0") BigDecimal afterVal,
+                                                 @RequestParam(defaultValue = "+") String operator,
+                                                 @RequestParam(defaultValue = "2") Integer scale,
+                                                 @RequestParam(defaultValue = "4", required = false) Integer roundingMode
+    ) {
+        return ResponseHelper.success(commonLogic.computeVal(frontVal, afterVal, operator, scale, roundingMode));
+    }
 }

+ 28 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/CommonLogic.java

@@ -555,4 +555,32 @@ public class CommonLogic {
     public String getInfUrl() {
         return infUrl;
     }
+
+    /**
+     * 后台计算值
+     * @param frontVal
+     * @param afterVal
+     * @param operator
+     * @param scale
+     * @param roundingMode
+     * @return
+     */
+    public BigDecimal computeVal(BigDecimal frontVal, BigDecimal afterVal, String operator, Integer scale, Integer roundingMode) {
+        frontVal = Optional.ofNullable(frontVal).orElse(BigDecimal.ZERO);
+        afterVal = Optional.ofNullable(afterVal).orElse(BigDecimal.ZERO);
+        operator = Optional.ofNullable(operator).orElse("+");
+        scale = Optional.ofNullable(scale).orElse(2);
+        switch (operator) {
+            case "+":
+                return frontVal.add(afterVal).setScale(scale, roundingMode);
+            case "-":
+                return frontVal.subtract(afterVal).setScale(scale, roundingMode);
+            case "*":
+                return frontVal.multiply(afterVal).setScale(scale, roundingMode);
+            case "/":
+                return frontVal.divide(afterVal, scale, roundingMode);
+            default:
+                return BigDecimal.ZERO;
+        }
+    }
 }