李进 2 лет назад
Родитель
Сommit
7a968308d6

+ 3 - 0
device-api-service/src/main/java/com/xy/entity/DeviceCharging.java

@@ -2,6 +2,8 @@ package com.xy.entity;
 
 import java.time.LocalDateTime;
 import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -24,6 +26,7 @@ public class DeviceCharging implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    @TableId
     @ApiModelProperty(value = "设备id")
     private Long deviceId;
 

+ 3 - 0
device-api-service/src/main/java/com/xy/entity/DeviceChargingHistory.java

@@ -2,6 +2,8 @@ package com.xy.entity;
 
 import java.time.LocalDateTime;
 import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -24,6 +26,7 @@ public class DeviceChargingHistory implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    @TableId
     @ApiModelProperty(value = "id")
     private Long id;
 

+ 9 - 6
device-api-service/src/main/java/com/xy/job/DeviceChargingJob.java

@@ -95,14 +95,12 @@ public class DeviceChargingJob {
         if (!Emptys.check(records)) {
             return;
         }
-        //剔除试用期的设备
+        //查询设备信息
         JList<DeviceCharging> deviceChargings = new JArrayList<>(records);
         JMap<Long, DeviceCharging> deviceChargingsJMaps = deviceChargings.toMap(DeviceCharging::getDeviceId).cover();
         List<DeviceInfo> deviceInfos = deviceInfoService.list(new LambdaQueryWrapper<DeviceInfo>()
                 .in(DeviceInfo::getDeviceId, deviceChargings.getProperty(DeviceCharging::getDeviceId))
-                .gt(DeviceInfo::getChargingX, 0)
         );
-        deviceInfos.forEach(deviceInfo -> deviceChargingsJMaps.remove(deviceInfo.getDeviceId()));
         JMap<Long, DeviceInfo> deviceInfosJMaps = new JArrayList<>(deviceInfos).toMap(DeviceInfo::getDeviceId).cover();
         //字典
         Map<String, SysDictRedis> stringSysDictRedisMap = SysDictUtils.get(DictEnum.DEVICE_CHARGING.getKey());
@@ -113,6 +111,9 @@ public class DeviceChargingJob {
             deviceCharging.setUpdateTime(now);
             //发起扣款
             DeviceInfo deviceInfo = deviceInfosJMaps.get(deviceId);
+            if (deviceInfo.getMercId() == -1) {
+                return;
+            }
             SysDictRedis sysDictRedisBalance = stringSysDictRedisMap.get(String.valueOf(deviceInfo.getDeviceType()));
             Integer balance = Integer.valueOf(sysDictRedisBalance.getValue());
             R r = mercAccountService.updateBalance(new MercAccountDto.UpdateBalance()
@@ -141,9 +142,9 @@ public class DeviceChargingJob {
             //扣款失败
             if (r.getCode() == R.Enum.FAIL.getCode()) {
                 deviceCharging.setStatus(false);
-                //当前时间 - 过期时间 > y 则冻结设备
+                //当前时间 - 过期时间 > y && 试用期 <= 0 则冻结设备
                 long day = DataTime.diff(now, deviceCharging.getTimeout(), "d");
-                if (day > y) {
+                if (day > y && deviceInfo.getChargingX() <= 0) {
                     DeviceInfoDto.Update update = new DeviceInfoDto.Update()
                             .setDeviceId(deviceId);
                     update.setFreezeStatus(2);
@@ -153,7 +154,9 @@ public class DeviceChargingJob {
             updateDeviceChargings.add(deviceCharging);
         });
         //修改设备计费记录
-        deviceChargingService.updateBatchById(updateDeviceChargings);
+        if (Emptys.check(updateDeviceChargings)) {
+            deviceChargingService.updateBatchById(updateDeviceChargings);
+        }
         //添加设备计费记录历史
         if (Emptys.check(deviceChargingHistories)) {
             deviceChargingHistoryService.saveBatch(deviceChargingHistories);