فهرست منبع

fix 渠道推广添加关联优惠券

zoujiajian 3 سال پیش
والد
کامیت
da159223ab

+ 17 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/ChannelPopularize.java

@@ -1,8 +1,15 @@
 package com.cyksj.model.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.cyksj.model.views.CouponTfPopularizeView;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @author chan
  * @date 2022/12/13 2:27 PM
@@ -46,4 +53,14 @@ public class ChannelPopularize extends BaseEntity{
      */
     private Boolean isShowLogo;
 
+    /**
+     * 绑定的优惠券
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    @JsonIgnore
+    private String couponIds;
+
+    @DbIgnore
+    @TableField(exist = false)
+    private List<CouponTfPopularizeView> coupons;
 }

+ 101 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CouponTfPopularizeView.java

@@ -0,0 +1,101 @@
+package com.cyksj.model.views;
+
+import com.cyksj.model.entity.Coupon;
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/*
+ *项目名: netflix
+ *文件名: CouponTfPopularizeView
+ *创建者: JavaZou
+ *创建时间:2023/7/7 15:15
+ */
+@Getter
+@Setter
+@SearchBean(tables = "coupon c left join coupon_user cu on cu.coupon_id = c.id :user_id:")
+public class CouponTfPopularizeView {
+
+	/**
+	 * 优惠券id
+	 */
+	@DbField("c.id")
+	private Long couponId;
+
+	/**
+	 * 优惠券名称
+	 */
+	@DbField("c.name")
+	private String name;
+
+	/**
+	 * 优惠券平台类型
+	 */
+	@DbField("c.goods_type")
+	private Coupon.GoodsType goodsType;
+
+	/**
+	 * 优惠券类型
+	 */
+	@DbField("c.type")
+	private Coupon.Type type;
+
+	/**
+	 * 可用满减卷金额条件
+	 */
+	@DbField("c.reduce_condition")
+	private BigDecimal reduceCondition;
+
+	/**
+	 * 抵扣金额
+	 */
+	@DbField("c.reduce_money")
+	private BigDecimal reduceMoney;
+
+	/**
+	 * 折扣
+	 */
+	@DbField("c.discount")
+	private BigDecimal discount;
+
+	@DbIgnore
+	private String goodsSkuStr;
+
+	/**
+	 * 是否是有效时间
+	 */
+	@DbField("c.is_valid_time")
+	private Boolean isValidTime;
+
+	/**
+	 * 起始有效时间
+	 */
+	@DbField("c.valid_start_time")
+	private Date validStartTime;
+
+	/**
+	 * 截止有效时间
+	 */
+	@DbField("c.valid_end_time")
+	private Date validEndTime;
+
+	/**
+	 * 领取有效天数
+	 */
+	@DbField("c.valid_days")
+	private Integer validDays;
+
+	/**
+	 * 使用范围
+	 */
+	@DbField("c.use_scope")
+	private Coupon.UseScope useScope;
+
+	@DbField("case when cu.id is not null then 'received' else 'collecting' end")
+	private CouponActiveView.CouponStatus couponStatus;
+}

+ 35 - 2
netflix-web/src/main/java/com/cyksj/web/controller/channel/ChannelController.java

@@ -1,17 +1,28 @@
 package com.cyksj.web.controller.channel;
 
+import cn.hutool.core.util.StrUtil;
 import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.channel.ChannelPopularizeMapper;
 import com.cyksj.mapper.channel.ChannelPopularizeVisitMapper;
 import com.cyksj.mapper.channel.MoviesVisitRecordMapper;
+import com.cyksj.mapper.manage.coupon.CouponSkuMapper;
 import com.cyksj.model.entity.ChannelPopularize;
 import com.cyksj.model.entity.ChannelPopularizeVisit;
 import com.cyksj.model.entity.MoviesVisitRecord;
+import com.cyksj.model.views.CouponTfPopularizeView;
+import com.cyksj.web.util.StpUserUtil;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.param.Operator;
+import com.ejlchina.searcher.util.MapBuilder;
+import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * @author chan
  * @date 2022/12/13 2:36 PM
@@ -27,12 +38,34 @@ public class ChannelController {
 
     private final MoviesVisitRecordMapper moviesVisitRecordMapper;
 
+    private final BeanSearcher beanSearcher;
+
+    private final CouponSkuMapper couponSkuMapper;
+
     @GetMapping("/get/{id}")
-    public Result<ChannelPopularize> getById(@PathVariable Long id){
+    public Result<ChannelPopularize> getById(@PathVariable Long id, Boolean isLogin) {
         ChannelPopularize channelPopularize = popularizeMapper.selectById(id);
-        if(channelPopularize == null){
+        if (channelPopularize == null) {
             throw BusinessRuntimeException.getInstance("该链接不存在!");
         }
+        if (StrUtil.isNotBlank(channelPopularize.getCouponIds())) {
+            try {
+                List<Long> couponIds = Jsons.parseList(channelPopularize.getCouponIds(), Long.class);
+                Long userId = (isLogin != null && !isLogin) ? null : StpUserUtil.getLoginIdAsLong();
+                MapBuilder builder = MapUtils.builder().field(CouponTfPopularizeView::getCouponId, couponIds).op(Operator.InList);
+                if (userId != null) {
+                    builder.put("user_id", String.format("and cu.user_id = %s", userId));
+                }
+                List<CouponTfPopularizeView> couponTfPopularizeViews = beanSearcher.searchAll(CouponTfPopularizeView.class, builder.build());
+                couponTfPopularizeViews.forEach(data -> {
+                    String str = couponSkuMapper.selectGoodsSkuStr(data.getCouponId());
+                    data.setGoodsSkuStr(str.replaceAll(",", "/").replaceAll(";", ""));
+                });
+                channelPopularize.setCoupons(couponTfPopularizeViews);
+            } catch (Exception e) {
+                System.out.println(e.getMessage());
+            }
+        }
         ChannelPopularizeVisit channelPopularizeVisit = new ChannelPopularizeVisit();
         channelPopularizeVisit.setPopularizeId(id);
         channelPopularizeVisitMapper.insert(channelPopularizeVisit);