From 59bfd0b8bbbf0ee94ec68e4a3a1a6e536d0ad8fd Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 20 五月 2026 23:10:43 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/gtzxinglijicun
---
server/services/src/main/java/com/doumee/dao/vo/ShopCenterVO.java | 3
server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java | 24 ++
server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java | 51 +++++
server/web/src/main/java/com/doumee/api/web/PaymentCallback.java | 3
server/services/src/main/java/com/doumee/dao/vo/OrdersExportVO.java | 14 +
server/services/src/main/java/com/doumee/service/business/impl/DataBoardServiceImpl.java | 30 ++-
server/services/src/main/java/com/doumee/config/wx/WxPayV3Service.java | 6
server/web/src/main/java/com/doumee/api/web/MemberCouponApi.java | 12 +
server/services/src/main/java/com/doumee/biz/system/impl/OperationConfigBizImpl.java | 4
server/services/src/main/java/com/doumee/dao/vo/LocationTagShopCountVO.java | 3
server/services/src/main/java/com/doumee/dao/vo/ManualRefundDetailVO.java | 25 +++
server/services/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java | 23 ++
server/services/src/main/java/com/doumee/dao/vo/MyOrderDetailVO.java | 5
server/services/src/main/java/com/doumee/dao/vo/MyOrderVO.java | 3
server/services/src/main/java/com/doumee/dao/vo/OrderDetailVO.java | 19 ++
server/services/src/main/java/com/doumee/service/business/impl/CouponServiceImpl.java | 6
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 18 +
server/services/src/main/java/com/doumee/service/business/MemberCouponService.java | 3
server/services/src/main/java/com/doumee/service/business/OrdersService.java | 1
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 202 +++++++++++++++++++-----
server/admin/src/main/java/com/doumee/api/business/OrdersController.java | 14 +
server/admin/src/main/resources/application.yml | 2
server/services/src/main/java/com/doumee/dao/dto/DriverOrderPageDTO.java | 3
23 files changed, 380 insertions(+), 94 deletions(-)
diff --git a/server/admin/src/main/java/com/doumee/api/business/OrdersController.java b/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
index 5bfa6ba..d987e75 100644
--- a/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
@@ -12,10 +12,7 @@
import com.doumee.dao.dto.DispatchDTO;
import com.doumee.dao.dto.HandleOrderExceptionDTO;
import com.doumee.dao.dto.ManualRefundDTO;
-import com.doumee.dao.vo.OrderDetailVO;
-import com.doumee.dao.vo.OrderDispatchVO;
-import com.doumee.dao.vo.OrdersExportVO;
-import com.doumee.dao.vo.OrderSummaryVO;
+import com.doumee.dao.vo.*;
import com.doumee.service.business.OrdersService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -109,6 +106,8 @@
vo.setOverdueAmount(String.valueOf(Constants.getFormatMoney(o.getOverdueAmount())));
vo.setExceptionAmount(String.valueOf(Constants.getFormatMoney(o.getExceptionAmount())));
vo.setDeductionAmount(String.valueOf(Constants.getFormatMoney(o.getDeductionAmount())));
+ vo.setShopCompensationAmount(String.valueOf(Constants.getFormatMoney(o.getShopCompensationAmount())));
+ vo.setExceptionFee(String.valueOf(Constants.getFormatMoney(o.getExceptionFee())));
vo.setStatusDesc(o.getStatusDesc());
vo.setSettlementDesc(o.getSettlementStatus() != null ? (o.getSettlementStatus() == 1 ? "宸茬粨绠�" : "寰呯粨绠�") : "");
vo.setPayTime(o.getPayTime());
@@ -174,4 +173,11 @@
return ApiResponse.success("鎿嶄綔鎴愬姛");
}
+ @ApiOperation("鎵嬪姩閫�娆捐鎯�")
+ @GetMapping("/manualRefundDetail/{orderId}")
+ @RequiresPermissions("business:orders:query")
+ public ApiResponse<ManualRefundDetailVO> manualRefundDetail(@PathVariable Integer orderId) {
+ return ApiResponse.success(ordersService.getManualRefundDetail(orderId));
+ }
+
}
diff --git a/server/admin/src/main/resources/application.yml b/server/admin/src/main/resources/application.yml
index a67904a..2966e7d 100644
--- a/server/admin/src/main/resources/application.yml
+++ b/server/admin/src/main/resources/application.yml
@@ -12,7 +12,7 @@
spring:
profiles:
- active: dev
+ active: pro
# JSON杩斿洖閰嶇疆
jackson:
# 榛樿鏃跺尯
diff --git a/server/services/src/main/java/com/doumee/biz/system/impl/OperationConfigBizImpl.java b/server/services/src/main/java/com/doumee/biz/system/impl/OperationConfigBizImpl.java
index 47926f8..9c99271 100644
--- a/server/services/src/main/java/com/doumee/biz/system/impl/OperationConfigBizImpl.java
+++ b/server/services/src/main/java/com/doumee/biz/system/impl/OperationConfigBizImpl.java
@@ -50,9 +50,9 @@
dto.setRegisterCouponId(getValue(Constants.OP_REGISTER_COUPON_ID));
dto.setRegisterGiftCouponIds(getValue(Constants.OP_REGISTER_GIFT_COUPON_IDS));
dto.setRegisterRewardOrderCount(getValue(Constants.OP_REGISTER_REWARD_ORDER_COUNT));
- dto.setRegisterRewardAmount(fenToYuan(getValue(Constants.OP_REGISTER_REWARD_AMOUNT)));
+ dto.setRegisterRewardAmount(getValue(Constants.OP_REGISTER_REWARD_AMOUNT));
dto.setPlatformRewardOrderCount(getValue(Constants.OP_PLATFORM_REWARD_ORDER_COUNT));
- dto.setPlatformRewardAmount(fenToYuan(getValue(Constants.OP_PLATFORM_REWARD_AMOUNT)));
+ dto.setPlatformRewardAmount(getValue(Constants.OP_PLATFORM_REWARD_AMOUNT));
dto.setInvoiceMonthLimit(getValue(Constants.OP_INVOICE_MONTH_LIMIT));
return dto;
}
diff --git a/server/services/src/main/java/com/doumee/config/wx/WxPayV3Service.java b/server/services/src/main/java/com/doumee/config/wx/WxPayV3Service.java
index 6faab65..2224ae4 100644
--- a/server/services/src/main/java/com/doumee/config/wx/WxPayV3Service.java
+++ b/server/services/src/main/java/com/doumee/config/wx/WxPayV3Service.java
@@ -59,7 +59,7 @@
com.wechat.pay.java.service.payments.jsapi.model.Amount amount =
new com.wechat.pay.java.service.payments.jsapi.model.Amount();
- amount.setTotal(1);//totalCents.intValue());
+ amount.setTotal(totalCents.intValue());
amount.setCurrency("CNY");
request.setAmount(amount);
@@ -109,8 +109,8 @@
request.setNotifyUrl(notifyUrl);
AmountReq amount = new AmountReq();
- amount.setRefund(1L);//refundCents);
- amount.setTotal(1L);//totalCents);
+ amount.setRefund(refundCents);
+ amount.setTotal(totalCents);
amount.setCurrency("CNY");
request.setAmount(amount);
diff --git a/server/services/src/main/java/com/doumee/dao/dto/DriverOrderPageDTO.java b/server/services/src/main/java/com/doumee/dao/dto/DriverOrderPageDTO.java
index 099bd9d..405bb8f 100644
--- a/server/services/src/main/java/com/doumee/dao/dto/DriverOrderPageDTO.java
+++ b/server/services/src/main/java/com/doumee/dao/dto/DriverOrderPageDTO.java
@@ -16,4 +16,7 @@
@ApiModelProperty(value = "璁㈠崟鐘舵�佺瓫閫夛細null=鍏ㄩ儴锛�3=寰呭彇浠讹紱4=閰嶉�佷腑锛�7=宸插畬鎴�")
private Integer status;
+
+ @ApiModelProperty(value = "鎼滅储鍏抽敭璇嶏紙鏀朵欢浜�/鏀朵欢浜虹數璇濇ā绯�/璁㈠崟鍙风簿鍑嗭級")
+ private String keyword;
}
diff --git a/server/services/src/main/java/com/doumee/dao/vo/LocationTagShopCountVO.java b/server/services/src/main/java/com/doumee/dao/vo/LocationTagShopCountVO.java
index dec34ee..e3ea8d2 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/LocationTagShopCountVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/LocationTagShopCountVO.java
@@ -24,4 +24,7 @@
@ApiModelProperty("闂ㄥ簵鏁伴噺")
private Integer shopCount;
+
+ @ApiModelProperty(value = "鎺掑簭鐮�", hidden = true)
+ private Integer sortnum;
}
diff --git a/server/services/src/main/java/com/doumee/dao/vo/ManualRefundDetailVO.java b/server/services/src/main/java/com/doumee/dao/vo/ManualRefundDetailVO.java
new file mode 100644
index 0000000..c668a25
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/vo/ManualRefundDetailVO.java
@@ -0,0 +1,25 @@
+package com.doumee.dao.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("鎵嬪姩閫�娆捐鎯�")
+public class ManualRefundDetailVO {
+
+ @ApiModelProperty(value = "閫�娆鹃噾棰濓紙鍒嗭級")
+ private Long refundAmount;
+
+ @ApiModelProperty(value = "瀛樹欢闂ㄥ簵鎵f閲戦锛堝垎锛�")
+ private Long depositShopDeduct;
+
+ @ApiModelProperty(value = "鍙栦欢闂ㄥ簵鎵f閲戦锛堝垎锛�")
+ private Long takeShopDeduct;
+
+ @ApiModelProperty(value = "鍙告満鎵f閲戦锛堝垎锛�")
+ private Long driverDeduct;
+
+ @ApiModelProperty(value = "閫�娆惧娉�")
+ private String refundRemark;
+}
diff --git a/server/services/src/main/java/com/doumee/dao/vo/MyOrderDetailVO.java b/server/services/src/main/java/com/doumee/dao/vo/MyOrderDetailVO.java
index b4bdd4f..b66b8c1 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/MyOrderDetailVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/MyOrderDetailVO.java
@@ -76,6 +76,8 @@
private Date arriveTime;
// ---- 瀛樹欢闂ㄥ簵 ----
+ @ApiModelProperty(value = "瀛樹欢闂ㄥ簵涓婚敭", example = "1")
+ private Integer depositShopId;
@ApiModelProperty(value = "瀛樹欢闂ㄥ簵鍚嶇О")
private String depositShopName;
@@ -132,6 +134,9 @@
@ApiModelProperty(value = "瀹為檯鏀粯璐圭敤锛堝垎锛�")
private Long actualPayAmount;
+ @ApiModelProperty(value = "浼樻儬鍒告姷鎵i噾棰濓紙鍒嗭級")
+ private Long deductionAmount;
+
// ---- 閫炬湡 ----
//閫炬湡鐘舵��: 0=鏈埌搴楁湭閫炬湡 1=鏈埌搴楀瓨鍦ㄩ�炬湡 2=宸插埌搴楁湭瀛樺湪閫炬湡 3=宸插埌搴楀緟鏀粯閫炬湡 4=閫炬湡宸叉敮浠�
diff --git a/server/services/src/main/java/com/doumee/dao/vo/MyOrderVO.java b/server/services/src/main/java/com/doumee/dao/vo/MyOrderVO.java
index 5027afa..30c81f7 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/MyOrderVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/MyOrderVO.java
@@ -148,4 +148,7 @@
@ApiModelProperty(value = "浼樻儬鍒告姷鎵i噾棰濓紙鍒嗭級")
private Long deductionAmount;
+
+ @ApiModelProperty(value = "鏄惁寮傚父璁㈠崟锛�0=鍚︼紱1=鏄�")
+ private Integer abnormalOrder;
}
diff --git a/server/services/src/main/java/com/doumee/dao/vo/OrderDetailVO.java b/server/services/src/main/java/com/doumee/dao/vo/OrderDetailVO.java
index e4c37a4..3f37105 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/OrderDetailVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/OrderDetailVO.java
@@ -6,6 +6,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.util.Date;
import java.util.List;
/**
@@ -82,4 +83,22 @@
@ApiModelProperty(value = "浼樻儬鍒告姷鎵i噾棰濓紙鍒嗭級")
private Long deductionAmount;
+
+ @ApiModelProperty(value = "璇勪环鍐呭")
+ private String commentContent;
+
+ @ApiModelProperty(value = "璇勪环鏃堕棿")
+ private Date commentTime;
+
+ @ApiModelProperty(value = "璇勪环闄勪欢鍥剧墖")
+ private List<String> commentImages;
+
+ @ApiModelProperty(value = "瀵勫瓨闂ㄥ簵璇勫垎")
+ private Integer depositScore;
+
+ @ApiModelProperty(value = "鍙栦欢闂ㄥ簵璇勫垎")
+ private Integer takeScore;
+
+ @ApiModelProperty(value = "鍙告満璇勫垎")
+ private Integer driverScore;
}
diff --git a/server/services/src/main/java/com/doumee/dao/vo/OrdersExportVO.java b/server/services/src/main/java/com/doumee/dao/vo/OrdersExportVO.java
index 1466f5e..ca23c55 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/OrdersExportVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/OrdersExportVO.java
@@ -47,15 +47,21 @@
@ExcelColumn(name = "浼樻儬鍒告姌鎵�(鍏�)", index = 12)
private String deductionAmount;
- @ExcelColumn(name = "璁㈠崟鐘舵��", index = 13)
+ @ExcelColumn(name = "闂ㄥ簵琛ュ伩璐圭敤(鍏�)", index = 13)
+ private String shopCompensationAmount;
+
+ @ExcelColumn(name = "鍙告満琛ュ伩璐圭敤(鍏�)", index = 14)
+ private String exceptionFee;
+
+ @ExcelColumn(name = "璁㈠崟鐘舵��", index = 15)
private String statusDesc;
- @ExcelColumn(name = "缁撶畻鐘舵��", index = 14)
+ @ExcelColumn(name = "缁撶畻鐘舵��", index = 16)
private String settlementDesc;
- @ExcelColumn(name = "鏀粯鏃堕棿", index = 15, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16)
+ @ExcelColumn(name = "鏀粯鏃堕棿", index = 17, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16)
private Date payTime;
- @ExcelColumn(name = "鍒涘缓鏃堕棿", index = 16, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16)
+ @ExcelColumn(name = "鍒涘缓鏃堕棿", index = 18, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 16)
private Date createTime;
}
diff --git a/server/services/src/main/java/com/doumee/dao/vo/ShopCenterVO.java b/server/services/src/main/java/com/doumee/dao/vo/ShopCenterVO.java
index 56b90b1..7898c65 100644
--- a/server/services/src/main/java/com/doumee/dao/vo/ShopCenterVO.java
+++ b/server/services/src/main/java/com/doumee/dao/vo/ShopCenterVO.java
@@ -6,6 +6,9 @@
@Data
public class ShopCenterVO {
+ @ApiModelProperty(value = "闂ㄥ簵涓婚敭")
+ private Integer id;
+
@ApiModelProperty(value = "闂ㄥ簵澶村儚鍏ㄨ矾寰�")
private String fullCoverImg;
diff --git a/server/services/src/main/java/com/doumee/service/business/MemberCouponService.java b/server/services/src/main/java/com/doumee/service/business/MemberCouponService.java
index 79682b3..e08e0c3 100644
--- a/server/services/src/main/java/com/doumee/service/business/MemberCouponService.java
+++ b/server/services/src/main/java/com/doumee/service/business/MemberCouponService.java
@@ -5,6 +5,7 @@
import com.doumee.dao.business.model.MemberCoupon;
import java.util.List;
+import java.util.Map;
public interface MemberCouponService {
@@ -27,4 +28,6 @@
PageData<MemberCoupon> findMemberPage(Integer memberId, Integer status, PageWrap<MemberCoupon> pageWrap);
void claimCoupon(Integer memberId, Integer couponId);
+
+ Map<String, Integer> findPendingCount(Integer memberId);
}
diff --git a/server/services/src/main/java/com/doumee/service/business/OrdersService.java b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
index ffff06d..02be838 100644
--- a/server/services/src/main/java/com/doumee/service/business/OrdersService.java
+++ b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
@@ -466,4 +466,5 @@
*/
Boolean checkOperationRadius(Integer orderId, Integer userId, Integer userType, Double lng, Double lat);
+ ManualRefundDetailVO getManualRefundDetail(Integer orderId);
}
\ No newline at end of file
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/CouponServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/CouponServiceImpl.java
index f2a9b5a..3bbf999 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/CouponServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/CouponServiceImpl.java
@@ -164,6 +164,12 @@
if (coupon.getPrice() >= coupon.getLimitPrice()) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浼樻儬閲戦蹇呴』灏忎簬婊¢");
}
+ if (coupon.getLimitPrice() < 1000) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "婊″噺閲戦鏈�浣�10鍏�");
+ }
+ if (coupon.getLimitPrice() - coupon.getPrice() < 1000) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "婊″噺閲戦蹇呴』澶т簬鎵e噺閲戦10鍏冧互涓�");
+ }
if (Objects.isNull(coupon.getPushDays()) || coupon.getPushDays() < 1) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎺ㄩ�佸悗棰嗗彇鏈夋晥澶╂暟蹇呴』澶т簬绛変簬1澶�");
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DataBoardServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DataBoardServiceImpl.java
index 9514975..ce7f4a7 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DataBoardServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DataBoardServiceImpl.java
@@ -150,10 +150,10 @@
Map<String, Long> map = members.stream()
.collect(Collectors.groupingBy(m -> sdf.format(m.getCreateTime()), Collectors.counting()));
- return buildTrendList(range, (date) -> {
+ return buildTrendList(range, (key, label) -> {
MemberTrendVO vo = new MemberTrendVO();
- vo.setDate(date);
- vo.setCount(map.getOrDefault(date, 0L));
+ vo.setDate(label);
+ vo.setCount(map.getOrDefault(key, 0L));
return vo;
});
}
@@ -169,10 +169,10 @@
Map<String, List<Orders>> grouped = orders.stream()
.collect(Collectors.groupingBy(o -> sdf.format(o.getCreateTime())));
- return buildTrendList(range, (date) -> {
- List<Orders> dayOrders = grouped.getOrDefault(date, Collections.emptyList());
+ return buildTrendList(range, (key, label) -> {
+ List<Orders> dayOrders = grouped.getOrDefault(key, Collections.emptyList());
OrderTrendVO vo = new OrderTrendVO();
- vo.setDate(date);
+ vo.setDate(label);
vo.setLocalCount(dayOrders.stream().filter(o -> Constants.equalsInteger(o.getType(), Constants.ZERO)).count());
vo.setRemoteCount(dayOrders.stream().filter(o -> Constants.equalsInteger(o.getType(), Constants.ONE)).count());
return vo;
@@ -227,11 +227,11 @@
}
}
- return buildTrendList(range, (date) -> {
+ return buildTrendList(range, (key, label) -> {
RevenueTrendVO vo = new RevenueTrendVO();
- vo.setDate(date);
- long local = localOrderRevenue.getOrDefault(date, 0L);
- long remote = remoteOrderRevenue.getOrDefault(date, 0L);
+ vo.setDate(label);
+ long local = localOrderRevenue.getOrDefault(key, 0L);
+ long remote = remoteOrderRevenue.getOrDefault(key, 0L);
vo.setLocalRevenue(BigDecimal.valueOf(local).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
vo.setRemoteRevenue(BigDecimal.valueOf(remote).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
return vo;
@@ -718,7 +718,7 @@
@FunctionalInterface
private interface TrendVOBuilder<T> {
- T build(String date);
+ T build(String key, String label);
}
private <T> List<T> buildTrendList(TrendDateRange range, TrendVOBuilder<T> builder) {
@@ -732,7 +732,8 @@
Calendar end = Calendar.getInstance();
end.setTime(range.endDate);
while (!loop.after(end)) {
- result.add(builder.build(sdf.format(loop.getTime())));
+ String dateStr = sdf.format(loop.getTime());
+ result.add(builder.build(dateStr, dateStr));
loop.add(Calendar.DAY_OF_MONTH, 1);
}
} else {
@@ -741,8 +742,9 @@
endCal.setTime(range.endDate);
int endMonth = endCal.get(Calendar.MONTH); // 0-based
for (int m = 0; m <= endMonth; m++) {
- String label = String.format("%02d", m + 1);
- result.add(builder.build(label));
+ String key = String.format("%02d", m + 1);
+ String label = (m + 1) + "鏈�";
+ result.add(builder.build(key, label));
}
}
return result;
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java
index 64a3ac6..509cf69 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java
@@ -246,7 +246,6 @@
IPage<DriverInfo> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
MPJLambdaWrapper<DriverInfo> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
- pageWrap.getModel().setDeleted(Constants.ZERO);
// 鍙告満濮撳悕/鎵嬫満鍙凤紙鍏抽敭瀛楁ā绯婃煡璇級
if (StringUtils.isNotBlank(pageWrap.getModel().getKeyword())) {
@@ -282,7 +281,8 @@
queryWrapper.selectAll(DriverInfo.class)
.select(" ( select ifnull(sum(r.OPT_TYPE * r.AMOUNT),0) from revenue r where r.MEMBER_TYPE = 1 and r.MEMBER_ID= t.id and r.VAILD_STATUS = 1 ) as memberAmount ")
.selectAs(Category::getName,DriverInfo::getCarTypeName)
- .leftJoin(Category.class, Category::getId,DriverInfo::getCarType);
+ .leftJoin(Category.class, Category::getId,DriverInfo::getCarType)
+ .eq(DriverInfo::getDeleted, Constants.ZERO);
queryWrapper.orderByDesc(DriverInfo::getId);
PageData<DriverInfo> pageData = PageData.from(driverInfoMapper.selectPage(page, queryWrapper));
for (DriverInfo d : pageData.getRecords()) {
@@ -560,8 +560,13 @@
driverInfoMapper.insert(newChange);
saveDriverAttachments(newChange.getId(), request, now);
// 鏍囪鍘嗗彶鐨勫彉鏇寸増鏈负鍒犻櫎
-
-
+ driverInfoMapper.update(new UpdateWrapper<DriverInfo>().lambda()
+ .set(DriverInfo::getDeleted, Constants.ONE)
+ .set(DriverInfo::getUpdateTime, now)
+ .eq(DriverInfo::getMemberId, memberId)
+ .eq(DriverInfo::getVersionType, Constants.ONE)
+ .eq(DriverInfo::getDeleted, Constants.ZERO)
+ .ne(DriverInfo::getId, newChange.getId()));
} else {
// auditStatus=0/2锛氱洿鎺ユ洿鏂板彉鏇寸増鏈�
@@ -1881,6 +1886,9 @@
if (!driverId.equals(order.getAcceptDriver())) {
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏃犳潈鎿嶄綔璇ヨ鍗�");
}
+ if (Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "寮傚父璁㈠崟鏃犳硶杩涜纭閫佽揪");
+ }
// 3. 淇濆瓨閫佽揪鍥剧墖
Date now = new Date();
@@ -2271,7 +2279,13 @@
.eq(status != null, Orders::getStatus, status)
.eq(Orders::getDeleted, Constants.ZERO)
.orderByDesc(Orders::getAcceptTime);
-
+ // 鍏抽敭璇嶆悳绱細鏀朵欢浜�/鏀朵欢浜虹數璇濇ā绯娿�佽鍗曞彿绮惧噯
+ if (StringUtils.isNotBlank(model.getKeyword())) {
+ String kw = model.getKeyword().trim();
+ wrapper.and(w -> w.like(Orders::getTakeUser, kw)
+ .or().like(Orders::getTakePhone, kw)
+ .or().like(Orders::getCode, kw));
+ }
IPage<Orders> orderPage = ordersMapper.selectJoinPage(p, Orders.class, wrapper);
List<DriverGrabOrderVO> voList = new ArrayList<>();
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
index 7e792fa..7de8bb1 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
@@ -26,7 +26,9 @@
import java.util.Calendar;
import java.util.Date;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
@Service
@@ -197,6 +199,22 @@
}
@Override
+ public Map<String, Integer> findPendingCount(Integer memberId) {
+ Long waitClaim = memberCouponMapper.selectCount(new QueryWrapper<MemberCoupon>().lambda()
+ .eq(MemberCoupon::getMemberId, memberId)
+ .eq(MemberCoupon::getStatus, Constants.CouponStatus.waitClaim.getKey())
+ .eq(MemberCoupon::getIsdeleted, Constants.ZERO));
+ Long waitUse = memberCouponMapper.selectCount(new QueryWrapper<MemberCoupon>().lambda()
+ .eq(MemberCoupon::getMemberId, memberId)
+ .eq(MemberCoupon::getStatus, Constants.CouponStatus.claimed.getKey())
+ .eq(MemberCoupon::getIsdeleted, Constants.ZERO));
+ Map<String, Integer> result = new LinkedHashMap<>();
+ result.put("waitClaim", waitClaim != null ? waitClaim.intValue() : 0);
+ result.put("waitUse", waitUse != null ? waitUse.intValue() : 0);
+ return result;
+ }
+
+ @Override
@Transactional(rollbackFor = {Exception.class, BusinessException.class})
public void claimCoupon(Integer memberId, Integer couponId) {
// 鏌ヨ璇ヤ細鍛樼殑寰呴鍙栦紭鎯犲埜璁板綍
@@ -207,11 +225,6 @@
.eq(MemberCoupon::getIsdeleted, Constants.ZERO));
if (mc == null) {
throw new BusinessException(ResponseStatus.DATA_EMPTY);
- }
- // 鏍¢獙浼樻儬鍒告槸鍚︽湁鏁�
- Coupon coupon = couponMapper.selectById(couponId);
- if (coupon == null || coupon.getStatus() != Constants.ZERO) {
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浼樻儬鍒告棤鏁�");
}
// 鏍囪宸查鍙栵紝璁$畻鏈夋晥鏈�
Date now = new Date();
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 88412db..6b196d9 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -410,9 +410,9 @@
}
}
// 鏍规嵁openid鏌ヨ褰撳墠缁戝畾鐨勯棬搴�
- if (StringUtils.isNotBlank(member.getOpenid())) {
+ if (Objects.nonNull(member.getLoginShopId())) {
ShopInfo bindShop = shopInfoMapper.selectOne(new QueryWrapper<ShopInfo>().lambda()
- .eq(ShopInfo::getOpenid, member.getOpenid())
+ .eq(ShopInfo::getId, member.getLoginShopId())
.eq(ShopInfo::getDeleted, Constants.ZERO)
.last("limit 1"));
if (bindShop != null) {
@@ -725,6 +725,12 @@
);
}
+ /**
+ * 娉ㄥ唽婊骞磋禒閫佷紭鎯犲埜锛堝畾鏃朵换鍔¤皟鐢級
+ * 瑙勫垯锛氭牴鎹繍钀ラ厤缃� registerCouponYears锛堟弧鍑犲勾璧犻�侊級銆乺egisterCouponGiftCount锛堣嚦澶氳禒閫佹鏁帮級銆乺egisterCouponId锛堣禒閫佷紭鎯犲埜ID鍒楄〃锛夛紝
+ * 閬嶅巻鎵�鏈夋櫘閫氫細鍛橈紝璁$畻娉ㄥ唽骞撮檺锛屾瘡婊¢厤缃勾鏁拌禒閫佷竴娆★紝绱璧犻�佹鏁颁笉瓒呰繃閰嶇疆涓婇檺銆�
+ * 渚嬪锛氶厤缃弧2骞磋禒閫併�佽嚦澶�3娆★紝鍒欐敞鍐岀2/4/6骞村悇璧犻�佷竴娆★紝鍏�3娆°��
+ */
@Override
public void giftRegisterCoupon() {
// 1. 璇诲彇閰嶇疆
@@ -753,11 +759,17 @@
return;
}
- // 3. 鏌ヨ鎵�鏈夋櫘閫氫細鍛�
+ // 3. 鏁版嵁搴撳眰闈㈣繃婊わ細娉ㄥ唽婊onfigYears涓旀湭璧犳弧鐨勬櫘閫氫細鍛�
+ Calendar cal = Calendar.getInstance();
+ cal.add(Calendar.YEAR, -configYears);
+ Date minRegisterDate = cal.getTime();
+
List<Member> members = memberMapper.selectList(new QueryWrapper<Member>().lambda()
.eq(Member::getDeleted, Constants.ZERO)
.eq(Member::getStatus, Constants.ZERO)
.eq(Member::getUserType, Constants.ZERO)
+ .le(Member::getCreateTime, minRegisterDate)
+ .lt(Member::getRegisterCouponGiftCount, maxGiftCount)
.isNotNull(Member::getCreateTime));
Date now = new Date();
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
index 3524470..6269a48 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -133,6 +133,8 @@
@Autowired
private MemberCouponMapper memberCouponMapper;
+ @Autowired
+ private CouponMapper couponMapper;
@Autowired
private AreasBiz areasBiz;
@@ -662,7 +664,7 @@
.le(MemberCoupon::getLimitPrice, totalPrice)
.ge(MemberCoupon::getEndDate, now)
.orderByDesc(MemberCoupon::getPrice)
- .orderByAsc(MemberCoupon::getEndDate));
+ .orderByAsc(MemberCoupon::getCreateDate));
result.setAvailableCoupons(availableCoupons);
if (couponId == null) {
@@ -1151,6 +1153,11 @@
if (Objects.isNull(order)) {
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
+ // 瀹炰粯閲戦 = 鏀粯閲戦 - 閫�娆鹃噾棰� + 閫炬湡璐圭敤
+ long pay = order.getPayAmount() != null ? order.getPayAmount() : 0L;
+ long refund = order.getRefundAmount() != null ? order.getRefundAmount() : 0L;
+ long overdue = order.getOverdueAmount() != null ? order.getOverdueAmount() : 0L;
+ order.setPayAmount(pay - refund + overdue);
OrderDetailVO vo = new OrderDetailVO();
vo.setOrder(order);
@@ -1217,6 +1224,25 @@
for (OrderItemVO v:vo.getDetailList()) {
v.setTypeName(category.getName());
}
+ }
+
+ // 璇勪环淇℃伅
+ List<OrderComment> comments = orderCommentMapper.selectList(new QueryWrapper<OrderComment>().lambda()
+ .eq(OrderComment::getOrderId, id)
+ .eq(OrderComment::getDeleted, Constants.ZERO));
+ if (CollectionUtils.isNotEmpty(comments)) {
+ for (OrderComment c : comments) {
+ if (Constants.equalsInteger(c.getTargetType(), Constants.ONE)) {
+ vo.setDepositScore(c.getScore());
+ } else if (Constants.equalsInteger(c.getTargetType(), Constants.TWO)) {
+ vo.setTakeScore(c.getScore());
+ } else if (Constants.equalsInteger(c.getTargetType(), Constants.THREE)) {
+ vo.setDriverScore(c.getScore());
+ }
+ }
+ vo.setCommentContent(comments.get(0).getContent());
+ vo.setCommentTime(comments.get(0).getCreateTime());
+ vo.setCommentImages(getFileUrls(id, Constants.FileType.COMMENT_ATTACH.getKey(), imgPrefix));
}
// 鍙栨秷/閫�娆剧姸鎬佹椂鏌ヨ閫�娆捐褰�
@@ -1655,7 +1681,8 @@
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
- wrapper.ge(Orders::getFinishTime, cal.getTime());
+ wrapper.ge(Orders::getFinishTime, cal.getTime())
+ .eq(Orders::getStatus, Constants.OrderStatus.finished.getKey());
}
}
// 鍏抽敭璇嶆悳绱細鏀朵欢浜�/鏀朵欢浜虹數璇濇ā绯娿�佽鍗曞彿绮惧噯
@@ -1737,6 +1764,8 @@
fillOverdueStatus(vo, o, details);
// 浼樻儬鍒告姷鎵i噾棰�
vo.setDeductionAmount(o.getDeductionAmount());
+ // 寮傚父璁㈠崟鏍囪瘑
+ vo.setAbnormalOrder(o.getExceptionStatus());
// 鍙紑绁ㄩ噾棰濓紙鏀粯閲戦 - 閫�娆鹃噾棰濓級
if (model != null && model.getInvoiceStatus() != null && Constants.equalsInteger(model.getInvoiceStatus(), Constants.ONE)) {
long payAmt = o.getPayAmount() != null ? o.getPayAmount() : 0L;
@@ -1815,7 +1844,7 @@
.or(w3-> w3.eq(Orders::getType, Constants.ONE).eq(Orders::getDepositShopId, shopId)
.eq(Orders::getStatus, Constants.OrderStatus.waitDeposit.getStatus()))
.or(w2 -> w2.eq(Orders::getType, Constants.ONE).eq(Orders::getTakeShopId, shopId)
- .eq(Orders::getStatus, Constants.OrderStatus.arrived.getStatus())))
+ .in(Orders::getStatus, Constants.OrderStatus.arrived.getStatus(),Constants.OrderStatus.delivering.getStatus())))
);
} else {
wrapper.and(w -> w.eq(Orders::getDepositShopId, shopId).or().eq(Orders::getTakeShopId, shopId));
@@ -1975,6 +2004,7 @@
vo.setUrgentAmount(order.getUrgentAmount());
vo.setIsUrgent(order.getIsUrgent());
vo.setActualPayAmount(Constants.equalsInteger(order.getPayStatus(), Constants.ONE)?order.getPayAmount():order.getEstimatedAmount());
+ vo.setDeductionAmount(order.getDeductionAmount());
// 鏍囪
vo.setExceptionStatus(order.getExceptionStatus());
@@ -1988,13 +2018,12 @@
vo.setPayCountdownMs(calcPayCountdownMs(order));
}
//搴忓彿
- vo.setSortnum(Constants.formatIntegerNum(order.getDepositShopId())+"-"+order.getId());
- if(order.getTakeShopId()!=null){
- String dateStr = new SimpleDateFormat("dd").format(order.getPayTime() != null ? order.getPayTime() : new Date());
- String autoNumStr = String.format("%03d", order.getAutoNum() != null ? order.getAutoNum() : 0);
- String sort = order.getTakeShopId() + "-" + dateStr + "-" + autoNumStr;
- vo.setSortnumTake(sort);
- }
+// vo.setSortnum(Constants.formatIntegerNum(order.getDepositShopId())+"-"+order.getId());
+ String dateStr = new SimpleDateFormat("dd").format(order.getPayTime() != null ? order.getPayTime() : new Date());
+ String autoNumStr = String.format("%03d", order.getAutoNum() != null ? order.getAutoNum() : 0);
+ String sort = order.getDepositShopId() + "-" + dateStr + "-" + autoNumStr;
+ vo.setSortnum(sort);
+ vo.setDepositShopId(order.getDepositShopId());
// 瀛樹欢闂ㄥ簵
if (order.getDepositShopId() != null) {
ShopInfo depositShop = shopInfoMapper.selectById(order.getDepositShopId());
@@ -2282,16 +2311,71 @@
* 淇濆瓨鍙栨秷璁㈠崟鎿嶄綔鏃ュ織
*/
private void restoreCoupon(Orders order) {
-// if (order.getCouponId() == null || order.getDeductionAmount() == null || order.getDeductionAmount() <= 0) {
-// return;
-// }
-// memberCouponMapper.update(new UpdateWrapper<MemberCoupon>().lambda()
-// .set(MemberCoupon::getStatus, Constants.CouponStatus.claimed.getKey())
-// .set(MemberCoupon::getUseDate, null)
-// .set(MemberCoupon::getOrderId, null)
-// .eq(MemberCoupon::getId, order.getCouponId())
-// .eq(MemberCoupon::getOrderId, order.getId())
-// .eq(MemberCoupon::getStatus, Constants.CouponStatus.used.getKey()));
+ if (order.getCouponId() == null || order.getDeductionAmount() == null || order.getDeductionAmount() <= 0) {
+ return;
+ }
+ memberCouponMapper.update(new UpdateWrapper<MemberCoupon>().lambda()
+ .set(MemberCoupon::getStatus, Constants.CouponStatus.claimed.getKey())
+ .set(MemberCoupon::getUseDate, null)
+ .set(MemberCoupon::getOrderId, null)
+ .eq(MemberCoupon::getId, order.getCouponId())
+ .eq(MemberCoupon::getOrderId, order.getId())
+ .eq(MemberCoupon::getStatus, Constants.CouponStatus.used.getKey()));
+ }
+
+ private void giftOrderCoupon(Integer memberId) {
+ String orderCountStr = operationConfigBiz.getConfig().getOrderCouponOrderCount();
+ String giftCountStr = operationConfigBiz.getConfig().getOrderCouponGiftCount();
+ String couponIdsStr = operationConfigBiz.getConfig().getOrderCouponId();
+ if (StringUtils.isAnyBlank(orderCountStr, giftCountStr, couponIdsStr)) return;
+
+ int orderCount = Integer.parseInt(orderCountStr);
+ int maxGift = Integer.parseInt(giftCountStr);
+
+ Member member = memberMapper.selectById(memberId);
+ if (member == null) return;
+ int gifted = member.getOrderCouponGiftCount() != null ? member.getOrderCouponGiftCount() : 0;
+ if (gifted >= maxGift) return;
+
+ long completedCount = ordersMapper.selectCount(new QueryWrapper<Orders>().lambda()
+ .eq(Orders::getMemberId, memberId)
+ .eq(Orders::getDeleted, Constants.ZERO)
+ .notIn(Orders::getStatus,
+ Constants.OrderStatus.waitPay.getKey(),
+ Constants.OrderStatus.waitDeposit.getKey()));
+ if (completedCount < orderCount || completedCount % orderCount != 0) return;
+
+ String[] idArr = couponIdsStr.split(",");
+ Date now = new Date();
+ for (String idStr : idArr) {
+ String trimmed = idStr.trim();
+ if (StringUtils.isBlank(trimmed)) continue;
+ Coupon coupon = couponMapper.selectById(Integer.valueOf(trimmed));
+ if (coupon == null || Constants.equalsInteger(coupon.getIsdeleted(), Constants.ONE)) continue;
+ MemberCoupon mc = new MemberCoupon();
+ mc.setCouponId(coupon.getId());
+ mc.setMemberId(memberId);
+ mc.setStatus(Constants.CouponStatus.waitClaim.getKey());
+ Calendar validCal = Calendar.getInstance();
+ validCal.add(Calendar.DAY_OF_MONTH, coupon.getPushDays() != null ? coupon.getPushDays() : 7);
+ mc.setValidDate(validCal.getTime());
+ mc.setName(coupon.getName());
+ mc.setInfo(coupon.getInfo());
+ mc.setType(coupon.getType());
+ mc.setLimitPrice(coupon.getLimitPrice());
+ mc.setPrice(coupon.getPrice());
+ mc.setGetMethod(coupon.getGetMethod());
+ mc.setCouponType(coupon.getCouponType());
+ mc.setPushDays(coupon.getPushDays());
+ mc.setValidDays(coupon.getValidDays());
+ mc.setIsdeleted(Constants.ZERO);
+ mc.setCreateDate(now);
+ mc.setEditDate(now);
+ memberCouponMapper.insert(mc);
+ }
+
+ member.setOrderCouponGiftCount(gifted + 1);
+ memberMapper.updateById(member);
}
private void saveCancelLog(Orders order, Constants.OrderLogType logType, String reason, Integer memberId) {
@@ -2406,7 +2490,7 @@
refund.setRefundTime(now);
ordersRefundMapper.updateById(refund);
// 閫�娆炬垚鍔燂紝鎵ц鎵f
- processManualRefundDeduction(order, depositShopDeduct, takeShopDeduct, driverDeduct);
+ //processManualRefundDeduction(order, depositShopDeduct, takeShopDeduct, driverDeduct);
} else if (com.wechat.pay.java.service.refund.model.Status.PROCESSING.equals(refundStatus)) {
refund.setStatus(Constants.ZERO); // 閫�娆句腑锛岀瓑鍥炶皟
ordersRefundMapper.updateById(refund);
@@ -2428,7 +2512,6 @@
// 7. 鏇存柊璁㈠崟锛氭爣璁板凡鎵嬪姩閫�娆撅紝绱姞閫�娆鹃噾棰�
ordersMapper.update(new UpdateWrapper<Orders>().lambda()
.set(Orders::getManualRefund, Constants.ONE)
- .setSql(" REFUND_AMOUNT = IFNULL(REFUND_AMOUNT, 0) + " + dto.getRefundAmount())
.set(Orders::getUpdateTime, now)
.eq(Orders::getId, order.getId()));
}
@@ -2511,10 +2594,11 @@
Long driverDeduct = deductJson.getLong("driverDeduct");
processManualRefundDeduction(order, depositShopDeduct, takeShopDeduct, driverDeduct);
- // 鏍囪璁㈠崟宸叉墜鍔ㄩ��娆撅紝绱姞閫�娆鹃噾棰�
+ // 鏍囪璁㈠崟宸叉墜鍔ㄩ��娆撅紝绱姞閫�娆鹃噾棰濓紝鍚屾鏇存柊totalAmount
ordersMapper.update(new UpdateWrapper<Orders>().lambda()
.set(Orders::getManualRefund, Constants.ONE)
.setSql(" REFUND_AMOUNT = IFNULL(REFUND_AMOUNT, 0) + " + refundRecord.getRefundAmount())
+ .setSql(" TOTAL_AMOUNT = IFNULL(TOTAL_AMOUNT, 0) - " + refundRecord.getRefundAmount())
.set(Orders::getUpdateTime, new Date())
.eq(Orders::getId, order.getId()));
}
@@ -3262,6 +3346,8 @@
sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_PICKUP_REMIND, order.getId(),
"orderNo", order.getCode(), "shopName", shopName);
}
+ // 瀵勫瓨鎴愬姛璧犻�佷紭鎯犲埜
+ giftOrderCoupon(order.getMemberId());
} else if (Constants.equalsInteger(status, Constants.OrderStatus.arrived.getStatus())) {
// 寮傚湴瀵勫瓨 + 鏃犲彇浠堕棬搴� 鈫� 鏃犳硶鏍搁攢锛堝鎴疯嚜鍙栵紝鏃犻棬搴楁搷浣滐級
if (Constants.equalsInteger(order.getType(), Constants.ONE) && order.getTakeShopId() == null) {
@@ -3881,14 +3967,16 @@
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鏍搁攢鐮佹棤鏁�");
}
- // 浠呭紓鍦板瘎瀛� + 鏈夊彇浠堕棬搴� + 娲鹃�佷腑(4) 鍙牳閿�
- if (!Constants.equalsInteger(order.getType(), Constants.ONE)) {
+ // 浠呭紓鍦板瘎瀛� + 鏈夊彇浠堕棬搴� + 娲鹃�佷腑(4) 鍙牳閿�锛堝紓甯歌鍗曞厑璁革級
+ if (!Constants.equalsInteger(order.getType(), Constants.ONE)
+ && !Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE)) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浠呭紓鍦板瘎瀛樿鍗曟敮鎸佸徃鏈烘牳閿�");
}
- if (order.getTakeShopId() == null) {
+ if (order.getTakeShopId() == null && !Constants.equalsInteger(order.getExceptionStatus(), Constants.ONE)) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇ヨ鍗曟棤鍙栦欢闂ㄥ簵锛屾棤闇�鍙告満鏍搁攢");
}
- if (!Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.delivering.getStatus())) {
+ if (!Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.delivering.getStatus())
+ && !Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.deposited.getStatus())) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠璁㈠崟鐘舵�佷笉鍏佽鏍搁攢");
}
@@ -4601,7 +4689,7 @@
sendSmsNotify(member != null ? member.getTelephone() : null,
Constants.SmsNotify.MEMBER_CANCELLED, "orderNo", order.getCode());
}
-
+ restoreCoupon(order);
count++;
} catch (Exception e) {
log.error("鍙栨秷瓒呮椂璁㈠崟寮傚父, orderId={}, error={}", order.getId(), e.getMessage());
@@ -5019,29 +5107,26 @@
}
targetLat = order.getDepositLat();
targetLgt = order.getDepositLgt();
- } else if (Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.arrived.getStatus())) {
- // status=5 闂ㄥ簵瀹屾垚鏍搁攢
- if (Constants.equalsInteger(order.getType(), Constants.ZERO)) {
- // 灏卞湴瀛樺彇 鈫� 瀵规瘮瀛樹欢闂ㄥ簵
- if (!Constants.equalsInteger(order.getDepositShopId(), userId)) {
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏃犳潈鎿嶄綔璇ヨ鍗�");
- }
- targetLat = order.getDepositLat();
- targetLgt = order.getDepositLgt();
- } else {
- // 寮傚湴瀛樺彇 鈫� 瀵规瘮鍙栦欢闂ㄥ簵
- if (!Constants.equalsInteger(order.getTakeShopId(), userId)) {
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏃犳潈鎿嶄綔璇ヨ鍗�");
- }
- targetLat = order.getTakeLat();
- targetLgt = order.getTakeLgt();
+ } else if (Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.arrived.getStatus())&&Constants.equalsInteger(order.getType(), Constants.ZERO)) {
+ // 灏卞湴瀛樺彇 鈫� 瀵规瘮瀛樹欢闂ㄥ簵
+ if (!Constants.equalsInteger(order.getDepositShopId(), userId)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏃犳潈鎿嶄綔璇ヨ鍗�");
}
+ targetLat = order.getDepositLat();
+ targetLgt = order.getDepositLgt();
+ } else if ((Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.delivering.getStatus())||Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.arrived.getStatus()))&&Constants.equalsInteger(order.getType(), Constants.ONE)) {
+ // 寮傚湴瀛樺彇 鈫� 瀵规瘮鍙栦欢闂ㄥ簵
+ if (!Constants.equalsInteger(order.getTakeShopId(), userId)) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏃犳潈鎿嶄綔璇ヨ鍗�");
+ }
+ targetLat = order.getTakeLat();
+ targetLgt = order.getTakeLgt();
} else {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璁㈠崟鐘舵�佷笉鍏佽姝ゆ搷浣�");
}
} else if (Constants.equalsInteger(userType, Constants.ONE)) {
// 鍙告満鎿嶄綔
- if (Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.deposited.getStatus())) {
+ if (Constants.equalsInteger(order.getStatus(), Constants.OrderStatus.accepted.getStatus())) {
// status=2 鍙告満鍙栦欢
if (!Constants.equalsInteger(order.getAcceptDriver(), userId)) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鏃犳潈鎿嶄綔璇ヨ鍗�");
@@ -5082,8 +5167,8 @@
if (original.getTakeShopId() != null) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇ヨ鍗曞凡鍏宠仈鍙栦欢闂ㄥ簵锛屼笉鏀寔寮傚父澶勭悊");
}
- if (!Constants.equalsInteger(original.getStatus(), Constants.FIVE)) {
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浠呮敮鎸佸凡閫佽揪鐘舵�佺殑璁㈠崟");
+ if (!Constants.equalsInteger(original.getStatus(), Constants.OrderStatus.delivering.getKey())) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "浠呮敮鎸侀厤閫佷腑鐨勮鍗曡繘琛屽紓甯稿鐞�");
}
if (Constants.equalsInteger(original.getExceptionStatus(), Constants.ONE)) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇ヨ鍗曞凡澶勭悊杩囧紓甯革紝璇峰嬁閲嶅鎿嶄綔");
@@ -5299,4 +5384,27 @@
}
}
+ @Override
+ public ManualRefundDetailVO getManualRefundDetail(Integer orderId) {
+ OrdersRefund refundRecord = ordersRefundMapper.selectOne(new QueryWrapper<OrdersRefund>().lambda()
+ .eq(OrdersRefund::getOrderId, orderId)
+ .eq(OrdersRefund::getType, Constants.FOUR)
+ .eq(OrdersRefund::getDeleted, Constants.ZERO)
+ .orderByDesc(OrdersRefund::getCreateTime)
+ .last("limit 1"));
+ if (refundRecord == null) {
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ ManualRefundDetailVO vo = new ManualRefundDetailVO();
+ vo.setRefundAmount(refundRecord.getRefundAmount());
+ if (StringUtils.isNotBlank(refundRecord.getDeductInfo())) {
+ JSONObject json = JSONObject.parseObject(refundRecord.getDeductInfo());
+ vo.setDepositShopDeduct(json.getLong("depositShopDeduct"));
+ vo.setTakeShopDeduct(json.getLong("takeShopDeduct"));
+ vo.setDriverDeduct(json.getLong("driverDeduct"));
+ }
+ vo.setRefundRemark(refundRecord.getRefundRemark());
+ return vo;
+ }
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java
index e302df5..1c7807f 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java
@@ -19,6 +19,7 @@
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.MultifileMapper;
import com.doumee.dao.business.OrdersMapper;
+import com.doumee.dao.business.OtherOrdersMapper;
import com.doumee.dao.business.PricingRuleMapper;
import com.doumee.dao.business.RevenueMapper;
import com.doumee.dao.business.ShopInfoMapper;
@@ -27,6 +28,7 @@
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Multifile;
import com.doumee.dao.business.model.Orders;
+import com.doumee.dao.business.model.OtherOrders;
import com.doumee.dao.business.model.PricingRule;
import com.doumee.dao.business.model.Revenue;
import com.doumee.dao.business.model.ShopInfo;
@@ -122,6 +124,9 @@
@Autowired
private CategoryMapper categoryMapper;
+
+ @Autowired
+ private OtherOrdersMapper otherOrdersMapper;
@Override
public Integer create(ShopInfo shopInfo) {
@@ -342,6 +347,8 @@
newChange.setCreateTime(now);
newChange.setUpdateTime(now);
newChange.setRegionMemberId(member.getId());
+ newChange.setRevenueShareConfig(changeVersion.getRevenueShareConfig());
+ newChange.setDeliveryArea(changeVersion.getDeliveryArea());
setDepositAmountFromPricingRule(newChange);
shopInfoMapper.insert(newChange);
@@ -564,6 +571,7 @@
changeVersion.setAuditUserId(auditDTO.getAuditUser());
changeVersion.setRevenueShareConfig(revenueShareConfig);
changeVersion.setUpdateTime(now);
+ setDefaultDeliveryRange(changeVersion);
shopInfoMapper.updateById(changeVersion);
// 鏍囪鍘嗗彶鐨勫彉鏇寸増鏈负鍒犻櫎
@@ -1213,8 +1221,20 @@
vo.setTagId(tag.getId());
vo.setTagName(tag.getName());
vo.setShopCount(count != null ? count.intValue() : 0);
+ vo.setSortnum(tag.getSortnum());
result.add(vo);
}
+
+ // 鎸夐棬搴楁暟閲忓�掑簭锛岀浉鍚屾椂鎸夋帓搴忕爜闄嶅簭
+ result.sort((a, b) -> {
+ int cmp = Integer.compare(
+ b.getShopCount() != null ? b.getShopCount() : 0,
+ a.getShopCount() != null ? a.getShopCount() : 0);
+ if (cmp != 0) return cmp;
+ return Integer.compare(
+ b.getSortnum() != null ? b.getSortnum() : 0,
+ a.getSortnum() != null ? a.getSortnum() : 0);
+ });
// 鎬绘暟鏀惧湪鍒楄〃绗竴涓�
Long totalCount = shopInfoMapper.selectCount(baseQw);
@@ -1396,6 +1416,7 @@
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
ShopCenterVO vo = new ShopCenterVO();
+ vo.setId(shop.getId());
vo.setShopName(shop.getName());
vo.setLinkName(shop.getLinkName());
vo.setCompanyType(shop.getCompanyType());
@@ -1597,14 +1618,34 @@
.count();
vo.setFinishedOrderCount((int) finishedCount);
- // 鎬昏惀鏀堕噾棰� = sum(totalAmount - refundAmount)
- long totalRevenue = orders.stream()
+ // 鎬昏惀鏀堕噾棰� = sum(鏀粯閲戦 - 閫�娆鹃噾棰�) + 閫炬湡閲戦
+ long baseRevenue = orders.stream()
.mapToLong(o -> {
- long total = o.getTotalAmount() != null ? o.getTotalAmount() : 0L;
+ long pay = o.getPayAmount() != null ? o.getPayAmount() : 0L;
long refund = o.getRefundAmount() != null ? o.getRefundAmount() : 0L;
- return total - refund;
+ return pay - refund;
}).sum();
- vo.setTotalRevenue(totalRevenue);
+
+ // 鏌ヨ璇ラ棬搴楀弬涓庣殑閫炬湡璐圭敤锛堜粠other_orders琛ㄨ幏鍙栵紝type=2宸叉敮浠橈級
+ QueryWrapper<OtherOrders> overdueQw = new QueryWrapper<>();
+ overdueQw.lambda()
+ .eq(OtherOrders::getDeleted, Constants.ZERO)
+ .eq(OtherOrders::getType, Constants.TWO)
+ .eq(OtherOrders::getPayStatus, Constants.ONE)
+ .inSql(OtherOrders::getOrderId,
+ "SELECT id FROM orders WHERE DELETED = 0 AND (DEPOSIT_SHOP_ID = " + shopId + " OR TAKE_SHOP_ID = " + shopId + ")");
+ if (query.getStartDate() != null) {
+ overdueQw.lambda().ge(OtherOrders::getCreateTime, query.getStartDate());
+ }
+ if (query.getEndDate() != null) {
+ overdueQw.lambda().le(OtherOrders::getCreateTime, Utils.Date.getEnd(query.getEndDate()));
+ }
+ List<OtherOrders> overdueOrders = otherOrdersMapper.selectList(overdueQw);
+ long overdueTotal = overdueOrders.stream()
+ .mapToLong(o -> o.getPayAccount() != null ? o.getPayAccount() : 0L)
+ .sum();
+
+ vo.setTotalRevenue(baseRevenue + overdueTotal);
// 闂ㄥ簵鍒嗘垚閲戦
long shopFee = 0L;
diff --git a/server/web/src/main/java/com/doumee/api/web/MemberCouponApi.java b/server/web/src/main/java/com/doumee/api/web/MemberCouponApi.java
index af4b87b..cea3fa8 100644
--- a/server/web/src/main/java/com/doumee/api/web/MemberCouponApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/MemberCouponApi.java
@@ -14,6 +14,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import java.util.Map;
+
@Slf4j
@Api(tags = "浼氬憳浼樻儬鍒�")
@RestController
@@ -35,6 +37,16 @@
}
@LoginRequired
+ @ApiOperation(value = "寰呴鍙�/寰呬娇鐢ㄦ暟閲�", notes = "瑙掓爣鐢�")
+ @GetMapping("/pendingCount")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+ })
+ public ApiResponse<Map<String, Integer>> pendingCount() {
+ return ApiResponse.success("鎿嶄綔鎴愬姛", memberCouponService.findPendingCount(getMemberId()));
+ }
+
+ @LoginRequired
@ApiOperation(value = "棰嗗彇浼樻儬鍒�", notes = "灏忕▼搴忕")
@GetMapping("/claim")
@ApiImplicitParams({
diff --git a/server/web/src/main/java/com/doumee/api/web/PaymentCallback.java b/server/web/src/main/java/com/doumee/api/web/PaymentCallback.java
index 3c79742..e0b60ed 100644
--- a/server/web/src/main/java/com/doumee/api/web/PaymentCallback.java
+++ b/server/web/src/main/java/com/doumee/api/web/PaymentCallback.java
@@ -202,7 +202,8 @@
log.info("閫�娆捐褰曠姸鎬佸凡鏇存柊, refundRecordId={}, status={}", refundRecord.getId(), refundRecord.getStatus());
// 鎵嬪姩閫�娆�(type=4)閫�娆炬垚鍔� 鈫� 鎵ц鎵f
- if (Status.SUCCESS.equals(refundStatus) && Constants.equalsInteger(refundRecord.getType(), Constants.FOUR)) {
+ if (Status.SUCCESS.equals(refundStatus)
+ && Constants.equalsInteger(refundRecord.getType(), Constants.FOUR)) {
try {
ordersService.processManualRefundCallback(refundRecord);
} catch (Exception ex) {
--
Gitblit v1.9.3