拉卡拉sdk jar 安装到本地 maven 库,并引用,防止依赖不可传递性
This commit is contained in:
parent
62412721ea
commit
dc2300397d
@ -1,6 +1,15 @@
|
||||
项目备份录
|
||||
account_user_bind_connect 用户手机、邮件、微博、QQ、微信绑定表
|
||||
account_user_bind_connect 用户手机、邮件、微博、QQ、微信绑定表
|
||||
|
||||
admin_base_protocol
|
||||
admin_rights_base
|
||||
权限赋值的表
|
||||
权限赋值的表
|
||||
|
||||
拉卡拉sdk jar 本地 maven 安装:
|
||||
|
||||
mvn install:install-file \
|
||||
-Dfile=/Users/panjunjie/code/java-mall/mall-shop/src/main/resources/lib/lkl-java-sdk-1.0.7.jar \
|
||||
-DgroupId=com.lkl.laop.sdk \
|
||||
-DartifactId=lkl-laop-java-sdk \
|
||||
-Dversion=1.0.7 \
|
||||
-Dpackaging=jar
|
||||
@ -283,8 +283,8 @@
|
||||
<groupId>com.lkl.laop.sdk</groupId>
|
||||
<artifactId>lkl-laop-java-sdk</artifactId>
|
||||
<version>1.0.7</version>
|
||||
<systemPath>${project.basedir}/src/main/resources/lib/lkl-java-sdk-1.0.7.jar</systemPath>
|
||||
<scope>system</scope>
|
||||
<!-- <systemPath>${project.basedir}/src/main/resources/lib/lkl-java-sdk-1.0.7.jar</systemPath>-->
|
||||
<!-- <scope>system</scope>-->
|
||||
</dependency>
|
||||
<!--拉卡拉支付与分账 结束-->
|
||||
|
||||
@ -294,12 +294,6 @@
|
||||
<version>2.8.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<!--jdbc数据库-->
|
||||
<dependency>
|
||||
<groupId>com.microsoft.sqlserver</groupId>
|
||||
<artifactId>mssql-jdbc</artifactId>
|
||||
<version>9.2.1.jre8</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
@ -20,4 +20,13 @@ public interface LklOrderSeparateService extends IBaseService<LklOrderSeparate>
|
||||
* @return
|
||||
*/
|
||||
Boolean addOrUpdateByReceiverNo(LklOrderSeparate record);
|
||||
|
||||
/**
|
||||
* 根据拉卡拉对账单流水号和平台订单号查询记录
|
||||
*
|
||||
* @param logNo
|
||||
* @param outSeparateNo
|
||||
* @return
|
||||
*/
|
||||
LklOrderSeparate getByOutTradeNo(String logNo, String outSeparateNo);
|
||||
}
|
||||
|
||||
@ -1632,9 +1632,6 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
try {
|
||||
// TODO 检查可分账余额是否足够?
|
||||
|
||||
// 初始化拉卡拉SDK
|
||||
initLKLSDK();
|
||||
|
||||
// 查询订单信息
|
||||
List<ShopOrderLkl> shopOrderLklList = shopOrderLklService.selectByOrderId(orderId, "", storeId);
|
||||
if (CollectionUtil.isEmpty(shopOrderLklList)) {
|
||||
@ -1645,16 +1642,36 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
int successCount = 0;
|
||||
StringBuilder errorMessages = new StringBuilder();
|
||||
|
||||
// 初始化拉卡拉SDK
|
||||
initLKLSDK();
|
||||
|
||||
// 遍历处理每个店铺订单的分账
|
||||
for (ShopOrderLkl order : shopOrderLklList) {
|
||||
String merchantNo = order.getLkl_merchant_no();
|
||||
Integer paymentAmount = order.getTotal_amt();
|
||||
Integer shoppingFee = order.getShopping_fee();
|
||||
BigDecimal splitRatioMch = order.getSplit_ratio();
|
||||
for (ShopOrderLkl shopOrderLkl : shopOrderLklList) {
|
||||
|
||||
// TODO 检查已经分账的,不再去分账了
|
||||
LklOrderSeparate lklOrderSeparateExist = lklOrderSeparateService.getByOutTradeNo(shopOrderLkl.getLkl_log_no(), orderId);
|
||||
if (lklOrderSeparateExist != null) {
|
||||
String status = lklOrderSeparateExist.getStatus();
|
||||
if ("SUCCESS".equals(status)) {
|
||||
log.warn("订单 [{}] 已完成分账,跳过处理。", orderId);
|
||||
successCount++;
|
||||
continue;
|
||||
}
|
||||
if ("PROCESSING".equals(status) || "ACCEPTED".equals(status)) {
|
||||
log.warn("订单 [{}] 分账处理中或已受理,跳过处理。", orderId);
|
||||
successCount++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
String merchantNo = shopOrderLkl.getLkl_merchant_no();
|
||||
Integer paymentAmount = shopOrderLkl.getTotal_amt();
|
||||
Integer shoppingFee = shopOrderLkl.getShopping_fee();
|
||||
BigDecimal splitRatioMch = shopOrderLkl.getSplit_ratio();
|
||||
|
||||
// 金额合法性校验
|
||||
if (paymentAmount <= 0 || (shoppingFee != null && paymentAmount <= shoppingFee)) {
|
||||
String errorMsg = String.format("店铺[%s]订单金额异常或运费过高,跳过分账", order.getStore_id());
|
||||
String errorMsg = String.format("店铺[%s]订单金额异常或运费过高,跳过分账", shopOrderLkl.getStore_id());
|
||||
log.error(errorMsg);
|
||||
errorMessages.append(errorMsg).append("; ");
|
||||
continue;
|
||||
@ -1665,7 +1682,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
List<LklLedgerMerReceiverBind> distributors = lklLedgerMerReceiverBindService.selectDistributorByMerCupNo(merchantNo);
|
||||
|
||||
if (platform == null) {
|
||||
String errorMsg = String.format("店铺[%s]未绑定平台方接收账户,跳过分账", order.getStore_id());
|
||||
String errorMsg = String.format("店铺[%s]未绑定平台方接收账户,跳过分账", shopOrderLkl.getStore_id());
|
||||
log.error(errorMsg);
|
||||
errorMessages.append(errorMsg).append("; ");
|
||||
continue;
|
||||
@ -1674,14 +1691,14 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
// 判断是否可以分账(商家比例非100%)
|
||||
boolean canSplit = splitRatioMch != null && splitRatioMch.compareTo(new BigDecimal("100")) < 0;
|
||||
if (!canSplit) {
|
||||
log.warn("店铺[{}]分账比例为0,仅扣除运费", order.getStore_id());
|
||||
log.warn("店铺[{}]分账比例为0,仅扣除运费", shopOrderLkl.getStore_id());
|
||||
}
|
||||
|
||||
// 构建分账请求对象
|
||||
V3SacsSeparateRequest request = new V3SacsSeparateRequest();
|
||||
request.setMerchantNo(merchantNo);
|
||||
request.setLogNo(order.getLkl_log_no());
|
||||
request.setLogDate(order.getLkl_log_date());
|
||||
request.setLogNo(shopOrderLkl.getLkl_log_no());
|
||||
request.setLogDate(shopOrderLkl.getLkl_log_date());
|
||||
request.setOutSeparateNo(orderId);
|
||||
request.setTotalAmt(paymentAmount.toString());
|
||||
request.setLklOrgNo(orgCode);
|
||||
@ -1776,7 +1793,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
lklOrderSeparate.setMerchant_no(merchantNo);
|
||||
lklOrderSeparate.setLog_no(request.getLogNo());
|
||||
lklOrderSeparate.setLog_date(request.getLogDate());
|
||||
lklOrderSeparate.setOrder_id(order.getOrder_id());
|
||||
lklOrderSeparate.setOrder_id(shopOrderLkl.getOrder_id());
|
||||
lklOrderSeparate.setTotal_amt(request.getTotalAmt());
|
||||
lklOrderSeparate.setNotify_url(request.getNotifyUrl());
|
||||
lklOrderSeparate.setLkl_org_no(request.getLklOrgNo());
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
|
||||
package com.suisung.mall.shop.lakala.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.suisung.mall.common.modules.lakala.LklOrderSeparate;
|
||||
@ -17,6 +18,8 @@ import com.suisung.mall.shop.lakala.service.LklOrderSeparateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class LklOrderSeparateServiceImpl extends BaseServiceImpl<LklOrderSeparateMapper, LklOrderSeparate> implements LklOrderSeparateService {
|
||||
@ -47,4 +50,35 @@ public class LklOrderSeparateServiceImpl extends BaseServiceImpl<LklOrderSeparat
|
||||
|
||||
return add(record);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据拉卡拉对账单流水号和平台订单号查询记录
|
||||
*
|
||||
* @param logNo
|
||||
* @param outSeparateNo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public LklOrderSeparate getByOutTradeNo(String logNo, String outSeparateNo) {
|
||||
try {
|
||||
if (StrUtil.isBlank(logNo) || StrUtil.isBlank(outSeparateNo)) {
|
||||
log.warn("查询参数为空:logNo={}, outSeparateNo={}", logNo, outSeparateNo);
|
||||
return null;
|
||||
}
|
||||
|
||||
List<LklOrderSeparate> list = list(new QueryWrapper<LklOrderSeparate>()
|
||||
.eq("log_no", logNo)
|
||||
.eq("out_separate_no", outSeparateNo));
|
||||
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
log.info("未找到记录:logNo={}, outSeparateNo={}", logNo, outSeparateNo);
|
||||
return null;
|
||||
}
|
||||
|
||||
return list.get(0);
|
||||
} catch (Exception e) {
|
||||
log.error("查询记录时发生异常:logNo={}, outSeparateNo={}, 异常信息={}", logNo, outSeparateNo, e.getMessage(), e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -113,7 +113,7 @@ public class ShopOrderReturnController extends BaseControllerImpl {
|
||||
return CommonResult.success(shopOrderReturnService.refund(return_id));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "确认收货", notes = "确认收货")
|
||||
@ApiOperation(value = "退单审核", notes = "退单审核")
|
||||
@RequestMapping(value = "/receive", method = RequestMethod.POST)
|
||||
public CommonResult receive(@RequestParam(name = "return_id") String return_id) {
|
||||
|
||||
|
||||
@ -80,6 +80,7 @@ import com.suisung.mall.shop.invoicing.service.InvoicingCustomerBaseService;
|
||||
import com.suisung.mall.shop.invoicing.service.InvoicingStockBillItemService;
|
||||
import com.suisung.mall.shop.invoicing.service.InvoicingStockBillService;
|
||||
import com.suisung.mall.shop.invoicing.service.InvoicingWarehouseBaseService;
|
||||
import com.suisung.mall.shop.lakala.service.LakalaApiService;
|
||||
import com.suisung.mall.shop.message.service.MqMessageService;
|
||||
import com.suisung.mall.shop.message.service.ShopMessageTemplateService;
|
||||
import com.suisung.mall.shop.message.vo.MqMessageVo;
|
||||
@ -292,6 +293,10 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
|
||||
@Autowired
|
||||
private KdApiExpressSearchService kdApiExpressSearchService;
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
private LakalaApiService lakalaApiService;
|
||||
|
||||
|
||||
@Value("${sf-express.enable}")
|
||||
private Integer enable_sf_express;
|
||||
@ -4736,6 +4741,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
|
||||
GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();
|
||||
tx.begin(2000);
|
||||
if (plugin_crossBorder) {
|
||||
// 跨境订单
|
||||
QueryWrapper<ShopOrderCb> cbQueryWrapper = new QueryWrapper<>();
|
||||
cbQueryWrapper.in("order_id", order_ids);
|
||||
ShopOrderCb shopOrderCb = new ShopOrderCb();
|
||||
@ -4743,6 +4749,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
|
||||
shopOrderCbService.edit(shopOrderCb, cbQueryWrapper);
|
||||
}
|
||||
|
||||
// 确认收货
|
||||
receive(order_ids, orderBaseList);
|
||||
|
||||
if (CollUtil.isNotEmpty(order_info_rows) && CollUtil.isNotEmpty(dist_order_id)) {
|
||||
@ -4755,7 +4762,8 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
|
||||
payService.editPayCard(order_id, shopProductIndex);
|
||||
}
|
||||
|
||||
if (!"".equals(shopProductIndex.getVoucher_activity_id())) {
|
||||
if (StrUtil.isNotBlank(shopProductIndex.getVoucher_activity_id())) {
|
||||
// if (!"".equals(shopProductIndex.getVoucher_activity_id())) {
|
||||
String[] voucher_activity_ids = shopProductIndex.getVoucher_activity_id().split(",");
|
||||
// 优惠券购买发优惠卷处理
|
||||
for (String activity_id : voucher_activity_ids) {
|
||||
@ -4845,6 +4853,12 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
|
||||
shopDistributionUserOrderService.settleDistributionUserOrder(order_id);
|
||||
}
|
||||
|
||||
// 重要;拉卡拉给平台和代理商分账
|
||||
Pair<Boolean, String> retOrderSeparateRet = lakalaApiService.innerDoOrderSeparate(order_row.getOrder_id(), Convert.toStr(order_row.getOrder_state_id()));
|
||||
if (!retOrderSeparateRet.getFirst()) {
|
||||
throw new ApiException(I18nUtil._("平台或代理商分账失败: " + retOrderSeparateRet.getSecond()));
|
||||
}
|
||||
|
||||
// 统计总营业额
|
||||
ShopStoreAnalytics analytics_row = shopStoreAnalyticsService.get(store_id);
|
||||
BigDecimal order_payment_amount = order_row.getOrder_payment_amount();
|
||||
|
||||
@ -27,7 +27,9 @@ import com.suisung.mall.shop.order.mapper.ShopOrderLogisticsMapper;
|
||||
import com.suisung.mall.shop.order.service.*;
|
||||
import com.suisung.mall.shop.store.service.ShopStoreExpressLogisticsService;
|
||||
import com.suisung.mall.shop.store.service.ShopStoreShippingAddressService;
|
||||
import com.suisung.mall.shop.wechat.service.WxOrderShippingService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -81,6 +83,10 @@ public class ShopOrderLogisticsServiceImpl extends BaseServiceImpl<ShopOrderLogi
|
||||
@Autowired
|
||||
private ShopOrderShippingAddressService shopOrderShippingAddressService;
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
private WxOrderShippingService wxOrderShippingService;
|
||||
|
||||
@Override
|
||||
public boolean saveOrderLogistics(ShopOrderLogistics column_row, Integer store_id, ShopOrderBase order_base_row) {
|
||||
if (CheckUtil.isEmpty(column_row.getStock_bill_id())) {
|
||||
@ -247,7 +253,29 @@ public class ShopOrderLogisticsServiceImpl extends BaseServiceImpl<ShopOrderLogi
|
||||
} else {
|
||||
throw new ApiException(_("请设置默认发货地址(基础->辅助资料->发货地址!"));
|
||||
}
|
||||
|
||||
// todo 添加发货通知
|
||||
|
||||
// 上传发货信息到微信
|
||||
if (order_info_row != null) {
|
||||
//配送方式(ENUM):1-快递配送(运费 10 元);5-自提;10-快递;16-同城配送;
|
||||
Integer deliveryType = order_info_row.getDelivery_type_id();
|
||||
//订单种类(ENUM): 1201-实物 ; 1202-虚拟 ; 1203-电子卡券 ; 1204-外卖订单
|
||||
Integer kindId = order_info_row.getKind_id();
|
||||
//物流模式,发货方式枚举值:1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品,虚拟商品,例如话费充值,点卡等,无实体配送形式 4、用户自提
|
||||
Integer logisticsType = 1;
|
||||
if (kindId != null && (kindId.equals(1202) || kindId.equals(1203))) {
|
||||
logisticsType = 3;
|
||||
}
|
||||
|
||||
if (deliveryType != null && deliveryType.equals(5)) {
|
||||
logisticsType = 4;
|
||||
}
|
||||
|
||||
// 上传发货信息到微信
|
||||
wxOrderShippingService.uploadShippingInfoToWx(logisticsType, orderId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return CommonResult.success();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user