diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponSendController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponSendController.java index 0b2980e74..3ab118926 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponSendController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponSendController.java @@ -1,5 +1,6 @@ package com.iformall.controller.market; +import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; import com.iformall.common.ErrorCode; @@ -105,6 +106,24 @@ public class WxCouponSendController extends BaseController { if (!EnumCouponSendType.PASSIVE.getCode().equals(wxCoupon.getSendType())) { return new ResultData(ErrorCode.COUPON_TYPE_IS_NOT_PASSIVE); } + + //商户卡库存校验 + if(Objects.equals(wxCouponSend.getSendType(),EnumCouponSendSendType.MERCHANT.getCode())) { + JSONObject jo = JSONObject.parseObject(wxCouponSend.getConditions()) ; + if(Objects.isNull(jo)||!jo.containsKey(WxCouponSend.KEY_LIMIT)) { + return new ResultData(ErrorCode.COUPON_SEND_LIMIT_VERIFY); + } + WxCoupon queryById = new WxCoupon() ; + queryById.setId(wxCouponSend.getId()); + WxCoupon wxCouponOfDb = wxCouponService.findById(queryById); + if(Objects.isNull(wxCouponOfDb)) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY); + } + if(jo.getInteger(WxCouponSend.KEY_LIMIT) >wxCouponOfDb.getRemainInventory()) { + return new ResultData(ErrorCode.REMAIN_IS_EMPTY); + } + } + wxCouponSend.setTenantId(wxCoupon.getTenantId()); wxCouponSend.setTitle(wxCoupon.getTitle()); diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponSendController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponSendController.java new file mode 100644 index 000000000..ed1abe44e --- /dev/null +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponSendController.java @@ -0,0 +1,52 @@ +package com.iformall.controller; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.po.BaseEntity; +import com.iformall.domain.po.WxCouponSend; +import com.iformall.domain.vo.WxCouponSendVo; +import com.iformall.enums.EnumCouponSendStatus; +import com.iformall.service.WxCouponActionLogService; +import com.iformall.service.WxCouponSendService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/couponSend") +@Api(description = "商户卡券相关接口") +public class WxCouponSendController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxCouponSendService wxCouponSendService; + @Autowired + private WxCouponActionLogService wxCouponActionLogService; + + @ApiOperation("查询商户卡券列表") + @GetMapping("/list") + @ApiImplicitParam(name = "sendType", value = "sendType", dataType = "Long", paramType = "query", required = true) + public ResultData list(Integer sendType, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxCouponSendController::list"); + WxCouponSend wxCouponSend = new WxCouponSend(); + wxCouponSend.setSendType(sendType); + wxCouponSend.setTenantId(getTenantId()); + wxCouponSend.setStatus(EnumCouponSendStatus.VALID.getCode()); + //库存大于0 + wxCouponSend.setInventory(0); + wxCouponSend.setSortColumns(BaseEntity.SortField.CreateDate_DESC); + final PageInfo page = wxCouponSendService.listAsPage(wxCouponSend, pageNum, pageSize); + + for (WxCouponSendVo cs : page.getList()) { + cs.setSendCount(wxCouponActionLogService.getCountByChannelId(getTenantId(), cs.getSendType(), cs.getId())); + } + return new ResultData(page); + } + +} diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index f7a11166c..d9f72b137 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -191,6 +191,7 @@ public enum ErrorCode{ COUPON_ORDER_IS_EARLIER_THAN_VALIDDATE(4006, "卡券使用期还未开始"), COUPON_ORDER_IS_LATER_THAN_VALIDDATE(4007, "卡券使用期已结束"), COUPON_ORDER_IS_PRE_VERIFY(4008, "卡券已被预核销"), + COUPON_SEND_LIMIT_VERIFY(4009, "商户卡库存错误"), /** * 卡 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponSend.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponSend.java index cb0d37953..a675e8ec0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponSend.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponSend.java @@ -16,10 +16,21 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) public class WxCouponSend extends BaseEntity { + /** + * 卡券ids + */ @Transient public static final String KEY_COUPONIDS = "couponIds" ; + /** + * beforeDays + */ @Transient public static final String KEY_BEFOREDAYS = "beforeDays" ; + /** + * limit 商户券库存 + */ + @Transient + public static final String KEY_LIMIT = "limit" ; @Id protected Long id; @@ -27,6 +38,12 @@ public class WxCouponSend extends BaseEntity { @Transient protected List ids; + /** + * 库存条件 + */ + @Transient + protected Integer inventory; + @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; @io.swagger.annotations.ApiModelProperty(value="卡券id",name="couponId") diff --git a/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml index c3fc8750b..d9af5dc99 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml @@ -87,6 +87,9 @@ and cs.send_sms = #{sendSms} + + and c.remain_inventory > #{inventory} + order by ${sortColumns}