Bläddra i källkod

Accept Merge Request #24: (dev-minio -> dev-lzl)

Merge Request: 合并

Created By: @刘子麟
Accepted By: @刘子麟
URL: https://chuanghaikeji.coding.net/p/moxuanyunshangwaimai/d/backend/git/merge/24
刘子麟 1 år sedan
förälder
incheckning
080a94e363
31 ändrade filer med 664 tillägg och 326 borttagningar
  1. 0 38
      db/insert_241011.sql
  2. 0 5
      db/insert_241014.sql
  3. 0 4
      db/update_241014.sql
  4. 26 0
      db/update_241015.sql
  5. 5 0
      src/main/java/com/sqx/common/constant/RedisKey.java
  6. 2 0
      src/main/java/com/sqx/modules/app/dao/UserMoneyDetailsDao.java
  7. 8 0
      src/main/java/com/sqx/modules/app/service/UserMoneyDetailsService.java
  8. 45 7
      src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java
  9. 3 0
      src/main/java/com/sqx/modules/datacentre/dao/DataCentreDao.java
  10. 38 0
      src/main/java/com/sqx/modules/datacentre/query/RankListQuery.java
  11. 3 0
      src/main/java/com/sqx/modules/datacentre/service/DataCentreService.java
  12. 26 1
      src/main/java/com/sqx/modules/datacentre/service/impl/DataCentreServiceImpl.java
  13. 2 4
      src/main/java/com/sqx/modules/errand/dto/SmsLogQueryDTO.java
  14. 1 2
      src/main/java/com/sqx/modules/errand/entity/TbIndent.java
  15. 3 0
      src/main/java/com/sqx/modules/errand/entity/TbIndentSmsSendLog.java
  16. 16 2
      src/main/java/com/sqx/modules/errand/service/impl/TbIndentServiceImpl.java
  17. 89 64
      src/main/java/com/sqx/modules/exportExecl/controller/ExportExeclController.java
  18. 39 0
      src/main/java/com/sqx/modules/exportExecl/dto/AccountEntry.java
  19. 4 2
      src/main/java/com/sqx/modules/order/dao/AppOrderDao.java
  20. 1 1
      src/main/java/com/sqx/modules/order/service/AppOrderService.java
  21. 157 142
      src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java
  22. 8 8
      src/main/java/com/sqx/modules/pay/controller/query/CashOutQueryDTO.java
  23. 3 1
      src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java
  24. 7 7
      src/main/java/com/sqx/modules/utils/fieYun/FeiYunUtils.java
  25. 2 2
      src/main/java/com/sqx/scheduler/config/ScheduledConfig.java
  26. 39 15
      src/main/java/com/sqx/scheduler/export/ExportScheduler.java
  27. 13 16
      src/main/java/com/sqx/scheduler/order/OrderScheduler.java
  28. 32 0
      src/main/resources/mapper/dataCentre/dataCenterMapper.xml
  29. 10 3
      src/main/resources/mapper/order/OrderMapper.xml
  30. 4 2
      src/main/resources/mapper/pay/CashDao.xml
  31. 78 0
      src/main/resources/mapper/userMoney/UserMoneyDetailsMapper.xml

+ 0 - 38
db/insert_241011.sql

@@ -1,41 +0,0 @@
-/*
- Navicat Premium Data Transfer
-
- Source Server         : 外卖测试108
- Source Server Type    : MySQL
- Source Server Version : 50744
- Source Host           : 172.16.20.108:3306
- Source Schema         : tcwm2.5
-
- Target Server Type    : MySQL
- Target Server Version : 50744
- File Encoding         : 65001
-
- Date: 11/10/2024 11:13:33
-*/
-
-SET NAMES utf8mb4;
-SET FOREIGN_KEY_CHECKS = 0;
-
-DROP TABLE IF EXISTS `print_info_detail`;
-CREATE TABLE `print_info_detail`  (
-  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '打印信息id',
-  `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单编号',
-  `order_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '打印时订单状态',
-  `is_append` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '打印状态是否补打',
-  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
-  `delete_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '删除标识;0未删除、1已删除',
-  PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-
-SET FOREIGN_KEY_CHECKS = 1;
-
-
-ALTER TABLE `tcwm2.5`.`tb_order`
-ADD COLUMN `is_print` int(32) NULL COMMENT '打印状态  已打印:1 未打印:0' AFTER `order_sequence`;
-
-
-update tb_order set is_print = 0;

+ 0 - 5
db/insert_241014.sql

@@ -1,6 +0,0 @@
-CREATE TABLE rider_station
-(
-    id           INT AUTO_INCREMENT PRIMARY KEY,
-    station_name VARCHAR(100)
-);

+ 0 - 4
db/update_241014.sql

@@ -1,6 +0,0 @@
-
-ALTER TABLE tb_user ADD rider_station_id int;
-
-ALTER TABLE tb_order ADD INDEX order_number_index (order_number);

+ 26 - 0
db/update_241015.sql

@@ -0,0 +1,26 @@
+DROP TABLE IF EXISTS `print_info_detail`;
+CREATE TABLE `print_info_detail`  (
+    `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '打印信息id',
+    `order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单编号',
+    `order_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '打印时订单状态',
+    `is_append` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '打印状态是否补打',
+    `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
+    `delete_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '删除标识;0未删除、1已删除',
+    PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 27 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+DROP TABLE IF EXISTS rider_station;
+CREATE TABLE rider_station
+(
+    id           INT AUTO_INCREMENT PRIMARY KEY,
+    station_name VARCHAR(100)
+);
+
+ALTER TABLE `tb_order` ADD COLUMN `is_print` int(32) NULL COMMENT '打印状态  已打印:1 未打印:0' AFTER `order_sequence`;
+update tb_order set is_print = 0;
+
+-- 用户表增加站点id字段
+ALTER TABLE tb_user ADD rider_station_id int;
+
+-- 给tb_order添加order_number索引
+ALTER TABLE tb_order ADD INDEX order_number_index (order_number);

+ 5 - 0
src/main/java/com/sqx/common/constant/RedisKey.java

@@ -34,6 +34,11 @@ public interface RedisKey {
     String PAY_ORDER_LOCK = "wm:lock:order:pay:%s";
     String PAY_ORDER_LOCK = "wm:lock:order:pay:%s";
 
 
     /**
     /**
+     * 订单序号锁 按店铺获取锁
+     */
+    String ORDER_SEQUENCE_LOCK = "wm:lock:order:sequence:%s";
+
+    /**
      * 提现锁
      * 提现锁
      */
      */
     String CASH_OUT_LOCK = "wm:lock:cash:out:%s";
     String CASH_OUT_LOCK = "wm:lock:cash:out:%s";

+ 2 - 0
src/main/java/com/sqx/modules/app/dao/UserMoneyDetailsDao.java

@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sqx.modules.app.entity.UserMoneyDetails;
 import com.sqx.modules.app.entity.UserMoneyDetails;
+import com.sqx.modules.exportExecl.dto.AccountEntry;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.WalletDetailQuery;
 import com.sqx.modules.pay.controller.query.WalletDetailQuery;
 import com.sqx.modules.pay.vo.CashOutVO;
 import com.sqx.modules.pay.vo.CashOutVO;
@@ -44,4 +45,5 @@ public interface UserMoneyDetailsDao extends BaseMapper<UserMoneyDetails> {
                                            @Param("userPhone") String userPhone, @Param("couponName") String couponName,
                                            @Param("userPhone") String userPhone, @Param("couponName") String couponName,
                                            @Param("orderNumber") String orderNumber, @Param("startTime") String startTime, @Param("endTime") String endTime);
                                            @Param("orderNumber") String orderNumber, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
 
+    List<UserMoneyDetails> excelAccountEntry(@Param("query") AccountEntry query);
 }
 }

+ 8 - 0
src/main/java/com/sqx/modules/app/service/UserMoneyDetailsService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.Result;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.app.entity.UserMoneyDetails;
 import com.sqx.modules.app.entity.UserMoneyDetails;
+import com.sqx.modules.exportExecl.dto.AccountEntry;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.WalletDetailQuery;
 import com.sqx.modules.pay.controller.query.WalletDetailQuery;
 import com.sqx.modules.utils.excel.ExcelData;
 import com.sqx.modules.utils.excel.ExcelData;
@@ -54,4 +55,11 @@ public interface UserMoneyDetailsService extends IService<UserMoneyDetails> {
      */
      */
     PageUtils accountEntryManagementDetails(Integer page, Integer limit, String shopName, String shopPhone, String userPhone, String couponName, String orderNumber, String startTime, String endTime);
     PageUtils accountEntryManagementDetails(Integer page, Integer limit, String shopName, String shopPhone, String userPhone, String couponName, String orderNumber, String startTime, String endTime);
 
 
+    /**
+     * 入账管理导出
+     * @param query
+     * @return
+     */
+    ExcelData excelAccountEntry(AccountEntry query);
+
 }
 }

+ 45 - 7
src/main/java/com/sqx/modules/app/service/impl/UserMoneyDetailsServiceImpl.java

@@ -11,13 +11,7 @@ import com.sqx.common.utils.Result;
 import com.sqx.modules.app.dao.UserMoneyDetailsDao;
 import com.sqx.modules.app.dao.UserMoneyDetailsDao;
 import com.sqx.modules.app.entity.UserMoneyDetails;
 import com.sqx.modules.app.entity.UserMoneyDetails;
 import com.sqx.modules.app.service.UserMoneyDetailsService;
 import com.sqx.modules.app.service.UserMoneyDetailsService;
-import com.sqx.modules.common.dao.CommonInfoDao;
-import com.sqx.modules.common.entity.CommonInfo;
-import com.sqx.modules.common.service.CommonInfoService;
-import com.sqx.modules.errand.entity.TbIndent;
-import com.sqx.modules.errand.entity.TbIndentSmsSendLog;
-import com.sqx.modules.errand.service.TbIndentService;
-import com.sqx.modules.errand.service.TbIndentSmsSendLogService;
+import com.sqx.modules.exportExecl.dto.AccountEntry;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.WalletDetailQuery;
 import com.sqx.modules.pay.controller.query.WalletDetailQuery;
 import com.sqx.modules.pay.vo.CashOutVO;
 import com.sqx.modules.pay.vo.CashOutVO;
@@ -205,4 +199,48 @@ public class UserMoneyDetailsServiceImpl extends ServiceImpl<UserMoneyDetailsDao
         System.out.println("list = " + list);
         System.out.println("list = " + list);
         return pageUtils;
         return pageUtils;
     }
     }
+
+    /**
+     * @param query
+     * @return
+     */
+    @Override
+    public ExcelData excelAccountEntry(AccountEntry query) {
+        List<UserMoneyDetails> userMoneyDetailsList = baseMapper.excelAccountEntry(query);
+        ExcelData data = new ExcelData();
+        data.setName("入账管理");
+        List<String> titleList=Arrays.asList(
+                "编号",
+                "店铺名称",
+                "店铺手机号",
+                "下单用户",
+                "用户手机号",
+                "标题",
+                "优惠活动标题",
+                "优惠活动金额",
+                "跑腿费",
+                "订单号",
+                "金额",
+                "创建时间");
+        data.setTitles(titleList);
+        List<List<Object>> rows = new ArrayList<>();
+        for (UserMoneyDetails userMoneyDetails:userMoneyDetailsList ){
+            List<Object> row = new ArrayList<>();
+            row.add(userMoneyDetails.getId());
+            row.add(userMoneyDetails.getShopName());
+            row.add(userMoneyDetails.getShopPhone());
+            row.add(userMoneyDetails.getUserName());
+            row.add(userMoneyDetails.getUserPhone());
+            row.add(userMoneyDetails.getTitle());
+            row.add(userMoneyDetails.getCouponName());
+            row.add(userMoneyDetails.getCouponMoney());
+            row.add(userMoneyDetails.getErrandMoney());
+            row.add(userMoneyDetails.getOrderNumber()+"");
+            row.add(userMoneyDetails.getMoney());
+            row.add(userMoneyDetails.getCreateTime());
+            rows.add(row);
+        }
+        data.setRows(rows);
+        return data;
+    }
 }
 }

+ 3 - 0
src/main/java/com/sqx/modules/datacentre/dao/DataCentreDao.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sqx.modules.app.entity.UserEntity;
 import com.sqx.modules.app.entity.UserEntity;
 import com.sqx.modules.app.entity.UserMoneyDetails;
 import com.sqx.modules.app.entity.UserMoneyDetails;
 import com.sqx.modules.datacentre.query.DataCenterQuery;
 import com.sqx.modules.datacentre.query.DataCenterQuery;
+import com.sqx.modules.datacentre.query.RankListQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.errand.entity.Feedback;
 import com.sqx.modules.errand.entity.Feedback;
 import com.sqx.modules.errand.entity.TbIndent;
 import com.sqx.modules.errand.entity.TbIndent;
@@ -99,4 +100,6 @@ public interface DataCentreDao {
     BigDecimal cancelOrderMoney(@Param("query") DataCenterQuery query);
     BigDecimal cancelOrderMoney(@Param("query") DataCenterQuery query);
 
 
     List<TbOrder> excelShopCenter(@Param("query")ShopCenterQuery query);
     List<TbOrder> excelShopCenter(@Param("query")ShopCenterQuery query);
+
+    List<TbIndent> excelRankList(@Param("query") RankListQuery query);
 }
 }

+ 38 - 0
src/main/java/com/sqx/modules/datacentre/query/RankListQuery.java

@@ -0,0 +1,38 @@
+package com.sqx.modules.datacentre.query;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.util.StringUtils;
+
+import javax.validation.constraints.Pattern;
+
+@Data
+public class RankListQuery extends DataCenterQuery {
+
+    @ApiModelProperty(value = "地区")
+    private String address;
+
+    @ApiModelProperty(value = "骑手站点id")
+    private String riderStationId;
+
+    @ApiModelProperty(value = "登录人id")
+    private String userId;
+
+    public String toStrMessage() {
+        StringBuilder stringBuilder=new StringBuilder();
+        stringBuilder
+                .append(StringUtils.hasText(address)?"商铺类型编号:"+address+";":"")
+                .append(StringUtils.hasText(getDateType())?"日期类型:"+getDateType()+";":"")
+                .append(StringUtils.hasText(getDate())?"日期:"+getDate()+";":"");
+        return stringBuilder.toString();
+    }
+
+    public String toStrCode() {
+        return
+                ","+(address==null?"":address)
+                +","+(getDateType()==null?"":getDateType())
+                +","+(getDate()==null?"":getDate())
+                +","+(riderStationId==null?"":riderStationId)
+                +",";
+    }
+}

+ 3 - 0
src/main/java/com/sqx/modules/datacentre/service/DataCentreService.java

@@ -3,6 +3,7 @@ package com.sqx.modules.datacentre.service;
 import com.sqx.common.utils.Result;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.app.entity.UserEntity;
 import com.sqx.modules.app.entity.UserEntity;
 import com.sqx.modules.datacentre.query.DataCenterQuery;
 import com.sqx.modules.datacentre.query.DataCenterQuery;
+import com.sqx.modules.datacentre.query.RankListQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.utils.excel.ExcelData;
 import com.sqx.modules.utils.excel.ExcelData;
@@ -33,6 +34,8 @@ public interface DataCentreService {
 
 
     ExcelData excelShopCenter(ShopCenterQuery queryDTO);
     ExcelData excelShopCenter(ShopCenterQuery queryDTO);
 
 
+    ExcelData excelRankingList(RankListQuery queryDTO);
+
     Result selectUserCenter(DataCenterQuery query);
     Result selectUserCenter(DataCenterQuery query);
 
 
     Result selectUserFeedback(String userEmail, Integer page, Integer limit);
     Result selectUserFeedback(String userEmail, Integer page, Integer limit);

+ 26 - 1
src/main/java/com/sqx/modules/datacentre/service/impl/DataCentreServiceImpl.java

@@ -17,6 +17,7 @@ import com.sqx.modules.coupon.dao.TbCouponUserDao;
 import com.sqx.modules.coupon.entity.TbCouponUser;
 import com.sqx.modules.coupon.entity.TbCouponUser;
 import com.sqx.modules.datacentre.dao.DataCentreDao;
 import com.sqx.modules.datacentre.dao.DataCentreDao;
 import com.sqx.modules.datacentre.query.DataCenterQuery;
 import com.sqx.modules.datacentre.query.DataCenterQuery;
+import com.sqx.modules.datacentre.query.RankListQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.datacentre.service.DataCentreService;
 import com.sqx.modules.datacentre.service.DataCentreService;
 import com.sqx.modules.errand.entity.Feedback;
 import com.sqx.modules.errand.entity.Feedback;
@@ -413,7 +414,31 @@ public class DataCentreServiceImpl implements DataCentreService {
         }
         }
         return Result.success();
         return Result.success();
     }
     }
-
+    @Override
+    public ExcelData excelRankingList(RankListQuery query) {
+        List<TbIndent> tbOrderList = dataCentreDao.excelRankList(query);
+        ExcelData data = new ExcelData();
+        data.setName("骑手排行");
+        List<String> titleList=Arrays.asList(
+                "排名",
+                "骑手昵称",
+                "地区 ",
+                "骑手所在站点",
+                "总收益");
+        data.setTitles(titleList);
+        List<List<Object>> rows = new ArrayList<>();
+        for (TbIndent tbOrder:tbOrderList ){
+            List<Object> row = new ArrayList<>();
+            row.add(tbOrder.getRankNum());
+            row.add(tbOrder.getNickName());
+            row.add(tbOrder.getUserProvince()+tbOrder.getUserCity()+tbOrder.getUserDistrict());
+            row.add(tbOrder.getStationName());
+            row.add(tbOrder.getMoneyOrder());
+            rows.add(row);
+        }
+        data.setRows(rows);
+        return data;
+    }
 
 
     @Override
     @Override
     public Result updateCertification(UserEntity userEntity) {
     public Result updateCertification(UserEntity userEntity) {

+ 2 - 4
src/main/java/com/sqx/modules/errand/dto/SmsLogQueryDTO.java

@@ -6,8 +6,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.format.annotation.DateTimeFormat;
 
 
-import java.util.Date;
-
 /**
 /**
  * 短信历史分页查询dto
  * 短信历史分页查询dto
  */
  */
@@ -32,11 +30,11 @@ public class SmsLogQueryDTO extends PageQuery {
 
 
     @ApiModelProperty("查询开始时间")
     @ApiModelProperty("查询开始时间")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date startTime;
+    private String startTime;
 
 
     @ApiModelProperty("查询结束时间")
     @ApiModelProperty("查询结束时间")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     @DateTimeFormat(pattern = "yyyy-MM-dd")
-    private Date endTime;
+    private String endTime;
 
 
     @ApiModelProperty("发送来源:1骑手、2商家,默认为1")
     @ApiModelProperty("发送来源:1骑手、2商家,默认为1")
     private String sourceType = "1";
     private String sourceType = "1";

+ 1 - 2
src/main/java/com/sqx/modules/errand/entity/TbIndent.java

@@ -263,8 +263,7 @@ public class TbIndent implements Serializable {
 
 
     @TableField(exist = false)
     @TableField(exist = false)
     private Integer evaluateMessage;
     private Integer evaluateMessage;
-
-    //	站点名称
+//    站点名称
     @TableField(exist = false)
     @TableField(exist = false)
     private String stationName;
     private String stationName;
 
 

+ 3 - 0
src/main/java/com/sqx/modules/errand/entity/TbIndentSmsSendLog.java

@@ -2,6 +2,8 @@ package com.sqx.modules.errand.entity;
 
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.sqx.modules.chats.utils.DateUtil;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
@@ -44,6 +46,7 @@ public class TbIndentSmsSendLog {
     private String sendTo;
     private String sendTo;
 
 
     @ApiModelProperty("发送时间")
     @ApiModelProperty("发送时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
     private Date sendTime;
     private Date sendTime;
 
 
     @ApiModelProperty("发送来源 1骑手、2商家")
     @ApiModelProperty("发送来源 1骑手、2商家")

+ 16 - 2
src/main/java/com/sqx/modules/errand/service/impl/TbIndentServiceImpl.java

@@ -66,7 +66,10 @@ import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.support.DefaultTransactionDefinition;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
@@ -124,6 +127,8 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
 
 
     @Resource
     @Resource
     private RedissonClient redissonClient;
     private RedissonClient redissonClient;
+    @Resource
+    private PlatformTransactionManager transactionManager;
 
 
     @Override
     @Override
     public TbIndent findIndentByPayOrdersNo(String ordersNo) {
     public TbIndent findIndentByPayOrdersNo(String ordersNo) {
@@ -1194,7 +1199,6 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
     }
     }
 
 
     @Override
     @Override
-    @Transactional
     public Result riderDelivery(Long userId, RiderDeliveryDTO deliveryDTO) {
     public Result riderDelivery(Long userId, RiderDeliveryDTO deliveryDTO) {
         // 添加拍照发短信逻辑
         // 添加拍照发短信逻辑
         // 因为原有的确认送达方法代码比较凌乱,且不好重新封装,所以这里就在原有确认收货方法之前添加拍照发短信逻辑
         // 因为原有的确认送达方法代码比较凌乱,且不好重新封装,所以这里就在原有确认收货方法之前添加拍照发短信逻辑
@@ -1204,15 +1208,25 @@ public class TbIndentServiceImpl extends ServiceImpl<TbIndentDao, TbIndent> impl
             throw new SqxException("无效的跑腿订单id");
             throw new SqxException("无效的跑腿订单id");
         }
         }
 
 
+        TransactionStatus status = null;
         RLock lock = redissonClient.getLock(String.format(RedisKey.UPDATE_INDENT_LOCK, indentNumber));
         RLock lock = redissonClient.getLock(String.format(RedisKey.UPDATE_INDENT_LOCK, indentNumber));
         lock.lock();
         lock.lock();
         try {
         try {
+            status = transactionManager.getTransaction(new DefaultTransactionDefinition());
             // 如果是外卖订单
             // 如果是外卖订单
             if (ObjectUtil.equal(indentOrder.getIndentType(), "5")) {
             if (ObjectUtil.equal(indentOrder.getIndentType(), "5")) {
                 handTakeoutOrder(indentOrder, userId, deliveryDTO);
                 handTakeoutOrder(indentOrder, userId, deliveryDTO);
             }
             }
 
 
-            return finshOrder(userId, indentNumber, deliveryDTO.getItemCode());
+            Result result = finshOrder(userId, indentNumber, deliveryDTO.getItemCode());
+
+            transactionManager.commit(status);
+            return result;
+        } catch (Exception e) {
+            if (ObjectUtil.isNotNull(status)) {
+                transactionManager.rollback(status);
+            }
+            throw e;
         } finally {
         } finally {
             lock.unlock();
             lock.unlock();
         }
         }

+ 89 - 64
src/main/java/com/sqx/modules/exportExecl/controller/ExportExeclController.java

@@ -8,13 +8,17 @@ import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.Result;
 import com.sqx.common.utils.Result;
 import com.sqx.common.utils.SftpUtil;
 import com.sqx.common.utils.SftpUtil;
 import com.sqx.modules.common.service.CommonInfoService;
 import com.sqx.modules.common.service.CommonInfoService;
+import com.sqx.modules.datacentre.query.RankListQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
+import com.sqx.modules.exportExecl.dto.AccountEntry;
 import com.sqx.modules.exportExecl.mapper.ExportJobMapper;
 import com.sqx.modules.exportExecl.mapper.ExportJobMapper;
 import com.sqx.modules.exportExecl.model.ExportJob;
 import com.sqx.modules.exportExecl.model.ExportJob;
 import com.sqx.modules.exportExecl.service.ExportJobService;
 import com.sqx.modules.exportExecl.service.ExportJobService;
 import com.sqx.modules.order.dao.AppOrderDao;
 import com.sqx.modules.order.dao.AppOrderDao;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.CashOutQueryDTO;
 import com.sqx.modules.pay.controller.query.WalletDetailQuery;
 import com.sqx.modules.pay.controller.query.WalletDetailQuery;
+import com.sqx.modules.riderStation.entity.RiderStation;
+import com.sqx.modules.riderStation.service.RiderStationService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
@@ -44,22 +48,18 @@ import java.util.Date;
 public class ExportExeclController {
 public class ExportExeclController {
 
 
     private final AppOrderDao appOrderDao;
     private final AppOrderDao appOrderDao;
-
-    private final ExportJobMapper exportJobMapper;
-
     private final ExportJobService exportJobService;
     private final ExportJobService exportJobService;
-
     private final CommonInfoService commonInfoService;
     private final CommonInfoService commonInfoService;
-
+    private final RiderStationService riderStationService;
     private final SftpUtil sftpUtil;
     private final SftpUtil sftpUtil;
 
 
     @GetMapping("excelOrder")
     @GetMapping("excelOrder")
     @ApiOperation("导出订单列表")
     @ApiOperation("导出订单列表")
     public Result excelOrder(Integer status, String phone, Long shopId, String userName,
     public Result excelOrder(Integer status, String phone, Long shopId, String userName,
                              String orderNumber, Integer orderType, String shopName, String riderPhone,
                              String orderNumber, Integer orderType, String shopName, String riderPhone,
-                             String startTime, String endTime, String userId, String payStartTime, String payEndTime) throws Exception{
+                             String startTime, String endTime, String userId, String payStartTime, String payEndTime,Integer riderStationId) throws Exception{
         Integer size = appOrderDao.excelAllOrderAdminCount( status, phone, shopId, userName, orderNumber, orderType,
         Integer size = appOrderDao.excelAllOrderAdminCount( status, phone, shopId, userName, orderNumber, orderType,
-                shopName, riderPhone,startTime,endTime,payStartTime,payEndTime);
+                shopName, riderPhone,startTime,endTime,payStartTime,payEndTime,riderStationId);
         //可导出最大数量
         //可导出最大数量
         String count=commonInfoService.findOne(431).getValue();
         String count=commonInfoService.findOne(431).getValue();
         if(size>Integer.parseInt(count)){
         if(size>Integer.parseInt(count)){
@@ -81,22 +81,27 @@ public class ExportExeclController {
         if(endTime!=null&&!endTime.trim().equals("")){stringBuffer.append("结束时间:"+endTime+";");}
         if(endTime!=null&&!endTime.trim().equals("")){stringBuffer.append("结束时间:"+endTime+";");}
         if(payStartTime!=null&&!payStartTime.trim().equals("")){stringBuffer.append("支付开始时间:"+payStartTime+";");}
         if(payStartTime!=null&&!payStartTime.trim().equals("")){stringBuffer.append("支付开始时间:"+payStartTime+";");}
         if(payEndTime!=null&&!payEndTime.trim().equals("")){stringBuffer.append("支付结束时间:"+payEndTime+";");}
         if(payEndTime!=null&&!payEndTime.trim().equals("")){stringBuffer.append("支付结束时间:"+payEndTime+";");}
-
+        if(riderStationId!=null){
+            RiderStation riderStation=riderStationService.getById(riderStationId);
+            if(riderStation!=null){
+                stringBuffer=stringBuffer.append("站点:"+riderStation.getStationName()+";");
+            }
+        }
         ExportJob exportJob =new ExportJob();
         ExportJob exportJob =new ExportJob();
         exportJob.setFlag(0);
         exportJob.setFlag(0);
         exportJob.setFileType("order");
         exportJob.setFileType("order");
         exportJob.setConditionDetail(stringBuffer.toString());
         exportJob.setConditionDetail(stringBuffer.toString());
         exportJob.setConditions(","+(status==null?"":status)+","+phone+","+(shopId==null?"":shopId)+","+userName+","+orderNumber+","
         exportJob.setConditions(","+(status==null?"":status)+","+phone+","+(shopId==null?"":shopId)+","+userName+","+orderNumber+","
                 +(orderType==null?"":orderType)+","+shopName+","
                 +(orderType==null?"":orderType)+","+shopName+","
-                +riderPhone+","+startTime+","+endTime+","+payStartTime+","+payEndTime);
+                +riderPhone+","+startTime+","+endTime+","+payStartTime+","+payEndTime+","+(riderStationId==null?"":riderStationId)+",");
         LocalDateTime localDateTime = LocalDateTime.now();
         LocalDateTime localDateTime = LocalDateTime.now();
         String time=localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
         String time=localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
         exportJob.setFileName((int) (Math.random() * 100) +time+"订单列表.xlsx");
         exportJob.setFileName((int) (Math.random() * 100) +time+"订单列表.xlsx");
         exportJob.setUserId(userId);
         exportJob.setUserId(userId);
         exportJob.setCreateTime(new Date());
         exportJob.setCreateTime(new Date());
         exportJob.setUpdateTime(new Date());
         exportJob.setUpdateTime(new Date());
-        int a=exportJobMapper.insert(exportJob);
-        if (a==1){
+        boolean a=exportJobService.save(exportJob);
+        if (a){
             return Result.success("新增导出计划成功");
             return Result.success("新增导出计划成功");
         }else{
         }else{
             return Result.error("新增导出计划失败");
             return Result.error("新增导出计划失败");
@@ -108,23 +113,13 @@ public class ExportExeclController {
         if(!StringUtils.hasText(userId)){
         if(!StringUtils.hasText(userId)){
             return Result.error("用户id不能为空");
             return Result.error("用户id不能为空");
         }
         }
-        StringBuffer stringBuffer=new StringBuffer();
+        StringBuilder stringBuffer=new StringBuilder();
         if(rechargeOrder!=null&&rechargeOrder!=""){stringBuffer.append("充值订单号:"+rechargeOrder+";");}
         if(rechargeOrder!=null&&rechargeOrder!=""){stringBuffer.append("充值订单号:"+rechargeOrder+";");}
         if(acount!=null&&acount!=""){stringBuffer.append("被充值账号:"+acount+";");}
         if(acount!=null&&acount!=""){stringBuffer.append("被充值账号:"+acount+";");}
 
 
-        ExportJob exportJob =new ExportJob();
-        exportJob.setFlag(0);
-        exportJob.setFileType("recharge");
-        exportJob.setConditionDetail(stringBuffer.toString());
-        exportJob.setConditions(","+rechargeOrder+","+acount);
-        LocalDateTime localDateTime = LocalDateTime.now();
-        String time=localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
-        exportJob.setFileName(time+"充值记录.xlsx");
-        exportJob.setCreateTime(new Date());
-        exportJob.setUpdateTime(new Date());
-        exportJob.setUserId(userId);
-        int a=exportJobMapper.insert(exportJob);
-        if (a==1){
+        ExportJob exportJob =this.buildExportJob("充值记录.xlsx","recharge", userId,stringBuffer.toString(),","+rechargeOrder+","+acount);
+        boolean a=exportJobService.save(exportJob);
+        if (a){
             return Result.success("新增导出计划成功");
             return Result.success("新增导出计划成功");
         }else{
         }else{
             return Result.error("新增导出计划失败");
             return Result.error("新增导出计划失败");
@@ -137,19 +132,16 @@ public class ExportExeclController {
         if(queryDTO.getUserId()==null){
         if(queryDTO.getUserId()==null){
             return Result.error("用户id不能为空");
             return Result.error("用户id不能为空");
         }
         }
-        ExportJob exportJob =new ExportJob();
-        exportJob.setFlag(0);
-        exportJob.setFileType("payouts");
-        exportJob.setConditionDetail(queryDTO.toStrMessage());
-        exportJob.setConditions(queryDTO.toStrCode());
-        LocalDateTime localDateTime = LocalDateTime.now();
-        String time=localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
-        exportJob.setFileName(time+"提现管理.xlsx");
-        exportJob.setCreateTime(new Date());
-        exportJob.setUpdateTime(new Date());
-        exportJob.setUserId(queryDTO.getUserId()+"");
-        int a=exportJobMapper.insert(exportJob);
-        if (a==1){
+        String strMessage=queryDTO.toStrMessage();
+        if(StringUtils.hasText(queryDTO.getRiderStationId())){
+            RiderStation riderStation=riderStationService.getById(queryDTO.getRiderStationId());
+            if(riderStation!=null){
+                strMessage=strMessage+"站点:"+riderStation.getStationName()+";";
+            }
+        }
+        ExportJob exportJob =this.buildExportJob("提现管理.xlsx","payouts", String.valueOf(queryDTO.getUserId()),strMessage,queryDTO.toStrCode());
+        boolean a=exportJobService.save(exportJob);
+        if (a){
             return Result.success("新增提现管理导出计划成功");
             return Result.success("新增提现管理导出计划成功");
         }else{
         }else{
             return Result.error("新增提现管理导出计划失败");
             return Result.error("新增提现管理导出计划失败");
@@ -162,19 +154,9 @@ public class ExportExeclController {
         if(!StringUtils.hasText(queryDTO.getUserId())){
         if(!StringUtils.hasText(queryDTO.getUserId())){
             return Result.error("用户id不能为空");
             return Result.error("用户id不能为空");
         }
         }
-        ExportJob exportJob =new ExportJob();
-        exportJob.setFlag(0);
-        exportJob.setFileType("deposit");
-        exportJob.setConditionDetail(queryDTO.toStrMessage());
-        exportJob.setConditions(queryDTO.toStrCode());
-        LocalDateTime localDateTime = LocalDateTime.now();
-        String time=localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
-        exportJob.setFileName(time+"保证金记录.xlsx");
-        exportJob.setCreateTime(new Date());
-        exportJob.setUpdateTime(new Date());
-        exportJob.setUserId(queryDTO.getUserId()+"");
-        int a=exportJobMapper.insert(exportJob);
-        if (a==1){
+        ExportJob exportJob =this.buildExportJob("保证金记录.xlsx","deposit",queryDTO.getUserId(),queryDTO.toStrMessage(),queryDTO.toStrCode());
+        boolean a=exportJobService.save(exportJob);
+        if (a){
             return Result.success("新增保证金记录导出计划成功");
             return Result.success("新增保证金记录导出计划成功");
         }else{
         }else{
             return Result.error("新增保证金记录导出计划失败");
             return Result.error("新增保证金记录导出计划失败");
@@ -244,28 +226,71 @@ public class ExportExeclController {
         }
         }
     }
     }
 
 
+    //构建导出对象
+    private ExportJob buildExportJob(String fileName,String fileType,String userId,String condDetail,String condCode){
+        ExportJob exportJob=new ExportJob();
+        //设置为待导出
+        exportJob.setFlag(0);
+        exportJob.setFileType(fileType);
+        exportJob.setConditionDetail(condDetail);
+        exportJob.setConditions(condCode);
+        LocalDateTime localDateTime = LocalDateTime.now();
+        String time=localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
+        exportJob.setFileName(time+fileName);
+        exportJob.setCreateTime(new Date());
+        exportJob.setUpdateTime(new Date());
+        exportJob.setUserId(userId);
+        return exportJob;
+    }
+
     @GetMapping("excelShopCenter")
     @GetMapping("excelShopCenter")
     @ApiOperation("导出商户收益统计")
     @ApiOperation("导出商户收益统计")
     public Result excelShopCenter(ShopCenterQuery queryDTO) throws Exception{
     public Result excelShopCenter(ShopCenterQuery queryDTO) throws Exception{
         if(!StringUtils.hasText(queryDTO.getUserId())){
         if(!StringUtils.hasText(queryDTO.getUserId())){
             return Result.error("用户id不能为空");
             return Result.error("用户id不能为空");
         }
         }
-        ExportJob exportJob =new ExportJob();
-        exportJob.setFlag(0);
-        exportJob.setFileType("shopCenter");
-        exportJob.setConditionDetail(queryDTO.toStrMessage());
-        exportJob.setConditions(queryDTO.toStrCode());
-        LocalDateTime localDateTime = LocalDateTime.now();
-        String time=localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
-        exportJob.setFileName(time+"商铺收益排行.xlsx");
-        exportJob.setCreateTime(new Date());
-        exportJob.setUpdateTime(new Date());
-        exportJob.setUserId(queryDTO.getUserId()+"");
-        int a=exportJobMapper.insert(exportJob);
-        if (a==1){
+        ExportJob exportJob =this.buildExportJob("商铺收益排行.xlsx","shopCenter",queryDTO.getUserId(),queryDTO.toStrMessage(),queryDTO.toStrCode());
+        boolean a=exportJobService.save(exportJob);
+        if (a){
             return Result.success("新增商铺收益排行导出计划成功");
             return Result.success("新增商铺收益排行导出计划成功");
         }else{
         }else{
             return Result.error("新增商铺收益排行导出计划失败");
             return Result.error("新增商铺收益排行导出计划失败");
         }
         }
     }
     }
+
+    @GetMapping("excelAccountEntry")
+    @ApiOperation("导出入账管理")
+    public Result excelAccountEntry(AccountEntry queryDTO) throws Exception{
+        if(!StringUtils.hasText(queryDTO.getUserId())){
+            return Result.error("用户id不能为空");
+        }
+        ExportJob exportJob =this.buildExportJob("入账管理.xlsx","accountEntry",queryDTO.getUserId(),queryDTO.toStrMessage(),queryDTO.toStrCode());
+        boolean a=exportJobService.save(exportJob);
+        if (a){
+            return Result.success("新增入账管理导出计划成功");
+        }else{
+            return Result.error("新增入账管理导出计划失败");
+        }
+    }
+    @GetMapping("excelRankList")
+    @ApiOperation("导出骑手排行")
+    public Result excelRankList(RankListQuery queryDTO) throws Exception{
+        if(!StringUtils.hasText(queryDTO.getUserId())){
+            return Result.error("用户id不能为空");
+        }
+        String strMessage=queryDTO.toStrMessage();
+        if(StringUtils.hasText(queryDTO.getRiderStationId())){
+            RiderStation riderStation=riderStationService.getById(queryDTO.getRiderStationId());
+            if(riderStation!=null){
+                strMessage=strMessage+"站点:"+riderStation.getStationName()+";";
+            }
+        }
+        ExportJob exportJob =this.buildExportJob("骑手排行.xlsx","rankList",queryDTO.getUserId(),strMessage,queryDTO.toStrCode());
+        boolean a=exportJobService.save(exportJob);
+        if (a){
+            return Result.success("新增骑手排行导出计划成功");
+        }else{
+            return Result.error("新增骑手排行导出计划失败");
+        }
+    }
 }
 }

+ 39 - 0
src/main/java/com/sqx/modules/exportExecl/dto/AccountEntry.java

@@ -0,0 +1,39 @@
+package com.sqx.modules.exportExecl.dto;
+
+import lombok.Data;
+import org.springframework.util.StringUtils;
+
+@Data
+public class AccountEntry {
+
+    private String shopName;
+    private String shopPhone;
+    private String userPhone;
+    private String couponName;
+    private String orderNumber;
+    private String startTime;
+    private String endTime;
+    private String userId;
+
+    public String toStrMessage() {
+        return (StringUtils.hasText(shopName) ? "商铺名称:" + shopName + ";" : "") +
+                (StringUtils.hasText(shopPhone) ? "商铺手机号:" + shopPhone + ";" : "") +
+                (StringUtils.hasText(userPhone) ? "用户手机号:" + userPhone + ";" : "") +
+                (StringUtils.hasText(couponName) ? "优惠活动:" + couponName + ";" : "") +
+                (StringUtils.hasText(orderNumber) ? "订单号:" + orderNumber + ";" : "") +
+                (StringUtils.hasText(startTime) ? "开始时间:" + startTime + ";" : "") +
+                (StringUtils.hasText(endTime) ? "结束时间:" + endTime + ";" : "");
+    }
+
+    public String toStrCode() {
+        return
+                ","+(shopName==null?"":shopName)
+                +","+(shopPhone==null?"":shopPhone)
+                +","+(userPhone==null?"":userPhone)
+                +","+(couponName==null?"":couponName)
+                +","+(orderNumber==null?"":orderNumber)
+                +","+(startTime==null?"":startTime)
+                +","+(endTime==null?"":endTime)
+                +",";
+    }
+}

+ 4 - 2
src/main/java/com/sqx/modules/order/dao/AppOrderDao.java

@@ -35,13 +35,15 @@ public interface AppOrderDao extends BaseMapper<TbOrder> {
                                        @Param("userName") String userName, @Param("orderNumber") String orderNumber,
                                        @Param("userName") String userName, @Param("orderNumber") String orderNumber,
                                      @Param("orderType") Integer orderType,@Param("shopName")String shopName,
                                      @Param("orderType") Integer orderType,@Param("shopName")String shopName,
                                      @Param("riderPhone") String riderPhone,@Param("startTime") String startTime,
                                      @Param("riderPhone") String riderPhone,@Param("startTime") String startTime,
-                                     @Param("endTime") String endTime,@Param("payStartTime") String payStartTime,@Param("payEndTime") String payEndTime);
+                                     @Param("endTime") String endTime,@Param("payStartTime") String payStartTime,
+                                     @Param("payEndTime") String payEndTime,@Param("riderStationId")String riderStationId);
     @DataSource("dynamic")
     @DataSource("dynamic")
     Integer excelAllOrderAdminCount(@Param("status") Integer status,@Param("phone") String phone, @Param("shopId") Long shopId,
     Integer excelAllOrderAdminCount(@Param("status") Integer status,@Param("phone") String phone, @Param("shopId") Long shopId,
                                      @Param("userName") String userName, @Param("orderNumber") String orderNumber,
                                      @Param("userName") String userName, @Param("orderNumber") String orderNumber,
                                      @Param("orderType") Integer orderType,@Param("shopName")String shopName,
                                      @Param("orderType") Integer orderType,@Param("shopName")String shopName,
                                      @Param("riderPhone") String riderPhone,@Param("startTime") String startTime,
                                      @Param("riderPhone") String riderPhone,@Param("startTime") String startTime,
-                                     @Param("endTime") String endTime,@Param("payStartTime") String payStartTime,@Param("payEndTime") String payEndTime);
+                                     @Param("endTime") String endTime,@Param("payStartTime") String payStartTime,
+                                    @Param("payEndTime") String payEndTime,@Param("riderStationId")Integer riderStationId);
 
 
 
 
     IPage<TbOrder> selectOrderByAdmin(Page<TbOrder> pages,@Param("status") Integer status,@Param("phone") String phone,
     IPage<TbOrder> selectOrderByAdmin(Page<TbOrder> pages,@Param("status") Integer status,@Param("phone") String phone,

+ 1 - 1
src/main/java/com/sqx/modules/order/service/AppOrderService.java

@@ -36,7 +36,7 @@ public interface AppOrderService extends IService<TbOrder> {
 
 
     ExcelData excelAllOrderAdmin(Integer status, String phone, Long shopId,
     ExcelData excelAllOrderAdmin(Integer status, String phone, Long shopId,
                                  String userName, String orderNumber, Integer orderType, String shopName,
                                  String userName, String orderNumber, Integer orderType, String shopName,
-                                 String riderPhone, String startTime, String endTime,String payStartTime, String payEndTime);
+                                 String riderPhone, String startTime, String endTime,String payStartTime, String payEndTime,String riderStationId);
 
 
     Result selectOrderByUserId(Long userId, String date, String dateType);
     Result selectOrderByUserId(Long userId, String date, String dateType);
 
 

+ 157 - 142
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -471,6 +471,11 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             if (!Integer.valueOf(Constant.YES).equals(goodsShop.getReservationOpenFlag())) {
             if (!Integer.valueOf(Constant.YES).equals(goodsShop.getReservationOpenFlag())) {
                 throw new SqxException("当前店铺未开启预约接单");
                 throw new SqxException("当前店铺未开启预约接单");
             }
             }
+        } else {
+            // 判断店铺营业时间
+            if (!isShopBusinessTime(goodsShop.getShopId())) {
+                throw new SqxException("店铺已打烊!");
+            }
         }
         }
 
 
         // 2 外卖订单
         // 2 外卖订单
@@ -668,70 +673,77 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     @Override
     @Override
     public void finishOrderByShop(OrderFinishByShopDTO orderFinishByShopDTO) {
     public void finishOrderByShop(OrderFinishByShopDTO orderFinishByShopDTO) {
         Long orderId = orderFinishByShopDTO.getOrderId();
         Long orderId = orderFinishByShopDTO.getOrderId();
-        TbOrder order = getById(orderId);
-
-        if (ObjectUtil.isNull(order)) {
-            throw new SqxException("无效的订单id");
-        }
-        if(order.getAutoSendOrder() != null && order.getAutoSendOrder() == 0){
-            throw new SqxException("当前订单为自动派单,不能手动完成!");
-        }
-
-        if (order.getStatus().equals(4)) {
-            return;
-        }
+        RLock lock = redissonClient.getLock(String.format(RedisKey.FINISH_ORDER_LOCK, orderId));
+        lock.lock();
+        try {
+            TbOrder order = getById(orderId);
 
 
-        Long shopId = order.getShopId();
-        SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
-        List<SysUserShop> sysUserShops = sysUserService.selectShopId(currentUser.getUserId());
-        if (CollUtil.isEmpty(sysUserShops) || !sysUserShops.stream().filter(e -> e.getShopId().longValue() == shopId.longValue()).findFirst().isPresent()) {
-            throw new SqxException("没有操作权限,只能操作完成自己店铺订单!");
-        }
+            if (ObjectUtil.isNull(order)) {
+                throw new SqxException("无效的订单id");
+            }
+            if(order.getAutoSendOrder() != null && order.getAutoSendOrder() == 0){
+                throw new SqxException("当前订单为自动派单,不能手动完成!");
+            }
 
 
-        if (Constant.YES.equals(orderFinishByShopDTO.getSendSmsFlag())) {
-            TbIndent indent = tbIndentService.getOne(new QueryWrapper<TbIndent>().eq("order_id", orderId));
-            if (ObjectUtil.isNull(indent)) {
+            if (order.getStatus().equals(4)) {
                 return;
                 return;
             }
             }
 
 
-            // 如果是外卖订单
-            if (ObjectUtil.equal(indent.getIndentType(), "5")) {
-                Long smsTemplateId = orderFinishByShopDTO.getSmsTemplateId();
-                if (ObjectUtil.isNull(smsTemplateId)) {
-                    throw new SqxException("短信模板id不能为空");
-                }
-
-                // 收货人手机
-                String userPhone = indent.getUserPhone();
+            Long shopId = order.getShopId();
+            SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
+            List<SysUserShop> sysUserShops = sysUserService.selectShopId(currentUser.getUserId());
+            if (CollUtil.isEmpty(sysUserShops) || !sysUserShops.stream().filter(e -> e.getShopId().longValue() == shopId.longValue()).findFirst().isPresent()) {
+                throw new SqxException("没有操作权限,只能操作完成自己店铺订单!");
+            }
 
 
-                if (StrUtil.isBlank(userPhone)) {
+            if (Constant.YES.equals(orderFinishByShopDTO.getSendSmsFlag())) {
+                TbIndent indent = tbIndentService.getOne(new QueryWrapper<TbIndent>().eq("order_id", orderId));
+                if (ObjectUtil.isNull(indent)) {
                     return;
                     return;
                 }
                 }
 
 
-                // 店铺信息
-                GoodsShop goodsShop = goodsShopDao.selectById(shopId);
-                // 查询短信发送费用
-                CommonInfo commonInfo = commonInfoService.findOne(421);
-                // 店铺钱包
-                UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(goodsShop.getUserId());
-                if (userMoney.getMoney().compareTo(new BigDecimal(commonInfo.getValue())) < 0) {
-                    throw new SqxException("当前店铺余额不够,短信发送失败!");
-                }
+                // 如果是外卖订单
+                if (ObjectUtil.equal(indent.getIndentType(), "5")) {
+                    Long smsTemplateId = orderFinishByShopDTO.getSmsTemplateId();
+                    if (ObjectUtil.isNull(smsTemplateId)) {
+                        throw new SqxException("短信模板id不能为空");
+                    }
+
+                    // 收货人手机
+                    String userPhone = indent.getUserPhone();
 
 
-                // 发送短信并记录短信发送记录
-                SmsSendResult smsSendResult = smsTemplateService.sendSms(smsTemplateId, goodsShop.getPhone(), goodsShop.getShopName(), goodsShop.getShopId(), userPhone);
+                    if (StrUtil.isBlank(userPhone)) {
+                        return;
+                    }
 
 
-                // sourceType 1骑手、2商家
-                smsSendLogService.saveLog(indent.getIndentId(), "2", smsSendResult);
+                    // 店铺信息
+                    GoodsShop goodsShop = goodsShopDao.selectById(shopId);
+                    // 查询短信发送费用
+                    CommonInfo commonInfo = commonInfoService.findOne(421);
+                    // 店铺钱包
+                    UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(goodsShop.getUserId());
+                    if (userMoney.getMoney().compareTo(new BigDecimal(commonInfo.getValue())) < 0) {
+                        throw new SqxException("当前店铺余额不够,短信发送失败!");
+                    }
+
+                    // 发送短信并记录短信发送记录
+                    SmsSendResult smsSendResult = smsTemplateService.sendSms(smsTemplateId, goodsShop.getPhone(), goodsShop.getShopName(), goodsShop.getShopId(), userPhone);
+
+                    // sourceType 1骑手、2商家
+                    smsSendLogService.saveLog(indent.getIndentId(), "2", smsSendResult);
+                }
             }
             }
-        }
 
 
-        if (StrUtil.isNotBlank(orderFinishByShopDTO.getImgs())) {
-            order.setDeliveryImgs(orderFinishByShopDTO.getImgs());
-            updateById(order);
-        }
+            if (StrUtil.isNotBlank(orderFinishByShopDTO.getImgs())) {
+                order.setDeliveryImgs(orderFinishByShopDTO.getImgs());
+                updateById(order);
+            }
 
 
-        accomplishOrder(orderId);
+            log.info("商户自配完成订单:{},订单状态:{}", orderId, order.getStatus());
+            accomplishOrder(orderId);
+        } finally {
+            lock.unlock();
+        }
     }
     }
 
 
     @Override
     @Override
@@ -1303,9 +1315,9 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     @Override
     @Override
     public ExcelData excelAllOrderAdmin(Integer status, String phone, Long shopId,
     public ExcelData excelAllOrderAdmin(Integer status, String phone, Long shopId,
                                         String userName, String orderNumber, Integer orderType, String shopName,
                                         String userName, String orderNumber, Integer orderType, String shopName,
-                                        String riderPhone, String startTime, String endTime,String payStartTime, String payEndTime) {
+                                        String riderPhone, String startTime, String endTime,String payStartTime, String payEndTime,String riderStationId) {
         List<TbOrder> tbOrderIPage = appOrderDao.excelAllOrderAdmin( status, phone, shopId, userName, orderNumber, orderType,
         List<TbOrder> tbOrderIPage = appOrderDao.excelAllOrderAdmin( status, phone, shopId, userName, orderNumber, orderType,
-                shopName, riderPhone,startTime,endTime,payStartTime,payEndTime);
+                shopName, riderPhone,startTime,endTime,payStartTime,payEndTime,riderStationId);
 //        for (int i = 0; i < tbOrderIPage.size(); i++) {
 //        for (int i = 0; i < tbOrderIPage.size(); i++) {
 //            List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>()
 //            List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>()
 //                    .eq("order_id", tbOrderIPage.get(i).getOrderId()));
 //                    .eq("order_id", tbOrderIPage.get(i).getOrderId()));
@@ -1322,7 +1334,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         titles.add("活动优惠金额(元)");
         titles.add("活动优惠金额(元)");
         titles.add("打包费(元/个 具体按照数量计算)");titles.add("跑腿费(元)");titles.add("支付金额(元)");
         titles.add("打包费(元/个 具体按照数量计算)");titles.add("跑腿费(元)");titles.add("支付金额(元)");
         titles.add("跑腿费说明"); titles.add("订单备注");titles.add("支付时间");titles.add("支付方式");
         titles.add("跑腿费说明"); titles.add("订单备注");titles.add("支付时间");titles.add("支付方式");
-        titles.add("取餐号"); titles.add("状态");titles.add("是否转单");
+        titles.add("取餐号"); titles.add("状态");titles.add("是否转单");titles.add("骑手站点");
 
 
         data.setTitles(titles);
         data.setTitles(titles);
         List<List<Object>> rows = new ArrayList();
         List<List<Object>> rows = new ArrayList();
@@ -1420,6 +1432,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             }else{
             }else{
                 row.add("");
                 row.add("");
             }
             }
+            row.add(order.getStationName());
             rows.add(row);
             rows.add(row);
         }
         }
         data.setRows(rows);
         data.setRows(rows);
@@ -1685,6 +1698,11 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             if (tbOrder.getStatus().equals(3)) {
             if (tbOrder.getStatus().equals(3)) {
                 return Result.success();
                 return Result.success();
             }
             }
+
+            if (!tbOrder.getStatus().equals(6)) {
+                throw new SqxException("当前订单制作完成失败,非制作中订单不能制作完成。【订单id:" + tbOrder.getOrderId() + ",订单状态:" + tbOrder.getStatus() + "】");
+            }
+
             MessageInfo messageInfo = new MessageInfo();
             MessageInfo messageInfo = new MessageInfo();
             messageInfo.setTitle("餐品制作完成");
             messageInfo.setTitle("餐品制作完成");
             if (tbOrder.getOrderType() == 1) {
             if (tbOrder.getOrderType() == 1) {
@@ -1705,32 +1723,30 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             }
             }
             messageInfo.setCreateAt(format1);
             messageInfo.setCreateAt(format1);
             messageInfo.setUserId(tbOrder.getUserId().toString());
             messageInfo.setUserId(tbOrder.getUserId().toString());
-            messageInfoDao.insert(messageInfo);
-            //设置小程序消息推送
-            CommonInfo one = commonInfoService.findOne(269);
-            List<String> msgList = new ArrayList<>();
-            Long shopId = tbOrder.getShopId();
-            GoodsShop goodsShop = goodsShopDao.selectById(shopId);
-            String shopName = goodsShop.getShopName();
-            String orderNum1 = tbOrder.getOrderNumber();
-            /*msgList.add(shopName);
-            msgList.add(orderNum1);
-            msgList.add("已制作完成");
-            msgList.add(format1);*/
 
 
-            msgList.add("已制作完成");
-            msgList.add(orderNum1);
-            msgList.add(shopName);
-            msgList.add(format1);
-            /*
-            if(tbOrder.getOrderType()==1){
-                msgList.add("您的餐品已制作完成,请及时取餐");
-            }else if(tbOrder.getOrderType()==2){
-                msgList.add("您的餐品已制作完成,正在配送中");
-            }*/
-            UserEntity userEntity = userDao.selectById(tbOrder.getUserId());
-            SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one.getValue(), msgList, 1);
-            userService.pushToSingle("制作完成", "亲爱的用户您好,您的订单已制作完成,请耐心等待配送!", userEntity.getClientid());
+            MyGlobalThreadPool.execute(() -> {
+                try {
+                    messageInfoDao.insert(messageInfo);
+                    //设置小程序消息推送
+                    CommonInfo one = commonInfoService.findOne(269);
+                    List<String> msgList = new ArrayList<>();
+                    Long shopId = tbOrder.getShopId();
+                    GoodsShop goodsShop = goodsShopDao.selectById(shopId);
+                    String shopName = goodsShop.getShopName();
+                    String orderNum1 = tbOrder.getOrderNumber();
+
+                    msgList.add("已制作完成");
+                    msgList.add(orderNum1);
+                    msgList.add(shopName);
+                    msgList.add(format1);
+
+                    UserEntity userEntity = userDao.selectById(tbOrder.getUserId());
+                    SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one.getValue(), msgList, 1);
+                    // userService.pushToSingle("制作完成", "亲爱的用户您好,您的订单已制作完成,请耐心等待配送!", userEntity.getClientid());
+                } catch (Exception e) {
+                    log.error("订单制作完成通知发送失败,订单id:" + order.getOrderId() + ",异常消息:" + e.getMessage());
+                }
+            });
         } else if (order.getStatus() == 4) {
         } else if (order.getStatus() == 4) {
             if (tbOrder.getStatus().equals(4)) {
             if (tbOrder.getStatus().equals(4)) {
                 return Result.success();
                 return Result.success();
@@ -1741,27 +1757,32 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
                 return result;
                 return result;
             }
             }
             //管理端完成订单,则消息通知用户
             //管理端完成订单,则消息通知用户
-            //添加消息记录
-            MessageInfo messageInfo = new MessageInfo();
-            messageInfo.setTitle("订单完成");
-            messageInfo.setContent("您的订单已完成,欢迎下次光临");
-            messageInfo.setCreateAt(format1);
-            messageInfo.setUserId(tbOrder.getUserId().toString());
-            messageInfoDao.insert(messageInfo);
-            //设置小程序消息推送
-            CommonInfo one = commonInfoService.findOne(269);
-            List<String> msgList = new ArrayList<>();
-            Long shopId = tbOrder.getShopId();
-            GoodsShop goodsShop = goodsShopDao.selectById(shopId);
-            String shopName = goodsShop.getShopName();
-            String orderNum1 = tbOrder.getOrderNumber();
-            msgList.add("订单完成");
-            msgList.add(orderNum1);
-            msgList.add(shopName);
-            msgList.add(format1);
-            UserEntity userEntity = userDao.selectById(tbOrder.getUserId());
-            SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one.getValue(), msgList, 1);
-            userService.pushToSingle("订单完成", "亲爱的用户您好,您的订单已完成,欢迎下次光临!", userEntity.getClientid());
+            MyGlobalThreadPool.execute(() -> {
+                try {
+                    MessageInfo messageInfo = new MessageInfo();
+                    messageInfo.setTitle("订单完成");
+                    messageInfo.setContent("您的订单已完成,欢迎下次光临");
+                    messageInfo.setCreateAt(format1);
+                    messageInfo.setUserId(tbOrder.getUserId().toString());
+                    messageInfoDao.insert(messageInfo);
+                    //设置小程序消息推送
+                    CommonInfo one = commonInfoService.findOne(269);
+                    List<String> msgList = new ArrayList<>();
+                    Long shopId = tbOrder.getShopId();
+                    GoodsShop goodsShop = goodsShopDao.selectById(shopId);
+                    String shopName = goodsShop.getShopName();
+                    String orderNum1 = tbOrder.getOrderNumber();
+                    msgList.add("订单完成");
+                    msgList.add(orderNum1);
+                    msgList.add(shopName);
+                    msgList.add(format1);
+                    UserEntity userEntity = userDao.selectById(tbOrder.getUserId());
+                    SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one.getValue(), msgList, 1);
+                    // userService.pushToSingle("订单完成", "亲爱的用户您好,您的订单已完成,欢迎下次光临!", userEntity.getClientid());
+                } catch (Exception e) {
+                    log.error("订单完成通知发送失败,订单id:" + order.getOrderId() + ",异常消息:" + e.getMessage());
+                }
+            });
         } else if (order.getStatus() == 8) {
         } else if (order.getStatus() == 8) {
             if (tbOrder.getStatus().equals(8) || tbOrder.getStatus().equals(5)) {
             if (tbOrder.getStatus().equals(8) || tbOrder.getStatus().equals(5)) {
                 return Result.success();
                 return Result.success();
@@ -2038,52 +2059,40 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         userMoneyService.updateMoney(1, goodsShop.getUserId(), shopMoney.doubleValue());
         userMoneyService.updateMoney(1, goodsShop.getUserId(), shopMoney.doubleValue());
         log.info("订单id【{}】,商户用户钱包收入更新成功", orderId);
         log.info("订单id【{}】,商户用户钱包收入更新成功", orderId);
 
 
-        //管理端完成订单,则消息通知用户
-        //添加消息记录
-        MessageInfo messageInfo = new MessageInfo();
-        messageInfo.setTitle("订单完成");
-        messageInfo.setContent("您的订单已完成,欢迎下次光临");
-        messageInfo.setCreateAt(format);
-        messageInfo.setUserId(tbOrder.getUserId().toString());
-        messageInfoDao.insert(messageInfo);
-        //设置小程序消息推送
-        CommonInfo one = commonInfoService.findOne(269);
-        List<String> msgList = new ArrayList<>();
-
-        String shopName = goodsShop.getShopName();
-        String orderNum1 = tbOrder.getOrderNumber();
-        msgList.add("订单完成");
-        msgList.add(orderNum1);
-        msgList.add(shopName);
-        msgList.add(format);
-        UserEntity userEntity = userDao.selectById(tbOrder.getUserId());
         MyGlobalThreadPool.execute(() -> {
         MyGlobalThreadPool.execute(() -> {
             try {
             try {
-                SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one.getValue(), msgList, 1);
-            } catch (Exception e) {
-                log.error("订单:{},订单支付成功通知发送失败,失败原因:{}", e);
-            }
-        });
+                // 用户通知
+                MessageInfo messageInfo = new MessageInfo();
+                messageInfo.setTitle("订单完成");
+                messageInfo.setContent("您的订单已完成,欢迎下次光临");
+                messageInfo.setCreateAt(format);
+                messageInfo.setUserId(tbOrder.getUserId().toString());
+                messageInfoDao.insert(messageInfo);
+                //设置小程序消息推送
+                CommonInfo one = commonInfoService.findOne(269);
+                List<String> msgList = new ArrayList<>();
+
+                String shopName = goodsShop.getShopName();
+                String orderNum1 = tbOrder.getOrderNumber();
+                msgList.add("订单完成");
+                msgList.add(orderNum1);
+                msgList.add(shopName);
+                msgList.add(format);
+                UserEntity userEntity = userDao.selectById(tbOrder.getUserId());
 
 
-        MyGlobalThreadPool.execute(() -> {
-            try {
-                userService.pushToSingle("订单完成", "您的订单已完成,欢迎下次光临!", userEntity.getClientid());
-            } catch (Exception e) {
-                log.error("订单:{},订单支付成功通知发送失败,失败原因:{}", e);
-            }
-        });
-
-        String shopTemplate = commonInfoService.findOne(354).getValue();
-        List<String> msgListShop = new ArrayList<>();
-        msgListShop.add(indent.getIndentNumber());
-        msgListShop.add("订单完成");
-        msgListShop.add(DateUtils.format(new Date()));
-        UserEntity shopUser = userService.selectUserById(goodsShop.getUserId());
-        MyGlobalThreadPool.execute(() -> {
-            try {
+                SenInfoCheckUtil.sendMsg(userEntity.getOpenId(), one.getValue(), msgList, 1);
+                // userService.pushToSingle("订单完成", "您的订单已完成,欢迎下次光临!", userEntity.getClientid());
+
+                // 商家通知
+                String shopTemplate = commonInfoService.findOne(354).getValue();
+                List<String> msgListShop = new ArrayList<>();
+                msgListShop.add(indent.getIndentNumber());
+                msgListShop.add("订单完成");
+                msgListShop.add(DateUtils.format(new Date()));
+                UserEntity shopUser = userService.selectUserById(goodsShop.getUserId());
                 SenInfoCheckUtil.sendShopMsg(shopUser.getShopOpenId(), shopTemplate, msgListShop, 9);
                 SenInfoCheckUtil.sendShopMsg(shopUser.getShopOpenId(), shopTemplate, msgListShop, 9);
             } catch (Exception e) {
             } catch (Exception e) {
-                log.error("订单:{},订单支付成功通知发送失败,失败原因:{}", e);
+                log.error("订单:{},订单完成通知发送失败,失败原因:{}", e);
             }
             }
         });
         });
 
 
@@ -2597,8 +2606,14 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
      * @return 支付顺序
      * @return 支付顺序
      */
      */
     private int selectCurrentOrderSequenceByShopId(TbOrder order, Long shopId) {
     private int selectCurrentOrderSequenceByShopId(TbOrder order, Long shopId) {
-        int count = appOrderDao.countCurDayPayByShopId(shopId, order.getPayTime());
+        RLock lock = redissonClient.getLock(String.format(RedisKey.ORDER_SEQUENCE_LOCK, shopId));
+        lock.lock();
+        try {
+            int count = appOrderDao.countCurDayPayByShopId(shopId, order.getPayTime());
 
 
-        return count + 1;
+            return count + 1;
+        } finally {
+            lock.unlock();
+        }
     }
     }
 }
 }

+ 8 - 8
src/main/java/com/sqx/modules/pay/controller/query/CashOutQueryDTO.java

@@ -56,7 +56,8 @@ public class CashOutQueryDTO extends PageQuery {
                 ","+(type==null?"":type)+
                 ","+(type==null?"":type)+
 //                ","+classify+
 //                ","+classify+
                 ","+(startTime==null?"":startTime)+
                 ","+(startTime==null?"":startTime)+
-                ","+(endTime==null?"":endTime)+",";
+                ","+(endTime==null?"":endTime)+
+                ","+(riderStationId==null?"":riderStationId)+",";
     }
     }
     public String toStrMessage() {
     public String toStrMessage() {
         StringBuffer stringBuffer=new StringBuffer();
         StringBuffer stringBuffer=new StringBuffer();
@@ -79,13 +80,12 @@ public class CashOutQueryDTO extends PageQuery {
                 case 2: stringBuffer.append("状态:已拒绝;");break;
                 case 2: stringBuffer.append("状态:已拒绝;");break;
             }
             }
         }
         }
-        //不展示默认查询条件
-//        if(StringUtils.hasText(type)){
-//            switch (type){
-//                case "1": stringBuffer.append("状态:用户提现;");break;
-//                case "2": stringBuffer.append("状态:退保证金;");break;
-//            }
-//        }
+        if(StringUtils.hasText(type)){
+            switch (type){
+                case "1": stringBuffer.append("类型:用户提现;");break;
+                case "2": stringBuffer.append("类型:商户提现;");break;
+            }
+        }
         return stringBuffer.toString();
         return stringBuffer.toString();
     }
     }
 }
 }

+ 3 - 1
src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java

@@ -610,6 +610,7 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
         row.add(cashOutVO.getCreateAt());
         row.add(cashOutVO.getCreateAt());
         row.add(StringUtils.isEmpty(cashOutVO.getOutAt()) ? "" : cashOutVO.getOutAt());
         row.add(StringUtils.isEmpty(cashOutVO.getOutAt()) ? "" : cashOutVO.getOutAt());
         row.add(cashOutVO.getOrderNumber());
         row.add(cashOutVO.getOrderNumber());
+        row.add(cashOutVO.getStationName());
         return row;
         return row;
     }
     }
 
 
@@ -635,6 +636,7 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
                 "拒绝原因",
                 "拒绝原因",
                 "申请时间",
                 "申请时间",
                 "转账拒绝时间",
                 "转账拒绝时间",
-                "转账订单号");
+                "转账订单号",
+                "骑手站点");
     }
     }
 }
 }

+ 7 - 7
src/main/java/com/sqx/modules/utils/fieYun/FeiYunUtils.java

@@ -968,9 +968,9 @@ public class FeiYunUtils {
                     //长度十个字
                     //长度十个字
                     stringBuilder.append(goods_name_start).append("名称").append(goods_name_end);
                     stringBuilder.append(goods_name_start).append("名称").append(goods_name_end);
                     if (sum_money_start != null) {
                     if (sum_money_start != null) {
-                        stringBuilder.append("     ");
+                        stringBuilder.append("      ");
                     } else {
                     } else {
-                        stringBuilder.append("        ");
+                        stringBuilder.append("        ");
                     }
                     }
 
 
                 }
                 }
@@ -999,7 +999,7 @@ public class FeiYunUtils {
                     goodsMoney = goodsMoney.add(sumMoney);
                     goodsMoney = goodsMoney.add(sumMoney);
                     String name;
                     String name;
                     if (StringUtils.isNotEmpty(orderGoods.getSkuMessage())) {
                     if (StringUtils.isNotEmpty(orderGoods.getSkuMessage())) {
-                        name = orderGoods.getGoodsName() + "(" + orderGoods.getSkuMessage() + ")";
+                        name = orderGoods.getGoodsName() + "(" + orderGoods.getSkuMessage() + ")";
                     } else {
                     } else {
                         name = orderGoods.getGoodsName();
                         name = orderGoods.getGoodsName();
                     }
                     }
@@ -1007,12 +1007,12 @@ public class FeiYunUtils {
 
 
                     StringBuilder space = new StringBuilder();
                     StringBuilder space = new StringBuilder();
                     if (sum_money_start != null) {
                     if (sum_money_start != null) {
-                        for (int len = (name.length() - 1); len < 7; len++) {
-                            space.append(" ");
+                        for (int len = name.length(); len < 8; len++) {
+                            space.append(" ");
                         }
                         }
                     }else{
                     }else{
-                        for (int len = (name.length() - 1); len < 10; len++) {
-                            space.append(" ");
+                        for (int len = name.length(); len < 10; len++) {
+                            space.append(" ");
                         }
                         }
                     }
                     }
 
 

+ 2 - 2
src/main/java/com/sqx/scheduler/config/ScheduledConfig.java

@@ -25,9 +25,9 @@ public class ScheduledConfig implements AsyncConfigurer {
         ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
         ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
         executor.setCorePoolSize(10);
         executor.setCorePoolSize(10);
         executor.setMaxPoolSize(20);
         executor.setMaxPoolSize(20);
-        executor.setQueueCapacity(50);
+        executor.setQueueCapacity(150);
         executor.setKeepAliveSeconds(60);
         executor.setKeepAliveSeconds(60);
-        executor.setThreadNamePrefix("wm-application-task-");
+        executor.setThreadNamePrefix("wm-task-");
         executor.initialize();
         executor.initialize();
         return executor;
         return executor;
     }
     }

+ 39 - 15
src/main/java/com/sqx/scheduler/export/ExportScheduler.java

@@ -1,15 +1,15 @@
 package com.sqx.scheduler.export;
 package com.sqx.scheduler.export;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.sqx.common.utils.SftpUtil;
 import com.sqx.common.utils.SftpUtil;
 import com.sqx.modules.app.entity.RechargeRecord;
 import com.sqx.modules.app.entity.RechargeRecord;
 import com.sqx.modules.app.service.RechargeRecordService;
 import com.sqx.modules.app.service.RechargeRecordService;
 import com.sqx.modules.app.service.UserMoneyDetailsService;
 import com.sqx.modules.app.service.UserMoneyDetailsService;
 import com.sqx.modules.common.service.CommonInfoService;
 import com.sqx.modules.common.service.CommonInfoService;
+import com.sqx.modules.datacentre.query.RankListQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.datacentre.query.ShopCenterQuery;
 import com.sqx.modules.datacentre.service.DataCentreService;
 import com.sqx.modules.datacentre.service.DataCentreService;
-import com.sqx.modules.exportExecl.mapper.ExportJobMapper;
+import com.sqx.modules.exportExecl.dto.AccountEntry;
 import com.sqx.modules.exportExecl.model.ExportJob;
 import com.sqx.modules.exportExecl.model.ExportJob;
 import com.sqx.modules.exportExecl.service.ExportJobService;
 import com.sqx.modules.exportExecl.service.ExportJobService;
 import com.sqx.modules.order.service.AppOrderService;
 import com.sqx.modules.order.service.AppOrderService;
@@ -23,18 +23,15 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RLock;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.redisson.api.RedissonClient;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.io.InputStream;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.ArrayList;
@@ -118,6 +115,10 @@ public class ExportScheduler {
                         excelData=getDepositExcelData(exportJob);
                         excelData=getDepositExcelData(exportJob);
                     }else if("shopCenter".equals(fileType)){
                     }else if("shopCenter".equals(fileType)){
                         excelData=getShopCenterExcelData(exportJob);
                         excelData=getShopCenterExcelData(exportJob);
+                    }else if("accountEntry".equals(fileType)){
+                        excelData=getAccountEntryExcelData(exportJob);
+                    }else if("rankList".equals(fileType)){
+                        excelData=getRankListExcelData(exportJob);
                     }else{
                     }else{
                         continue;
                         continue;
                     }
                     }
@@ -161,6 +162,7 @@ public class ExportScheduler {
             log.info("执行:通用数据导出定时任务"+exportJob.getExportId()+"......执行任务完成,执行时长:{} s", (edTime - bgTime) / 1000);
             log.info("执行:通用数据导出定时任务"+exportJob.getExportId()+"......执行任务完成,执行时长:{} s", (edTime - bgTime) / 1000);
         }
         }
     }
     }
+
     //订单导出
     //订单导出
     private ExcelData getOrderExcelData(ExportJob exportJob){
     private ExcelData getOrderExcelData(ExportJob exportJob){
         String[] conditions=exportJob.getConditions().split(",",-1);
         String[] conditions=exportJob.getConditions().split(",",-1);
@@ -186,9 +188,9 @@ public class ExportScheduler {
         String endTime=conditions[10];
         String endTime=conditions[10];
         String payStartTime=conditions[11];
         String payStartTime=conditions[11];
         String payEndTime=conditions[12];
         String payEndTime=conditions[12];
-        ExcelData excelData = appOrderService.excelAllOrderAdmin(status, phone, shopId, userName, orderNumber, orderType, shopName, riderPhone, startTime, endTime,payStartTime,payEndTime);
+        String riderStationId=conditions[13];
 
 
-        return excelData;
+        return appOrderService.excelAllOrderAdmin(status, phone, shopId, userName, orderNumber, orderType, shopName, riderPhone, startTime, endTime,payStartTime,payEndTime,riderStationId);
     }
     }
 
 
     //充值记录导出
     //充值记录导出
@@ -196,7 +198,7 @@ public class ExportScheduler {
         String[] conditions=exportJob.getConditions().split(",",-1);
         String[] conditions=exportJob.getConditions().split(",",-1);
         String rechargeOrder=conditions[1];
         String rechargeOrder=conditions[1];
         String acount=conditions[2];
         String acount=conditions[2];
-        QueryWrapper qw=new QueryWrapper<RechargeRecord>();
+        QueryWrapper<RechargeRecord> qw=new QueryWrapper<RechargeRecord>();
         if(StringUtils.hasText(rechargeOrder)){
         if(StringUtils.hasText(rechargeOrder)){
             qw.eq("order_no",rechargeOrder);
             qw.eq("order_no",rechargeOrder);
         }
         }
@@ -205,16 +207,16 @@ public class ExportScheduler {
         }
         }
         ExcelData data = new ExcelData();
         ExcelData data = new ExcelData();
         data.setName("订单列表");
         data.setName("订单列表");
-        List<String> titles = new ArrayList();
+        List<String> titles = new ArrayList<>();
         titles.add("用户id");titles.add("编号");titles.add("充值金额");titles.add("充值前余额");
         titles.add("用户id");titles.add("编号");titles.add("充值金额");titles.add("充值前余额");
         titles.add("充值后余额"); titles.add("被充值账号(手机号)");titles.add("被充值名称");titles.add("被充值昵称");
         titles.add("充值后余额"); titles.add("被充值账号(手机号)");titles.add("被充值名称");titles.add("被充值昵称");
         titles.add("被充值头像"); titles.add("更新时间");titles.add("充值时间");titles.add("充值人账号");
         titles.add("被充值头像"); titles.add("更新时间");titles.add("充值时间");titles.add("充值人账号");
         titles.add("备注");
         titles.add("备注");
         data.setTitles(titles);
         data.setTitles(titles);
         List<RechargeRecord> recordList=rechargeRecordService.list(qw);
         List<RechargeRecord> recordList=rechargeRecordService.list(qw);
-        List<List<Object>> rows = new ArrayList();
+        List<List<Object>> rows = new ArrayList<>();
         for (RechargeRecord record:recordList){
         for (RechargeRecord record:recordList){
-            List<Object> row = new ArrayList();
+            List<Object> row = new ArrayList<>();
             row.add(record.getUserId());
             row.add(record.getUserId());
             row.add(record.getOrderNo());
             row.add(record.getOrderNo());
             row.add(record.getAmount());
             row.add(record.getAmount());
@@ -247,8 +249,8 @@ public class ExportScheduler {
         queryDTO.setType(conditions[5]);
         queryDTO.setType(conditions[5]);
         queryDTO.setStartTime(conditions[6]);
         queryDTO.setStartTime(conditions[6]);
         queryDTO.setEndTime(conditions[7]);
         queryDTO.setEndTime(conditions[7]);
-        ExcelData excelData = cashOutService.excelPayDetails(queryDTO);
-        return excelData;
+        queryDTO.setRiderStationId(conditions[8]);
+        return cashOutService.excelPayDetails(queryDTO);
     }
     }
 
 
     //导出保证金记录
     //导出保证金记录
@@ -260,9 +262,8 @@ public class ExportScheduler {
         queryDTO.setClassify(conditions[3]);
         queryDTO.setClassify(conditions[3]);
         queryDTO.setStartTime(conditions[4]);
         queryDTO.setStartTime(conditions[4]);
         queryDTO.setEndTime(conditions[5]);
         queryDTO.setEndTime(conditions[5]);
-        ExcelData excelData = userMoneyDetailsService.excelWalletDetails(queryDTO);
 
 
-        return excelData;
+        return userMoneyDetailsService.excelWalletDetails(queryDTO);
     }
     }
 
 
     //导出商铺收益排行
     //导出商铺收益排行
@@ -276,4 +277,27 @@ public class ExportScheduler {
         query.setDateType(conditions[5]);
         query.setDateType(conditions[5]);
         return dataCentreService.excelShopCenter(query);
         return dataCentreService.excelShopCenter(query);
     }
     }
+    //导出入账管理
+    private ExcelData getAccountEntryExcelData(ExportJob exportJob) {
+        String[] conditions=exportJob.getConditions().split(",",-1);
+        AccountEntry query =new AccountEntry();
+        query.setShopName(conditions[1]);
+        query.setShopPhone(conditions[2]);
+        query.setUserPhone(conditions[3]);
+        query.setCouponName(conditions[4]);
+        query.setOrderNumber(conditions[5]);
+        query.setStartTime(conditions[6]);
+        query.setEndTime(conditions[7]);
+        return userMoneyDetailsService.excelAccountEntry(query);
+    }
+    //导出骑手收益排行
+    private ExcelData getRankListExcelData(ExportJob exportJob){
+        String[] conditions=exportJob.getConditions().split(",",-1);
+        RankListQuery query =new RankListQuery();
+        query.setAddress(conditions[1]);
+        query.setDateType(conditions[2]);
+        query.setDate(conditions[3]);
+        query.setRiderStationId(conditions[4]);
+        return dataCentreService.excelRankingList(query);
+    }
 }
 }

+ 13 - 16
src/main/java/com/sqx/scheduler/order/OrderScheduler.java

@@ -19,8 +19,7 @@ import org.springframework.stereotype.Component;
 
 
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Date;
+import java.util.Collections;
 import java.util.List;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -88,10 +87,8 @@ public class OrderScheduler {
      * 每分钟30秒时运行一次
      * 每分钟30秒时运行一次
      */
      */
     @Async
     @Async
-    @Scheduled(cron = "30 */1 * * * ?")
+    @Scheduled(cron = "30 */2 * * * ?")
     public void prodIngOrderAutoCompleted(){
     public void prodIngOrderAutoCompleted(){
-        RLock lock = redissonClient.getLock(SchedulerLock.ORDER_OF_PROD_AUTO_COMPLETED_LOCK);
-        lock.lock();
         try {
         try {
             log.info("自动制作完成制作中订单任务开始运行");
             log.info("自动制作完成制作中订单任务开始运行");
             // 获取配置:是否开启制作中订单自动完成
             // 获取配置:是否开启制作中订单自动完成
@@ -105,6 +102,8 @@ public class OrderScheduler {
                 if (CollUtil.isEmpty(orders)) {
                 if (CollUtil.isEmpty(orders)) {
                     log.info("当前时间段没有需要自动制作完成的订单");
                     log.info("当前时间段没有需要自动制作完成的订单");
                 } else {
                 } else {
+                    // 订单随机排序
+                    Collections.shuffle(orders);
                     for (TbOrder order: orders){
                     for (TbOrder order: orders){
                         try {
                         try {
                             log.info("订单:{},开始自动制作完成", order.getOrderId());
                             log.info("订单:{},开始自动制作完成", order.getOrderId());
@@ -121,8 +120,6 @@ public class OrderScheduler {
             log.info("自动制作完成制作中订单任务运行成功");
             log.info("自动制作完成制作中订单任务运行成功");
         } catch (Exception e) {
         } catch (Exception e) {
             log.error("制作中订单自动制作完成任务运行失败失败原因:【{}】", e);
             log.error("制作中订单自动制作完成任务运行失败失败原因:【{}】", e);
-        } finally {
-            lock.unlock();
         }
         }
     }
     }
 
 
@@ -145,17 +142,17 @@ public class OrderScheduler {
             List<TbOrder> orders = orderService.list(queryWrapper);
             List<TbOrder> orders = orderService.list(queryWrapper);
 
 
             for (TbOrder order: orders) {
             for (TbOrder order: orders) {
-                LocalDateTime updateTime = LocalDateTime.parse(order.getUpdateTime(), df);
-                // 计算当前订单什么时候超时完成
-                LocalDateTime overDateTime = updateTime.plusHours(Integer.parseInt(one.getValue()));
-                if (LocalDateTime.now().isAfter(overDateTime)) {
-                    log.info("订单id:{},开始自动完成", order.getOrderId());
-                    try {
+                try {
+                    LocalDateTime updateTime = LocalDateTime.parse(order.getUpdateTime(), df);
+                    // 计算当前订单什么时候超时完成
+                    LocalDateTime overDateTime = updateTime.plusHours(Integer.parseInt(one.getValue()));
+                    if (LocalDateTime.now().isAfter(overDateTime)) {
+                        log.info("订单id:{},开始自动完成", order.getOrderId());
                         orderService.accomplishOrders(order.getOrderId(),2);
                         orderService.accomplishOrders(order.getOrderId(),2);
-                    } catch (Exception e) {
-                        log.error("订单id:{},开始自动完成失败,失败原因【{}】", order.getOrderId(), e);
+                        log.info("订单id:{},完成自动完成", order.getOrderId());
                     }
                     }
-                    log.info("订单id:{},完成自动完成", order.getOrderId());
+                } catch (Exception e) {
+                    log.error("订单id:{},开始自动完成失败,失败原因【{}】", order.getOrderId(), e);
                 }
                 }
             }
             }
             log.info("自动完成订单任务运行成功");
             log.info("自动完成订单任务运行成功");

+ 32 - 0
src/main/resources/mapper/dataCentre/dataCenterMapper.xml

@@ -199,6 +199,38 @@
         ORDER BY moneyOrder DESC
         ORDER BY moneyOrder DESC
     </select>
     </select>
 
 
+    <select id="excelRankList" resultType="com.sqx.modules.errand.entity.TbIndent">
+        SELECT
+        *,
+        @rank_num := @rank_num + 1 AS rankNum
+        FROM
+        ( SELECT @rank_num := 0 ) r,
+        ( SELECT ifnull( sum( rider_money ), 0 ) AS moneyOrder, i.rider_user_id, u.nick_name as nickName, u.avatar as
+        avatar,
+        i.user_province as userProvince, i.user_city as userCity, i.user_district as userDistrict,rs.station_name as stationName
+        FROM tb_indent i left join tb_user u on i.rider_user_id = u.user_id
+        left join rider_station rs on u.rider_station_id=rs.id
+        WHERE i.rider_user_id IS NOT NULL
+        <if test="query.address!=null and query.address!=''">
+            and (i.user_province like concat('%',#{query.address},'%') or i.user_city like concat('%',#{query.address},'%') or
+            i.user_district like concat('%',#{query.address},'%'))
+        </if>
+        <if test="query.dateType=='day'">
+            and date_format(i.create_time,'%Y-%m-%d')=date_format(#{query.date},'%Y-%m-%d')
+        </if>
+        <if test="query.dateType=='month'">
+            and date_format(i.create_time,'%Y-%m')=date_format(#{query.date},'%Y-%m')
+        </if>
+        <if test="query.dateType=='year'">
+            and date_format(i.create_time,'%Y')=date_format(#{query.date},'%Y')
+        </if>
+        <if test="query.riderStationId != null and query.riderStationId !=''">
+            and u.rider_station_id=#{query.riderStationId}
+        </if>
+        GROUP BY i.rider_user_id ) a
+        ORDER BY moneyOrder DESC
+    </select>
+
     <select id="selectNewShopCount" resultType="int">
     <select id="selectNewShopCount" resultType="int">
         select count(*) from goods_shop where 1 = 1
         select count(*) from goods_shop where 1 = 1
         <if test="query.dateType=='day'">
         <if test="query.dateType=='day'">

+ 10 - 3
src/main/resources/mapper/order/OrderMapper.xml

@@ -86,7 +86,8 @@
         shopPhone,
         shopPhone,
         tiu.user_name as riderNickName,tiu.phone as riderPhone,ti.indent_id as indentId,ti.is_rider as isRider,
         tiu.user_name as riderNickName,tiu.phone as riderPhone,ti.indent_id as indentId,ti.is_rider as isRider,
         ti.rider_user_id as riderUserId, tcu.money as couponMoney,
         ti.rider_user_id as riderUserId, tcu.money as couponMoney,
-        apr.discount_amount as activityDiscountAmount, ai.title activityTitle,tiu.rider_station_id as riderStationId,rs.station_name as stationName
+        apr.discount_amount as activityDiscountAmount, ai.title activityTitle,tiu.rider_station_id as riderStationId,
+        (select rs.station_name from rider_station rs where  rs.id =tiu.rider_station_id ) as stationName
         from tb_order tor
         from tb_order tor
         left join tb_user tu on tor.user_id = tu.user_id
         left join tb_user tu on tor.user_id = tu.user_id
         left join goods_shop gs on tor.shop_id = gs.shop_id
         left join goods_shop gs on tor.shop_id = gs.shop_id
@@ -95,7 +96,6 @@
         left join tb_coupon_user tcu on tor.coupon_id = tcu.id
         left join tb_coupon_user tcu on tor.coupon_id = tcu.id
         left join activity_part_record apr on apr.order_id = tor.order_id
         left join activity_part_record apr on apr.order_id = tor.order_id
         left join activity ai on ai.id = apr.activity_id
         left join activity ai on ai.id = apr.activity_id
-        left join rider_station rs on tiu.rider_station_id = rs.id
         where 1 = 1
         where 1 = 1
         <if test="riderPhone!=null and riderPhone!=''">
         <if test="riderPhone!=null and riderPhone!=''">
             and tiu.phone =#{riderPhone}
             and tiu.phone =#{riderPhone}
@@ -153,7 +153,8 @@
         shopPhone,
         shopPhone,
         tiu.nick_name as riderNickName,tiu.phone as riderPhone,ti.indent_id as indentId,ti.is_rider as isRider,
         tiu.nick_name as riderNickName,tiu.phone as riderPhone,ti.indent_id as indentId,ti.is_rider as isRider,
         ti.rider_user_id as riderUserId, tcu.money as couponMoney,
         ti.rider_user_id as riderUserId, tcu.money as couponMoney,
-        apr.discount_amount as activityDiscountAmount, ai.title activityTitle,ogg.detail,ogg.sumPrice
+        apr.discount_amount as activityDiscountAmount, ai.title activityTitle,ogg.detail,ogg.sumPrice,
+        (select rs.station_name from rider_station rs where  rs.id =tiu.rider_station_id ) as stationName
         from tb_order tor
         from tb_order tor
         left join tb_user tu on tor.user_id = tu.user_id
         left join tb_user tu on tor.user_id = tu.user_id
         left join goods_shop gs on tor.shop_id = gs.shop_id
         left join goods_shop gs on tor.shop_id = gs.shop_id
@@ -204,6 +205,9 @@
         <if test="payEndTime != null and payEndTime != '' ">
         <if test="payEndTime != null and payEndTime != '' ">
             and date_format(tor.pay_time,'%Y-%m-%d') &lt;= date_format(#{payEndTime},'%Y-%m-%d')
             and date_format(tor.pay_time,'%Y-%m-%d') &lt;= date_format(#{payEndTime},'%Y-%m-%d')
         </if>
         </if>
+        <if test="riderStationId!=null and riderStationId!=''">
+            and tiu.rider_station_id=#{riderStationId}
+        </if>
         order by tor.pay_time desc, tor.create_time desc
         order by tor.pay_time desc, tor.create_time desc
     </select>
     </select>
 
 
@@ -253,6 +257,9 @@
         <if test="payEndTime != null and payEndTime != '' ">
         <if test="payEndTime != null and payEndTime != '' ">
             and date_format(tor.pay_time,'%Y-%m-%d') &lt;= date_format(#{payEndTime},'%Y-%m-%d')
             and date_format(tor.pay_time,'%Y-%m-%d') &lt;= date_format(#{payEndTime},'%Y-%m-%d')
         </if>
         </if>
+        <if test="riderStationId!=null and riderStationId!=''">
+            and tiu.rider_station_id=#{riderStationId}
+        </if>
         order by tor.pay_time desc, tor.create_time desc
         order by tor.pay_time desc, tor.create_time desc
     </select>
     </select>
 
 

+ 4 - 2
src/main/resources/mapper/pay/CashDao.xml

@@ -291,7 +291,7 @@
             <if test="params.openBank != null and params.openBank != '' and params.openBank != 'null'">
             <if test="params.openBank != null and params.openBank != '' and params.openBank != 'null'">
                 and co.open_bank = #{params.openBank}
                 and co.open_bank = #{params.openBank}
             </if>
             </if>
-            <if test="params.riderStationId != null">
+            <if test="params.riderStationId != null and params.riderStationId != '' ">
                 and tu.rider_station_id = #{params.riderStationId}
                 and tu.rider_station_id = #{params.riderStationId}
             </if>
             </if>
         </where>
         </where>
@@ -322,9 +322,11 @@
     </select>
     </select>
 
 
     <select id="excelPayDetails" resultType="com.sqx.modules.pay.vo.CashOutVO">
     <select id="excelPayDetails" resultType="com.sqx.modules.pay.vo.CashOutVO">
-        select gh.shop_name, co.*
+        select gh.shop_name, co.*,rs.station_name as stationName
         from cash_out co
         from cash_out co
         left join goods_shop gh on gh.shop_id = co.shop_id
         left join goods_shop gh on gh.shop_id = co.shop_id
+        left join tb_user tu on tu.user_id=co.user_id
+        left join rider_station rs on tu.rider_station_id=rs.id
         <include refid="cashOutQueryCondition"></include>
         <include refid="cashOutQueryCondition"></include>
         order by id desc
         order by id desc
     </select>
     </select>

+ 78 - 0
src/main/resources/mapper/userMoney/UserMoneyDetailsMapper.xml

@@ -180,6 +180,7 @@
         ORDER BY umd2.id desc
         ORDER BY umd2.id desc
         LIMIT #{limit} OFFSET #{row}
         LIMIT #{limit} OFFSET #{row}
     </select>
     </select>
+
     <select id="accountEntryManagementDetailsCount" resultType="java.lang.Integer">
     <select id="accountEntryManagementDetailsCount" resultType="java.lang.Integer">
         SELECT
         SELECT
         count(*)
         count(*)
@@ -237,4 +238,81 @@
             and umd2.create_time >= #{startTime} and #{endTime} >= umd2.create_time
             and umd2.create_time >= #{startTime} and #{endTime} >= umd2.create_time
         </if>
         </if>
     </select>
     </select>
+    <select id="excelAccountEntry" resultType="com.sqx.modules.app.entity.UserMoneyDetails">
+        SELECT
+        umd2.id,
+        umd2.orderNumber,
+        umd2.user_id as userId,
+        umd2.shop_id as shopId,
+        umd2.title,
+        umd2.content,
+        umd2.type,
+        umd2.classify,
+        umd2.money,
+        umd2.create_time as createTime,
+        umd2.state,
+        tbu.user_name as userName,
+        tbu.phone as userPhone,
+        gs.shop_name as shopName,
+        gs.phone as shopPhone,
+        tcu.coupon_name as couponName,
+        tcu.money as couponMoney,
+        apr.discount_amount as activityDiscountAmount,
+        tbo.errand_money as errandMoney
+        FROM
+        (
+        SELECT
+        RIGHT( umd.title, 18 ) AS orderNumber,
+        umd.id,
+        umd.user_id,
+        umd.shop_id,
+        umd.title,
+        umd.content,
+        umd.type,
+        umd.classify,
+        umd.money,
+        umd.create_time,
+        umd.state,
+        umd.children_id
+        FROM
+        `user_money_details` umd
+        WHERE
+        umd.type = 1
+        AND umd.classify = 3
+        AND umd.shop_id IS NOT NULL
+        AND umd.state=2
+        AND umd.title LIKE '商户订单收入' '%'
+        ) umd2
+        LEFT JOIN tb_order tbo on tbo.order_number=umd2.orderNumber
+        LEFT JOIN tb_user tbu on tbu.user_id=tbo.user_id
+        LEFT JOIN goods_shop gs on gs.shop_id=tbo.shop_id
+        LEFT JOIN tb_coupon_user tcu on tbo.coupon_id = tcu.id
+        LEFT JOIN activity_part_record apr on apr.order_id = tbo.order_id
+        where 1 = 1
+        <if test="query.shopName != null and query.shopName != ''">
+            and gs.shop_name like  concat("%", #{query.shopName}, "%")
+        </if>
+
+        <if test="query.shopPhone != null and query.shopPhone != ''">
+            and gs.phone= #{query.shopPhone}
+        </if>
+
+        <if test="query.userPhone != null and query.userPhone != ''">
+            and tbu.phone=#{query.userPhone}
+        </if>
+
+        <if test="query.couponName != null and query.couponName != ''">
+            and tcu.coupon_name like  concat("%", #{query.couponName}, "%")
+        </if>
+
+        <if test="query.orderNumber != null and query.orderNumber != ''">
+            and tbo.order_number = #{query.orderNumber}
+        </if>
+
+        <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
+            and umd2.create_time >= #{query.startTime} and #{query.endTime} >= umd2.create_time
+        </if>
+        ORDER BY umd2.id desc
+    </select>
+
 </mapper>
 </mapper>