ComController.php 5.8 KB
<?php

namespace App\Http\Controllers\Bside;

use App\Enums\Common\Code;
use App\Helper\AyrShare as AyrShareHelper;
use App\Helper\Country;
use App\Models\AyrShare\AyrRelease as AyrReleaseModel;
use App\Models\AyrShare\AyrShare as AyrShareModel;
use App\Models\Project\Project;
use App\Models\Project\Project as ProjectModel;
use App\Models\User\ProjectMenu as ProjectMenuModel;
use App\Models\User\ProjectRole as ProjectRoleModel;
use App\Models\User\User as UserModel;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;

/***
 * 当前为公共类  所有方法均不需要验证登录token
 */
class ComController extends BaseController
{
    /**
     * @name :管理员登录
     * @return void
     * @author :liyuhang
     * @method
     */
    public function login(){
        $this->request->validate([
            'mobile'=>['required'],
            'password'=>['required'],
        ],[
            'mobile.required'=>'电话号码必须填写',
            'password.required'=>'内容必须填写',
            'mobile.max'   =>  'mobile不大于12字符.',
        ]);
        $userModel = new UserModel();
        $res = $userModel->login($this->param);
        if($res === false){
            $this->response('当前用户不存在或者被禁用,登录失败',Code::USER_ERROR,[]);
        }
        $this->response('请求成功',Code::SUCCESS,$res);
    }

    /**
     * @name :获取当前用户权限菜单列表
     * @return void
     * @author :liyuhang
     * @method
     */
    public function get_menu(){
        //根据当前登录用户角色返回用户菜单列表
        $projectRoleModel = new ProjectRoleModel();
        $info = $projectRoleModel->read(['id'=>$this->user['role_id']]);
        $projectMenuModel = new ProjectMenuModel();
        $info['role_menu'] = trim($info['role_menu'],',');
        $lists = $projectMenuModel->where(['status'=>0,'is_role'=>0])->whereIn('id',explode(',',$info['role_menu']))->get();
        $lists = $lists->toArray();
        $menu = array();
        foreach ($lists as $k => $v){
            $v = (array)$v;
            if ($v['pid'] == 0) {
                $v['sub'] = _get_child($v['id'], $lists);
                $menu[]   = $v;
            }
        }
        $this->response('当前用户菜单列表',Code::SUCCESS,$menu);
    }

    /**
     * @name :获取当前项目详情
     * @return void
     * @author :liyuhang
     * @method
     */
    public function get_project(ProjectModel $projectModel){
        $info = $projectModel->read(['id'=>$this->user['project_id']]);
        if(empty($info)){
            $this->response('error',Code::USER_ERROR);
        }
        $this->response('success',Code::SUCCESS,$info);
    }

    /**
     * @name :登录用户编辑资料/修改密码
     * @return void
     * @author :liyuhang
     * @method
     */
    public function edit_info(){
        $this->request->validate([
            'password'=>['required'],
            'name'=>['required'],
        ],[
            'password.required'=>'密码必须填写',
            'name.required'=>'名称必须填写',
        ]);
        $userModel = new UserModel();
        $this->param['id'] = $this->uid;
        $rs = $userModel->edits($this->param);
        if($rs === false){
            $this->response('参数错误或其他服务器原因,编辑失败',Code::USER_ERROR);
        }
        $this->response('编辑成功');
    }

    /**
     * @name :退出登录
     * @return void
     * @author :liyuhang
     * @method :post
     */
    public function logout(){
        $rs = Cache::pull($this->token);
        if($rs === false){
            $this->response('error',Code::USER_ERROR);
        }
        $this->response('success');
    }

//    /**
//     * @name   :(测试接口)ceShi
//     * @author :lyh
//     * @method :post
//     * @time   :2023/5/19 10:03
//     */
//    public function ceShi(){
//        $country = new Country();
//        return $country->set_country();
//    }

    /**
     * @name   : 检测用户是否无操作记录
     * @author :lyh
     * @method :post
     * @time   :2023/5/12 14:55
     */
    protected function ceShi(){
        //获取所有ayr_share用户
        $ayr_share_model = new AyrShareModel();
        $ayr_share_list = $ayr_share_model->list();
        foreach ($ayr_share_list as $k => $v){
            //查询当前用户是否有未推送的博文
            $ayr_release = new AyrReleaseModel();
            $release_info = $ayr_release->read(['schedule_date'=>['>',date('Y-m-d H:i:s',time())],'share_id'=>$v['id']]);
            //有推文时,直接跳出循环
            if($release_info !== false){
                continue;
            }
            //查看用户是否在一周内有发送博客
            $start_at = Carbon::now()->modify('-7 days')->toDateString();
            $end_at = Carbon::now()->toDateString();
            $release_info = $ayr_release->read(['created_at'=>['between',[$start_at,$end_at]]]);
            //有发送博文,则跳出循环
            if($release_info  == false){
                continue;
            }
            //删除用户第三方配置
            $ayr_share_helper = new AyrShareHelper();
            $data_profiles = [
                'title'=>$v['title'],
                'profileKey'=>$v['profile_key']
            ];
            $res = $ayr_share_helper->deleted_profiles($data_profiles);
            if($res['status'] == 'fail'){
                $this->error++;
                continue;
            }
            //更新数据库
            $data = [
                'title'=>null,
                'bind_plat_from'=>null,
                'profile_key'=>null,
                'ref_id'=>null,
            ];
            $res = $ayr_share_model->edit($data,['id'=>$v['id']]);
            if($res == false){
                $this->error++;
            }
        }
        return $this->error;
    }

}