瀏覽代碼

整改初步结束

Huanyi 1 周之前
父節點
當前提交
f8d06a6ce9
共有 34 個文件被更改,包括 404 次插入370 次删除
  1. 1 30
      pom.xml
  2. 2 0
      ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/RemotePetService.java
  3. 5 0
      ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/domain/vo/RemotePetVo.java
  4. 2 0
      ruoyi-api/yingpaipay-api-fulfiller/src/main/java/org/dromara/fulfiller/api/domain/vo/RemoteFulfillerVo.java
  5. 2 0
      ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/domain/vo/RemoteSubOrderVo.java
  6. 2 1
      ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/enums/OrderLogFulfillerStepEnum.java
  7. 1 1
      ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/enums/OrderLogSystemStepEnum.java
  8. 3 3
      ruoyi-example/ruoyi-test-mq/src/main/resources/application.yml
  9. 48 38
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysNoticeController.java
  10. 27 32
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysNotice.java
  11. 37 41
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysNoticeBo.java
  12. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysStoreBo.java
  13. 42 50
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysNoticeVo.java
  14. 2 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysNoticeMapper.java
  15. 23 30
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysNoticeService.java
  16. 32 79
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java
  17. 0 7
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml
  18. 35 4
      ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/dubbo/RemotePetServiceImpl.java
  19. 2 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfFulfillerController.java
  20. 3 0
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfAnamalyVo.java
  21. 5 5
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/dubbo/RemoteFulfillerServiceImpl.java
  22. 1 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/IFlfFulfillerService.java
  23. 16 1
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfAnamalyServiceImpl.java
  24. 14 16
      ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java
  25. 26 7
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderController.java
  26. 4 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderCancelBo.java
  27. 2 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/bo/SysSubOrderRejectBo.java
  28. 9 1
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/excel/SysSubOrderListExcel.java
  29. 4 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderListPageVo.java
  30. 2 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/vo/SysSubOrderVo.java
  31. 3 1
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteSubOrderServiceImpl.java
  32. 10 11
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysSubOrderServiceImpl.java
  33. 16 7
      ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties
  34. 22 0
      script/sql/business/create.sql

+ 1 - 30
pom.xml

@@ -67,36 +67,7 @@
         <profile>
             <id>Huanyi</id>
             <properties>
-                <profiles.active>dev</profiles.active>
-                <nacos.server>127.0.0.1:8848</nacos.server>
-                <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
-                <nacos.config.group>DEFAULT_GROUP</nacos.config.group>
-                <nacos.username>nacos</nacos.username>
-                <nacos.password>nacos</nacos.password>
-                <logstash.address>127.0.0.1:4560</logstash.address>
-                <discovery.ip>127.0.0.1</discovery.ip>
-                <nacos.ip>127.0.0.1</nacos.ip>
-            </properties>
-        </profile>
-<!--        <profile>-->
-<!--            <id>Huanyi-Company</id>-->
-<!--            <properties>-->
-<!--                &lt;!&ndash; 环境标识,需要与配置文件的名称相对应 &ndash;&gt;-->
-<!--                <profiles.active>dev</profiles.active>-->
-<!--                <nacos.server>192.168.1.118:8848</nacos.server>-->
-<!--                <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>-->
-<!--                <nacos.config.group>DEFAULT_GROUP</nacos.config.group>-->
-<!--                <nacos.username>nacos</nacos.username>-->
-<!--                <nacos.password>nacos</nacos.password>-->
-<!--                <logstash.address>127.0.0.1:4560</logstash.address>-->
-<!--                <discovery.ip>192.168.1.118</discovery.ip>-->
-<!--                <nacos.ip>192.168.1.118</nacos.ip>-->
-<!--            </properties>-->
-<!--        </profile>-->
-        <profile>
-            <id>test</id>
-            <properties>
-                <profiles.active>test</profiles.active>
+                <profiles.active>prod</profiles.active>
                 <nacos.server>127.0.0.1:8848</nacos.server>
                 <nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
                 <nacos.config.group>DEFAULT_GROUP</nacos.config.group>

+ 2 - 0
ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/RemotePetService.java

@@ -6,4 +6,6 @@ import java.util.List;
 
 public interface RemotePetService {
     List<RemotePetVo> getByIds(List<Long> petIds);
+
+    List<RemotePetVo> getByCustomerIds(List<Long> customerIds);
 }

+ 5 - 0
ruoyi-api/yingpaipay-api-archieves/src/main/java/org/dromara/api/domain/vo/RemotePetVo.java

@@ -4,6 +4,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 @Data
 public class RemotePetVo implements Serializable {
@@ -19,4 +20,8 @@ public class RemotePetVo implements Serializable {
 
     private Long avatar;
 
+    private Long customerId;
+
+    private BigDecimal weight;
+
 }

+ 2 - 0
ruoyi-api/yingpaipay-api-fulfiller/src/main/java/org/dromara/fulfiller/api/domain/vo/RemoteFulfillerVo.java

@@ -22,4 +22,6 @@ public class RemoteFulfillerVo implements Serializable {
 
     private Date createTime;
 
+    private String phone;
+
 }

+ 2 - 0
ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/domain/vo/RemoteSubOrderVo.java

@@ -36,4 +36,6 @@ public class RemoteSubOrderVo implements Serializable {
 
     private Long pet;
 
+    private Long storeSite;
+
 }

+ 2 - 1
ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/enums/OrderLogFulfillerStepEnum.java

@@ -8,7 +8,8 @@ import lombok.Getter;
 @AllArgsConstructor(access = AccessLevel.PRIVATE)
 public enum OrderLogFulfillerStepEnum {
 
-    REJECT(-1, "已拒绝", "履约者 %s 拒绝接单,订单已取消"),
+    REJECT(-2, "已拒绝", "履约者 %s 拒绝接单,原因: %s"),
+    CANCEL(-1, "已拒绝", "履约者 %s 取消订单,原因: %s"),
     RECIEVED(0, "已接单", "履约者 %s 已确认接单,准备前往服务地点"),
     COMPLETED(99, "订单完成", "用户/商家已确认,服务圆满结束"),
     ;

+ 1 - 1
ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/enums/OrderLogSystemStepEnum.java

@@ -13,7 +13,7 @@ public enum OrderLogSystemStepEnum {
     RECIEVED(2, "接单成功", "履约者已确认接单"),
     ARRIVED(3, "到达服务点", "履约者已打卡"),
     FINISH(4, "订单完成", "履约者已完成"),
-    CANCEL(5, "订单取消", "订单已取消"),
+    CANCEL(5, "订单取消", "%s 取消订单,原因: %s"),
     ;
     private final Integer step;
     private final String title;

+ 3 - 3
ruoyi-example/ruoyi-test-mq/src/main/resources/application.yml

@@ -1,5 +1,5 @@
 server:
-  port: 9402
+  port: 6007
 
 # Spring
 spring:
@@ -15,8 +15,8 @@ spring:
   rabbitmq:
     host: localhost
     port: 5672
-    username: guest
-    password: guest
+    username: huanyi
+    password: 12345
     publisher-returns: true
     publisher-confirm-type: correlated
 

+ 48 - 38
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysNoticeController.java

@@ -2,26 +2,29 @@ package org.dromara.system.controller.system;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import lombok.RequiredArgsConstructor;
-import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.common.core.domain.R;
-import org.dromara.common.core.service.DictService;
+import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
-import org.dromara.common.web.core.BaseController;
 import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.resource.api.RemoteMessageService;
+import org.dromara.common.web.core.BaseController;
 import org.dromara.system.domain.bo.SysNoticeBo;
 import org.dromara.system.domain.vo.SysNoticeVo;
 import org.dromara.system.service.ISysNoticeService;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import jakarta.servlet.http.HttpServletResponse;
+
+import java.util.Arrays;
+import java.util.List;
+
 /**
- * 公告 信息操作处理
+ * 系统通知信息 信息操作处理
  *
- * @author Lion Li
+ * @author ruoyi
  */
 @Validated
 @RequiredArgsConstructor
@@ -30,63 +33,70 @@ import org.springframework.web.bind.annotation.*;
 public class SysNoticeController extends BaseController {
 
     private final ISysNoticeService noticeService;
-    private final DictService dictService;
-
-    @DubboReference
-    private RemoteMessageService remoteMessageService;
 
     /**
-     * 获取通知公告列表
+     * 获取系统通知信息列表
      */
+    @SaCheckPermission("system:notice:list")
     @GetMapping("/list")
-    public TableDataInfo<SysNoticeVo> list(SysNoticeBo notice, PageQuery pageQuery) {
-        return noticeService.selectPageNoticeList(notice, pageQuery);
+    public TableDataInfo<SysNoticeVo> list(SysNoticeBo bo, PageQuery pageQuery) {
+        return noticeService.selectPageNoticeList(bo, pageQuery);
     }
 
     /**
-     * 根据通知公告编号获取详细信息
+     * 导出系统通知信息列表
+     */
+    @SaCheckPermission("system:notice:export")
+    @Log(title = "系统通知信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(SysNoticeBo bo, HttpServletResponse response) {
+        List<SysNoticeVo> list = noticeService.selectNoticeList(bo);
+        ExcelUtil.exportExcel(list, "系统通知信息", SysNoticeVo.class, response);
+    }
+
+    /**
+     * 根据系统通知信息ID获取详细信息
      *
-     * @param noticeId 公告ID
+     * @param id 系统通知信息ID
      */
-    @GetMapping(value = "/{noticeId}")
-    public R<SysNoticeVo> getInfo(@PathVariable Long noticeId) {
-        return R.ok(noticeService.selectNoticeById(noticeId));
+    @SaCheckPermission("system:notice:query")
+    @GetMapping(value = "/{id}")
+    public R<SysNoticeVo> getInfo(@PathVariable Long id) {
+        return R.ok(noticeService.selectNoticeById(id));
     }
 
     /**
-     * 新增通知公告
+     * 新增系统通知信息
      */
-    @Log(title = "通知公告", businessType = BusinessType.INSERT)
+    @SaCheckPermission("system:notice:add")
+    @Log(title = "系统通知信息", businessType = BusinessType.INSERT)
     @RepeatSubmit()
     @PostMapping
-    public R<Void> add(@Validated @RequestBody SysNoticeBo notice) {
-        int rows = noticeService.insertNotice(notice);
-        if (rows <= 0) {
-            return R.fail();
-        }
-        String type = dictService.getDictLabel("sys_notice_type", notice.getNoticeType());
-        remoteMessageService.publishAll("[" + type + "] " + notice.getNoticeTitle());
-        return R.ok();
+    public R<Void> add(@Validated @RequestBody SysNoticeBo bo) {
+        return toAjax(noticeService.insertNotice(bo));
     }
 
     /**
-     * 修改通知公告
+     * 修改系统通知信息
      */
-    @Log(title = "通知公告", businessType = BusinessType.UPDATE)
+    @SaCheckPermission("system:notice:edit")
+    @Log(title = "系统通知信息", businessType = BusinessType.UPDATE)
     @RepeatSubmit()
     @PutMapping
-    public R<Void> edit(@Validated @RequestBody SysNoticeBo notice) {
-        return toAjax(noticeService.updateNotice(notice));
+    public R<Void> edit(@Validated @RequestBody SysNoticeBo bo) {
+        return toAjax(noticeService.updateNotice(bo));
     }
 
     /**
-     * 删除通知公告
+     * 删除系统通知信息
      *
-     * @param noticeIds 公告ID串
+     * @param ids 系统通知信息ID串
      */
-    @Log(title = "通知公告", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{noticeIds}")
-    public R<Void> remove(@PathVariable Long[] noticeIds) {
-        return toAjax(noticeService.deleteNoticeByIds(noticeIds));
+    @SaCheckPermission("system:notice:remove")
+    @Log(title = "系统通知信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@PathVariable Long[] ids) {
+        return toAjax(noticeService.deleteNoticeByIds(Arrays.asList(ids)));
     }
+
 }

+ 27 - 32
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysNotice.java

@@ -6,46 +6,41 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.dromara.common.tenant.core.TenantEntity;
 
+import java.util.Date;
 
 /**
- * 通知公告表 sys_notice
+ * 系统通知信息表 sys_notice
  *
- * @author Lion Li
+ * @author ruoyi
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
 @TableName("sys_notice")
 public class SysNotice extends TenantEntity {
 
-    /**
-     * 公告ID
-     */
-    @TableId(value = "notice_id")
-    private Long noticeId;
-
-    /**
-     * 公告标题
-     */
-    private String noticeTitle;
-
-    /**
-     * 公告类型(1通知 2公告)
-     */
-    private String noticeType;
-
-    /**
-     * 公告内容
-     */
-    private String noticeContent;
-
-    /**
-     * 公告状态(0正常 1关闭)
-     */
-    private String status;
-
-    /**
-     * 备注
-     */
-    private String remark;
+    @TableId(value = "id")
+    private Long id;
+
+    private Integer senderType;
+
+    private Long sender;
+
+    private Boolean sendFlag;
+
+    private Date sendTime;
+
+    private Integer type;
+
+    private String title;
+
+    private String content;
+
+    private Integer receiverType;
+
+    private Long receiver;
+
+    private Boolean readFlag;
+
+    private Date readTime;
 
 }

+ 37 - 41
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysNoticeBo.java

@@ -2,60 +2,56 @@ package org.dromara.system.domain.bo;
 
 import io.github.linpeilie.annotations.AutoMapper;
 import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.dromara.common.core.xss.Xss;
 import org.dromara.common.mybatis.core.domain.BaseEntity;
 import org.dromara.system.domain.SysNotice;
 
+import java.util.Date;
+
 /**
- * 通知公告业务对象 sys_notice
+ * 系统通知信息业务对象 sys_notice
  *
- * @author Michelle.Chung
+ * @author ruoyi
  */
-
 @Data
 @EqualsAndHashCode(callSuper = true)
 @AutoMapper(target = SysNotice.class, reverseConvertGenerate = false)
 public class SysNoticeBo extends BaseEntity {
 
-    /**
-     * 公告ID
-     */
-    private Long noticeId;
-
-    /**
-     * 公告标题
-     */
-    @Xss(message = "公告标题不能包含脚本字符")
-    @NotBlank(message = "公告标题不能为空")
-    @Size(min = 0, max = 50, message = "公告标题不能超过{max}个字符")
-    private String noticeTitle;
-
-    /**
-     * 公告类型(1通知 2公告)
-     */
-    private String noticeType;
-
-    /**
-     * 公告内容
-     */
-    private String noticeContent;
-
-    /**
-     * 公告状态(0正常 1关闭)
-     */
-    private String status;
-
-    /**
-     * 备注
-     */
-    private String remark;
-
-    /**
-     * 创建人名称
-     */
-    private String createByName;
+    private Long id;
+
+    @NotNull(message = "发送方类型不能为空")
+    private Integer senderType;
+
+    @NotNull(message = "发送方不能为空")
+    private Long sender;
+
+    private Boolean sendFlag;
+
+    private Date sendTime;
+
+    @NotNull(message = "消息类型不能为空")
+    private Integer type;
+
+    @NotBlank(message = "标题不能为空")
+    @Size(max = 255, message = "标题长度不能超过{max}个字符")
+    private String title;
+
+    @NotBlank(message = "内容不能为空")
+    @Size(max = 2560, message = "内容长度不能超过{max}个字符")
+    private String content;
+
+    @NotNull(message = "接收方类型不能为空")
+    private Integer receiverType;
+
+    @NotNull(message = "接收方不能为空")
+    private Long receiver;
+
+    private Boolean readFlag;
+
+    private Date readTime;
 
 }

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysStoreBo.java

@@ -39,7 +39,7 @@ public class SysStoreBo extends TenantEntity {
     /**
      * 营业执照
      */
-    @NotNull(message = "营业执照不能为空", groups = {AddGroup.class, EditGroup.class})
+//    @NotNull(message = "营业执照不能为空", groups = {AddGroup.class, EditGroup.class})
     private Long businessLicense;
 
     /**

+ 42 - 50
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysNoticeVo.java

@@ -1,73 +1,65 @@
 package org.dromara.system.domain.vo;
 
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
-import org.dromara.common.translation.annotation.Translation;
-import org.dromara.common.translation.constant.TransConstant;
 import org.dromara.system.domain.SysNotice;
 
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
 
-
-
 /**
- * 通知公告视图对象 sys_notice
+ * 系统通知信息视图对象 sys_notice
  *
- * @author Michelle.Chung
+ * @author ruoyi
  */
 @Data
+@ExcelIgnoreUnannotated
 @AutoMapper(target = SysNotice.class)
 public class SysNoticeVo implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;
 
-    /**
-     * 公告ID
-     */
-    private Long noticeId;
-
-    /**
-     * 公告标题
-     */
-    private String noticeTitle;
-
-    /**
-     * 公告类型(1通知 2公告)
-     */
-    private String noticeType;
-
-    /**
-     * 公告内容
-     */
-    private String noticeContent;
-
-    /**
-     * 公告状态(0正常 1关闭)
-     */
-    private String status;
-
-    /**
-     * 备注
-     */
-    private String remark;
-
-    /**
-     * 创建者
-     */
-    private Long createBy;
-
-    /**
-     * 创建人名称
-     */
-    @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
-    private String createByName;
-
-    /**
-     * 创建时间
-     */
+    @ExcelProperty(value = "序号")
+    private Long id;
+
+    @ExcelProperty(value = "发送方类型")
+    private Integer senderType;
+
+    @ExcelProperty(value = "发送方")
+    private Long sender;
+
+    @ExcelProperty(value = "发送标识")
+    private Boolean sendFlag;
+
+    @ExcelProperty(value = "发送时间")
+    private Date sendTime;
+
+    @ExcelProperty(value = "消息类型")
+    private Integer type;
+
+    @ExcelProperty(value = "标题")
+    private String title;
+
+    @ExcelProperty(value = "内容")
+    private String content;
+
+    @ExcelProperty(value = "接收方类型")
+    private Integer receiverType;
+
+    @ExcelProperty(value = "接收方")
+    private Long receiver;
+
+    @ExcelProperty(value = "已读标识")
+    private Boolean readFlag;
+
+    @ExcelProperty(value = "阅读时间")
+    private Date readTime;
+
+    @ExcelProperty(value = "创建时间")
     private Date createTime;
 
 }

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysNoticeMapper.java

@@ -5,9 +5,9 @@ import org.dromara.system.domain.SysNotice;
 import org.dromara.system.domain.vo.SysNoticeVo;
 
 /**
- * 通知公告表 数据层
+ * 系统通知信息 数据层
  *
- * @author Lion Li
+ * @author ruoyi
  */
 public interface SysNoticeMapper extends BaseMapperPlus<SysNotice, SysNoticeVo> {
 

+ 23 - 30
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysNoticeService.java

@@ -8,66 +8,59 @@ import org.dromara.system.domain.vo.SysNoticeVo;
 import java.util.List;
 
 /**
- * 公告 服务层
+ * 系统通知信息 服务层
  *
- * @author Lion Li
+ * @author ruoyi
  */
 public interface ISysNoticeService {
 
     /**
-     * 分页查询通知公告列表
+     * 分页查询系统通知信息列表
      *
-     * @param notice    查询条件
+     * @param bo        查询条件
      * @param pageQuery 分页参数
-     * @return 通知公告分页列表
+     * @return 系统通知信息分页列表
      */
-    TableDataInfo<SysNoticeVo> selectPageNoticeList(SysNoticeBo notice, PageQuery pageQuery);
+    TableDataInfo<SysNoticeVo> selectPageNoticeList(SysNoticeBo bo, PageQuery pageQuery);
 
     /**
-     * 查询公告信息
+     * 查询系统通知信息列表
      *
-     * @param noticeId 公告ID
-     * @return 公告信息
+     * @param bo 查询条件
+     * @return 系统通知信息列表
      */
-    SysNoticeVo selectNoticeById(Long noticeId);
+    List<SysNoticeVo> selectNoticeList(SysNoticeBo bo);
 
     /**
-     * 查询公告列表
+     * 查询系统通知信息
      *
-     * @param notice 公告信息
-     * @return 公告集合
+     * @param id 系统通知信息ID
+     * @return 系统通知信息
      */
-    List<SysNoticeVo> selectNoticeList(SysNoticeBo notice);
+    SysNoticeVo selectNoticeById(Long id);
 
     /**
-     * 新增公告
+     * 新增系统通知信息
      *
-     * @param bo 公告信息
+     * @param bo 系统通知信息
      * @return 结果
      */
-    int insertNotice(SysNoticeBo bo);
+    Boolean insertNotice(SysNoticeBo bo);
 
     /**
-     * 修改公告
+     * 修改系统通知信息
      *
-     * @param bo 公告信息
+     * @param bo 系统通知信息
      * @return 结果
      */
-    int updateNotice(SysNoticeBo bo);
+    Boolean updateNotice(SysNoticeBo bo);
 
     /**
-     * 删除公告信息
+     * 批量删除系统通知信息
      *
-     * @param noticeId 公告ID
+     * @param ids 需要删除的系统通知信息ID
      * @return 结果
      */
-    int deleteNoticeById(Long noticeId);
+    Boolean deleteNoticeByIds(List<Long> ids);
 
-    /**
-     * 批量删除公告信息
-     *
-     * @param noticeIds 需要删除的公告ID
-     * @return 结果
-     */
-    int deleteNoticeByIds(Long[] noticeIds);
 }

+ 32 - 79
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java

@@ -5,127 +5,80 @@ 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.ObjectUtils;
 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.system.domain.SysNotice;
-import org.dromara.system.domain.SysUser;
 import org.dromara.system.domain.bo.SysNoticeBo;
 import org.dromara.system.domain.vo.SysNoticeVo;
-import org.dromara.system.domain.vo.SysUserVo;
 import org.dromara.system.mapper.SysNoticeMapper;
-import org.dromara.system.mapper.SysUserMapper;
 import org.dromara.system.service.ISysNoticeService;
 import org.springframework.stereotype.Service;
 
-import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 /**
- * 公告 服务层实现
+ * 系统通知信息 服务层实现
  *
- * @author Lion Li
+ * @author ruoyi
  */
 @RequiredArgsConstructor
 @Service
 public class SysNoticeServiceImpl implements ISysNoticeService {
 
     private final SysNoticeMapper baseMapper;
-    private final SysUserMapper userMapper;
 
-    /**
-     * 分页查询通知公告列表
-     *
-     * @param notice    查询条件
-     * @param pageQuery 分页参数
-     * @return 通知公告分页列表
-     */
     @Override
-    public TableDataInfo<SysNoticeVo> selectPageNoticeList(SysNoticeBo notice, PageQuery pageQuery) {
-        LambdaQueryWrapper<SysNotice> lqw = buildQueryWrapper(notice);
+    public TableDataInfo<SysNoticeVo> selectPageNoticeList(SysNoticeBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<SysNotice> lqw = buildQueryWrapper(bo);
         Page<SysNoticeVo> page = baseMapper.selectVoPage(pageQuery.build(), lqw);
         return TableDataInfo.build(page);
     }
 
-    /**
-     * 查询公告信息
-     *
-     * @param noticeId 公告ID
-     * @return 公告信息
-     */
     @Override
-    public SysNoticeVo selectNoticeById(Long noticeId) {
-        return baseMapper.selectVoById(noticeId);
-    }
-
-    /**
-     * 查询公告列表
-     *
-     * @param notice 公告信息
-     * @return 公告集合
-     */
-    @Override
-    public List<SysNoticeVo> selectNoticeList(SysNoticeBo notice) {
-        LambdaQueryWrapper<SysNotice> lqw = buildQueryWrapper(notice);
+    public List<SysNoticeVo> selectNoticeList(SysNoticeBo bo) {
+        LambdaQueryWrapper<SysNotice> lqw = buildQueryWrapper(bo);
         return baseMapper.selectVoList(lqw);
     }
 
-    private LambdaQueryWrapper<SysNotice> buildQueryWrapper(SysNoticeBo bo) {
-        LambdaQueryWrapper<SysNotice> lqw = Wrappers.lambdaQuery();
-        lqw.like(StringUtils.isNotBlank(bo.getNoticeTitle()), SysNotice::getNoticeTitle, bo.getNoticeTitle());
-        lqw.eq(StringUtils.isNotBlank(bo.getNoticeType()), SysNotice::getNoticeType, bo.getNoticeType());
-        if (StringUtils.isNotBlank(bo.getCreateByName())) {
-            SysUserVo sysUser = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, bo.getCreateByName()));
-            lqw.eq(SysNotice::getCreateBy, ObjectUtils.notNullGetter(sysUser, SysUserVo::getUserId));
-        }
-        lqw.orderByAsc(SysNotice::getNoticeId);
-        return lqw;
+    @Override
+    public SysNoticeVo selectNoticeById(Long id) {
+        return baseMapper.selectVoById(id);
     }
 
-    /**
-     * 新增公告
-     *
-     * @param bo 公告信息
-     * @return 结果
-     */
     @Override
-    public int insertNotice(SysNoticeBo bo) {
+    public Boolean insertNotice(SysNoticeBo bo) {
         SysNotice notice = MapstructUtils.convert(bo, SysNotice.class);
-        return baseMapper.insert(notice);
+        return baseMapper.insert(notice) > 0;
     }
 
-    /**
-     * 修改公告
-     *
-     * @param bo 公告信息
-     * @return 结果
-     */
     @Override
-    public int updateNotice(SysNoticeBo bo) {
+    public Boolean updateNotice(SysNoticeBo bo) {
         SysNotice notice = MapstructUtils.convert(bo, SysNotice.class);
-        return baseMapper.updateById(notice);
+        return baseMapper.updateById(notice) > 0;
     }
 
-    /**
-     * 删除公告对象
-     *
-     * @param noticeId 公告ID
-     * @return 结果
-     */
     @Override
-    public int deleteNoticeById(Long noticeId) {
-        return baseMapper.deleteById(noticeId);
+    public Boolean deleteNoticeByIds(List<Long> ids) {
+        return baseMapper.deleteByIds(ids) > 0;
     }
 
-    /**
-     * 批量删除公告信息
-     *
-     * @param noticeIds 需要删除的公告ID
-     * @return 结果
-     */
-    @Override
-    public int deleteNoticeByIds(Long[] noticeIds) {
-        return baseMapper.deleteByIds(Arrays.asList(noticeIds));
+    private LambdaQueryWrapper<SysNotice> buildQueryWrapper(SysNoticeBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<SysNotice> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getSenderType() != null, SysNotice::getSenderType, bo.getSenderType());
+        lqw.eq(bo.getSender() != null, SysNotice::getSender, bo.getSender());
+        lqw.eq(bo.getSendFlag() != null, SysNotice::getSendFlag, bo.getSendFlag());
+        lqw.eq(bo.getType() != null, SysNotice::getType, bo.getType());
+        lqw.like(StringUtils.isNotBlank(bo.getTitle()), SysNotice::getTitle, bo.getTitle());
+        lqw.eq(bo.getReceiverType() != null, SysNotice::getReceiverType, bo.getReceiverType());
+        lqw.eq(bo.getReceiver() != null, SysNotice::getReceiver, bo.getReceiver());
+        lqw.eq(bo.getReadFlag() != null, SysNotice::getReadFlag, bo.getReadFlag());
+        lqw.between(params.get("beginTime") != null && params.get("endTime") != null,
+            SysNotice::getCreateTime, params.get("beginTime"), params.get("endTime"));
+        lqw.orderByDesc(SysNotice::getId);
+        return lqw;
     }
+
 }

+ 0 - 7
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.dromara.system.mapper.SysNoticeMapper">
-
-</mapper>

+ 35 - 4
ruoyi-modules/yingpaipay-archieves/src/main/java/org/dromara/archieves/dubbo/RemotePetServiceImpl.java

@@ -12,6 +12,7 @@ import org.dromara.common.mybatis.utils.WrapperUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 @RequiredArgsConstructor
@@ -25,13 +26,40 @@ public class RemotePetServiceImpl implements RemotePetService {
     @Override
     public List<RemotePetVo> getByIds(List<Long> petIds) {
 
+        if (petIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+
         List<RemotePetVo> vos = new ArrayList<>();
 
-        List<UsrPet> pets = baseMapper.selectList(
-            Wrappers.lambdaQuery(UsrPet.class)
+        List<UsrPet> pets = baseMapper.selectList(Wrappers.lambdaQuery(UsrPet.class)
                 .select(UsrPet::getId, UsrPet::getName, UsrPet::getBreed, UsrPet::getAvatar)
-                .in(UsrPet::getId, WrapperUtils.convertIds(petIds))
-        );
+                .in(UsrPet::getId, petIds));
+
+        for (UsrPet pet : pets) {
+            RemotePetVo vo = new RemotePetVo();
+            vo.setId(pet.getId());
+            vo.setName(pet.getName());
+            vo.setBreed(pet.getBreed());
+            vo.setAvatar(pet.getAvatar());
+            vos.add(vo);
+        }
+
+        return vos;
+    }
+
+    @Override
+    public List<RemotePetVo> getByCustomerIds(List<Long> customerIds) {
+
+        if (customerIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+
+        List<RemotePetVo> vos = new ArrayList<>();
+
+        List<UsrPet> pets = baseMapper.selectList(Wrappers.lambdaQuery(UsrPet.class)
+                .select(UsrPet::getId, UsrPet::getName, UsrPet::getBreed, UsrPet::getAvatar, UsrPet::getUserId, UsrPet::getWeight)
+                .in(UsrPet::getUserId, customerIds));
 
         for (UsrPet pet : pets) {
             RemotePetVo vo = new RemotePetVo();
@@ -39,9 +67,12 @@ public class RemotePetServiceImpl implements RemotePetService {
             vo.setName(pet.getName());
             vo.setBreed(pet.getBreed());
             vo.setAvatar(pet.getAvatar());
+            vo.setCustomerId(pet.getUserId());
+            vo.setWeight(pet.getWeight());
             vos.add(vo);
         }
 
         return vos;
+
     }
 }

+ 2 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/controller/FlfFulfillerController.java

@@ -327,9 +327,10 @@ public class FlfFulfillerController extends BaseController {
     public TableDataInfo<FlfFulfillerOnOrderVo> pageOnOrder(
         @RequestParam(name = "content", required = false) String content,
         @RequestParam Long service,
+        @RequestParam Long orderId,
         PageQuery pageQuery
     ) {
-        return fulfillerService.pageOnOrder(service, content, pageQuery);
+        return fulfillerService.pageOnOrder(service, orderId, content, pageQuery);
     }
 
     @GetMapping("/listAllOnDispatch")

+ 3 - 0
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/domain/vo/FlfAnamalyVo.java

@@ -51,6 +51,9 @@ public class FlfAnamalyVo implements Serializable {
     private String orderCode;
     private Long orderId;
 
+    private Long store;
+    private String storeName;
+
     /**
      * 异常类型
      */

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

@@ -1,5 +1,6 @@
 package org.dromara.fulfiller.dubbo;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -56,10 +57,8 @@ public class RemoteFulfillerServiceImpl implements RemoteFulfillerService {
 
     @Override
     public FulfillerLoginUser getFulfillerByPhone(String phone) throws UserException {
-        FlfFulfiller fulfiller = fulfillerMapper.selectOne(
-            new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<FlfFulfiller>()
-                .eq(FlfFulfiller::getPhone, phone)
-        );
+        FlfFulfiller fulfiller = fulfillerMapper.selectOne(new LambdaQueryWrapper<FlfFulfiller>()
+                .eq(FlfFulfiller::getPhone, phone));
 
         if (fulfiller == null) {
             log.info("登录用户:{} 不存在.", phone);
@@ -101,13 +100,14 @@ public class RemoteFulfillerServiceImpl implements RemoteFulfillerService {
         List<RemoteFulfillerVo> vos = new ArrayList<>();
         fulfillerMapper.selectList(
             Wrappers.lambdaQuery(FlfFulfiller.class)
-                .select(FlfFulfiller::getId, FlfFulfiller::getName, FlfFulfiller::getStatus)
+                .select(FlfFulfiller::getId, FlfFulfiller::getName, FlfFulfiller::getStatus, FlfFulfiller::getPhone)
                 .in(FlfFulfiller::getId, fulfillerIds)
         ).forEach(e -> {
             RemoteFulfillerVo vo = new RemoteFulfillerVo();
             vo.setId(e.getId());
             vo.setName(e.getName());
             vo.setStatus(e.getStatus());
+            vo.setPhone(e.getPhone());
             vos.add(vo);
         });
         return vos;

+ 1 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/IFlfFulfillerService.java

@@ -128,7 +128,7 @@ public interface IFlfFulfillerService {
      */
     Boolean updateAuthInfoByUserId(Long userId, java.util.Map<String, String> params);
 
-    TableDataInfo<FlfFulfillerOnOrderVo> pageOnOrder(Long service, String content, PageQuery pageQuery);
+    TableDataInfo<FlfFulfillerOnOrderVo> pageOnOrder(Long service, Long orderId, String content, PageQuery pageQuery);
 
     List<FlfFulfillerOnOrderVo> listAllOnOrder();
 

+ 16 - 1
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfAnamalyServiceImpl.java

@@ -22,7 +22,9 @@ import org.dromara.order.api.RemoteSubOrderService;
 import org.dromara.order.api.domain.vo.RemoteSubOrderVo;
 import org.dromara.resource.api.RemoteFileService;
 import org.dromara.resource.api.domain.RemoteFile;
+import org.dromara.system.api.RemoteStoreService;
 import org.dromara.system.api.RemoteUserService;
+import org.dromara.system.api.domain.vo.RemoteStoreVo;
 import org.dromara.system.api.domain.vo.RemoteUserVo;
 import org.dromara.fulfiller.domain.vo.FlfAnamalyOnOrderVo;
 import org.springframework.stereotype.Service;
@@ -43,6 +45,8 @@ public class FlfAnamalyServiceImpl implements IFlfAnamalyService {
     private final RemoteFileService remoteFileService;
     @DubboReference
     private final RemoteUserService remoteUserService;
+    @DubboReference
+    private final RemoteStoreService remoteStoreService;
 
     @Override
     public TableDataInfo<FlfAnamalyVo> list(FlfAnamalyPageBo bo, PageQuery pageQuery) {
@@ -74,6 +78,7 @@ public class FlfAnamalyServiceImpl implements IFlfAnamalyService {
         Map<Long, FlfFulfiller> fulfillerMap = new HashMap<>();
         Map<Long, RemoteSubOrderVo> orderMap = new HashMap<>();
         Map<Long, RemoteUserVo> auditorMap = new HashMap<>();
+        Map<Long, RemoteStoreVo> storeMap = new HashMap<>();
         page.getRecords().forEach(e -> {
             fulfillerIds.add(e.getFulfiller());
             if (StringUtils.isNotBlank(e.getPhotos())) {
@@ -89,7 +94,12 @@ public class FlfAnamalyServiceImpl implements IFlfAnamalyService {
             remoteFileService.selectByIds(photoIds).forEach(e -> photoMap.put(e.getOssId(), e));
         }
         if (!orderIds.isEmpty()) {
-            remoteSubOrderService.getByIds(orderIds).forEach(e -> orderMap.put(e.getId(), e));
+            List<Long> storeIds = new ArrayList<>();
+            remoteSubOrderService.getByIds(orderIds).forEach(e -> {
+                orderMap.put(e.getId(), e);
+                storeIds.add(e.getStore());
+            });
+            remoteStoreService.getByIds(storeIds).forEach(e -> storeMap.put(e.getId(), e));
         }
         if (!auditorIds.isEmpty()) {
             remoteUserService.getByIds(auditorIds).forEach(e -> auditorMap.put(e.getUserId(), e));
@@ -117,6 +127,11 @@ public class FlfAnamalyServiceImpl implements IFlfAnamalyService {
             RemoteSubOrderVo order = orderMap.get(e.getOrderId());
             if (order != null) {
                 e.setOrderCode(order.getCode());
+                RemoteStoreVo store = storeMap.get(order.getStore());
+                if (store != null) {
+                    e.setStore(store.getId());
+                    e.setStoreName(store.getName());
+                }
             }
             RemoteUserVo auditor = auditorMap.get(e.getAuditor());
             if (auditor != null) {

+ 14 - 16
ruoyi-modules/yingpaipay-fulfiller/src/main/java/org/dromara/fulfiller/service/impl/FlfFulfillerServiceImpl.java

@@ -23,10 +23,7 @@ import org.dromara.fulfiller.constants.FlfRewardTargetConstant;
 import org.dromara.common.core.constant.TagTargetConstants;
 import org.dromara.fulfiller.domain.vo.FlfFulfillerOnOrderVo;
 import org.dromara.fulfiller.domain.vo.FlfFulfilllerListByNameAndPhoneNumberVo;
-import org.dromara.fulfiller.enums.AuditStatusEnum;
-import org.dromara.fulfiller.enums.AuditTypeEnum;
-import org.dromara.fulfiller.enums.FlfBalanceBizTypeEnum;
-import org.dromara.fulfiller.enums.FlfPointsBizTypeEnum;
+import org.dromara.fulfiller.enums.*;
 import org.dromara.order.api.RemoteSubOrderLogService;
 import org.dromara.order.api.RemoteSubOrderService;
 import org.dromara.order.api.domain.vo.RemoteSubOrderLogCountVo;
@@ -605,18 +602,22 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
     }
 
     @Override
-    public TableDataInfo<FlfFulfillerOnOrderVo> pageOnOrder(Long service, String content, PageQuery pageQuery) {
+    public TableDataInfo<FlfFulfillerOnOrderVo> pageOnOrder(Long service, Long orderId, String content, PageQuery pageQuery) {
+
+        RemoteSubOrderVo subOrder = remoteSubOrderService.getById(orderId);
 
         Page<FlfFulfiller> page = baseMapper.selectPage(
             pageQuery.build(),
             Wrappers.lambdaQuery(FlfFulfiller.class)
                 .select(FlfFulfiller::getId, FlfFulfiller::getAvatar, FlfFulfiller::getPhone, FlfFulfiller::getName, FlfFulfiller::getStatus, FlfFulfiller::getServiceTypes, FlfFulfiller::getGender)
+                .eq(FlfFulfiller::getStationId, subOrder.getStoreSite())
                 .orderByDesc(FlfFulfiller::getId)
                 .and(StringUtils.isNotBlank(content), wrapper -> wrapper
                     .like(FlfFulfiller::getName, content).or().like(FlfFulfiller::getPhone, content)
                 )
-                .apply(DataBaseHelper.findInSet(service, "service_types"))
-        );
+                .ne(FlfFulfiller::getStatus, FlfFulfillerStatusEnum.DISABLED.getValue())
+                .apply(DataBaseHelper.findInSet(service, "service_types")));
+
         List<Long> fulfillerIds = new ArrayList<>();
         List<Long> avatarIds = new ArrayList<>();
         page.getRecords().forEach(e -> {
@@ -627,11 +628,10 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
         });
         Map<Long, List<Long>> tagMap = new HashMap<>();
         Map<Long, RemoteFile> avatarMap = new HashMap<>();
-        tagRelMapper.selectList(
-            Wrappers.lambdaQuery(SysTagRel.class)
+        tagRelMapper.selectList(Wrappers.lambdaQuery(SysTagRel.class)
                 .eq(SysTagRel::getTargetType, TagTargetConstants.FULFILLER)
-                .in(SysTagRel::getTargetId, WrapperUtils.convertIds(fulfillerIds))
-        ).forEach(e -> tagMap.computeIfAbsent(e.getTargetId(), k -> new ArrayList<>()).add(e.getTagId()));
+                .in(SysTagRel::getTargetId, WrapperUtils.convertIds(fulfillerIds)))
+            .forEach(e -> tagMap.computeIfAbsent(e.getTargetId(), k -> new ArrayList<>()).add(e.getTagId()));
 
         remoteFileService.selectByIds(avatarIds).forEach(e -> avatarMap.put(e.getOssId(), e));
 
@@ -641,11 +641,9 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
             FlfFulfillerOnOrderVo vo = new FlfFulfillerOnOrderVo();
             vo.setId(e.getId());
             vo.setName(e.getName());
-            vo.setAvatar(
-                Optional.ofNullable(e.getAvatar())
+            vo.setAvatar(Optional.ofNullable(e.getAvatar())
                     .map(id -> avatarMap.get(Long.parseLong(id)).getUrl())
-                    .orElse(null)
-            );
+                    .orElse(null));
             vo.setPhone(e.getPhone());
             vo.setTags(tagMap.get(e.getId()));
             vo.setStatus(e.getStatus());
@@ -705,7 +703,7 @@ public class FlfFulfillerServiceImpl implements IFlfFulfillerService {
     @Override
     public List<FlfFulfillerOnOrderVo> listAllOnDispatch(Long service) {
 
-        List<FlfFulfiller> flfFulfillers = baseMapper.selectList();
+        List<FlfFulfiller> flfFulfillers = baseMapper.selectList(Wrappers.lambdaQuery(FlfFulfiller.class).ne(FlfFulfiller::getStatus, FlfFulfillerStatusEnum.DISABLED.getValue()));
 
         List<Long> fulfillerIds = new ArrayList<>();
         List<Long> avatarIds = new ArrayList<>();

+ 26 - 7
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysSubOrderController.java

@@ -4,7 +4,10 @@ import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.api.RemoteCustomerService;
 import org.dromara.api.RemotePetService;
+import org.dromara.api.domain.vo.RemoteCustomerVo;
+import org.dromara.api.domain.vo.RemotePetVo;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.DateUtils;
 import org.dromara.common.excel.utils.ExcelUtil;
@@ -42,17 +45,16 @@ public class SysSubOrderController extends BaseController {
     private final RemoteSysServiceService remoteSysServiceService;
     @DubboReference
     private final RemoteAreaStationService remoteAreaStationService;
+    @DubboReference
+    private final RemoteCustomerService remoteCustomerService;
+    @DubboReference
+    private final RemotePetService remotePetService;
 
     @GetMapping("/list")
     public TableDataInfo<SysSubOrderListPageVo> list(SysSubOrderListPageBo bo, PageQuery pageQuery) {
         return subOrderService.list(bo, pageQuery);
     }
 
-    @GetMapping("/listOnMerchant")
-    public TableDataInfo<SysSubOrderListPageVo> listOnMerchant(SysSubOrderListPageBo bo, PageQuery pageQuery) {
-        return subOrderService.listOnMerchant(bo, pageQuery);
-    }
-
     @GetMapping("/getInfo")
     public R<SysSubOrderVo> getInfo(@RequestParam Long id) {
         return R.ok(subOrderService.getInfo(id));
@@ -66,7 +68,7 @@ public class SysSubOrderController extends BaseController {
 
     @RepeatSubmit()
     @PutMapping("/cancel")
-    public R<Void> cancel(@RequestBody SysSubOrderCancelBo bo) {
+    public R<Void> cancel(@Validated @RequestBody SysSubOrderCancelBo bo) {
         return toAjax(subOrderService.cancel(bo));
     }
 
@@ -122,7 +124,7 @@ public class SysSubOrderController extends BaseController {
 
     @RepeatSubmit()
     @PutMapping("/reject")
-    public R<Void> reject(@RequestBody SysSubOrderRejectBo bo) {
+    public R<Void> reject(@Validated @RequestBody SysSubOrderRejectBo bo) {
         return toAjax(subOrderService.reject(bo));
     }
 
@@ -156,10 +158,23 @@ public class SysSubOrderController extends BaseController {
     public void export(SysSubOrderListPageBo bo, HttpServletResponse response) {
         List<SysSubOrderListPageVo> list = subOrderService.listExcel(bo);
 
+        List<Long> customerIds = new ArrayList<>();
+
+        list.forEach(e -> {
+            customerIds.add(e.getCustomer());
+        });
+
         Map<Long, RemoteSysServiceVo> serviceMap = new HashMap<>();
         Map<Long, RemoteAreaStationVo> areaStationMap = new HashMap<>();
+        Map<Long, List<RemotePetVo>> customerPetMap = new HashMap<>();
+        Map<Long, RemotePetVo> petMap = new HashMap<>();
         remoteSysServiceService.listAll().forEach(e -> serviceMap.put(e.getId(), e));
         remoteAreaStationService.listAll().forEach(e -> areaStationMap.put(e.getId(), e));
+        List<RemotePetVo> pets = remotePetService.getByCustomerIds(customerIds);
+        pets.forEach(e -> {
+            petMap.put(e.getId(), e);
+            customerPetMap.computeIfAbsent(e.getCustomerId(), k -> new ArrayList<>()).add(e);
+        });
 
         List<SysSubOrderListExcel> excels = list.stream()
             .map(e -> {
@@ -185,6 +200,10 @@ public class SysSubOrderController extends BaseController {
                 excel.setPrice(Optional.ofNullable(e.getPrice())
                         .map(price -> new BigDecimal(price).multiply(new BigDecimal("0.01")))
                         .orElse(null));
+                excel.setCustomerPhone(e.getCustomerPhone());
+                excel.setPetWeight(petMap.get(e.getPet()).getWeight());
+                excel.setCustomerPetCount(customerPetMap.getOrDefault(e.getCustomer(), new ArrayList<>()).size());
+                excel.setRemark(e.getRemark());
                 return excel;
             }).toList();
         ExcelUtil.exportExcel(excels, "订单列表", SysSubOrderListExcel.class, response);

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

@@ -1,5 +1,6 @@
 package org.dromara.order.domain.bo;
 
+import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
 @Data
@@ -7,4 +8,7 @@ public class SysSubOrderCancelBo {
 
     private Long orderId;
 
+    @NotBlank(message = "必须填写拒绝原因")
+    private String reason;
+
 }

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

@@ -1,5 +1,6 @@
 package org.dromara.order.domain.bo;
 
+import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
 @Data
@@ -7,6 +8,7 @@ public class SysSubOrderRejectBo {
 
     private Long orderId;
 
+    @NotBlank(message = "必须填写拒绝原因")
     private String rejectReason;
 
 }

+ 9 - 1
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/excel/SysSubOrderListExcel.java

@@ -7,7 +7,6 @@ import lombok.Data;
 import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.util.Date;
 
 @Data
 @ExcelIgnoreUnannotated
@@ -69,4 +68,13 @@ public class SysSubOrderListExcel implements Serializable {
     @ExcelProperty(value = "服务费")
     private BigDecimal price;
 
+    @ExcelProperty(value = "用户联系电话")
+    private String customerPhone;
+    @ExcelProperty(value = "用户宠物数量")
+    private Integer customerPetCount;
+    @ExcelProperty(value = "宠物重量")
+    private BigDecimal petWeight;
+    @ExcelProperty(value = "备注")
+    private String remark;
+
 }

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

@@ -39,6 +39,8 @@ public class SysSubOrderListPageVo implements Serializable {
 //    @Translation(type = TransConstant.CUSTOMER_ID_TO_NAME, mapper = "customer")
     private String customerName;
 
+    private String customerPhone;
+
     private Long site;
 
     private Long store;
@@ -61,6 +63,8 @@ public class SysSubOrderListPageVo implements Serializable {
 
     private String fulfillerStatus;
 
+    private String fulfillerPhone;
+
     private Long price;
 
     private String remark;

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

@@ -147,4 +147,6 @@ public class SysSubOrderVo implements Serializable {
 
     private String nursingSummary;
 
+    private String remark;
+
 }

+ 3 - 1
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteSubOrderServiceImpl.java

@@ -81,12 +81,13 @@ public class RemoteSubOrderServiceImpl implements RemoteSubOrderService {
 
         baseMapper.selectList(
                 Wrappers.lambdaQuery(SysSubOrder.class)
-                    .select(SysSubOrder::getId, SysSubOrder::getCode)
+                    .select(SysSubOrder::getId, SysSubOrder::getCode, SysSubOrder::getStore)
                     .in(SysSubOrder::getId, orderIds))
             .forEach(e -> {
                 RemoteSubOrderVo vo = new RemoteSubOrderVo();
                 vo.setId(e.getId());
                 vo.setCode(e.getCode());
+                vo.setStore(e.getStore());
                 vos.add(vo);
             });
 
@@ -126,6 +127,7 @@ public class RemoteSubOrderServiceImpl implements RemoteSubOrderService {
         RemoteSubOrderVo vo = new RemoteSubOrderVo();
         vo.setId(order.getId());
         vo.setTenantId(order.getTenantId());
+        vo.setStoreSite(order.getStoreSite());
 
         return vo;
     }

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

@@ -20,10 +20,7 @@ import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.fulfiller.api.RemoteFulfillerService;
 import org.dromara.fulfiller.api.domain.vo.RemoteFulfillerVo;
 import org.dromara.fulfiller.api.model.FulfillerLoginUser;
-import org.dromara.order.api.enums.OrderLogActionerTypeEnum;
-import org.dromara.order.api.enums.OrderLogSystemStepEnum;
-import org.dromara.order.api.enums.OrderLogTypeEnum;
-import org.dromara.order.api.enums.OrderStatusEnum;
+import org.dromara.order.api.enums.*;
 import org.dromara.order.domain.SysSubOrder;
 import org.dromara.order.domain.SysSubOrderLog;
 import org.dromara.order.domain.bo.*;
@@ -83,8 +80,8 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
             orderWrapper.and(w -> w
                 .in(SysSubOrder::getTenantId, tenantIds.isEmpty() ? List.of(TenantConstants.DEFAULT_TENANT_ID) : tenantIds).or()
                 .in(SysSubOrder::getOrderPlacer, WrapperUtils.convertIds(userIds)).or()
-                .in(SysSubOrder::getUsrCustomer, WrapperUtils.convertIds(customerIds))
-            );
+                .in(SysSubOrder::getUsrCustomer, WrapperUtils.convertIds(customerIds)).or()
+                .like(SysSubOrder::getCode, bo.getContent()));
         }
 
         orderWrapper.in(SysSubOrder::getStoreSite, WrapperUtils.convertIds(remoteAreaStationService.listByUserId(LoginHelper.getUserId())));
@@ -159,6 +156,7 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
             if (fulfiller != null) {
                 vo.setFulfillerName(fulfiller.getName());
                 vo.setFulfillerStatus(fulfiller.getStatus());
+                vo.setFulfillerPhone(fulfiller.getPhone());
             }
             vo.setPrice(e.getPrice());
             vo.setRemark(e.getRemark());
@@ -224,10 +222,10 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
             log.setActioner(LoginHelper.getUserId());
             log.setActionerType(OrderLogActionerTypeEnum.FULFILLER.getValue());
             log.setLogType(OrderLogTypeEnum.FULFILLER.getValue());
-            org.dromara.order.api.enums.OrderLogFulfillerStepEnum step = org.dromara.order.api.enums.OrderLogFulfillerStepEnum.REJECT;
+            OrderLogFulfillerStepEnum step = OrderLogFulfillerStepEnum.REJECT;
             log.setStep(step.getStep());
             log.setTitle(step.getTitle());
-            log.setContent(String.format(step.getContent(), loginUser.getNickname()));
+            log.setContent(String.format(step.getContent(), loginUser.getNickname(), bo.getReason()));
             log.setTenantId(subOrder.getTenantId());
         } else {
             log.setSubOrderId(subOrder.getId());
@@ -237,7 +235,7 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
             OrderLogSystemStepEnum step = OrderLogSystemStepEnum.CANCEL;
             log.setStep(step.getStep());
             log.setTitle(step.getTitle());
-            log.setContent(step.getContent());
+            log.setContent(String.format(step.getContent(), loginUser.getNickname(), bo.getReason()));
             log.setTenantId(subOrder.getTenantId());
         }
 
@@ -761,10 +759,10 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
         log.setActioner(LoginHelper.getUserId());
         log.setActionerType(OrderLogActionerTypeEnum.FULFILLER.getValue());
         log.setLogType(OrderLogTypeEnum.FULFILLER.getValue());
-        org.dromara.order.api.enums.OrderLogFulfillerStepEnum step = org.dromara.order.api.enums.OrderLogFulfillerStepEnum.REJECT;
+        OrderLogFulfillerStepEnum step = OrderLogFulfillerStepEnum.REJECT;
         log.setStep(step.getStep());
         log.setTitle(step.getTitle());
-        log.setContent(bo.getRejectReason());
+        log.setContent(String.format(step.getContent(), LoginHelper.getLoginUser().getNickname(), bo.getRejectReason()));
         log.setTenantId(subOrder.getTenantId());
         boolean logFlag = subOrderLogMapper.insert(log) == 0;
         if (logFlag) {
@@ -1007,6 +1005,7 @@ public class SysSubOrderServiceImpl implements ISysSubOrderService {
             RemoteCustomerVo customer = customerMap.get(e.getUsrCustomer());
             if (customer != null) {
                 vo.setCustomerName(customer.getName());
+                vo.setCustomerPhone(customer.getPhone());
             }
             vo.setToAddress(e.getToAddress());
             vo.setSite(e.getStoreSite());

+ 16 - 7
ruoyi-visual/ruoyi-nacos/src/main/resources/application.properties

@@ -40,13 +40,22 @@ spring.sql.init.platform=mysql
 db.num=1
 
 ### Connect URL of DB:
-#db.url.0=jdbc:mysql://116.62.136.107:4563/pet_system_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
-#db.user.0=pet_system_config
-#db.password.0=tfry6h6yrztNTw3e
-db.url.0=jdbc:mysql://127.0.0.1:3306/pet_system_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
-db.user.0=root
-db.password.0=1234
-# db.password.0=Yr7777777
+## Development
+
+# Local
+#db.url.0=jdbc:mysql://127.0.0.1:3306/pet_system_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
+#db.user.0=root
+#db.password.0=1234
+
+# Test
+db.url.0=jdbc:mysql://116.62.136.107:4563/pet_system_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
+db.user.0=pet_system_config
+db.password.0=tfry6h6yrztNTw3e
+
+## Production
+#db.url.0=jdbc:mysql://127.0.0.1:3306/pet_system_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
+#db.user.0=root
+#db.password.0=Yr7777777
 
 ### the maximum retry times for push
 nacos.config.push.maxRetryTime=50

+ 22 - 0
script/sql/business/create.sql

@@ -390,3 +390,25 @@ CREATE TABLE `pet_system`.`sys_customer_service_setting`
     `qr_code`                bigint COMMENT '二维码',
     `enterprise_wechat_link` varchar(512) COMMENT '企业微信链接'
 ) ENGINE = innoDB COMMENT = '客服配置信息表';
+
+CREATE TABLE pet_system.sys_notice
+(
+    id            bigint PRIMARY KEY NOT NULL COMMENT '序号',
+    sender_type   tinyint            NOT NULL COMMENT '发送方类型',
+    sender        bigint             NOT NULL COMMENT '发送方',
+    send_flag     boolean            NOT NULL DEFAULT false COMMENT '发送标识',
+    send_time     datetime COMMENT '发送时间',
+    type          tinyint            NOT NULL COMMENT '消息类型',
+    title         varchar(255)       NOT NULL COMMENT '标题',
+    content       varchar(2560)      NOT NULL COMMENT '内容',
+    receiver_type tinyint            NOT NULL COMMENT '接收方类型',
+    receiver      bigint             NOT NULL COMMENT '接收方',
+    read_flag     boolean            NOT NULL DEFAULT false COMMENT '已读标识',
+    read_time     datetime COMMENT '阅读时间',
+    del_flag      char(1)                     DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
+    create_dept   bigint(20) COMMENT '创建部门',
+    create_by     bigint(20) COMMENT '创建者',
+    create_time   datetime COMMENT '创建时间',
+    update_by     bigint(20) COMMENT '更新者',
+    update_time   datetime COMMENT '更新时间'
+) ENGINE = innoDB COMMENT = '系统通知信息表';