ProjectAssociationController.php 4.1 KB
<?php

namespace App\Http\Controllers\Aside\ProjectAssociation;

use App\Enums\Common\Code;
use App\Exceptions\BsideGlobalException;
use App\Http\Controllers\Bside\BaseController;
use App\Models\ProjectAssociation\ProjectAssociation;
use App\Services\Aside\ProjectAssociation\ProjectAssociationServices;

class ProjectAssociationController extends BaseController
{

    /**
     * V6与AICC数据关联
     * @return void
     * @throws BsideGlobalException
     */
    public function save()
    {
        $project_id = $this->param['project_id'] ?? 0;
        if (empty($project_id)) {
            $this->response('请选择项目!', 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->response('请选择要绑定的AICC用户!', Code::USER_PARAMS_ERROE);
        }
        $friend_id = (int)request()->post('friend_id', 0);
        if (empty($friend_id) && $status) {
            $this->response('请选择要绑定的AICC用户列表!', Code::USER_PARAMS_ERROE);
        }
        $app       = (int)request()->post('app', ProjectAssociation::ENTERPRISE_WECHAT);
        $app       = ProjectAssociation::getApplicationID($app);
        $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', 'app');
        ProjectAssociationServices::getInstance()->save($data);
        $this->response('绑定成功');
    }

    /**
     * 获取aicc用户列表 并返回绑定的数据
     * @return void
     */
    public function check()
    {
        $project_id = $this->param['project_id'] ?? 0;
        if (empty($project_id)) {
            $this->response('请输入项目信息!', Code::SERVER_ERROR);
        }
        // 项目绑定状态
        $app    = (int)request()->input('app', ProjectAssociation::ENTERPRISE_WECHAT);
        $app    = ProjectAssociation::getApplicationID($app);
        $status = request()->input('status');
        // 重载redis缓存
        $cache = request()->input('cache');
        if (isset($status)) {
            $status = (int)$status ? ProjectAssociation::STATUS_NORMAL : ProjectAssociation::STATUS_DISABLED;
        }
        $isRes = ProjectAssociationServices::getInstance()->normal($project_id, $app);
        // 当数据不存在时并开启状态,自动添加一条数据
        if (is_null($isRes) && (!is_null($status) && $status)) {
            $value = ProjectAssociationServices::getInstance()->saveProject($project_id, $status, $app);
            if (empty($value['bool'])) {
                // 保存数据失败
                $this->response('绑定AICC数据失败!', Code::SERVER_ERROR);
            }
            $isRes = $value['isRes'];
        } // 关闭状态
        elseif (!is_null($isRes) && (!is_null($status) && empty($status))) {
            $bool = ProjectAssociationServices::getInstance()->closedState($isRes, $status);
            if ($bool) {
                // 关闭aicc绑定成功
                $this->response('关闭aicc绑定 - 成功!');
            } else {
                // 关闭aicc绑定失败
                $this->response('关闭aicc绑定 - 失败!');
            }
        }
        if (is_null($isRes)) {
            // 请开启AICC绑定
            $this->response('success', Code::SERVER_ERROR);
        }
        $cache  = isset($cache);

        try {
            $search = request()->input('search');
//        $result = ProjectAssociationServices::getInstance()->getAiccWechatLists($isRes, $app, $cache);
            $result = ProjectAssociationServices::getInstance()->getWorkChatRoomList($search, $isRes->friend_id);
        }catch (\Exception $e){
            $result = [];
        }

        $result['info'] = [
            'friend_id' => $isRes->friend_id ?? 0
        ];
        $this->response('success', Code::SUCCESS, $result);
    }
}