YinliuManageController.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace Modules\Yinliu\Http\Controllers;
  3. use Catch\Base\CatchController;
  4. use Illuminate\Foundation\Validation\ValidatesRequests;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\DB;
  7. use Modules\Yinliu\Models\YinliuGzhConfigModel;
  8. /**
  9. * 引流管理
  10. */
  11. class YinliuManageController extends CatchController
  12. {
  13. use ValidatesRequests;
  14. /**
  15. * 列表
  16. * @param Request $request
  17. */
  18. public function list(Request $request) {
  19. $gzhId = $request->input('gzh_id');
  20. $gzhIsEnabled = $request->input('gzh_is_enabled');
  21. $name = $request->input('name');
  22. $focusType = $request->input('focus_type');
  23. $result = DB::table('yinliu_gzh_config as a')
  24. ->leftJoin('wechat_authorization_infos as b', 'a.gzh_id','=', 'b.id')
  25. ->when($gzhId, function ($query, $gzhId){
  26. return $query->where('a.gzh_id', $gzhId);
  27. })->when($gzhIsEnabled, function ($query, $gzhIsEnabled) {
  28. return $query->where('b.is_enabled', $gzhIsEnabled);
  29. })->when($name, function ($query, $name) {
  30. return $query->where('name', 'like', '%'. $name . '%');
  31. })->when($focusType, function ($query, $focusType) {
  32. return $query->where('focus_type', $focusType);
  33. })
  34. ->where([
  35. 'a.uid' => $this->getLoginUserId(),
  36. 'a.is_enabled' => 1,
  37. ])->select('a.*', 'b.nick_name as gzh_nick_name', 'b.is_enabled as gzh_is_enabled')
  38. ->orderBy('a.id','desc')
  39. ->paginate($request->input('limit', 20));
  40. foreach ($result as $item) {
  41. $item->focus_type_str = 1 == $item->focus_type ? '公众号引流' : '';
  42. $item->link_type_str = 1 == $item->link_type ? '关注链接' : '关注二维码';
  43. }
  44. return $result;
  45. }
  46. /**
  47. * 添加
  48. * @param Request $request
  49. */
  50. public function save(Request $request) {
  51. $this->validate($request, [
  52. 'name' => 'required|string|max:64',
  53. 'focus_type' => 'required|in:1',
  54. 'gzh_id' => 'required',
  55. // 播放页弹窗设置:1-强制关注,2-引导关注,3-不关注
  56. 'pop_type' => 'required|in:1,2,3',
  57. // pop_type == 2 时,弹窗设置:1-仅设置剧集弹窗,2-设置剧集及后每集弹窗
  58. 'pop_type_sub' => 'required_if:pop_type,2|in:1,2',
  59. 'link_type' => 'required|in:1,2',
  60. 'link_url' => 'required',
  61. ]);
  62. $data = $request->only('name' ,'focus_type', 'gzh_id', 'pop_type',
  63. 'link_type', 'link_url', 'pop_type_sub');
  64. if(2 != $data['pop_type']) {
  65. $data['pop_type_sub'] = 0;
  66. }
  67. $uid = $this->getLoginUserId();
  68. if($request->input('id')) {
  69. YinliuGzhConfigModel::where([
  70. 'id' => $request->input('id'),
  71. 'uid' => $uid
  72. ])->update($data);
  73. } else {
  74. $data['uid'] = $uid;
  75. YinliuGzhConfigModel::create($data);
  76. }
  77. return 'ok';
  78. }
  79. /**
  80. * 删除
  81. * @param Request $request
  82. */
  83. public function delete(Request $request) {
  84. $this->validate($request, [
  85. 'id' => 'required'
  86. ]);
  87. YinliuGzhConfigModel::where([
  88. 'id' => $request->input('id'),
  89. 'uid' => $this->getLoginUserId()
  90. ])->update([
  91. 'is_enabled' => 0
  92. ]);
  93. return 'ok';
  94. }
  95. }