208 lines
7.1 KiB
PHP
208 lines
7.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @author Any
|
|
* @description KISS
|
|
* @date 2020-11-5
|
|
* @version 1.0.0
|
|
*
|
|
* _____LOG_____
|
|
*
|
|
*/
|
|
|
|
namespace app\modules\store\models\mall\order;
|
|
|
|
use app\components\EncryptHelper;
|
|
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\Store;
|
|
use app\models\StoreEarnings;
|
|
use app\modules\admin\models\AdminModel;
|
|
|
|
class OrderActionForm extends AdminModel
|
|
{ public $ids;
|
|
|
|
public function rules()
|
|
{
|
|
return [
|
|
[['ids'], 'required'],
|
|
[['ids'], 'safe'],
|
|
];
|
|
}
|
|
|
|
public function attributeLabels()
|
|
{
|
|
return [
|
|
'ids' => '选择项',
|
|
];
|
|
}
|
|
|
|
|
|
//取消
|
|
public function cancel()
|
|
{
|
|
if (!$this->validate()) {
|
|
return $this->getModelError();
|
|
}
|
|
|
|
foreach ($this->ids as $item) {
|
|
$model = Order::findOne(['id' => $item, 'is_delete' => 0, 'is_pay' => 0]);
|
|
if ($model == null) {
|
|
return Model::asReturnError('该订单不存在或已被清理');
|
|
}
|
|
if ($model->cancel_status == 1) {
|
|
continue;
|
|
}
|
|
$model->cancel_status = 1;
|
|
$model->status = 3;
|
|
$model->cancel_time = time();
|
|
$model->updated_at = time();
|
|
if (!$model->save()) {
|
|
return Model::getModelErrorInfo($model);
|
|
}
|
|
}
|
|
return Model::asReturnSuccess('操作成功');
|
|
}
|
|
|
|
//删除
|
|
public function delete()
|
|
{
|
|
if (!$this->validate()) {
|
|
return $this->getModelError();
|
|
}
|
|
$t = \Yii::$app->db->beginTransaction();
|
|
foreach ($this->ids as $item) {
|
|
$model = Order::findOne(['id' => $item, 'is_delete' => 0]);
|
|
if ($model == null) {
|
|
$t->rollBack();
|
|
return Model::asReturnError('该订单不存在或已被清理');
|
|
}
|
|
if ($model->is_delete == 1) {
|
|
continue;
|
|
}
|
|
$model->is_delete = 1;
|
|
$model->deleted_at = time();
|
|
$model->updated_at = time();
|
|
if (!$model->save()) {
|
|
$t->rollBack();
|
|
return Model::getModelErrorInfo($model);
|
|
}
|
|
$earings = StoreEarnings::find()->where(['order_id' => $model->id, 'is_delete' => 0])->count();
|
|
if (!empty($earings)) {
|
|
$r = \Yii::$app->db->createCommand()->update(StoreEarnings::tableName(), ['is_delete' => 1], ['order_id' => $model->id, 'is_delete' => 0])->execute();
|
|
if (!$r) {
|
|
$t->rollBack();
|
|
return Model::asReturnError('操作失败');
|
|
}
|
|
}
|
|
}
|
|
$t->commit();
|
|
return Model::asReturnSuccess('操作成功');
|
|
}
|
|
|
|
//变更完成
|
|
public function finish()
|
|
{
|
|
if (!$this->validate()) {
|
|
return $this->getModelError();
|
|
}
|
|
$t = \Yii::$app->db->beginTransaction();
|
|
foreach ($this->ids as $item) {
|
|
$model = Order::findOne(['id' => $item, 'is_delete' => 0]);
|
|
if ($model == null) {
|
|
$t->rollBack();
|
|
return Model::asReturnError('该订单不存在或已被清理');
|
|
}
|
|
if ($model->status == 0) {
|
|
continue;
|
|
}
|
|
$model->status = 0;
|
|
$model->updated_at = time();
|
|
if (!$model->save()) {
|
|
$t->rollBack();
|
|
return Model::getModelErrorInfo($model);
|
|
}
|
|
}
|
|
$t->commit();
|
|
return Model::asReturnSuccess('操作成功');
|
|
}
|
|
|
|
//发起分账
|
|
public function multi()
|
|
{
|
|
if (!$this->validate()) {
|
|
return $this->getModelError();
|
|
}
|
|
$item = $this->ids[0];
|
|
if(empty($item)){
|
|
return Model::asReturnError('选择项不能为空');
|
|
}
|
|
|
|
$model = Order::findOne(['id' => $item, 'is_delete' => 0, 'is_pay' => 1, 'cancel_status' => 0]);
|
|
if ($model == null) {
|
|
return Model::asReturnError('该订单不存在或已被清理');
|
|
}
|
|
$paymentOrder = PaymentOrder::findOne(['order_no' => $model->order_no, 'is_pay' => 1, 'notify_status' => 1]);
|
|
if (empty($paymentOrder)) {
|
|
return Model::asReturnError('该订单支付数据不存在或已被清理');
|
|
}
|
|
if (empty($model->store_id)) {
|
|
return Model::asReturnError('该订单未选择门店!');
|
|
}
|
|
$store = Store::findOne(['id' => $model->store_id, 'is_delete' => 0]);
|
|
if (empty($store)) {
|
|
return Model::asReturnError("选择门店【{$model->store_id}】不存在或已被清理!");
|
|
}
|
|
$card_id = $store->card_id;
|
|
$earnings = StoreEarnings::findOne(['order_id' => $model->id, 'user_id' => $model->user_id, 'is_delete' => 0]);
|
|
|
|
if (empty($earnings) || empty($earnings->id) || empty($card_id) || empty($earnings->money)) {
|
|
return Model::asReturnError("请检查预收益是否存在且门店是否绑定银行卡!");
|
|
}
|
|
$param['id'] = $earnings->id;
|
|
$param['card_id'] = $card_id;
|
|
$param['money'] = $earnings->money;
|
|
$param['tranDate'] = date('Ymd', $model->pay_time);
|
|
$cardForm = new CardFrom();
|
|
//单次分账
|
|
$multi = $cardForm->psOrder($paymentOrder, $param);
|
|
if ($multi['code'] != 0) {
|
|
\Yii::info("银联单次分账-ERROR-{$paymentOrder->order_no}-主动发起-{$multi['msg']}",'union_pay');
|
|
return Model::asReturnError($multi['msg']);
|
|
}
|
|
if($earnings->status != 1){
|
|
$earnings->status = 1;
|
|
}
|
|
$earnings->card_id = $card_id;
|
|
if (!$earnings->save()) {
|
|
return Model::getModelErrorInfo($earnings);
|
|
}
|
|
//完结记录-psOrderFinish
|
|
/*
|
|
$meta2 = OrderUnionMeta::findOne(['payment_order_union_id' => $paymentOrder->payment_order_union_id, 'type' => 'psOrderFinish', 'desc' => 'SUCCESS', 'is_delete' => 0]);
|
|
if (empty($meta2)) {
|
|
$finish = $cardForm->psOrderFinish($paymentOrder);
|
|
if ($finish['code'] != 0) {
|
|
\Yii::info("银联分账完结-ERROR-{$paymentOrder->order_no}-主动发起-{$finish['msg']}",'union_pay');
|
|
if ($is_multi) {
|
|
if (!$earnings->save()) {
|
|
\Yii::info("银联分账完结-ERROR-{$paymentOrder->order_no}-主动发起-收益记录状态更新失败-触发多次分账",'union_pay');
|
|
return Model::getModelErrorInfo($earnings);
|
|
}
|
|
}
|
|
return Model::asReturnError($finish['msg']);
|
|
}
|
|
$earnings->status = 2;
|
|
if (!$earnings->save()) {
|
|
\Yii::info("银联分账完结-SUCCESS-{$paymentOrder->order_no}-主动发起-收益记录状态更新失败",'union_pay');
|
|
return Model::getModelErrorInfo($earnings);
|
|
}
|
|
}
|
|
*/
|
|
return Model::asReturnSuccess('操作成功');
|
|
}
|
|
|
|
} |