cxgj/models/common/notify/payment/BallCartPayMentNotify.php
2023-11-27 09:45:13 +08:00

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();
}
}