微信订单管理更新

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 = "商品规格描述")
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 是否启用
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)) {
Integer payment_channel_id = Convert.toInt(getParameter("payment_channel_id"));
PayPaymentChannel payPaymentChannel = payPaymentChannelService.get(payment_channel_id);

View File

@ -150,6 +150,7 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
@GlobalTransactional
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");
QueryWrapper<PayConsumeTrade> tradeQueryWrapper = new QueryWrapper<>();
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_chain_id = 0;
// String orderTitle = I18nUtil._("在线购物");
if (!accountBaseConfigService.getTradeModePlantform()) {
// 不可以联合支付
if (order_id_row.size() > 1) {
@ -174,9 +176,13 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
} else {
payment_chain_id = payConsumeTrade.getChain_id();
}
// orderTitle = payConsumeTrade.getTrade_title();
}
// 获取支付渠道编码
String payment_channel_code = (String) requestParams.get("payment_channel_code");
// 如果是线下支付
if (CollUtil.isNotEmpty(trade_rows) && StrUtil.equals(payment_channel_code, "offline")) {
// 线下支付修改线下支付状态
ShopOrderInfo shopOrderInfo = new ShopOrderInfo();
@ -185,6 +191,7 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
Map params = new HashMap();
params.put("order_ids", order_id_row);
params.put("payment_type_id", StateCode.PAYMENT_TYPE_OFFLINE);
// 修改订单支付方式为线下支付
if (!shopService.editOrderPaymentTypeByIds(params)) {
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_next_state_id = StateCode.ORDER_STATE_PICKING;
// 修改订单状态为待发货
if (!shopService.editNextState(order_id_row, payment_store_id, order_state_id, order_next_state_id)) {
throw new ApiException(I18nUtil._("修改订单为待发货状态失败!"));
}
}
// 获取现金支付金额
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();
// 如果支付金额大于0且不是线下支付
if (trade_payment_amount.compareTo(BigDecimal.ZERO) > 0 && !StrUtil.equals(payment_channel_code, "offline")) {
// 金额大于0且不是线下交易的情况
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_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)*/
/*|| CheckUtil.isNotEmpty(trade_payment_credit) || CheckUtil.isNotEmpty(trade_payment_redpack)*/) {
// 判断支付密码
String password = (String) requestParams.get("password");
// 如果有支付密码
if (StrUtil.isNotBlank(password)) {
UserDto user = getCurrentUser();
BigDecimal trade_payment_credit = (BigDecimal) requestParams.get("trade_payment_credit");
BigDecimal trade_payment_redpack = (BigDecimal) requestParams.get("trade_payment_redpack");
// 检查支付密码是否正确
checkPayPasswd(user.getId(), password);
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);
trade_rows = payConsumeTradeService.find(tradeQueryWrapper);
}
}
// 创建新的交易记录
PayConsumeTrade trade_row = new PayConsumeTrade();
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;
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());
// 如果有多个订单
if (trade_order_id_row.size() > 1) {
// 生成联合支付
PayConsumeTradeCombine consume_trade_combine_row = new PayConsumeTradeCombine();
consume_trade_combine_row.setOrder_ids(CollUtil.join(trade_order_id_row, ","));
// 添加联合支付记录
payConsumeTradeCombineService.addTradeCombine(consume_trade_combine_row);
String ctc_id = consume_trade_combine_row.getCtc_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, ","));
}
// 获取订单标题列表
List<String> trade_titles = trade_rows.stream().map(PayConsumeTrade::getTrade_title).distinct().collect(Collectors.toList());
trade_row.setTrade_title(CollUtil.join(trade_titles, ","));
// 多条付款金额累加
BigDecimal payment_amount = trade_rows.stream().map(PayConsumeTrade::getTrade_payment_amount).reduce(BigDecimal::add).get();
trade_row.setTrade_payment_amount(payment_amount);
// 如果支付金额大于0
if (payment_amount.compareTo(BigDecimal.ZERO) > 0) {
// update 2025-07-30 为什么不给真正的订单标题我暂时注释了
// 订单金额大于0的情况
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._("在线购物"));
trade_row.setTrade_desc(I18nUtil._("在线购物"));
// 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._("在线购物"));
// 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)) {
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);
}
@ -1772,18 +1802,18 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
@Override
@Transactional
public ThirdApiRes saveBatchPayUserResources(List<PayUserResource> payUserResourceList) {
boolean result=false;
if(!payUserResourceList.isEmpty()){
boolean result = false;
if (!payUserResourceList.isEmpty()) {
try {
result=payUserResourceService.saveBatch(payUserResourceList,payUserResourceList.size());
}catch (RuntimeException e){
throw new ApiException("保存saveBatchPayUserResources报错"+e.getMessage());
result = payUserResourceService.saveBatch(payUserResourceList, payUserResourceList.size());
} catch (RuntimeException e) {
throw new ApiException("保存saveBatchPayUserResources报错" + e.getMessage());
}
}
if(result){
if (result) {
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="order_item_image" column="order_item_image"/>
<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>
</resultMap>
@ -791,6 +793,9 @@
oit.order_item_quantity,
oit.item_unit_price,
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,
oit.order_item_image,
oit.spec_info,