AgentController.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Models\Agent;
  4. use App\Http\Models\AgentCustomer;
  5. use App\Http\Models\Role;
  6. use App\Http\Models\User;
  7. use App\Http\Requests\Sell\AgentCustomerSaveRequest;
  8. use App\Http\Requests\Sell\AgentSaveRequest;
  9. use App\Http\Requests\Sell\AgentUserSaveRequest;
  10. use Illuminate\Http\Request;
  11. use App\Http\Controllers\Controller;
  12. /**
  13. * 代理商 之前提的需求 基本没啥用了
  14. * Class SellController
  15. * @package App\Http\Controllers\Admin
  16. */
  17. class AgentController extends Controller
  18. {
  19. public function index(Request $request)
  20. {
  21. if (!$request->ajax()) {
  22. return view('admin/agent/index');
  23. }
  24. $builder = Agent::query();
  25. if ($keyword = $request->input('keyword')) {
  26. $builder->where('contact_name', 'like', '%' . $keyword . '%')
  27. ->orWhere('mobile', 'like', '%' . $keyword . '%');
  28. }
  29. $records = $builder->orderByDesc('id')
  30. ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
  31. $items = $records->items();
  32. return response()->json([
  33. 'rows' => $items,
  34. 'total' => $records->total()
  35. ]);
  36. }
  37. public function statusToggle(Request $request)
  38. {
  39. $ids = $request->input('ids');
  40. $status = $request->input('status');
  41. Agent::query()->whereIn('id', $ids)->update(['status' => $status]);
  42. return response()->json(['message' => '操作成功']);
  43. }
  44. public function save(AgentSaveRequest $request, $id)
  45. {
  46. if (!$request->ajax()) {
  47. $data = $id > 0 ? Agent::query()->find($id) : null;
  48. return view('admin/agent/save', [
  49. 'data' => $data,
  50. 'channels' => Role::getUsers(Role::TYPE_CHANNEL_WORKER),
  51. 'agentUsers' => [],
  52. 'hasChannels' => $data->channel_ids ?? []
  53. ]);
  54. }
  55. $validated = $request->validated();
  56. if ($id == 0) {
  57. $validated['status'] = 1;
  58. }
  59. Agent::query()->updateOrCreate(['id' => $id], $validated);
  60. return response()->json(['message' => '操作成功']);
  61. }
  62. public function delete(Request $request)
  63. {
  64. $ids = $request->input('ids');
  65. Agent::destroy($ids);
  66. return response()->json(['message' => '操作成功']);
  67. }
  68. public function customer(Request $request)
  69. {
  70. if (!$request->ajax()) {
  71. AgentCustomer::query()->where([
  72. ['status', '=', 1],
  73. ['created_at', '<', date('Y-m-d H:i:s', strtotime('-15 day'))]
  74. ])->whereNull('remark')->update(['status' => 0]);
  75. return view('admin/agent/customer');
  76. }
  77. $builder = AgentCustomer::query()->scopes(['user'])->with('user');
  78. if ($keyword = $request->input('keyword')) {
  79. $builder->where('customer_name', 'like', '%' . $keyword . '%')
  80. ->orWhere('contact_user', 'like', '%' . $keyword . '%')
  81. ->orWhere('contact_phone', 'like', '%' . $keyword . '%');
  82. }
  83. $records = $builder->orderByDesc('id')
  84. ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
  85. $items = $records->items();
  86. array_walk($items, function ($item) {
  87. $item->createUsername = $item->user->username ?? '';
  88. });
  89. return response()->json([
  90. 'rows' => $items,
  91. 'total' => $records->total()
  92. ]);
  93. }
  94. public function customerSave(AgentCustomerSaveRequest $request, $id)
  95. {
  96. if (!$request->ajax()) {
  97. $data = $id > 0 ? AgentCustomer::query()->find($id) : null;
  98. return view('admin/agent/customer_save', [
  99. 'data' => $data,
  100. 'users' => User::query()->whereIn('role_id', [
  101. Role::TYPE_CHANNEL_BOSS,
  102. Role::TYPE_CHANNEL_MANAGER,
  103. Role::TYPE_CHANNEL_WORKER,
  104. Role::TYPE_AGENT_BOSS,
  105. Role::TYPE_AGENT_MANAGER,
  106. Role::TYPE_AGENT_WORKER
  107. ])->select(['id', 'username'])->get(),
  108. ]);
  109. }
  110. $validated = $request->validated();
  111. if ($id == 0) {
  112. $user = auth()->user();
  113. $validated['status'] = 1;
  114. $validated['user_id'] = $user->id;
  115. if (in_array($user->role_id, [Role::TYPE_AGENT_BOSS, Role::TYPE_AGENT_MANAGER, Role::TYPE_AGENT_WORKER])) {
  116. $validated['origin'] = 1;
  117. } elseif (in_array($user->role_id, [Role::TYPE_CHANNEL_BOSS, Role::TYPE_CHANNEL_MANAGER, Role::TYPE_CHANNEL_WORKER])) {
  118. $validated['origin'] = 2;
  119. } else {
  120. return response()->json(['message' => '当前身份既不是代理商也不是渠道'], 400);
  121. }
  122. } else {
  123. //防止未选择的时候 覆盖掉
  124. if (empty($validated['user_id'])) {
  125. unset($validated['user_id']);
  126. }
  127. }
  128. AgentCustomer::query()->updateOrCreate(['id' => $id], $validated);
  129. return response()->json(['message' => '操作成功']);
  130. }
  131. public function agentUsers(Request $request)
  132. {
  133. if (!$request->ajax()) {
  134. return view('admin/agent/user');
  135. }
  136. $builder = User::query()->where([['agent_id', '>', 0]]);
  137. $records = $builder->orderByDesc('id')
  138. ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE);
  139. $items = $records->items();
  140. return response()->json([
  141. 'rows' => $items,
  142. 'total' => $records->total()
  143. ]);
  144. }
  145. public function agentUsersSave(AgentUserSaveRequest $request, $id)
  146. {
  147. if (!$request->ajax()) {
  148. $data = $id > 0 ? User::query()->find($id) : null;
  149. $roles = Role::query()->whereIn('id', [
  150. Role::TYPE_AGENT_BOSS,
  151. Role::TYPE_AGENT_MANAGER,
  152. Role::TYPE_AGENT_WORKER
  153. ])->get();
  154. return view('admin/agent/user_save', [
  155. 'user' => $data,
  156. 'roles' => $roles,
  157. 'agents' => Agent::all()
  158. ]);
  159. }
  160. $validated = $request->validated();
  161. if (!empty($validated['password'])) {
  162. $validated['password'] = bcrypt($validated['password']);
  163. } else {
  164. unset($validated['password']);
  165. }
  166. if ($id === 0) {
  167. $validated['status'] = 1;
  168. }
  169. User::query()->updateOrCreate(['id' => $id], $validated);
  170. return response()->json(['message' => '操作成功']);
  171. }
  172. }