소스 검색

购买反显

李进 1 년 전
부모
커밋
663ca5ad41

+ 42 - 2
device-api-service/src/main/java/com/xy/service/DeviceChargingServiceImpl.java

@@ -1,13 +1,14 @@
 package com.xy.service;
 
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.collections.list.JArrayList;
 import com.xy.collections.list.JList;
 import com.xy.collections.map.JMap;
-import com.xy.device.EnumDeviceCharging;
-import com.xy.device.EnumDeviceChargingHistoryStatus;
+import com.xy.device.*;
+import com.xy.dto.DeviceAlgorithmChargingDto;
 import com.xy.dto.DeviceChargingDto;
 import com.xy.dto.DeviceInfoDto;
 import com.xy.entity.DeviceCharging;
@@ -25,6 +26,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
@@ -52,6 +54,44 @@ public class DeviceChargingServiceImpl extends ServiceImpl<DeviceChargingMapper,
 
     private DeviceChargingServiceImpl deviceChargingService;
 
+    @PostMapping("payCheck")
+    @ApiOperation("购买反显")
+    public R<DeviceChargingDto.PayCheckVo> payCheck(@RequestBody @Validated DeviceChargingDto.PayCheck payCheck) {
+        DeviceInfoDto.Vo deviceInfo = deviceInfoService.obj(new DeviceInfoDto.Obj().setDeviceId(payCheck.getDeviceId()).setIsStatus(true)).getData();
+        if (deviceInfo == null) {
+            return R.fail("设备不存在");
+        }
+        //封装设备信息
+        DeviceChargingDto.PayCheckVo payCheckVo = new DeviceChargingDto.PayCheckVo();
+        String deviceTypeName = SysDictUtils.get(EnumDeviceType.Code.CODE.getCode(), String.valueOf(deviceInfo.getDeviceType())).getMsg();
+        Integer standard = SysDictUtils.getValue(EnumDeviceCharging.Code.CODE.getCode(), String.valueOf(deviceInfo.getDeviceType()), Integer.class);
+        DeviceChargingDto.PayCheckVo.DeviceInfo deviceInfoObj = Beans.copy(Beans.copy(DeviceChargingDto.PayCheckVo.DeviceInfo.class, deviceInfo), deviceInfo.getDeviceStatus())
+                .setDeviceTypeName(deviceTypeName)
+                .setStandard(BigDecimal.valueOf(standard).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_DOWN).doubleValue() + "元/年")
+                .setMoney(standard);
+        //封装算法购买信息
+        SysDictRedis moonAlgorithmTypes = SysDictUtils.get(EnumAlgorithmTypes.Code.CODE.getCode(), String.valueOf(deviceInfo.getAlgorithmId()));
+        String algorithmPayConfig = SysDictUtils.getValue(EnumAlgorithmPayConfig.Code.CODE.getCode(), String.valueOf(deviceInfo.getAlgorithmId()), String.class);
+        DeviceAlgorithmChargingDto.AlgorithmMoonConfig algorithmMoonConfig = JSONUtil.parseObj(algorithmPayConfig).toBean(DeviceAlgorithmChargingDto.AlgorithmMoonConfig.class);
+        DeviceAlgorithmChargingDto.AlgorithmMoonConfig.Inf inf = algorithmMoonConfig.getInf();
+        DeviceChargingDto.PayCheckVo.DeviceAlgorithmCharging infDeviceAlgorithmCharging = Beans.copy(DeviceChargingDto.PayCheckVo.DeviceAlgorithmCharging.class, deviceInfo)
+                .setDeviceTypeName(deviceTypeName)
+                .setAlgorithmId(deviceInfo.getAlgorithmId())
+                .setAlgorithmName(moonAlgorithmTypes.getMsg())
+                .setStandard(BigDecimal.valueOf(algorithmMoonConfig.getPrice()).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_DOWN).doubleValue() + "元/每笔(" + inf.getSize() + "笔)")
+                .setMoney(inf.getMoney());
+        //封装算法包月信息
+        DeviceAlgorithmChargingDto.AlgorithmMoonConfig.Moon moon = algorithmMoonConfig.getMoon();
+        DeviceChargingDto.PayCheckVo.DeviceAlgorithmCharging moonDeviceAlgorithmCharging = Beans.copy(DeviceChargingDto.PayCheckVo.DeviceAlgorithmCharging.class, deviceInfo)
+                .setDeviceTypeName(deviceTypeName)
+                .setAlgorithmId(deviceInfo.getAlgorithmId())
+                .setAlgorithmName(moonAlgorithmTypes.getMsg())
+                .setStandard(BigDecimal.valueOf(algorithmMoonConfig.getPrice()).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_DOWN).doubleValue() + "元/包月(" + moon.getSize() + "笔)")
+                .setMoney(moon.getMoney());
+        payCheckVo.setDeviceInfo(deviceInfoObj).setInfDeviceAlgorithmCharging(infDeviceAlgorithmCharging).setMoonDeviceAlgorithmCharging(moonDeviceAlgorithmCharging);
+        return R.ok(payCheckVo);
+    }
+
     @PostMapping("check")
     @ApiOperation("检查")
     public R check(@RequestBody @Validated DeviceChargingDto.Check check) {

+ 85 - 0
device-api/src/main/java/com/xy/dto/DeviceChargingDto.java

@@ -106,6 +106,91 @@ public class DeviceChargingDto {
 
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class PayCheck {
+
+        @NotNull(message = "deviceId不能为空")
+        @ApiModelProperty("设备id")
+        private Long deviceId;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class PayCheckVo {
+
+        @ApiModelProperty(value = "设备信息")
+        private DeviceInfo deviceInfo;
+
+        @ApiModelProperty(value = "算法包月信息")
+        private DeviceAlgorithmCharging moonDeviceAlgorithmCharging;
+
+        @ApiModelProperty(value = "算法购买信息")
+        private DeviceAlgorithmCharging infDeviceAlgorithmCharging;
+
+        @Data
+        @Accessors(chain = true)
+        public static class DeviceInfo {
+
+            @ApiModelProperty("设备id")
+            private Long deviceId;
+
+            @ApiModelProperty("设备名称")
+            private String deviceName;
+
+            @ApiModelProperty("设备类型")
+            private Integer deviceType;
+
+            @ApiModelProperty("设备类型名称")
+            private String deviceTypeName;
+
+            @ApiModelProperty("计费标准说明")
+            private String standard;
+
+            @ApiModelProperty("激活状态")
+            private Integer activeState;
+
+            @ApiModelProperty("运营状态")
+            private Integer busyState;
+
+            @ApiModelProperty("冻结状态")
+            private Integer freezeStatus;
+
+            @ApiModelProperty("价格")
+            private Integer money;
+        }
+
+        @Data
+        @Accessors(chain = true)
+        public static class DeviceAlgorithmCharging {
+
+            @ApiModelProperty("算法id")
+            private Long algorithmId;
+
+            @ApiModelProperty("算法名称")
+            private String algorithmName;
+
+            @ApiModelProperty("设备id")
+            private Long deviceId;
+
+            @ApiModelProperty("设备名称")
+            private String deviceName;
+
+            @ApiModelProperty("设备类型")
+            private Integer deviceType;
+
+            @ApiModelProperty("设备类型名称")
+            private String deviceTypeName;
+
+            @ApiModelProperty("计费标准说明")
+            private String standard;
+
+            @ApiModelProperty("价格")
+            private Integer money;
+
+        }
+    }
+
     @Data
     @Accessors(chain = true)
     public static class Vo {