Jelajahi Sumber

用户注册 缓存传入的用户回传信息

zoujiajian 3 tahun lalu
induk
melakukan
8c2fcd9f2a

+ 4 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/AuthRedirect.java

@@ -42,4 +42,8 @@ public class AuthRedirect {
      * 固定推广code
      */
     private String dsCode;
+
+    private String callback;
+
+    private String callbackType;
 }

+ 22 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/OrderDonPostDataDto.java

@@ -0,0 +1,22 @@
+package com.cyksj.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+/*
+ *项目名: netflix
+ *文件名: OrderDonPostDataDto
+ *创建者: JavaZou
+ *创建时间:2023/7/13 11:13
+ */
+@Getter
+@Setter
+@Accessors(chain = true)
+public class OrderDonPostDataDto {
+	private Long userId;
+
+	private String callback;
+
+	private String callbackType;
+}

+ 4 - 0
netflix-dao/src/main/java/com/cyksj/model/request/LoginReq.java

@@ -55,4 +55,8 @@ public class LoginReq {
 	 * 固定推广code
 	 */
 	private String dsCode;
+
+	private String callback;
+
+	private String callbackType;
 }

+ 1 - 0
netflix-service/src/main/java/com/cyksj/redis/RedisService.java

@@ -623,6 +623,7 @@ public class RedisService {
         CORP_WECLOME_MEDIA("corp:%s:weclome:media:","临时素材 mediaId",60*60*24*3 - 60*60*1L),
         CORP_UPLOAD_ATTACHMENTS("corp:%s:upload:attachments:","临时附件",60*60*24*3 - 60*60*1L),
         CORP_DYNAMIC_RULE_TAG_KEY("corp_dynamic_rule_tag_key:", "企业微信动态标签key", 60 * 60L),
+        ORDER_DON_POST_DATA_USER_KEY("order_don_post_data_user_key:", "用户订单回传缓存key", -1L),
         ;
 
         private String name;

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

@@ -3,6 +3,7 @@ package com.cyksj.service.distribute.equipment.impl;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.constant.Constant;
 import com.cyksj.common.util.Jsons;
@@ -108,6 +109,13 @@ public class EquipmentDistributeServiceImpl implements EquipmentDistributeServic
 		if (record != null) {
 			Long sharId = record.getShareId();
 			if (saveInviteRecord(sharId, userId, orderId, EquipmentUserChanceRecord.Status.hasPayment)) {
+				SysConfig config = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class)
+						.eq(SysConfig::getSysKey, Constant.EQUIPMENT_DISTRIBUTE_KEY).last("limit 1"));
+				String sysValue = config.getSysValue();
+				//未配置车票权益 不增加次数
+				if (StrUtil.isEmpty(sysValue)) {
+					return;
+				}
 				EquipmentUserChance chance = equipmentUserChanceMapper.selectOne(Wrappers.lambdaQuery(EquipmentUserChance.class)
 						.eq(EquipmentUserChance::getUserId, sharId)
 						.last("limit 1"));

+ 16 - 4
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -44,10 +44,7 @@ import com.cyksj.mapper.manage.coupon.CouponUserMapper;
 import com.cyksj.mapper.manage.distribute.*;
 import com.cyksj.mapper.market.task.TaskTypeMapper;
 import com.cyksj.mapper.market.task.UserBindDetailMapper;
-import com.cyksj.model.dto.AliPayParams;
-import com.cyksj.model.dto.ChatGPTPlusPurchaseLimitDto;
-import com.cyksj.model.dto.CouponPopularizeDto;
-import com.cyksj.model.dto.H5JsPayParams;
+import com.cyksj.model.dto.*;
 import com.cyksj.model.entity.Address;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.GroupsRelationView;
@@ -316,6 +313,21 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 		if (StringUtils.isNotBlank(payRequest.getCallback())) {
 			orderDonPostService.savePostData(orderDon.getId(), payRequest.getCallback(), payRequest.getCallbackType());
 		}
+		//无回传前端传入 查询缓存中用户的回传信息
+		if (StringUtils.isEmpty(payRequest.getCallback())) {
+			String val = redisService.getStr(RedisService.key.ORDER_DON_POST_DATA_USER_KEY.getName() + user.getId());
+			if (StrUtil.isNotBlank(val)) {
+				try {
+					Optional.ofNullable(Jsons.parseObject(val, OrderDonPostDataDto.class))
+							.ifPresent(orderDonPostDataDto -> {
+								log.info("用户ID:{}预下单 回传用户缓存 订单回传记录保存,callback:{},callbackType:{}", orderDon.getUserId(), orderDonPostDataDto.getCallback(), orderDonPostDataDto.getCallbackType());
+								orderDonPostService.savePostData(orderDon.getId(), orderDonPostDataDto.getCallback(), orderDonPostDataDto.getCallbackType());
+							});
+				} catch (Exception e) {
+					log.error("解析用户缓存回传信息错误,msg:{}", StringUtil.getErrorText(e));
+				}
+			}
+		}
 
 		return orderDon;
 	}

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

@@ -14,7 +14,7 @@ import java.util.List;
  */
 public interface UserService extends IService<User> {
 
-    User saveAuth(GzhOAuth2UserInfo userinfo, Long sharedId, Integer dsType, Long pid, User.RegisterEnv registerEnv, String dsCode);
+	User saveAuth(GzhOAuth2UserInfo userinfo, Long sharedId, Integer dsType, Long pid, User.RegisterEnv registerEnv, String dsCode, String callback, String callbackType) throws Exception;
 
     UserWhoami whoami(long userId);
 

+ 8 - 1
netflix-service/src/main/java/com/cyksj/service/user/impl/UserServiceImpl.java

@@ -15,6 +15,7 @@ import com.cyksj.mapper.channel.ChannelPopularizeMapper;
 import com.cyksj.mapper.manage.cps.UserDistributePopularizeMapper;
 import com.cyksj.mapper.market.task.UserBindDetailMapper;
 import com.cyksj.model.dto.GzhOAuth2UserInfo;
+import com.cyksj.model.dto.OrderDonPostDataDto;
 import com.cyksj.model.dto.UserWhoami;
 import com.cyksj.model.entity.*;
 import com.cyksj.redis.RedisService;
@@ -62,7 +63,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 	private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
 	@Override
-	public User saveAuth(GzhOAuth2UserInfo info, Long sharedId, Integer dsType, Long pid, User.RegisterEnv registerEnv, String dsCode) {
+	public User saveAuth(GzhOAuth2UserInfo info, Long sharedId, Integer dsType, Long pid, User.RegisterEnv registerEnv, String dsCode, String callback, String callbackType) throws Exception {
 		final String unionid = info.getUnionid();
 		if (StrUtil.isEmpty(unionid)) {
 			throw BusinessRuntimeException.getInstance("授权操作异常,请刷新页面");
@@ -96,6 +97,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 						.eq(User::getUnionid, unionid).last("limit 1"));
 			}
 			this.save(user);
+			//缓存用户注册 回传信息
+			if (StrUtil.isNotBlank(callback)) {
+				OrderDonPostDataDto orderDonPostDataDto = new OrderDonPostDataDto().setCallback(callback)
+						.setCallbackType(callbackType);
+				redisService.set(RedisService.key.ORDER_DON_POST_DATA_USER_KEY.getName() + user.getId(), Jsons.toJson(orderDonPostDataDto));
+			}
 		} else {
 			if (StrUtil.isEmpty(user.getRegisterEnv())) {
 				user.setRegisterEnv(registerEnv.name());

+ 10 - 5
netflix-web/src/main/java/com/cyksj/web/controller/user/AuthorizationController.java

@@ -20,10 +20,7 @@ import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.PhoneCodeMapper;
 import com.cyksj.mapper.manage.cps.UserDistributePopularizeMapper;
-import com.cyksj.model.dto.AuthRedirect;
-import com.cyksj.model.dto.AuthToken;
-import com.cyksj.model.dto.GzhOAuth2UserInfo;
-import com.cyksj.model.dto.JsSdkTicket;
+import com.cyksj.model.dto.*;
 import com.cyksj.model.entity.PhoneCode;
 import com.cyksj.model.entity.User;
 import com.cyksj.model.entity.UserDistributePopularize;
@@ -455,6 +452,14 @@ public class AuthorizationController {
             if (sharedId != null) {
                 distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId);
             }
+            //缓存用户注册 回传信息
+            if (StrUtil.isNotBlank(loginReq.getCallback())) {
+                OrderDonPostDataDto orderDonPostDataDto = new OrderDonPostDataDto()
+                        .setUserId(user.getId())
+                        .setCallback(loginReq.getCallback())
+                        .setCallbackType(loginReq.getCallbackType());
+                redisService.set(RedisService.key.ORDER_DON_POST_DATA_USER_KEY.getName() + user.getId(), Jsons.toJson(orderDonPostDataDto));
+            }
         }
         //写回登陆信息
         StpUserUtil.login(user.getId());
@@ -473,7 +478,7 @@ public class AuthorizationController {
         String json = Codec.DoBase64.custom().setData(state).decodeAsText();
         AuthRedirect re = Jsons.parseObject(json, AuthRedirect.class);
         //保存用户信息
-        User user = userService.saveAuth(userinfo, re.getSharedId(), re.getDsType(), re.getPid(), registerEnv, re.getDsCode());
+        User user = userService.saveAuth(userinfo, re.getSharedId(), re.getDsType(), re.getPid(), registerEnv, re.getDsCode(), re.getCallback(), re.getCallbackType());
         if (user == null) {
             throw BusinessRuntimeException.getInstance("系统错误,请重新授权");
         }