StartupRepository.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <?php
  2. namespace App\Repositories;
  3. use App\Models\Startup;
  4. use App\Traits\PostTrait;
  5. use Illuminate\Database\QueryException;
  6. use Dingo\Api\Http\Response;
  7. use Illuminate\Support\Carbon;
  8. use Illuminate\Support\Facades\DB;
  9. use Illuminate\Support\Facades\Log;
  10. class StartupRepository
  11. {
  12. use PostTrait;
  13. public function __construct(Startup $startup)
  14. {
  15. $this->startup = $startup;
  16. }
  17. /**
  18. * 启动页列表
  19. */
  20. public function lists($request)
  21. {
  22. $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
  23. return $this->startup
  24. ->where(function ($query) use ($request){
  25. if(isset($request['keyword']) && $request['keyword']){
  26. $query->where('id', $request['keyword'])
  27. ->orWhere('title', 'like', "%{$request['keyword']}%");
  28. }
  29. })
  30. ->orderBy('is_open','desc')
  31. ->orderBy('id','desc')
  32. ->paginate($perPage);
  33. }
  34. /**
  35. * 创建启动页
  36. */
  37. public function create($request)
  38. {
  39. $data = [
  40. 'title' => $request['title'],
  41. 'img' => $request['img'],
  42. 'url' => $request['url']??''
  43. ];
  44. DB::beginTransaction();
  45. try{
  46. $this->startup->create($data);
  47. DB::commit();
  48. return Response::create();
  49. }catch (QueryException $exception){
  50. DB::rollBack();
  51. Log::error('创建启动页失败:'.$exception->getMessage());
  52. return Response::create([
  53. 'message' => '添加失败,请重试',
  54. 'error' => $exception->getMessage(),
  55. 'status_code' => 500
  56. ]);
  57. }
  58. }
  59. /**
  60. * 编辑启动页
  61. */
  62. public function update($request)
  63. {
  64. $startup = $this->startup->find($request['id']);
  65. if(!$startup){
  66. return Response::create([
  67. 'message' => '获取启动页信息失败',
  68. 'status_code' => 500
  69. ]);
  70. }
  71. if($startup->is_open){
  72. return Response::create([
  73. 'message' => '开启中不能编辑',
  74. 'status_code' => 500
  75. ]);
  76. }
  77. $startup->title = $request['title'];
  78. $startup->img = $request['img'];
  79. $startup->url = $request['url'] ?? '';
  80. DB::beginTransaction();
  81. try{
  82. $startup->save();
  83. DB::commit();
  84. return Response::create();
  85. }catch (QueryException $exception){
  86. DB::rollBack();
  87. Log::error('编辑启动页失败:'.$exception->getMessage());
  88. return Response::create([
  89. 'message' => '编辑失败,请重试',
  90. 'error' => $exception->getMessage(),
  91. 'status_code' => 500
  92. ]);
  93. }
  94. }
  95. /**
  96. * 启动页详情
  97. */
  98. public function detail($request)
  99. {
  100. return $this->startup->find($request['id']);
  101. }
  102. /**
  103. * 发送启动页
  104. */
  105. public function send($request)
  106. {
  107. $notice = $this->startup->find($request['id']);
  108. if(!$notice || $notice->notice_status != 0){
  109. return Response::create([
  110. 'message' => '只能发送未发送启动页',
  111. 'status_code' => 500
  112. ]);
  113. }
  114. $notice->send_time = Carbon::now()->toDateTimeString();
  115. DB::beginTransaction();
  116. try{
  117. $notice->save();
  118. DB::commit();
  119. return Response::create();
  120. }catch (QueryException $exception){
  121. DB::rollBack();
  122. Log::debug('发送启动页失败:'.$exception->getMessage());
  123. return Response::create([
  124. 'message' => '发送失败,请重试',
  125. 'error' => $exception->getMessage(),
  126. 'status_code' => 500
  127. ]);
  128. }
  129. }
  130. /**
  131. * 删除启动页
  132. */
  133. public function delete($request)
  134. {
  135. $startup = $this->startup->find($request['id']);
  136. if(!$startup){
  137. return Response::create([
  138. 'message' => '获取启动页信息失败',
  139. 'status_code' => 500
  140. ]);
  141. }
  142. if($startup->is_open){
  143. return Response::create([
  144. 'message' => '开启中不能删除',
  145. 'status_code' => 500
  146. ]);
  147. }
  148. DB::beginTransaction();
  149. try{
  150. $startup->delete();
  151. DB::commit();
  152. return Response::create();
  153. }catch (QueryException $exception){
  154. DB::rollBack();
  155. Log::debug('删除启动页失败:'.$exception->getMessage());
  156. return Response::create([
  157. 'message' => '删除失败,请重试',
  158. 'error' => $exception->getMessage(),
  159. 'status_code' => 500
  160. ]);
  161. }
  162. }
  163. /**
  164. * 修改启动页状态
  165. */
  166. public function updateStatus($request)
  167. {
  168. $startup = $this->startup->find($request['id']);
  169. if(!$startup){
  170. return Response::create([
  171. 'message' => '获取启动页信息失败',
  172. 'status_code' => 500
  173. ]);
  174. }
  175. DB::beginTransaction();
  176. try{
  177. if($startup->is_open){
  178. $startup->is_open = 0;
  179. }else{
  180. $this->startup->where('is_open', 1)->update(['is_open' => 0]);
  181. $startup->is_open = 1;
  182. }
  183. $startup->save();
  184. DB::commit();
  185. return Response::create();
  186. }catch (QueryException $exception){
  187. DB::rollBack();
  188. Log::error('更新启动页状态:'.$request['id'].$exception->getMessage());
  189. return Response::create([
  190. 'message' => '修改失败,请重试',
  191. 'error' => $exception->getMessage(),
  192. 'status_code' => 500
  193. ]);
  194. }
  195. }
  196. }