DiscussionService.php 964 B

123456789101112131415161718192021222324252627282930313233
  1. <?php
  2. namespace App\Services;
  3. use App\Http\Api\Mq;
  4. use App\Http\Resources\DiscussionResource;
  5. use App\Models\Discussion;
  6. class DiscussionService
  7. {
  8. public function create(array $data): Discussion
  9. {
  10. if (isset($data['parent'])) {
  11. $parentInfo = Discussion::find($data['parent']);
  12. if (! $parentInfo) {
  13. throw new \Exception('没有找到parent', 500);
  14. }
  15. $data['res_id '] = $parentInfo->res_id;
  16. $data['res_type'] = $parentInfo->res_type;
  17. }
  18. $discussion = Discussion::create($data);
  19. // 更新parent children_count
  20. if (isset($data['parent'])) {
  21. $parentInfo->increment('children_count', 1);
  22. $parentInfo->save();
  23. }
  24. if (isset($data['notification']) && $data['notification'] == 'true') {
  25. Mq::publish('discussion', new DiscussionResource($discussion));
  26. }
  27. return $discussion;
  28. }
  29. }