From c03edc5031da3f3c4e54f3215e3c70798b5b3b01 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Fri, 24 Feb 2023 18:59:28 +0800 Subject: [PATCH 01/19] fix card --- .../java/com/iformall/service/impl/WxOrderServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 9113629d6..cb6766529 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1455,8 +1455,10 @@ public class WxOrderServiceImpl implements WxOrderService { cardInfo.setCouponId(order.getProductId()); cardInfo.setAmount(coupon.getPrice()); cardInfo.setSaleAmount(coupon.getSalePrice()); - cardInfo.setCouponPasswordId(couponPassWord.getId()); - cardInfo.setCouponPassword(couponPassWord.getPassword()); + if (null != couponPassWord) { + cardInfo.setCouponPasswordId(couponPassWord.getId()); + cardInfo.setCouponPassword(couponPassWord.getPassword()); + } cardInfo.setCUserId(user.getId()); cardInfo.setRemainingAmount(coupon.getPrice()); if (!coupon.checkIsFree()) { From 126fc458aaaa80bc5dd85695269de98811d2e5f1 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 14:22:45 +0800 Subject: [PATCH 02/19] fix card --- .../java/com/iformall/service/impl/WxOrderServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 cb6766529..e4983fedb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -1459,7 +1459,8 @@ public class WxOrderServiceImpl implements WxOrderService { cardInfo.setCouponPasswordId(couponPassWord.getId()); cardInfo.setCouponPassword(couponPassWord.getPassword()); } - cardInfo.setCUserId(user.getId()); + cardInfo.setCUserId(user.getId()); + cardInfo.setOwnerUserId(user.getId()); cardInfo.setRemainingAmount(coupon.getPrice()); if (!coupon.checkIsFree()) { //判断该transctionId是否已经存在,如果存在,则不添加 From 2dc71c2c7db0d4e571532bc4b22fd07b362bf2dc Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 15:06:46 +0800 Subject: [PATCH 03/19] fix card --- .../controller/market/WxCouponPasswordController.java | 7 +++++++ .../main/java/com/iformall/domain/po/WxCouponPassword.java | 3 +++ 2 files changed, 10 insertions(+) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java index 1886954dd..d1dfd77be 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java @@ -9,6 +9,7 @@ import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.vo.WxCouponPasswordCountInfoVO; import com.iformall.domain.vo.WxCouponPasswordVo; +import com.iformall.enums.EnumCouponPasswordStatus; import com.iformall.service.WxCouponPasswordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -88,6 +89,12 @@ public class WxCouponPasswordController extends BaseController { public ResultData batchList(@ModelAttribute WxCouponPassword wxCouponPassword, Integer pageNum, Integer pageSize) { wxCouponPassword.updateTenantInfo(getTenantInfo()); wxCouponPassword.setSortColumns(BaseEntity.SortField.CreateDate_DESC); + StringBuffer statussb = new StringBuffer(); + statussb.append(EnumCouponPasswordStatus.MSG_SENDED.getCode()).append(",") + .append(EnumCouponPasswordStatus.MSG_SENDING.getCode()).append(",") + .append(EnumCouponPasswordStatus.USED.getCode()).append(",") + .append(EnumCouponPasswordStatus.CANCEL.getCode()); + wxCouponPassword.setStatusStr(statussb.toString()); final PageInfo page = wxCouponPasswordService.listVoAsPage(wxCouponPassword, pageNum, pageSize); return new ResultData(page); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java index f06aa9cdb..9ec4d5432 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import java.util.Date; +import java.util.List; @TableName(value = "wx_coupon_password") @Data @@ -31,6 +32,8 @@ public class WxCouponPassword extends TenantEntity { @Excel(name = "状态", width = 20, replace = {"初始_0", "发送中_1", "已发出_2", "已使用_3", "不可用_4"}, orderNum = "4") @io.swagger.annotations.ApiModelProperty(value="卡密状态: 0初始1信息发出中2信息已发出3已使用4已过期",name="status") private Integer status; + @TableField(exist = false) + private List statusList; @Excel(name = "发送手机", width = 20, orderNum = "5") @io.swagger.annotations.ApiModelProperty(value="卡密发送到手机",name="sendedPhone") private String sendedPhone; From 6ca877fe66e557f63d6687d6a0c2655fd0ec22ea Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 15:16:40 +0800 Subject: [PATCH 04/19] fix card --- .../com/iformall/controller/market/WxCardInfoController.java | 1 + .../iformall/controller/market/WxCouponPasswordController.java | 1 + 2 files changed, 2 insertions(+) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardInfoController.java index 46f9b39df..61e70522a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCardInfoController.java @@ -244,6 +244,7 @@ public class WxCardInfoController extends BaseController { @SystemControllerLog(description = "启用/停用") public ResultData startOrStop(@RequestBody WxCardInfo WxCardInfo) { try { + WxCardInfo.updateTenantInfo(getTenantInfo()); wxCardInfoService.startOrStop(WxCardInfo); } catch (Exception e) { logger.error(e.getMessage()); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java index d1dfd77be..c2755fb01 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java @@ -104,6 +104,7 @@ public class WxCouponPasswordController extends BaseController { @SystemControllerLog(description = "启用/停用") public ResultData startOrStop(@RequestBody WxCouponPassword wxCouponPassword) { try { + wxCouponPassword.updateTenantInfo(getTenantInfo()); wxCouponPasswordService.startOrStop(wxCouponPassword); } catch (Exception e) { logger.error(e.getMessage()); From 3ce135b714daf8beec915066c558d540edfbc87d Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 15:36:08 +0800 Subject: [PATCH 05/19] fix card --- .../com/iformall/controller/WxCouponPasswordController.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java index 5cc9f540c..250bd3642 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java @@ -77,6 +77,9 @@ public class WxCouponPasswordController extends BaseController { logger.error(e.getMessage()); return new ResultData(500, e.getMessage()); } + if (couponPassword.getIsStop().intValue() == EnumYesOrNo.YES.getCode().intValue()) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"卡密已经停用"); + } WxCUserBasicInfo member = userService.getById(memberId,getFinalTenantId()); if(member == null) { From bbf5d7ea825b0b8bbf392ebd417e695c10f27b70 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 16:09:52 +0800 Subject: [PATCH 06/19] fix card --- .../java/com/iformall/controller/WxCouponOrderController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index a59bfcdc2..e44cc1a78 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -1,5 +1,6 @@ package com.iformall.controller; +import com.alibaba.fastjson.JSON; import com.github.pagehelper.PageInfo; import com.iformall.annotation.RedisCache; import com.iformall.common.ErrorCode; @@ -426,7 +427,8 @@ public class WxCouponOrderController extends BaseController { @ApiImplicitParam(name = "cUserId", value = "转赠者", dataType = "Long", paramType = "query", required = true), }) public ResultData queryCardStatus(@ModelAttribute WxCouponOrder wxCouponOrder) { - //coupon_order_id判断 + logger.info("queryCardStatus:"+JSON.toJSONString(wxCouponOrder)); + //coupon_order_id判断 Long id = wxCouponOrder.getId(); if (id == null) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "id不能为空"); From ff88c2fef9b2c064c50a1ace6e51957d5869e5f0 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 17:21:25 +0800 Subject: [PATCH 07/19] fix card --- .../controller/market/WxCouponController.java | 6 +++ .../controller/WxCouponController.java | 4 ++ .../controller/WxCouponController.java | 38 ++++++++++++++++++- .../controller/WxCouponOrderController.java | 5 --- .../service/util/CouponCacheUtils.java | 14 +++++++ 5 files changed, 61 insertions(+), 6 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index 70f7836eb..0e4e9140e 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -218,6 +218,7 @@ public class WxCouponController extends BaseController { wxCouponService.deleteById(wxCoupon.getId(),wxCoupon.getTenantId()); CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); CouponCacheUtils.removeCouponMerchantCache(redisTemplate, wxCoupon.getId()); + CouponCacheUtils.removeOnlyCouponCache(redisTemplate, wxCoupon.getId()); return new ResultData(); } @@ -277,6 +278,7 @@ public class WxCouponController extends BaseController { ResultData result = wxCouponService.updateTtProduct(coupon); CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); CouponCacheUtils.removeCouponMerchantCache(redisTemplate, wxCoupon.getId()); + CouponCacheUtils.removeOnlyCouponCache(redisTemplate, wxCoupon.getId()); return result; } @@ -421,6 +423,7 @@ public class WxCouponController extends BaseController { return wxCouponService.updateCouponStockAndEndTime(wxCoupon); } CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); + CouponCacheUtils.removeOnlyCouponCache(redisTemplate, wxCoupon.getId()); return new ResultData(); } @@ -466,6 +469,7 @@ public class WxCouponController extends BaseController { wxCouponService.deleteById(id,getTenantInfo().getTenantId()); CouponCacheUtils.removeCouponCache(redisTemplate, id); CouponCacheUtils.removeCouponMerchantCache(redisTemplate, id); + CouponCacheUtils.removeOnlyCouponCache(redisTemplate, id); return new ResultData(Result.SUCCESS, "删除成功", null); } @@ -714,6 +718,7 @@ public class WxCouponController extends BaseController { couponPasswordService.exportData(request, response, wxCouponPassword); if (null != wxCouponPassword.getCouponId()) { CouponCacheUtils.removeCouponCache(redisTemplate, wxCouponPassword.getCouponId()); + CouponCacheUtils.removeOnlyCouponCache(redisTemplate, wxCouponPassword.getCouponId()); } } @@ -739,6 +744,7 @@ public class WxCouponController extends BaseController { ResultData result = wxCouponService.cardDefer(wxCoupon.getId(),getTenantInfo().getTenantId(),wxCoupon.getValidEndDate()); CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); + CouponCacheUtils.removeOnlyCouponCache(redisTemplate, wxCoupon.getId()); return result; } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponController.java index 90ecfed59..17c55bf18 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponController.java @@ -247,6 +247,7 @@ public class WxCouponController extends BaseController { wxCouponService.deleteById(wxCoupon.getId(),wxCoupon.getTenantId()); CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); CouponCacheUtils.removeCouponMerchantCache(redisTemplate, wxCoupon.getId()); + CouponCacheUtils.removeOnlyCouponCache(redisTemplate, wxCoupon.getId()); return new ResultData(); } @@ -361,6 +362,7 @@ public class WxCouponController extends BaseController { redisLock.setCouponStock(wxCoupon.getId(), wxCoupon.getRemainInventory()); ResultData result = wxCouponService.updateCouponStockAndEndTime(wxCoupon); CouponCacheUtils.removeCouponCache(redisTemplate, wxCoupon.getId()); + CouponCacheUtils.removeOnlyCouponCache(redisTemplate, wxCoupon.getId()); return result; } @@ -375,6 +377,7 @@ public class WxCouponController extends BaseController { wxCouponService.deleteById(id,getTenantInfo().getTenantId()); CouponCacheUtils.removeCouponCache(redisTemplate, id); CouponCacheUtils.removeCouponMerchantCache(redisTemplate, id); + CouponCacheUtils.removeOnlyCouponCache(redisTemplate, id); return new ResultData(Result.SUCCESS, "删除成功", null); } @@ -476,6 +479,7 @@ public class WxCouponController extends BaseController { couponPasswordService.exportData(request, response, wxCouponPassword); if (null != wxCouponPassword.getCouponId()) { CouponCacheUtils.removeCouponCache(redisTemplate, wxCouponPassword.getCouponId()); + CouponCacheUtils.removeOnlyCouponCache(redisTemplate, wxCouponPassword.getCouponId()); } } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java index 98008e76a..555183587 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java @@ -76,7 +76,43 @@ public class WxCouponController extends BaseController { @Autowired private SysConfigService sysConfigService; - + @ApiOperation("查询优惠券详情(系统发放卡没有couponChannel)") + @GetMapping("/couponInfo") + @ApiImplicitParams({ + @ApiImplicitParam(name = "couponId", value = "couponId", dataType = "String", paramType = "query", required = true), + @ApiImplicitParam(name = "mallTenantId", value = "mallTenantId", dataType = "String", paramType = "query", required = false)}) + public ResultData couponInfo(Long couponId,String mallTenantId) { + if (null == couponId || (StringUtils.isBlank(mallTenantId) || mallTenantId.equalsIgnoreCase(Constant.UNDEFINED)) + ) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponId/mallTenantId为空"); + } + if(couponId <= 0){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponIdId为空"); + } + WxCoupon coupon = CouponCacheUtils.getOnlyCouponCache(redisTemplate, couponId); + if (null == coupon) { + coupon = couponService.getById(couponId,mallTenantId); + if (null == coupon) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "找不到coupon" + couponId); + } + WxCoupon attrsById = couponService.getAttrsById(couponId, mallTenantId); + coupon.setProductAttrs(attrsById.getProductAttrs()); + coupon.setSkuAttrs(attrsById.getSkuAttrs()); + + if(EnumCouponType.COUPON_GIFT.getCode().equals(coupon.getType())){ + WxCoupon couponQ = new WxCoupon(); + couponQ.updateTenantInfo(coupon); + List longs = JSON.parseArray(coupon.getGiftList(), Long.class); + if(longs != null && longs.size() > 0){ + couponQ.setIds(longs); + coupon.setGiftCouponList(couponService.list(couponQ)); + } + } + coupon.setCouponId(coupon.getId()); + CouponCacheUtils.setOnlyCouponCache(redisTemplate, couponId, coupon); + } + return new ResultData(coupon); + } @ApiOperation("根据id(couponChannel)查询详情接口") @GetMapping("/couponDetail") diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index e44cc1a78..7acdbf0f9 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -422,12 +422,7 @@ public class WxCouponOrderController extends BaseController { @ApiOperation(value = "查询转赠卡状态") @GetMapping("queryCardStatus") - @ApiImplicitParams({ - @ApiImplicitParam(name = "id", value = "coupon_order_id", dataType = "Long", paramType = "query", required = true), - @ApiImplicitParam(name = "cUserId", value = "转赠者", dataType = "Long", paramType = "query", required = true), - }) public ResultData queryCardStatus(@ModelAttribute WxCouponOrder wxCouponOrder) { - logger.info("queryCardStatus:"+JSON.toJSONString(wxCouponOrder)); //coupon_order_id判断 Long id = wxCouponOrder.getId(); if (id == null) { diff --git a/mallinkService/src/main/java/com/iformall/service/util/CouponCacheUtils.java b/mallinkService/src/main/java/com/iformall/service/util/CouponCacheUtils.java index 8a93da213..e6ba36849 100644 --- a/mallinkService/src/main/java/com/iformall/service/util/CouponCacheUtils.java +++ b/mallinkService/src/main/java/com/iformall/service/util/CouponCacheUtils.java @@ -31,6 +31,20 @@ public class CouponCacheUtils { return RedisCacheUtils.getCacheObject(template, key,WxCouponChannel.class); } + public static void removeOnlyCouponCache(RedisTemplate template,Long couponId) { + String key = "onlyCouponDetail:"+couponId; + RedisCacheUtils.removeCache(template, key); + } + + public static void setOnlyCouponCache(RedisTemplate template,Long couponId,WxCoupon coupon) { + String key = "onlyCouponDetail:"+couponId; + RedisCacheUtils.cache(template, key, coupon, 24*3600); + } + + public static WxCoupon getOnlyCouponCache(RedisTemplate template,Long couponId) { + String key = "onlyCouponDetail:"+couponId; + return RedisCacheUtils.getCacheObject(template, key,WxCoupon.class); + } public static void removeCouponCache(RedisTemplate template,Long couponId) { String key = "couponDetail:"+couponId; From 8130b0cf396c5d28ee0299b5fcb61da757ef712d Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 17:29:48 +0800 Subject: [PATCH 08/19] fix card --- .../com/iformall/controller/market/WxCouponController.java | 4 ++-- .../src/main/java/com/iformall/mapper/WxCouponMapper.java | 2 +- .../java/com/iformall/service/impl/WxCouponServiceImpl.java | 2 +- mallinkService/src/main/resources/mapper/WxCouponMapper.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index 0e4e9140e..faa472431 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -445,13 +445,13 @@ public class WxCouponController extends BaseController { } if (EnumCouponSubsidyType.WECHAT_COUPON.getCode().equals(coupon.getSubsidyType())) { // 微信 立减 - if (coupon.getSubsidyNum() > coupon.getSalePrice()) { + if (wxCoupon.getSubsidyNum() > coupon.getSalePrice()) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "补贴额大于售价"); } } else if (EnumCouponSubsidyType.OFFLINE_SUBSIDY.getCode().equals(coupon.getSubsidyType())) { // 线下补贴 int subsidy_num = wxCoupon.getPrice() - coupon.getSalePrice(); - if (coupon.getSubsidyNum() > subsidy_num) { + if (wxCoupon.getSubsidyNum() > subsidy_num) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "补贴额大于面额与售价的差值"); } } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java index e7132e3d3..1fd6d725b 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponMapper.java @@ -42,7 +42,7 @@ public interface WxCouponMapper extends CommonMapper { void deleteById(@Param("id")Long id,@Param("tenantId")String tenantId); - Integer setPrice(@Param("id")Long id,@Param("tenantId")String tenantId,@Param("price")Integer price); + Integer setPrice(@Param("id")Long id,@Param("tenantId")String tenantId,@Param("price")Integer price,@Param("subsidyNum")Integer subsidyNum); Integer reduceInventory(@Param("id")Long id,@Param("tenantId")String tenantId,@Param("number")Integer number); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index eb9ed7d8c..394622902 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -1022,7 +1022,7 @@ public class WxCouponServiceImpl implements WxCouponService { @Override @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) public ResultData setPrice(WxCoupon record) { - Integer count = wxCouponMapper.setPrice(record.getId(), record.getTenantId(), record.getPrice()); + Integer count = wxCouponMapper.setPrice(record.getId(), record.getTenantId(), record.getPrice(),record.getSubsidyNum()); if (null == count || count <= 0 ) { return new ResultData(Result.ERROR,"设置失败"); } diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 31b85e9e8..3ee43e15c 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -1525,7 +1525,7 @@ - update wx_coupon set price = #{price} where id = #{id} and tenant_id = #{tenantId} and price = 0 + update wx_coupon set price = #{price},subsidy_num={subsidyNum} where id = #{id} and tenant_id = #{tenantId} and price = 0 From 0c8f2cc5a10eb4cfb07dd37176e71741a293a2ea Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 18:07:45 +0800 Subject: [PATCH 09/19] fix card --- .../main/java/com/iformall/domain/vo/WxCouponPasswordVo.java | 2 +- .../com/iformall/service/impl/WxCouponPasswordServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordVo.java index 5476d4d81..9623eab0e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordVo.java @@ -59,7 +59,7 @@ public class WxCouponPasswordVo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "余额(元)", name = "remainPrice") private Double remainPrice; @Excel(name = "电子卡状态", width = 20, orderNum = "13",replace = {"正常_0", "已禁用_1"}, prefix = "`") - @io.swagger.annotations.ApiModelProperty(value = "电子卡状态EnumYesOrNo", name = "used") + @io.swagger.annotations.ApiModelProperty(value = "电子卡状态EnumYesOrNo", name = "cardStatus") private Integer cardStatus; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index cbbd23d92..de790094f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -133,7 +133,7 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { if (null != cardInfo) { co.setUsed(EnumYesOrNo.YES.getCode()); co.setPrice(new BigDecimal(cardInfo.getAmount()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); - co.setRemainPrice(new BigDecimal(cardInfo.getRateAmount()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); + co.setRemainPrice(new BigDecimal(cardInfo.getRemainingAmount()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); co.setActiveDate(cardInfo.getCreateDate()); WxCUserBasicInfo basicInfo = cUserMap.get(cardInfo.getCUserId()); if (null != basicInfo) { From 49b8a8a70df57cc0b7f6540b2e1ae9947873d81c Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 19:29:02 +0800 Subject: [PATCH 10/19] fix card --- .../controller/WxCardInfoController.java | 15 +++++++++++++-- .../com/iformall/service/WxCardInfoService.java | 3 +++ .../service/impl/WxCardInfoServiceImpl.java | 16 +++++++++++++++- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java index 28eb93ad3..224e2549c 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java @@ -3,6 +3,7 @@ package com.iformall.controller; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.WxCardInfo; +import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.vo.WxCardSpendVo; import com.iformall.domain.vo.WxCouponOrderCVo; @@ -10,6 +11,7 @@ import com.iformall.exception.MallinkException; import com.iformall.pay.WxPayConstant; import com.iformall.service.PosBrunService; import com.iformall.service.WxCardInfoService; +import com.iformall.service.WxCouponPasswordService; import com.iformall.utils.Constant; import com.iformall.utils.DateUtils; @@ -35,7 +37,7 @@ public class WxCardInfoController extends BaseController { @Autowired private WxCardInfoService wxCardInfoService; - + @ApiOperation(value = "查询卡信息") @GetMapping("detail") @ApiImplicitParams({ @@ -46,13 +48,22 @@ public class WxCardInfoController extends BaseController { } String cardIdStr = dynamicId; boolean isECard = false; + WxCardInfo cardInfo = null; String _decodeCouponOrderId = WxCouponOrderCVo.getDecodeExpiredCouponOrderId(dynamicId); if (_decodeCouponOrderId.contains(WxCouponOrderCVo.arg)) { String[] decodeids = _decodeCouponOrderId.split(WxCouponOrderCVo.arg); cardIdStr = decodeids[0]; isECard = true; + cardInfo = wxCardInfoService.getById(Long.parseLong(cardIdStr)); + }else { + Long couponPasswordId = Long.parseLong(cardIdStr); + //实体卡 + WxCardInfo cardQ = new WxCardInfo(); + cardQ.updateTenantInfo(getTenantInfo()); + cardQ.setCouponPasswordId(couponPasswordId); + cardInfo = wxCardInfoService.getByCouponPasswordId(couponPasswordId, getTenantInfo()); } - WxCardInfo cardInfo = wxCardInfoService.getById(Long.parseLong(cardIdStr)); + if (null == cardInfo) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "未查询到卡:"+cardIdStr); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCardInfoService.java b/mallinkService/src/main/java/com/iformall/service/WxCardInfoService.java index fa6bd68ed..1ca0285a8 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCardInfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCardInfoService.java @@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCardInfo; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponPassword; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxCardVo; import javax.servlet.http.HttpServletRequest; @@ -29,6 +30,8 @@ public interface WxCardInfoService { */ WxCardInfo getById(Long id); + WxCardInfo getByCouponPasswordId(Long couponPasswordId,TenantEntity tenantEntity); + /** * 保存或更新实体 * diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java index 60c5cd3c0..db31b06a1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java @@ -284,7 +284,7 @@ public class WxCardInfoServiceImpl implements WxCardInfoService { @Override public WxCardInfo cardCreateByOffline(WxCouponPassword couponPassword,WxCoupon coupon) { //如果没有卡,则直接创建一个 - WxCardInfo cardInfo = this.getById(couponPassword.getId()); + WxCardInfo cardInfo = this.getByCouponPasswordId(couponPassword.getId(),couponPassword); if (null == cardInfo) { long time = System.currentTimeMillis() + RedisLock.TIMEOUT; String timeStr = String.valueOf(time); @@ -309,6 +309,8 @@ public class WxCardInfoServiceImpl implements WxCardInfoService { updateCPwd.setStatus(EnumCouponPasswordStatus.USED.getCode()); couponPasswordMapper.updateById(updateCPwd); } + cardInfo.setCouponPasswordId(couponPassword.getId()); + cardInfo.setCouponPassword(couponPassword.getPassword()); cardInfo.setCUserId(Constant.defaultCUserId); cardInfo.setOwnerUserId(Constant.defaultCUserId); cardInfo.setServiceFeeAmount(0); @@ -327,4 +329,16 @@ public class WxCardInfoServiceImpl implements WxCardInfoService { wxCardInfoMapper.updateStatus(cardInfo); } + @Override + public WxCardInfo getByCouponPasswordId(Long couponPasswordId, TenantEntity tenantEntity) { + WxCardInfo cardQ = new WxCardInfo(); + cardQ.updateTenantInfo(cardQ); + cardQ.setCouponPasswordId(couponPasswordId); + List infoList = wxCardInfoMapper.findList(cardQ); + if (null != infoList && infoList.size() > 0 ) { + return infoList.get(0); + } + return null; + } + } From ccbe67a34c210e8a2abf8daa8c6d9c05df92e1a0 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 19:37:51 +0800 Subject: [PATCH 11/19] fix card --- .../src/main/resources/db/migration/V2023022800001__card.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql b/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql index d691ad02e..5a916d18f 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql @@ -13,6 +13,9 @@ alter table wx_card_info add column status int(1) not null default 0 comment ' #update wx_card_info ci left join wx_coupon_order_89 co on ci.id = co.id #set ci.c_user_id = co.c_user_id, ci.owner_user_id = co.owner_id +#update wx_card_info ci left join wx_coupon_password cp on ci.id = cp.card_id +#set ci.coupon_password_id = cp.id where cp.card_id is not null + alter table wx_coupon_password add column is_stop int(1) not null default 0 comment '是否已停止1-是,0-否'; From edfbcb79112905657101d0b21bbff20a781210a1 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 19:39:14 +0800 Subject: [PATCH 12/19] fix card --- .../src/main/resources/db/migration/V2023022800001__card.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql b/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql index 5a916d18f..74e14232f 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V2023022800001__card.sql @@ -16,6 +16,9 @@ alter table wx_card_info add column status int(1) not null default 0 comment ' #update wx_card_info ci left join wx_coupon_password cp on ci.id = cp.card_id #set ci.coupon_password_id = cp.id where cp.card_id is not null +update wx_card_info ci left join wx_coupon_password cp on ci.id = cp.card_id +set ci.coupon_password = cp.password where ci.coupon_password is null + alter table wx_coupon_password add column is_stop int(1) not null default 0 comment '是否已停止1-是,0-否'; From 74d0a5d2e4f91353fe963e0c8eb3e4f9226a894e Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Mon, 27 Feb 2023 19:42:16 +0800 Subject: [PATCH 13/19] fix card --- .../java/com/iformall/controller/WxCardInfoController.java | 3 --- .../java/com/iformall/service/impl/WxCardInfoServiceImpl.java | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java index 224e2549c..5c05affa3 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java @@ -58,9 +58,6 @@ public class WxCardInfoController extends BaseController { }else { Long couponPasswordId = Long.parseLong(cardIdStr); //实体卡 - WxCardInfo cardQ = new WxCardInfo(); - cardQ.updateTenantInfo(getTenantInfo()); - cardQ.setCouponPasswordId(couponPasswordId); cardInfo = wxCardInfoService.getByCouponPasswordId(couponPasswordId, getTenantInfo()); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java index db31b06a1..23b70583f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardInfoServiceImpl.java @@ -332,7 +332,7 @@ public class WxCardInfoServiceImpl implements WxCardInfoService { @Override public WxCardInfo getByCouponPasswordId(Long couponPasswordId, TenantEntity tenantEntity) { WxCardInfo cardQ = new WxCardInfo(); - cardQ.updateTenantInfo(cardQ); + cardQ.updateTenantInfo(tenantEntity); cardQ.setCouponPasswordId(couponPasswordId); List infoList = wxCardInfoMapper.findList(cardQ); if (null != infoList && infoList.size() > 0 ) { From d59c0e85f4ff1880a593047c8fcff5d1d9cd9654 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Tue, 28 Feb 2023 10:36:42 +0800 Subject: [PATCH 14/19] fix card --- .../com/iformall/controller/WxCouponPasswordController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java index 250bd3642..2c5197bf1 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java @@ -80,10 +80,8 @@ public class WxCouponPasswordController extends BaseController { if (couponPassword.getIsStop().intValue() == EnumYesOrNo.YES.getCode().intValue()) { return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"卡密已经停用"); } - WxCUserBasicInfo member = userService.getById(memberId,getFinalTenantId()); if(member == null) { - logger.error("会员用户未找到: " + memberId); throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "会员用户未找到" + memberId); } @@ -92,9 +90,11 @@ public class WxCouponPasswordController extends BaseController { return new ResultData(ErrorCode.COUPON_IS_EMPTY); } if (coupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) { - logger.error("此券已作废:" + coupon.getId()); return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); } + if (coupon.getPrice() <= 0) { + return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF.getCode(),"面值未设置,请联系管理员."); + } // 卡密领取卡券 Integer pwdStatus = couponPassword.getStatus(); From da9b7c5f6dfa05a41a96e5ed97c50b84d6d4a8c2 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Tue, 28 Feb 2023 11:52:52 +0800 Subject: [PATCH 15/19] fix card --- .../controller/WxCardInfoController.java | 55 ++++++++++++++----- .../controller/WxCardPayController.java | 2 - 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java index 5c05affa3..2d3232693 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java @@ -3,15 +3,18 @@ package com.iformall.controller; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.po.WxCardInfo; +import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.po.WxMerchantBUser; import com.iformall.domain.vo.WxCardSpendVo; import com.iformall.domain.vo.WxCouponOrderCVo; +import com.iformall.enums.EnumCardInfoType; import com.iformall.exception.MallinkException; import com.iformall.pay.WxPayConstant; import com.iformall.service.PosBrunService; import com.iformall.service.WxCardInfoService; import com.iformall.service.WxCouponPasswordService; +import com.iformall.service.WxCouponService; import com.iformall.utils.Constant; import com.iformall.utils.DateUtils; @@ -38,6 +41,12 @@ public class WxCardInfoController extends BaseController { @Autowired private WxCardInfoService wxCardInfoService; + @Autowired + private WxCouponPasswordService couponPasswordService; + + @Autowired + private WxCouponService wxCouponService; + @ApiOperation(value = "查询卡信息") @GetMapping("detail") @ApiImplicitParams({ @@ -49,30 +58,48 @@ public class WxCardInfoController extends BaseController { String cardIdStr = dynamicId; boolean isECard = false; WxCardInfo cardInfo = null; + Map map = new HashMap(); String _decodeCouponOrderId = WxCouponOrderCVo.getDecodeExpiredCouponOrderId(dynamicId); if (_decodeCouponOrderId.contains(WxCouponOrderCVo.arg)) { String[] decodeids = _decodeCouponOrderId.split(WxCouponOrderCVo.arg); cardIdStr = decodeids[0]; isECard = true; cardInfo = wxCardInfoService.getById(Long.parseLong(cardIdStr)); + if (null == cardInfo) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "未查询到卡:"+cardIdStr); + } + map.put("cardId", cardInfo.getId()); + map.put("amount", cardInfo.getAmount()); + map.put("remainAmount", cardInfo.getRemainingAmount()); + map.put("cardType", cardInfo.getType()); }else { Long couponPasswordId = Long.parseLong(cardIdStr); //实体卡 - cardInfo = wxCardInfoService.getByCouponPasswordId(couponPasswordId, getTenantInfo()); - } - - if (null == cardInfo) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "未查询到卡:"+cardIdStr); - } - Map map = new HashMap(); - if (isECard) { - map.put("cardId", cardInfo.getId()); - }else { - map.put("cardId", cardInfo.getCouponPasswordId()); + WxCouponPassword password = couponPasswordService.getById(couponPasswordId); + if (null == password) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "未查询到卡:"+cardIdStr); + } + cardInfo = wxCardInfoService.getByCouponPasswordId(couponPasswordId, password); + if (null != cardInfo) { + map.put("cardId", cardInfo.getId()); + map.put("amount", cardInfo.getAmount()); + map.put("remainAmount", cardInfo.getRemainingAmount()); + map.put("cardType", cardInfo.getType()); + }else { + //第一次刷卡的时候没有cardInfo + WxCoupon cq = new WxCoupon(); + cq.updateTenantInfo(password); + cq.setId(password.getCouponId()); + WxCoupon coupon = wxCouponService.findById(cq); + if (null == coupon) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "卡未查询到券:"+cardIdStr); + } + map.put("cardId", couponPasswordId); + map.put("amount", coupon.getPrice()); + map.put("remainAmount", coupon.getPrice()); + map.put("cardType", EnumCardInfoType.CARD.getCode()); + } } - map.put("amount", cardInfo.getAmount()); - map.put("remainAmount", cardInfo.getRemainingAmount()); - map.put("cardType", cardInfo.getType()); return new ResultData(map); } } diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java index 593d4cf93..ba1ed8435 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java @@ -218,14 +218,12 @@ public class WxCardPayController extends BaseController { } } if (StringUtils.isBlank(totalFeeStr) || totalFeeStr.equalsIgnoreCase(Constant.UNDEFINED)) { - logger.error("totalFee不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "totalFee不能为空"); } BigDecimal totalFee = new BigDecimal(totalFeeStr); totalFee.setScale(2, BigDecimal.ROUND_HALF_UP); // 第一个变量是小数位数,第二个变量是取舍方法(四舍五入) Integer payment = totalFee.multiply(new BigDecimal(100)).intValue(); - Long merchantId = merchantBUser.getMerchantId(); if(payment > cardInfo.getRemainingAmount()) { From bca4aae27e8a8a7cb9a25f570f4a85a1df24149b Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Tue, 28 Feb 2023 13:34:55 +0800 Subject: [PATCH 16/19] fix card --- .../com/iformall/service/impl/WxCouponOrderServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) 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 d2728a249..8963e4c56 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -2529,6 +2529,10 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL.getCode(),"cardInfo未查询到"); } + if (EnumCardInfoStatus.STOP.getCode().intValue() == cardInfo.getStatus().intValue()) { + return new ResultData(ErrorCode.COUPON_ORDER_IS_NULL.getCode(),"卡已被停用"); + } + //转赠人是否存在 Long cUserId = record.getCUserId(); From b76b4fac7dfb34bd806e88fe955621d1ea44c05c Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Tue, 28 Feb 2023 14:02:31 +0800 Subject: [PATCH 17/19] fix card --- .../java/com/iformall/controller/WxCardPayController.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java index ba1ed8435..b8e8cb963 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java @@ -1,5 +1,6 @@ package com.iformall.controller; +import com.alibaba.fastjson.JSON; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.Result; @@ -116,6 +117,8 @@ public class WxCardPayController extends BaseController { @ApiOperation(value = "微信B端扫储值卡码支付订单", notes = "params:{\"dynamicId\":\"String\",\"totalFee\":\"String(元)\"}") @PostMapping("scanCard") public ResultData scanCard(@RequestBody Map paramMap, HttpServletRequest request) { + logger.debug("scanCard:"+JSON.toJSONString(paramMap)); + String cardIdStr = paramMap.get("dynamicId"); String totalFeeStr = paramMap.get("totalFee"); @@ -170,7 +173,7 @@ public class WxCardPayController extends BaseController { } return saveCardPayOrder(cUserId,cardInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT); } - + public ResultData savePasswordCardPayOrder(String cardIdStr,String totalFeeStr) { Long cardId = null; try { From 51ccc69c1b5171ec9d24a5e37c2f2e3401f16fdb Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Tue, 28 Feb 2023 14:10:16 +0800 Subject: [PATCH 18/19] fix card --- .../main/java/com/iformall/controller/WxCardPayController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java index b8e8cb963..45a0bdb22 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java @@ -117,7 +117,7 @@ public class WxCardPayController extends BaseController { @ApiOperation(value = "微信B端扫储值卡码支付订单", notes = "params:{\"dynamicId\":\"String\",\"totalFee\":\"String(元)\"}") @PostMapping("scanCard") public ResultData scanCard(@RequestBody Map paramMap, HttpServletRequest request) { - logger.debug("scanCard:"+JSON.toJSONString(paramMap)); + logger.info("scanCard:"+JSON.toJSONString(paramMap)); String cardIdStr = paramMap.get("dynamicId"); String totalFeeStr = paramMap.get("totalFee"); From 83db6b72405b515a18b0793332d117adf9e410b2 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Tue, 28 Feb 2023 15:06:41 +0800 Subject: [PATCH 19/19] fix card --- .../controller/WxCardPayController.java | 15 +++++++---- .../controller/WxCardPayController.java | 2 +- .../iformall/service/WxCardSpendService.java | 2 +- .../service/impl/WxCardSpendServiceImpl.java | 27 ++++++++++++++++++- 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java index 45a0bdb22..5e6a6f897 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java @@ -171,7 +171,7 @@ public class WxCardPayController extends BaseController { logger.error("卡不存在: " + cardIdStr); return new ResultData(ErrorCode.CARD_IS_NOT_FOUND); } - return saveCardPayOrder(cUserId,cardInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT); + return saveCardPayOrder(false,cUserId,cardInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT); } public ResultData savePasswordCardPayOrder(String cardIdStr,String totalFeeStr) { @@ -203,10 +203,10 @@ public class WxCardPayController extends BaseController { } WxCardInfo carInfo = wxCardInfoService.cardCreateByOffline(couponPassword, coupon); - return saveCardPayOrder(Constant.defaultCUserId,carInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT); + return saveCardPayOrder(true,Constant.defaultCUserId,carInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT); } - private ResultData saveCardPayOrder(Long cUserId,WxCardInfo cardInfo,WxMerchantBUser merchantBUser,String totalFeeStr,EnumPayWay payWay) { + private ResultData saveCardPayOrder(boolean reduceStock,Long cUserId,WxCardInfo cardInfo,WxMerchantBUser merchantBUser,String totalFeeStr,EnumPayWay payWay) { if (EnumCardInfoStatus.STOP.getCode().intValue() == cardInfo.getStatus().intValue()) { return new ResultData(ErrorCode.CARD_IS_NOT_FOUND.getCode(),"卡已被禁用."); @@ -277,9 +277,14 @@ public class WxCardPayController extends BaseController { record.setIp(ipStr); record.setDeductionAmount(payment); record.setRemark("操作于["+payWay.getMessage()+"("+payWay.getCode()+")]"); - + + Integer couponNumber = null; + if (reduceStock) { + couponNumber = 1; + } + try { - return wxCardSpendService.createCardSpend(record, order, couponMerchant,payWay); + return wxCardSpendService.createCardSpend(record, order, couponMerchant,couponNumber,payWay); } catch (MallinkException e) { logger.error("card spend error, req 2: " + record.toString() + ", e:" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java index 13d2c869d..cccb1ba03 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java @@ -188,7 +188,7 @@ public class WxCardPayController extends BaseController { record.setRemark("操作于["+payWay.getMessage()+"("+payWay.getCode()+")]"); try { - return wxCardSpendService.createCardSpend(record, order, couponMerchant,payWay); + return wxCardSpendService.createCardSpend(record, order, couponMerchant,null,payWay); } catch (MallinkException e) { logger.error("card spend error, req 2: " + record.toString() + ", e:" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java b/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java index 6aad1ce79..9978bc017 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCardSpendService.java @@ -28,7 +28,7 @@ public interface WxCardSpendService { * @param order * @return */ - ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,EnumPayWay payWay); + ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,Integer reduceCouponNumber,EnumPayWay payWay); /** * 根据实体查询分页列表 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java index 943addd3a..ffb5d03e2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -18,9 +18,12 @@ import com.iformall.mapper.*; import com.iformall.service.*; import com.iformall.utils.Constant; import com.iformall.utils.PayUtils; +import com.iformall.utils.RedisLock; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -54,9 +57,11 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { @Autowired WxCouponMerchantMapper wxCouponMerchantMapper; + @Lazy @Autowired WxAppinfoService wxAppinfoService; + @Lazy @Autowired WxPayAccountService wxPayAccountService; @@ -66,23 +71,34 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { @Autowired WxCouponOrderMapper wxCouponOrderMapper; + @Lazy @Autowired WxProfitSharingOrderService profitSharingOrderService; @Autowired ExcelService excelService; + @Lazy @Autowired WxCreditHistoryService wxCreditHistoryService; + @Lazy @Autowired WxScoreRulesService wxScoreRulesService; + @Lazy @Autowired WxCashOutService wxCashOutService; @Autowired WxCouponChannelMapper wxCouponChannelMapper; + + @Lazy + @Autowired + WxCouponService wxCouponService; + + @Autowired + RedisLock redisLock; @Override public WxCouponMerchant checkMerchantInCoupon(WxCardInfo cardInfo, Long merchantId) { @@ -102,7 +118,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,EnumPayWay payWay) { + public ResultData createCardSpend(WxCardSpend record, WxOrder order, WxCouponMerchant couponMerchant,Integer reduceCouponNumber,EnumPayWay payWay) { Date curDate = new Date(); final IdWorker idWorker = IdWorker.get(); // 1. get card info @@ -132,6 +148,15 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { if(payAccount == null){ return new ResultData(ErrorCode.API_KEY_NOT_FOUND); } + + //扣减库存 + if (null != reduceCouponNumber && reduceCouponNumber > 0) { + wxCouponService.reduceRemainInventory(coupon,coupon.getId(),reduceCouponNumber); + long stock = redisLock.decrease(EnumCacheKey.COUPON_STOCK.getMessage()+coupon.getId(), reduceCouponNumber); + if (stock < 0 ) { + return new ResultData(ErrorCode.API_KEY_NOT_FOUND.getCode(),"库存不足"); + } + } // 4. 扣减计算 Double paymentD = 1.0 * cardInfo.getSaleAmount() * record.getDeductionAmount() / cardInfo.getAmount();