作者 刘锟

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

@@ -53,41 +53,73 @@ class UpdateRoute extends Command @@ -53,41 +53,73 @@ class UpdateRoute extends Command
53 * @time :2023/11/20 15:13 53 * @time :2023/11/20 15:13
54 */ 54 */
55 public function handle(){ 55 public function handle(){
56 -// $projectModel = new Project();  
57 -// $list = $projectModel->list(['type'=>['in',[1,2,3,4]]]);  
58 -// foreach ($list as $v){  
59 - ProjectServer::useProject(197); 56 + $projectModel = new Project();
  57 + $list = $projectModel->list(['id'=>['in',[518,241]],'is_upgrade'=>0]);
  58 + foreach ($list as $v){
  59 + echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
  60 + ProjectServer::useProject($v['id']);
60 $this->getProduct(); 61 $this->getProduct();
  62 + $this->setProductKeyword();
61 DB::disconnect('custom_mysql'); 63 DB::disconnect('custom_mysql');
62 -// } 64 + }
63 echo date('Y-m-d H:i:s') . 'end' . PHP_EOL; 65 echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
64 } 66 }
65 67
66 /** 68 /**
67 - * @remark :产品关键字 69 + * @remark :写入
68 * @name :getProductKeyword 70 * @name :getProductKeyword
69 * @author :lyh 71 * @author :lyh
70 * @method :post 72 * @method :post
71 - * @time :2023/12/8 11:13 73 + * @time :2023/12/21 14:37
72 */ 74 */
73 - public function getProductKeyword(){ 75 + public function setProductKeyword(){
74 $keywordModel = new Keyword(); 76 $keywordModel = new Keyword();
75 - $lists = $keywordModel->list(['status'=>1,'route'=>'']); 77 + $lists = $keywordModel->list();
76 if(!empty($lists)){ 78 if(!empty($lists)){
77 foreach ($lists as $v){ 79 foreach ($lists as $v){
  80 + if(!empty($v['route'])){
78 $tag = "-tag"; 81 $tag = "-tag";
79 if (!(substr($v['route'], -strlen($tag)) === $tag)) { 82 if (!(substr($v['route'], -strlen($tag)) === $tag)) {
80 - echo date('Y-m-d H:i:s') . '拼接'.$tag . PHP_EOL;  
81 $route = $v['route'].$tag; 83 $route = $v['route'].$tag;
82 // 如果不是以 '-tag' 结尾,则拼接上 '-tag' 84 // 如果不是以 '-tag' 结尾,则拼接上 '-tag'
83 - $routeModel = new RouteMap();  
84 - $routeModel->edit(['route'=>$route],['source'=>RouteMap::SOURCE_PRODUCT_KEYWORD,'source_id'=>$v['id']]); 85 + $route = RouteMap::setRoute($route, RouteMap::SOURCE_PRODUCT_KEYWORD, $v['id'], $v['project_id']);
85 $keywordModel->edit(['route'=>$route],['id'=>$v['id']]); 86 $keywordModel->edit(['route'=>$route],['id'=>$v['id']]);
86 - echo date('Y-m-d H:i:s') . 'end'.$v['id'] . PHP_EOL;  
87 } 87 }
  88 + }else{
  89 + echo date('Y-m-d H:i:s') . 'id :'.$v['id'] . PHP_EOL;
  90 + $route = RouteMap::setRoute($v['title'], RouteMap::SOURCE_PRODUCT_KEYWORD, $v['id'], $v['project_id']);
  91 + $keywordModel->edit(['route'=>$route],['id'=>$v['id']]);
88 } 92 }
  93 + echo date('Y-m-d H:i:s') . 'end :' . PHP_EOL;
89 } 94 }
90 } 95 }
  96 + }
  97 +
  98 + /**
  99 + * @remark :产品关键字
  100 + * @name :getProductKeyword
  101 + * @author :lyh
  102 + * @method :post
  103 + * @time :2023/12/8 11:13
  104 + */
  105 +// public function getProductKeyword(){
  106 +// $keywordModel = new Keyword();
  107 +// $lists = $keywordModel->list(['status'=>1,'route'=>'']);
  108 +// if(!empty($lists)){
  109 +// foreach ($lists as $v){
  110 +// $tag = "-tag";
  111 +// if (!(substr($v['route'], -strlen($tag)) === $tag)) {
  112 +// echo date('Y-m-d H:i:s') . '拼接'.$tag . PHP_EOL;
  113 +// $route = $v['route'].$tag;
  114 +// // 如果不是以 '-tag' 结尾,则拼接上 '-tag'
  115 +// $routeModel = new RouteMap();
  116 +// $routeModel->edit(['route'=>$route],['source'=>RouteMap::SOURCE_PRODUCT_KEYWORD,'source_id'=>$v['id']]);
  117 +// $keywordModel->edit(['route'=>$route],['id'=>$v['id']]);
  118 +// echo date('Y-m-d H:i:s') . 'end'.$v['id'] . PHP_EOL;
  119 +// }
  120 +// }
  121 +// }
  122 +// }
91 123
92 public function getProduct(){ 124 public function getProduct(){
93 $productModel = new Product(); 125 $productModel = new Product();
@@ -106,35 +138,7 @@ class UpdateRoute extends Command @@ -106,35 +138,7 @@ class UpdateRoute extends Command
106 } 138 }
107 } 139 }
108 140
109 - /**  
110 - * @remark :写入  
111 - * @name :getProductKeyword  
112 - * @author :lyh  
113 - * @method :post  
114 - * @time :2023/12/21 14:37  
115 - */  
116 - public function setProductKeyword(){  
117 - $keywordModel = new Keyword();  
118 - $lists = $keywordModel->list();  
119 - if(!empty($lists)){  
120 - foreach ($lists as $v){  
121 - if(!empty($v['route'])){  
122 - $tag = "-tag";  
123 - if (!(substr($v['route'], -strlen($tag)) === $tag)) {  
124 - $route = $v['route'].$tag;  
125 - // 如果不是以 '-tag' 结尾,则拼接上 '-tag'  
126 - $route = RouteMap::setRoute($route, RouteMap::SOURCE_PRODUCT_KEYWORD, $v['id'], $v['project_id']);  
127 - $keywordModel->edit(['route'=>$route],['id'=>$v['id']]);  
128 - }  
129 - }else{  
130 - echo date('Y-m-d H:i:s') . 'id :'.$v['id'] . PHP_EOL;  
131 - $route = RouteMap::setRoute($v['title'], RouteMap::SOURCE_PRODUCT_KEYWORD, $v['id'], $v['project_id']);  
132 - $keywordModel->edit(['route'=>$route],['id'=>$v['id']]);  
133 - }  
134 - echo date('Y-m-d H:i:s') . 'end :'.$route . PHP_EOL;  
135 - }  
136 - }  
137 - } 141 +
138 142
139 /** 143 /**
140 * @remark :删除路由通知C端 144 * @remark :删除路由通知C端
@@ -102,12 +102,12 @@ class MailController extends BaseController @@ -102,12 +102,12 @@ class MailController extends BaseController
102 $arr[] = $v['mail_id']; 102 $arr[] = $v['mail_id'];
103 } 103 }
104 $mailModel = new MailModel(); 104 $mailModel = new MailModel();
105 - $mail_list = $mailModel->list(['id'=>['not in',$arr],'user_list'=>['like',','.$this->user['id'].',']]); 105 + $mail_list = $mailModel->list(['id'=>['not in',$arr],'user_list'=>['like','%,'.$this->user['id'].',%']]);
106 $data = []; 106 $data = [];
107 - foreach ($mail_list as $k => $v){ 107 + foreach ($mail_list as $k1 => $v1){
108 $data[] = [ 108 $data[] = [
109 'user_id'=>$this->user['id'], 109 'user_id'=>$this->user['id'],
110 - 'mail_id'=>$v['id'], 110 + 'mail_id'=>$v1['id'],
111 'created_at'=>date('Y-m-d H:i:s'), 111 'created_at'=>date('Y-m-d H:i:s'),
112 'updated_at'=>date('Y-m-d H:i:s'), 112 'updated_at'=>date('Y-m-d H:i:s'),
113 ]; 113 ];
@@ -69,6 +69,9 @@ class NavController extends BaseController @@ -69,6 +69,9 @@ class NavController extends BaseController
69 if (empty($detailsList[$val['id']])){ 69 if (empty($detailsList[$val['id']])){
70 continue; 70 continue;
71 } 71 }
  72 + if(!empty($detailsList[$val['id']]['sub']) && is_array($detailsList[$val['id']]['sub'])){
  73 + $detailsList[$val['id']]['sub'] = $this->handleDetailsSub($detailsList[$val['id']]['sub']);
  74 + }
72 $result[] = $detailsList[$val['id']]; 75 $result[] = $detailsList[$val['id']];
73 unset($detailsList[$val['id']]); 76 unset($detailsList[$val['id']]);
74 } 77 }
@@ -76,6 +79,19 @@ class NavController extends BaseController @@ -76,6 +79,19 @@ class NavController extends BaseController
76 return $this->success($result); 79 return $this->success($result);
77 } 80 }
78 81
  82 + /**
  83 + * @remark :处理子集
  84 + * @name :handleDetailsSub
  85 + * @author :lyh
  86 + * @method :post
  87 + * @time :2023/12/21 16:36
  88 + */
  89 + public function handleDetailsSub($detailsList){
  90 + if(!empty($detailsList['sub']) && is_array($detailsList['sub'])){
  91 + $detailsList['sub'] = $this->handleDetailsSub($detailsList['sub']);
  92 + }
  93 + return array_merge($detailsList);
  94 + }
79 95
80 /** 96 /**
81 * @remark :根据id组装数据 97 * @remark :根据id组装数据
@@ -32,11 +32,8 @@ class KeywordController extends BaseController @@ -32,11 +32,8 @@ class KeywordController extends BaseController
32 */ 32 */
33 public function index(Keyword $keyword) 33 public function index(Keyword $keyword)
34 { 34 {
35 - if(!empty($this->map['title'])){  
36 - $this->map['title'] = ['like','%'.$this->map['title'].'%'];  
37 - }  
38 - $this->map['project_id'] = $this->user['project_id'];  
39 - $filed = ['id', 'project_id', 'title', 'seo_title', 'seo_keywords', 'seo_description', 'status', 'created_at','route']; 35 + $this->map = $this->searchParam($this->map);
  36 + $filed = ['id', 'project_id', 'title', 'seo_title', 'seo_keywords', 'seo_description', 'status', 'created_at','route','keyword_title'];
40 $data = $keyword->lists($this->map,$this->page,$this->row,$this->order,$filed); 37 $data = $keyword->lists($this->map,$this->page,$this->row,$this->order,$filed);
41 if(!empty($data)){ 38 if(!empty($data)){
42 foreach ($data['list'] as &$v){ 39 foreach ($data['list'] as &$v){
@@ -53,6 +50,24 @@ class KeywordController extends BaseController @@ -53,6 +50,24 @@ class KeywordController extends BaseController
53 } 50 }
54 51
55 /** 52 /**
  53 + * @remark :搜索
  54 + * @name :searchParam
  55 + * @author :lyh
  56 + * @method :post
  57 + * @time :2023/12/21 17:40
  58 + */
  59 + public function searchParam($map){
  60 + if(!empty($map['title'])){
  61 + $map['title'] = ['like','%'.$map['title'].'%'];
  62 + }
  63 + if(!empty($map['keyword_title'])){
  64 + $map['keyword_title'] = ['like','%'.$map['keyword_title'].'%'];
  65 + }
  66 + $map['project_id'] = $this->user['project_id'];
  67 + return $this->success($map);
  68 + }
  69 +
  70 + /**
56 * @remark :获取数据详情 71 * @remark :获取数据详情
57 * @name :info 72 * @name :info
58 * @author :lyh 73 * @author :lyh
@@ -5,6 +5,7 @@ namespace App\Http\Logic\Bside\BTemplate; @@ -5,6 +5,7 @@ namespace App\Http\Logic\Bside\BTemplate;
5 use App\Http\Logic\Bside\BaseLogic; 5 use App\Http\Logic\Bside\BaseLogic;
6 use App\Models\Blog\Blog; 6 use App\Models\Blog\Blog;
7 use App\Models\Blog\BlogCategory; 7 use App\Models\Blog\BlogCategory;
  8 +use App\Models\CustomModule\CustomModule;
8 use App\Models\News\News; 9 use App\Models\News\News;
9 use App\Models\News\NewsCategory; 10 use App\Models\News\NewsCategory;
10 use App\Models\Product\Category; 11 use App\Models\Product\Category;
@@ -690,10 +691,26 @@ class BTemplateLogic extends BaseLogic @@ -690,10 +691,26 @@ class BTemplateLogic extends BaseLogic
690 if (!empty($blogCategory)){ 691 if (!empty($blogCategory)){
691 foreach ($blogCategory as $item){$data["blogs"]["category"][] =$item;} 692 foreach ($blogCategory as $item){$data["blogs"]["category"][] =$item;}
692 } 693 }
693 - //返回  
694 return $this->success($data); 694 return $this->success($data);
695 } 695 }
696 696
  697 + public function getModuleTypes(){
  698 + $data['module'] = ['默认','产品','新闻','博客','产品分类'];
  699 + $data = [
  700 + ['id'=>'0',"name"=>'默认','category'=>[["id"=>"all", "title"=>"全部"], ["id"=>"hot", "title"=>"热销产品",], ["id"=>"recommend", "title"=>"推荐产品",]]],
  701 + ['id'=>'1',"name"=>'产品','category'=>[]],
  702 + ['id'=>'2',"name"=>'新闻','category'=>[]],
  703 + ['id'=>'3',"name"=>'博客','category'=>[]],
  704 + ['id'=>'4','name'=>'产品分类','category'=>[]],
  705 + ];
  706 + //获取当前项目的扩展模块
  707 + $moduleModel = new CustomModule();
  708 + $moduleList = $moduleModel->list(['status'=>0]);
  709 + foreach ($moduleList as $v){
  710 + $data[] = ['id'=>'custom-'.$v['id'],'name'=>$v['name'],'category'=>[]];
  711 + }
  712 + }
  713 +
697 /** 714 /**
698 * @remark :获取1级+2级 715 * @remark :获取1级+2级
699 * @name :getCategoryList 716 * @name :getCategoryList
@@ -5,6 +5,7 @@ namespace App\Http\Logic\Bside\Product; @@ -5,6 +5,7 @@ namespace App\Http\Logic\Bside\Product;
5 use App\Exceptions\BsideGlobalException; 5 use App\Exceptions\BsideGlobalException;
6 use App\Helper\Arr; 6 use App\Helper\Arr;
7 use App\Helper\Common; 7 use App\Helper\Common;
  8 +use App\Helper\Translate;
8 use App\Http\Logic\Bside\BaseLogic; 9 use App\Http\Logic\Bside\BaseLogic;
9 use App\Models\News\News; 10 use App\Models\News\News;
10 use App\Models\Product\Keyword; 11 use App\Models\Product\Keyword;
@@ -136,8 +137,12 @@ class KeywordLogic extends BaseLogic @@ -136,8 +137,12 @@ class KeywordLogic extends BaseLogic
136 * @time :2023/8/28 14:03 137 * @time :2023/8/28 14:03
137 */ 138 */
138 public function batchAdd(){ 139 public function batchAdd(){
  140 + $route_array = Translate::tran($this->param['title'], 'en');
  141 + if (empty($route_array)) {
  142 + $this->fail('路由生成失败,请稍后重试!');
  143 + }
139 try { 144 try {
140 - foreach ($this->param['title'] as $v){ 145 + foreach ($this->param['title'] as $k=>$v){
141 $this->model = new Keyword(); 146 $this->model = new Keyword();
142 $info = $this->model->read(['title'=>$v]); 147 $info = $this->model->read(['title'=>$v]);
143 if($info === false){ 148 if($info === false){
@@ -146,7 +151,7 @@ class KeywordLogic extends BaseLogic @@ -146,7 +151,7 @@ class KeywordLogic extends BaseLogic
146 $param['updated_at'] = $param['created_at']; 151 $param['updated_at'] = $param['created_at'];
147 $param['title'] = $v; 152 $param['title'] = $v;
148 $id = $this->model->insertGetId($param); 153 $id = $this->model->insertGetId($param);
149 - $route = RouteMap::setRoute($v, RouteMap::SOURCE_PRODUCT_KEYWORD, $id, $this->user['project_id']); 154 + $route = RouteMap::setRoute($route_array[$k], RouteMap::SOURCE_PRODUCT_KEYWORD, $id, $this->user['project_id']);
150 // $this->curlDelRoute(['new_route'=>$route]); 155 // $this->curlDelRoute(['new_route'=>$route]);
151 $this->model->edit(['route'=>$route],['id'=>$id]); 156 $this->model->edit(['route'=>$route],['id'=>$id]);
152 } 157 }
@@ -54,7 +54,9 @@ class RouteMap extends Base @@ -54,7 +54,9 @@ class RouteMap extends Base
54 * @date 2023/4/17 54 * @date 2023/4/17
55 */ 55 */
56 public static function generateRoute($title, $source, $source_id, $project_id){ 56 public static function generateRoute($title, $source, $source_id, $project_id){
  57 + if(preg_match('/[\x{4e00}-\x{9fa5}]/u', $title)){
57 $title = Translate::tran($title, 'en'); 58 $title = Translate::tran($title, 'en');
  59 + }
58 $i=1; 60 $i=1;
59 $sign = generateRoute($title); 61 $sign = generateRoute($title);
60 $info = self::where(['project_id' => $project_id, 'source' => $source, 'source_id'=>$source_id])->first(); 62 $info = self::where(['project_id' => $project_id, 'source' => $source, 'source_id'=>$source_id])->first();
@@ -116,7 +118,7 @@ class RouteMap extends Base @@ -116,7 +118,7 @@ class RouteMap extends Base
116 public static function setRoute($title, $source, $source_id, $project_id = 0){ 118 public static function setRoute($title, $source, $source_id, $project_id = 0){
117 $route = self::generateRoute($title, $source, $source_id, $project_id); 119 $route = self::generateRoute($title, $source, $source_id, $project_id);
118 if(!$route){ 120 if(!$route){
119 - throw new \Exception('路由不能为空'); 121 + throw new \Exception('路由生成失败');
120 } 122 }
121 try { 123 try {
122 $route_map = self::where('project_id', $project_id)->where('source_id', $source_id)->where('source', $source)->first(); 124 $route_map = self::where('project_id', $project_id)->where('source_id', $source_id)->where('source', $source)->first();