cxgj/modules/admin/models/mall/order/OrderActionForm.php
2023-11-27 09:45:13 +08:00

226 lines
7.9 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\components\YopointApi;
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\models\YopointNotify;
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;
}*/
if($model->plugin_sign == 'goods'){
// 商品订单
if(!empty($model->yopoint_notify_id)){
// 查找友朋回调接口
$find_yopoint = YopointNotify::findOne([
'id' => $model->yopoint_notify_id,
]);
if(!empty($find_yopoint->return_data)){
$obj = new YopointApi();
$json_de = json_decode($find_yopoint->return_data,true);
$obj->openDevCall($json_de['data']['NotifyUrl'],$json_de['data']['ReceiptNo'],$model->order_no,1);
}
}
}
$model->is_pay = 1;
$model->status = 0;
$model->seller_remark = "后台操作已完成";
$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('操作成功');
}
}