ComController.php 5.6 KB
<?php

namespace App\Http\Controllers\Bside;

use App\Enums\Common\Code;
use App\Helper\FormGlobalsoApi;
use App\Helper\Translate;
use App\Http\Logic\Bside\User\UserLogic;
use App\Http\Logic\Bside\User\UserLoginLogic;
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(){

        $currentDateTime = Carbon::now();
        $startTime = $currentDateTime->subMonth()->startOfMonth()->toDateString();
        // 获取上个月的结束时间
        $endTime = $currentDateTime->subMonth()->endOfMonth()->toDateString();
        $pv = DB::table('gl_count')
            ->where(['project_id'=>1])
            ->where('date','>=',$startTime.' 00:00:00')
            ->where('date','<=',$endTime.' 23:59:59')
            ->sum('pv_num');
        $this->response('success',Code::SUCCESS,$endTime);
    }

    /**
     * @remark :根据关键字生成链接
     * @name   :pubLink
     * @author :lyh
     * @method :post
     * @time   :2023/6/28 16:13
     */
    public function stringTranslation(){
        $str = Translate::tran($this->param['str'], 'en');
        $this->response('success',Code::SUCCESS,$str);
    }
}