微信订单管理更新

This commit is contained in:
Jack 2025-07-31 01:22:11 +08:00
parent c7ebd82d64
commit 334f0c70d9
4 changed files with 53 additions and 12 deletions

View File

@ -55,4 +55,10 @@ public class MchOrderItemDTO implements Serializable {
@ApiModelProperty(value = "商品规格描述") @ApiModelProperty(value = "商品规格描述")
private String spec_info; private String spec_info;
@ApiModelProperty(value = "退货数量")
private Integer order_item_return_num;
@ApiModelProperty(value = "退款金额:同意额度")
private BigDecimal order_item_return_agree_amount;
} }

View File

@ -198,7 +198,7 @@ public class IndexController extends BaseControllerImpl {
} }
// todo $payment_channel_code 是否启用 // todo $payment_channel_code 是否启用
String payment_channel_code = getParameter("payment_channel_code");// payment_channel_codewx_native alipay String payment_channel_code = getParameter("payment_channel_code");// payment_channel_codewx_native alipay lakala
if (StrUtil.isBlank(payment_channel_code)) { if (StrUtil.isBlank(payment_channel_code)) {
Integer payment_channel_id = Convert.toInt(getParameter("payment_channel_id")); Integer payment_channel_id = Convert.toInt(getParameter("payment_channel_id"));
PayPaymentChannel payPaymentChannel = payPaymentChannelService.get(payment_channel_id); PayPaymentChannel payPaymentChannel = payPaymentChannelService.get(payment_channel_id);

View File

@ -150,6 +150,7 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
@GlobalTransactional @GlobalTransactional
public void pay(HttpServletRequest request, HttpServletResponse response, Map<String, Object> requestParams, PayTypeBean payTypeBean) { public void pay(HttpServletRequest request, HttpServletResponse response, Map<String, Object> requestParams, PayTypeBean payTypeBean) {
// 获取订单ID列表
List<String> order_id_row = (List<String>) requestParams.get("order_id_row"); List<String> order_id_row = (List<String>) requestParams.get("order_id_row");
QueryWrapper<PayConsumeTrade> tradeQueryWrapper = new QueryWrapper<>(); QueryWrapper<PayConsumeTrade> tradeQueryWrapper = new QueryWrapper<>();
tradeQueryWrapper.in("order_id", order_id_row); tradeQueryWrapper.in("order_id", order_id_row);
@ -159,6 +160,7 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
// 判断是门店 店铺 平台 // 判断是门店 店铺 平台
Integer payment_store_id = 0; Integer payment_store_id = 0;
Integer payment_chain_id = 0; Integer payment_chain_id = 0;
// String orderTitle = I18nUtil._("在线购物");
if (!accountBaseConfigService.getTradeModePlantform()) { if (!accountBaseConfigService.getTradeModePlantform()) {
// 不可以联合支付 // 不可以联合支付
if (order_id_row.size() > 1) { if (order_id_row.size() > 1) {
@ -174,9 +176,13 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
} else { } else {
payment_chain_id = payConsumeTrade.getChain_id(); payment_chain_id = payConsumeTrade.getChain_id();
} }
// orderTitle = payConsumeTrade.getTrade_title();
} }
// 获取支付渠道编码
String payment_channel_code = (String) requestParams.get("payment_channel_code"); String payment_channel_code = (String) requestParams.get("payment_channel_code");
// 如果是线下支付
if (CollUtil.isNotEmpty(trade_rows) && StrUtil.equals(payment_channel_code, "offline")) { if (CollUtil.isNotEmpty(trade_rows) && StrUtil.equals(payment_channel_code, "offline")) {
// 线下支付修改线下支付状态 // 线下支付修改线下支付状态
ShopOrderInfo shopOrderInfo = new ShopOrderInfo(); ShopOrderInfo shopOrderInfo = new ShopOrderInfo();
@ -185,6 +191,7 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
Map params = new HashMap(); Map params = new HashMap();
params.put("order_ids", order_id_row); params.put("order_ids", order_id_row);
params.put("payment_type_id", StateCode.PAYMENT_TYPE_OFFLINE); params.put("payment_type_id", StateCode.PAYMENT_TYPE_OFFLINE);
// 修改订单支付方式为线下支付
if (!shopService.editOrderPaymentTypeByIds(params)) { if (!shopService.editOrderPaymentTypeByIds(params)) {
throw new ApiException(I18nUtil._("修改线下支付状态失败!")); throw new ApiException(I18nUtil._("修改线下支付状态失败!"));
} }
@ -193,49 +200,60 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
Integer order_state_id = StateCode.ORDER_STATE_WAIT_PAY; Integer order_state_id = StateCode.ORDER_STATE_WAIT_PAY;
Integer order_next_state_id = StateCode.ORDER_STATE_PICKING; Integer order_next_state_id = StateCode.ORDER_STATE_PICKING;
// 修改订单状态为待发货
if (!shopService.editNextState(order_id_row, payment_store_id, order_state_id, order_next_state_id)) { if (!shopService.editNextState(order_id_row, payment_store_id, order_state_id, order_next_state_id)) {
throw new ApiException(I18nUtil._("修改订单为待发货状态失败!")); throw new ApiException(I18nUtil._("修改订单为待发货状态失败!"));
} }
} }
// 获取现金支付金额
BigDecimal trade_payment_money = (BigDecimal) requestParams.get("trade_payment_money"); BigDecimal trade_payment_money = (BigDecimal) requestParams.get("trade_payment_money");
// 总待支付金额 // 总待支付金额
BigDecimal trade_payment_amount = trade_rows.stream().map(PayConsumeTrade::getTrade_payment_amount).reduce(BigDecimal::add).get(); BigDecimal trade_payment_amount = trade_rows.stream().map(PayConsumeTrade::getTrade_payment_amount).reduce(BigDecimal::add).get();
// 如果支付金额大于0且不是线下支付
if (trade_payment_amount.compareTo(BigDecimal.ZERO) > 0 && !StrUtil.equals(payment_channel_code, "offline")) { if (trade_payment_amount.compareTo(BigDecimal.ZERO) > 0 && !StrUtil.equals(payment_channel_code, "offline")) {
// 金额大于0且不是线下交易的情况 // 金额大于0且不是线下交易的情况
BigDecimal trade_payment_recharge_card = (BigDecimal) requestParams.get("trade_payment_recharge_card"); BigDecimal trade_payment_recharge_card = (BigDecimal) requestParams.get("trade_payment_recharge_card");
BigDecimal trade_payment_points = (BigDecimal) requestParams.get("trade_payment_points"); BigDecimal trade_payment_points = (BigDecimal) requestParams.get("trade_payment_points");
BigDecimal trade_payment_sp = (BigDecimal) requestParams.get("trade_payment_sp"); BigDecimal trade_payment_sp = (BigDecimal) requestParams.get("trade_payment_sp");
// 检查是否有支付金额
if (CheckUtil.isNotEmpty(trade_payment_money) || CheckUtil.isNotEmpty(trade_payment_recharge_card) || CheckUtil.isNotEmpty(trade_payment_points) /*|| CheckUtil.isNotEmpty(trade_payment_sp)*/ if (CheckUtil.isNotEmpty(trade_payment_money) || CheckUtil.isNotEmpty(trade_payment_recharge_card) || CheckUtil.isNotEmpty(trade_payment_points) /*|| CheckUtil.isNotEmpty(trade_payment_sp)*/
/*|| CheckUtil.isNotEmpty(trade_payment_credit) || CheckUtil.isNotEmpty(trade_payment_redpack)*/) { /*|| CheckUtil.isNotEmpty(trade_payment_credit) || CheckUtil.isNotEmpty(trade_payment_redpack)*/) {
// 判断支付密码 // 判断支付密码
String password = (String) requestParams.get("password"); String password = (String) requestParams.get("password");
// 如果有支付密码
if (StrUtil.isNotBlank(password)) { if (StrUtil.isNotBlank(password)) {
UserDto user = getCurrentUser(); UserDto user = getCurrentUser();
BigDecimal trade_payment_credit = (BigDecimal) requestParams.get("trade_payment_credit"); BigDecimal trade_payment_credit = (BigDecimal) requestParams.get("trade_payment_credit");
BigDecimal trade_payment_redpack = (BigDecimal) requestParams.get("trade_payment_redpack"); BigDecimal trade_payment_redpack = (BigDecimal) requestParams.get("trade_payment_redpack");
// 检查支付密码是否正确
checkPayPasswd(user.getId(), password); checkPayPasswd(user.getId(), password);
List<Map> _trade_rows = Convert.toList(Map.class, trade_rows); List<Map> _trade_rows = Convert.toList(Map.class, trade_rows);
// 处理线下支付
payConsumeTradeService.processOfflinePay(_trade_rows, trade_payment_money, trade_payment_recharge_card, trade_payment_points, trade_payment_credit, trade_payment_redpack, trade_payment_sp); payConsumeTradeService.processOfflinePay(_trade_rows, trade_payment_money, trade_payment_recharge_card, trade_payment_points, trade_payment_credit, trade_payment_redpack, trade_payment_sp);
trade_rows = payConsumeTradeService.find(tradeQueryWrapper); trade_rows = payConsumeTradeService.find(tradeQueryWrapper);
} }
} }
// 创建新的交易记录
PayConsumeTrade trade_row = new PayConsumeTrade(); PayConsumeTrade trade_row = new PayConsumeTrade();
List<Integer> trade_is_paids = trade_rows.stream().map(PayConsumeTrade::getTrade_is_paid).collect(Collectors.toList()); List<Integer> trade_is_paids = trade_rows.stream().map(PayConsumeTrade::getTrade_is_paid).collect(Collectors.toList());
Integer trade_is_paid = trade_is_paids.contains(StateCode.ORDER_PAID_STATE_YES) ? StateCode.ORDER_PAID_STATE_YES : StateCode.ORDER_PAID_STATE_NO; Integer trade_is_paid = trade_is_paids.contains(StateCode.ORDER_PAID_STATE_YES) ? StateCode.ORDER_PAID_STATE_YES : StateCode.ORDER_PAID_STATE_NO;
trade_row.setTrade_is_paid(trade_is_paid); trade_row.setTrade_is_paid(trade_is_paid);
// 获取订单ID列表
List<String> trade_order_id_row = trade_rows.stream().map(PayConsumeTrade::getOrder_id).distinct().collect(Collectors.toList()); List<String> trade_order_id_row = trade_rows.stream().map(PayConsumeTrade::getOrder_id).distinct().collect(Collectors.toList());
// 如果有多个订单
if (trade_order_id_row.size() > 1) { if (trade_order_id_row.size() > 1) {
// 生成联合支付 // 生成联合支付
PayConsumeTradeCombine consume_trade_combine_row = new PayConsumeTradeCombine(); PayConsumeTradeCombine consume_trade_combine_row = new PayConsumeTradeCombine();
consume_trade_combine_row.setOrder_ids(CollUtil.join(trade_order_id_row, ",")); consume_trade_combine_row.setOrder_ids(CollUtil.join(trade_order_id_row, ","));
// 添加联合支付记录
payConsumeTradeCombineService.addTradeCombine(consume_trade_combine_row); payConsumeTradeCombineService.addTradeCombine(consume_trade_combine_row);
String ctc_id = consume_trade_combine_row.getCtc_id(); String ctc_id = consume_trade_combine_row.getCtc_id();
if (StrUtil.isBlank(ctc_id)) { if (StrUtil.isBlank(ctc_id)) {
@ -247,20 +265,31 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
trade_row.setOrder_id(CollUtil.join(trade_order_id_row, ",")); trade_row.setOrder_id(CollUtil.join(trade_order_id_row, ","));
} }
// 获取订单标题列表
List<String> trade_titles = trade_rows.stream().map(PayConsumeTrade::getTrade_title).distinct().collect(Collectors.toList()); List<String> trade_titles = trade_rows.stream().map(PayConsumeTrade::getTrade_title).distinct().collect(Collectors.toList());
trade_row.setTrade_title(CollUtil.join(trade_titles, ",")); trade_row.setTrade_title(CollUtil.join(trade_titles, ","));
// 多条付款金额累加 // 多条付款金额累加
BigDecimal payment_amount = trade_rows.stream().map(PayConsumeTrade::getTrade_payment_amount).reduce(BigDecimal::add).get(); BigDecimal payment_amount = trade_rows.stream().map(PayConsumeTrade::getTrade_payment_amount).reduce(BigDecimal::add).get();
trade_row.setTrade_payment_amount(payment_amount); trade_row.setTrade_payment_amount(payment_amount);
// 如果支付金额大于0
if (payment_amount.compareTo(BigDecimal.ZERO) > 0) { if (payment_amount.compareTo(BigDecimal.ZERO) > 0) {
// update 2025-07-30 为什么不给真正的订单标题我暂时注释了
// 订单金额大于0的情况 // 订单金额大于0的情况
List<Integer> order_state_ids = trade_rows.stream().map(PayConsumeTrade::getOrder_state_id).distinct().collect(Collectors.toList()); // List<Integer> order_state_ids = trade_rows.stream().map(PayConsumeTrade::getOrder_state_id).distinct().collect(Collectors.toList());
if (!order_state_ids.contains(StateCode.ORDER_STATE_CANCEL)) { // // 如果订单状态不是取消状态
trade_row.setTrade_title(I18nUtil._("在线购物")); // if (!order_state_ids.contains(StateCode.ORDER_STATE_CANCEL)) {
trade_row.setTrade_desc(I18nUtil._("在线购物")); // trade_row.setTrade_title(I18nUtil._("在线购物"));
// trade_row.setTrade_desc(I18nUtil._("在线购物"));
// }
if (StrUtil.isBlank(trade_row.getTrade_title())) {
trade_row.setTrade_title("小发同城线上超市商品");
trade_row.setTrade_desc("小发同城线上超市商品");
} }
// 设置店铺ID
if (CollUtil.isNotEmpty(trade_rows)) { if (CollUtil.isNotEmpty(trade_rows)) {
trade_row.setStore_id(trade_rows.get(0).getStore_id());//店铺ID trade_row.setStore_id(trade_rows.get(0).getStore_id());//店铺ID
} }
@ -284,6 +313,7 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
} }
} }
// 根据支付类型返回结果
toResultByPayType(response, order_id_row.get(0), payTypeBean); toResultByPayType(response, order_id_row.get(0), payTypeBean);
} }
@ -1772,18 +1802,18 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
@Override @Override
@Transactional @Transactional
public ThirdApiRes saveBatchPayUserResources(List<PayUserResource> payUserResourceList) { public ThirdApiRes saveBatchPayUserResources(List<PayUserResource> payUserResourceList) {
boolean result=false; boolean result = false;
if(!payUserResourceList.isEmpty()){ if (!payUserResourceList.isEmpty()) {
try { try {
result=payUserResourceService.saveBatch(payUserResourceList,payUserResourceList.size()); result = payUserResourceService.saveBatch(payUserResourceList, payUserResourceList.size());
}catch (RuntimeException e){ } catch (RuntimeException e) {
throw new ApiException("保存saveBatchPayUserResources报错"+e.getMessage()); throw new ApiException("保存saveBatchPayUserResources报错" + e.getMessage());
} }
} }
if(result){ if (result) {
return new ThirdApiRes().success("批量保存成功"); return new ThirdApiRes().success("批量保存成功");
} }
return new ThirdApiRes().fail(250,"批量保存失败"); return new ThirdApiRes().fail(250, "批量保存失败");
} }
} }

View File

@ -633,6 +633,8 @@
<result property="item_barcode" column="item_barcode"/> <result property="item_barcode" column="item_barcode"/>
<result property="order_item_image" column="order_item_image"/> <result property="order_item_image" column="order_item_image"/>
<result property="spec_info" column="spec_info"/> <result property="spec_info" column="spec_info"/>
<result property="order_item_return_num" column="order_item_return_num"/>
<result property="order_item_return_agree_amount" column="order_item_return_agree_amount"/>
</collection> </collection>
</resultMap> </resultMap>
@ -791,6 +793,9 @@
oit.order_item_quantity, oit.order_item_quantity,
oit.item_unit_price, oit.item_unit_price,
oit.order_item_amount, oit.order_item_amount,
IF(oit.order_item_return_num > 0, oit.order_item_return_num, 0) AS order_item_return_num,
IF(oit.order_item_return_agree_amount > 0, oit.order_item_return_agree_amount, 0.00) AS
order_item_return_agree_amount,
spi.item_barcode, spi.item_barcode,
oit.order_item_image, oit.order_item_image,
oit.spec_info, oit.spec_info,