UpgradeRepository.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019-08-21
  6. * Time: 10:26
  7. */
  8. namespace App\Repositories;
  9. use App\Models\Upgrade;
  10. use Illuminate\Database\QueryException;
  11. use Illuminate\Support\Facades\DB;
  12. use Dingo\Api\Http\Response;
  13. use Illuminate\Support\Facades\Log;
  14. class UpgradeRepository {
  15. public function __construct(Upgrade $upgrade) {
  16. $this->upgrade = $upgrade;
  17. }
  18. //列表
  19. public function index($request){
  20. $perPage = isset($request['per_page']) ? $request['per_page'] : 20;
  21. $where = [];
  22. if(isset($request['os'])){
  23. $where[] = ['os', $request['os']];
  24. }
  25. return $this->upgrade->where($where)->orderBy('id', 'desc')->paginate($perPage);
  26. }
  27. //详情
  28. public function view($request){
  29. return $this->upgrade->where(['id'=>$request['id']])->first();
  30. }
  31. //创建
  32. public function create($request){
  33. $upgrade = $this->upgrade->where(['os'=>$request['os'],'version'=>$request['version']])->first();
  34. if($upgrade){
  35. return Response::create([
  36. 'message' => '该版本已存在',
  37. 'status_code' => 500
  38. ]);
  39. }
  40. $data = [
  41. 'os' => $request['os'],
  42. 'version' => $request['version'],
  43. 'version_code' => $request['version_code'],
  44. 'url' => $request['url']??'',
  45. 'title' => $request['title'],
  46. 'content' => $request['content'],
  47. 'is_forced_update' => $request['is_forced_update'],
  48. ];
  49. DB::beginTransaction();
  50. try{
  51. $this->upgrade->create($data);
  52. DB::commit();
  53. return Response::create();
  54. }catch (QueryException $exception){
  55. DB::rollBack();
  56. Log::debug('新增版本:'.$exception->getMessage());
  57. return Response::create([
  58. 'message' => '新增升级版本失败,请重试',
  59. 'error' => $exception->getMessage(),
  60. 'status_code' => 500
  61. ]);
  62. }
  63. }
  64. }