Selaa lähdekoodia

Merge branch '商户费用' into test

tanbin 1 vuosi sitten
vanhempi
commit
0d98ca10af

+ 79 - 1
device-api-service/src/main/java/com/xy/service/DeviceTypeAlgorithmBeforConfigServiceImpl.java

@@ -1,15 +1,27 @@
 package com.xy.service;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.annotation.LogOperate;
+import com.xy.collections.list.JList;
+import com.xy.device.EnumAlgorithmPayConfig;
+import com.xy.device.EnumAlgorithmTypes;
+import com.xy.dto.AlgorithmDto;
+import com.xy.dto.DeviceAlgorithmChargingDto;
 import com.xy.dto.DeviceTypeAlgorithmBeforConfigDto;
+import com.xy.entity.DeviceInfo;
 import com.xy.entity.DeviceTypeAlgorithmBeforConfig;
+import com.xy.entity.SysDictRedis;
 import com.xy.mapper.DeviceTypeAlgorithmBeforConfigMapper;
 import com.xy.utils.Emptys;
 import com.xy.utils.MybatisPlusQuery;
 import com.xy.utils.R;
+import com.xy.utils.SysDictUtils;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -18,7 +30,11 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 import static com.xy.utils.Beans.copy;
 
@@ -36,6 +52,8 @@ import static com.xy.utils.Beans.copy;
 @Api(tags = "设备类型算法预充配置")
 public class DeviceTypeAlgorithmBeforConfigServiceImpl extends ServiceImpl<DeviceTypeAlgorithmBeforConfigMapper, DeviceTypeAlgorithmBeforConfig> implements DeviceTypeAlgorithmBeforConfigService {
 
+    private AlgorithmService algorithmService;
+
     @Override
     @ApiOperation("对象查询")
     public R<DeviceTypeAlgorithmBeforConfigDto.Vo> obj(@RequestBody DeviceTypeAlgorithmBeforConfigDto.Vo vo) {
@@ -55,6 +73,66 @@ public class DeviceTypeAlgorithmBeforConfigServiceImpl extends ServiceImpl<Devic
         return R.ok(copy(DeviceTypeAlgorithmBeforConfigDto.Vo.class, list));
     }
 
+    @PostMapping("deviceActiveFeeList")
+    @ApiOperation("费用管理-设备激活费用查询")
+    public R<DeviceTypeAlgorithmBeforConfigDto.DeviceActiveFeeVO> deviceActiveFeeList(@RequestBody DeviceTypeAlgorithmBeforConfigDto.DeviceActiveFeeDTO dto) {
+        DeviceTypeAlgorithmBeforConfigDto.DeviceActiveFeeVO vo = new DeviceTypeAlgorithmBeforConfigDto.DeviceActiveFeeVO();
+        Long mercId = dto.getMercId();
+        LambdaQueryWrapper<DeviceTypeAlgorithmBeforConfig> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(dto, DeviceTypeAlgorithmBeforConfig.class).build();
+        List<DeviceTypeAlgorithmBeforConfig> list = list(lambdaQueryWrapper);
+        //查询默认算法信息
+        List<AlgorithmDto.ListNameId> listNameIds = R.feignCheckData(algorithmService.ListNameId());
+        List<Long> algorithmIds = listNameIds.stream().map(AlgorithmDto.ListNameId::getId).collect(Collectors.toList());
+        Map<Long, String> agMap = listNameIds.stream().collect(Collectors.toMap(AlgorithmDto.ListNameId::getId, AlgorithmDto.ListNameId::getName));
+//        Map<Long, String> moonAlgorithmTypesMap = new HashMap<>();
+        Map<Long, String> algorithmPayConfigMap = new HashMap<>();
+        for (Long algorithmId : algorithmIds) {
+            SysDictRedis moonAlgorithmTypes = SysDictUtils.get(EnumAlgorithmTypes.Code.CODE.getCode(), String.valueOf(algorithmId));
+            //算法类型对应的字典配置的默认激活费(无设备类型)
+            SysDictRedis algorithmPayConfig = SysDictUtils.get(EnumAlgorithmPayConfig.Code.CODE.getCode(), String.valueOf(algorithmId));
+//            if (Emptys.check(moonAlgorithmTypes)) {
+//                moonAlgorithmTypesMap.put(algorithmId, moonAlgorithmTypes.getMsg());
+//            }
+            if (Emptys.check(algorithmPayConfig)) {
+                algorithmPayConfigMap.put(algorithmId, algorithmPayConfig.getValue());
+            }
+        }
+
+
+        //字典默认配置
+        List<DeviceTypeAlgorithmBeforConfigDto.DeviceActiveDictVO> deviceActiveDicts = new ArrayList<>();
+
+        for (Long algorithmId : algorithmIds) {
+            String algorithmName = agMap.get(algorithmId);
+            String algorithmPayConfig = algorithmPayConfigMap.get(algorithmId);
+            DeviceAlgorithmChargingDto.AlgorithmMoonConfig algorithmMoonConfig = JSONUtil.parseObj(algorithmPayConfig).toBean(DeviceAlgorithmChargingDto.AlgorithmMoonConfig.class);
+            DeviceAlgorithmChargingDto.AlgorithmMoonConfig.Inf inf = algorithmMoonConfig.getInf();
+            Integer money = inf.getMoney();
+            DeviceTypeAlgorithmBeforConfigDto.DeviceActiveDictVO dictVO = new DeviceTypeAlgorithmBeforConfigDto.DeviceActiveDictVO();
+            dictVO.setAlgorithmId(algorithmId);
+            dictVO.setAlgorithmName(algorithmName);
+            dictVO.setMoney(money);
+            dictVO.setSize(inf.getSize());
+            deviceActiveDicts.add(dictVO);
+        }
+        //平台给商家定义的配置
+        List<DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO> deviceActiveMercFees = new ArrayList<>();
+        if (CollUtil.isNotEmpty(list)) {
+            //平台给商家自定义的设备激活费用,多了个设备类型
+            BeanUtil.copyToList(list, DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO.class);
+            for (DeviceTypeAlgorithmBeforConfig db : list) {
+                DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO dbData = new DeviceTypeAlgorithmBeforConfigDto.DeviceActiveMercFeeVO();
+                BeanUtil.copyProperties(db, dbData);
+                String algorithmName = agMap.get(db.getAlgorithmId());
+                dbData.setAlgorithmName(algorithmName);
+                deviceActiveMercFees.add(dbData);
+            }
+        }
+        vo.setDeviceActiveDicts(deviceActiveDicts);
+        vo.setDeviceActiveMercFees(deviceActiveMercFees);
+        return R.ok(vo);
+    }
+
     @LogOperate
     @PostMapping("save")
     @ApiOperation("添加")
@@ -85,4 +163,4 @@ public class DeviceTypeAlgorithmBeforConfigServiceImpl extends ServiceImpl<Devic
         removeById(delete.getId());
         return R.ok();
     }
-}
+}

+ 89 - 0
device-api/src/main/java/com/xy/dto/DeviceTypeAlgorithmBeforConfigDto.java

@@ -7,6 +7,7 @@ import lombok.experimental.Accessors;
 
 import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * <p>
@@ -24,6 +25,94 @@ public class DeviceTypeAlgorithmBeforConfigDto {
 
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class DeviceActiveFeeDTO {
+        @ApiModelProperty(value = "id")
+        private Long id;
+        @NotNull(message = "商户ID不可为空")
+        @ApiModelProperty(value = "商户id")
+        private Long mercId;
+
+        @ApiModelProperty(value = "设备类型")
+        private Integer deviceType;
+
+        @ApiModelProperty(value = "算法id")
+        private Long algorithmId;
+
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class DeviceActiveFeeVO {
+
+        @ApiModelProperty(value = "字典默认配置")
+        private List<DeviceActiveDictVO> deviceActiveDicts;
+
+        @ApiModelProperty(value = "平台给商家定义的配置")
+        private List<DeviceActiveMercFeeVO> deviceActiveMercFees;
+
+    }
+
+    /**
+     * 平台给商家定义的费用配置
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class DeviceActiveMercFeeVO {
+
+        @ApiModelProperty(value = "id")
+        private Long id;
+
+        @ApiModelProperty(value = "商户id")
+        private Long mercId;
+
+        @ApiModelProperty(value = "设备类型")
+        private Integer deviceType;
+
+        @ApiModelProperty(value = "算法id")
+        private Long algorithmId;
+
+        @ApiModelProperty(value = "算法名称")
+        private String algorithmName;
+
+        @ApiModelProperty(value = "预充金额;单位:分")
+        private Integer money;
+
+        @ApiModelProperty(value = "创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime createTime;
+
+        @ApiModelProperty(value = "更新时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime updateTime;
+
+
+    }
+
+    /**
+     * 字典默认配置
+     */
+    @Data
+    @Accessors(chain = true)
+    public static class DeviceActiveDictVO {
+        @ApiModelProperty(value = "算法笔数")
+        private Integer size;
+
+        @ApiModelProperty(value = "算法id")
+        private Long algorithmId;
+
+        @ApiModelProperty(value = "算法名称")
+        private String algorithmName;
+
+        @ApiModelProperty(value = "预充金额;单位:分")
+        private Integer money;
+
+
+    }
+
+
     @Data
     @Accessors(chain = true)
     public static class Save extends Vo {