CategoryRepository.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019-06-10
  6. * Time: 17:40
  7. */
  8. namespace App\Repositories;
  9. use App\Models\Category;
  10. use App\Models\CategoryTopic;
  11. use Dingo\Api\Http\Response;
  12. use Illuminate\Support\Facades\DB;
  13. use Illuminate\Database\QueryException;
  14. use Illuminate\Support\Facades\Log;
  15. class CategoryRepository {
  16. public function __construct(Category $category,CategoryTopic $categoryTopic){
  17. $this->category = $category;
  18. $this->categoryTopic = $categoryTopic;
  19. }
  20. //列表
  21. public function index($request){
  22. $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
  23. $where = [];
  24. if(isset($request['name'])){
  25. $where[] = ['name', 'like', "%{$request['name']}%"];
  26. }
  27. return $this->category->where($where)->paginate($perPage);
  28. }
  29. //详情
  30. public function view($request){
  31. return $this->category->where(['id'=>$request['id']])->first();
  32. }
  33. //创建
  34. public function create($request){
  35. $category = $this->category->where(['name'=>$request['name']])->first();
  36. if($category){
  37. return Response::create([
  38. 'message' => '该分类已存在',
  39. 'status_code' => 500
  40. ]);
  41. }
  42. $data = [
  43. 'name' => $request['name'],
  44. 'img' => $request['img'],
  45. //'is_suggest' => $request['is_suggest'],
  46. 'desc' => $request['desc'],
  47. ];
  48. $topic_ids = '';
  49. if(!empty($request['topic_ids'])){
  50. $topic_ids = explode(',', $request['topic_ids']);
  51. }
  52. DB::beginTransaction();
  53. try{
  54. $categoryInfo = $this->category->create($data);
  55. if($categoryInfo){
  56. if(!empty($topic_ids)){
  57. $category_topic_data = [];
  58. foreach($topic_ids as $value){
  59. $category_topic_data[] = [
  60. 'category_id' => $categoryInfo->id,
  61. 'topic_id' => $value,
  62. ];
  63. }
  64. $this->categoryTopic->insert($category_topic_data);
  65. }
  66. }
  67. DB::commit();
  68. return Response::create();
  69. }catch (QueryException $exception){
  70. DB::rollBack();
  71. Log::debug('新增话题分组:'.$exception->getMessage());
  72. return Response::create([
  73. 'message' => '新增话题失败,请重试',
  74. 'error' => $exception->getMessage(),
  75. 'status_code' => 500
  76. ]);
  77. }
  78. }
  79. //编辑
  80. public function edit($request){
  81. $category = $this->category->where(['id'=>$request['id']])->first();
  82. if(!$category){
  83. return Response::create([
  84. 'message' => '该分类不存在',
  85. 'status_code' => 500
  86. ]);
  87. }
  88. $_category = $this->category->where(['name'=>$request['name']])->where('id','<>',$category->id)->first();
  89. if($_category){
  90. return Response::create([
  91. 'message' => '该分类已存在',
  92. 'status_code' => 500
  93. ]);
  94. }
  95. $category->name = $request['name'];
  96. $category->img = $request['img'];
  97. $category->desc = $request['desc'];
  98. $topic_ids = [];
  99. if(!empty($request['topic_ids'])){
  100. $topic_ids = explode(',', $request['topic_ids']);
  101. }
  102. DB::beginTransaction();
  103. try{
  104. $categoryInfo = $category->save();
  105. if($categoryInfo){
  106. //删除
  107. $this->categoryTopic->where(['category_id'=>$category->id])->delete();
  108. if($topic_ids){
  109. $category_topic_data = [];
  110. foreach($topic_ids as $value){
  111. $category_topic_data[] = [
  112. 'category_id' => $category->id,
  113. 'topic_id' => $value,
  114. ];
  115. }
  116. $this->categoryTopic->insert($category_topic_data);
  117. }
  118. }
  119. DB::commit();
  120. return Response::create();
  121. }catch (QueryException $exception){
  122. DB::rollBack();
  123. Log::debug('新增话题分组:'.$exception->getMessage());
  124. return Response::create([
  125. 'message' => '新增话题失败,请重试',
  126. 'error' => $exception->getMessage(),
  127. 'status_code' => 500
  128. ]);
  129. }
  130. }
  131. //修改
  132. public function update($request){
  133. $category = $this->category->where('id', $request['id'])->first();
  134. if(isset($request['is_suggest']) && $request['is_suggest'] !== null){
  135. $category->is_suggest = $request['is_suggest'];
  136. }
  137. $res = $category->save();
  138. if($res){
  139. return Response::create();
  140. }
  141. }
  142. }