CategoryRepository.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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)->orderBy('sort', 'asc')->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. 'sort' => $request['sort'],
  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. $category->sort = $request['sort'];
  99. $topic_ids = [];
  100. if(!empty($request['topic_ids'])){
  101. $topic_ids = explode(',', $request['topic_ids']);
  102. }
  103. DB::beginTransaction();
  104. try{
  105. $categoryInfo = $category->save();
  106. if($categoryInfo){
  107. //删除
  108. $this->categoryTopic->where(['category_id'=>$category->id])->delete();
  109. if($topic_ids){
  110. $category_topic_data = [];
  111. foreach($topic_ids as $value){
  112. $category_topic_data[] = [
  113. 'category_id' => $category->id,
  114. 'topic_id' => $value,
  115. ];
  116. }
  117. $this->categoryTopic->insert($category_topic_data);
  118. }
  119. }
  120. DB::commit();
  121. return Response::create();
  122. }catch (QueryException $exception){
  123. DB::rollBack();
  124. Log::debug('新增话题分组:'.$exception->getMessage());
  125. return Response::create([
  126. 'message' => '新增话题失败,请重试',
  127. 'error' => $exception->getMessage(),
  128. 'status_code' => 500
  129. ]);
  130. }
  131. }
  132. //修改
  133. public function update($request){
  134. $category = $this->category->where('id', $request['id'])->first();
  135. if(isset($request['is_suggest']) && $request['is_suggest'] !== null){
  136. $category->is_suggest = $request['is_suggest'];
  137. }
  138. $res = $category->save();
  139. if($res){
  140. return Response::create();
  141. }
  142. }
  143. /**
  144. * 设置开启
  145. */
  146. public function isOpen($id)
  147. {
  148. $category = $this->category->where('id', $id)->first();
  149. if (!$category) {
  150. return Response::create([
  151. 'message' => '获取内容分类信息失败',
  152. 'status_code' => 500
  153. ]);
  154. }
  155. if ($category->is_open == 1) {
  156. $category->is_open = 0;
  157. } else {
  158. $category->is_open = 1;
  159. }
  160. DB::beginTransaction();
  161. try {
  162. $category->save();
  163. DB::commit();
  164. return Response::create();
  165. } catch (QueryException $exception) {
  166. DB::rollBack();
  167. Log::debug('开启分类失败:' . $id . $exception->getMessage());
  168. return Response::create([
  169. 'message' => '操作失败,请重试',
  170. 'error' => $exception->getMessage(),
  171. 'status_code' => 500
  172. ]);
  173. }
  174. }
  175. }