|
@@ -1,31 +1,79 @@
|
|
|
package com.fs.his.strategy.impl;
|
|
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.domain.FsUserRewards;
|
|
|
import com.fs.his.enums.ActivityTypeEnum;
|
|
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.RewardResult;
|
|
|
import com.fs.his.strategy.RewardStrategy;
|
|
import com.fs.his.strategy.RewardStrategy;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
@Component
|
|
@Component
|
|
|
public class FirstLoginProductStrategy implements RewardStrategy {
|
|
public class FirstLoginProductStrategy implements RewardStrategy {
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private FsUserMapper fsUserMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IFsPackageOrderService packageOrderService;
|
|
|
@Override
|
|
@Override
|
|
|
public RewardResult process(FsUserRewards reward) {
|
|
public RewardResult process(FsUserRewards reward) {
|
|
|
log.info("处理首次登录商品发放: rewardId={}", reward.getId());
|
|
log.info("处理首次登录商品发放: rewardId={}", reward.getId());
|
|
|
try {
|
|
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);
|
|
return RewardResult.success(orderCode);
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
- log.error("商品订单创建失败", e);
|
|
|
|
|
|
|
+ log.error("商品订单创建异常", e);
|
|
|
return RewardResult.fail("订单创建失败:" + e.getMessage());
|
|
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
|
|
@Override
|
|
|
public String getActivityType() {
|
|
public String getActivityType() {
|
|
|
return ActivityTypeEnum.FIRST_LOGIN.getCode();
|
|
return ActivityTypeEnum.FIRST_LOGIN.getCode();
|