Эх сурвалжийг харах

fix 添加固定渠道,注册后发放优惠券

zoujiajian 3 жил өмнө
parent
commit
67d1f0e1a7

+ 29 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CorpUserFollowView.java

@@ -0,0 +1,29 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: CorpUserFollowView
+ *创建者: JavaZou
+ *创建时间:2023/3/3 10:59
+ */
+@SearchBean(tables = "corp_user cu left join corp_user_auth ca on ca.corp_user_id = cu.id" +
+		" left join corp_user_follow_relation cr on cr.corp_user_id = ca.external_userid" +
+		" and cr.wx_corp_id = ca.wx_corp_id")
+@Getter
+@Setter
+public class CorpUserFollowView {
+
+	@DbField("cu.id")
+	private Long corpUserId;
+
+	@DbField("cu.unionid")
+	private String unionId;
+
+	@DbField("cr.follow_id")
+	private String followId;
+}

+ 10 - 8
netflix-service/src/main/java/com/cyksj/service/coupon/impl/CouponFontServiceImpl.java

@@ -256,13 +256,15 @@ public class CouponFontServiceImpl implements CouponFontService {
 
 	@Override
 	public void updateCouponUserValidTime(Long couponId, CouponUser couponUser) {
-		Coupon coupon = couponMapper.getCouponById(couponId);
-		if (coupon.getIsValidTime()) {
-			couponUser.setValidStartTime(coupon.getValidStartTime());
-			couponUser.setValidEndTime(coupon.getValidEndTime());
-		} else {
-			couponUser.setValidStartTime(DateTime.now());
-			couponUser.setValidEndTime(DateUtil.offsetDay(couponUser.getValidStartTime(), coupon.getValidDays()));
-		}
+		Coupon entity = couponMapper.getCouponById(couponId);
+		Optional.ofNullable(entity).ifPresent(coupon->{
+			if (coupon.getIsValidTime()) {
+				couponUser.setValidStartTime(coupon.getValidStartTime());
+				couponUser.setValidEndTime(coupon.getValidEndTime());
+			} else {
+				couponUser.setValidStartTime(DateTime.now());
+				couponUser.setValidEndTime(DateUtil.offsetDay(couponUser.getValidStartTime(), coupon.getValidDays()));
+			}
+		});
 	}
 }

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/distribute/equipment/impl/EquipmentDistributeServiceImpl.java

@@ -28,6 +28,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.Optional;
 
@@ -196,6 +197,7 @@ public class EquipmentDistributeServiceImpl implements EquipmentDistributeServic
 		}
 		Optional.ofNullable(receiveBenefitsRecord.getOrderId()).ifPresent(selfOrderId->{
 			orderDonMapper.update(null, Wrappers.lambdaUpdate(OrderDon.class).eq(OrderDon::getId, selfOrderId)
+					.set(OrderDon::getRefundMoney, BigDecimal.ZERO)
 					.set(OrderDon::getStatus, OrderDon.Status.refund));
 		});
 		receiveBenefitsRecord.setRefundOrderId(orderId);

+ 7 - 1
netflix-service/src/main/java/com/cyksj/service/gzh/factory/EventMsgService.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.constant.Constant;
+import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
 import com.cyksj.common.util.Codec;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.config.WeChatConfig;
@@ -60,6 +61,8 @@ public class EventMsgService implements GzhMsgService {
 
 	private final WxSyncLogMapper wxSyncLogMapper;
 
+	private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
+
 	@Override
 	public String handleNotify(MsgEvent msgEvent) {
 		try {
@@ -133,7 +136,7 @@ public class EventMsgService implements GzhMsgService {
 			user.setOpenId(openId);
 			user.setUnionid(info.getUnionid());
 			userMapper.insert(user);
-
+			Long userId = user.getId();
 			if (gzhDto != null) {
 				Long sharedId = gzhDto.getSharedId();
 				if (sharedId != null) {
@@ -144,6 +147,9 @@ public class EventMsgService implements GzhMsgService {
 					userMapper.update(null, Wrappers.lambdaUpdate(User.class)
 							.eq(User::getId, user.getId())
 							.set(User::getPopularizeId, popularizeId));
+					TASK_POOL.execute(() -> {
+						userService.sendFixedCustomerCoupon(popularizeId, userId, info.getUnionid());
+					});
 				}
 			}
 

+ 5 - 0
netflix-service/src/main/java/com/cyksj/service/user/UserService.java

@@ -17,4 +17,9 @@ public interface UserService extends IService<User> {
     UserWhoami whoami(long userId);
 
     User getSyncUser(String openId, String unionId, WxSyncLog wxSyncLog);
+
+    /**
+     * 发放添加固定客服渠道优惠券
+     */
+    void sendFixedCustomerCoupon(Long popularizeId, Long userId, String unionId);
 }

+ 60 - 7
netflix-service/src/main/java/com/cyksj/service/user/impl/UserServiceImpl.java

@@ -5,24 +5,33 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.exception.BusinessRuntimeException;
+import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
+import com.cyksj.common.util.Jsons;
 import com.cyksj.config.WeChatConfig;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.UserTransferLogMapper;
 import com.cyksj.mapper.WxSyncLogMapper;
+import com.cyksj.mapper.channel.ChannelPopularizeMapper;
 import com.cyksj.model.dto.GzhOAuth2UserInfo;
 import com.cyksj.model.dto.UserWhoami;
-import com.cyksj.model.entity.User;
-import com.cyksj.model.entity.UserTransferLog;
-import com.cyksj.model.entity.WxSyncLog;
+import com.cyksj.model.entity.*;
+import com.cyksj.model.views.CorpUserFollowView;
 import com.cyksj.service.distribute.DistributeService;
 import com.cyksj.service.distribute.equipment.EquipmentDistributeService;
+import com.cyksj.service.mange.coupon.CouponCommonService;
+import com.cyksj.service.sys.SysConfigService;
 import com.cyksj.service.user.UserService;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.param.Operator;
+import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
+import java.util.List;
 import java.util.Optional;
 
 /**
@@ -43,7 +52,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
     private final EquipmentDistributeService equipDistributeService;
 
-    @Override
+	private final ChannelPopularizeMapper channelPopularizeMapper;
+
+	private final CouponCommonService couponCommonService;
+
+	private final BeanSearcher beanSearcher;
+
+	private final SysConfigService sysConfigService;
+
+	private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
+
+	@Override
     public User saveAuth(GzhOAuth2UserInfo info, Long sharedId, Integer dsType, Long pid) {
         final String unionid = info.getUnionid();
         if (StrUtil.isEmpty(unionid)) {
@@ -79,12 +98,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 		}
 		user.setUnionid(unionid);
 		user.setOpenId(info.getOpenid());
-
 		Boolean isNewUser = false;
 		if (user.getId() == null) {
+			Long userId = user.getId();
 			isNewUser = true;
-            user.setPopularizeId(pid);
-        }
+			user.setPopularizeId(pid);
+			if (pid != null) {
+				TASK_POOL.execute(() -> {
+					sendFixedCustomerCoupon(pid, userId, unionid);
+				});
+			}
+		}
 		this.saveOrUpdate(user);
 		if (sharedId != null && isNewUser) {
 			if (dsType == null || dsType == 1) {
@@ -142,4 +166,33 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         }
         return user;
     }
+
+	@Override
+	public void sendFixedCustomerCoupon(Long popularizeId, Long userId, String unionId) {
+		//若是百度渠道 添加固定客服 注册后直接发放优惠券
+		ChannelPopularize channelPopularize = channelPopularizeMapper.selectById(popularizeId);
+		if (channelPopularize != null && channelPopularize.getChannelId() == 34) {
+			SysConfig corpConfig = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class)
+					.eq(SysConfig::getSysKey, Constant.CORP_FIXED_CUSTOMER)
+					.last("limit 1"));
+			if (corpConfig != null) {
+				Optional.ofNullable(corpConfig.getSysValue()).ifPresent(value -> {
+					try {
+						if (StrUtil.isNotBlank(value)) {
+							List<String> followIds = Jsons.parseList(value, String.class);
+							//添加固定客服发放优惠券
+							CorpUserFollowView corpUserFollowView = beanSearcher.searchFirst(CorpUserFollowView.class, MapUtils.builder()
+									.field(CorpUserFollowView::getUnionId, unionId)
+									.field(CorpUserFollowView::getFollowId, followIds).op(Operator.InList).build());
+							if (corpUserFollowView != null) {
+								couponCommonService.sendCouponToUser(userId, 38l, 0l, 0l, 0l, CouponUser.Channel.wxCorp);
+							}
+						}
+					} catch (Exception e) {
+					}
+				});
+
+			}
+		}
+	}
 }