241 lines
8.1 KiB
PHP
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);
|
|
|
|
|
|
}
|
|
|
|
|
|
} |