Procházet zdrojové kódy

系统配置基本完成

Huanyi před 2 týdny
rodič
revize
7c8ac39ee9
35 změnil soubory, kde provedl 877 přidání a 5 odebrání
  1. 2 0
      ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/RemoteSubOrderService.java
  2. 30 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java
  3. 4 0
      ruoyi-modules/ruoyi-job/pom.xml
  4. 37 0
      ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/OrderCancelTask.java
  5. 35 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysAppSettingController.java
  6. 35 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysCustomerServiceSettingController.java
  7. 35 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMapSettingController.java
  8. 35 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysWebsiteSettingController.java
  9. 18 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysAppSetting.java
  10. 28 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysCustomerServiceSetting.java
  11. 18 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysMapSetting.java
  12. 24 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysWebsiteSetting.java
  13. 31 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysAppSettingVo.java
  14. 37 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysCustomerServiceSettingVo.java
  15. 23 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysMapSettingVo.java
  16. 37 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysWebsiteSettingVo.java
  17. 8 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysAppSettingMapper.java
  18. 8 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysCustomerServiceSettingMapper.java
  19. 8 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMapSettingMapper.java
  20. 8 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysWebsiteSettingMapper.java
  21. 13 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysAppSettingService.java
  22. 11 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCustomerServiceSettingService.java
  23. 11 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysMapSettingService.java
  24. 11 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysWebsiteSettingService.java
  25. 31 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysAppSettingServiceImpl.java
  26. 35 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCustomerServiceSettingServiceImpl.java
  27. 35 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMapSettingServiceImpl.java
  28. 31 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysWebsiteSettingServiceImpl.java
  29. 29 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysOrderSettingController.java
  30. 16 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysOrderSetting.java
  31. 103 5
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteSubOrderServiceImpl.java
  32. 7 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/mapper/SysOrderSettingMapper.java
  33. 9 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysOrderSettingService.java
  34. 30 0
      ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/impl/SysOrderSettingServiceImpl.java
  35. 44 0
      script/sql/business/create.sql

+ 2 - 0
ruoyi-api/yingpaipay-api-order/src/main/java/org/dromara/order/api/RemoteSubOrderService.java

@@ -35,4 +35,6 @@ public interface RemoteSubOrderService {
     List<RemoteSubOrderVo> listAll();
 
     List<RemoteSubOrderVo> listAfterDateEnableTenant(Date firstDayOfMonth, String tenantId);
+
+    boolean timeoutCancel();
 }

+ 30 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java

@@ -151,4 +151,34 @@ public interface CacheNames {
      * @Author: Huanyi
      */
     String SYS_AGREEMENT = "sys_agreement#30d";
+
+    /**
+     * 网站配置
+     * @Author: Huanyi
+     */
+    String SYS_WEBSITE_SETTING = "sys_website_setting#30d";
+
+    /**
+     * 地图配置
+     * @Author: Huanyi
+     */
+    String SYS_MAP_SETTING = "sys_map_setting#30d";
+
+    /**
+     * APP配置
+     * @Author: Huanyi
+     */
+    String SYS_APP_SETTING = "sys_app_setting#30d";
+
+    /**
+     * 订单配置
+     * @Author: Huanyi
+     */
+    String SYS_ORDER_SETTING = "sys_order_setting#30d";
+
+    /***
+     * 客服配置
+     * @Author: Huanyi
+     */
+    String SYS_CUSTOMER_SERVICE_SETTING = "sys_customer_service_setting#30d";
 }

+ 4 - 0
ruoyi-modules/ruoyi-job/pom.xml

@@ -73,6 +73,10 @@
             <groupId>org.dromara</groupId>
             <artifactId>yingpaipay-api-fulfiller</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>yingpaipay-api-order</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 37 - 0
ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/OrderCancelTask.java

@@ -0,0 +1,37 @@
+package org.dromara.job.snailjob;
+
+import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
+import com.aizuda.snailjob.client.job.core.dto.JobArgs;
+import com.aizuda.snailjob.model.dto.ExecuteResult;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.order.api.RemoteSubOrderService;
+import org.springframework.stereotype.Component;
+
+@Component
+@JobExecutor(name = "orderCancelTask")
+@Slf4j
+public class OrderCancelTask {
+
+    @DubboReference
+    private RemoteSubOrderService remoteSubOrderService;
+
+    public ExecuteResult jobExecute(JobArgs jobArgs) {
+
+        log.info("开始进行门店到期状态任务");
+
+        try {
+            boolean flag = remoteSubOrderService.timeoutCancel();
+            if (!flag) {
+                return ExecuteResult.failure("门店到期任务执行失败");
+            }
+        } catch (Exception e) {
+            return ExecuteResult.failure("门店到期任务执行失败 : " + e);
+        }
+
+        log.info("结束门店到期状态任务");
+
+        return ExecuteResult.success("门店到期任务执行成功");
+    }
+
+}

+ 35 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysAppSettingController.java

@@ -0,0 +1,35 @@
+package org.dromara.system.controller.system;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.system.domain.SysAppSetting;
+import org.dromara.system.domain.vo.SysAppSettingVo;
+import org.dromara.system.service.ISysAppSettingService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/appSetting")
+@Slf4j
+public class SysAppSettingController extends BaseController {
+
+    private final ISysAppSettingService sysAppSettingService;
+
+    @GetMapping("/{id}")
+    public R<SysAppSettingVo> getInfo(@PathVariable Long id) {
+        return R.ok(sysAppSettingService.getById(id));
+    }
+
+    @RepeatSubmit()
+    @PutMapping("/edit")
+    public R<Void> edit(@RequestBody SysAppSetting e) {
+        return toAjax(sysAppSettingService.updateById(e) != null);
+    }
+
+}
+

+ 35 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysCustomerServiceSettingController.java

@@ -0,0 +1,35 @@
+package org.dromara.system.controller.system;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.system.domain.SysCustomerServiceSetting;
+import org.dromara.system.domain.vo.SysCustomerServiceSettingVo;
+import org.dromara.system.service.ISysCustomerServiceSettingService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/customerServiceSetting")
+@Slf4j
+public class SysCustomerServiceSettingController extends BaseController {
+
+    private final ISysCustomerServiceSettingService sysCustomerServiceSettingService;
+
+    @GetMapping("/{id}")
+    public R<SysCustomerServiceSettingVo> getInfo(@PathVariable Long id) {
+        return R.ok(sysCustomerServiceSettingService.getById(id));
+    }
+
+    @RepeatSubmit()
+    @PutMapping("/edit")
+    public R<Void> edit(@RequestBody SysCustomerServiceSetting e) {
+        return toAjax(sysCustomerServiceSettingService.updateById(e) != null);
+    }
+
+}
+

+ 35 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMapSettingController.java

@@ -0,0 +1,35 @@
+package org.dromara.system.controller.system;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.system.domain.SysMapSetting;
+import org.dromara.system.domain.vo.SysMapSettingVo;
+import org.dromara.system.service.ISysMapSettingService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/mapSetting")
+@Slf4j
+public class SysMapSettingController extends BaseController {
+
+    private final ISysMapSettingService sysMapSettingService;
+
+    @GetMapping("/{id}")
+    public R<SysMapSettingVo> getInfo(@PathVariable Long id) {
+        return R.ok(sysMapSettingService.getById(id));
+    }
+
+    @RepeatSubmit()
+    @PutMapping("/edit")
+    public R<Void> edit(@RequestBody SysMapSetting e) {
+        return toAjax(sysMapSettingService.updateById(e) != null);
+    }
+
+}
+

+ 35 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysWebsiteSettingController.java

@@ -0,0 +1,35 @@
+package org.dromara.system.controller.system;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.system.domain.SysWebsiteSetting;
+import org.dromara.system.domain.vo.SysWebsiteSettingVo;
+import org.dromara.system.service.ISysWebsiteSettingService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/websiteSetting")
+@Slf4j
+public class SysWebsiteSettingController extends BaseController {
+
+    private final ISysWebsiteSettingService sysWebsiteSettingService;
+
+    @GetMapping("/{id}")
+    public R<SysWebsiteSettingVo> getInfo(@PathVariable Long id) {
+        return R.ok(sysWebsiteSettingService.getById(id));
+    }
+
+    @RepeatSubmit()
+    @PutMapping("/edit")
+    public R<Void> edit(@RequestBody SysWebsiteSetting e) {
+        return toAjax(sysWebsiteSettingService.updateById(e) != null);
+    }
+
+}
+

+ 18 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysAppSetting.java

@@ -0,0 +1,18 @@
+package org.dromara.system.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("sys_app_setting")
+public class SysAppSetting {
+
+    @TableId(value = "id")
+    private Long id;
+
+    private Long loginIcon;
+
+    private Long loginBackground;
+
+}

+ 28 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysCustomerServiceSetting.java

@@ -0,0 +1,28 @@
+package org.dromara.system.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("sys_customer_service_setting")
+public class SysCustomerServiceSetting {
+
+    @TableId(value = "id")
+    private Long id;
+
+    private String wechatAccount;
+
+    private String phoneNumber;
+
+    private Date startServiceTime;
+
+    private Date endServiceTime;
+
+    private Long qrCode;
+
+    private String enterpriseWechatLink;
+
+}

+ 18 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysMapSetting.java

@@ -0,0 +1,18 @@
+package org.dromara.system.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("sys_map_setting")
+public class SysMapSetting {
+
+    @TableId(value = "id")
+    private Long id;
+
+    private String apiKey;
+
+    private String apiSecret;
+
+}

+ 24 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysWebsiteSetting.java

@@ -0,0 +1,24 @@
+package org.dromara.system.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("sys_website_setting")
+public class SysWebsiteSetting {
+
+    @TableId(value = "id")
+    private Long id;
+
+    private Long icon;
+
+    private String title;
+
+    private String loginTitle;
+
+    private Long loginBackground;
+
+    private String menuTitle;
+
+}

+ 31 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysAppSettingVo.java

@@ -0,0 +1,31 @@
+package org.dromara.system.domain.vo;
+
+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.SysAppSetting;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+@AutoMapper(target = SysAppSetting.class)
+public class SysAppSettingVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private Long loginIcon;
+
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "loginIcon")
+    private String loginIconUrl;
+
+    private Long loginBackground;
+
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "loginBackground")
+    private String loginBackgroundUrl;
+
+}

+ 37 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysCustomerServiceSettingVo.java

@@ -0,0 +1,37 @@
+package org.dromara.system.domain.vo;
+
+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.SysCustomerServiceSetting;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@AutoMapper(target = SysCustomerServiceSetting.class)
+public class SysCustomerServiceSettingVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String wechatAccount;
+
+    private String phoneNumber;
+
+    private Date startServiceTime;
+
+    private Date endServiceTime;
+
+    private Long qrCode;
+
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "qrCode")
+    private String qrCodeUrl;
+
+    private String enterpriseWechatLink;
+
+}

+ 23 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysMapSettingVo.java

@@ -0,0 +1,23 @@
+package org.dromara.system.domain.vo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.system.domain.SysMapSetting;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+@AutoMapper(target = SysMapSetting.class)
+public class SysMapSettingVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String apiKey;
+
+    private String apiSecret;
+
+}

+ 37 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysWebsiteSettingVo.java

@@ -0,0 +1,37 @@
+package org.dromara.system.domain.vo;
+
+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.SysWebsiteSetting;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+@AutoMapper(target = SysWebsiteSetting.class)
+public class SysWebsiteSettingVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private Long icon;
+
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "icon")
+    private String iconUrl;
+
+    private String title;
+
+    private String loginTitle;
+
+    private Long loginBackground;
+
+    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "loginBackground")
+    private String loginBackgroundUrl;
+
+    private String menuTitle;
+
+}

+ 8 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysAppSettingMapper.java

@@ -0,0 +1,8 @@
+package org.dromara.system.mapper;
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.system.domain.SysAppSetting;
+import org.dromara.system.domain.vo.SysAppSettingVo;
+
+public interface SysAppSettingMapper extends BaseMapperPlus<SysAppSetting, SysAppSettingVo> {
+}

+ 8 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysCustomerServiceSettingMapper.java

@@ -0,0 +1,8 @@
+package org.dromara.system.mapper;
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.system.domain.SysCustomerServiceSetting;
+import org.dromara.system.domain.vo.SysCustomerServiceSettingVo;
+
+public interface SysCustomerServiceSettingMapper extends BaseMapperPlus<SysCustomerServiceSetting, SysCustomerServiceSettingVo> {
+}

+ 8 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMapSettingMapper.java

@@ -0,0 +1,8 @@
+package org.dromara.system.mapper;
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.system.domain.SysMapSetting;
+import org.dromara.system.domain.vo.SysMapSettingVo;
+
+public interface SysMapSettingMapper extends BaseMapperPlus<SysMapSetting, SysMapSettingVo> {
+}

+ 8 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysWebsiteSettingMapper.java

@@ -0,0 +1,8 @@
+package org.dromara.system.mapper;
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.system.domain.SysWebsiteSetting;
+import org.dromara.system.domain.vo.SysWebsiteSettingVo;
+
+public interface SysWebsiteSettingMapper extends BaseMapperPlus<SysWebsiteSetting, SysWebsiteSettingVo> {
+}

+ 13 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysAppSettingService.java

@@ -0,0 +1,13 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.SysAppSetting;
+import org.dromara.system.domain.SysWebsiteSetting;
+import org.dromara.system.domain.vo.SysAppSettingVo;
+import org.dromara.system.domain.vo.SysWebsiteSettingVo;
+
+public interface ISysAppSettingService {
+
+    SysAppSettingVo getById(Long id);
+
+    SysAppSettingVo updateById(SysAppSetting e);
+}

+ 11 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysCustomerServiceSettingService.java

@@ -0,0 +1,11 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.SysCustomerServiceSetting;
+import org.dromara.system.domain.vo.SysCustomerServiceSettingVo;
+
+public interface ISysCustomerServiceSettingService {
+
+    SysCustomerServiceSettingVo getById(Long id);
+
+    SysCustomerServiceSettingVo updateById(SysCustomerServiceSetting e);
+}

+ 11 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysMapSettingService.java

@@ -0,0 +1,11 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.SysMapSetting;
+import org.dromara.system.domain.vo.SysMapSettingVo;
+
+public interface ISysMapSettingService {
+
+    SysMapSettingVo getById(Long id);
+
+    SysMapSettingVo updateById(SysMapSetting bo);
+}

+ 11 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysWebsiteSettingService.java

@@ -0,0 +1,11 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.SysWebsiteSetting;
+import org.dromara.system.domain.vo.SysWebsiteSettingVo;
+
+public interface ISysWebsiteSettingService {
+
+    SysWebsiteSettingVo getById(Long id);
+
+    SysWebsiteSettingVo updateById(SysWebsiteSetting e);
+}

+ 31 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysAppSettingServiceImpl.java

@@ -0,0 +1,31 @@
+package org.dromara.system.service.impl;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.constant.CacheNames;
+import org.dromara.system.domain.SysAppSetting;
+import org.dromara.system.domain.vo.SysAppSettingVo;
+import org.dromara.system.mapper.SysAppSettingMapper;
+import org.dromara.system.service.ISysAppSettingService;
+import org.springframework.cache.annotation.CachePut;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class SysAppSettingServiceImpl implements ISysAppSettingService {
+
+    private final SysAppSettingMapper baseMapper;
+
+    @Cacheable(cacheNames = CacheNames.SYS_APP_SETTING, key = "#id")
+    @Override
+    public SysAppSettingVo getById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    @CachePut(cacheNames = CacheNames.SYS_APP_SETTING, key = "#e.id")
+    @Override
+    public SysAppSettingVo updateById(SysAppSetting e) {
+        baseMapper.updateById(e);
+        return baseMapper.selectVoById(e.getId());
+    }
+}

+ 35 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysCustomerServiceSettingServiceImpl.java

@@ -0,0 +1,35 @@
+package org.dromara.system.service.impl;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.constant.CacheNames;
+import org.dromara.system.domain.SysAppSetting;
+import org.dromara.system.domain.SysCustomerServiceSetting;
+import org.dromara.system.domain.vo.SysAppSettingVo;
+import org.dromara.system.domain.vo.SysCustomerServiceSettingVo;
+import org.dromara.system.mapper.SysAppSettingMapper;
+import org.dromara.system.mapper.SysCustomerServiceSettingMapper;
+import org.dromara.system.service.ISysAppSettingService;
+import org.dromara.system.service.ISysCustomerServiceSettingService;
+import org.springframework.cache.annotation.CachePut;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class SysCustomerServiceSettingServiceImpl implements ISysCustomerServiceSettingService {
+
+    private final SysCustomerServiceSettingMapper baseMapper;
+
+    @Cacheable(cacheNames = CacheNames.SYS_CUSTOMER_SERVICE_SETTING, key = "#id")
+    @Override
+    public SysCustomerServiceSettingVo getById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    @CachePut(cacheNames = CacheNames.SYS_CUSTOMER_SERVICE_SETTING, key = "#e.id")
+    @Override
+    public SysCustomerServiceSettingVo updateById(SysCustomerServiceSetting e) {
+        baseMapper.updateById(e);
+        return baseMapper.selectVoById(e.getId());
+    }
+}

+ 35 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMapSettingServiceImpl.java

@@ -0,0 +1,35 @@
+package org.dromara.system.service.impl;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.constant.CacheNames;
+import org.dromara.system.domain.SysMapSetting;
+import org.dromara.system.domain.vo.SysMapSettingVo;
+import org.dromara.system.mapper.SysMapSettingMapper;
+import org.dromara.system.service.ISysMapSettingService;
+import org.springframework.cache.annotation.CachePut;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class SysMapSettingServiceImpl implements ISysMapSettingService {
+
+    private final SysMapSettingMapper baseMapper;
+
+    @Cacheable(cacheNames = CacheNames.SYS_MAP_SETTING, key = "#id")
+    @Override
+    public SysMapSettingVo getById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    @CachePut(cacheNames = CacheNames.SYS_MAP_SETTING, key = "#e.id")
+    @Override
+    public SysMapSettingVo updateById(SysMapSetting e) {
+        baseMapper.updateById(e);
+        SysMapSettingVo vo = baseMapper.selectVoById(e.getId());
+        log.info("实体 : {}\nvo : {}", e, vo);
+        return vo;
+    }
+}

+ 31 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysWebsiteSettingServiceImpl.java

@@ -0,0 +1,31 @@
+package org.dromara.system.service.impl;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.constant.CacheNames;
+import org.dromara.system.domain.SysWebsiteSetting;
+import org.dromara.system.domain.vo.SysWebsiteSettingVo;
+import org.dromara.system.mapper.SysWebsiteSettingMapper;
+import org.dromara.system.service.ISysWebsiteSettingService;
+import org.springframework.cache.annotation.CachePut;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class SysWebsiteSettingServiceImpl implements ISysWebsiteSettingService {
+
+    private final SysWebsiteSettingMapper baseMapper;
+
+    @Cacheable(cacheNames = CacheNames.SYS_WEBSITE_SETTING, key = "#id")
+    @Override
+    public SysWebsiteSettingVo getById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    @CachePut(cacheNames = CacheNames.SYS_WEBSITE_SETTING, key = "#e.id")
+    @Override
+    public SysWebsiteSettingVo updateById(SysWebsiteSetting e) {
+        baseMapper.updateById(e);
+        return baseMapper.selectVoById(e.getId());
+    }
+}

+ 29 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/controller/SysOrderSettingController.java

@@ -0,0 +1,29 @@
+package org.dromara.order.controller;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.order.domain.SysOrderSetting;
+import org.dromara.order.service.ISysOrderSettingService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/setting")
+public class SysOrderSettingController extends BaseController {
+
+    private final ISysOrderSettingService sysOrderSettingService;
+
+    @GetMapping("/{id}")
+    public R<SysOrderSetting> getInfo(@PathVariable Long id) {
+        return R.ok(sysOrderSettingService.getById(id));
+    }
+
+    @PutMapping("/edit")
+    public R<Void> edit(@RequestBody SysOrderSetting e) {
+        return toAjax(sysOrderSettingService.updateById(e) != null);
+    }
+
+}

+ 16 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/domain/SysOrderSetting.java

@@ -0,0 +1,16 @@
+package org.dromara.order.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("sys_order_setting")
+public class SysOrderSetting {
+
+    @TableId(value = "id")
+    private Long id;
+
+    private Long timeoutCancelTime;
+
+}

+ 103 - 5
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/dubbo/RemoteSubOrderServiceImpl.java

@@ -4,20 +4,27 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.dromara.common.core.constant.CacheNames;
+import org.dromara.common.core.constant.SystemConstants;
 import org.dromara.common.core.utils.DateUtils;
 import org.dromara.order.api.RemoteSubOrderService;
 import org.dromara.order.api.domain.vo.RemoteSubOrderVo;
+import org.dromara.order.api.enums.*;
+import org.dromara.order.domain.SysOrderSetting;
 import org.dromara.order.domain.SysSubOrder;
-import org.dromara.order.api.enums.OrderStatusEnum;
+import org.dromara.order.domain.SysSubOrderLog;
+import org.dromara.order.mapper.SysSubOrderLogMapper;
 import org.dromara.order.mapper.SysSubOrderMapper;
+import org.dromara.order.service.ISysOrderSettingService;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
 
 @DubboService
 @RequiredArgsConstructor
@@ -25,6 +32,9 @@ import java.util.concurrent.atomic.AtomicLong;
 public class RemoteSubOrderServiceImpl implements RemoteSubOrderService {
 
     private final SysSubOrderMapper baseMapper;
+    private final SysSubOrderLogMapper subOrderLogMapper;
+
+    private final ISysOrderSettingService sysOrderSettingService;
 
     @Override
     public List<Long> getIdsByCode(String code) {
@@ -291,4 +301,92 @@ public class RemoteSubOrderServiceImpl implements RemoteSubOrderService {
 
         return vos;
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public boolean timeoutCancel() {
+
+        SysOrderSetting setting = sysOrderSettingService.getById(1L);
+        long timeout = setting.getTimeoutCancelTime();
+
+        List<SysSubOrder> orders = baseMapper.selectList(
+            Wrappers.lambdaQuery(SysSubOrder.class)
+                .eq(SysSubOrder::getStatus, OrderStatusEnum.PENDING_ACCEPT.getValue())
+        );
+        if (orders.isEmpty()) {
+            return true;
+        }
+
+        List<Long> orderIds = new ArrayList<>();
+        orders.forEach(e -> orderIds.add(e.getId()));
+        Map<Long, List<SysSubOrderLog>> logMap = subOrderLogMapper.selectList(
+            Wrappers.lambdaQuery(SysSubOrderLog.class)
+                .in(SysSubOrderLog::getSubOrderId, orderIds)
+                .eq(SysSubOrderLog::getActionerType, OrderLogActionerTypeEnum.SYS_USER.getValue())
+                .eq(SysSubOrderLog::getStep, OrderLogSystemStepEnum.DISPATCH.getStep())
+                .orderByDesc(SysSubOrderLog::getId)
+        ).stream()
+            .collect(Collectors.groupingBy(SysSubOrderLog::getSubOrderId));
+
+        List<SysSubOrder> cancels = new ArrayList<>();
+
+        for (SysSubOrder order : orders) {
+
+            List<SysSubOrderLog> logs = logMap.get(order.getId());
+
+            if (logs == null || logs.isEmpty()) {
+                continue;
+            }
+
+            SysSubOrderLog log = logs.get(0);
+            if (log.getCreateTime() != null) {
+                Date createTime = log.getCreateTime();
+
+                LocalDateTime time = createTime.toInstant()
+                    .atZone(ZoneId.systemDefault())
+                    .toLocalDateTime();
+
+                long mins = Duration.between(time, LocalDateTime.now()).toMinutes();
+
+                if (mins > timeout) {
+                    order.setStatus(OrderStatusEnum.CANCELLED.getValue());
+                    cancels.add(order);
+                }
+
+            }
+
+        }
+
+        if (!cancels.isEmpty()) {
+
+            List<SysSubOrderLog> logs = new ArrayList<>();
+            cancels.forEach(order -> {
+                SysSubOrderLog log = new SysSubOrderLog();
+                log.setSubOrderId(order.getId());
+                log.setActioner(SystemConstants.SUPER_ADMIN_ID);
+                log.setActionerType(OrderLogActionerTypeEnum.SYS_USER.getValue());
+                log.setLogType(OrderLogTypeEnum.ORDER.getValue());
+                log.setStep(OrderLogSystemStepEnum.CANCEL.getStep());
+                log.setTitle("超时取消");
+                log.setContent("履约者超过" + timeout + "分钟未结单,系统自动取消");
+                log.setTenantId(order.getTenantId());
+                log.setCreateBy(SystemConstants.SUPER_ADMIN_ID);
+                log.setCreateTime(new Date());
+                logs.add(log);
+            });
+
+            boolean orderFlag = baseMapper.updateBatchById(cancels);
+            if (!orderFlag) {
+                throw new RuntimeException("批量修改状态失败");
+            }
+
+            boolean logFlag = subOrderLogMapper.insertBatch(logs);
+            if (!logFlag) {
+                throw new RuntimeException("批量新增日志失败");
+            }
+
+        }
+
+        return true;
+    }
 }

+ 7 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/mapper/SysOrderSettingMapper.java

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

+ 9 - 0
ruoyi-modules/yingpaipay-order/src/main/java/org/dromara/order/service/ISysOrderSettingService.java

@@ -0,0 +1,9 @@
+package org.dromara.order.service;
+
+import org.dromara.order.domain.SysOrderSetting;
+
+public interface ISysOrderSettingService {
+    SysOrderSetting getById(Long id);
+
+    SysOrderSetting updateById(SysOrderSetting e);
+}

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

@@ -0,0 +1,30 @@
+package org.dromara.order.service.impl;
+
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.constant.CacheNames;
+import org.dromara.order.domain.SysOrderSetting;
+import org.dromara.order.mapper.SysOrderSettingMapper;
+import org.dromara.order.service.ISysOrderSettingService;
+import org.springframework.cache.annotation.CachePut;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class SysOrderSettingServiceImpl implements ISysOrderSettingService {
+
+    private final SysOrderSettingMapper baseMapper;
+
+    @Cacheable(cacheNames = CacheNames.SYS_ORDER_SETTING, key = "#id")
+    @Override
+    public SysOrderSetting getById(Long id) {
+        return baseMapper.selectById(id);
+    }
+
+    @CachePut(cacheNames = CacheNames.SYS_ORDER_SETTING, key = "#e.id")
+    @Override
+    public SysOrderSetting updateById(SysOrderSetting e) {
+        baseMapper.updateById(e);
+        return baseMapper.selectById(e.getId());
+    }
+}

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

@@ -346,3 +346,47 @@ CREATE TABLE `pet_system`.`sys_agreement`
     `fulfiller_explanation_title`   varchar(64)        NOT NULL DEFAULT '' COMMENT '履约者说明标题',
     `fulfiller_explanation_content` text               NOT NULL COMMENT '履约者说明内容'
 ) ENGINE = innoDB COMMENT = '等级配置信息表';
+
+CREATE TABLE `pet_system`.`sys_website_setting`
+(
+    `id`               bigint PRIMARY KEY NOT NULL COMMENT '序号',
+
+    `icon`             bigint             NOT NULL COMMENT '网站图标',
+    `title`            varchar(32)        NOT NULL COMMENT '网站标题',
+
+    `login_title`      varchar(32)        NOT NULL COMMENT '登录页',
+    `login_background` bigint             NOT NULL COMMENT '登录页背景',
+
+    `menu_title`       varchar(32)        NOT NULL COMMENT '菜单标题'
+) ENGINE = innoDB COMMENT = '网站配置信息表';
+
+CREATE TABLE `pet_system`.`sys_app_setting`
+(
+    `id`               bigint PRIMARY KEY NOT NULL COMMENT '序号',
+    `login_icon`       bigint             NOT NULL COMMENT '登录页图标',
+    `login_background` bigint             NOT NULL COMMENT '登录页背景'
+) ENGINE = innoDB COMMENT = 'APP配置信息表';
+
+CREATE TABLE `pet_system`.`sys_map_setting`
+(
+    `id`     bigint PRIMARY KEY NOT NULL COMMENT '序号',
+    `key`    varchar(255) COMMENT 'KEY',
+    `secret` varchar(255) COMMENT '安全密钥'
+) ENGINE = innoDB COMMENT = '地图配置信息表';
+
+CREATE TABLE `pet_system`.`sys_order_setting`
+(
+    `id`                  bigint PRIMARY KEY NOT NULL COMMENT '序号',
+    `timeout_cancel_time` bigint COMMENT '超时自动取消时间'
+) ENGINE = innoDB COMMENT = '订单配置信息表';
+
+CREATE TABLE `pet_system`.`sys_customer_service_setting`
+(
+    `id`                     bigint PRIMARY KEY NOT NULL COMMENT '序号',
+    `wechat_account`         varchar(64) COMMENT '微信号',
+    `phone_number`           varchar(32) COMMENT '联系电话',
+    `start_service_time`     time COMMENT '开始服务时间',
+    `end_service_time`       time COMMENT '结束服务时间',
+    `qr_code`                bigint COMMENT '二维码',
+    `enterprise_wechat_link` varchar(512) COMMENT '企业微信链接'
+) ENGINE = innoDB COMMENT = '客服配置信息表';