作者 lyh

gx脚本

@@ -56,6 +56,25 @@ class NewsExtendController extends BaseController @@ -56,6 +56,25 @@ class NewsExtendController extends BaseController
56 } 56 }
57 57
58 /** 58 /**
  59 + * @remark :修改状态
  60 + * @name :status
  61 + * @author :lyh
  62 + * @method :post
  63 + * @time :2025/5/27 9:22
  64 + */
  65 + public function status(){
  66 + $this->request->validate([
  67 + 'id' => 'required',
  68 + 'status' => 'required',
  69 + ], [
  70 + 'id.required' => '字段名称不能为空',
  71 + 'status.required' => '字段类型不能为空',
  72 + ]);
  73 + $data = $this->logic->extendSave();
  74 + $this->response('success', Code::SUCCESS, $data);
  75 + }
  76 +
  77 + /**
59 * @remark :删除扩展字段 78 * @remark :删除扩展字段
60 * @name :del 79 * @name :del
61 * @author :lyh 80 * @author :lyh
@@ -30,6 +30,7 @@ class NewsExtendLogic extends BaseLogic @@ -30,6 +30,7 @@ class NewsExtendLogic extends BaseLogic
30 * @time :2025/5/26 15:17 30 * @time :2025/5/26 15:17
31 */ 31 */
32 public function list($map){ 32 public function list($map){
  33 + $map['status'] = 1;
33 $data = $this->model->list($map); 34 $data = $this->model->list($map);
34 return $this->success($data); 35 return $this->success($data);
35 } 36 }
@@ -61,6 +62,18 @@ class NewsExtendLogic extends BaseLogic @@ -61,6 +62,18 @@ class NewsExtendLogic extends BaseLogic
61 } 62 }
62 63
63 /** 64 /**
  65 + * @remark :修改状态
  66 + * @name :extendStatus
  67 + * @author :lyh
  68 + * @method :post
  69 + * @time :2025/5/27 9:20
  70 + */
  71 + public function extendStatus(){
  72 + $result = $this->model->edit(['status'=>$this->param['status']],['id'=>$this->param['id']]);
  73 + return $this->success(['result'=>$result]);
  74 + }
  75 +
  76 + /**
64 * @remark :删除字段 77 * @remark :删除字段
65 * @name :extendDel 78 * @name :extendDel
66 * @author :lyh 79 * @author :lyh
@@ -8,6 +8,8 @@ use App\Http\Logic\Bside\BaseLogic; @@ -8,6 +8,8 @@ use App\Http\Logic\Bside\BaseLogic;
8 use App\Models\News\News; 8 use App\Models\News\News;
9 use App\Models\News\NewsCategory; 9 use App\Models\News\NewsCategory;
10 use App\Models\News\NewsCategory as NewsCategoryModel; 10 use App\Models\News\NewsCategory as NewsCategoryModel;
  11 +use App\Models\News\NewsExtend;
  12 +use App\Models\News\NewsExtendInfo;
11 use App\Models\RouteMap\RouteMap; 13 use App\Models\RouteMap\RouteMap;
12 use App\Models\Template\BTemplate; 14 use App\Models\Template\BTemplate;
13 use App\Services\CosService; 15 use App\Services\CosService;
@@ -79,6 +81,7 @@ class NewsLogic extends BaseLogic @@ -79,6 +81,7 @@ class NewsLogic extends BaseLogic
79 $this->edit(['url' => $route], ['id' => $id]); 81 $this->edit(['url' => $route], ['id' => $id]);
80 $this->curlDelRoute(['new_route'=>$route]); 82 $this->curlDelRoute(['new_route'=>$route]);
81 } 83 }
  84 + $this->model->saveExtendInfo($id,$this->param['extend'] ?? []);
82 $this->addUpdateNotify(RouteMap::SOURCE_NEWS,$route); 85 $this->addUpdateNotify(RouteMap::SOURCE_NEWS,$route);
83 return $this->success(['id'=>$id]); 86 return $this->success(['id'=>$id]);
84 } 87 }
@@ -143,11 +146,12 @@ class NewsLogic extends BaseLogic @@ -143,11 +146,12 @@ class NewsLogic extends BaseLogic
143 { 146 {
144 $info = $this->model->read($this->param); 147 $info = $this->model->read($this->param);
145 if($info === false){ 148 if($info === false){
146 - $this->fail('error'); 149 + $this->fail('当前数据不存在');
147 } 150 }
148 $info['category_id'] = explode(',',trim($info['category_id'],',')); 151 $info['category_id'] = explode(',',trim($info['category_id'],','));
149 $info['image_link'] = getImageUrl($info['image'],$this->user['storage_type'],$this->user['project_location']); 152 $info['image_link'] = getImageUrl($info['image'],$this->user['storage_type'],$this->user['project_location']);
150 $info['og_image'] = getImageUrl(empty($info['og_image']) ? $info['image'] : $info['og_image'],$this->user['storage_type'],$this->user['project_location']); 153 $info['og_image'] = getImageUrl(empty($info['og_image']) ? $info['image'] : $info['og_image'],$this->user['storage_type'],$this->user['project_location']);
  154 + $info['extend'] = $this->model->getExtendInfo($info['id']);
151 return $this->success($info); 155 return $this->success($info);
152 } 156 }
153 157
@@ -32,4 +32,124 @@ class News extends Base @@ -32,4 +32,124 @@ class News extends Base
32 public function getRelatedProductIdAttribute($value){ 32 public function getRelatedProductIdAttribute($value){
33 return Arr::setToArr($value); 33 return Arr::setToArr($value);
34 } 34 }
  35 +
  36 + /**
  37 + * @remark :扩展字段根据type返回类型
  38 + * @name :setTypValues
  39 + * @author :lyh
  40 + * @method :post
  41 + * @time :2023/12/6 14:43
  42 + */
  43 + public function getExtendInfo($news_id){
  44 + $extendModel = new NewsExtend();
  45 + $list = $extendModel->list([],'id',['id','type','key','title']);
  46 + if(empty($list)){
  47 + return [];
  48 + }
  49 + $extendInfoModel = new NewsExtendInfo();
  50 + $infoList = $extendInfoModel->list(['news_id'=>$news_id],'created_at');
  51 + foreach ($list as $k=>$v){
  52 + if($v['type'] == 3 || $v['type'] == 4){
  53 + $v['values'] = [];
  54 + }else{
  55 + $v['values'] = '';
  56 + }
  57 + if(!empty($infoList)){
  58 + foreach ($infoList as $values){
  59 + if($v['key'] == $values['key']){
  60 + $v = $this->setTypValues($v,$values);
  61 + break;
  62 + }
  63 + }
  64 + }
  65 + $list[$k] = $v;
  66 + }
  67 + return $list;
  68 + }
  69 +
  70 +
  71 + /**
  72 + * @remark :扩展字段根据type返回类型
  73 + * @name :setTypValues
  74 + * @author :lyh
  75 + * @method :post
  76 + * @time :2023/12/6 14:43
  77 + */
  78 + public function setTypValues($v,$info){
  79 + if($v['type'] == 3){
  80 + $arr = json_decode($info['values']);
  81 + foreach ($arr as $k1=>$v1){
  82 + $v1 = (array)$v1;
  83 + $v1['url'] = getImageUrl($v1['url'],$this->user['storage_type'],$this->user['project_location']);
  84 + $arr[$k1] = $v1;
  85 + }
  86 + $v['values'] = $arr;
  87 + }elseif($v['type'] == 4){
  88 + $arr1 = json_decode($info['values']);
  89 + foreach ($arr1 as $k1=>$v1){
  90 + $v1 = (array)$v1;
  91 + if(isset($v1['url'])){
  92 + $v1['url'] = getFileUrl($v1['url'],$this->user['storage_type'],$this->user['project_location'],$this->user['file_cdn'] ?? 0);
  93 + }else{
  94 + $v1 = getFileUrl($v1,$this->user['storage_type'],$this->user['project_location'],$this->user['file_cdn'] ?? 0);
  95 + }
  96 + $arr1[$k1] = $v1;
  97 + }
  98 + $v['values'] = $arr1;
  99 + }else{
  100 + $v['values'] = $info['values'];
  101 + }
  102 + return $v;
  103 + }
  104 +
  105 + /**
  106 + * @remark :保存扩展字段
  107 + * @name :saveExtend
  108 + * @author :lyh
  109 + * @method :post
  110 + * @time :2023/11/9 15:02
  111 + */
  112 + public function saveExtendInfo($news_id,$extend){
  113 + //先删除以前的数据
  114 + $extendInfoModel = new NewsExtendInfo();
  115 + $extendInfoModel->del(['news_id'=>$news_id]);
  116 + if(empty($extend)) {
  117 + return true;
  118 + }
  119 + foreach ($extend as $k => $v){
  120 + if(empty($v['values'])){
  121 + continue;
  122 + }
  123 + $v = $this->saveHandleExtend($v,$news_id);
  124 + $extendInfoModel->add($v);
  125 + }
  126 + return true;
  127 + }
  128 +
  129 + /**
  130 + * @remark :保存扩展字段时处理数据
  131 + * @name :saveHandleExtend
  132 + * @author :lyh
  133 + * @method :post
  134 + * @time :2023/12/6 15:11
  135 + */
  136 + public function saveHandleExtend(&$v,$news_id){
  137 + unset($v['title']);
  138 + if($v['type'] == 3){
  139 + foreach ($v['values'] as $k1=>$v1){
  140 + $v1['url'] = str_replace_url($v1['url']);
  141 + $v['values'][$k1] = $v1;
  142 + }
  143 + $v['values'] = json_encode($v['values']);
  144 + }elseif ($v['type'] == 4){
  145 + foreach ($v['values'] as $k1=>$v1){
  146 + $v1['url'] = str_replace_url($v1['url']);
  147 + $v['values'][$k1] = $v1;
  148 + }
  149 + $v['values'] = json_encode($v['values']);
  150 + }
  151 + $v['project_id'] = $this->user['project_id'];
  152 + $v['news_id'] = $news_id;
  153 + return $v;
  154 + }
35 } 155 }