|
@@ -1,19 +1,24 @@
|
|
|
<?php
|
|
<?php
|
|
|
declare(strict_types=1);
|
|
declare(strict_types=1);
|
|
|
|
|
+
|
|
|
namespace SixShop\Lakala\Service;
|
|
namespace SixShop\Lakala\Service;
|
|
|
|
|
|
|
|
|
|
+use app\model\OrderGoods;
|
|
|
|
|
+use SixShop\Lakala\Enum\WechatOrderStateEnum;
|
|
|
|
|
+use SixShop\Lakala\Model\LakalaWechatPaymentModel;
|
|
|
use SixShop\Payment\Model\ExtensionPaymentModel;
|
|
use SixShop\Payment\Model\ExtensionPaymentModel;
|
|
|
use think\db\Query;
|
|
use think\db\Query;
|
|
|
use think\Paginator;
|
|
use think\Paginator;
|
|
|
|
|
|
|
|
class PaymentRecordService
|
|
class PaymentRecordService
|
|
|
{
|
|
{
|
|
|
- public function getTradeOrderList(array $params, array $pageAndLimit):Paginator
|
|
|
|
|
|
|
+ public function getTradeOrderList(array $params, array $pageAndLimit): Paginator
|
|
|
{
|
|
{
|
|
|
- return ExtensionPaymentModel::alias('p')
|
|
|
|
|
|
|
+ $paginator = ExtensionPaymentModel::alias('p')
|
|
|
->leftJoin('order o', 'o.id = p.order_id')
|
|
->leftJoin('order o', 'o.id = p.order_id')
|
|
|
|
|
+ ->leftJoin('lakala_wechat_payment w', 'p.id = w.payment_id')
|
|
|
->where([
|
|
->where([
|
|
|
- 'p.pay_type' =>'lakala',
|
|
|
|
|
|
|
+ 'p.pay_type' => 'lakala',
|
|
|
'p.status' => 2
|
|
'p.status' => 2
|
|
|
])
|
|
])
|
|
|
->when($params['order_sn'], function (Query $query) use ($params) {
|
|
->when($params['order_sn'], function (Query $query) use ($params) {
|
|
@@ -26,7 +31,12 @@ class PaymentRecordService
|
|
|
$query->whereLike('p.transaction_id', '%' . $params['transaction_id'] . '%');
|
|
$query->whereLike('p.transaction_id', '%' . $params['transaction_id'] . '%');
|
|
|
})
|
|
})
|
|
|
->field([
|
|
->field([
|
|
|
- 'p.*', 'o.express_name', 'o.express_number',
|
|
|
|
|
|
|
+ 'p.id',
|
|
|
|
|
+ 'p.order_sn',
|
|
|
|
|
+ 'p.out_trade_no',
|
|
|
|
|
+ 'p.transaction_id',
|
|
|
|
|
+ 'p.amount',
|
|
|
|
|
+ 'o.express_name', 'o.express_number',
|
|
|
'o.shipping_status',
|
|
'o.shipping_status',
|
|
|
'o.consignee',
|
|
'o.consignee',
|
|
|
'o.mobile',
|
|
'o.mobile',
|
|
@@ -34,8 +44,35 @@ class PaymentRecordService
|
|
|
'o.city',
|
|
'o.city',
|
|
|
'o.district',
|
|
'o.district',
|
|
|
'o.address',
|
|
'o.address',
|
|
|
|
|
+ 'w.wechat_transaction_id',
|
|
|
|
|
+ 'w.order_state',
|
|
|
|
|
+ 'w.goods_desc',
|
|
|
])
|
|
])
|
|
|
->order('p.id', 'DESC')
|
|
->order('p.id', 'DESC')
|
|
|
->paginate($pageAndLimit);
|
|
->paginate($pageAndLimit);
|
|
|
|
|
+ $paginator->each(function (ExtensionPaymentModel $item) {
|
|
|
|
|
+ if ($item['order_state'] == null) {
|
|
|
|
|
+ $wechatOrder = $this->createWechatOrder($item->id);
|
|
|
|
|
+ $item->setAttrs([
|
|
|
|
|
+ 'wechat_transaction_id' => $wechatOrder['wechat_transaction_id'],
|
|
|
|
|
+ 'order_state' => $wechatOrder['order_state'],
|
|
|
|
|
+ 'goods_desc' => $wechatOrder['goods_desc'],
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+ $item->setAttr('order_state_text', WechatOrderStateEnum::from($item['order_state'])->toString());
|
|
|
|
|
+ });
|
|
|
|
|
+ return $paginator;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private function createWechatOrder(int $paymentID):LakalaWechatPaymentModel
|
|
|
|
|
+ {
|
|
|
|
|
+ $payment = ExtensionPaymentModel::find($paymentID);
|
|
|
|
|
+ $goods = OrderGoods::where(['order_id' => $payment['order_id']])->find();
|
|
|
|
|
+ return LakalaWechatPaymentModel::create([
|
|
|
|
|
+ 'payment_id' => $payment['id'],
|
|
|
|
|
+ 'wechat_transaction_id' => $payment['payment_result']['acc_trade_no'],
|
|
|
|
|
+ 'order_state' => WechatOrderStateEnum::PENDING_SHIPMENT,
|
|
|
|
|
+ 'goods_desc' => $goods['goods_name'],
|
|
|
|
|
+ ]);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|