GeoController.php 3.6 KB
<?php
/**
 * Created by PhpStorm.
 * User: zhl
 * Date: 2025/10/23
 * Time: 10:23
 */
namespace App\Http\Controllers\Aside\Geo;

use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Geo\GeoLogic;
use App\Models\Geo\GeoConf;
use App\Models\Geo\GeoConfirm;
use App\Models\Manage\ManageHr;
use App\Models\Project\KeywordPrefix;
use App\Models\Project\Project;
use App\Models\ProjectAssociation\ProjectAssociation;
use Illuminate\Http\Request;

/**
 * Class GeoController
 * @package App\Http\Controllers\Aside\Geo
 */
class GeoController extends BaseController
{
    public function __construct(){
        parent::__construct();
        $this->logic = new GeoLogic();
    }

    /**
     * 获取GEO相关配置
     * @param Request $request
     */
    public function getConfig()
    {
        $this->request->validate([
            'project_id' => 'required',
        ], [
            'project_id.required' => '项目ID不能为空',
        ]);
        $data = $this->logic->getCongInfo($this->param['project_id']);
        $this->response('success', Code::SUCCESS, $data);
    }

    /**
     * 保存GEO配置
     * TODO 单独保存GEO开启状态, 达标数量
     * @param Request $request
     * @throws \App\Exceptions\AsideGlobalException
     */
    public function saveConfig()
    {
        $this->request->validate([
            'project_id' => 'required',
            'manager_id' => 'nullable|integer',
            'company' => 'nullable|max:200',
            'brand' => 'nullable|max:200',
            'description' => 'nullable|max:500',
        ], [
            'project_id.required' => '项目ID不能为空',
            'manager_id.integer' => '管理员参数非法',
            'company.max' => '公司名称不能超过200个字符',
            'brand.max' => '品牌名不能超过200个字符',
            'description.max' => '描述不能超过500个字符',
        ]);
        $data = $this->logic->saveConfig($this->param);
        $this->response('success', Code::SUCCESS, $data);
    }


    /**
     * 保存确认数据, 并推送微信群
     * @param Request $request
     * @throws \App\Exceptions\AsideGlobalException
     */
    public function saveConfirmContent()
    {
        $this->request->validate([
            'project_id' => 'required',
            'type' => 'required|integer',
            'content' => 'required',
            'max_num' => 'required',
        ], [
            'project_id.required' => '项目ID不能为空',
            'type.required' => '确定数据类型不能为空',
            'type.integer' => '确定数据类型不正确',
            'content.required' => '确定数据不能为空',
            'max_num.required' => '最大确认数量不能为空',
        ]);
        try {
            $data = GeoConfirm::saveContent($this->param['project_id'], $this->param['type'], $this->param['content'], $this->param['max_num']);
            $friend = ProjectAssociation::where(['project_id' => $this->param['project_id']])->first();
            if (empty($friend)){
                $this->fail('项目未绑定微信群, 推送消息失败!');
            }
            $data = GeoConfirm::sendConfirmMessage($data->id, $friend->friend_id);
            $this->response('success', Code::SUCCESS, $data);
        } catch (\Exception $e) {
            $this->fail('操作失败, error:' . $e->getMessage());
        }
    }

    /**
     * OA后台管理员,保存确认数据
     * 客户可以进行确认, OA后台也可以进行确认,以及修改
     * @param Request $request
     */
    public function saveConfirmData(Request $request)
    {

    }
}