Gqingci 1 week ago
parent
commit
85fd86cda8

+ 38 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/domain/MainOrder.java

@@ -0,0 +1,38 @@
+package org.dromara.main.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("main_order")
+public class MainOrder extends BaseEntity {
+
+    @TableId(value = "id")
+    private Long id;
+
+    private String orderNo;
+    private Integer orderType;
+    private Integer buyerType;
+    private Long buyerId;
+    private String buyerName;
+    private Long sellerId;
+    private BigDecimal totalAmount;
+    private BigDecimal paidAmount;
+    private BigDecimal refundAmount;
+    private Integer orderStatus;
+    private Integer payStatus;
+    private Long businessId;
+    private Long productId;
+    private Date payTime;
+    private Date completeTime;
+    private Date cancelTime;
+    private String tenantId;
+    private String remark;
+}

+ 7 - 0
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/mapper/MainOrderMapper.java

@@ -0,0 +1,7 @@
+package org.dromara.main.mapper;
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.main.domain.MainOrder;
+
+public interface MainOrderMapper extends BaseMapperPlus<MainOrder, MainOrder> {
+}

+ 46 - 25
ruoyi-modules/ruoyi-main/src/main/java/org/dromara/main/service/impl/MainBackOrderServiceImpl.java

@@ -5,24 +5,30 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.main.domain.MainBackOrder;
 import org.dromara.main.domain.MainBackRecord;
+import org.dromara.main.domain.MainOrder;
 import org.dromara.main.domain.bo.MainBackOrderBo;
 import org.dromara.main.domain.vo.MainBackOrderVo;
 import org.dromara.main.mapper.MainBackOrderMapper;
 import org.dromara.main.mapper.MainBackRecordMapper;
+import org.dromara.main.mapper.MainOrderMapper;
 import org.dromara.main.service.IMainBackOrderService;
 import org.dromara.system.domain.bo.SysTenantBo;
 import org.dromara.system.domain.vo.SysTenantVo;
 import org.dromara.system.service.ISysTenantService;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
-import java.math.BigDecimal;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @RequiredArgsConstructor
 @Service
@@ -30,6 +36,7 @@ public class MainBackOrderServiceImpl implements IMainBackOrderService {
 
     private final MainBackOrderMapper baseMapper;
     private final MainBackRecordMapper recordMapper;
+    private final MainOrderMapper mainOrderMapper;
     private final ISysTenantService tenantService;
 
     @Override
@@ -83,30 +90,55 @@ public class MainBackOrderServiceImpl implements IMainBackOrderService {
 
     @Override
     public List<MainBackOrderVo> queryPortalListByTenantId(String tenantId) {
-        LambdaQueryWrapper<MainBackOrder> lqw = Wrappers.lambdaQuery();
-        lqw.eq(StrUtil.isNotBlank(tenantId), MainBackOrder::getTenantId, tenantId)
-            .orderByDesc(MainBackOrder::getCreateTime);
+        LambdaQueryWrapper<MainOrder> orderLqw = Wrappers.lambdaQuery();
+        orderLqw.eq(StrUtil.isNotBlank(tenantId), MainOrder::getTenantId, tenantId)
+            .in(MainOrder::getOrderType, List.of(3, 4))
+            .isNotNull(MainOrder::getBusinessId)
+            .orderByDesc(MainOrder::getCreateTime);
+
+        List<MainOrder> mainOrders = mainOrderMapper.selectList(orderLqw);
+        if (mainOrders.isEmpty()) {
+            return new ArrayList<>();
+        }
+
+        List<Long> businessIds = mainOrders.stream()
+            .map(MainOrder::getBusinessId)
+            .distinct()
+            .collect(Collectors.toList());
 
-        List<MainBackOrderVo> list = baseMapper.selectVoList(lqw);
-        for (MainBackOrderVo vo : list) {
-            fillPortalFields(vo);
+        Map<Long, MainBackOrder> backOrderMap = new LinkedHashMap<>();
+        for (MainBackOrder backOrder : baseMapper.selectBatchIds(businessIds)) {
+            backOrderMap.put(backOrder.getId(), backOrder);
         }
-        return list;
+
+        List<MainBackOrderVo> result = new ArrayList<>();
+        for (MainOrder mainOrder : mainOrders) {
+            MainBackOrder backOrder = backOrderMap.get(mainOrder.getBusinessId());
+            if (backOrder == null) {
+                continue;
+            }
+            MainBackOrderVo vo = MapstructUtils.convert(backOrder, MainBackOrderVo.class);
+            fillPortalFields(vo, mainOrder);
+            result.add(vo);
+        }
+        return result;
     }
 
-    private void fillPortalFields(MainBackOrderVo vo) {
+    private void fillPortalFields(MainBackOrderVo vo, MainOrder mainOrder) {
         Long count = recordMapper.selectCount(
             new LambdaQueryWrapper<MainBackRecord>()
                 .eq(MainBackRecord::getOrderId, vo.getId())
         );
         vo.setCandidateCount(count);
-        vo.setOrderId(vo.getId());
-        vo.setCompanyId(parseLongOrNull(vo.getTenantId()));
+        vo.setOrderId(mainOrder.getId());
+        vo.setOrderNo(mainOrder.getOrderNo());
+        vo.setCompanyId(mainOrder.getBuyerId());
+        vo.setTenantId(mainOrder.getTenantId());
+        vo.setTotalAmount(mainOrder.getTotalAmount());
         vo.setOrderType(vo.getCategoryId() != null ? 1 : 2);
 
-        Integer status = parseIntOrDefault(vo.getStatus(), 0);
-        vo.setOrderStatus(status);
-        vo.setMainOrderStatus(status);
+        vo.setOrderStatus(parseIntOrDefault(vo.getStatus(), 0));
+        vo.setMainOrderStatus(mainOrder.getOrderStatus());
 
         if (count != null && count > 0 && vo.getTotalAmount() != null) {
             vo.setUnitPrice(vo.getTotalAmount().divide(BigDecimal.valueOf(count), 2, java.math.RoundingMode.HALF_UP));
@@ -115,17 +147,6 @@ public class MainBackOrderServiceImpl implements IMainBackOrderService {
         }
     }
 
-    private Long parseLongOrNull(String value) {
-        if (StringUtils.isBlank(value)) {
-            return null;
-        }
-        try {
-            return Long.parseLong(value);
-        } catch (NumberFormatException ignored) {
-            return null;
-        }
-    }
-
     private Integer parseIntOrDefault(String value, int defaultValue) {
         if (StringUtils.isBlank(value)) {
             return defaultValue;