作者 Your Name

Merge branch 'dev' of http://47.244.231.31:8099/zhl/globalso-v6 into dev

... ... @@ -35,6 +35,7 @@ class BaseController extends Controller
$info = Cache::get($this->token);
$this->user = $info;
$this->uid = $info['id'];
$this->param['project_id'] = $this->user['project_id'];
}else{
return response(['code'=>Code::USER_ERROR,'msg'=>'当前用户未登录']);
}
... ...
... ... @@ -37,7 +37,7 @@ class ComController extends BaseController
];
$validate = Validator::make($this->param, $rules, $message);
if($validate->errors()->first()){
return $this->response($validate->errors()->first(),Code::USER_ERROR,$this->param);
return $this->response($validate->errors()->first(),Code::USER_ERROR);
}
$userModel = new UserModel();
Cache::add('1345951a03fd1916a53c48c16b2fdecb','23423423423423');
... ... @@ -109,7 +109,7 @@ class ComController extends BaseController
];
$validate = Validator::make($this->param, $rules, $message);
if($validate->fails()){
return $this->response($validate->errors()->first(),Code::USER_PARAMS_ERROE,$this->param);
return $this->response($validate->errors()->first(),Code::USER_PARAMS_ERROE);
}
$userModel = new UserModel();
$this->param['id'] = $this->uid;
... ...
... ... @@ -41,7 +41,6 @@ class KeywordController extends BaseController
public function save(KeywordRequest $request, KeywordLogic $logic)
{
$this->param['route'] = generateRoute($this->param['title']);
$data = $logic->save($this->param);
return $this->success($data);
}
... ...
... ... @@ -2,7 +2,6 @@
namespace App\Http\Controllers\Bside;
use App\Enums\Common\Code;
use App\Http\Logic\Bside\ProjectGroupLogic;
use App\Http\Requests\Bside\ProjectGroupRequest;
... ... @@ -22,9 +21,39 @@ class ProjectGroupController extends BaseController
}
public function add(ProjectGroupRequest $request,ProjectGroupLogic $logic){
/**
* @param ProjectGroupRequest $request
* @param ProjectGroupLogic $logic
* @name : 添加用户组
* @return void
* @author :liyuhang
* @method
*/
public function add(ProjectGroupRequest $request){
$request->validated();
$this->response('success',Code::SUCCESS);
$this->response('success');
}
/**
* @param ProjectGroupRequest $request
* @param ProjectGroupLogic $logic
* @name :编辑用户组
* @return void
* @author :liyuhang
* @method
*/
public function edit(ProjectGroupRequest $request){
$request->validated();
$this->response('success');
}
/**
* @name :删除用户组
* @return void
* @author :liyuhang
* @method
*/
public function del(){
}
}
... ...
... ... @@ -3,6 +3,7 @@
namespace App\Http\Controllers\Bside;
use App\Enums\Common\Code;
use App\Http\Requests\Bside\ProjectRoleRequest;
use App\Models\ProjectMenu as ProjectMenuModel;
use App\Models\ProjectRole as ProjectRoleModel;
use App\Models\User as UserModel;
... ... @@ -56,23 +57,8 @@ class ProjectRoleController extends BaseController
* @author :liyuhang
* @method
*/
public function add(){
//TODO::获取当前用户的所在项目组
//参数验证
$rules = [
'name'=>'required|max:11',
'role_menu'=>'required|string',
];
//验证的提示信息
$message = [
'name.required'=>'名称必须填写',
'name.max' => '号码不大于11字符.',
'role_menu.required'=>'密码必须填写',
];
$validate = Validator::make($this->param, $rules, $message);
if($validate->fails()){
return $this->response($validate->errors()->first(),Code::USER_PARAMS_ERROE,$this->param);
}
public function add(ProjectRoleRequest $request){
$request->validated();
$this->param['project_id'] = $this->user['project_id'];
//获取当前项目下的角色超级管理员
$projectRoleModel = new ProjectRoleModel();
... ... @@ -94,24 +80,12 @@ class ProjectRoleController extends BaseController
* @author :liyuhang
* @method
*/
public function edit(){
//TODO::根据当前登录用户返回
//参数验证
$rules = [
'id'=>'required',
'name'=>'required|max:11',
'role_menu'=>'required',
];
//验证的提示信息
$message = [
'id.required'=>'主键必须填写',
'name.required'=>'名称必须填写',
'role_menu.required'=>'菜单权限列表填写',
];
$validate = Validator::make($this->param, $rules, $message);
if($validate->fails()){
return $this->response($validate->errors()->first(),Code::USER_PARAMS_ERROE);
}
public function edit(ProjectRoleRequest $request){
$request->validate([
'id'=>['required']
],[
'id.required' => 'ID不能为空'
]);
$projectRoleModel = new ProjectRoleModel();
//TODO::查询当前名称是否重复
$info = $projectRoleModel->where('id','<>',$this->param['id'])
... ... @@ -132,21 +106,14 @@ class ProjectRoleController extends BaseController
* @author :liyuhang
* @method
*/
public function status(){
//参数验证
$rules = [
'id'=>'required',
'status'=>'required',
];
//验证的提示信息
$message = [
'id.required'=>'主键必须填写',
'status.required'=>'状态必须填写',
];
$validate = Validator::make($this->param, $rules, $message);
if($validate->fails()){
return $this->response($validate->errors()->first(),Code::USER_PARAMS_ERROE,$this->param);
}
public function status(ProjectRoleRequest $request){
$request->validate([
'id'=>['required'],
'status'=>['required'],
],[
'id.required' => 'ID不能为空',
'status.required' => 'status不能为空'
]);
$projectRoleModel = new ProjectRoleModel();
$rs = $projectRoleModel->edit(['status'=>$this->param['status']],['id'=>$this->param['id']]);
if($rs === false){
... ... @@ -161,19 +128,12 @@ class ProjectRoleController extends BaseController
* @author :liyuhang
* @method
*/
public function del(){
//参数验证
$rules = [
'id'=>'required',
];
//验证的提示信息
$message = [
'id.required'=>'主键必须填写',
];
$validate = Validator::make($this->param, $rules, $message);
if($validate->fails()){
return $this->response($validate->errors()->first(),Code::USER_PARAMS_ERROE,$this->param);
}
public function del(ProjectRoleRequest $request){
$request->validate([
'id'=>['required']
],[
'id.required' => 'ID不能为空'
]);
$projectRoleModel = new ProjectRoleModel();
//查询当前角色下是否有用户
$userModel = new UserModel();
... ... @@ -185,6 +145,6 @@ class ProjectRoleController extends BaseController
if($rs === false){
$this->response('error',Code::USER_ERROR);
}
$this->response('success',Code::SUCCESS);
$this->response('success');
}
}
... ...
... ... @@ -3,8 +3,10 @@
namespace App\Http\Controllers\Bside;
use App\Enums\Common\Code;
use App\Http\Requests\Bside\UserRequest;
use App\Models\User as UserModel;
use Illuminate\Support\Facades\Validator;
use App\Rules\Ids;
use Illuminate\Http\Request;
class UserController extends BaseController
{
... ... @@ -31,29 +33,8 @@ class UserController extends BaseController
* @author :liyuhang
* @method
*/
public function add(){
$rules = [
'mobile'=>'required|string|max:11',
'password'=>'required|string|min:5',
'name'=>'required|max:20',
'role_id'=>'required'
];
//验证的提示信息
$message = [
'mobile.required'=>'号码必须填写',
'mobile.string'=>'号码中含有非法文字',
'mobile.max' => '号码不大于11字符.',
'password.required'=>'密码必须填写',
'password.string'=>'密码中含有非法文字',
'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);
}
public function add(UserRequest $request){
$request->validated();
$userModel = new UserModel();
$this->param['project_id'] = $this->user['project_id'];
$rs = $userModel->adds($this->param);
... ... @@ -69,31 +50,13 @@ class UserController extends BaseController
* @author :liyuhang
* @method
*/
public function edit(){
$rules = [
'id'=>'required',
'mobile'=>'required|string|max:11',
'password'=>'required|string|min:5',
'name'=>'required|max:20',
];
//验证的提示信息
$message = [
'id.required'=>'主键不能为空',
'mobile.required'=>'号码必须填写',
'mobile.string'=>'号码中含有非法文字',
'mobile.max' => '号码不大于11字符.',
'password.required'=>'密码必须填写',
'password.string'=>'密码中含有非法文字',
'password.min' => '密码不小于5字符.',
'name.required'=>'名称必须填写',
'name.min' => '名称不小于5字符.',
];
$validate = Validator::make($this->param, $rules, $message);
if($validate->fails()){
return $this->response($validate->errors()->first(),Code::USER_PARAMS_ERROE,$this->param);
}
public function edit(UserRequest $request){
$request->validate([
'id'=>['required']
],[
'id.required' => 'ID不能为空'
]);
$userModel = new UserModel();
//TODO::查询当前手机号码是否重复
$info = $userModel->where('id','<>',$this->param['id'])
->where(['mobile'=>$this->param['mobile']])->first();
if(!empty($info)){
... ... @@ -112,27 +75,20 @@ class UserController extends BaseController
* @author :liyuhang
* @method
*/
public function status(){
//参数验证
$rules = [
'id'=>'required',
'status'=>'required',
];
//验证的提示信息
$message = [
'id.required'=>'主键必须填写',
'status.required'=>'状态必须填写',
];
$validate = Validator::make($this->param, $rules, $message);
if($validate->fails()){
return $this->response($validate->errors()->first(),Code::USER_PARAMS_ERROE,$this->param);
}
public function status(Request $request){
$request->validate([
'id'=>['required'],
'status'=>['required'],
],[
'id.required' => 'ID不能为空',
'status.required' => 'status不能为空'
]);
$userLogic = new UserModel();
$rs = $userLogic->edit($this->param,['id'=>$this->param['id']]);
if($rs === false){
$this->response('error',Code::USER_ERROR);
}
$this->response($this->param['status'] == 0 ? '启用成功' : '禁用成功',Code::SUCCESS);
$this->response($this->param['status'] == 0 ? '启用成功' : '禁用成功');
}
/**
* @name :删除管理员
... ... @@ -140,18 +96,12 @@ class UserController extends BaseController
* @author :liyuhang
* @method
*/
public function del(){
$rules = [
'id'=>'required',
];
//验证的提示信息
$message = [
'id.required'=>'主键不能为空',
];
$validate = Validator::make($this->param, $rules, $message);
if($validate->fails()){
return $this->response($validate->errors()->first(),Code::USER_PARAMS_ERROE,$this->param);
}
public function del(Request $request){
$request->validate([
'id'=>['required', new Ids()],
],[
'id.required' => 'ID不能为空',
]);
$userModel = new UserModel();
$rs = $userModel->del($this->param);
if($rs === false){
... ...
... ... @@ -4,7 +4,9 @@ namespace App\Http\Logic\Bside\Product;
use App\Helper\Arr;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\RouteMap;
use App\Models\Product\Keyword;
use Illuminate\Support\Facades\DB;
/**
* Class KeywordLogic
... ... @@ -21,6 +23,20 @@ class KeywordLogic extends BaseLogic
$this->model = new Keyword();
}
public function save($param){
DB::beginTransaction();
try {
$res = parent::save($param);
//路由映射
RouteMap::setRoute($param['title'], RouteMap::SOURCE_PRODUCT_KEYWORD, $res['id'], $param['project_id'], true);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('保存失败');
}
return $this->success();
}
public function delete($ids){
$ids= array_filter(Arr::splitFilterToArray($ids), 'intval');
foreach ($ids as $id){
... ... @@ -31,6 +47,8 @@ class KeywordLogic extends BaseLogic
//todo 是否有关联商品
//todo 删除路由映射 事务
}
return parent::delete($ids);
}
... ...
<?php
namespace App\Http\Logic\Bside;
class ProjectGroupLogic extends BaseLogic
{
}
<?php
namespace App\Http\Logic\Bside;
use App\Models\User;
class UserLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new User();
}
}
... ... @@ -16,15 +16,18 @@ class ProjectGroupRequest extends FormRequest
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name'=>['required'],
'name' => 'required|max:255',
];
}
public function messages()
{
return [
'name.required' => '请输入文章标题',
// 'body.required' => '请输入文章内容',
];
}
}
... ...
... ... @@ -24,7 +24,25 @@ class UserRequest extends FormRequest
public function rules()
{
return [
'mobile'=>['required'],
'mobile'=>'required|string|max:11',
'password'=>'required|string|min:5',
'name'=>'required|max:20',
'role_id'=>'required'
];
}
public function messages()
{
return [
'mobile.required'=>'号码必须填写',
'mobile.string'=>'号码中含有非法文字',
'mobile.max' => '号码不大于11字符.',
'password.required'=>'密码必须填写',
'password.string'=>'密码中含有非法文字',
'password.min' => '密码不小于5字符.',
'name.required'=>'名称必须填写',
'name.min' => '名称不小于5字符.',
'role_id.required'=>'角色必须填写',
];
}
}
... ...
... ... @@ -17,6 +17,18 @@ class Base extends Model
];
/**
* 日期序列化 勿删 删了时间就不是东八区时间了哈
* @param \DateTimeInterface $date
* @return string
* @author zbj
* @date 2023/4/13
*/
protected function serializeDate(\DateTimeInterface $date): string
{
return $date->format('Y-m-d H:i:s');
}
/**
* @name 列表数据
* @return void
* @author :liyuhang
... ...
... ... @@ -3,6 +3,7 @@
namespace App\Models\Product;
use App\Models\Base;
use App\Models\RouteMap;
use Illuminate\Database\Eloquent\SoftDeletes;
class Keyword extends Base
... ... @@ -12,4 +13,9 @@ class Keyword extends Base
//设置关联表名
protected $table = 'gl_product_keyword';
protected $appends = ['route'];
public function getRouteAttribute(){
return RouteMap::getRoute(RouteMap::SOURCE_PRODUCT_KEYWORD, $this->id, $this->project_id);
}
}
... ...
<?php
namespace App\Models\Product;
use App\Models\Base;
use Illuminate\Database\Eloquent\SoftDeletes;
class Product extends Base
{
use SoftDeletes;
//设置关联表名
protected $table = 'gl_product';
}
... ...
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Log;
/**
* 路由映射表
* Class RouteMap
* @package App\Http\Models
* @author zbj
* @date 2023/4/17
*/
class RouteMap extends Model
{
//设置关联表名
protected $table = 'gl_route_map';
//路由类型
const SOURCE_PRODUCT = 'product';
const SOURCE_PRODUCT_CATE = 'product_category';
const SOURCE_PRODUCT_KEYWORD = 'product_keyword';
/**
* 生成路由标识
* @param $title
* @param $source
* @param $source_id
* @param $project_id
* @return string
* @author zbj
* @date 2023/4/17
*/
public static function generateRoute($title, $source, $source_id, $project_id){
$i=1;
$sign = generateRoute($title);
$route = $sign;
while(self::isExist($route, $source, $source_id, $project_id)){
$route = $sign .'-'.$i;
$i++;
}
return $route;
}
/**
* 路由是否存在
* @param $route
* @param $source
* @param $source_id
* @param $project_id
* @return bool
* @author zbj
* @date 2023/4/17
*/
protected static function isExist($route, $source, $source_id, $project_id){
$fixed = []; //固定的路由
if(in_array($route, $fixed)){
return true;
}
$route = self::where('project_id', $project_id)->where('route', $route)->first();
if($route){
if($route->source == $source && $route->source_id == $source_id){
return false;
}
return true;
}
return false;
}
/**
* @param $title
* @param $source
* @param $source_id
* @param int $project_id
* @param bool $auto
* @return bool
* @throws \Exception
* @author zbj
* @date 2023/4/17
*/
public static function setRoute($title, $source, $source_id, $project_id = 0, $auto=false){
$route = $title;
if($auto){
$route = self::generateRoute($title, $source, $source_id, $project_id);
}
if(!$route){
throw new \Exception('路由不能为空');
}
try {
$route_map = self::where('project_id', $project_id)->where('source_id', $source_id)->where('source', $source)->first();
if(!$route_map){
$route_map = new self();
$route_map->source = $source;
$route_map->source_id = $source_id;
$route_map->project_id = $project_id;
}
$route_map->route = $route;
$route_map->save();
}catch (\Exception $e){
throw new \Exception('路由映射失败');
}
return $route;
}
/**
* @param $route
* @param $project_id
* @return mixed
* @author zbj
* @date 2023/4/17
*/
public function getRouteInfo($route, $project_id){
return self::where('project_id',$project_id)->where('route', $route)->get();
}
/**
* @param $source
* @param $source_id
* @param $project_id
* @return mixed
* @author zbj
* @date 2023/4/17
*/
public static function getRoute($source, $source_id, $project_id){
return self::where('project_id', $project_id)->where('source', $source)->where('source_id', $source_id)->value('route');
}
/**
* @param $route
* @param $source
* @param int $project_id
* @return mixed
* @author zbj
* @date 2023/4/17
*/
public static function getSourceId($route, $source, $project_id){
return self::where('project_id', $project_id)->where('source', $source)->where('route', $route)->value('source_id');
}
/**
* @param $source
* @param $source_id
* @param $project_id
* @return mixed
* @author zbj
* @date 2023/4/17
*/
public function delRoute($source, $source_id, $project_id){
return self::where('project_id', $project_id)->where('source', $source)->where('source_id', $source_id)->delete();
}
}
... ...
... ... @@ -119,11 +119,11 @@ class User extends Base
public function edits($param){
//查看密码是否修改
$info = $this->read(['id'=>$param['id']]);
$param['password'] = base64_encode(md5($param['password']));
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;
... ...
... ... @@ -34,14 +34,14 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/project_group/lists', [\App\Http\Controllers\Bside\ProjectGroupController::class, 'lists'])->name('project_group_lists');
Route::any('/project_group/del', [\App\Http\Controllers\Bside\ProjectGroupController::class, 'del'])->name('project_group_del');
});
//无需登录验证的路由组
Route::group([], function () {
Route::any('/login', [\App\Http\Controllers\Bside\ComController::class, 'login'])->name('login');
//产品
Route::prefix('product')->group(function () {
//产品
Route::get('/', [\App\Http\Controllers\Bside\Product\ProductController::class, 'index'])->name('product');
Route::get('/info', [\App\Http\Controllers\Bside\Product\ProductController::class, 'info'])->name('product_info');
Route::post('/save', [\App\Http\Controllers\Bside\Product\ProductController::class, 'save'])->name('product_save');
Route::any('/delete', [\App\Http\Controllers\Bside\Product\ProductController::class, 'delete'])->name('product_delete');
//产品分类
Route::get('category', [\App\Http\Controllers\Bside\Product\CategoryController::class, 'index'])->name('product_category');
Route::get('category/info', [\App\Http\Controllers\Bside\Product\CategoryController::class, 'info'])->name('product_category_info');
... ... @@ -67,3 +67,10 @@ Route::group([], function () {
Route::any('describe/delete', [\App\Http\Controllers\Bside\Product\DescribeController::class, 'delete'])->name('product_describe_delete');
});
});
//无需登录验证的路由组
Route::group([], function () {
Route::any('/login', [\App\Http\Controllers\Bside\ComController::class, 'login'])->name('login');
});
... ...