Преглед на файлове

益寿缘app-完善奖品接口出参

cgp преди 1 седмица
родител
ревизия
e0d6a95ab2

+ 13 - 0
fs-service/src/main/java/com/fs/his/domain/FsUserRewards.java

@@ -1,5 +1,6 @@
 package com.fs.his.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 import java.math.BigDecimal;
 import java.util.Date;
@@ -79,4 +80,16 @@ public class FsUserRewards {
      * 是否是首次注册奖励:0-否 1-是
      */
     private Integer isFirstLogin;
+
+    /**
+     * 公司id 当前分支是益寿缘分支不做区分默认为1
+     * */
+    @TableField(exist = false)
+    private Long companyId=1L;
+
+    /**
+     * 销售id 当前分支是益寿缘分支不做区分默认为1
+     * */
+    @TableField(exist = false)
+    private Long companyUserId=1L;
 }

+ 5 - 0
fs-service/src/main/java/com/fs/his/service/impl/AppUserRewardServiceImpl.java

@@ -1,6 +1,8 @@
 package com.fs.his.service.impl;
 
 import cn.hutool.core.util.RandomUtil;
+import com.fs.app.domain.FsAppRole;
+import com.fs.app.mapper.FsAppRoleMapper;
 import com.fs.common.exception.CustomException;
 import com.fs.common.utils.DateUtils;
 import com.fs.his.domain.FsUser;
@@ -34,6 +36,9 @@ public class AppUserRewardServiceImpl implements IAppUserRewardService {
     @Autowired
     private FsUserMapper fsUserMapper;
 
+    @Autowired
+    private FsAppRoleMapper appRoleMapper;
+
     @Autowired
     private RewardStrategyFactory strategyFactory;
 

+ 52 - 4
fs-service/src/main/java/com/fs/his/strategy/impl/FirstLoginProductStrategy.java

@@ -1,31 +1,79 @@
 package com.fs.his.strategy.impl;
 
+import com.fs.common.core.domain.R;
+import com.fs.his.domain.FsPackageOrder;
+import com.fs.his.domain.FsUser;
 import com.fs.his.domain.FsUserRewards;
 import com.fs.his.enums.ActivityTypeEnum;
+import com.fs.his.mapper.FsUserMapper;
+import com.fs.his.param.FsPackageOrderCreateParam;
+import com.fs.his.service.IFsPackageOrderService;
 import com.fs.his.strategy.RewardResult;
 import com.fs.his.strategy.RewardStrategy;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Slf4j
 @Component
 public class FirstLoginProductStrategy implements RewardStrategy {
+
+    @Autowired
+    private FsUserMapper fsUserMapper;
+    
+    @Autowired
+    private IFsPackageOrderService packageOrderService;
     @Override
     public RewardResult process(FsUserRewards reward) {
         log.info("处理首次登录商品发放: rewardId={}", reward.getId());
         try {
-            //TODO 调用创建0元订单逻辑,返回 orderCode
-            String orderCode = "123";
+            FsUser fsUser = fsUserMapper.selectFsUserById(reward.getFsUserId());
+            if (fsUser == null) {
+                return RewardResult.fail("用户不存在");
+            }
+
+            // 调用创建0元订单接口
+            FsPackageOrderCreateParam param = buildOrderCreateParam(reward, fsUser);
+            R result = packageOrderService.createOrder1(param);
+
+            // 检查订单创建是否成功
+            if (!result.isSuccess()) {
+                log.error("商品订单创建失败: {}", result.getMsg());
+                return RewardResult.fail("订单创建失败:" + result.getMsg());
+            }
+
+            // 获取订单对象
+            Object orderObj = result.get("order");
+            if (orderObj == null) {
+                return RewardResult.fail("订单创建失败:返回数据为空");
+            }
 
-            log.info("商品订单创建成功: orderCode={}", orderCode);
+            // 转换为订单实体
+            FsPackageOrder order = (FsPackageOrder) orderObj;
+            String orderCode = order.getOrderSn();
+
+            log.info("商品订单创建成功: orderId={}, orderCode={}", order.getOrderId(), orderCode);
+
+            // 返回成功,带上订单号
             return RewardResult.success(orderCode);
 
         } catch (Exception e) {
-            log.error("商品订单创建失败", e);
+            log.error("商品订单创建异常", e);
             return RewardResult.fail("订单创建失败:" + e.getMessage());
         }
     }
 
+    /**
+     * 构建创建订单参数
+     */
+    private FsPackageOrderCreateParam buildOrderCreateParam(FsUserRewards reward, FsUser fsUser) {
+        FsPackageOrderCreateParam param = new FsPackageOrderCreateParam();
+        param.setCompanyId(reward.getCompanyId());
+        param.setCompanyUserId(reward.getCompanyUserId());
+        param.setUserId(fsUser.getUserId());
+        return param;
+    }
+
     @Override
     public String getActivityType() {
         return ActivityTypeEnum.FIRST_LOGIN.getCode();

+ 32 - 2
fs-service/src/main/java/com/fs/his/strategy/impl/FirstLoginRedPacketStrategy.java

@@ -1,27 +1,57 @@
 package com.fs.his.strategy.impl;
 
+import com.fs.his.domain.FsUser;
 import com.fs.his.domain.FsUserRewards;
 import com.fs.his.enums.ActivityTypeEnum;
+import com.fs.his.mapper.FsUserMapper;
+import com.fs.his.param.WxSendRedPacketParam;
+import com.fs.his.service.IFsStorePaymentService;
 import com.fs.his.strategy.RewardResult;
 import com.fs.his.strategy.RewardStrategy;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Slf4j
 @Component
 public class FirstLoginRedPacketStrategy implements RewardStrategy {
+
+    @Autowired
+    private FsUserMapper fsUserMapper;
+
+    @Autowired
+    private IFsStorePaymentService fsStorePaymentService;
     @Override
     public RewardResult process(FsUserRewards reward) {
         log.info("处理首次登录红包发放: rewardId={}", reward.getId());
         try {
-            //TODO 调用红包接口逻辑
+            FsUser fsUser=fsUserMapper.selectFsUserById(reward.getFsUserId());
+            if (fsUser!=null){
+                WxSendRedPacketParam param=buildRedPacketParam(reward, fsUser);
+                //调用发送红包接口逻辑
+                fsStorePaymentService.sendRedPacket(param);
+            }
             return RewardResult.success();
-
         } catch (Exception e) {
             return RewardResult.fail("红包发放失败");
         }
     }
 
+    /**
+     * 构建红包参数
+     */
+    private WxSendRedPacketParam buildRedPacketParam(FsUserRewards reward, FsUser fsUser) {
+        WxSendRedPacketParam param = new WxSendRedPacketParam();
+        param.setAppId("");
+        param.setOpenId(fsUser.getMpOpenId());
+        param.setRedPacketMode(1);
+        param.setCompanyId(reward.getCompanyId());
+        param.setUser(fsUser);
+        param.setSource(2);
+        param.setAmount(reward.getRewardAmount());
+        return param;
+    }
+
     @Override
     public String getActivityType() {
         return ActivityTypeEnum.FIRST_LOGIN.getCode();

+ 52 - 4
fs-service/src/main/java/com/fs/his/strategy/impl/WatchCourseProductStrategy.java

@@ -1,31 +1,79 @@
 package com.fs.his.strategy.impl;
 
+import com.fs.common.core.domain.R;
+import com.fs.his.domain.FsPackageOrder;
+import com.fs.his.domain.FsUser;
 import com.fs.his.domain.FsUserRewards;
 import com.fs.his.enums.ActivityTypeEnum;
+import com.fs.his.mapper.FsUserMapper;
+import com.fs.his.param.FsPackageOrderCreateParam;
+import com.fs.his.service.IFsPackageOrderService;
 import com.fs.his.strategy.RewardResult;
 import com.fs.his.strategy.RewardStrategy;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Slf4j
 @Component
 public class WatchCourseProductStrategy  implements RewardStrategy {
+
+    @Autowired
+    private FsUserMapper fsUserMapper;
+
+    @Autowired
+    private IFsPackageOrderService packageOrderService;
     @Override
     public RewardResult process(FsUserRewards reward) {
         log.info("处理看课商品发放: rewardId={}", reward.getId());
         try {
-            //TODO 调用创建订单逻辑,返回 orderCode
-            String orderCode = "123";
+            FsUser fsUser = fsUserMapper.selectFsUserById(reward.getFsUserId());
+            if (fsUser == null) {
+                return RewardResult.fail("用户不存在");
+            }
+
+            // 调用创建0元订单接口
+            FsPackageOrderCreateParam param = buildOrderCreateParam(reward, fsUser);
+            R result = packageOrderService.createOrder1(param);
+
+            // 检查订单创建是否成功
+            if (!result.isSuccess()) {
+                log.error("商品订单创建失败: {}", result.getMsg());
+                return RewardResult.fail("订单创建失败:" + result.getMsg());
+            }
+
+            // 获取订单对象
+            Object orderObj = result.get("order");
+            if (orderObj == null) {
+                return RewardResult.fail("订单创建失败:返回数据为空");
+            }
 
-            log.info("商品订单创建成功: orderCode={}", orderCode);
+            // 转换为订单实体
+            FsPackageOrder order = (FsPackageOrder) orderObj;
+            String orderCode = order.getOrderSn();
+
+            log.info("商品订单创建成功: orderId={}, orderCode={}", order.getOrderId(), orderCode);
+
+            // 返回成功,带上订单号
             return RewardResult.success(orderCode);
 
         } catch (Exception e) {
-            log.error("商品订单创建失败", e);
+            log.error("商品订单创建异常", e);
             return RewardResult.fail("订单创建失败:" + e.getMessage());
         }
     }
 
+    /**
+     * 构建创建订单参数
+     */
+    private FsPackageOrderCreateParam buildOrderCreateParam(FsUserRewards reward, FsUser fsUser) {
+        FsPackageOrderCreateParam param = new FsPackageOrderCreateParam();
+        param.setCompanyId(reward.getCompanyId());
+        param.setCompanyUserId(reward.getCompanyUserId());
+        param.setUserId(fsUser.getUserId());
+        return param;
+    }
+
     @Override
     public String getActivityType() {
         return ActivityTypeEnum.WATCH_COURSE.getCode();

+ 32 - 1
fs-service/src/main/java/com/fs/his/strategy/impl/WatchCourseRedPacketStrategy.java

@@ -1,20 +1,36 @@
 package com.fs.his.strategy.impl;
 
+import com.fs.his.domain.FsUser;
 import com.fs.his.domain.FsUserRewards;
 import com.fs.his.enums.ActivityTypeEnum;
+import com.fs.his.mapper.FsUserMapper;
+import com.fs.his.param.WxSendRedPacketParam;
+import com.fs.his.service.IFsStorePaymentService;
 import com.fs.his.strategy.RewardResult;
 import com.fs.his.strategy.RewardStrategy;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Slf4j
 @Component
 public class WatchCourseRedPacketStrategy implements RewardStrategy {
+
+    @Autowired
+    private FsUserMapper fsUserMapper;
+
+    @Autowired
+    private IFsStorePaymentService fsStorePaymentService;
     @Override
     public RewardResult process(FsUserRewards reward) {
         log.info("处理看课红包发放: rewardId={}", reward.getId());
         try {
-            //TODO 调用红包接口逻辑
+            FsUser fsUser=fsUserMapper.selectFsUserById(reward.getFsUserId());
+            if (fsUser!=null){
+                WxSendRedPacketParam param=buildRedPacketParam(reward, fsUser);
+                //调用发送红包接口逻辑
+                fsStorePaymentService.sendRedPacket(param);
+            }
             return RewardResult.success();
 
         } catch (Exception e) {
@@ -22,6 +38,21 @@ public class WatchCourseRedPacketStrategy implements RewardStrategy {
         }
     }
 
+    /**
+     * 构建红包参数
+     */
+    private WxSendRedPacketParam buildRedPacketParam(FsUserRewards reward, FsUser fsUser) {
+        WxSendRedPacketParam param = new WxSendRedPacketParam();
+        param.setAppId("");
+        param.setOpenId(fsUser.getMpOpenId());
+        param.setRedPacketMode(1);
+        param.setCompanyId(reward.getCompanyId());
+        param.setUser(fsUser);
+        param.setSource(2);
+        param.setAmount(reward.getRewardAmount());
+        return param;
+    }
+
     @Override
     public String getActivityType() {
         return ActivityTypeEnum.WATCH_COURSE.getCode();