123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Administrator
- * Date: 2019/6/12
- * Time: 9:13
- */
- namespace App\Repositories;
- use App\Models\MessageRule;
- use Illuminate\Database\QueryException;
- use Dingo\Api\Http\Response;
- use Illuminate\Support\Carbon;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Redis;
- use Symfony\Component\HttpKernel\Exception\HttpException;
- use Tymon\JWTAuth\Facades\JWTAuth;
- class MessageRuleRepository
- {
- public function __construct(MessageRule $messageRule)
- {
- $this->messageRule = $messageRule;
- }
- /**
- * 内容列表
- */
- public function lists($request)
- {
- $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
- $where = [];
- if(isset($request['title'])){
- $where[] = ['title', 'like', "%{$request['title']}%"];
- }
- if(isset($request['message_type'])){
- $where[] = ['message_type', $request['message_type']];
- }
- return $this->messageRule
- ->where($where)
- ->orderBy('id','desc')
- ->paginate($perPage);
- }
- /**
- * 创建消息规则
- */
- public function create($request)
- {
- $noticeGroups = explode(',', $request['notice_groups']);
- if(in_array(0, $noticeGroups)){
- $noticeGroups = 0;
- } else {
- if(array_diff($noticeGroups, [1,2])){
- return Response::create([
- 'message' => '通知群体参数有误',
- 'status_code' => 500
- ]);
- }
- $noticeGroups = implode(',', array_unique($noticeGroups));
- }
- $data = [
- 'title' => $request['title'],
- 'content' => isset($request['content'])? $request['content']:'',
- 'notice_groups' => $noticeGroups,
- 'message_type' => $request['message_type'],
- 'message_show_type' => isset($request['message_show_type'])? $request['message_show_type']:'',
- 'activity_url' => isset($request['activity_url'])? $request['activity_url']:'',
- 'cover' => $request['cover'],
- 'message_status' => 0,
- 'send_time' => isset($request['send_time']) && $request['send_time']? $request['send_time']:null,
- 'activity_time' => $request['activity_time']??'',
- 'sent_count' => 0,
- 'open_count' => 0
- ];
- DB::beginTransaction();
- try{
- $this->messageRule->create($data);
- DB::commit();
- return Response::create();
- }catch (QueryException $exception){
- DB::rollBack();
- Log::debug('创建消息规则:'.$exception->getMessage());
- return Response::create([
- 'message' => '添加失败,请重试',
- 'error' => $exception->getMessage(),
- 'status_code' => 500
- ]);
- }
- }
- /**
- * 编辑消息规则
- */
- public function update($request)
- {
- $message = $this->messageRule->find($request['id']);
- if(!$message || $message->message_status != 0){
- return Response::create([
- 'message' => '只能编辑未发送消息',
- 'status_code' => 500
- ]);
- }
- $noticeGroups = explode(',', $request['notice_groups']);
- if(in_array(0, $noticeGroups)){
- $noticeGroups = 0;
- } else {
- if(array_diff($noticeGroups, [1,2])){
- return Response::create([
- 'message' => '通知群体参数有误',
- 'status_code' => 500
- ]);
- }
- $noticeGroups = implode(',', array_unique($noticeGroups));
- }
- $message->title = $request['title'];
- $message->notice_groups = $noticeGroups;
- $message->message_type = $request['message_type'];
- $message->cover = $request['cover'];
- if($request['activity_url']){
- $message->notice_groups = $request['activity_url'];
- }
- if($request['message_show_type']){
- $message->message_show_type = $request['message_show_type'];
- }
- if($request['content']){
- $message->content = $request['content'];
- }
- if(isset($request['send_time'])){
- if($request['send_time']){
- $message->send_time = $request['send_time'];
- }else{
- $message->send_time = null;
- }
- }
- if($request['activity_time']){
- $message->activity_time = $request['activity_time'];
- }
- DB::beginTransaction();
- try{
- $message->save();
- DB::commit();
- return Response::create();
- }catch (QueryException $exception){
- DB::rollBack();
- Log::debug('编辑消息规则:'.$exception->getMessage());
- return Response::create([
- 'message' => '编辑失败,请重试',
- 'error' => $exception->getMessage(),
- 'status_code' => 500
- ]);
- }
- }
- /**
- * 消息规则详情
- */
- public function detail($request)
- {
- return $this->messageRule->find($request['id']);
- }
- /**
- * 发送消息规则
- */
- public function send($request)
- {
- $message = $this->messageRule->find($request['id']);
- if(!$message || $message->message_status != 0){
- return Response::create([
- 'message' => '只能发送未发送消息',
- 'status_code' => 500
- ]);
- }
- $message->send_time = Carbon::now()->toDateTimeString();
- DB::beginTransaction();
- try{
- $message->save();
- DB::commit();
- return Response::create();
- }catch (QueryException $exception){
- DB::rollBack();
- Log::debug('发送消息规则:'.$exception->getMessage());
- return Response::create([
- 'message' => '发送失败,请重试',
- 'error' => $exception->getMessage(),
- 'status_code' => 500
- ]);
- }
- }
- /**
- * 隐藏消息规则
- */
- public function hide($request)
- {
- $message = $this->messageRule->find($request['id']);
- if(!$message || $message->message_status != 2){
- return Response::create([
- 'message' => '只能隐藏已发送消息',
- 'status_code' => 500
- ]);
- }
- $message->message_status = 3;
- DB::beginTransaction();
- try{
- $message->save();
- DB::commit();
- return Response::create();
- }catch (QueryException $exception){
- DB::rollBack();
- Log::debug('隐藏消息规则:'.$exception->getMessage());
- return Response::create([
- 'message' => '隐藏失败,请重试',
- 'error' => $exception->getMessage(),
- 'status_code' => 500
- ]);
- }
- }
- }
|