109 lines
4.6 KiB
PHP
109 lines
4.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @author Any
|
|
* @description KISS
|
|
* @date 2021年10月3日
|
|
* @version 1.0.0
|
|
*
|
|
* _____LOG_____
|
|
*
|
|
*/
|
|
namespace app\models\common\notify\payment;
|
|
|
|
use app\models\BallCart;
|
|
use app\models\BallMark;
|
|
use app\models\Model;
|
|
use app\models\Order;
|
|
use app\models\OrderDetail;
|
|
use app\models\Store;
|
|
use app\models\StoreEarnings;
|
|
use app\modules\api\components\ApiHelper;
|
|
use app\modules\api\models\MsgCentreForm;
|
|
|
|
class BallCartPayMentNotify extends Model
|
|
{
|
|
/**
|
|
* 支付回调后续处理
|
|
* @param PaymentOrder $paymentOrder
|
|
* @return mixed
|
|
*/
|
|
public function notify($paymentOrder)
|
|
{
|
|
$t = \Yii::$app->db->beginTransaction();
|
|
$paymentOrder = \app\models\PaymentOrder::findOne(['order_no' => $paymentOrder->orderNo, 'notify_status' => [0,2]]);
|
|
if($paymentOrder == null){
|
|
return $this->apiReturnError('支付回调已经处理或不存在');
|
|
}
|
|
$paymentOrder->notify_status = 1;
|
|
if(!$paymentOrder->save()){
|
|
$t->rollBack();
|
|
return $this->getModelError($paymentOrder);
|
|
}
|
|
//订单状态
|
|
$order = Order::findOne(['order_no' => $paymentOrder->order_no]);
|
|
if($order == null){
|
|
$t->rollBack();
|
|
return $this->apiReturnError('订单不存在');
|
|
}
|
|
$order->pay_type = $paymentOrder->pay_type;
|
|
$order->is_pay = 1;
|
|
$order->pay_time = time();
|
|
$order->total_pay_price = $paymentOrder->amount;
|
|
$order->status = 1;
|
|
if(!$order->save()){
|
|
$t->rollBack();
|
|
\Yii::info("订单错误error:{$this->getModelError($order)['msg']}",'earnings');
|
|
return $this->getModelError($order);
|
|
}
|
|
$detail = OrderDetail::findOne(['order_id' => $order->id]);
|
|
if(!$detail){
|
|
$t->rollBack();
|
|
\Yii::info("订单错误error:获取订单球车信息失败",'earnings');
|
|
return $this->apiReturnError('获取订单球车信息失败');
|
|
}
|
|
$ball_cart = BallCart::find()->andWhere(['ball_number' => $detail->goods_id,'is_delete'=>0])->orderBy(['id'=>SORT_DESC])->one();
|
|
if (empty($ball_cart)) {
|
|
$t->rollBack();
|
|
\Yii::info("订单错误error:球车信息不存在,请更换一辆",'earnings');
|
|
return $this->apiReturnError('球车信息不存在,请更换一辆');
|
|
}
|
|
if ($ball_cart->status == 1) {
|
|
$t->rollBack();
|
|
\Yii::info("订单错误error:球车正在租赁中,请更换一辆",'earnings');
|
|
return $this->apiReturnError('球车正在租赁中,请更换一辆');
|
|
}
|
|
$ball_cart->status = 1;
|
|
if (!$ball_cart->save()) {
|
|
$t->rollBack();
|
|
\Yii::info("球车错误error:{$this->getModelError($ball_cart)['msg']}",'earnings');
|
|
return $this->apiReturnError('球车错误:'.$this->getModelError($ball_cart));
|
|
}
|
|
$earnings = StoreEarnings::get_earnings($order);
|
|
if($earnings['code'] != 0){
|
|
\Yii::info("计算门店收入error:{$earnings['msg']}",'earnings');
|
|
$t->rollBack();
|
|
return $this->apiReturnError($earnings['msg']);
|
|
}
|
|
$user = ApiHelper::findOneUser($order->user_id);
|
|
if($user != null){
|
|
$ball_mark = BallMark::findOne(['id' => $ball_cart->mark_id]);
|
|
$array = ['ball_mark' => $ball_mark->name, 'ball_cart' => $ball_cart->name, 'start_date' => time(), 'end_date' => 0, 'price' => $order->total_price, 'object_id' => $order->id];
|
|
MsgCentreForm::add($ball_cart->store_id, 1, $array);
|
|
$store = Store::findOne($ball_cart->store_id);
|
|
|
|
\Yii::info($order->id . '__' . $ball_cart->ball_number . '__' . json_encode($user->bindWxmp) . '__' . $ball_cart->store_id . '__进入下单模板通知' . '__小程序下单模板通知', 'wx_applet_msg');
|
|
if ($user->bindWxmp && $store != null) {
|
|
\Yii::info($order->id . '__' . $ball_cart->ball_number . '__进入下单模板通知' . '__小程序下单模板通知', 'wx_applet_msg');
|
|
MsgCentreForm::sendWxAppletLeaseMsg($user, $store, $order, ['ball_number' => $ball_cart->ball_number, 'price' => $order->total_pay_price]);
|
|
}
|
|
}else{
|
|
\Yii::info($order->order_no . '__' . $ball_cart->ball_number . '__支付回调发送消息失败_user信息未找到' . '__小程序下单模板通知', 'wxpay');
|
|
}
|
|
$t->commit();
|
|
|
|
return $this->apiReturnSuccess();
|
|
}
|
|
}
|
|
|