ComController.php 7.1 KB
<?php

namespace App\Http\Controllers\Bside;

use App\Enums\Common\Code;
use App\Helper\Common;
use App\Helper\FormGlobalsoApi;
use App\Http\Logic\Bside\User\UserLogic;
use App\Http\Logic\Bside\User\UserLoginLogic;
use App\Models\Project\DeployBuild;
use App\Models\Project\Project;
use App\Models\Project\Project as ProjectModel;
use App\Models\SmsLog;
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;
use Illuminate\Support\Facades\DB;
use Mrgoon\AliSms\AliSms;

/***
 * 当前为公共类  所有方法均不需要验证登录token
 */
class ComController extends BaseController
{
    /**
     * @name :管理员登录
     * @author :liyuhang
     * @method
     */
    public function login(){
        $this->request->validate([
            'mobile'=>['required', 'regex:/^1[3-9]\d{9}$/'],
            'password'=>['required'],
        ],[
            'mobile.required'=>'电话号码必须填写',
            'password.required'=>'内容必须填写',
            'mobile.regex' => '请输入正确的手机号码',
        ]);
        $userLogic = new UserLoginLogic();
        $res = $userLogic->login();
        $this->response('请求成功',Code::SUCCESS,$res);
    }

    /**
     * @name :获取当前用户权限菜单列表
     * @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 :获取当前项目详情
     * @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 :登录用户编辑资料/修改密码
     * @author :liyuhang
     * @method
     */
    public function edit_info(){
        $this->request->validate([
            'password'=>['required'],
            'name'=>['required'],
        ],[
            'password.required'=>'密码必须填写',
            'name.required'=>'名称必须填写',
        ]);
        $userLogic = new UserLogic();
        $this->param['id'] = $this->uid;
        $userLogic->edits($this->param);
        $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');
    }

    /**
     * 发送登录短信
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function sendLoginSms(Request $request)
    {
        $this->request->validate([
            'mobile'=>['required', 'regex:/^1[3-9]\d{9}$/'],
        ],[
            'mobile.required' => '手机号码不能为空',
            'mobile.regex' => '请输入正确的手机号码',
        ]);
        $mobile = $request->input('mobile');
        $user = UserModel::where(['mobile' => $mobile])->first();
        if (empty($user)) {
            $this->response('请输入正确的手机号码!', Code::USER_LOGIN_ERROE);
        }
        $last_sms = SmsLog::getLastLog($mobile, SmsLog::TYPE_LOGIN);
        if ($last_sms && $last_sms->use = SmsLog::USE_USABLE && time() - strtotime($last_sms->created_at) < 60) {
            $this->response('请不要重复发送短信!', Code::USER_LOGIN_ERROE);
        }
        $template = config('aliyunsms.login_sms_temp');
        $code['code'] = rand(100000,999999);
        $ali_sms = new AliSms();
        $send = $ali_sms->sendSms(strval($mobile), $template, $code);
        if (empty($send->Code) && $send->Code != 'OK') {
            $this->response('发送失败, 请稍后重试!', Code::USER_LOGIN_ERROE);
        }
        SmsLog::createLog($mobile, $code['code']);
        $this->response('success');
    }

    public function ceshi(){
        $deployModel = new DeployBuild();
        $list = $deployModel->list();
        $data = [];
        $yesterday = Carbon::yesterday()->toDateString();
        foreach ($list as $v){
            $v['test_domain'] = 'https://demomark.globalso.com/';
            $arr = [];
            $arr['pv_num'] = DB::table('gl_customer_visit_item')->whereDate('updated_date', $yesterday)->where('domain',$v['test_domain'])->count();
            $arr['ip_num'] = DB::table('gl_customer_visit')->whereDate('updated_date', $yesterday)->where('domain',$v['test_domain'])->count();
            $inquiry_list = (new FormGlobalsoApi())->getInquiryList($v['test_domain'],'',1,100000000);
            if($inquiry_list['status'] == 400){
                $arr['inquiry_num'] = 0;
            }else{
                $arr['inquiry_num'] = $inquiry_list['data']['total'];
                //询盘国家统计
                $countryData = $inquiry_list['data']['data'];
                $countryArr = [];
                foreach ($countryData as $v1){
                    if(isset($countryArr[$v1['country']])){
                        $countryArr[$v1['country']]++;
                    }else{
                        $countryArr[$v1['country']] = 0;
                    }
                }
                arsort($countryArr);

                $top20 = array_slice($countryArr, 0, 20, true);

                $arr['country'] = json_encode($top20);
                var_dump(json_decode($arr['country']));
                die();
            }
            $arr['date'] = $yesterday;
            $rank_info = DB::table('gl_rank_data')->where(['updated_date'=>$yesterday,'lang'=>''])->select(['compliance_day'])->first();
            if(empty($rank_info)){
                $arr['compliance_day'] = 0;
            }else{
                $arr['compliance_day'] = $rank_info->compliance_day;
            }
            $arr['service_day'] = $v['service_duration'] - Common::getDaysToTargetDate($v['created_at']);
            $arr['project_id'] = $v['project_id'];
            $arr['created_at'] = date('Y-m-d H:i:s');
            $arr['updated_at'] = date('Y-m-d H:i:s');
            $data[] = $arr;
        }
        //判断数据是否存在
        DB::table('gl_count')->insert($data);
    }
}