diff --git a/mallplus-mbg/src/main/java/com/zscat/mallplus/sms/mapper/SmsCouponMapper.java b/mallplus-mbg/src/main/java/com/zscat/mallplus/sms/mapper/SmsCouponMapper.java index ae4a379..bc18728 100644 --- a/mallplus-mbg/src/main/java/com/zscat/mallplus/sms/mapper/SmsCouponMapper.java +++ b/mallplus-mbg/src/main/java/com/zscat/mallplus/sms/mapper/SmsCouponMapper.java @@ -22,4 +22,6 @@ public interface SmsCouponMapper extends BaseMapper { List selectRecive(@Param("memberId") Long memberId, @Param("limit") Integer limit); SmsCouponParam getItem(@Param("id") Long id); + + List selectAll(); } diff --git a/mallplus-mbg/src/main/resources/mapper/sms/SmsCouponHistoryMapper.xml b/mallplus-mbg/src/main/resources/mapper/sms/SmsCouponHistoryMapper.xml index 74c16d2..59846bb 100644 --- a/mallplus-mbg/src/main/resources/mapper/sms/SmsCouponHistoryMapper.xml +++ b/mallplus-mbg/src/main/resources/mapper/sms/SmsCouponHistoryMapper.xml @@ -54,6 +54,7 @@ LEFT JOIN sms_coupon_product_category_relation cpcr ON cpcr.coupon_id = c.id WHERE ch.member_id = #{memberId} AND ch.use_status = 0 and now() >c.start_time and c.end_time>now() + order by ch.amount desc diff --git a/mallplus-mbg/src/main/resources/mapper/sms/SmsCouponMapper.xml b/mallplus-mbg/src/main/resources/mapper/sms/SmsCouponMapper.xml index 878420d..a773258 100644 --- a/mallplus-mbg/src/main/resources/mapper/sms/SmsCouponMapper.xml +++ b/mallplus-mbg/src/main/resources/mapper/sms/SmsCouponMapper.xml @@ -59,12 +59,18 @@ + + diff --git a/mallplus-portal/src/main/java/com/zscat/mallplus/single/SingeMarkingController.java b/mallplus-portal/src/main/java/com/zscat/mallplus/single/SingeMarkingController.java index 6c9c83e..b8f9fd2 100644 --- a/mallplus-portal/src/main/java/com/zscat/mallplus/single/SingeMarkingController.java +++ b/mallplus-portal/src/main/java/com/zscat/mallplus/single/SingeMarkingController.java @@ -120,7 +120,7 @@ public class SingeMarkingController extends ApiBaseAction { @ApiOperation("领取指定优惠券") @PostMapping(value = "/add") - public Object add(@RequestParam(value = "couponId", required = true) Long couponId) { + public Object add(@RequestParam(value = "couponId", required = false) Long couponId) { try { return couponService.add(couponId); diff --git a/mallplus-portal/src/main/java/com/zscat/mallplus/sms/service/impl/SmsCouponServiceImpl.java b/mallplus-portal/src/main/java/com/zscat/mallplus/sms/service/impl/SmsCouponServiceImpl.java index a9e3fd5..5695697 100644 --- a/mallplus-portal/src/main/java/com/zscat/mallplus/sms/service/impl/SmsCouponServiceImpl.java +++ b/mallplus-portal/src/main/java/com/zscat/mallplus/sms/service/impl/SmsCouponServiceImpl.java @@ -3,6 +3,7 @@ package com.zscat.mallplus.sms.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zscat.mallplus.oms.entity.OmsCartItem; +import com.zscat.mallplus.pay.utils.StringUtils; import com.zscat.mallplus.sms.entity.*; import com.zscat.mallplus.sms.mapper.*; import com.zscat.mallplus.sms.service.ISmsCouponService; @@ -16,10 +17,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Random; +import java.util.*; import java.util.stream.Collectors; /** @@ -178,7 +176,104 @@ public class SmsCouponServiceImpl extends ServiceImpl(queryH)); + if (count >= coupon.getPerLimit()) { + return new CommonResult().failed("您已经领取过该优惠券"); + } + //生成领取优惠券历史 + SmsCouponHistory couponHistory = new SmsCouponHistory(); + couponHistory.setCouponId(couponId); + couponHistory.setCouponCode(generateCouponCode(currentMember.getId())); + couponHistory.setCreateTime(now); + couponHistory.setMemberId(currentMember.getId()); + couponHistory.setMemberNickname(currentMember.getNickname()); + //主动领取 + couponHistory.setGetType(1); + //未使用 + couponHistory.setUseStatus(0); + couponHistory.setStartTime(coupon.getStartTime()); + couponHistory.setEndTime(coupon.getEndTime()); + couponHistory.setNote(coupon.getName() + ":满" + coupon.getMinPoint() + "减" + coupon.getAmount()); + couponHistory.setAmount(coupon.getAmount()); + couponHistory.setMinPoint(coupon.getMinPoint()); + couponHistoryMapper.insert(couponHistory); + //修改优惠券表的数量、领取数量 + coupon.setCount(coupon.getCount() - 1); + coupon.setReceiveCount(coupon.getReceiveCount() == null ? 1 : coupon.getReceiveCount() + 1); + couponMapper.updateById(coupon); + }else{ + //一键领取 + //查询未过期的以及未领取的数量 + List smsCouponList = baseMapper.selectAll(); + smsCouponList.removeAll(Collections.singleton(null)); + if(!smsCouponList.isEmpty()){ + for (int i = 0;i(queryH)); + if (count >= smsCoupon.getPerLimit()) { + continue; + }else{ + int counts = smsCoupon.getPerLimit()-count; + for(int j = 0;j