浏览代码

Merge branch '20250522_diywebfr'

15313670163 3 天之前
父节点
当前提交
c7e7bb5313
共有 3 个文件被更改,包括 302 次插入16 次删除
  1. 268 16
      app/JsonRpc/PublicRpcService.php
  2. 7 0
      app/JsonRpc/PublicRpcServiceInterface.php
  3. 27 0
      app/Model/LevelUser.php

+ 268 - 16
app/JsonRpc/PublicRpcService.php

@@ -1148,6 +1148,50 @@ class PublicRpcService implements PublicRpcServiceInterface
         // 对传入的 page_type 数组进行去重、转换为整数并重新索引
         $data['page_type'] = array_values(array_unique(array_map('intval', $data['page_type'])));
         $data['page_type'] = json_encode($data['page_type']);
+        if($data['component_num'] == 1){
+            $component_arr[0] = [
+                'size_id' => $data['size_id'],
+            ];
+        }else{
+            $size = SectorPlace::where('type',$data['place_type'])
+            ->leftJoin('size','size.id','=','sector_place.size_id')
+            ->select('sector_place.*','size.width','size.height')
+            ->orderBy('sector_place.sort_id','asc')
+            ->get()->all();
+            if(!empty($size)){
+                for ($i=0; $i < $data['component_num']; $i++) { 
+                    $component_arr[$i] = [
+                        'size_id' => $size[$i]['size_id'],
+                        'width' => $size[$i]['width'],
+                        'height' => $size[$i]['height'],
+                        'sort' => $size[$i]['sort_id'],
+                        'place_name' => $size[$i]['name'],
+                    ];
+                }
+            }
+            // $code_arr 
+            
+        }
+        if($data['sector_type'] == 2 || $data['sector_type'] == 3){
+            $sector_code = [
+                'sectorName' => $data['sector_name'],
+                'sectorId' => $data['sector_id'],
+                'sectorType' => $data['sector_type'],
+                'sectorPlace' => $data['place_type'],
+                'compnentList' => $component_arr,
+                'ad' => [],
+            ];
+        }else{
+            $sector_code = [
+                'sectorName' => $data['sector_name'],
+                'sectorId' => $data['sector_id'],
+                'sectorType' => $data['sector_type'],
+                'sectorPlace' => $data['place_type'],
+                'compnentList' => $component_arr,
+            ];
+        }
+        // return Result::success($sector_code);
+        $data['sector_code'] = json_encode($sector_code);
         $template = Template::where('template_id', $data['template_id'])
             ->first();
         if (empty($template)) {
@@ -1199,6 +1243,51 @@ class PublicRpcService implements PublicRpcServiceInterface
                 return Result::error('通栏编号已存在!');
             }
         }
+        if($data['component_num'] == 1){
+            $component_arr[0] = [
+                'size_id' => $data['size_id'],
+            ];
+        }else{
+            $size = SectorPlace::where('type',$data['place_type'])
+            ->leftJoin('size','size.id','=','sector_place.size_id')
+            ->select('sector_place.*','size.width','size.height')
+            ->orderBy('sector_place.sort_id','asc')
+            ->get()->all();
+            if(!empty($size)){
+                for ($i=0; $i < $data['component_num']; $i++) { 
+                    $component_arr[$i] = [
+                        'size_id' => intval($size[$i]['size_id']),
+                        'width' => intval($size[$i]['width']),
+                        'height' => intval($size[$i]['height']),
+                        'sort' => intval($size[$i]['sort_id']),
+                        'place_name' => strval($size[$i]['name']),
+                    ];
+                }
+            }
+            // $code_arr 
+            
+        }
+        if($data['sector_type'] == 2 || $data['sector_type'] == 3){
+            $sector_code = [
+                'sectorName' => strval($data['sector_name']),
+                'sectorId' => intval($data['sector_id']),
+                'sectorType' => intval($data['sector_type']),
+                'sectorPlace' => intval($data['place_type']),
+                'compnentList' => $component_arr,
+                'ad' => [],
+            ];
+        }else{
+            $sector_code = [
+                'sectorName' => strval($data['sector_name']),
+
+                'sectorId' => intval($data['sector_id']),
+                'sectorType' => intval($data['sector_type']),
+                'sectorPlace' => intval($data['place_type']),
+                'compnentList' => $component_arr,
+            ];
+        }
+        // return Result::success($sector_code);
+        $data['sector_code'] = json_encode($sector_code);
         // 对传入的 page_type 数组进行去重、转换为整数并重新索引
         $data['page_type'] = array_values(array_unique(array_map('intval', $data['page_type'])));
         $data['page_type'] = json_encode($data['page_type']);
@@ -1530,27 +1619,190 @@ class PublicRpcService implements PublicRpcServiceInterface
     public function getSectorPlace(array $data): array
     {
         if(isset($data['sector_num']) && !empty($data['sector_num'])){
-            $where['t.sector_num'] = $data['sector_num'];
-            $template = DB::table(DB::raw('(
-                SELECT 
-                    sp.*, 
-                    s.width, 
-                    s.height,
-                    ROW_NUMBER() OVER (PARTITION BY sp.type ORDER BY sp.id DESC) as rn
-                FROM sector_place sp
-                LEFT JOIN size s ON sp.size_id = s.id
-            ) as t'))
-            ->where('rn', 1)
+            $where['sector_place.component_num'] = $data['sector_num'];
+            $template =  SectorPlace::where('sector_place.type_id',1)
             ->where($where)
-            ->select('t.*')
+            ->leftJoin('size','sector_place.size_id','=','size.id')
+            ->select('sector_place.*','size.width','size.height')
             ->get();
         }
-        if(isset($data['type']) && !empty($data['type'])){
-            $template = SectorPlace::where('type', $data['type'])->get()->all();
-        }
         if(empty($template)){
-            return Result::error('未查询到通栏位置相关模版!');
+            return Result::error('未查询到相关通栏版式!');
         }
         return Result::success($template);
     }
+
+    /**
+     * 通栏版式管理-获取通栏版式列表
+     */ 
+    public function getSectorPlaceList(array $data): array
+    {
+        $where['sector_place.type_id'] = $data['type_id'];
+        if(isset($data['component_num']) && !empty($data['component_num'])){
+            $where['sector_place.component_num'] = $data['component_num'];
+        }
+        if(isset($data['sector_type']) && !empty($data['sector_type'])){
+            $where['sector_place.sector_type'] = $data['sector_type'];
+        }
+        if(isset($data['component_type']) && !empty($data['component_type'])){
+            $where['sector_place.component_type'] = $data['component_type'];
+        }
+        if(isset($data['name']) && !empty($data['name'])){
+            array_push($where,['sector_place.name', 'like', '%'.$data['name'].'%']);
+        }
+        if (isset($data['width']) && !empty($data['width']) && isset($data['height']) && !empty($data['height'])){
+            $size_id = Size::where('width','like','%' .$data['width'].'%')->where('height','like','%' .$data['height'].'%')->pluck('id');
+        } else if( isset($data['width']) && !empty($data['width'])){
+            $size_id = Size::where('width','like','%' .$data['width'].'%')->pluck('id');
+        }else if( isset($data['height']) && !empty($data['height'])){
+            $size_id = Size::where('height','like','%' .$data['height'].'%')->pluck('id');
+        }else{
+            $size_id = [];
+        }
+        $sector_place = SectorPlace::where($where)
+            ->when(!empty($size_id), function ($query) use ($size_id) {
+                $query->whereIn('sector_place.size_id', $size_id);
+            })
+            ->leftJoin('size','sector_place.size_id','=','size.id')
+            ->select('sector_place.*','size.width','size.height');
+        $result['count'] = $sector_place->count();
+        $result['row'] =$sector_place->paginate($data['page_size'], ['*'], 'page', $data['page']);
+        if(empty($result['count'])){
+            return Result::error("暂无相关版式数据!");
+        }
+        return Result::success($result);
+    }
+    /**
+     * 通栏版式管理-添加通栏版式
+     */ 
+    public function addSectorPlace(array $data): array
+    {
+        // 1:通栏;2:组件;
+        if($data['type_id'] == 1){
+            $sector_place = SectorPlace::where('sector_type', $data['type'])->first();
+            if(!empty($sector_place)){
+                return Result::error('通栏版式类别编号已存在!');
+            }
+            $data = [
+                'name' => $data['name'],
+                'component_num' => $data['component_num'], 
+                'size_id' => $data['size_id'],
+                'sort_id' => $data['sort_id'],
+                'sector_img' => $data['sector_img'],
+                'sector_type' => $data['type'],
+                'type_id' => $data['type_id'],
+            ];
+        }else{
+            $sector_type = SectorPlace::where('sector_type', $data['type'])->where('type_id',1)->first();
+            if(empty($sector_type)){
+                return Result::error('通栏版式类别不存在!');
+            }
+            $component_type = SectorPlace::where('component_type', $data['type'])->where('type_id',2)->first();
+            if(!empty($component_type)){
+                return Result::error('组件版式类别编号已存在!');
+            }
+            $data = [
+                'name' => $data['name'],
+                'component_num' => 0, 
+                'size_id' => $data['size_id'],
+                'sort_id' => $data['sort_id'],
+                'sector_img' => $data['sector_img'],
+                'component_type' => $data['type'],
+                'type_id' => $data['type_id'],
+            ];
+        }
+        
+        $result = SectorPlace::insertGetId($data);
+        if(empty($result)){
+            return Result::error('添加失败!');
+        }
+        return Result::success('添加成功!',$result);
+    }
+    /**
+     * 通栏版式管理-修改通栏版式
+     */ 
+    public function upSectorPlace(array $data): array
+    {
+       // 1:通栏;2:组件;
+        if($data['type_id'] == 1){
+            $sector_place = SectorPlace::where('sector_type', $data['type'])->first();
+            if(!empty($sector_place)){
+                return Result::error('通栏版式类别编号已存在!');
+            }
+            $data = [
+                'id' => $data['id'],
+                'name' => $data['name'],
+                'component_num' => $data['component_num'], 
+                'size_id' => $data['size_id'],
+                'sort_id' => $data['sort_id'],
+                'sector_img' => $data['sector_img'],
+                'sector_type' => $data['type'],
+                'type_id' => $data['type_id'],
+            ];
+        }else{
+            $sector_type = SectorPlace::where('sector_type', $data['type'])->where('type_id',1)->first();
+            if(empty($sector_type)){
+                return Result::error('通栏版式类别不存在!');
+            }
+            $component_type = SectorPlace::where('component_type', $data['type'])->where('type_id',2)->first();
+            if(!empty($component_type)){
+                return Result::error('组件版式类别编号已存在!');
+            }
+            $data = [
+                'id' => $data['id'],
+                'name' => $data['name'],
+                'component_num' => 0, 
+                'size_id' => $data['size_id'],
+                'sort_id' => $data['sort_id'],
+                'sector_img' => $data['sector_img'],
+                'component_type' => $data['type'],
+                'type_id' => $data['type_id'],
+            ];
+        }
+        $result = SectorPlace::where('id',$data['id'])->update($data);
+        if(empty($result)){
+            return Result::error('修改失败!');
+        }
+        return Result::success('修改成功!',$result);
+    }
+    /**
+     * 通栏版式管理-删除通栏版式
+     */ 
+    public function delSectorPlace(array $data): array
+    {
+        $sector_place = SectorPlace::where('id',$data['id'])->first();
+        if(empty($sector_place)){
+            return Result::error('通栏版式不存在!');
+        }
+        if($sector_place['type_id'] == 1){
+            $sector = Sector::where('place_type', $sector_place['sector_type'])->first();
+            if(!empty($sector)){
+                return Result::error('通栏版式分类已应用,暂不可删除!');
+            }
+        }else{
+            $sector = Component::where('place_type', $sector_place['component_type'])->first();
+            if(!empty($sector)){
+                return Result::error('组件版式分类已应用,暂不可删除!');
+            }
+        }
+       $result = SectorPlace::where('id',$data['id'])->delete();
+        if(empty($result)){
+            return Result::error('删除失败!');
+        }
+        return Result::success('删除成功!');
+    }
+    /**
+     * 自助建站-通栏版式管理-获取通栏版式详情
+     */
+    public function getSectorPlaceInfo(array $data): array
+    {
+        $result = SectorPlace::where('sector_place.id',$data['id'])
+        ->leftJoin('size','sector_place.size_id','=','size.id') 
+        ->select('sector_place.*','size.width','size.height')
+        ->first();
+        if(empty($result)){
+            return Result::error('通栏版式不存在!');
+        }
+        return Result::success($result);
+    }
 }

+ 7 - 0
app/JsonRpc/PublicRpcServiceInterface.php

@@ -185,4 +185,11 @@ interface PublicRpcServiceInterface
     public function getWebsiteTemplate(array $data): array;
     public function getAllSize(array $data): array;
     public function getSectorPlace(array $data): array;
+
+    // 通栏版式管理-获取通栏版式列表
+    public function getSectorPlaceList(array $data): array;
+    public function addSectorPlace(array $data): array;
+    public function upSectorPlace(array $data): array;
+    public function delSectorPlace(array $data): array;
+    public function getSectorPlaceInfo(array $data): array;
 }

+ 27 - 0
app/Model/LevelUser.php

@@ -0,0 +1,27 @@
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class LevelUser extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'level_user';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}