|
@@ -1,6 +1,7 @@
|
|
|
package com.fs.his.strategy.impl;
|
|
package com.fs.his.strategy.impl;
|
|
|
|
|
|
|
|
import com.fs.common.core.domain.R;
|
|
import com.fs.common.core.domain.R;
|
|
|
|
|
+import com.fs.common.exception.CustomException;
|
|
|
import com.fs.his.domain.FsPackageOrder;
|
|
import com.fs.his.domain.FsPackageOrder;
|
|
|
import com.fs.his.domain.FsUser;
|
|
import com.fs.his.domain.FsUser;
|
|
|
import com.fs.his.domain.FsUserRewards;
|
|
import com.fs.his.domain.FsUserRewards;
|
|
@@ -10,6 +11,7 @@ import com.fs.his.param.FsPackageOrderAddRewardsParam;
|
|
|
import com.fs.his.service.IFsPackageOrderService;
|
|
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 com.fs.hisStore.domain.FsStoreOrderScrm;
|
|
|
import com.fs.hisStore.param.FsStoreOrderCreateParamAppReward;
|
|
import com.fs.hisStore.param.FsStoreOrderCreateParamAppReward;
|
|
|
import com.fs.hisStore.service.IFsStoreOrderScrmService;
|
|
import com.fs.hisStore.service.IFsStoreOrderScrmService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -36,41 +38,49 @@ public class WatchCourseProductStrategy implements RewardStrategy {
|
|
|
if (fsUser == null) {
|
|
if (fsUser == null) {
|
|
|
return RewardResult.fail("用户不存在");
|
|
return RewardResult.fail("用户不存在");
|
|
|
}
|
|
}
|
|
|
- if (reward.getAddressId()==null){
|
|
|
|
|
|
|
+ if (reward.getAddressId() == null) {
|
|
|
return RewardResult.fail("请选择收货地址");
|
|
return RewardResult.fail("请选择收货地址");
|
|
|
}
|
|
}
|
|
|
- // 调用创建0元订单接口
|
|
|
|
|
- FsPackageOrderAddRewardsParam param = buildOrderCreateParam(reward, fsUser);
|
|
|
|
|
//互联网医院和商城要调用不同的订单创建逻辑
|
|
//互联网医院和商城要调用不同的订单创建逻辑
|
|
|
R result;
|
|
R result;
|
|
|
|
|
+ String orderCode; // 统一在此处定义 orderCode
|
|
|
if (reward.getProductType() == 1) {
|
|
if (reward.getProductType() == 1) {
|
|
|
- //套餐包订单
|
|
|
|
|
|
|
+ FsPackageOrderAddRewardsParam param = buildOrderCreateParam(reward, fsUser);
|
|
|
|
|
+ //创建套餐包订单
|
|
|
result = packageOrderService.addPackageOrderForAppRewards(param);
|
|
result = packageOrderService.addPackageOrderForAppRewards(param);
|
|
|
|
|
+ if (result.isSuccess()) {
|
|
|
|
|
+ Object orderObj = result.get("order");
|
|
|
|
|
+ if (orderObj instanceof FsPackageOrder) { // 安全检查
|
|
|
|
|
+ FsPackageOrder order = (FsPackageOrder) orderObj;
|
|
|
|
|
+ orderCode = order.getOrderSn();
|
|
|
|
|
+ log.info("套餐包订单创建成功: orderId={}, orderCode={}", order.getOrderId(), orderCode);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.error("套餐包订单创建失败: 返回数据类型错误");
|
|
|
|
|
+ return RewardResult.fail("订单创建失败:返回数据类型错误");
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.error("套餐包订单创建失败: {}", result.getMsg());
|
|
|
|
|
+ return RewardResult.fail("订单创建失败:" + result.getMsg());
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
- //商城订单
|
|
|
|
|
- FsStoreOrderCreateParamAppReward storeAppReward=new FsStoreOrderCreateParamAppReward();
|
|
|
|
|
- result = storeOrderScrmService.createOrderScrmForAppRewards(reward.getFsUserId(),storeAppReward);
|
|
|
|
|
|
|
+ //创建商城订单
|
|
|
|
|
+ FsStoreOrderCreateParamAppReward storeAppReward = buildStoreOrderCreateParam(reward, fsUser);
|
|
|
|
|
+ result = storeOrderScrmService.createOrderScrmForAppRewards(reward.getFsUserId(), storeAppReward);
|
|
|
|
|
+ if (result.isSuccess()) {
|
|
|
|
|
+ Object orderObj = result.get("order");
|
|
|
|
|
+ if (orderObj instanceof FsStoreOrderScrm) {
|
|
|
|
|
+ FsStoreOrderScrm order = (FsStoreOrderScrm) orderObj; //类型转换
|
|
|
|
|
+ orderCode = order.getOrderCode();
|
|
|
|
|
+ log.info("商城订单创建成功: orderId={}, orderCode={}", order.getId(), orderCode);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.error("商城订单创建失败: 返回数据类型错误");
|
|
|
|
|
+ return RewardResult.fail("订单创建失败:返回数据类型错误");
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.error("商城订单创建失败: {}", result.getMsg());
|
|
|
|
|
+ return RewardResult.fail("订单创建失败:" + result.getMsg());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- // 检查订单创建是否成功
|
|
|
|
|
- if (!result.isSuccess()) {
|
|
|
|
|
- log.error("商品订单创建失败: {}", result.getMsg());
|
|
|
|
|
- return RewardResult.fail("订单创建失败:" + result.getMsg());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 获取订单对象
|
|
|
|
|
- Object orderObj = result.get("order");
|
|
|
|
|
- if (orderObj == null) {
|
|
|
|
|
- return RewardResult.fail("订单创建失败:返回数据为空");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 转换为订单实体
|
|
|
|
|
- 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) {
|
|
@@ -88,6 +98,23 @@ public class WatchCourseProductStrategy implements RewardStrategy {
|
|
|
param.setCompanyUserId(reward.getCompanyUserId());
|
|
param.setCompanyUserId(reward.getCompanyUserId());
|
|
|
param.setUserId(fsUser.getUserId());
|
|
param.setUserId(fsUser.getUserId());
|
|
|
param.setAddressId(reward.getAddressId());
|
|
param.setAddressId(reward.getAddressId());
|
|
|
|
|
+ param.setPackageId(reward.getGoodsId());
|
|
|
|
|
+ return param;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private FsStoreOrderCreateParamAppReward buildStoreOrderCreateParam(FsUserRewards reward, FsUser fsUser) {
|
|
|
|
|
+ FsStoreOrderCreateParamAppReward param = new FsStoreOrderCreateParamAppReward();
|
|
|
|
|
+ param.setCompanyId(reward.getCompanyId());
|
|
|
|
|
+ param.setCompanyUserId(reward.getCompanyUserId());
|
|
|
|
|
+ param.setUserId(fsUser.getUserId());
|
|
|
|
|
+ param.setAddressId(reward.getAddressId());
|
|
|
|
|
+ param.setGoodsId(reward.getGoodsId());
|
|
|
|
|
+ FsStoreOrderScrm fsStoreOrderScrm = storeOrderScrmService.selectFsStoreOrderById(param.getGoodsId());
|
|
|
|
|
+ if (fsStoreOrderScrm == null){
|
|
|
|
|
+ log.error("商城商品不存在: {}", param.getGoodsId());
|
|
|
|
|
+ throw new CustomException("商城商品不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ param.setErpType(fsStoreOrderScrm.getErpType());
|
|
|
return param;
|
|
return param;
|
|
|
}
|
|
}
|
|
|
|
|
|