微信订单管理更新
This commit is contained in:
parent
c7ebd82d64
commit
334f0c70d9
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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_code:wx_native, alipay
|
String payment_channel_code = getParameter("payment_channel_code");// payment_channel_code:wx_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);
|
||||||
|
|||||||
@ -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, "批量保存失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user