作者 Your Name

gx

... ... @@ -4,7 +4,8 @@ namespace App\Http\Controllers\Bside;
use App\Enums\Common\Code;
use App\Http\Controllers\Controller;
use App\Utils\EncryptUtils;
use App\Models\ProjectMenu;
use App\Models\ProjectRole as ProjectRoleModel;
use \Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Http\Exceptions\HttpResponseException;
... ... @@ -33,6 +34,7 @@ class BaseController extends Controller
$this->token = $this->request->header('token');
$this->get_param();
$this->auth_token();
$this->auth_role();
}
/**
... ... @@ -43,40 +45,20 @@ class BaseController extends Controller
*/
public function auth_token(){
$info = Cache::get($this->token);
if(isset($info) && !empty($info)){
$this->user = $info;
$this->uid = $info['id'];
//操作权限设置
$projectRoleModel = new ProjectRoleModel();
$role_info = $projectRoleModel->read(['id'=>$this->user['role_id']]);
//获取当前操作的控制器与方法
$action = $this->request->route()->getAction();
//查询当前用户是否拥有权限操作
$projectMenuModel = new ProjectMenu();
$menu_id = $projectMenuModel->read(['action'=>$action['as']],['id']);
if($menu_id !== false && strpos($role_info['role_menu'], $menu_id['id']) === false){
$this->response('拦截',Code::USER_PERMISSION_ERROE);
}
}
/**
* 成功返回
* @param array $data
* @param string $code
* @param bool $objectData
* @return JsonResponse
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
*/
function success(array $data = [], string $code = Code::SUCCESS, bool $objectData = false): JsonResponse
{
if ($objectData) {
$data = (object)$data;
}
$code = Code::fromValue($code);
$response = [
'code' => $code->value,
'data' => $data,
'msg' => $code->description,
];
//加密-返回数据
if (config('app.params_encrypt')) {
$k = config('app.params_encrypt_key');
$i = config('app.params_encrypt_iv');
$response = [
'p' => (new EncryptUtils())->openssl_en($response, $k, $i)];
}
return response()->json($response,200,$this->header);
}
/**
* @name 参数过滤
... ...
... ... @@ -58,7 +58,7 @@ class ComController extends BaseController
$info = $projectRoleModel->read(['id'=>$this->user['role_id']]);
$projectMenuModel = new ProjectMenuModel();
$info['role_menu'] = trim($info['role_menu'],',');
$lists = $this->where(['status'=>0])->whereIn('id',explode(',',$info['role_menu']))->get();
$lists = $this->where(['status'=>0,'is_role'=>0])->whereIn('id',explode(',',$info['role_menu']))->get();
$lists = $lists->toArray();
$menu = array();
foreach ($lists as $k => $v){
... ... @@ -103,4 +103,24 @@ class ComController extends BaseController
}
$this->response('success',Code::SUCCESS,[$info]);
}
/**
* @name :登录用户编辑资料/修改密码
* @return void
* @author :liyuhang
* @method
*/
public function edit_info(){
}
/**
* @name :退出登录
* @return void
* @author :liyuhang
* @method :post
*/
public function logout(){
}
}
... ...
<?php
namespace App\Http\Controllers\Bside;
class ProjectMenuController extends BaseController
{
/**
* @name :添加角色时获取菜单列表
* @return void
* @author :liyuhang
* @method
*/
public function lists(){
}
}
... ...
... ... @@ -25,7 +25,6 @@ class ProjectRoleController extends BaseController
$this->allCount = $projectRoleModel->allCount;
$this->result($lists);
}
/**
* @name :添加角色
* @return void
... ...
... ... @@ -20,7 +20,8 @@ class UserController extends BaseController
public function lists(){
//TODO::搜索参数处理
$userModel = new UserModel();
$lists = $userModel->lists($this->map,$this->p,$this->row,$this->order,['id','name','mobile']);
$this->map['project_id'] = $this->user['project_id'];
$lists = $userModel->lists($this->map,$this->p,$this->row,$this->order,['id','name','mobile','created_at']);
if(empty($lists)){
$this->response('请求失败',Code::USER_ERROR,[]);
}
... ... @@ -39,6 +40,7 @@ class UserController extends BaseController
'mobile'=>'required|string|max:11',
'password'=>'required|string|min:5',
'name'=>'required|max:20',
'role_id'=>'required'
];
//验证的提示信息
$message = [
... ... @@ -50,13 +52,15 @@ class UserController extends BaseController
'password.min' => '密码不小于5字符.',
'name.required'=>'名称必须填写',
'name.min' => '名称不小于5字符.',
'role_id.required'=>'角色必须填写',
];
$validate = Validator::make($this->param, $rules, $message);
if($validate->fails()){
return $this->response($validate->errors()->first(),Code::USER_LOGIN_ERROE,$this->param);
}
$userLogic = new UserLogic();
$rs = $userLogic->add($this->param);
$userModel = new UserModel();
$this->param['project_id'] = $this->user['project_id'];
$rs = $userModel->adds($this->param);
if($rs === false){
$this->response('当前添加用户已存在或参数错误,添加失败',Code::USER_REGISTER_ERROE,[]);
}
... ... @@ -92,8 +96,14 @@ class UserController extends BaseController
if($validate->fails()){
return $this->response($validate->errors()->first(),Code::USER_PARAMS_ERROE,$this->param);
}
$userLogic = new UserLogic();
$rs = $userLogic->edits($this->param);
$userModel = new UserModel();
//TODO::查询当前手机号码是否重复
$info = $userModel->where('id','<>',$this->param['id'])
->where(['mobile'=>$this->param['mobile']])->first();
if(!empty($info)){
$this->response('当前编辑的手机号码已存在',Code::USER_PARAMS_ERROE);
}
$rs = $userModel->edits($this->param);
if($rs === false){
$this->response('参数错误或其他服务器原因,编辑失败',Code::USER_ERROR,[]);
}
... ...
... ... @@ -17,22 +17,7 @@ class UserLogic extends BaseLogic
return $lists;
}
//新增用户
public function add($param){
$userModel = new UserModel();
//验证当前用户是否存在
$info = $userModel->read(['mobile'=>$param['mobile']]);
if(!empty($info)){
return false;
}
//密码加密
$param['password'] = base64_encode(md5($param['password']));
$rs = $userModel->add($param);
if($rs === false){
return false;
}
return true;
}
/**
* @param $param
... ...
... ... @@ -9,6 +9,8 @@ class Base extends Model
{
protected $table = '';
public $allCount = 0;
//自动维护create_at创建时间 updated_at修改时间
public $timestamps = true;
//统一设置
protected $casts = [
'created_at' => 'datetime:Y-m-d H:i:s',
... ... @@ -74,6 +76,8 @@ class Base extends Model
* @method post
*/
public function add($data){
$data['created_at'] = date('Y-m-d H:i:s');
$data['updated_at'] = date('Y-m-d H:i:s');
return $this->insert($data);
}
... ... @@ -84,9 +88,7 @@ class Base extends Model
* @method post
*/
public function edit($data,$condition){
if(isset($data['id']) && !empty($data['id'])){
unset($data['id']);
}
$data['updated_at'] = date('Y-m-d H:i:s');
return $this->where($condition)->update($data);
}
... ...
... ... @@ -4,6 +4,7 @@ namespace App\Models;
//use Illuminate\Contracts\Auth\MustVerifyEmail;
use App\Models\ProjectRole as ProjectRoleModel;
use App\Models\User as UserModel;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
//use Illuminate\Foundation\Auth\User as Authenticatable;
... ... @@ -16,7 +17,8 @@ class User extends Base
use HasApiTokens, HasFactory, Notifiable;
protected $table = 'gl_project_user';
//自动维护create_at创建时间 updated_at修改时间
public $timestamps = true;
/**
* The attributes that are mass assignable.
*
... ... @@ -34,7 +36,7 @@ class User extends Base
* @var array<int, string>
*/
protected $hidden = [
'password',
// 'password',
'remember_token',
];
... ... @@ -88,4 +90,44 @@ class User extends Base
}
return $info;
}
//新增用户
public function adds($param){
//验证当前用户是否存在
$info = $this->read(['mobile'=>$param['mobile']]);
if(!empty($info)){
return false;
}
//密码加密
$param['password'] = base64_encode(md5($param['password']));
$rs = $this->add($param);
if($rs === false){
return false;
}
return true;
}
/**
* @param $param
* @name :编辑管理员
* @return bool
* @author :liyuhang
* @method
*/
public function edits($param){
//查看密码是否修改
$info = $this->read(['id'=>$param['id']]);
if($param['password'] == $info['password']){
unset($param['password']);
}
//密码加密
$param['password'] = base64_encode(md5($param['password']));
$rs = $this->edit($param,['id'=>$param['id']]);
if($rs === false){
return false;
}
//清空当前用户登录缓存
Cache::pull($info['token']);
return true;
}
}
... ...