ProjectAssociationController.php 3.3 KB
<?php

namespace App\Http\Controllers\Bside\ProjectAssociation;

use App\Enums\Common\Code;
use App\Exceptions\BsideGlobalException;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Aside\ProjectAssociation\ProjectAssociationLogic;
use App\Models\ProjectAssociation\ProjectAssociation;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;

class ProjectAssociationController extends BaseController
{
    private $ProjectAssociationLogic;

    public function __construct(Request $request)
    {
        $this->ProjectAssociationLogic = new ProjectAssociationLogic();
        parent::__construct($request);
    }

    /**
     * V6与AICC数据关联
     * @return void
     * @throws BsideGlobalException
     */
    public function saveWeChatData()
    {
        $project_id = (int)request()->post('project_id', 0);
        if (empty($project_id)) {
            $this->fail('请选择项目!', Code::USER_PARAMS_ERROE);
        }
        $status = (bool)request()->post('status', 1); # 1 - 正常, 0 - 禁用

        $user_id = (int)env('AICC_WECHAT_USER_ID') ?? 0;
        if (empty($user_id) && $status) {
            $this->fail('请选择要绑定的AICC用户!', Code::USER_PARAMS_ERROE);
        }
        $friend_id = (int)request()->post('friend_id', 0);
        if (empty($friend_id) && $status) {
            $this->fail('请选择要绑定的AICC用户列表!', Code::USER_PARAMS_ERROE);
        }
        $nickname  = request()->post('nickname', '');
        $user_name = request()->post('user_name', '');
        $image     = request()->post('image', '');
        $data      = compact('project_id', 'user_id', 'friend_id', 'nickname', 'user_name', 'image');
        $this->ProjectAssociationLogic->saveWeChatData($data);
        $this->response('success');
    }

    /**
     * 获取aicc用户列表 并返回绑定的数据
     * @return void
     */
    public function check()
    {
        $project_id = (int)request()->input('project_id', 0);
        $status     = request()->input('status');
        // 重载redis缓存
        $cache = request()->input('cache');
        if (isset($status)) {
            $status = (int)$status ? ProjectAssociation::STATUS_NORMAL : ProjectAssociation::STATUS_DISABLED;
        }
        $isRes = $this->ProjectAssociationLogic->normal($project_id);
        // 当数据不存在时并开启状态,自动添加一条数据
        if (is_null($isRes) && (!is_null($status) && $status)) {
            $bool = $this->ProjectAssociationLogic->saveProject($project_id, $status);
            if (empty($bool)) {
                // 保存数据失败
                $this->response('error', Code::SERVER_ERROR);
            }
        } // 关闭状态
        elseif (!is_null($isRes) && (!is_null($status) && empty($status))) {
            $res = $this->ProjectAssociationLogic->closedState($isRes, $status);
            $this->response($res['message'], $res['code']);
        } elseif (is_null($isRes)) {
            // 请开启AICC绑定
            $this->response('error', Code::SERVER_ERROR);
        }
        $cache  = isset($cache);
        $result = $this->ProjectAssociationLogic->getAiccWechatLists($isRes, $cache);
        $this->response('success', Code::SUCCESS, $result);
    }
}