cxfoot/modules/admin/models/mall/order/OrderMultiForm.php
2023-10-24 14:54:18 +08:00

241 lines
8.1 KiB
PHP

<?php
/**
* @author Any
* @description KISS
* @date 2020-11-5
* @version 1.0.0
*
* _____LOG_____
*
*/
namespace app\modules\admin\models\mall\order;
use app\components\EncryptHelper;
use app\models\BalanceLog;
use app\models\CardUnion;
use app\models\common\union\CardFrom;
use app\models\Model;
use app\models\Order;
use app\models\OrderUnionMeta;
use app\models\PaymentOrder;
use app\models\PaymentOrderUnion;
use app\models\Store;
use app\models\StoreEarnings;
use app\models\User;
use app\modules\admin\models\AdminModel;
class OrderMultiForm extends AdminModel
{
public $type;
public $order_no;
public $id;
public function rules()
{
return [
[['order_no','type'], 'required'],
[['order_no'], 'string'],
[['type','id'], 'integer'],
];
}
public function attributeLabels()
{
return [
'order_no' => '订单号',
'id' => '订单ID',
];
}
public function search()
{
if (!$this->validate()) {
return $this->getModelError();
}
if($this->type == 0){
//分账记录-psOrderMulti
$model = OrderUnionMeta::findOne(['ps_mer_order_no' => $this->order_no, 'type' => 'psOrderMulti', 'desc' => 'SUCCESS', 'is_delete' => 0]);
if(empty($model)){
return Model::asReturnError('多次分账记录不存在');
}
}elseif ($this->type == 1){
//完结记录-psOrderFinish
$model = OrderUnionMeta::findOne(['ps_mer_order_no' => $this->order_no,'type' => 'psOrderFinish', 'desc' => 'SUCCESS', 'is_delete' => 0]);
if(empty($model)){
return Model::asReturnError('完结分账记录不存在');
}
}else{
return Model::asReturnError('非法操作!');
}
$PaymentOrderUnion = PaymentOrderUnion::find()->alias('pou')
->select('pou.id,pou.out_trade_no,po.order_no,o.store_id,o.user_id,o.id as order_id')
->leftJoin(['po' => PaymentOrder::tableName()],'pou.id=po.payment_order_union_id')
->leftJoin(['o' => Order::tableName()],'po.order_no=o.order_no')
->where([
'pou.id' => $model->payment_order_union_id,
'pou.is_pay' => 1,
'po.is_pay' => 1,
])
->one();
if(empty($PaymentOrderUnion)){
return Model::asReturnError('合并支付订单不存在');
}
$earnings = StoreEarnings::findOne([
'user_id' => $PaymentOrderUnion->user_id,
'store_id' => $PaymentOrderUnion->store_id,
'order_id' => $PaymentOrderUnion->order_id,
'is_delete'=> 0
]);
if(empty($earnings)){
return Model::asReturnError('收益记录不存在');
}
$param['merOrderNo'] = $PaymentOrderUnion->out_trade_no;
$param['psMerOrderNo'] = $model->ps_mer_order_no;
$param['order_no'] = $PaymentOrderUnion->order_no;
$cardForm = new CardFrom();
$res = $cardForm->psResultQuery($param);
if($res['code'] != '0'){
return $res;
}
if($res['status'] == '03'){
$status = 3;
if($earnings->status != $status){
$earnings->status = $status;
if(!$earnings->save()){
return Model::getModelErrorInfo($earnings);
}
}
}
if($res['status'] == '02'){
$status = 4;
if($earnings->status != $status){
$earnings->status = $status;
if(!$earnings->save()){
return Model::getModelErrorInfo($earnings);
}
}
}
$type = [
'00' => '分账受理成功',
'01' => '分账处理中',
'02' => '分账处理完成',
'03' => '分账处理失败',
];
$msg = $type[$res['status']];
return ['code' => '0','msg'=> $msg];
}
public function search2()
{
if(empty($this->id)){
return Model::asReturnError('请选择');
}
$order = Order::findOne(['id' => $this->id]);
if(empty($order)){
return Model::asReturnError('订单不存在');
}
if($order->is_pay != 1){
return Model::asReturnError('订单未支付,请支付');
}
$PaymentOrder = PaymentOrder::findOne(['order_no' => $order->order_no,'is_pay' => 1,'notify_status' => 1]);
if(empty($PaymentOrder)){
return Model::asReturnError('支付数据不存在');
}
$PaymentOrderUnion = PaymentOrderUnion::findOne(['id' => $PaymentOrder->payment_order_union_id,'is_pay' => 1]);
if(empty($PaymentOrderUnion)){
return Model::asReturnError('合并支付数据不存在');
}
$earnings = StoreEarnings::findOne([
'user_id' => $order->user_id,
'store_id' => $order->store_id,
'order_id' => $order->id,
'is_delete'=> 0
]);
if(empty($earnings)){
return Model::asReturnError('收益记录不存在');
}
//分账记录-psOrderMulti
$model = OrderUnionMeta::find()->where(['payment_order_union_id' => $PaymentOrderUnion->id,'type' => 'psOrder','desc' => 'SUCCESS','is_delete' => 0])->orderBy(['id' => SORT_DESC])->limit(1)->one();
if(empty($model)){
return Model::asReturnError('分账记录不存在');
}
$param['merOrderNo'] = $PaymentOrderUnion->out_trade_no;
$param['psMerOrderNo'] = $model->ps_mer_order_no;
$param['order_no'] = $order->order_no;
$cardForm = new CardFrom();
$res = $cardForm->psResultQuery($param);
if($res['code'] != '0'){
return $res;
}
$psResult_arr = [
'00' => '待分账',
'01' => '分账成功',
'02' => '分账失败',
'03' => '已关闭',
];
$status_arr = [
'00' =>'分账受理成功',
'01' => '分账处理中',
'02' => '分账处理完成',
'03' => '分账处理失败',
];
$data = $res['data'];
$msg = '';
$status_cn = $status_arr[$data['status']];
$msg.= '分账订单号:'.$data['psMerOrderNo'].'<br>';
$msg.= '分账单状态:'.$status_cn."<br>";
$msg.= '分账结果备注:'.$data['resultRemark']."<br>";
if($data['status'] == '02'){
if($earnings->status != 3){
$earnings->status = 3;
}
$msg.= '分账日期:'.$data['psOrderDate']."<br>";
}
if($data['status'] == '03'){
if($earnings->status != 2){
$earnings->status = 2;
}
}
$msg.= "<br>";
$psReceivers = empty($data['psReceivers']) ? [] : $data['psReceivers'];
if(!empty($psReceivers)){
foreach ($psReceivers as $index => &$item){
$item['psFinishTime'] = empty($item['psFinishTime']) ? '未完成' : $item['psFinishTime'];
$nickname = '未知';
$card = CardUnion::findOne(['id' => $earnings->card_id]);
if(!empty($card)){
$nickname = $card->name;
}
$psResult_cn = $psResult_arr[$item['psResult']];
$msg.= '分账接收方账户:'.$item['psNo']."<br>";
$msg.= '分账用户名:'.$nickname."<br>";
$msg.= '分账金额:'.$item['psAmount']."<br>";
$msg.= '分账备注:'.$item['psRemark']."<br>";
$msg.= '分账结果:'.$psResult_cn."<br>";
$msg.= '分账完成时间:'.$item['psFinishTime']."<br>";
$msg.= "<br>";
}
}
$earnings->save();
return Model::asReturnSuccess($msg);
}
}