diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/lakala/LklLedgerMerReceiverBind.java b/mall-common/src/main/java/com/suisung/mall/common/modules/lakala/LklLedgerMerReceiverBind.java
index 5b714f5e..2495d37a 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/modules/lakala/LklLedgerMerReceiverBind.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/lakala/LklLedgerMerReceiverBind.java
@@ -40,6 +40,7 @@ public class LklLedgerMerReceiverBind implements Serializable {
private String entrust_file_path;
private String ret_url;
private String apply_id;
+ private Long platform_id;
private String audit_status;
private String audit_status_text;
private String remark;
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/lakala/LklOrderSeparate.java b/mall-common/src/main/java/com/suisung/mall/common/modules/lakala/LklOrderSeparate.java
index d0562013..bd3ef01c 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/modules/lakala/LklOrderSeparate.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/lakala/LklOrderSeparate.java
@@ -46,6 +46,9 @@ public class LklOrderSeparate {
@ApiModelProperty(value = "分账指令流水号,分账系统生成唯一流水")
private String separate_no;
+ @ApiModelProperty(value = "平台订单Id")
+ private String order_id;
+
@ApiModelProperty(value = "分账总金额,单位:分")
private String total_amt;
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderLkl.java b/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderLkl.java
new file mode 100644
index 00000000..b147537a
--- /dev/null
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/order/ShopOrderLkl.java
@@ -0,0 +1,70 @@
+package com.suisung.mall.common.modules.order;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ *
+ * 关联拉卡拉的店铺订单信息
+ *
+ *
+ * @author Xinze
+ * @since 2021-04-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("shop_order_lkl")
+@ApiModel(value = "ShopOrderLkl对象", description = "关联拉卡拉的店铺订单信息")
+public class ShopOrderLkl implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "自增Id")
+ @TableId(value = "id", type = IdType.INPUT)
+ private Long id;
+
+ private String store_id;
+
+ private String order_id;
+
+ private String log_no;
+
+ private String log_date;
+
+ private String merchant_no;
+
+ private Integer total_amt;
+
+ private Integer shopping_fee;
+
+ private BigDecimal split_ratio;
+
+ private String payment_time;
+
+ private String account_type;
+
+ private String trans_type;
+
+ private String lkl_trade_no;
+
+ private String lkl_term_no;
+
+ private String lkl_resp;
+
+ private Integer status;
+
+ private Date created_at;
+
+ private Date updated_at;
+}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaApiService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaApiService.java
index ee485fc4..3b015460 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaApiService.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LakalaApiService.java
@@ -9,7 +9,6 @@
package com.suisung.mall.shop.lakala.service;
import cn.hutool.json.JSONObject;
-import com.lkl.laop.sdk.request.V3SacsSeparateRequest;
import com.suisung.mall.common.api.CommonResult;
import org.springframework.data.util.Pair;
@@ -190,7 +189,8 @@ public interface LakalaApiService {
* @param merchantNo 拉卡拉外部商户号
* @param logNo 拉卡拉对账单流水号
* @param logDate 拉卡拉对账单交易日期 yyyyMMdd
- * @return 响应结果 {
+ * @return 响应结果 分账总金额,可分账金额 键值对
+ * {
* "merchant_no": "82229005943096D",
* "total_separate_amt": "9900",
* "can_separate_amt": "0",
@@ -198,15 +198,15 @@ public interface LakalaApiService {
* "log_no": "66210306990190"
* }
*/
- JSONObject queryMchCanSplitAmt(String merchantNo, String logNo, String logDate);
+ Pair queryMchCanSplitAmt(String merchantNo, String logNo, String logDate);
/**
* 拉卡拉订单分账,用户下单成功之后,进行分账
* 说明:分账指令是异步处理模式,响应报文成功时,指令状态是”status”: “PROCESSING”,需要等待分账结果通知,或者主动发起查询,建议主动发起查询与分账指令动作之间间隔15秒以上。
* 参考:https://o.lakala.com/#/home/document/detail?id=389
*
- * @param v3SacsSeparateRequest
+ * @param orderId 平台订单号
* @return
*/
- Pair innerDoOrderSeparate(V3SacsSeparateRequest v3SacsSeparateRequest);
+ Pair innerDoOrderSeparate(String orderId);
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerEcService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerEcService.java
index 63afe7aa..343e8bd3 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerEcService.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerEcService.java
@@ -19,7 +19,7 @@ public interface LklLedgerEcService extends IBaseService {
* @param record
* @return
*/
- Boolean saveOrUpdateByMchId(LklLedgerEc record);
+ Boolean addOrUpdateByMchId(LklLedgerEc record);
/**
* 根据applyId更新记录
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMemberService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMemberService.java
index 29bfbda5..d0a6aa46 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMemberService.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMemberService.java
@@ -36,7 +36,7 @@ public interface LklLedgerMemberService extends IBaseService {
* @param record
* @return
*/
- Boolean saveOrUpdateByMerCupNo(LklLedgerMember record);
+ Boolean addOrUpdateByMerCupNo(LklLedgerMember record);
/**
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMerReceiverBindService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMerReceiverBindService.java
index 238f54f1..59f54b1e 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMerReceiverBindService.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerMerReceiverBindService.java
@@ -11,6 +11,8 @@ package com.suisung.mall.shop.lakala.service;
import com.suisung.mall.common.modules.lakala.LklLedgerMerReceiverBind;
import com.suisung.mall.core.web.service.IBaseService;
+import java.util.List;
+
public interface LklLedgerMerReceiverBindService extends IBaseService {
/**
@@ -19,10 +21,10 @@ public interface LklLedgerMerReceiverBindService extends IBaseService selectByMerCupNo(String merCupNo, Boolean isPlatform);
+
/**
* 更新审核结果
*
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerReceiverService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerReceiverService.java
index 149eab1b..6efa80e8 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerReceiverService.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerReceiverService.java
@@ -22,7 +22,7 @@ public interface LklLedgerReceiverService extends IBaseService queryMchCanSplitAmt(String merchantNo, String logNo, String logDate) {
if (StringUtils.isAnyBlank(merchantNo, logNo, logDate)) {
return null;
}
@@ -1926,7 +1935,14 @@ public class LakalaApiServiceImpl implements LakalaApiService {
return null;
}
- return (JSONObject) lklRespJSON.get("resp_data");
+ JSONObject respData = (JSONObject) lklRespJSON.get("resp_data");
+ if (respData == null
+ || StringUtils.isAnyBlank(respData.getStr("total_separate_amt"), respData.getStr("can_separate_amt"))) {
+ log.error(I18nUtil._("返回值有误!"));
+ return null;
+ }
+
+ return Pair.of(respData.getStr("total_separate_amt"), respData.getStr("can_separate_amt"));
} catch (SDKException e) {
log.error("账户余额查询失败:", e);
return null;
@@ -1938,38 +1954,123 @@ public class LakalaApiServiceImpl implements LakalaApiService {
* 说明:分账指令是异步处理模式,响应报文成功时,指令状态是”status”: “PROCESSING”,需要等待分账结果通知,或者主动发起查询,建议主动发起查询与分账指令动作之间间隔15秒以上。
* 参考:https://o.lakala.com/#/home/document/detail?id=389
*
- * @param v3SacsSeparateRequest
+ * @param orderId 平台订单Id
* @return
*/
@Override
- public Pair innerDoOrderSeparate(V3SacsSeparateRequest v3SacsSeparateRequest) {
- if (v3SacsSeparateRequest == null) {
- return Pair.of(false, "分账参数不能为空");
+ public Pair innerDoOrderSeparate(String orderId) {
+ if (StrUtil.isBlank(orderId)) {
+ return Pair.of(false, "订单号不能为空");
}
- // 1. 配置初始化
- initLKLSDK();
-
try {
- log.debug("分账执行请求参数:{}", JSONUtil.toJsonStr(v3SacsSeparateRequest));
- //3. 发送请求
- String responseStr = LKLSDK.httpPost(v3SacsSeparateRequest);
- if (StrUtil.isBlank(responseStr)) {
- return Pair.of(false, "服务器无返回值!");
+ // 1. 配置初始化
+ initLKLSDK();
+
+ // 获取订单信息、店铺信息,商户信息、分账信息
+ List orderList = shopOrderLklService.selectByOrderId(orderId, "");
+ if (CollectionUtil.isEmpty(orderList)) {
+ return Pair.of(false, "订单不存在");
}
- JSONObject lklRespJSON = JSONUtil.parseObj(responseStr);
- if (lklRespJSON == null || !lklSacsSuccessCode.equals(lklRespJSON.getStr("code")) || lklRespJSON.get("resp_data") == null) {
- log.error("返回值有误!");
- return Pair.of(false, "返回值有误!");
- }
- return Pair.of(true, "分账成功执行,处理中");
+ for (ShopOrderLkl order : orderList) {
+ String merchantNo = order.getMerchant_no();
+
+ // 分账总金额
+ Integer paymentAmount = order.getTotal_amt();
+ Integer shoppingFee = order.getShopping_fee();
+ BigDecimal splitRatio = order.getSplit_ratio();
+ if (paymentAmount <= 0 || (shoppingFee != null && paymentAmount - shoppingFee <= 0)) {
+ return Pair.of(false, "订单金额有误");
+ }
+
+ V3SacsSeparateRequest req = new V3SacsSeparateRequest();
+ req.setMerchantNo(merchantNo);
+ req.setLogNo(orderId);
+ req.setLogDate(order.getLog_date());
+ req.setOutSeparateNo(StringUtils.genLklOrderNo(18)); // 14+18=32位商户分账指令流水号,每个商户号下唯一,否则会校验失败
+ req.setTotalAmt(order.getTotal_amt().toString());
+ req.setLklOrgNo(orgCode);
+ req.setCalType("0"); // 0- 按照指定金额,1- 按照指定比例。默认 0
+ req.setNotifyUrl(projectDomain + "/api/v1/lkl/order/separate/notify");
+
+
+ List platformList = lklLedgerMerReceiverBindService.selectByMerCupNo(merchantNo, true);
+ List distributorList = lklLedgerMerReceiverBindService.selectByMerCupNo(merchantNo, false);
+ if (CollectionUtil.isEmpty(platformList)) {
+ return Pair.of(false, "商户未绑定分账平台方");
+ }
+
+
+ List recvDatas = new ArrayList<>();
+
+
+ // 是否有运费
+ if (shoppingFee != null && shoppingFee > 0) {
+ V3SacsSeparateRecvDatas recvData = new V3SacsSeparateRecvDatas();
+ recvData.setRecvNo(platformList.get(0).getReceiver_no());
+ recvData.setSeparateValue(shoppingFee.toString()); // 分账金额,单位分,分账金额不能大于订单金额,分账金额不能小于0
+ recvDatas.add(recvData);
+ }
+
+ Integer splitAmount = paymentAmount - shoppingFee;
+ if (!CollectionUtils.isEmpty(distributorList)
+ && (splitRatio != null && splitRatio.compareTo(BigDecimal.ONE) > 0)) {
+ // 平台方分账
+ BigDecimal separateValue = new BigDecimal(splitAmount).multiply(new BigDecimal("0.01")); // 平台收取1%手续费
+ if (separateValue.compareTo(BigDecimal.ZERO) > 0) {
+ V3SacsSeparateRecvDatas recvData = new V3SacsSeparateRecvDatas();
+ recvData.setRecvNo(platformList.get(0).getReceiver_no());
+ recvData.setSeparateValue(separateValue.toString()); // 分账金额,单位分,分账金额不能大于订单金额,分账金额不能小于0
+ recvDatas.add(recvData);
+ }
+
+ // 代理方分账, 100-1-splitRatio 1%是平台方的,其余都是代理商的
+ BigDecimal separateValue2 = new BigDecimal(splitAmount).multiply(new BigDecimal(99).subtract(splitRatio).divide(new BigDecimal(100)));
+ if (separateValue.compareTo(BigDecimal.ZERO) > 0) {
+ V3SacsSeparateRecvDatas recvData2 = new V3SacsSeparateRecvDatas();
+ recvData2.setRecvNo(distributorList.get(0).getReceiver_no());
+ recvData2.setSeparateValue(separateValue2.toString()); // 分账金额,单位分,分账金额不能大于订单金额,分账金额不能小于0
+ recvDatas.add(recvData2);
+ }
+ } else {
+ // 仅平台方一方分账
+ BigDecimal separateValue = new BigDecimal(splitAmount).multiply(new BigDecimal(100).subtract(splitRatio).divide(new BigDecimal(100)));
+ if (separateValue.compareTo(BigDecimal.ZERO) > 0) {
+ V3SacsSeparateRecvDatas recvData = new V3SacsSeparateRecvDatas();
+ recvData.setRecvNo(platformList.get(0).getReceiver_no());
+ recvData.setSeparateValue(separateValue.toString()); // 分账金额,单位分,分账金额不能大于订单金额,分账金额不能小于0
+ recvDatas.add(recvData);
+ }
+ }
+
+ req.setRecvDatas(recvDatas);
+
+
+ log.debug("分账执行请求参数:{}", JSONUtil.toJsonStr(req));
+
+ //3. 发送请求
+ String responseStr = LKLSDK.httpPost(req);
+ if (StrUtil.isBlank(responseStr)) {
+ return Pair.of(false, "服务器无返回值!");
+ }
+
+ JSONObject lklRespJSON = JSONUtil.parseObj(responseStr);
+ if (lklRespJSON == null || !lklSacsSuccessCode.equals(lklRespJSON.getStr("code")) || lklRespJSON.get("resp_data") == null) {
+ log.error("分账返回值有误!");
+ return Pair.of(false, "返回值有误!");
+ }
+
+ return Pair.of(true, "分账成功执行,处理中");
+ }
} catch (SDKException e) {
log.error("分账发生错误:", e);
return Pair.of(false, "分账发生错误");
}
+
+ return null;
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerEcServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerEcServiceImpl.java
index 2cf0f6ca..eeb2003d 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerEcServiceImpl.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerEcServiceImpl.java
@@ -47,7 +47,7 @@ public class LklLedgerEcServiceImpl extends BaseServiceImpl selectByMerCupNo(String merCupNo, Boolean isPlatform) {
+ if (StrUtil.isBlank(merCupNo)) {
+ return null;
+ }
+
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("mer_cup_no", merCupNo)
+ .eq("audit_status", CommonConstant.Enable);
+ if (isPlatform != null && isPlatform) {
+ queryWrapper.eq("platform_id", 0);
+ } else if (isPlatform != null && !isPlatform) {
+ queryWrapper.gt("platform_id", 0);
+ }
+
+ queryWrapper.orderByAsc("id");
+
+ return list(queryWrapper);
+ }
+
/**
* 更新审核结果
*
@@ -111,7 +145,7 @@ public class LklLedgerMerReceiverBindServiceImpl extends BaseServiceImpl retPair = shopStoreBaseService.merchEntryInfo2StoreInfo(mchMobile);
-
- if (retPair.getFirst() > 0) {
- // 2025-05-17暂停e签宝电子合同生成流程
- // 更改合同记录表的店铺id
- // esignContractService.updateContractStoreId(mchMobile, retPair.getFirst());
- // 填充合同模版表的店铺Id
- // esignContractFillingFileService.updateContractFillingStoreId(mchMobile, retPair.getFirst());
- // 店铺创建状态已完成
- shopMchEntryService.updateMerchEntryStoreStatus(mchMobile, CommonConstant.Enable);
- logger.info("商家进件:初始化店铺成功!");
- } else {
- logger.error("商家进件:初始化店铺失败!");
- // throw new ApiException("商家进件:初始化店铺失败!");
- }
- }
+// if (shopEntry != null && !CommonConstant.Enable.equals(shopEntry.getStore_status())) {
+// String mchMobile = shopEntry.getLogin_mobile();
+// // 禁止往外抛异常,如果失败使用补偿机制,创建新店
+// Pair retPair = shopStoreBaseService.merchEntryInfo2StoreInfo(mchMobile, false);
+//
+// if (retPair.getFirst() > 0) {
+// // 2025-05-17暂停e签宝电子合同生成流程
+// // 更改合同记录表的店铺id
+// // esignContractService.updateContractStoreId(mchMobile, retPair.getFirst());
+// // 填充合同模版表的店铺Id
+// // esignContractFillingFileService.updateContractFillingStoreId(mchMobile, retPair.getFirst());
+// // 店铺创建状态已完成
+// shopMchEntryService.updateMerchEntryStoreStatus(mchMobile, CommonConstant.Enable);
+// logger.info("商家进件:初始化店铺成功!");
+// } else {
+// logger.error("商家进件:初始化店铺失败!");
+// // throw new ApiException("商家进件:初始化店铺失败!");
+// }
+// }
// 1、(电子合同)给商家申请分账功能使用;务必检查是否申请过?申请过忽略
// 下一步等待拉卡拉审核通过,再绑定接收方和商家的关系
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/mapper/ShopOrderLklMapper.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/mapper/ShopOrderLklMapper.java
new file mode 100644
index 00000000..6d954634
--- /dev/null
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/mapper/ShopOrderLklMapper.java
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
+ * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
+ * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
+ * Vestibulum commodo. Ut rhoncus gravida arcu.
+ */
+
+package com.suisung.mall.shop.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.suisung.mall.common.modules.order.ShopOrderLkl;
+
+public interface ShopOrderLklMapper extends BaseMapper {
+}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderLklService.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderLklService.java
new file mode 100644
index 00000000..1e4c12ef
--- /dev/null
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderLklService.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
+ * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
+ * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
+ * Vestibulum commodo. Ut rhoncus gravida arcu.
+ */
+
+package com.suisung.mall.shop.order.service;
+
+import com.suisung.mall.common.modules.order.ShopOrderLkl;
+import com.suisung.mall.core.web.service.IBaseService;
+
+import java.util.List;
+
+public interface ShopOrderLklService extends IBaseService {
+
+ /**
+ * 添加或更新记录
+ *
+ * @param record
+ * @return
+ */
+ Boolean addOrUpdateByStoreOrder(ShopOrderLkl record);
+
+ /**
+ * 根据订单编号查询多条记录(因为一个订单里可能有多个店铺的商品)
+ *
+ * @param orderId
+ * @param storeId
+ * @return
+ */
+ List selectByOrderId(String orderId, String storeId);
+}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderLklServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderLklServiceImpl.java
new file mode 100644
index 00000000..18a2eb37
--- /dev/null
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderLklServiceImpl.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
+ * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
+ * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
+ * Vestibulum commodo. Ut rhoncus gravida arcu.
+ */
+
+package com.suisung.mall.shop.order.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.suisung.mall.common.modules.order.ShopOrderLkl;
+import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
+import com.suisung.mall.shop.order.mapper.ShopOrderLklMapper;
+import com.suisung.mall.shop.order.service.ShopOrderLklService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Slf4j
+@Service
+public class ShopOrderLklServiceImpl extends BaseServiceImpl implements ShopOrderLklService {
+
+ @Override
+ public Boolean addOrUpdateByStoreOrder(ShopOrderLkl record) {
+ if (record == null
+ || StringUtils.isAnyBlank(record.getOrder_id(), record.getStore_id(), record.getLog_no())) {
+ return false;
+ }
+
+ List existsRecordList = selectByOrderId(record.getOrder_id(), record.getStore_id());
+ if (CollectionUtil.isNotEmpty(existsRecordList)
+ && existsRecordList.get(0) != null
+ && existsRecordList.get(0).getId() > 0) {
+ // 更新记录
+ record.setId(existsRecordList.get(0).getId());
+ return updateById(record);
+ }
+
+ return add(record);
+ }
+
+ /**
+ * 根据订单编号查询多条记录(因为一个订单里可能有多个店铺的商品)
+ *
+ * @param orderId
+ * @return
+ */
+ @Override
+ public List selectByOrderId(String orderId, String storeId) {
+ if (StringUtils.isBlank(orderId)) {
+ return null;
+ }
+
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("order_id", orderId);
+ if (StrUtil.isNotBlank(storeId)) {
+ queryWrapper.eq("store_id", storeId);
+ }
+
+ return list(queryWrapper);
+ }
+}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreBaseController.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreBaseController.java
index 44393d0d..7119d95a 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreBaseController.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/controller/admin/ShopStoreBaseController.java
@@ -254,7 +254,7 @@ public class ShopStoreBaseController extends BaseControllerImpl {
@ApiOperation(value = "商家入驻资料转成店铺", notes = "商家入驻资料转成店铺")
@RequestMapping(value = "/mchinfo/to/storeinfo", method = RequestMethod.POST)
public CommonResult merchEntryInfo2StoreInfo(@RequestBody JSONObject jsonParam) {
- Pair result = shopStoreBaseService.merchEntryInfo2StoreInfo(jsonParam.getStr("mchMobile"));
+ Pair result = shopStoreBaseService.merchEntryInfo2StoreInfo(jsonParam.getStr("mchMobile"), true);
if (result.getFirst().equals(0)) {
return CommonResult.failed(result.getSecond());
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreBaseService.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreBaseService.java
index 47ac019b..a62579ff 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreBaseService.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/ShopStoreBaseService.java
@@ -141,9 +141,10 @@ public interface ShopStoreBaseService extends IBaseService {
* (重要)入驻审批通过并且合同盖章完结之后,把商家入驻信息转换成店铺信息,正式生成店铺所需的数据
*
* @param mchMobile
+ * @param allowThrown 是否允许抛出异常
* @return 店铺Id
*/
- Pair merchEntryInfo2StoreInfo(String mchMobile);
+ Pair merchEntryInfo2StoreInfo(String mchMobile, Boolean allowThrown);
/**
* 根据店铺名称判断店铺是否存在
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java
index a49ec76a..7767ed28 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopStoreBaseServiceImpl.java
@@ -2991,11 +2991,12 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl merchEntryInfo2StoreInfo(String mchMobile) {
+ public Pair merchEntryInfo2StoreInfo(String mchMobile, Boolean allowThrown) {
if (StrUtil.isBlank(mchMobile)) {
logger.error("生成店铺:商家手机号不能为空");
return Pair.of(0, "商家手机不能为空");
@@ -3071,7 +3072,10 @@ public class ShopStoreBaseServiceImpl extends BaseServiceImpl
+
+
+
+
+ *
+
+