AgencyDataOperationTrait.php 13.1 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * 自定义 操作
+-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Admin\Traits
 * @package   App\Admin\Traits
 * @author    Richer <yangzi1028@163.com>
 * @date      2020年4月11日,14:50:02
 * @copyright 2019-2020 Richer (http://www.Richer.com)
 * @license   http://www.Richer.com License
 * @link      http://www.Richer.com
 */
namespace App\Admin\Traits;

use App;
use App\Http\Controllers\Service\ImageController;
use Encore\Admin\Facades\Admin;
use Encore\Admin\Form;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;

/**
 * Trait AgencyDataOperationTrait
 *
 * @category  App\Admin\Traits
 * @package   App\Admin\Traits
 * @author    Richer <yangzi1028@163.com>
 * @date      2020年4月11日,14:50:02
 * @copyright 2019-2020 Richer (http://www.Richer.com)
 * @license   http://www.Richer.com License
 * @link      http://www.Richer.com
 */
trait AgencyDataOperationTrait
{
    /**
     * 提交至平台库
     *
     * @param Collection $collection
     * @param Request $request
     * @return bool
     */
    public function handleDataAndSubmitToPublicLib($collection, Request $request)
    {
        $model_parent = $collection->first();
        $data = [];
        foreach ($collection as $model) {
            // TODO 暂时不做批量
            // 获取已经存在平台库资源,但是别下架的资源
            $model_child = $model->child()->onlyTrashed()->first();

            if ($model_child) {
                $model_child->fill($model->toArray());
                $model_child->link_id = $model->id;
                $model_child->pid = $model->id;
                $model_child->category      = config('constants.COMMUNAL');
                $model_child->audited_status = config('constants.UNAUDITED');
                $model_child->submitted_at  = date('Y-m-d H:i:s');
                $model_child->submitted_by  = Admin::user()->id;
                $model_child->unshelved_status    = \Config::get('constants.SHELVED');
                $model_child->deleted_at    = null;
                $model_child->save();

//                //$child  = $model->replicate();
//                $child->id = $model_child->id;
//                $child->category      = config('constants.COMMUNAL');
//                $child->audited_status = config('constants.UNAUDITED');
//                $child->submitted_at  = date('Y-m-d H:i:s');
//                $child->submitted_by  = Admin::user()->id;
//                $child->deleted_at    = null;
//                $child->save();
            } else {
                if ($model->isSubmittedToPublic($model->child) === 0) {
                    $child  = $model->replicate();
                    $child->user_id         = $model->user_id;
                    $child->category        = config('constants.COMMUNAL');
                    $child->audited_status  = config('constants.UNAUDITED');
                    $child->submitted_at    = date('Y-m-d H:i:s');
                    $child->submitted_by    = Admin::user()->id;
                    $child->created_at      = $model->created_at;
                    $child->unshelved_status   = \Config::get('constants.SHELVED');

                    $child->link_id = $model->id;
                    $child->pid = $model->id;
                    $child->save();
//
//                $child['user_id'] = $model->user_id;
//                $child['supplier_id'] = $model->supplier_id;
//                $child['agent_id'] = $model->agent_id;
//                $child['group_id'] = $model->group_id;
//                $child['user_model'] = $model->user_model;
//                $child['title'] = $model->title;
//                $child['price'] = $model->price;
//                $child['purchase_price'] = $model->purchase_price;
//                $child['cover_image'] = $model->cover_image;
//                $child['images'] = my_json_encode($model->images);
//                $child['category'] = config('constants.COMMUNAL');
//                $child['audited_status'] = config('constants.UNAUDITED');
//                $child['submitted_at'] = date('Y-m-d H:i:s');
//                $child['submitted_by'] = Admin::user()->id;
//                $child['created_at'] = $model->created_at;
//                $child['link_id'] = $model->id;
//                $data[] = $child;
                }
                $model->unshelved_status = config('constants.SHELVED');
                // $model->save();

            }
        }
        if ($data) {
            \DB::table($model_parent->getTable())->insert($data);
        }

        return true;
    }

    /**
     * 添加到公司库
     *
     * @param Collection $collection
     * @param Request $request
     * @return bool
     */
    public function handleDataAndAddToAgencyLib($collection, Request $request)
    {
        $model_parent = $collection->first();
        $data = [];
        foreach ($collection as $model) {
            // TODO 暂时不做批量
            // 获取已经存在平台库资源,但是别下架的资源
            $user = Admin::user();
            $model_child = $model->where('pid', $model->id)->where('supplier_id', $user->supplier_id)->onlyTrashed()->first();

            if ($model_child) {
                $model_child->fill($model->toArray());
                $model_child->link_id = $model->father->id;
                $model_child->pid = $model->id;
                $model_child->supplier_id   = $user->supplier_id;
                $model_child->group_id         = $user->group_id;
                $model_child->agent_id         = $user->agent_id;
                $model_child->user_id       = $user->id;
                $model_child->category      = config('constants.PARTIAL');
                $model_child->audited_status = config('constants.NOT_SUBMITTED_FOR_AUDITED');
                $model_child->unshelved_status    = \Config::get('constants.SHELVED');
                $model_child->deleted_at    = null;
                $model_child->save();

            } else {
                //尚未添加到
                if ($model->isAddToAgency($model->child) === 0) {
                    $child  = $model->replicate();
                    $child->user_id         = $user->id;
                    $child->supplier_id     = $user->supplier->id;
                    $child->group_id        = $user->group_id;
                    $child->agent_id        = $user->agent_id;
                    $child->category        = config('constants.PARTIAL');
                    $child->audited_status  = config('constants.NOT_SUBMITTED_FOR_AUDITED');
                    $child->created_at      = $model->created_at;
                    $child->unshelved_status = config('constants.SHELVED');

                    $child->link_id = optional($model->father)->id ?? 0;
                    $child->pid = $model->id;
                    $child->save();

                }
            }
        }
        if ($data) {
            \DB::table($model_parent->getTable())->insert($data);
        }

        return true;
    }

    /**
     * 移除平台库采购到公司库
     *
     * @param Collection $collection
     * @param Request $request
     * @return bool
     */
    public function handleDataAndRemoveFromAgencyLib($collection, Request $request)
    {
        foreach ($collection as $model) {
            // TODO 暂时不做批量
            $model->unshelved_status     = config('constants.UNSHELVED');
            $model->save();
            //删除
            $model->delete();
        }

        return true;
    }

    /**
     * 下架资源
     *
     * @param Collection $collection
     * @param Request $request
     * @return bool
     */
    public function handleDataAndOffine($collection, Request $request)
    {
        foreach ($collection as $model) {
            if ($model) {
                // TODO 暂时不做批量
                $user = Admin::user();
                switch ($model->category) {
                    case config('constants.PARTIAL'):// 当前下架公司库
                        $model->unshelved_status = config('constants.UNSHELVED');
                        $model->unshelved_opinion = request('_input');
                        $model->unshelved_at = date('Y-m-d H:i:s');
                        $model->unshelved_by = $user ? $user->id : 0;
                        $model->is_share = config('constants.NOT_SHARED');
                        $model->save();
                        //提交到平台的镜像删除
                        $child = $model->child;
                        if ($child) {
                            $child->unshelved_status = config('constants.UNSHELVED');
                            $child->unshelved_opinion = request('_input');
                            $child->unshelved_at = date('Y-m-d H:i:s');
                            $child->unshelved_by = $user ? $user->id : 0;
                            $child->is_share = config('constants.NOT_SHARED');
                            $child->save();
                            //从平台采购的公司镜像删除
                            $children = $child->children;
                            if ($children) {
                                foreach ($children as $chd) {
                                    $chd->unshelved_status = config('constants.UNSHELVED');
                                    $chd->unshelved_opinion = request('input_key');
                                    $chd->unshelved_at = date('Y-m-d H:i:s');
                                    $chd->unshelved_by = $user ? $user->id : 0;
                                    $chd->is_share = config('constants.NOT_SHARED');
                                    $chd->save();
                                    // 将当前从平台库采购的数据软删除
                                    $chd->delete();
                                }
                            }
                            // 将当前平台库数据软删除
                            $child->delete();
                        }

                        break;
                    case config('constants.COMMUNAL'):// 当前下架平台库
                        //从平台采购的公司镜像删除
                        $children = $model->children;
                        if ($children) {
                            foreach ($children as $child) {
                                $child->unshelved_status = config('constants.UNSHELVED');
                                $child->unshelved_opinion = request('_input');
                                $child->unshelved_at = date('Y-m-d H:i:s');
                                $child->unshelved_by = $user ? $user->id : 0;
                                $child->is_share = config('constants.NOT_SHARED');
                                $child->save();
                                // 将当前从平台库采购的数据软删除
                                $child->delete();
                            }
                        }

                        // 将公司库资源状态进行修改
                        $father = $model->father;
                        if ($father) {
                            $father->unshelved_status = config('constants.UNSHELVED');
                            $father->unshelved_opinion = request('_input');
                            $father->unshelved_at = date('Y-m-d H:i:s');
                            $father->unshelved_by = $user ? $user->id : 0;
                            $father->save();
                            // 将当前平台库数据软删除
                            $model->delete();
                        } else {
                            $model->unshelved_status = config('constants.UNSHELVED');
                            $model->unshelved_opinion = request('_input');
                            $model->unshelved_at = date('Y-m-d H:i:s');
                            $model->unshelved_by = $user ? $user->id : 0;
                            $model->save();
                        }
                        break;
                }
            }
        }
        return true;
    }


    /**
     * 原始资源修改后同步更新相关镜像
     *
     * @param $model
     *
     * @return void
     */
    public function handleDataAndSyncImage($model)
    {
        //平台镜像
        $child = $model->child;
        if ($child) {
            //更新平台库镜像
            $child->title = $model->title;
            $child->price = $model->price;
            $child->purchase_price = $model->purchase_price;
            $child->save();
            //更新平台库采购的公司的镜像
            $children = $child->children;
            if ($children) {
                foreach ($children as $chd) {
                    $chd->title = $model->title;
                    $chd->price = $model->price;
                    $chd->purchase_price = $model->purchase_price;
                    $chd->save();
                }
            }
        }
    }
}