|
@@ -11,10 +11,10 @@ import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
|
|
import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
|
|
|
import com.cyksj.common.util.Jsons;
|
|
import com.cyksj.common.util.Jsons;
|
|
|
import com.cyksj.enums.GatewayApiCode;
|
|
import com.cyksj.enums.GatewayApiCode;
|
|
|
|
|
+import com.cyksj.mapper.OrderDonMapper;
|
|
|
import com.cyksj.mapper.UserMapper;
|
|
import com.cyksj.mapper.UserMapper;
|
|
|
import com.cyksj.mapper.channel.ChannelPopularizeMapper;
|
|
import com.cyksj.mapper.channel.ChannelPopularizeMapper;
|
|
|
import com.cyksj.mapper.manage.coupon.*;
|
|
import com.cyksj.mapper.manage.coupon.*;
|
|
|
-import com.cyksj.mapper.sys.SysConfigMapper;
|
|
|
|
|
import com.cyksj.model.entity.*;
|
|
import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.request.ChannelPopularizeCouponReq;
|
|
import com.cyksj.model.request.ChannelPopularizeCouponReq;
|
|
|
import com.cyksj.model.request.CouponCollectReq;
|
|
import com.cyksj.model.request.CouponCollectReq;
|
|
@@ -63,7 +63,7 @@ public class CouponFontServiceImpl implements CouponFontService {
|
|
|
|
|
|
|
|
private final UserMapper userMapper;
|
|
private final UserMapper userMapper;
|
|
|
|
|
|
|
|
- private final SysConfigMapper sysConfigMapper;
|
|
|
|
|
|
|
+ private final OrderDonMapper orderDonMapper;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
@@ -388,4 +388,66 @@ public class CouponFontServiceImpl implements CouponFontService {
|
|
|
}
|
|
}
|
|
|
return getCouponDetailById(userId, couponId);
|
|
return getCouponDetailById(userId, couponId);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<CouponView> getGoodsUserActivityCoupons(long userId) throws Exception {
|
|
|
|
|
+ UserActivityDistributeDetailView goodsActivity = getGoodsActivity();
|
|
|
|
|
+ if (goodsActivity == null) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ String couponIds = goodsActivity.getCouponIds();
|
|
|
|
|
+ List<Long> couponIdList = Jsons.parseList(couponIds, Long.class);
|
|
|
|
|
+ //是否领取过
|
|
|
|
|
+ Integer selectCount = couponUserMapper.selectCount(Wrappers.lambdaQuery(CouponUser.class).in(CouponUser::getCouponId, couponIdList).eq(CouponUser::getUserId, userId));
|
|
|
|
|
+ if (selectCount == couponIdList.size()) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ //未领取
|
|
|
|
|
+ //是否购买过
|
|
|
|
|
+ String skuIds = goodsActivity.getSkuIds();
|
|
|
|
|
+ List<Long> skuIdList = Jsons.parseList(skuIds, Long.class);
|
|
|
|
|
+ Integer orderCount = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class).eq(OrderDon::getUserId, userId).notIn(OrderDon::getStatus, Constant.noOrderAllStatus).in(OrderDon::getSkuId, skuIdList));
|
|
|
|
|
+ if (orderCount == 0) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ List<CouponView> couponViews = beanSearcher.searchAll(CouponView.class, MapUtils.builder().field(CouponView::getCouponId, couponIdList).op(Operator.InList).orderBy(CouponView::getCouponId).build());
|
|
|
|
|
+ return couponViews;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void collectAllGoodsActivityCoupons(long userId) throws Exception {
|
|
|
|
|
+ UserActivityDistributeDetailView goodsActivity = getGoodsActivity();
|
|
|
|
|
+ if (goodsActivity != null) {
|
|
|
|
|
+ String couponIds = goodsActivity.getCouponIds();
|
|
|
|
|
+ List<Long> couponIdList = Jsons.parseList(couponIds, Long.class);
|
|
|
|
|
+ //是否领取过
|
|
|
|
|
+ Integer selectCount = couponUserMapper.selectCount(Wrappers.lambdaQuery(CouponUser.class).in(CouponUser::getCouponId, couponIdList).eq(CouponUser::getUserId, userId));
|
|
|
|
|
+ if (selectCount != couponIdList.size()) {
|
|
|
|
|
+ //未领取
|
|
|
|
|
+ //是否购买过
|
|
|
|
|
+ String skuIds = goodsActivity.getSkuIds();
|
|
|
|
|
+ List<Long> skuIdList = Jsons.parseList(skuIds, Long.class);
|
|
|
|
|
+ Integer orderCount = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class).eq(OrderDon::getUserId, userId).notIn(OrderDon::getStatus, Constant.noOrderAllStatus).in(OrderDon::getSkuId, skuIdList));
|
|
|
|
|
+ if (orderCount != 0) {
|
|
|
|
|
+ //一键领取优惠券
|
|
|
|
|
+ couponIdList.forEach(couponId -> {
|
|
|
|
|
+ try {
|
|
|
|
|
+ receiveCouponUser(couponId, userId, CouponUser.Channel.ptfq);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public UserActivityDistributeDetailView getGoodsActivity() {
|
|
|
|
|
+ String dateStr = DateTime.now().toString();
|
|
|
|
|
+ String time = String.format(" and (ua.start_time is null or (ua.start_time < '%s' and ua.end_time > '%s'))", dateStr, dateStr);
|
|
|
|
|
+ UserActivityDistributeDetailView goodsActivity = beanSearcher.searchFirst(UserActivityDistributeDetailView.class, MapUtils.builder()
|
|
|
|
|
+ .field(UserActivityDistributeDetailView::getType, 2)
|
|
|
|
|
+ .put("time", time)
|
|
|
|
|
+ .build());
|
|
|
|
|
+ return goodsActivity;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|