作者 刘锟

Merge remote-tracking branch 'origin/master' into akun

@@ -55,7 +55,7 @@ class UpdateRoute extends Command @@ -55,7 +55,7 @@ class UpdateRoute extends Command
55 */ 55 */
56 public function handle(){ 56 public function handle(){
57 $projectModel = new Project(); 57 $projectModel = new Project();
58 - $list = $projectModel->list(['id'=>687]); 58 + $list = $projectModel->list(['id'=>775]);
59 $data = []; 59 $data = [];
60 foreach ($list as $v){ 60 foreach ($list as $v){
61 echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL; 61 echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
@@ -110,7 +110,7 @@ class UpdateRoute extends Command @@ -110,7 +110,7 @@ class UpdateRoute extends Command
110 // $tag = "-tag"; 110 // $tag = "-tag";
111 // if ((substr($v['route'], -strlen($tag)) === $tag)) { 111 // if ((substr($v['route'], -strlen($tag)) === $tag)) {
112 // echo date('Y-m-d H:i:s') . '拼接 :'.$v['id'] . PHP_EOL; 112 // echo date('Y-m-d H:i:s') . '拼接 :'.$v['id'] . PHP_EOL;
113 -//// $route = Translate::tran($v['route'], 'en').$tag; 113 +// $route = Translate::tran($v['route'], 'en').$tag;
114 // // 如果不是以 '-tag' 结尾,则拼接上 '-tag' 114 // // 如果不是以 '-tag' 结尾,则拼接上 '-tag'
115 // $route = trim($v['route'],'-tag'); 115 // $route = trim($v['route'],'-tag');
116 // $route = RouteMap::setRoute($route, RouteMap::SOURCE_PRODUCT_KEYWORD, $v['id'], $v['project_id']); 116 // $route = RouteMap::setRoute($route, RouteMap::SOURCE_PRODUCT_KEYWORD, $v['id'], $v['project_id']);
@@ -594,12 +594,12 @@ if (!function_exists('getFileUrl')) { @@ -594,12 +594,12 @@ if (!function_exists('getFileUrl')) {
594 if(substr($path,0,2) == '//'){ 594 if(substr($path,0,2) == '//'){
595 return 'https:'.$path; 595 return 'https:'.$path;
596 } 596 }
597 - $file_type = pathinfo($path, PATHINFO_EXTENSION);  
598 - $fileTypeArr = ['zip', 'pdf', 'mp4', 'doc', 'docx', 'm4v', 'xlsx'];  
599 - if(in_array(strtolower($file_type),$fileTypeArr)){  
600 - $cdn2 = config('filesystems.disks.cos')['cdn2'];  
601 - return $cdn2.$path;  
602 - } 597 +// $file_type = pathinfo($path, PATHINFO_EXTENSION);
  598 +// $fileTypeArr = ['zip', 'pdf', 'mp4', 'doc', 'docx', 'm4v', 'xlsx'];
  599 +// if(in_array(strtolower($file_type),$fileTypeArr)){
  600 +// $cdn2 = config('filesystems.disks.cos')['cdn2'];
  601 +// return $cdn2.$path;
  602 +// }
603 if($location == 0){ 603 if($location == 0){
604 //v6-file.globalso.com 604 //v6-file.globalso.com
605 $cos = config('filesystems.disks.cos'); 605 $cos = config('filesystems.disks.cos');
@@ -3,16 +3,10 @@ @@ -3,16 +3,10 @@
3 namespace App\Http\Controllers\Aside\Manage; 3 namespace App\Http\Controllers\Aside\Manage;
4 4
5 use App\Enums\Common\Code; 5 use App\Enums\Common\Code;
6 -use App\Helper\Arr;  
7 use App\Http\Controllers\Aside\BaseController; 6 use App\Http\Controllers\Aside\BaseController;
8 use App\Http\Logic\Aside\Manage\MenuLogic; 7 use App\Http\Logic\Aside\Manage\MenuLogic;
9 use App\Http\Requests\Aside\Manage\MenuRequest; 8 use App\Http\Requests\Aside\Manage\MenuRequest;
10 -use App\Models\Manage\Menu;  
11 use App\Rules\Ids; 9 use App\Rules\Ids;
12 -use Illuminate\Http\Request;  
13 -use Illuminate\Support\Facades\Route;  
14 -use Illuminate\Support\Str;  
15 -  
16 /** 10 /**
17 * 后台菜单 11 * 后台菜单
18 * Class MenuController 12 * Class MenuController
@@ -987,15 +987,18 @@ class ProjectController extends BaseController @@ -987,15 +987,18 @@ class ProjectController extends BaseController
987 ]); 987 ]);
988 //查看当前用户是否存在 988 //查看当前用户是否存在
989 $hrModel = new ManageHr(); 989 $hrModel = new ManageHr();
990 - $hrInfo = $hrModel->read(['id'=>$this->param['old_id']]);  
991 - if($hrInfo === false){ 990 + $oldHrInfo = $hrModel->read(['id'=>$this->param['old_id']]);
  991 + if($oldHrInfo === false){
992 $this->response('当前用户不存在',Code::SYSTEM_ERROR); 992 $this->response('当前用户不存在',Code::SYSTEM_ERROR);
993 } 993 }
994 - $hrInfo = $hrModel->read(['id'=>$this->param['new_id'],'status'=>1]);  
995 - if($hrInfo === false){ 994 + $newHrInfo = $hrModel->read(['id'=>$this->param['new_id'],'status'=>1]);
  995 + if($newHrInfo === false){
996 $this->response('变更的用户不存在',Code::SYSTEM_ERROR); 996 $this->response('变更的用户不存在',Code::SYSTEM_ERROR);
997 } 997 }
998 - $logic->getManagerFiled($hrInfo['entry_position'],$this->param['old_id'],$this->param['new_id'],$this->param['project_id'] ?? []); 998 + if($oldHrInfo['entry_position'] != $newHrInfo['entry_position']){
  999 + $this->response('不同岗位不允许变更',Code::SYSTEM_ERROR);
  1000 + }
  1001 + $logic->getManagerFiled($newHrInfo['entry_position'],$this->param['old_id'],$this->param['new_id'],$this->param['project_id'] ?? []);
999 $this->response('success'); 1002 $this->response('success');
1000 } 1003 }
1001 1004
@@ -11,7 +11,12 @@ namespace App\Http\Controllers\Bside\BCom; @@ -11,7 +11,12 @@ namespace App\Http\Controllers\Bside\BCom;
11 11
12 use App\Enums\Common\Code; 12 use App\Enums\Common\Code;
13 use App\Http\Controllers\Bside\BaseController; 13 use App\Http\Controllers\Bside\BaseController;
  14 +use App\Models\HomeCount\Count;
14 use App\Models\HomeCount\MonthCount; 15 use App\Models\HomeCount\MonthCount;
  16 +use App\Models\News\News;
  17 +use App\Models\Product\Category;
  18 +use App\Models\Product\Product;
  19 +use Carbon\Carbon;
15 20
16 class MonthReportController extends BaseController 21 class MonthReportController extends BaseController
17 { 22 {
@@ -40,24 +45,42 @@ class MonthReportController extends BaseController @@ -40,24 +45,42 @@ class MonthReportController extends BaseController
40 $monthCountModel = new MonthCount(); 45 $monthCountModel = new MonthCount();
41 $this->map['project_id'] = $this->user['project_id']; 46 $this->map['project_id'] = $this->user['project_id'];
42 $info = $monthCountModel->read($this->map); 47 $info = $monthCountModel->read($this->map);
43 - foreach ($info as $k => $v){  
44 - if(!empty($v['source_country'])){  
45 - $v['source_country'] = json_decode($v['source_country']);  
46 - }  
47 - if(!empty($v['referrer_port'])){  
48 - $v['referrer_port'] = json_decode($v['referrer_port']);  
49 - }  
50 - if(!empty($v['referrer_url'])){  
51 - $v['referrer_url'] = json_decode($v['referrer_url']);  
52 - }  
53 - if(!empty($v['source'])){  
54 - $v['source'] = json_decode($v['source']);  
55 - }  
56 - if(!empty($v['country'])){  
57 - $v['country'] = json_decode($v['country']);  
58 - }  
59 - $lists[$k] = $v; 48 + if(!empty($info['source_country'])){
  49 + $info['source_country'] = json_decode($info['source_country']);
60 } 50 }
  51 + if(!empty($info['referrer_port'])){
  52 + $info['referrer_port'] = json_decode($info['referrer_port']);
  53 + }
  54 + if(!empty($info['referrer_url'])){
  55 + $info['referrer_url'] = json_decode($info['referrer_url']);
  56 + }
  57 + if(!empty($info['source'])){
  58 + $info['source'] = json_decode($info['source']);
  59 + }
  60 + if(!empty($info['country'])){
  61 + $info['country'] = json_decode($info['country']);
  62 + }
  63 + // 获取上个月的开始时间
  64 + $startTime = Carbon::now()->subMonth()->startOfMonth()->toDateString();
  65 + // 获取上个月的结束时间
  66 + $endTime = Carbon::now()->subMonth()->endOfMonth()->toDateString();
  67 + $param = [
  68 + 'date' => ['between',[$startTime,$endTime]],
  69 + 'project_id' => $this->user['project_id']
  70 + ];
  71 + $info['pv_ip'] = (new Count())->list($param,'date',['id','pv_num','ip_num','date']);
  72 + $categoryModel = new Category();
  73 + $info['category_num'] = $categoryModel->formatQuery(['status'=>1])->count();
  74 + $productModel = new Product();
  75 + $info['products_num'] = $productModel->formatQuery(['status'=>1])->count();
  76 + $info['products_num_last_30'] = $productModel->formatQuery(
  77 + ['status'=>1,'created_at'=>['between',[now()->subDays(30)->startOfDay()->toDateString(),now()->startOfDay()->toDateString()]]
  78 + ])->count();
  79 + $newsModel = new News();
  80 + $info['news_num'] = $newsModel->formatQuery(['status'=>0])->count();
  81 + $info['news_num_last_7'] = $newsModel->formatQuery(
  82 + ['status'=>1,'created_at'=>['between',[now()->subDays(7)->startOfDay()->toDateString(),now()->startOfDay()->toDateString()]]
  83 + ])->count();
61 $this->response('success',Code::SUCCESS,$info); 84 $this->response('success',Code::SUCCESS,$info);
62 } 85 }
63 } 86 }
@@ -41,7 +41,7 @@ class LoginLogic extends BaseLogic @@ -41,7 +41,7 @@ class LoginLogic extends BaseLogic
41 */ 41 */
42 public function login() 42 public function login()
43 { 43 {
44 - $manage = $this->model->select('id', 'name', 'password', 'token', 'status', 'gid', 'dept_id','role') 44 + $manage = $this->model->select('id', 'name', 'password', 'token', 'status', 'gid', 'dept_id','role','rules')
45 ->where('mobile', $this->param['mobile'])->first(); 45 ->where('mobile', $this->param['mobile'])->first();
46 if (!$manage){ 46 if (!$manage){
47 $this->fail('登录用户名不存在'); 47 $this->fail('登录用户名不存在');
@@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
3 namespace App\Http\Logic\Aside\Manage; 3 namespace App\Http\Logic\Aside\Manage;
4 4
5 5
  6 +use App\Helper\Arr;
6 use App\Helper\Common; 7 use App\Helper\Common;
7 use App\Http\Logic\Aside\BaseLogic; 8 use App\Http\Logic\Aside\BaseLogic;
8 use App\Models\Manage\Manage; 9 use App\Models\Manage\Manage;
@@ -59,6 +60,9 @@ class ManageLogic extends BaseLogic @@ -59,6 +60,9 @@ class ManageLogic extends BaseLogic
59 if($managerInfo !== false){ 60 if($managerInfo !== false){
60 $this->fail('当前手机号码已存在'); 61 $this->fail('当前手机号码已存在');
61 } 62 }
  63 + if (isset($this->param['rules']) && is_array($this->param['rules'])){
  64 + $this->param['rules'] = Arr::arrToSet($this->param['rules']);
  65 + }
62 $this->param['password'] = Hash::make(isset($this->param['password']) ?? 'globalsov6'); 66 $this->param['password'] = Hash::make(isset($this->param['password']) ?? 'globalsov6');
63 $this->model->add($this->param); 67 $this->model->add($this->param);
64 $this->success(); 68 $this->success();
@@ -93,6 +97,9 @@ class ManageLogic extends BaseLogic @@ -93,6 +97,9 @@ class ManageLogic extends BaseLogic
93 if(isset($this->param['password']) && !empty($this->param['password'])){ 97 if(isset($this->param['password']) && !empty($this->param['password'])){
94 $this->param['password'] = Hash::make($this->param['password']); 98 $this->param['password'] = Hash::make($this->param['password']);
95 } 99 }
  100 + if (isset($this->param['rules']) && is_array($this->param['rules'])){
  101 + $this->param['rules'] = Arr::arrToSet($this->param['rules']);
  102 + }
96 $this->model->edit($this->param,['id'=>$this->param['id']]); 103 $this->model->edit($this->param,['id'=>$this->param['id']]);
97 } 104 }
98 105
@@ -120,7 +127,10 @@ class ManageLogic extends BaseLogic @@ -120,7 +127,10 @@ class ManageLogic extends BaseLogic
120 */ 127 */
121 public function getManagerInfo(){ 128 public function getManagerInfo(){
122 $info = $this->model->read(['id'=>$this->param['id']], 129 $info = $this->model->read(['id'=>$this->param['id']],
123 - ['id','name','email','mobile','status','gid','sort','dept_id','is_dept_manager','created_at','role','updated_at']); 130 + ['id','name','email','mobile','status','gid','sort','dept_id','is_dept_manager','created_at','role','rules','updated_at']);
  131 + if(!empty($info['rules'])){
  132 + $info['rules'] = Arr::setToArr($info['rules']);
  133 + }
124 if($info === false){ 134 if($info === false){
125 $this->fail('error'); 135 $this->fail('error');
126 } 136 }
@@ -93,6 +93,14 @@ class MenuLogic extends BaseLogic @@ -93,6 +93,14 @@ class MenuLogic extends BaseLogic
93 */ 93 */
94 public function getMenuByGroupId($gid){ 94 public function getMenuByGroupId($gid){
95 $rights = Group::where(['id' => $gid, 'status' => Group::STATUS_NORMAL])->pluck('rights')->first(); 95 $rights = Group::where(['id' => $gid, 'status' => Group::STATUS_NORMAL])->pluck('rights')->first();
  96 + //获取个人权限
  97 + if(isset($this->manager['rules']) && !empty($this->manager['rules'])){
  98 + $rules = Arr::setToArr($this->manager['rules']);
  99 + // 合并两个数组
  100 + $mergedArray = array_merge($rules, $rights);
  101 + // 去除重复的元素
  102 + $rights = array_unique($mergedArray);
  103 + }
96 $map = [ 104 $map = [
97 'type'=>0, 105 'type'=>0,
98 'status' => Menu::STATUS_NORMAL, 106 'status' => Menu::STATUS_NORMAL,
@@ -864,6 +864,7 @@ class ProjectLogic extends BaseLogic @@ -864,6 +864,7 @@ class ProjectLogic extends BaseLogic
864 $param['designer_mid'] = $old_id; 864 $param['designer_mid'] = $old_id;
865 $deployBuildModel = new DeployBuild(); 865 $deployBuildModel = new DeployBuild();
866 $deployBuildModel->edit(['designer_mid'=>$new_id],$param); 866 $deployBuildModel->edit(['designer_mid'=>$new_id],$param);
  867 + break;
867 //技术助理 868 //技术助理
868 case 40: 869 case 40:
869 $param['tech_mid'] = $old_id; 870 $param['tech_mid'] = $old_id;
@@ -878,32 +879,35 @@ class ProjectLogic extends BaseLogic @@ -878,32 +879,35 @@ class ProjectLogic extends BaseLogic
878 $deployOptimizeModel->edit(['manager_mid'=>$new_id],$param); 879 $deployOptimizeModel->edit(['manager_mid'=>$new_id],$param);
879 $param['tech_leader'] = $old_id; 880 $param['tech_leader'] = $old_id;
880 unset($param['manager_mid']); 881 unset($param['manager_mid']);
881 - $deployOptimizeModel->edit(['tech_leader'=>$new_id],['tech_leader'=>$old_id]); 882 + $deployOptimizeModel->edit(['tech_leader'=>$new_id],$param);
882 break; 883 break;
883 //优化师 884 //优化师
884 - case 44: 885 + case 46:
885 $param['optimist_mid'] = $old_id; 886 $param['optimist_mid'] = $old_id;
886 $deployOptimizeModel = new DeployOptimize(); 887 $deployOptimizeModel = new DeployOptimize();
887 $deployOptimizeModel->edit(['optimist_mid'=>$new_id],$param); 888 $deployOptimizeModel->edit(['optimist_mid'=>$new_id],$param);
888 $param['assist_mid'] = $old_id; 889 $param['assist_mid'] = $old_id;
889 unset($param['optimist_mid']); 890 unset($param['optimist_mid']);
890 - $deployOptimizeModel->edit(['assist_mid'=>$new_id],['assist_mid'=>$old_id]); 891 + $deployOptimizeModel->edit(['assist_mid'=>$new_id],$param);
891 break; 892 break;
892 - case 46: 893 + case 49:
893 //优化师助理 894 //优化师助理
894 $param['assist_mid'] = $old_id; 895 $param['assist_mid'] = $old_id;
895 $deployOptimizeModel = new DeployOptimize(); 896 $deployOptimizeModel = new DeployOptimize();
896 $deployOptimizeModel->edit(['assist_mid'=>$new_id],$param); 897 $deployOptimizeModel->edit(['assist_mid'=>$new_id],$param);
  898 + break;
897 case 45: 899 case 45:
898 //售后技术 900 //售后技术
899 $param['tech_mid'] = $old_id; 901 $param['tech_mid'] = $old_id;
900 $deployOptimizeModel = new DeployOptimize(); 902 $deployOptimizeModel = new DeployOptimize();
901 $deployOptimizeModel->edit(['tech_mid'=>$new_id],$param); 903 $deployOptimizeModel->edit(['tech_mid'=>$new_id],$param);
  904 + break;
902 case 38: 905 case 38:
903 //品控 906 //品控
904 $param['design_mid'] = $old_id; 907 $param['design_mid'] = $old_id;
905 $deployOptimizeModel = new DeployOptimize(); 908 $deployOptimizeModel = new DeployOptimize();
906 $deployOptimizeModel->edit(['design_mid'=>$new_id],$param); 909 $deployOptimizeModel->edit(['design_mid'=>$new_id],$param);
  910 + break;
907 default: 911 default:
908 break; 912 break;
909 } 913 }
@@ -55,10 +55,8 @@ class RouteMap extends Base @@ -55,10 +55,8 @@ class RouteMap extends Base
55 public static function generateRoute($title, $source, $source_id, $project_id){ 55 public static function generateRoute($title, $source, $source_id, $project_id){
56 if(preg_match('/[\x{4e00}-\x{9fa5}]/u', $title)){ 56 if(preg_match('/[\x{4e00}-\x{9fa5}]/u', $title)){
57 $title = Translate::tran($title, 'en'); 57 $title = Translate::tran($title, 'en');
58 - }else{  
59 - if(!preg_match('/[a-zA-Z]/', $title)){  
60 - $title = Translate::tran($title, 'en');  
61 - } 58 + }elseif(preg_match('/^[\x{0400}-\x{04FF}]+$/u', $title)){
  59 + $title = Translate::tran($title, 'en');
62 } 60 }
63 $i=1; 61 $i=1;
64 $sign = generateRoute($title); 62 $sign = generateRoute($title);