|
@@ -12,11 +12,16 @@ use Hyperf\DbConnection\Db;
|
|
|
use PhpParser\Node\Expr\Clone_;
|
|
|
use Overtrue\Pinyin\Pinyin;
|
|
|
|
|
|
+use function Hyperf\Support\retry;
|
|
|
+use function PHPSTORM_META\type;
|
|
|
+use function PHPUnit\Framework\assertIsNotInt;
|
|
|
+use function PHPUnit\Framework\isNull;
|
|
|
+
|
|
|
#[RpcService(name: "FooterService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
|
|
|
class FooterService implements FooterServiceInterface
|
|
|
{
|
|
|
/**
|
|
|
- * 获取底部导航
|
|
|
+ * 获取底部导航列表
|
|
|
* @param array $data
|
|
|
* @return array
|
|
|
*/
|
|
@@ -67,18 +72,45 @@ class FooterService implements FooterServiceInterface
|
|
|
if(empty($webid)){
|
|
|
return Result::error("该网站不存在!");
|
|
|
}
|
|
|
+ $isChild = 0;
|
|
|
+ if(isset($data['is_child']) && !empty($data['is_child']) && $data['is_child'] == 1){
|
|
|
+ $child = [
|
|
|
+ 'name' => $data['child_name'],
|
|
|
+ 'website_id' => $data['website_id'],
|
|
|
+ 'type' => 0,
|
|
|
+ ];
|
|
|
+ $isChild = $data['is_child'];
|
|
|
+ unset($data['child_name']);
|
|
|
+ unset($data['is_child']);
|
|
|
+ }
|
|
|
+ // return Result::success($data);
|
|
|
Db::beginTransaction();
|
|
|
try{
|
|
|
// 同一网站下的底部导航名称不能重复
|
|
|
$name = FooterCategory::where('website_id',$data['website_id'])->where('name',$data['name'])->first();
|
|
|
if(!empty($name)){
|
|
|
+ Db::rollBack();
|
|
|
return Result::error("该底部导航名称已存在!");
|
|
|
}
|
|
|
$pinyin = new Pinyin();
|
|
|
- $result = FooterCategory::insertGetId($data);
|
|
|
- $name_pinyin['name_pinyin'] = $pinyin->permalink($data['name'], '') ;
|
|
|
- // return Result::success($name_pinyin);
|
|
|
- $result = FooterCategory::where('id', $result)->update($name_pinyin);
|
|
|
+ $data['name_pinyin'] = $pinyin->permalink($data['name'], '') ;
|
|
|
+ $result = [];
|
|
|
+ $result['parent'] = FooterCategory::insertGetId($data);
|
|
|
+ if($isChild == 1){
|
|
|
+ $child['pid'] = $result['parent'];
|
|
|
+ $child['name_pinyin'] = $pinyin->permalink($child['name'], '');
|
|
|
+ // 暂时用不到 若是一个栏目对应多个子级栏目 则需要判断子级栏目名称是否重复
|
|
|
+ // $child_name = FooterCategory::where('website_id',$data['website_id'])->where('pid',$child['pid'])->first();
|
|
|
+ // if(!empty($child_name)){
|
|
|
+ // Db::rollBack();
|
|
|
+ // return Result::error("该子级栏目名称已存在!");
|
|
|
+ // }
|
|
|
+ $result['child'] = FooterCategory::insertGetId($child);
|
|
|
+ if(empty($result['child'])){
|
|
|
+ Db::rollBack();
|
|
|
+ return Result::error("子级栏目添加失败!");
|
|
|
+ }
|
|
|
+ }
|
|
|
Db::commit();
|
|
|
} catch(\Throwable $ex){
|
|
|
Db::rollBack();
|
|
@@ -86,11 +118,7 @@ class FooterService implements FooterServiceInterface
|
|
|
return Result::error("添加失败!",$errorMessage);
|
|
|
}
|
|
|
}
|
|
|
- if(empty($result)){
|
|
|
- return Result::error("添加失败!");
|
|
|
- }else{
|
|
|
return Result::success($result);
|
|
|
- }
|
|
|
}
|
|
|
/**
|
|
|
* 修改底部导航
|
|
@@ -109,8 +137,10 @@ class FooterService implements FooterServiceInterface
|
|
|
->leftJoin("website","website.id","footer_category.website_id")
|
|
|
->select("footer_category.*","website.website_name","website.id as website_id")
|
|
|
->first();
|
|
|
- if(isset($data['name'])){
|
|
|
- $footer_category['name'] = $data['name'];
|
|
|
+ $child = FooterCategory::where('pid',$footer_category['id'])->first();
|
|
|
+ if(!empty($child)){
|
|
|
+ $footer_category = array_merge([$footer_category->toArray()], [$child->toArray()]);
|
|
|
+ // $footer_category['child'] = [];
|
|
|
}
|
|
|
$result = [
|
|
|
'rows'=>$footer_category,
|
|
@@ -127,9 +157,30 @@ class FooterService implements FooterServiceInterface
|
|
|
return Result::error("该网站不存在!");
|
|
|
}
|
|
|
$pinyin = new Pinyin();
|
|
|
- $data['name_pinyin'] = $pinyin->permalink($data['name'], '');
|
|
|
-
|
|
|
- $result = FooterCategory::where('id', $data['id'])->update($data);
|
|
|
+ $child_data = [];
|
|
|
+ if(isset($data['child_name']) &&!empty($data['child_name'])){
|
|
|
+ $child_data = [
|
|
|
+ 'name' => $data['child_name'],
|
|
|
+ 'name_pinyin' => $pinyin->permalink($data['child_name'], ''),
|
|
|
+ ];
|
|
|
+ unset($data['child_name']);
|
|
|
+ }
|
|
|
+ Db::beginTransaction();
|
|
|
+ try{
|
|
|
+ $result = [];
|
|
|
+ $data['name_pinyin'] = $pinyin->permalink($data['name'], '');
|
|
|
+ $result['rows'] = FooterCategory::where('id', $data['id'])->update($data);
|
|
|
+ $child = FooterCategory::where('pid',$data['id'])->first()->toArray();
|
|
|
+ if(!empty($child) && !empty($child_data)){
|
|
|
+ $result['child'] = FooterCategory::where('id', $child['id'])->update($child_data);
|
|
|
+ }
|
|
|
+ Db::commit();
|
|
|
+ } catch(\Throwable $ex){
|
|
|
+ Db::rollBack();
|
|
|
+ var_dump($ex->getMessage());
|
|
|
+ return Result::error("修改失败!!",0);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
if (empty($result)) {
|
|
|
return Result::error("修改失败!");
|
|
@@ -152,12 +203,15 @@ class FooterService implements FooterServiceInterface
|
|
|
Db::rollBack();
|
|
|
return Result::error("该底部导航不存在!");
|
|
|
}else{
|
|
|
+
|
|
|
$result['footer_category'] = FooterCategory::where('id', $data['id'])->delete();
|
|
|
$result['footer_content'] = FooterContent::where('fcat_id', $data['id'])->delete();
|
|
|
+ $child = FooterCategory::where('pid', $data['id'])->first();
|
|
|
+ if(!empty($child)){
|
|
|
+ $result['child'] = FooterCategory::where('pid', $data['id'])->delete();
|
|
|
+ $result['child_content'] = FooterContent::where('fcat_id', $child['id'])->delete();
|
|
|
+ }
|
|
|
Db::commit();
|
|
|
- // $result = FooterCategory::where('footer_category.id',$data['id'])
|
|
|
- // ->leftJoin("footer_content","footer_content.fcat_id","footer_category.id")
|
|
|
- // ->delete();
|
|
|
}
|
|
|
|
|
|
} catch(\Throwable $ex){
|
|
@@ -176,21 +230,22 @@ class FooterService implements FooterServiceInterface
|
|
|
{
|
|
|
// 底部导航类型 0:内容型;1:列表型;
|
|
|
// var_dump($data);
|
|
|
-
|
|
|
$cat = FooterCategory::where('id', $data['fcat_id'])->first();
|
|
|
+ // return Result::success($cat);
|
|
|
if (!$cat) {
|
|
|
return Result::error("该底部导航不存在!");
|
|
|
}
|
|
|
- if($cat['type'] != $data['type']){
|
|
|
+ if($cat['type'] != $data['type_id']){
|
|
|
return Result::error("请输入正确的底部导航类型!");
|
|
|
}
|
|
|
+ // 内容型底部导航只能有一条内容
|
|
|
if($cat['type'] == 0){
|
|
|
$content = FooterContent::where('fcat_id', $data['fcat_id'])->first();
|
|
|
if(!empty($content)){
|
|
|
return Result::error("该底部导航已添加内容!");
|
|
|
}
|
|
|
}else{
|
|
|
- // return Result::success($data);
|
|
|
+ // 列表型底部导航\列表标头型底部导航列表标题不能重复
|
|
|
if(!isset($data['list_title']) || empty($data['list_title'])){
|
|
|
return Result::error("请输入底部导航列表标题!");
|
|
|
}
|
|
@@ -199,7 +254,6 @@ class FooterService implements FooterServiceInterface
|
|
|
return Result::error("该列表标题已存在!");
|
|
|
}
|
|
|
}
|
|
|
- unset($data['type']);
|
|
|
$result = FooterContent::insertGetId($data);
|
|
|
if(empty($result)){
|
|
|
return Result::error("添加失败!");
|
|
@@ -216,31 +270,39 @@ class FooterService implements FooterServiceInterface
|
|
|
{
|
|
|
|
|
|
$where = [];
|
|
|
- array_push($where, ['fcat_id',$data['fcat_id']]);
|
|
|
- $type = FooterCategory::where('id', $data['fcat_id'])->value('type');
|
|
|
- if($type == 1){
|
|
|
+ $fcat_id = [];
|
|
|
+ $footer_category = FooterCategory::where('id', $data['fcat_id'])->first();
|
|
|
+ if(empty($footer_category)){
|
|
|
+ return Result::error("该底部导航不存在!");
|
|
|
+ }
|
|
|
+ $footer_category = $footer_category->toArray();
|
|
|
+ $fcat_id = $footer_category['id'];
|
|
|
+ if($footer_category['type'] == 1){
|
|
|
if(isset($data['list_title'])){
|
|
|
array_push($where, ['list_title','like','%'.$data['list_title'].'%']);
|
|
|
}
|
|
|
if(isset($data['con_title'])){
|
|
|
array_push($where, ['con_title','like','%'.$data['con_title'].'%']);
|
|
|
}
|
|
|
+ $child = FooterCategory::where('pid', $data['fcat_id'])->first();
|
|
|
+ if($child){
|
|
|
+ $fcat_id = [$footer_category['id'], $child->id];
|
|
|
+ }
|
|
|
}
|
|
|
- $count = FooterContent::where($where)->count();
|
|
|
- $rep = FooterContent::where($where)
|
|
|
- ->leftJoin('footer_category','footer_category.id','fcat_id')
|
|
|
- ->select('footer_content.*','footer_category.type')
|
|
|
- ->limit($data['pageSize'])
|
|
|
- ->offset(($data['page']-1)*$data['pageSize'])
|
|
|
- ->orderBy("updated_at","desc")
|
|
|
- ->get();
|
|
|
-
|
|
|
+ $count = FooterContent::whereIn('fcat_id', (array)$fcat_id)->where($where)->count();
|
|
|
+ $rep = FooterContent::whereIn('fcat_id', (array)$fcat_id)->where($where)
|
|
|
+ ->leftJoin('footer_category', 'footer_category.id', '=', 'footer_content.fcat_id')
|
|
|
+ ->select('footer_content.*', 'footer_category.type', 'footer_category.name as fcat_name')
|
|
|
+ ->limit($data['pageSize'])
|
|
|
+ ->offset(($data['page'] - 1) * $data['pageSize'])
|
|
|
+ ->orderBy("updated_at", "desc")
|
|
|
+ ->get();
|
|
|
if(empty($rep)){
|
|
|
return Result::error("没有查到相关数据!");
|
|
|
}else{
|
|
|
$result = [
|
|
|
- 'rows'=>$rep,
|
|
|
- 'count'=>$count
|
|
|
+ 'rows' => $rep,
|
|
|
+ 'count' => $count
|
|
|
];
|
|
|
return Result::success($result);
|
|
|
}
|
|
@@ -255,13 +317,12 @@ class FooterService implements FooterServiceInterface
|
|
|
{
|
|
|
$result = FooterContent::where('footer_content.id', $data['id'])
|
|
|
->leftJoin('footer_category','footer_category.id','fcat_id')
|
|
|
- ->select('footer_content.*','footer_category.type')
|
|
|
+ ->select('footer_content.*','footer_category.type','footer_category.pid','footer_category.name as fcat_name')
|
|
|
->first();
|
|
|
if(empty($result)){
|
|
|
return Result::error("请输入正确的底部导航内容id!");
|
|
|
- }else{
|
|
|
- return Result::success($result);
|
|
|
}
|
|
|
+ return Result::success($result);
|
|
|
}
|
|
|
/**
|
|
|
* 编辑底部导航(列表)内容
|
|
@@ -277,10 +338,10 @@ class FooterService implements FooterServiceInterface
|
|
|
if(!$content){
|
|
|
return Result::error("该底部导航内容不存在!");
|
|
|
}
|
|
|
- if($content['type'] != $data['type']){
|
|
|
+ if($content['type'] != $data['type_id']){
|
|
|
return Result::error("请输入正确的底部导航类型!");
|
|
|
}
|
|
|
- if($content['type'] == 1){
|
|
|
+ if($content['type_id'] == 1){
|
|
|
if(!isset($data['list_title']) || empty($data['list_title'])){
|
|
|
return Result::error("请输入底部导航列表标题!");
|
|
|
}
|
|
@@ -289,7 +350,7 @@ class FooterService implements FooterServiceInterface
|
|
|
return Result::error("该列表标题已存在!");
|
|
|
}
|
|
|
}
|
|
|
- unset($data['type']);
|
|
|
+ unset($data['type_id']);
|
|
|
$result = FooterContent::where('id', $data['id'])->update($data);
|
|
|
if(empty($result)){
|
|
|
return Result::error("修改失败!");
|