MessageRuleRepository.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/6/12
  6. * Time: 9:13
  7. */
  8. namespace App\Repositories;
  9. use App\Models\MessageRule;
  10. use Illuminate\Database\QueryException;
  11. use Dingo\Api\Http\Response;
  12. use Illuminate\Support\Carbon;
  13. use Illuminate\Support\Facades\DB;
  14. use Illuminate\Support\Facades\Log;
  15. use Illuminate\Support\Facades\Redis;
  16. use Symfony\Component\HttpKernel\Exception\HttpException;
  17. use Tymon\JWTAuth\Facades\JWTAuth;
  18. class MessageRuleRepository
  19. {
  20. public function __construct(MessageRule $messageRule)
  21. {
  22. $this->messageRule = $messageRule;
  23. }
  24. /**
  25. * 内容列表
  26. */
  27. public function lists($request)
  28. {
  29. $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
  30. $where = [];
  31. if(isset($request['title'])){
  32. $where[] = ['title', 'like', "%{$request['title']}%"];
  33. }
  34. if(isset($request['message_type'])){
  35. $where[] = ['message_type', $request['message_type']];
  36. }
  37. return $this->messageRule
  38. ->where($where)
  39. ->orderBy('id','desc')
  40. ->paginate($perPage);
  41. }
  42. /**
  43. * 创建消息规则
  44. */
  45. public function create($request)
  46. {
  47. $noticeGroups = explode(',', $request['notice_groups']);
  48. if(in_array(0, $noticeGroups)){
  49. $noticeGroups = 0;
  50. } else {
  51. if(array_diff($noticeGroups, [1,2])){
  52. return Response::create([
  53. 'message' => '通知群体参数有误',
  54. 'status_code' => 500
  55. ]);
  56. }
  57. $noticeGroups = implode(',', array_unique($noticeGroups));
  58. }
  59. $data = [
  60. 'title' => $request['title'],
  61. 'notice_groups' => $noticeGroups,
  62. 'message_type' => $request['message_type'],
  63. 'activity_url' => $request['activity_url']??'',
  64. 'cover' => $request['cover'],
  65. 'message_status' => 0,
  66. 'send_time' => isset($request['send_time']) && $request['send_time']? $request['send_time']:null,
  67. 'activity_time' => $request['activity_time']??'',
  68. 'sent_count' => 0,
  69. 'open_count' => 0
  70. ];
  71. DB::beginTransaction();
  72. try{
  73. $this->messageRule->create($data);
  74. DB::commit();
  75. return Response::create();
  76. }catch (QueryException $exception){
  77. DB::rollBack();
  78. Log::debug('创建消息规则:'.$exception->getMessage());
  79. return Response::create([
  80. 'message' => '添加失败,请重试',
  81. 'error' => $exception->getMessage(),
  82. 'status_code' => 500
  83. ]);
  84. }
  85. }
  86. }