瀏覽代碼

渠道用户白名单;投放链接回传过滤平台属性

zoujiajian 2 年之前
父節點
當前提交
20db2906e1

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/UserDistributeSharedWhiteMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage.distribute;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.UserDistributeSharedWhite;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: UserDistributeSharedWhiteMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/1/8 10:29
+ */
+public interface UserDistributeSharedWhiteMapper extends BaseMapper<UserDistributeSharedWhite> {
+}

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

@@ -60,6 +60,12 @@ public class ChannelPopularize extends BaseEntity{
     @JsonIgnore
     private String couponIds;
 
+    /**
+     * 回传过滤平台
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String filterGoodsIds;
+
     @DbIgnore
     @TableField(exist = false)
     private List<CouponTfPopularizeView> coupons;

+ 50 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserDistributeSharedWhite.java

@@ -0,0 +1,50 @@
+package com.cyksj.model.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: UserDistributeSharedWhite
+ * 创建者: JavaZou
+ * 创建时间:2024/1/8 10:28
+ */
+@Getter
+@Setter
+@SearchBean(tables = "user_distribute_shared_white uw left join user u on u.id = uw.user_id")
+public class UserDistributeSharedWhite {
+
+	@TableId(value = "id",type = IdType.AUTO)
+	@DbField("uw.id")
+	private Long id;
+
+	@DbField("uw.user_id")
+	private Long userId;
+
+	@DbField("u.nickname")
+	@TableField(exist = false)
+	private String nickname;
+
+	/**
+	 * 创建时间
+	 */
+
+	@TableField(fill = FieldFill.INSERT)
+	@DbField("uw.created_time")
+	private Date createdTime;
+
+	/**
+	 * 修改时间
+	 */
+	@TableField(fill = FieldFill.INSERT_UPDATE)
+	@DbField("uw.update_time")
+	private Date updateTime;
+}

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/views/ChannelPopularizeView.java

@@ -66,6 +66,9 @@ public class ChannelPopularizeView {
     @DbField("cp.is_show_logo")
     private Boolean isShowLogo;
 
+    @DbField("cp.filter_goods_ids")
+    private String filterGoodsIds;
+
     /**
      * 浏览数
      */

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/order/OrderDonPostService.java

@@ -5,7 +5,7 @@ package com.cyksj.service.order;
  * @date 2023/5/16 11:05 AM
  */
 public interface OrderDonPostService {
-    void postData(Long orderId) throws Exception;
+    void postData(Long orderId, Long goodsId, Long popularizeId) throws Exception;
 
     void savePostData(Long orderId, String callback, String callbackType);
 

+ 15 - 15
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonPostServiceImpl.java

@@ -1,16 +1,16 @@
 package com.cyksj.service.order.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.cyksj.common.constant.Constant;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.mapper.OrderDonMapper;
-import com.cyksj.mapper.sys.SysConfigMapper;
+import com.cyksj.mapper.channel.ChannelPopularizeMapper;
 import com.cyksj.mapper.order.OrderDonPostMapper;
-import com.cyksj.model.entity.OrderDon;
+import com.cyksj.mapper.sys.SysConfigMapper;
+import com.cyksj.model.entity.ChannelPopularize;
 import com.cyksj.model.entity.OrderDonPost;
-import com.cyksj.model.entity.SysConfig;
 import com.cyksj.service.order.OrderDonPostService;
 import com.cyksj.service.order.post.AbstractPostDataService;
 import com.cyksj.service.order.post.PostDataFactory;
@@ -35,23 +35,23 @@ public class OrderDonPostServiceImpl extends ServiceImpl<OrderDonPostMapper, Ord
 
     private final SysConfigMapper sysConfigMapper;
 
+    private final ChannelPopularizeMapper channelPopularizeMapper;
+
     @Override
-    public void postData(Long orderId) throws Exception {
+    public void postData(Long orderId, Long goodsId, Long popularizeId) throws Exception {
         OrderDonPost orderPost = this.getOne(Wrappers.lambdaQuery(OrderDonPost.class).eq(OrderDonPost::getOrderId, orderId).eq(OrderDonPost::getStatus, Boolean.FALSE));
         if (orderPost == null) {
             log.info("post 数据 不了存在 id:{}", orderId);
             return;
         }
-        if (orderPost.getType() == OrderDonPost.Type.BaiDu) {
-            SysConfig baiduFilterConfig = sysConfigMapper.selectOne(Wrappers.lambdaQuery(SysConfig.class)
-                    .eq(SysConfig::getSysKey, Constant.BAIDU_POST_FILTER_GOODS_KEY).last("limit 1"));
-            if (baiduFilterConfig != null) {
-                String sysValue = baiduFilterConfig.getSysValue();
-                if (StrUtil.isNotBlank(sysValue)) {
-                    List<Long> baiduFilterGoods = Jsons.parseList(sysValue, Long.class);
-                    OrderDon orderDon = orderDonMapper.selectById(orderId);
-                    if (baiduFilterGoods.contains(orderDon.getGoodsId())) {
-                        log.info("baidu 不回传该商品. 该订单商品id:{}", orderDon.getGoodsId());
+        if (popularizeId != null) {
+            ChannelPopularize channelPopularize = channelPopularizeMapper.selectById(popularizeId);
+            if (channelPopularize != null) {
+                String filterGoodsIds = channelPopularize.getFilterGoodsIds();
+                if (StrUtil.isNotBlank(filterGoodsIds)) {
+                    List<Long> filterGoodsIdList = Jsons.parseList(filterGoodsIds, Long.class);
+                    if (CollUtil.isNotEmpty(filterGoodsIdList) && filterGoodsIdList.contains(goodsId)) {
+                        log.info("该条:{}投放链接 不回传该商品. 该订单商品id:{}", popularizeId, goodsId);
                         return;
                     }
                 }

+ 19 - 1
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -255,6 +255,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 	private final UserPayOrderBlockMapper userPayOrderBlockMapper;
 
+	private final UserDistributeSharedWhiteMapper userDistributeSharedWhiteMapper;
+
+	private final UserDistributeSharedRelateUnbindMapper userDistributeSharedRelateUnbindMapper;
+
 	private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
 
 	@Transactional(rollbackFor = Throwable.class)
@@ -2338,7 +2342,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 		TASK_POOL.execute(()->{
 			try {
-				orderDonPostService.postData((orderDon.getId()));
+				orderDonPostService.postData(orderDon.getId(), orderDon.getGoodsId(), orderDon.getPopularizeId());
 			} catch (Exception e) {
 				log.error("回传错误 {}",StringUtil.getErrorText(e));
 			}
@@ -2587,6 +2591,20 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				if (userDistribute != null) {
 					//直接去除
 					if (!userDistributeShared.getIsBind()) {
+						UserDistributeSharedRelateUnbind userDistributeSharedRelateUnbind = userDistributeSharedRelateUnbindMapper.selectOne(Wrappers.lambdaQuery(UserDistributeSharedRelateUnbind.class)
+								.eq(UserDistributeSharedRelateUnbind::getUserId, userId)
+								.eq(UserDistributeSharedRelateUnbind::getIsUnbind, 1)
+								.last("limit 1"));
+						if (userDistributeSharedRelateUnbind != null) {
+							//是否是渠道用户白名单
+							UserDistributeSharedWhite userDistributeSharedWhite = userDistributeSharedWhiteMapper.selectOne(Wrappers.lambdaQuery(UserDistributeSharedWhite.class)
+									.eq(UserDistributeSharedWhite::getUserId, userDistributeShared.getSharedId())
+									.last("limit 1"));
+							if (userDistributeSharedWhite != null) {
+								orderDon.setIsFixedDistribute(true);
+								return;
+							}
+						}
 						orderDon.setIsDistribute(false);
 					} else {
 						//45天内是否下单成功 ==>改为30天

+ 41 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

@@ -53,7 +53,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
-/** 分销管理
+/** admin/分销管理
  *项目名: netflix
  *文件名: DistributeController
  *创建者: JavaZou
@@ -117,6 +117,8 @@ public class DistributeController {
 
 	private final UserDistributeTargetAlertRecordMapper targetAlertRecordMapper;
 
+	private final UserDistributeSharedWhiteMapper userDistributeSharedWhiteMapper;
+
 	/**
 	 * 添加固定推广者
 	 */
@@ -1194,4 +1196,42 @@ public class DistributeController {
 		UserDistributeUnbindOrderMoneyView userDistributeUnbindOrderMoneyView = beanSearcher.searchFirst(UserDistributeUnbindOrderMoneyView.class, builder.build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(userDistributeUnbindOrderMoneyView);
 	}
+
+	/**
+	 * 新增分销渠道白名单
+	 */
+	@PostMapping("/post/white")
+	@Log(module = "分销管理/渠道分销/新增渠道白名单", businessType = BusinessType.POST, isSaveRequestData = true)
+	public Result<String> postDistributeWhite(@RequestBody UserDistributeSharedWhite sharedWhite) {
+		if (sharedWhite.getUserId() == null) {
+			throw BusinessRuntimeException.getInstance("请指定对应渠道用户");
+		}
+		UserDistributeSharedWhite userDistributeSharedWhite = userDistributeSharedWhiteMapper.selectOne(Wrappers.lambdaQuery(UserDistributeSharedWhite.class)
+				.eq(UserDistributeSharedWhite::getUserId, sharedWhite.getUserId())
+				.last("limit 1"));
+		if (userDistributeSharedWhite != null) {
+			throw BusinessRuntimeException.getInstance("已添加该渠道用户");
+		}
+		userDistributeSharedWhiteMapper.insert(sharedWhite);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 删除渠道用户白名单
+	 */
+	@DeleteMapping("/del/white/{id}")
+	@Log(module = "分销管理/渠道分销/删除渠道白名单", businessType = BusinessType.DELETE, isSaveRequestData = true)
+	public Result<String> delDistributeWhite(@PathVariable Long id) {
+		userDistributeSharedWhiteMapper.deleteById(id);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 用户白名单列表
+	 */
+	@GetMapping("/get/white")
+	public Result<SearchResult<UserDistributeSharedWhite>> getDistributeWhite() {
+		SearchResult<UserDistributeSharedWhite> search = beanSearcher.search(UserDistributeSharedWhite.class, MapUtils.flatBuilder(request.getParameterMap()).build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
 }