From ee00808d53a14f0b7629deaba4a9ef766b21f50d Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Mon, 4 Sep 2023 13:37:22 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E7=A0=8D?= =?UTF-8?q?=E4=BB=B7=E8=AE=A2=E5=8D=95=E5=BA=93=E5=AD=98=E4=B8=8D=E8=B6=B3?= =?UTF-8?q?=E6=97=B6=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/utils/CallTest.java | 6 +- .../com/iformall/service/WxOrderService.java | 8 ++ .../service/helper/WxOrderServiceHelper.java | 76 ++++++++++++------- .../service/impl/WxOrderServiceImpl.java | 12 ++- .../service/impl/WxPayOrderServiceImpl.java | 2 +- 5 files changed, 70 insertions(+), 34 deletions(-) diff --git a/mallinkPublicApi/src/main/java/com/iformall/utils/CallTest.java b/mallinkPublicApi/src/main/java/com/iformall/utils/CallTest.java index 8945ced5a..8caeb86bb 100644 --- a/mallinkPublicApi/src/main/java/com/iformall/utils/CallTest.java +++ b/mallinkPublicApi/src/main/java/com/iformall/utils/CallTest.java @@ -12,9 +12,9 @@ public class CallTest { private static final String BASIC_URL = "https://openapitest.malls.iformall.com"; public static void main(String[] args) { - String appId = "CP6nwHvZ"; - String appKey = "b257eb97bb9380714306a077a66086e8b1f10639"; - String signKey = "C61842C8570524AA81756C53B8096978A06AE00D"; + String appId = "YhCW8Dra"; + String appKey = "389ac85b768b19427685bcc4adea0474cef22a14"; + String signKey = "B0AB3E2CBCB484D04AEAD0BEF933F7CF5489450C"; // 会员注册 // userRegister(appId, appKey, signKey); diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 9b5b108ba..f3be3e4eb 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -200,6 +200,14 @@ public interface WxOrderService { void updateStatusByPressCouponId(Long couponId, TenantEntity tenantEntity,int orderStatus); + /** + * 通过优惠券id更新订单状态 + * @param tenantId + * @param couponId + * @param orderStatus + */ + void updateStatusByPressCouponId(String tenantId, Long couponId, int orderStatus); + void updateOrderStatus(WxOrder order); void updateOrderGroupStatusByCouponId(Long id, TenantEntity tenantEntity, Integer code); diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxOrderServiceHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxOrderServiceHelper.java index 5fd12a9fd..b3cc03ebc 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxOrderServiceHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxOrderServiceHelper.java @@ -2,10 +2,13 @@ package com.iformall.service.helper; import com.iformall.common.ErrorCode; import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.EnumCacheKey; +import com.iformall.enums.EnumOrderStatus; import com.iformall.exception.MallinkException; import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxCouponService; +import com.iformall.service.WxOrderService; import com.iformall.utils.RedisLock; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,48 +16,63 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.util.concurrent.CompletableFuture; + @Service public class WxOrderServiceHelper { - private static final Logger logger = LoggerFactory.getLogger(WxOrderServiceHelper.class); - + private static final Logger logger = LoggerFactory.getLogger(WxOrderServiceHelper.class); + @Lazy @Autowired WxCouponChannelService wxCouponChannelService; - + @Lazy @Autowired WxCouponService wxCouponService; - + + @Lazy + @Autowired + private WxOrderService wxOrderService; + @Autowired RedisLock redisLock; + /** * 微信订单是否可以支付 */ - public void reduceStock(boolean isChannelStockReduce, WxCoupon coupon,Long couponChannelId,int number) throws Exception{ - if (isChannelStockReduce) { - try { - wxCouponChannelService.reduceChannelStock(coupon,couponChannelId,number); - long stock = redisLock.decrease(EnumCacheKey.COUPON_CHANNEL_STOCK.getMessage()+couponChannelId, number); - if (stock < 0 ) { - throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"券["+coupon.getTitle()+"]渠道["+couponChannelId+"]库存已为零!"); - } - } catch (RuntimeException e) { - throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"券["+coupon.getTitle()+"]渠道["+couponChannelId+"]库存更新失败!"+e.getMessage()); - } - - }else { - try { - wxCouponService.reduceRemainInventory(coupon,coupon.getId(),number); - long stock = redisLock.decrease(EnumCacheKey.COUPON_STOCK.getMessage()+coupon.getId(), number); - if (stock < 0 ) { - throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"券["+coupon.getTitle()+"]库存已为零!"); - } - } catch (RuntimeException e) { - logger.error("此券减库存失败, couponId: " + coupon.getId(),e); - throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(),"券["+coupon.getTitle()+"]库存更新失败!"+e.getMessage()); - } - } + public void reduceStock(boolean isChannelStockReduce, WxCoupon coupon, Long couponChannelId, int number, Boolean isPressOrder) throws Exception { + long stock; + if (isChannelStockReduce) { + try { + wxCouponChannelService.reduceChannelStock(coupon, couponChannelId, number); + stock = redisLock.decrease(EnumCacheKey.COUPON_CHANNEL_STOCK.getMessage() + couponChannelId, number); + if (stock < 0) { + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), "券[" + coupon.getTitle() + "]渠道[" + couponChannelId + "]库存已为零!"); + } + } catch (RuntimeException e) { + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), "券[" + coupon.getTitle() + "]渠道[" + couponChannelId + "]库存更新失败!" + e.getMessage()); + } + + } else { + try { + wxCouponService.reduceRemainInventory(coupon, coupon.getId(), number); + stock = redisLock.decrease(EnumCacheKey.COUPON_STOCK.getMessage() + coupon.getId(), number); + if (stock < 0) { + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), "券[" + coupon.getTitle() + "]库存已为零!"); + } + } catch (RuntimeException e) { + logger.error("此券减库存失败, couponId: " + coupon.getId(), e); + throw new MallinkException(ErrorCode.ORDER_IS_FAIL.getCode(), "券[" + coupon.getTitle() + "]库存更新失败!" + e.getMessage()); + } + } + + // 如果是砍价订单,当库存不足时自动取消进行中的订单 + CompletableFuture.runAsync(() -> { + if (isPressOrder && stock <= 0) { + wxOrderService.updateStatusByPressCouponId(coupon.getTenantId(), coupon.getCouponId(), EnumOrderStatus.ORDER_STATUS_PRESS_CANCEL.getCode()); + } + }); } - + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 714c5d3c5..9aef44815 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1121,7 +1121,7 @@ public class WxOrderServiceImpl implements WxOrderService { } if (isReduceStock) { try { - wxOrderServiceHelper.reduceStock(isChannelStockReduce,coupon,couponChannelId, number); + wxOrderServiceHelper.reduceStock(isChannelStockReduce,coupon,couponChannelId, number, isPressOrder); }catch (Exception e) { throw new MallinkException(ErrorCode.DB_FAIL.getCode(),e.getMessage()); } @@ -3054,6 +3054,16 @@ public class WxOrderServiceImpl implements WxOrderService { wxOrderMapper.updateStatusByPressCouponId(updateOrder); } + @Override + public void updateStatusByPressCouponId(String tenantId, Long couponId, int orderStatus) { + WxOrder updateOrder = new WxOrder(); + updateOrder.setTenantId(tenantId); + updateOrder.setOrderStatus(orderStatus); + updateOrder.setProductId(couponId); + updateOrder.setUpdateDate(new Date()); + wxOrderMapper.updateStatusByPressCouponId(updateOrder); + } + @Autowired @Qualifier("cUserBasicInfoRedisTemplate") RedisTemplate cUserBasicInfoRedisTemplate; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 3df03d19b..798158b87 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -214,7 +214,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if (null != coupon && coupon.getType().intValue() == EnumCouponType.COUPON_PRESS.getCode().intValue() && null != coupon.getPressPayReduceStock() && coupon.getPressPayReduceStock().intValue() == EnumYesOrNo.YES.getCode().intValue()) { try { - wxOrderServiceHelper.reduceStock(false,coupon,order.getCouponChannelId(), 1); + wxOrderServiceHelper.reduceStock(false,coupon,order.getCouponChannelId(), 1, true); return true; }catch(Exception e) { //如果此时扣库存失败,则需要给订单退款 From a95fc9dc9f5f2cd9a862afb31d80bba1833c9d1f Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Mon, 4 Sep 2023 14:22:59 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E7=A0=8D?= =?UTF-8?q?=E4=BB=B7=E8=AE=A2=E5=8D=95=E5=BA=93=E5=AD=98=E4=B8=8D=E8=B6=B3?= =?UTF-8?q?=E6=97=B6=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/service/helper/WxOrderServiceHelper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxOrderServiceHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxOrderServiceHelper.java index b3cc03ebc..e2b01ff2f 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxOrderServiceHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxOrderServiceHelper.java @@ -5,6 +5,7 @@ import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.base.TenantEntity; import com.iformall.enums.EnumCacheKey; import com.iformall.enums.EnumOrderStatus; +import com.iformall.enums.EnumYesOrNo; import com.iformall.exception.MallinkException; import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxCouponService; @@ -67,9 +68,9 @@ public class WxOrderServiceHelper { } } - // 如果是砍价订单,当库存不足时自动取消进行中的订单 + // 砍价订单,支付时扣库存,库存不足 则修改砍价订单状态 CompletableFuture.runAsync(() -> { - if (isPressOrder && stock <= 0) { + if (isPressOrder && null != coupon.getPressPayReduceStock() && coupon.getPressPayReduceStock().intValue() == EnumYesOrNo.YES.getCode().intValue() && stock <= 0 ) { wxOrderService.updateStatusByPressCouponId(coupon.getTenantId(), coupon.getCouponId(), EnumOrderStatus.ORDER_STATUS_PRESS_CANCEL.getCode()); } }); From 23290082d00bc7987bcaed100eec523d42c848e9 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Mon, 4 Sep 2023 18:43:36 +0800 Subject: [PATCH 3/6] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E5=81=9C?= =?UTF-8?q?=E8=BD=A6=E5=85=A5=E5=9C=BA=E5=9B=9E=E8=B0=83=E5=B9=82=E7=AD=89?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../car/WxParkCallBackBaseController.java | 17 +++++++---------- .../com/iformall/utils/RedisCacheUtils.java | 4 ++++ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java index 3747d80ea..790b6b45e 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java @@ -16,9 +16,6 @@ import com.iformall.exception.MallinkException; import com.iformall.service.*; import com.iformall.service.park.ParkFactory; import com.iformall.service.park.entity.ParkNotifyParam; -import com.iformall.service.park.impl.cyf.CYFUtil; -import com.iformall.service.park.impl.etcp.ETCPUtil; -import com.iformall.service.park.impl.tjd.TJDUtil; import com.iformall.service.park.utils.ParkCacheUtils; import com.iformall.utils.DateUtils; import com.iformall.utils.RedisCacheUtils; @@ -30,17 +27,11 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.HashMap; import java.util.List; -import java.util.Map; @RestController public class WxParkCallBackBaseController extends BaseController { @@ -184,9 +175,15 @@ public class WxParkCallBackBaseController extends BaseController { if (null == param) { return new Result(); } + // 回调去重 + String key = "callback:" + param.getCarNumber(); + if (RedisCacheUtils.hasKey(redisTemplate, key)) { + logger.info("回调数据重复=========>{}", JSON.toJSONString(sourceParam)); + return new Result(); + } + RedisCacheUtils.cache(redisTemplate, key, "", 60 * 2); String carNumber = param.getCarNumber(); - ParkCacheUtils.removeCache(redisTemplate, vendor.getMessage(), carNumber); ParkCacheUtils.setCarCouponUnUseCacheLock(redisTemplate, vendor.getMessage(), carNumber); diff --git a/mallinkService/src/main/java/com/iformall/utils/RedisCacheUtils.java b/mallinkService/src/main/java/com/iformall/utils/RedisCacheUtils.java index d4a3f31e7..351c502fa 100644 --- a/mallinkService/src/main/java/com/iformall/utils/RedisCacheUtils.java +++ b/mallinkService/src/main/java/com/iformall/utils/RedisCacheUtils.java @@ -169,4 +169,8 @@ public class RedisCacheUtils { Set keys = template.keys(prefix+"*"); template.delete(keys); } + + public static Boolean hasKey(RedisTemplate template,String key) { + return template.hasKey(key); + } } From 8a77a4e6ad888960baaed2a6ed57290d25f3f409 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Mon, 4 Sep 2023 19:42:56 +0800 Subject: [PATCH 4/6] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/callback/car/WxParkCallBackBaseController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java index 790b6b45e..cab2cf9b8 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java @@ -178,7 +178,7 @@ public class WxParkCallBackBaseController extends BaseController { // 回调去重 String key = "callback:" + param.getCarNumber(); if (RedisCacheUtils.hasKey(redisTemplate, key)) { - logger.info("回调数据重复=========>{}", JSON.toJSONString(sourceParam)); + logger.info("回调数据重复=========>{}", JSON.toJSONString(param)); return new Result(); } RedisCacheUtils.cache(redisTemplate, key, "", 60 * 2); From 4a31aea401e20164c4a3387905556a6252e1aab8 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Tue, 5 Sep 2023 14:28:51 +0800 Subject: [PATCH 5/6] =?UTF-8?q?feat(B)=EF=BC=9A=E6=96=B0=E5=A2=9E=E6=A0=B8?= =?UTF-8?q?=E9=94=80=EF=BC=8C=E6=94=B6=E9=93=B6=E7=BB=9F=E8=AE=A1=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCouponOrderController.java | 7 +++++ .../controller/WxMicroPayController.java | 8 +++++ .../com/iformall/domain/vo/SumMicroPayVO.java | 11 +++++++ .../com/iformall/domain/vo/SumVerifiedVO.java | 11 +++++++ .../iformall/mapper/WxCouponOrderMapper.java | 10 ++++++ .../com/iformall/mapper/WxOrderMapper.java | 2 ++ .../service/WxCouponOrderService.java | 5 +-- .../com/iformall/service/WxOrderService.java | 1 + .../impl/WxCouponOrderServiceImpl.java | 12 ++++--- .../service/impl/WxOrderServiceImpl.java | 23 ++++++++++++-- .../resources/mapper/WxCouponOrderMapper.xml | 15 +++++++++ .../main/resources/mapper/WxOrderMapper.xml | 31 ++++++++++++++++++- 12 files changed, 127 insertions(+), 9 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/SumMicroPayVO.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/SumVerifiedVO.java diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index a3ca88f73..fc479a6a6 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -153,6 +153,13 @@ public class WxCouponOrderController extends BaseController { return wxCouponOrderService.listOnDateAsPageV2(getLoginBUser().getId(), startDate, endDate, pageNum, pageSize, true); } + @ApiOperation("核销流水统计接口") + @GetMapping("sumVerified") + public ResultData sumVerified(@RequestParam("startDate") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date startDate, + @RequestParam("endDate") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date endDate) { + return wxCouponOrderService.sumVerified(getLoginBUser(), startDate, endDate); + } + @ApiOperation("某日期交易总流水") @GetMapping("getUnverifiedAmountOnDate") @ApiImplicitParams({ diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java index 9439d1864..6ae807016 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java @@ -276,6 +276,14 @@ public class WxMicroPayController extends BaseController { return wxOrderService.microPayListOnDateAsPageV2(getLoginBUser().getId(), EnumOrderType.MICROPAY.getCode(), startDate, endDate, pageNum, pageSize); } + @RedisCache + @ApiOperation("付款码支付交易流水分页列表接口") + @GetMapping("sumMicroPay") + public ResultData sumMicroPay(@RequestParam("startDate") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date startDate, + @RequestParam("endDate") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date endDate) { + return wxOrderService.sumMicroPay(getLoginBUser(), EnumOrderType.MICROPAY.getCode(), startDate, endDate); + } + @RedisCache @ApiOperation("付款码支付某日期交易总流水") @GetMapping("getMicroPayAmountOnDate") diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/SumMicroPayVO.java b/mallinkService/src/main/java/com/iformall/domain/vo/SumMicroPayVO.java new file mode 100644 index 000000000..810b8532e --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/SumMicroPayVO.java @@ -0,0 +1,11 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class SumMicroPayVO { + private BigDecimal amount; + private Integer total; +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/SumVerifiedVO.java b/mallinkService/src/main/java/com/iformall/domain/vo/SumVerifiedVO.java new file mode 100644 index 000000000..e2a774c0f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/SumVerifiedVO.java @@ -0,0 +1,11 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class SumVerifiedVO { + private BigDecimal amount; + private Integer total; +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index 35a51fff3..7b7fc5f98 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -112,4 +112,14 @@ public interface WxCouponOrderMapper extends CommonMapper { * @return */ List findVerifiedUserIds(@Param("tenantId")String tenantId, @Param("verifiedStartTime")Date verifiedStartTime, @Param("verifiedEndTime")Date verifiedEndTime); + + /** + * 统计核销记录总金额 + * @param tenantId + * @param merchantId + * @param startDate + * @param endDate + * @return {@link Integer} + */ + SumVerifiedVO sumVerified(@Param("tenantId") String tenantId, @Param("bMerchantId") Long merchantId, @Param("startDate") Date startDate, @Param("endDate") Date endDate); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java index 81a4796fc..75c521e40 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java @@ -69,4 +69,6 @@ public interface WxOrderMapper extends CommonMapper { void updateCUserId(WxOrder updateOrder); List getComposeOrderIds(WxOrder wxOrder); + + SumMicroPayVO sumMicroPay(Map dateMap); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index 1ae3add87..1fc33d994 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -240,6 +240,7 @@ public interface WxCouponOrderService { List findAvailCouponOrder(TenantEntity tenantEntity,Long cUserId,Long merchantId,Long posOrderId); PageInfo userTradeDetailList(WxMerchant wxMerchant,Date startTime,Date endTime,Integer pageIndex,Integer pageSize); - - + + + ResultData sumVerified(WxMerchantBUser bUser, Date startDate, Date endDate); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 48216c1c7..c6962df95 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -286,4 +286,5 @@ public interface WxOrderService { ResultData handlerPushOrder(TenantEntity tenantEntity, Long composeOrderId, String batchExtParam, List goods); + ResultData sumMicroPay(WxMerchantBUser bUser, Integer type, Date startDate, Date endDate); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index afca5e74a..c3b99da39 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -326,8 +326,6 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { if (isVerified) { PageInfo pageResult = findListOfVerifiedByDateForBUser(wxMerchant, wxMerchant.getId(), startDate, endDate, pageIndex, pageSize); resultMap.put("list", pageResult); - int amount = pageResult.getList() != null ? pageResult.getList().stream().mapToInt(WxCouponOrderBVo::getCouponPrice).sum() : 0; - resultMap.put("amount", amount); }else { resultMap.put("list", findListOfOrderedByDateForBUser(wxMerchant,wxMerchant.getId(),startDate,endDate,pageIndex,pageSize)); } @@ -3261,8 +3259,14 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { retPageInfo.setList(couponOrderListToTradeDetailVoList(wxMerchant,pageInfo.getList())); return retPageInfo; } - - private List couponOrderListToTradeDetailVoList(TenantEntity tenantEntity,List couponOrderList) { + + @Override + public ResultData sumVerified(WxMerchantBUser bUser, Date startDate, Date endDate) { + SumVerifiedVO vo = wxCouponOrderMapper.sumVerified(bUser.getTenantId(), bUser.getMerchantId(), startDate, endDate); + return new ResultData(vo); + } + + private List couponOrderListToTradeDetailVoList(TenantEntity tenantEntity,List couponOrderList) { if (null == couponOrderList || couponOrderList.size() <=0 ) { return null; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 9dd34a6db..2fb6034c7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -333,8 +333,6 @@ public class WxOrderServiceImpl implements WxOrderService { } else { PageInfo pageResult = orderPayVoPageInfo(wxMerchantBUser, pageIndex, pageSize, dateMap); resultMap.put("list", pageResult); - int amount = pageResult.getList() != null ? pageResult.getList().stream().mapToInt(WxOrderPayVo::getPayment).sum() : 0; - resultMap.put("amount", amount); } return resultMap; } @@ -3922,6 +3920,27 @@ public class WxOrderServiceImpl implements WxOrderService { // } } + @Override + public ResultData sumMicroPay(WxMerchantBUser bUser, Integer type, Date startDate, Date endDate) { + Map dataMap = new HashMap(); + dataMap.put("startDate", startDate); + dataMap.put("endDate", endDate); + dataMap.put("merchantId", bUser.getMerchantId()); + dataMap.put("type", type); + dataMap.put("tenantId", bUser.getTenantId()); + dataMap.put("finalTenantId", bUser.getFinalTenantId()); + WxMerchantBUser merchantBUserQ = new WxMerchantBUser(); + merchantBUserQ.updateTenantInfo(bUser); + merchantBUserQ.setMerchantId(bUser.getMerchantId()); + List bUserIds = wxMerchantBUserMapper.findIdList(merchantBUserQ); + if (null == bUserIds || bUserIds.size() <= 0 ) { + throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND); + } + dataMap.put("bUserIds", bUserIds); + SumMicroPayVO vo = wxOrderMapper.sumMicroPay(dataMap); + return new ResultData(vo); + } + private Map> getBatchOrderMap(TenantEntity tenantEntity,List batchOrderIds){ WxOrder recordQ = new WxOrder(); recordQ.updateTenantInfo(tenantEntity); diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 0fb95b902..c17d1b450 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -1181,5 +1181,20 @@ and update_date >= #{verifiedStartTime} and update_date <= #{verifiedEndTime} + \ No newline at end of file diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index d9e081624..32518fdb0 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -1168,5 +1168,34 @@ - + + From 40c6324033f325117417acbfb6cd03a700e9f4bc Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Tue, 5 Sep 2023 15:49:39 +0800 Subject: [PATCH 6/6] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0=E7=BC=BA?= =?UTF-8?q?=E5=B0=91=E7=9A=84=E5=AF=BC=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/callback/car/WxParkCallBackBaseController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java index e30aa4ea1..9e8db84e8 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/car/WxParkCallBackBaseController.java @@ -13,6 +13,7 @@ import com.iformall.service.park.ParkFactory; import com.iformall.service.park.entity.ParkNotifyParam; import com.iformall.service.park.utils.ParkCacheUtils; import com.iformall.utils.DateUtils; +import com.iformall.utils.RedisCacheUtils; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger;