Ver código fonte

申诉功能完成一大半

Huanyi 1 semana atrás
pai
commit
6f7e330246
23 arquivos alterados com 281 adições e 62 exclusões
  1. 2 0
      ruoyi-api/yingpaipay-api-fulfiller/src/main/java/org/dromara/fulfiller/api/RemoteFulfillerService.java
  2. 27 0
      ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/enums/OrderAppealAuditStatusEnum.java
  3. 0 9
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/impl/UsrCustomerServiceImpl.java
  4. 15 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/dubbo/RemoteFulfillerServiceImpl.java
  5. 9 1
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderAppealController.java
  6. 6 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderController.java
  7. 25 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysSubOrderAppeal.java
  8. 3 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysOrderCreateBo.java
  9. 14 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderActivateBo.java
  10. 14 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderAppealAuditBo.java
  11. 28 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderAppealBo.java
  12. 2 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderDispatchBo.java
  13. 35 6
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderAppealVo.java
  14. 4 4
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderListOnMyOrderPageVo.java
  15. 4 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderListPageVo.java
  16. 4 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderOnDispatchVo.java
  17. 5 17
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderVo.java
  18. 3 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysSubOrderAppealService.java
  19. 2 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysSubOrderService.java
  20. 1 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysOrderServiceImpl.java
  21. 58 3
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysSubOrderAppealServiceImpl.java
  22. 14 22
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysSubOrderServiceImpl.java
  23. 6 0
      script/sql/business/v2/create.sql

+ 2 - 0
ruoyi-api/yingpaipay-api-fulfiller/src/main/java/org/dromara/fulfiller/api/RemoteFulfillerService.java

@@ -44,4 +44,6 @@ public interface RemoteFulfillerService {
     List<RemoteFulfillerVo> listAll();
 
     Long count();
+
+    List<Long> listIdsByName(String fulfillerName);
 }

+ 27 - 0
ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/enums/OrderAppealAuditStatusEnum.java

@@ -0,0 +1,27 @@
+package org.dromara.order.api.enums;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public enum OrderAppealAuditStatusEnum {
+
+    PENDING(0, "未审核", "info"),
+    PASS(1, "通过", "success"),
+    REJECT(2, "驳回", "danger");
+
+    private final Integer value;
+    private final String label;
+    private final String style;
+
+    public static boolean isPass(int status) {
+        return PASS.value.equals(status);
+    }
+
+    public static boolean isReject(int status) {
+        return REJECT.value.equals(status);
+    }
+}
+

+ 0 - 9
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/service/impl/UsrCustomerServiceImpl.java

@@ -139,15 +139,6 @@ public class UsrCustomerServiceImpl implements IUsrCustomerService {
             lqw.in(UsrCustomer::getStationId, WrapperUtils.convertIds(remoteAreaStationService.listByUserId(LoginHelper.getUserId())));
         }
 
-//        if (bo.getTab() != null) {
-//            if (bo.getTab().equals(UsrCustomerTabEnum.SELF.getValue())) {
-//                lqw.eq(UsrCustomer::getTenantId, TenantHelper.getTenantId());
-//            } else {
-//                List<Long> customerIds = remoteSubOrderService.getCustomerIdsByTenantId(TenantHelper.getTenantId());
-//                lqw.in(UsrCustomer::getId, WrapperUtils.convertIds(customerIds));
-//            }
-//        }
-
         return lqw;
     }
 

+ 15 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/dubbo/RemoteFulfillerServiceImpl.java

@@ -8,6 +8,7 @@ import org.apache.dubbo.config.annotation.DubboService;
 import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.exception.user.UserException;
 import org.dromara.common.core.utils.DateUtils;
+import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.external.timor.TimorClient;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.fulfiller.api.RemoteFulfillerService;
@@ -287,6 +288,20 @@ public class RemoteFulfillerServiceImpl implements RemoteFulfillerService {
         return fulfillerMapper.selectCount(Wrappers.lambdaQuery(FlfFulfiller.class));
     }
 
+    @Override
+    public List<Long> listIdsByName(String fulfillerName) {
+
+        if (StringUtils.isBlank(fulfillerName)) {
+            return Collections.emptyList();
+        }
+
+        List<Long> ids = new ArrayList<>();
+        fulfillerMapper.selectList(Wrappers.lambdaQuery(FlfFulfiller.class).select(FlfFulfiller::getId)
+            .like(FlfFulfiller::getName, fulfillerName)).forEach(e -> ids.add(e.getId()));
+
+        return ids;
+    }
+
     /**
      * 手动转换 FlfFulfiller → FulfillerLoginUser(避免跨模块 MapStruct 转换器缺失)
      */

+ 9 - 1
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderAppealController.java

@@ -5,6 +5,7 @@ import java.util.List;
 import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
+import org.dromara.order.domain.bo.SysSubOrderAppealAuditBo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -61,7 +62,7 @@ public class SysSubOrderAppealController extends BaseController {
      */
     @GetMapping("/{id}")
     public R<SysSubOrderAppealVo> getInfo(@NotNull(message = "主键不能为空")
-                                     @PathVariable("id") Long id) {
+                                          @PathVariable("id") Long id) {
         return R.ok(sysSubOrderAppealService.queryById(id));
     }
 
@@ -96,4 +97,11 @@ public class SysSubOrderAppealController extends BaseController {
                           @PathVariable("ids") Long[] ids) {
         return toAjax(sysSubOrderAppealService.deleteWithValidByIds(List.of(ids), true));
     }
+
+    @RepeatSubmit()
+    @PutMapping("/audit")
+    public R<Void> audit(@RequestBody SysSubOrderAppealAuditBo bo) {
+        return toAjax(sysSubOrderAppealService.audit(bo));
+    }
+
 }

+ 6 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderController.java

@@ -185,4 +185,10 @@ public class SysSubOrderController extends BaseController {
         ExcelUtil.exportExcel(excels, "订单列表", SysSubOrderListExcel.class, response);
     }
 
+    @RepeatSubmit()
+    @PutMapping("/activate")
+    public R<Void> activate(@RequestBody SysSubOrderActivateBo bo) {
+        return toAjax(subOrderService.activate(bo));
+    }
+
 }

+ 25 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysSubOrderAppeal.java

@@ -47,11 +47,36 @@ public class SysSubOrderAppeal extends TenantEntity {
      */
     private Long fulfillmentCommission;
 
+    /**
+     * 履约者
+     */
+    private Long fulfiller;
+
     /**
      * 申诉理由
      */
     private String reason;
 
+    /**
+     * 审核状态
+     */
+    private Integer auditStatus;
+
+    /**
+     * 驳回理由
+     */
+    private String rejectReason;
+
+    /**
+     * 审核人
+     */
+    private Long auditor;
+
+    /**
+     * 审核时间
+     */
+    private java.util.Date auditTime;
+
     /**
      * 删除标志(0代表存在 1代表删除)
      */

+ 3 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysOrderCreateBo.java

@@ -34,4 +34,7 @@ public class SysOrderCreateBo {
     @NotEmpty(message = "请从正确途径下单")
     private List<SysSubOrderCreateBo> subOrders;
 
+    @NotNull
+    private Long orderCommission;
+
 }

+ 14 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderActivateBo.java

@@ -0,0 +1,14 @@
+package org.dromara.order.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class SysSubOrderActivateBo {
+
+    private Long id;
+
+    private Long service;
+
+    private Long fulfillmentCommission;
+
+}

+ 14 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderAppealAuditBo.java

@@ -0,0 +1,14 @@
+package org.dromara.order.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class SysSubOrderAppealAuditBo {
+
+    private Long id;
+
+    private Integer result;
+
+    private String reason;
+
+}

+ 28 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderAppealBo.java

@@ -31,6 +31,7 @@ public class SysSubOrderAppealBo extends BaseEntity {
      */
     @NotNull(message = "所属订单不能为空", groups = { AddGroup.class, EditGroup.class })
     private Long orderId;
+    private String orderCode;
 
     /**
      * 实际服务
@@ -49,9 +50,36 @@ public class SysSubOrderAppealBo extends BaseEntity {
     @NotNull(message = "履约佣金不能为空", groups = { AddGroup.class, EditGroup.class })
     private Long fulfillmentCommission;
 
+    /**
+     * 履约者
+     */
+//    @NotNull(message = "履约者不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long fulfiller;
+    private String fulfillerName;
+
     /**
      * 申诉理由
      */
     private String reason;
 
+    /**
+     * 审核状态
+     */
+    private Integer auditStatus;
+
+    /**
+     * 驳回理由
+     */
+    private String rejectReason;
+
+    /**
+     * 审核人
+     */
+    private Long auditor;
+
+    /**
+     * 审核时间
+     */
+    private java.util.Date auditTime;
+
 }

+ 2 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderDispatchBo.java

@@ -11,4 +11,6 @@ public class SysSubOrderDispatchBo {
 
     private Long fulfillmentCommission;
 
+    private Long orderCommission;
+
 }

+ 35 - 6
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderAppealVo.java

@@ -1,5 +1,7 @@
 package org.dromara.order.domain.vo;
 
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
 import org.dromara.order.domain.SysSubOrderAppeal;
 import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
 import cn.idev.excel.annotation.ExcelProperty;
@@ -27,39 +29,66 @@ public class SysSubOrderAppealVo implements Serializable {
     /**
      * 序号
      */
-    @ExcelProperty(value = "序号")
     private Long id;
 
     /**
      * 所属订单
      */
-    @ExcelProperty(value = "所属订单")
+    @Translation(type = TransConstant.SUB_ORDER_ID_TO_CODE, mapper = "orderId")
+    private String orderCode;
     private Long orderId;
 
     /**
      * 实际服务
      */
-    @ExcelProperty(value = "实际服务")
     private Long service;
 
     /**
      * 图片
      */
-    @ExcelProperty(value = "图片")
     private String photos;
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "photos")
+    private String photoUrls;
 
     /**
      * 履约佣金
      */
-    @ExcelProperty(value = "履约佣金")
     private Long fulfillmentCommission;
 
+    /**
+     * 履约者
+     */
+    private Long fulfiller;
+    @Translation(type = TransConstant.FULFILLER_ID_TO_NAME, mapper = "fulfiller")
+    private String fulfillerName;
+
     /**
      * 申诉理由
      */
-    @ExcelProperty(value = "申诉理由")
     private String reason;
 
+    /**
+     * 审核状态
+     */
+    private Integer auditStatus;
+
+    /**
+     * 驳回理由
+     */
+    private String rejectReason;
+
+    /**
+     * 审核人
+     */
+    private Long auditor;
+    @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "auditor")
+    private String auditorName;
+
+    /**
+     * 审核时间
+     */
+    private Date auditTime;
+
     /**
      * 创建时间
      */

+ 4 - 4
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderListOnMyOrderPageVo.java

@@ -1,6 +1,8 @@
 package org.dromara.order.domain.vo;
 
 import lombok.Data;
+import org.dromara.common.translation.annotation.Translation;
+import org.dromara.common.translation.constant.TransConstant;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -26,18 +28,16 @@ public class SysSubOrderListOnMyOrderPageVo implements Serializable {
 
     private Long petAvatar;
 
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "petAvatar")
     private String petAvatarUrl;
 
     private String breed;
 
     private Long store;
 
+    @Translation(type = TransConstant.STORE_ID_TO_NAME, mapper = "store")
     private String storeName;
 
-    private String storeAreaCode;
-
-    private String storeAddress;
-
     private Long customer;
 
     private String customerName;

+ 4 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderListPageVo.java

@@ -69,4 +69,8 @@ public class SysSubOrderListPageVo implements Serializable {
 
     private Date nursingSummaryTime;
 
+    private Long orderCommission;
+
+    private Boolean serviceFlag;
+
 }

+ 4 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderOnDispatchVo.java

@@ -29,4 +29,8 @@ public class SysSubOrderOnDispatchVo {
 
     private Integer status;
 
+    private Long fulfillmentCommission;
+
+    private Long orderCommission;
+
 }

+ 5 - 17
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderVo.java

@@ -27,7 +27,7 @@ import java.util.Date;
 @Data
 @ExcelIgnoreUnannotated
 @AutoMapper(target = SysSubOrder.class)
-public class SysSubOrderVo implements Serializable {
+public class  SysSubOrderVo implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -35,91 +35,76 @@ public class SysSubOrderVo implements Serializable {
     /**
      * 序号
      */
-    @ExcelProperty(value = "序号")
     private Long id;
 
     /**
      * 订单号
      */
-    @ExcelProperty(value = "订单号")
     private String code;
 
     /**
      * 父订单ID
      */
-    @ExcelProperty(value = "父订单ID")
     private Long orderId;
 
     /**
      * 接送模式(仅接送单有)
      */
-    @ExcelProperty(value = "接送模式(仅接送单有)")
     private Integer mode;
 
     /**
      * 0接/1送(仅接送单有)
      */
-    @ExcelProperty(value = "0接/1送(仅接送单有)")
     private Integer type;
 
     /**
      * 联系人
      */
-    @ExcelProperty(value = "联系人")
     private String contact;
 
     /**
      * 联系电话
      */
-    @ExcelProperty(value = "联系电话")
     private String contactPhoneNumber;
 
     /**
      * 起始服务时间(仅服务单有)
      */
-    @ExcelProperty(value = "起始服务时间(仅服务单有)")
     private Date serviceTime;
 
     /**
      * 结束服务时间
      */
-    @ExcelProperty(value = "结束服务时间")
     private Date endServiceTime;
 
     /**
      * 起点地址编号(仅接送单有)
      */
-    @ExcelProperty(value = "起点地址编号(仅接送单有)")
     private String fromCode;
 
     /**
      * 起点详细地址(仅接送单有)
      */
-    @ExcelProperty(value = "起点详细地址(仅接送单有)")
     private String fromAddress;
 
     /**
      * 终点地址编号
      */
-    @ExcelProperty(value = "终点地址编号")
     private String toCode;
 
     /**
      * 终点详细地址
      */
-    @ExcelProperty(value = "终点详细地址")
     private String toAddress;
 
     /**
      * 履约佣金(分)
      */
-    @ExcelProperty(value = "履约佣金(分)")
     private Long fulfillmentCommission;
 
     /**
      * 履约者
      */
-    @ExcelProperty(value = "履约者")
     @Translation(type = TransConstant.FULFILLER_ID_TO_NAME, mapper = "fulfiller")
     private String fulfillerName;
     private Long fulfiller;
@@ -127,7 +112,6 @@ public class SysSubOrderVo implements Serializable {
     /**
      * 状态
      */
-    @ExcelProperty(value = "状态")
     private Integer status;
 
     private Integer platformId;
@@ -147,4 +131,8 @@ public class SysSubOrderVo implements Serializable {
 
     private String nursingSummary;
 
+    private Long orderCommission;
+
+    private Date createTime;
+
 }

+ 3 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysSubOrderAppealService.java

@@ -1,5 +1,6 @@
 package org.dromara.order.service;
 
+import org.dromara.order.domain.bo.SysSubOrderAppealAuditBo;
 import org.dromara.order.domain.vo.SysSubOrderAppealVo;
 import org.dromara.order.domain.bo.SysSubOrderAppealBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -45,4 +46,6 @@ public interface ISysSubOrderAppealService {
      * 校验并批量删除子订单申诉信息
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    boolean audit(SysSubOrderAppealAuditBo bo);
 }

+ 2 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysSubOrderService.java

@@ -47,4 +47,6 @@ public interface ISysSubOrderService {
     TableDataInfo<SysSubOrderStatisticPageVo> listOnStatistic(Integer status, PageQuery pageQuery, Long userId);
 
     List<SysSubOrderListPageVo> listExcel(SysSubOrderListPageBo bo);
+
+    boolean activate(SysSubOrderActivateBo bo);
 }

+ 1 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysOrderServiceImpl.java

@@ -96,6 +96,7 @@ public class SysOrderServiceImpl implements ISysOrderService {
                 5. 互动情况:
                 6. 特殊情况/备注:
                 """);
+            subOrder.setOrderCommission(bo.getOrderCommission());
             subOrders.add(subOrder);
         }
 //        bo.getSubOrders().forEach(e -> {

+ 58 - 3
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysSubOrderAppealServiceImpl.java

@@ -1,5 +1,6 @@
 package org.dromara.order.service.impl;
 
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -8,7 +9,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
+import org.dromara.common.mybatis.utils.WrapperUtils;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.fulfiller.api.RemoteFulfillerService;
+import org.dromara.order.api.enums.OrderAppealAuditStatusEnum;
 import org.dromara.order.domain.SysSubOrder;
+import org.dromara.order.domain.bo.SysSubOrderAppealAuditBo;
 import org.dromara.order.mapper.SysSubOrderMapper;
 import org.springframework.stereotype.Service;
 import org.dromara.order.domain.bo.SysSubOrderAppealBo;
@@ -18,9 +24,7 @@ import org.dromara.order.mapper.SysSubOrderAppealMapper;
 import org.dromara.order.service.ISysSubOrderAppealService;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import java.util.*;
 
 /**
  * 子订单申诉Service业务层处理
@@ -35,6 +39,9 @@ public class SysSubOrderAppealServiceImpl implements ISysSubOrderAppealService {
     private final SysSubOrderAppealMapper baseMapper;
     private final SysSubOrderMapper subOrderMapper;
 
+    @DubboReference
+    private final RemoteFulfillerService remoteFulfillerService;
+
     /**
      * 查询子订单申诉
      */
@@ -70,7 +77,24 @@ public class SysSubOrderAppealServiceImpl implements ISysSubOrderAppealService {
         lqw.eq(bo.getService() != null, SysSubOrderAppeal::getService, bo.getService());
         lqw.eq(StringUtils.isNotBlank(bo.getPhotos()), SysSubOrderAppeal::getPhotos, bo.getPhotos());
         lqw.eq(bo.getFulfillmentCommission() != null, SysSubOrderAppeal::getFulfillmentCommission, bo.getFulfillmentCommission());
+        lqw.eq(bo.getFulfiller() != null, SysSubOrderAppeal::getFulfiller, bo.getFulfiller());
         lqw.eq(StringUtils.isNotBlank(bo.getReason()), SysSubOrderAppeal::getReason, bo.getReason());
+        lqw.eq(bo.getAuditStatus() != null, SysSubOrderAppeal::getAuditStatus, bo.getAuditStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getRejectReason()), SysSubOrderAppeal::getRejectReason, bo.getRejectReason());
+        lqw.eq(bo.getAuditor() != null, SysSubOrderAppeal::getAuditor, bo.getAuditor());
+
+        if (StringUtils.isNotBlank(bo.getOrderCode())) {
+            List<Long> orderIds = new ArrayList<>();
+            subOrderMapper.selectList(Wrappers.lambdaQuery(SysSubOrder.class).select(SysSubOrder::getId)
+                .like(SysSubOrder::getCode, bo.getOrderCode())).forEach(e -> orderIds.add(e.getId()));
+            lqw.in(SysSubOrderAppeal::getOrderId, WrapperUtils.convertIds(orderIds));
+        }
+
+        if (StringUtils.isNotBlank(bo.getFulfillerName())) {
+            List<Long> fulfillerIds = remoteFulfillerService.listIdsByName(bo.getFulfillerName());
+            lqw.in(SysSubOrderAppeal::getFulfiller, WrapperUtils.convertIds(fulfillerIds));
+        }
+
         return lqw;
     }
 
@@ -85,6 +109,9 @@ public class SysSubOrderAppealServiceImpl implements ISysSubOrderAppealService {
 
         SysSubOrder subOrder = subOrderMapper.selectById(bo.getOrderId());
 
+        if (add.getFulfiller() == null) {
+            add.setFulfiller(subOrder.getFulfiller());
+        }
         add.setTenantId(subOrder.getTenantId());
         boolean appealFlag = baseMapper.insert(add) == 0;
         if (appealFlag) {
@@ -127,4 +154,32 @@ public class SysSubOrderAppealServiceImpl implements ISysSubOrderAppealService {
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public boolean audit(SysSubOrderAppealAuditBo bo) {
+
+        SysSubOrderAppeal appeal = baseMapper.selectById(bo.getId());
+        appeal.setAuditStatus(bo.getResult());
+        appeal.setAuditor(LoginHelper.getUserId());
+        appeal.setRejectReason(bo.getReason());
+        appeal.setAuditTime(new Date());
+        boolean appealFlag = baseMapper.updateById(appeal) == 0;
+        if (appealFlag) {
+            throw new RuntimeException("修改申诉记录失败");
+        }
+
+        if (OrderAppealAuditStatusEnum.isPass(appeal.getAuditStatus())) {
+            boolean orderFlag = subOrderMapper.update(Wrappers.lambdaUpdate(SysSubOrder.class)
+                .eq(SysSubOrder::getId, appeal.getOrderId())
+                .set(SysSubOrder::getService, appeal.getService())
+                .set(SysSubOrder::getFulfillmentCommission, appeal.getFulfillmentCommission())
+                .set(SysSubOrder::getServiceFlag, true)) == 0;
+            if (orderFlag) {
+                throw new RuntimeException("修改订单失败");
+            }
+        }
+
+        return true;
+    }
 }

+ 14 - 22
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysSubOrderServiceImpl.java

@@ -136,22 +136,10 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
                 vo.setPetBreed(pet.getBreed());
             }
             vo.setCustomer(e.getUsrCustomer());
-//            RemoteCustomerVo customer = customerMap.get(e.getUsrCustomer());
-//            if (customer != null) {
-//                vo.setCustomerName(customer.getName());
-//            }
             vo.setToAddress(e.getToAddress());
             vo.setSite(e.getStoreSite());
             vo.setStore(e.getStore());
-//            RemoteStoreVo store = storeMap.get(e.getStore());
-//            if (store != null) {
-//                vo.setStoreName(store.getName());
-//            }
             vo.setPlacer(e.getOrderPlacer());
-//            RemoteUserVo placer = userMap.get(e.getOrderPlacer());
-//            if (placer != null) {
-//                vo.setPlacerUsername(placer.getUserName());
-//            }
             vo.setCreateTime(e.getCreateTime());
             vo.setStatus(e.getStatus());
             vo.setFulfiller(e.getFulfiller());
@@ -164,6 +152,8 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
             vo.setRemark(e.getRemark());
             vo.setNursingSummary(e.getNursingSummary());
             vo.setNursingSummaryTime(e.getNursingSummaryTime());
+            vo.setOrderCommission(e.getOrderCommission());
+            vo.setServiceFlag(e.getServiceFlag());
             return vo;
         }));
     }
@@ -175,6 +165,7 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
         SysSubOrder subOrder = baseMapper.selectById(bo.getOrderId());
         subOrder.setFulfiller(bo.getFulfiller());
         subOrder.setFulfillmentCommission(bo.getFulfillmentCommission());
+        subOrder.setOrderCommission(bo.getOrderCommission());
         subOrder.setStatus(OrderStatusEnum.PENDING_ACCEPT.getValue());
 
         boolean orderFlag = baseMapper.updateById(subOrder) == 0;
@@ -517,22 +508,16 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
 
         List<Long> petIds = new ArrayList<>();
         List<Long> customerIds = new ArrayList<>();
-        List<Long> avatarIds = new ArrayList<>();
         Map<Long, RemotePetVo> petMap = new HashMap<>();
         Map<Long, RemoteCustomerVo> customerMap = new HashMap<>();
-        Map<Long, RemoteFile> avatarMap = new HashMap<>();
         page.getRecords().forEach(e -> {
             petIds.add(e.getUsrPet());
             customerIds.add(e.getUsrCustomer());
         });
         remotePetService.getByIds(petIds).forEach(e -> {
             petMap.put(e.getId(), e);
-            if (e.getAvatar() != null) {
-                avatarIds.add(e.getAvatar());
-            }
         });
         remoteCustomerService.getByIds(customerIds).forEach(e -> customerMap.put(e.getId(), e));
-        remoteFileService.selectByIds(avatarIds).forEach(e -> avatarMap.put(e.getOssId(), e));
 
         return TableDataInfo.build(page.convert(e -> {
             SysSubOrderListOnMyOrderPageVo vo = new SysSubOrderListOnMyOrderPageVo();
@@ -546,12 +531,8 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
                 vo.setPetName(pet.getName());
                 vo.setBreed(pet.getBreed());
                 vo.setPetAvatar(pet.getAvatar());
-                vo.setPetAvatarUrl(avatarMap.containsKey(pet.getAvatar()) ? avatarMap.get(pet.getAvatar()).getUrl() : null);
             }
             vo.setStore(e.getStore());
-//            vo.setStoreName();
-//            vo.setStoreAreaCode();
-//            vo.setStoreAddress();
             vo.setCustomer(e.getUsrCustomer());
             RemoteCustomerVo customer = customerMap.get(e.getUsrCustomer());
             if (customer != null) {
@@ -648,6 +629,8 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
             vo.setToAddress(e.getToAddress());
             vo.setServiceTime(e.getServiceTime());
             vo.setStatus(e.getStatus());
+            vo.setFulfillmentCommission(e.getFulfillmentCommission());
+            vo.setOrderCommission(e.getOrderCommission());
             vos.add(vo);
         });
 
@@ -944,4 +927,13 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
             return vo;
         }).toList();
     }
+
+    @Override
+    public boolean activate(SysSubOrderActivateBo bo) {
+        return baseMapper.update(Wrappers.lambdaUpdate(SysSubOrder.class)
+            .eq(SysSubOrder::getId, bo.getId())
+            .set(SysSubOrder::getService, bo.getService())
+            .set(SysSubOrder::getFulfillmentCommission, bo.getFulfillmentCommission())
+            .set(SysSubOrder::getServiceFlag, true)) > 0;
+    }
 }

+ 6 - 0
script/sql/business/v2/create.sql

@@ -17,8 +17,14 @@ CREATE TABLE pet_system.sys_sub_order_appeal
     order_id               bigint             NOT NULL COMMENT '订单ID',
     service                bigint             NOT NULL COMMENT '实际服务',
     photos                 varchar(255) COMMENT '图片',
+    fulfiller              bigint             NOT NULL COMMENT '履约者',
     fulfillment_commission bigint             NOT NULL COMMENT '履约佣金',
     reason                 varchar(512) COMMENT '申诉理由',
+    audit_status           tinyint            NOT NULL DEFAULT 0 COMMENT '审核状态',
+    reject_reason          varchar(512) COMMENT '驳回理由',
+    auditor                bigint COMMENT '审核人',
+    audit_time             datetime COMMENT '审核时间',
+    del_flag               char(1)                     DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
     tenant_id              varchar(20)        NOT NULL COMMENT '租户编号',
     create_dept            bigint(20) COMMENT '创建部门',
     create_by              bigint(20) COMMENT '创建者',