SmmUserAccountController.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. namespace App\Distributor\Controllers;
  3. use App\Distributor\Actions\SmmAddAccount;
  4. use App\Distributor\Repositories\SmmPostLog;
  5. use App\Distributor\Repositories\SmmUserAccount;
  6. use App\Services\SmmService;
  7. use Carbon\Carbon;
  8. use Dcat\Admin\Form;
  9. use Dcat\Admin\Grid;
  10. use Dcat\Admin\Show;
  11. use Dcat\Admin\Http\Controllers\AdminController;
  12. use Dcat\Admin\Layout\Content;
  13. use Dcat\Admin\Admin;
  14. use Illuminate\Http\Request;
  15. use Illuminate\Support\Facades\Session;
  16. class SmmUserAccountController extends AdminDistController
  17. {
  18. /**
  19. * page index
  20. */
  21. public function index(Content $content)
  22. {
  23. // $imgPath = storage_path('app/ssm/1/fc15428f68ea8157bb0c4ea80cfb38d0.png');
  24. // $ssmService = new SmmService('facebook');
  25. // $result = $ssmService->postImage('This is a test image', $imgPath);
  26. //
  27. // exit;
  28. return $content
  29. ->header('帐号管理')
  30. ->description('全部')
  31. ->body($this->grid());
  32. }
  33. /**
  34. * Make a grid builder.
  35. *
  36. * @return Grid
  37. */
  38. protected function grid()
  39. {
  40. return Grid::make(new SmmUserAccount(), function (Grid $grid) {
  41. //指定视图,去掉删除按钮
  42. $grid->view('admin.grid.table');
  43. $grid->disableRowSelector(); // 关键代码
  44. $grid->column('id')->width(80);
  45. $grid->column('name')->tree()->display(function ($name) {
  46. $num = SmmUserAccount::returnChildCount($this->id);
  47. if ($this->parent_id == 0) {
  48. if ($num > 0) {
  49. return $name . '<span class="badge" style="background:#21b978;margin-left:5px">'. $num. '</span>';
  50. }
  51. }
  52. return $name;
  53. });
  54. $grid->column('account_id');
  55. $grid->column('expires_at');
  56. $grid->column('created_at')->sortable();
  57. $grid->column('status')->display(function ($name) {
  58. if ($this->parent_id > 0) {
  59. //如果当前时间大于过期时间,则显示过期
  60. if (Carbon::now() > $this->expires_at) {
  61. return '<span class="label" style="background-color:#f56c6c;color:#fff">过期</span>';
  62. } else {
  63. return '<span class="label" style="background-color:#21b978;color:#fff">正常</span>';
  64. }
  65. }
  66. });
  67. $grid->column('quota_explanation', admin_trans_label('quota_explanation'))->display(function ($name) {
  68. if ($this->parent_id == 0) {
  69. $quota = SmmPostLog::getPostQuota($this->name);
  70. if ($this->name == 'Twitter') {
  71. return admin_trans_label('twitter_quota_explanation',['quota'=>$quota]);
  72. } else if ($this->name == 'YouTube'){
  73. return admin_trans_label('youtube_quota_explanation',['quota'=>$quota]);
  74. } else if ($this->name == 'Facebook') {
  75. return admin_trans_label('facebook_quota_explanation',['quota'=>$quota]);
  76. } else if ($this->name == 'Instagram') {
  77. return admin_trans_label('instagram_quota_explanation',['quota'=>$quota]);
  78. } else {
  79. return admin_trans_label('-');
  80. }
  81. }
  82. })->width('30%');
  83. $grid->filter(function (Grid\Filter $filter) {
  84. $filter->panel();
  85. $filter->expand();
  86. $filter->like('name')->width(2);
  87. });
  88. // 传入数组
  89. $grid->rightTools([
  90. // new SmmAddAccount(),
  91. ]);
  92. $grid->actions(function (Grid\Displayers\Actions $actions) {
  93. $actions->disableEdit();
  94. $actions->disableQuickEdit();
  95. $actions->disableView();
  96. $dist_id = $actions->row->dist_id;
  97. if ($dist_id == 0) {
  98. $actions->append(new SmmAddAccount());
  99. $actions->disableDelete();
  100. } else {
  101. if (Carbon::now() > $actions->row->expires_at) {
  102. $parentAccount = SmmUserAccount::getAccountById($actions->row->parent_id);
  103. $smmAddAccount = new SmmAddAccount();
  104. $smmAddAccount->setData(admin_trans_label('reauthorization'),$parentAccount->name);
  105. $actions->append($smmAddAccount);
  106. }
  107. }
  108. });
  109. $grid->disableBatchDelete();
  110. $grid->disableCreateButton();
  111. $grid->disableEditButton();
  112. $grid->disableViewButton();
  113. $grid->model()->whereIn('dist_id', [0,getDistributorId()])->orderBy('name', 'asc')->orderBy('id', 'desc');
  114. });
  115. }
  116. /*
  117. * 社媒回调接口
  118. */
  119. public function callback($mediaName,Request $request) {
  120. try {
  121. $ssmService = new SmmService($mediaName);
  122. $result = $ssmService->loginCallback($request);
  123. if ($result['status']) {
  124. $accessToken = $result['data']['accessToken'];
  125. $expiresAt = $result['data']['accessToken_expiresAt'];
  126. $userName = $result['data']['userName'];
  127. $userId = $result['data']['userId'];
  128. $refreshToken = isset($result['data']['refreshToken']) ? $result['data']['refreshToken'] : '';
  129. $backupField1 = isset($result['data']['backupField1']) ? $result['data']['backupField1'] : '';
  130. SmmUserAccount::createAccountIfMediaExists($mediaName, $userId,$userName, $accessToken,$expiresAt,$refreshToken,$backupField1);
  131. //return response()->json(['code' => 1, 'msg' => 'success']);
  132. $data = [
  133. 'status' => 'success',
  134. 'message' => 'Success',
  135. ];
  136. } else {
  137. //return response()->json(['code' => 0,'msg' => $result['data']]);
  138. $data = [
  139. 'status' => 'error',
  140. 'message' => $result['data'],
  141. ];
  142. }
  143. } catch (\Exception $e) {
  144. //return response()->json(['code' => 0,'msg' => 'error:'.$e->getMessage()]);
  145. $data = [
  146. 'status' => 'error',
  147. 'message' => $e->getMessage(),
  148. ];
  149. }
  150. return view('distributor.pages-custom.callback', $data);
  151. }
  152. }