|
@@ -5,6 +5,7 @@ import cn.hutool.core.lang.TypeReference;
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -22,6 +23,10 @@ import com.fs.common.utils.poi.ExcelUtil;
|
|
|
import com.fs.company.domain.CompanyUser;
|
|
import com.fs.company.domain.CompanyUser;
|
|
|
import com.fs.company.mapper.CompanyUserMapper;
|
|
import com.fs.company.mapper.CompanyUserMapper;
|
|
|
import com.fs.core.utils.OrderCodeUtils;
|
|
import com.fs.core.utils.OrderCodeUtils;
|
|
|
|
|
+import com.fs.erp.constant.OrderStatusEnum;
|
|
|
|
|
+import com.fs.erp.dto.*;
|
|
|
|
|
+import com.fs.erp.http.JstErpHttpService;
|
|
|
|
|
+import com.fs.his.config.FsSysConfig;
|
|
|
import com.fs.his.domain.*;
|
|
import com.fs.his.domain.*;
|
|
|
import com.fs.his.dto.ComputeIntegralOrderMoneyDTO;
|
|
import com.fs.his.dto.ComputeIntegralOrderMoneyDTO;
|
|
|
import com.fs.his.enums.BusinessTypeEnum;
|
|
import com.fs.his.enums.BusinessTypeEnum;
|
|
@@ -34,6 +39,7 @@ import com.fs.his.service.IFsIntegralOrderService;
|
|
|
import com.fs.his.service.IFsStorePaymentService;
|
|
import com.fs.his.service.IFsStorePaymentService;
|
|
|
import com.fs.his.service.IFsUserIntegralLogsService;
|
|
import com.fs.his.service.IFsUserIntegralLogsService;
|
|
|
import com.fs.his.service.IFsUserService;
|
|
import com.fs.his.service.IFsUserService;
|
|
|
|
|
+import com.fs.his.utils.ConfigUtil;
|
|
|
import com.fs.his.utils.PhoneUtil;
|
|
import com.fs.his.utils.PhoneUtil;
|
|
|
import com.fs.his.vo.FsIntegralOrderListUVO;
|
|
import com.fs.his.vo.FsIntegralOrderListUVO;
|
|
|
import com.fs.his.vo.FsIntegralOrderListVO;
|
|
import com.fs.his.vo.FsIntegralOrderListVO;
|
|
@@ -66,6 +72,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.concurrent.TimeUnit;
|
|
@@ -160,6 +167,18 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private FsIntegralAfterSalesMapper fsIntegralAfterSalesMapper;
|
|
private FsIntegralAfterSalesMapper fsIntegralAfterSalesMapper;
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * ERP配置工具(读取 his.config 中的 erpOpen/erpType/erpJstShopCode 等)
|
|
|
|
|
+ */
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private ConfigUtil configUtil;
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 聚水潭HTTP服务(当前积分订单仅支持推送聚水潭,如需扩展其他ERP需重构为策略模式)
|
|
|
|
|
+ */
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private JstErpHttpService jstErpHttpService;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 查询积分商品订单
|
|
* 查询积分商品订单
|
|
|
*
|
|
*
|
|
@@ -356,7 +375,9 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
|
|
|
order.setIntegral(totalIntegral.toString());
|
|
order.setIntegral(totalIntegral.toString());
|
|
|
order.setItemJson(JSONUtil.toJsonStr(goodsItem));
|
|
order.setItemJson(JSONUtil.toJsonStr(goodsItem));
|
|
|
order.setUserName(address.getRealName());
|
|
order.setUserName(address.getRealName());
|
|
|
- order.setUserAddress(address.getProvince()+address.getCity()+address.getDistrict()+address.getDetail());
|
|
|
|
|
|
|
+ // 地址用空格分隔省市区+详细地址,与普通订单(FsStoreOrderScrm)格式保持一致,
|
|
|
|
|
+ // 便于推送聚水潭时通过 split(" ") 拆分独立的省市区字段
|
|
|
|
|
+ order.setUserAddress(address.getProvince()+" "+address.getCity()+" "+address.getDistrict()+" "+address.getDetail());
|
|
|
order.setUserPhone(address.getPhone());
|
|
order.setUserPhone(address.getPhone());
|
|
|
order.setCreateTime(new Date());
|
|
order.setCreateTime(new Date());
|
|
|
order.setCompanyUserId(companyUserId);
|
|
order.setCompanyUserId(companyUserId);
|
|
@@ -812,6 +833,19 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
|
|
|
integralParam.setBusinessId(order.getOrderId().toString());
|
|
integralParam.setBusinessId(order.getOrderId().toString());
|
|
|
// userIntegralLogsService.addIntegralTemplate(integralParam);
|
|
// userIntegralLogsService.addIntegralTemplate(integralParam);
|
|
|
|
|
|
|
|
|
|
+ // 8. 推送聚水潭ERP(与普通订单payConfirmMultiStore一致:推送异常用try-catch隔离,不影响支付状态)
|
|
|
|
|
+ try {
|
|
|
|
|
+ R erpResult = createOmsOrder(order.getOrderId());
|
|
|
|
|
+ if (erpResult != null && erpResult.containsKey("code") && Integer.valueOf(200).equals(erpResult.get("code"))) {
|
|
|
|
|
+ log.info("积分订单回调(Yop) 推送聚水潭成功 orderId={}", order.getOrderId());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.warn("积分订单回调(Yop) 推送聚水潭未成功 orderId={}, msg={}", order.getOrderId(),
|
|
|
|
|
+ erpResult == null ? "返回null" : erpResult.get("msg"));
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("积分订单回调(Yop) 推送聚水潭异常 orderId={}", order.getOrderId(), e);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
return "success";
|
|
return "success";
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1511,4 +1545,223 @@ public class FsIntegralOrderServiceImpl implements IFsIntegralOrderService
|
|
|
BigDecimal continueUnits = extra.divide(continueCount, 0, RoundingMode.CEILING);
|
|
BigDecimal continueUnits = extra.divide(continueCount, 0, RoundingMode.CEILING);
|
|
|
return firstPrice.add(continueUnits.multiply(continuePrice));
|
|
return firstPrice.add(continueUnits.multiply(continuePrice));
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 推送积分订单到聚水潭ERP
|
|
|
|
|
+ * <p>
|
|
|
|
|
+ * 与普通订单推送隔离,独立处理积分订单的聚水潭推送逻辑:
|
|
|
|
|
+ * <ul>
|
|
|
|
|
+ * <li>商品信息从 {@code order.itemJson} 解析(List<FsIntegralGoods>),不依赖 fs_store_order_item_scrm 表</li>
|
|
|
|
|
+ * <li>商品单价取 {@code FsIntegralGoods.cash}(支付金额),不反查 fs_store_product_scrm 表</li>
|
|
|
|
|
+ * <li>收货地址通过空格分隔拆分省市区(创建订单时已统一为空格分隔格式)</li>
|
|
|
|
|
+ * <li>不走货到付款逻辑(积分订单 payType 语义与普通订单不同)</li>
|
|
|
|
|
+ * <li>卖家备注追加"兑换积分"信息,便于聚水潭侧识别</li>
|
|
|
|
|
+ * </ul>
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public R createOmsOrder(Long orderId) {
|
|
|
|
|
+ // 1. 查询积分订单
|
|
|
|
|
+ FsIntegralOrder order = fsIntegralOrderMapper.selectFsIntegralOrderByOrderId(orderId);
|
|
|
|
|
+ if (order == null) {
|
|
|
|
|
+ log.error("推送聚水潭失败:积分订单不存在 orderId={}", orderId);
|
|
|
|
|
+ return R.error("积分订单不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 读取ERP配置,判断是否启用
|
|
|
|
|
+ FsSysConfig erpConfig = configUtil.getSysConfig();
|
|
|
|
|
+ if (erpConfig == null || erpConfig.getErpOpen() == null || erpConfig.getErpOpen() != 1) {
|
|
|
|
|
+ log.info("未启用ERP,跳过推送积分订单 orderId={}", orderId);
|
|
|
|
|
+ return R.error("未启用ERP");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 3. 判断ERP类型(当前仅支持聚水潭,erpType=5)
|
|
|
|
|
+ if (erpConfig.getErpType() == null || erpConfig.getErpType() != 5) {
|
|
|
|
|
+ log.info("当前ERP类型非聚水潭,跳过推送积分订单 orderId={}, erpType={}", orderId, erpConfig.getErpType());
|
|
|
|
|
+ return R.error("当前ERP类型不支持积分订单推送");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 公司黑名单校验
|
|
|
|
|
+ if (erpConfig.getNoErpCompany() != null && order.getCompanyId() != null
|
|
|
|
|
+ && erpConfig.getNoErpCompany().contains(order.getCompanyId())) {
|
|
|
|
|
+ log.info("公司{}在ERP黑名单中,跳过推送积分订单 orderId={}", order.getCompanyId(), orderId);
|
|
|
|
|
+ return R.error("相关公司不推送ERP");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 5. 幂等校验:已推送过(extendOrderId非空)则跳过,防止重复推送
|
|
|
|
|
+ if (StringUtils.isNotEmpty(order.getExtendOrderId())) {
|
|
|
|
|
+ log.info("积分订单已推送聚水潭,跳过 orderId={}, extendOrderId={}", orderId, order.getExtendOrderId());
|
|
|
|
|
+ return R.error("订单已推送ERP");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 6. 解析商品列表(从itemJson解析List<FsIntegralGoods>)
|
|
|
|
|
+ List<FsIntegralGoods> goodsList;
|
|
|
|
|
+ try {
|
|
|
|
|
+ goodsList = JSONUtil.toList(JSONUtil.parseArray(order.getItemJson()), FsIntegralGoods.class);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("解析积分订单商品JSON失败 orderId={}", orderId, e);
|
|
|
|
|
+ return R.error("解析商品信息失败");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (goodsList == null || goodsList.isEmpty()) {
|
|
|
|
|
+ log.error("积分订单商品列表为空 orderId={}", orderId);
|
|
|
|
|
+ return R.error("订单商品为空");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 7. 拆分收货地址(空格分隔:省 市 区 详细地址,与普通订单格式一致)
|
|
|
|
|
+ String[] addrParts = order.getUserAddress() == null ? new String[0] : order.getUserAddress().split(" ");
|
|
|
|
|
+ String province = addrParts.length > 0 ? addrParts[0] : "";
|
|
|
|
|
+ String city = addrParts.length > 1 ? addrParts[1] : "";
|
|
|
|
|
+ String district = addrParts.length > 2 ? addrParts[2] : "";
|
|
|
|
|
+ // 详细地址:第4段及之后用空格拼接;若格式不标准(段数不足),兜底用原始地址
|
|
|
|
|
+ String detailAddress = addrParts.length > 3
|
|
|
|
|
+ ? String.join(" ", Arrays.copyOfRange(addrParts, 3, addrParts.length))
|
|
|
|
|
+ : (addrParts.length > 0 ? order.getUserAddress() : "");
|
|
|
|
|
+
|
|
|
|
|
+ // 8. 校验聚水潭店铺编码
|
|
|
|
|
+ String shopCode = erpConfig.getErpJstShopCode();
|
|
|
|
|
+ if (StringUtils.isEmpty(shopCode)) {
|
|
|
|
|
+ log.error("聚水潭店铺编码(erpJstShopCode)未配置,无法推送积分订单 orderId={}", orderId);
|
|
|
|
|
+ return R.error("聚水潭店铺编码未配置");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 9. 构造ShopOrderDTO
|
|
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+ String payDateStr = order.getPayTime() != null ? sdf.format(java.sql.Timestamp.valueOf(order.getPayTime())) : sdf.format(new Date());
|
|
|
|
|
+
|
|
|
|
|
+ ShopOrderDTO shopOrderDTO = new ShopOrderDTO();
|
|
|
|
|
+ shopOrderDTO.setShopId(Long.valueOf(shopCode));
|
|
|
|
|
+ shopOrderDTO.setSoId(order.getOrderCode());
|
|
|
|
|
+ shopOrderDTO.setOrderDate(payDateStr);
|
|
|
|
|
+ shopOrderDTO.setShopStatus(OrderStatusEnum.WAIT_SELLER_SEND_GOODS.name());
|
|
|
|
|
+ shopOrderDTO.setShopBuyerId(order.getUserName());
|
|
|
|
|
+ shopOrderDTO.setReceiverState(province);
|
|
|
|
|
+ shopOrderDTO.setReceiverCity(city);
|
|
|
|
|
+ shopOrderDTO.setReceiverDistrict(district);
|
|
|
|
|
+ shopOrderDTO.setReceiverAddress(detailAddress);
|
|
|
|
|
+ shopOrderDTO.setReceiverName(order.getUserName());
|
|
|
|
|
+ shopOrderDTO.setReceiverPhone(order.getUserPhone());
|
|
|
|
|
+ shopOrderDTO.setPayAmount(order.getPayMoney() != null ? order.getPayMoney().doubleValue() : 0d);
|
|
|
|
|
+ shopOrderDTO.setFreight(0d);
|
|
|
|
|
+
|
|
|
|
|
+ // 10. 卖家备注:积分订单无公司名称概念,仅记录兑换积分信息,便于聚水潭侧识别
|
|
|
|
|
+ String sellerMemo = StringUtils.isNotEmpty(order.getIntegral())
|
|
|
|
|
+ ? "兑换积分:" + order.getIntegral()
|
|
|
|
|
+ : "";
|
|
|
|
|
+ shopOrderDTO.setRemark(sellerMemo);
|
|
|
|
|
+
|
|
|
|
|
+ // 11. 构造订单商品项列表(积分商品无规格概念,propertiesValue传空串)
|
|
|
|
|
+ List<OrderItemDTO> itemDTOList = new ArrayList<>();
|
|
|
|
|
+ for (int i = 0; i < goodsList.size(); i++) {
|
|
|
|
|
+ FsIntegralGoods goods = goodsList.get(i);
|
|
|
|
|
+ OrderItemDTO itemDTO = new OrderItemDTO();
|
|
|
|
|
+ String barCode = StringUtils.isNotEmpty(goods.getBarCode()) ? goods.getBarCode() : "";
|
|
|
|
|
+ itemDTO.setSkuId(barCode);
|
|
|
|
|
+ itemDTO.setShopSkuId(barCode);
|
|
|
|
|
+ itemDTO.setShopIId(barCode);
|
|
|
|
|
+ itemDTO.setName(goods.getGoodsName());
|
|
|
|
|
+ itemDTO.setPropertiesValue("");
|
|
|
|
|
+
|
|
|
|
|
+ BigDecimal price = goods.getCash() != null ? goods.getCash() : BigDecimal.ZERO;
|
|
|
|
|
+ int qty = goods.getNum() != null ? goods.getNum() : 1;
|
|
|
|
|
+ itemDTO.setPrice(price);
|
|
|
|
|
+ itemDTO.setAmount(price.multiply(BigDecimal.valueOf(qty)));
|
|
|
|
|
+ itemDTO.setQty(qty);
|
|
|
|
|
+ itemDTO.setPic(goods.getImgUrl());
|
|
|
|
|
+ itemDTO.setOuterOiId(String.format("%s%d", order.getOrderCode(), i + 1));
|
|
|
|
|
+ itemDTOList.add(itemDTO);
|
|
|
|
|
+ }
|
|
|
|
|
+ shopOrderDTO.setItems(itemDTOList);
|
|
|
|
|
+
|
|
|
|
|
+ // 12. 构造支付信息(积分订单不走货到付款逻辑)
|
|
|
|
|
+ PaymentDTO paymentDTO = new PaymentDTO();
|
|
|
|
|
+ paymentDTO.setAmount(order.getPayMoney() != null ? order.getPayMoney().doubleValue() : 0d);
|
|
|
|
|
+ paymentDTO.setOuterPayId(order.getOrderCode());
|
|
|
|
|
+ paymentDTO.setPayDate(payDateStr);
|
|
|
|
|
+ paymentDTO.setPayment(resolvePaymentDesc(order.getPayType()));
|
|
|
|
|
+ paymentDTO.setBuyerAccount(order.getUserName());
|
|
|
|
|
+ paymentDTO.setSellerAccount("平台销售");
|
|
|
|
|
+ shopOrderDTO.setPay(paymentDTO);
|
|
|
|
|
+
|
|
|
|
|
+ // 13. 推送聚水潭
|
|
|
|
|
+ ErpOrderResponseDTO response;
|
|
|
|
|
+ try {
|
|
|
|
|
+ response = jstErpHttpService.upload(shopOrderDTO);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("推送聚水潭HTTP异常 orderId={}, orderCode={}", orderId, order.getOrderCode(), e);
|
|
|
|
|
+ return R.error("推送聚水潭异常: " + e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (response == null || CollectionUtils.isEmpty(response.getDatas())) {
|
|
|
|
|
+ log.error("推送聚水潭返回空数据 orderId={}, orderCode={}", orderId, order.getOrderCode());
|
|
|
|
|
+ return R.error("推送聚水潭返回空数据");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ ErpOrderResponseDTO.OrderData orderData = response.getDatas().get(0);
|
|
|
|
|
+ String erpOrderId = String.valueOf(orderData.getOId());
|
|
|
|
|
+ log.info("推送聚水潭成功 orderId={}, orderCode={}, erpOrderId={}", orderId, order.getOrderCode(), erpOrderId);
|
|
|
|
|
+
|
|
|
|
|
+ // 14. 回写extendOrderId(用于幂等判断)
|
|
|
|
|
+ FsIntegralOrder updateOrder = new FsIntegralOrder();
|
|
|
|
|
+ updateOrder.setOrderId(orderId);
|
|
|
|
|
+ updateOrder.setExtendOrderId(erpOrderId);
|
|
|
|
|
+ fsIntegralOrderMapper.updateFsIntegralOrder(updateOrder);
|
|
|
|
|
+
|
|
|
|
|
+ // 15. 指定发货仓(仓库编码来源于积分规则页面配置的 sys.erp.returnInfo)
|
|
|
|
|
+ String warehouseCode = resolveIntegralWarehouseCode();
|
|
|
|
|
+ if (StringUtils.isNotEmpty(warehouseCode)) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ OrderModifyWmsRequestDTO wmsDto = new OrderModifyWmsRequestDTO()
|
|
|
|
|
+ .setOId(Long.valueOf(erpOrderId))
|
|
|
|
|
+ .setWmsCoId(Long.valueOf(warehouseCode));
|
|
|
|
|
+ List<OrderModifyWmsRequestDTO> wmsList = Collections.singletonList(wmsDto);
|
|
|
|
|
+ jstErpHttpService.modifyWmsUpload(wmsList);
|
|
|
|
|
+ log.info("指定发货仓成功 orderId={}, erpOrderId={}, wmsCoId={}", orderId, erpOrderId, warehouseCode);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("指定发货仓失败 orderId={}, erpOrderId={}, wmsCoId={}", orderId, erpOrderId, warehouseCode, e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return R.ok("推送聚水潭成功");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 读取积分规则页面配置的聚水潭仓库编码
|
|
|
|
|
+ * <p>
|
|
|
|
|
+ * 配置来源:sys_config 表 configKey = {@code sys.erp.returnInfo},
|
|
|
|
|
+ * 由后台积分规则页面(pointsRule/index.vue)维护,值为JSON:
|
|
|
|
|
+ * <pre>{"warehouseCode":"18849902","returnConsignee":"...","returnPhone":"...","returnAddress":"..."}</pre>
|
|
|
|
|
+ *
|
|
|
|
|
+ * @return 仓库编码;未配置或解析异常时返回 null(不指定发货仓,由聚水潭默认仓发货)
|
|
|
|
|
+ */
|
|
|
|
|
+ private String resolveIntegralWarehouseCode() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ String configValue = configService.selectConfigByKey("sys.erp.returnInfo");
|
|
|
|
|
+ if (StringUtils.isEmpty(configValue)) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ JSONObject json = JSONUtil.parseObj(configValue);
|
|
|
|
|
+ String warehouseCode = json.getStr("warehouseCode");
|
|
|
|
|
+ if (StringUtils.isEmpty(warehouseCode)) {
|
|
|
|
|
+ log.warn("积分规则ERP配置(sys.erp.returnInfo)未配置warehouseCode");
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ return warehouseCode;
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("读取积分规则ERP配置(sys.erp.returnInfo)异常", e);
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 根据积分订单payType解析支付方式描述
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param payType 支付类型 1积分 2现金 3积分+现金
|
|
|
|
|
+ */
|
|
|
|
|
+ private String resolvePaymentDesc(Integer payType) {
|
|
|
|
|
+ if (payType == null) return "积分兑换";
|
|
|
|
|
+ switch (payType) {
|
|
|
|
|
+ case 2: return "微信支付";
|
|
|
|
|
+ case 3: return "积分+微信支付";
|
|
|
|
|
+ default: return "积分兑换";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|