Browse Source

设备年费

lijin 2 weeks ago
parent
commit
a8787ba921

+ 39 - 16
device-api-service/src/main/java/com/xy/service/DeviceAnnualFeeOrdersServiceImpl.java

@@ -3,6 +3,8 @@ package com.xy.service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yitter.idgen.YitIdHelper;
+import com.xy.collections.list.JArrayList;
+import com.xy.collections.map.JMap;
 import com.xy.dto.DeviceAnnualFeeOrdersDto;
 import com.xy.entity.DeviceAnnualFee;
 import com.xy.entity.DeviceAnnualFeeOrders;
@@ -16,6 +18,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.PostMapping;
 
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 
@@ -36,34 +40,53 @@ public class DeviceAnnualFeeOrdersServiceImpl extends ServiceImpl<DeviceAnnualFe
 
     @Override
     @ApiOperation("购买")
-    public R pay(DeviceAnnualFeeOrdersDto.Pay pay) {
+    public R pay(List<DeviceAnnualFeeOrdersDto.Pay> pays) {
         LocalDateTime now = LocalDateTime.now();
-        DeviceAnnualFeeOrders deviceAnnualFeeOrders = Beans.copy(DeviceAnnualFeeOrders.class, pay)
-                .setId(YitIdHelper.nextId())
-                .setCreateTime(now)
-                .setUpdateTime(now);
-        save(deviceAnnualFeeOrders);
+        List<DeviceAnnualFeeOrders> saves = new ArrayList<>(pays.size());
+        for (DeviceAnnualFeeOrdersDto.Pay pay : pays) {
+            DeviceAnnualFeeOrders deviceAnnualFeeOrders = Beans.copy(DeviceAnnualFeeOrders.class, pay)
+                    .setId(YitIdHelper.nextId())
+                    .setCreateTime(now)
+                    .setUpdateTime(now);
+            saves.add(deviceAnnualFeeOrders);
+        }
+        saveBatch(saves);
         return R.ok();
     }
 
     @Override
     @ApiOperation("购买回调")
     public R payNotice(DeviceAnnualFeeOrdersDto.PayNotice payNotice) {
-        DeviceAnnualFeeOrders deviceAnnualFeeOrders = getOne(new LambdaQueryWrapper<DeviceAnnualFeeOrders>()
+        //查询订单
+        List<DeviceAnnualFeeOrders> deviceAnnualFeeOrderss = list(new LambdaQueryWrapper<DeviceAnnualFeeOrders>()
                 .eq(DeviceAnnualFeeOrders::getOrdersId, payNotice.getOrderId())
         );
-        if (deviceAnnualFeeOrders == null) {
+        if (!Emptys.check(deviceAnnualFeeOrderss)) {
             return R.ok();
         }
-        DeviceAnnualFee deviceAnnualFee = deviceAnnualFeeService.getOne(new LambdaQueryWrapper<DeviceAnnualFee>()
-                .eq(DeviceAnnualFee::getMercId, deviceAnnualFeeOrders.getMercId())
-                .eq(DeviceAnnualFee::getDeviceId, deviceAnnualFeeOrders.getDeviceId())
+        //查询设备年费表
+        List<DeviceAnnualFee> list = deviceAnnualFeeService.list(new LambdaQueryWrapper<DeviceAnnualFee>()
+                .eq(DeviceAnnualFee::getMercId, deviceAnnualFeeOrderss.get(0).getMercId())
+                .in(DeviceAnnualFee::getDeviceId, new JArrayList<>(deviceAnnualFeeOrderss).getProperty(DeviceAnnualFeeOrders::getDeviceId))
         );
-        String timeout = DataTime.getStringAround(deviceAnnualFeeOrders.getSize(), 0, 0, 0, 0, 0, DataTime.toString(deviceAnnualFee.getTimeout()));
-        deviceAnnualFee.setTimeout(DataTime.toLocal(timeout));
-        deviceAnnualFeeService.updateById(deviceAnnualFee);
-        deviceAnnualFeeOrders.setStatus(true).setUpdateTime(LocalDateTime.now());
-        updateById(deviceAnnualFeeOrders);
+        JMap<Long, DeviceAnnualFee> cover = new JArrayList<>(list).toMap(DeviceAnnualFee::getDeviceId).cover();
+        LocalDateTime now = LocalDateTime.now();
+        List<DeviceAnnualFee> updateDeviceAnnualFees = new ArrayList<>(list.size());
+        List<DeviceAnnualFeeOrders> updateDeviceAnnualFeeOrderss = new ArrayList<>(deviceAnnualFeeOrderss.size());
+        for (DeviceAnnualFeeOrders annualFeeOrders : deviceAnnualFeeOrderss) {
+            DeviceAnnualFee deviceAnnualFee = cover.get(annualFeeOrders.getDeviceId());
+            String timeout = DataTime.getStringAround(annualFeeOrders.getSize(), 0, 0, 0, 0, 0, DataTime.toString(deviceAnnualFee.getTimeout()));
+            deviceAnnualFee.setTimeout(DataTime.toLocal(timeout));
+            updateDeviceAnnualFees.add(deviceAnnualFee);
+            annualFeeOrders.setStatus(true).setUpdateTime(now);
+            updateDeviceAnnualFeeOrderss.add(annualFeeOrders);
+        }
+        if (Emptys.check(updateDeviceAnnualFees)) {
+            deviceAnnualFeeService.updateBatchById(updateDeviceAnnualFees);
+        }
+        if (Emptys.check(updateDeviceAnnualFeeOrderss)) {
+            updateBatchById(updateDeviceAnnualFeeOrderss);
+        }
         return R.ok();
     }
 

+ 3 - 1
device-api/src/main/java/com/xy/service/DeviceAnnualFeeOrdersService.java

@@ -7,6 +7,8 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.util.List;
+
 /**
  * <p>
  * 设备年费订单表 服务类
@@ -25,7 +27,7 @@ public interface DeviceAnnualFeeOrdersService {
      * @return
      */
     @PostMapping("pay")
-    R pay(@RequestBody @Validated DeviceAnnualFeeOrdersDto.Pay pay);
+    R pay(@RequestBody @Validated List<DeviceAnnualFeeOrdersDto.Pay> pays);
 
     /**
      * 购买回调