AdminUserMerchantController.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Filters\AdminUserFilter;
  4. use App\Handlers\Str;
  5. use App\Http\Requests\AdminMerchantRequest;
  6. use App\Http\Requests\AdminUserRequest;
  7. use App\Http\Resources\AdminMerchantsResource;
  8. use App\Http\Resources\AdminUserResource;
  9. use App\Http\Resources\AnnouncementResource;
  10. use App\Models\AdminMerchant;
  11. use App\Models\AdminMerchants;
  12. use App\Models\AdminRole;
  13. use App\Models\AdminUser;
  14. use App\Utils\Admin;
  15. use Illuminate\Http\Request;
  16. use Illuminate\Support\Facades\Log;
  17. class AdminUserMerchantController extends AdminBaseController
  18. {
  19. public function editUser()
  20. {
  21. $user = Admin::user();
  22. $user->load(['roles', 'permissions', 'areas']);
  23. return $this->ok(AdminUserResource::make($user));
  24. }
  25. public function updateUser(AdminMerchantRequest $request)
  26. {
  27. $inputs = $request->validated();
  28. Admin::user()->updateUser($inputs);
  29. return $this->callAction('user', [])->setStatusCode(201);
  30. }
  31. /**
  32. * 商户列表
  33. * @param AdminUserFilter $filter
  34. * @return \Illuminate\Http\JsonResponse
  35. */
  36. public function index(AdminUserFilter $filter)
  37. {
  38. $userQuery = AdminMerchant::query()
  39. ->filter($filter);
  40. $userQuery->with(['admin_user' => function ($query) {
  41. $query->where('type', AdminUser::TYPE_ADMIN);
  42. }]);
  43. if (!Admin::user()->isRole(AdminRole::ADMINISTROTOR)) {
  44. // 技术
  45. $userQuery->where('id', -1);
  46. }
  47. $users = $userQuery->orderByDesc('id')->paginate();
  48. // return $users;
  49. return $this->ok(AdminMerchantsResource::collection($users));
  50. }
  51. public function store(AdminMerchantRequest $request, AdminMerchant $adminMerchants)
  52. {
  53. $user_add = [
  54. 'account' => $request->account,
  55. 'job_number' => $request->phone,
  56. 'name' => $request->name,
  57. 'phone' => $request->phone,
  58. 'password' => '123456..'// 密码默认手机号 123456..
  59. ];
  60. if (!Admin::user()->isRole(AdminRole::ADMINISTROTOR)) {
  61. // 技术管理员
  62. return $this->error('权限不足');
  63. }
  64. $res = AdminUser::query()->where('account', $request->account)->first();
  65. if ($res) {
  66. return $this->error('账号已经存在');
  67. }
  68. // $add_res = AdminUser::create($user_add);
  69. $add_res = AdminUser::createUser($user_add);
  70. $roles_id = AdminRole::query()->where('slug', AdminRole::MERCHANTSADMIN)->first();
  71. if ($roles_id) {
  72. $roles = [$roles_id->id];
  73. $add_res->roles()->attach($roles);
  74. }
  75. $order_key_data = AdminMerchant::query()->whereNotNull('order_key')->get(['order_key'])->toArray();
  76. $add_mch = [
  77. 'name' => $request->name,
  78. 'phone' => $request->phone,
  79. 'proportion' => $request->proportion ?: 0,
  80. 'email' => $request->email,
  81. 'admin_id' => $add_res->id,
  82. 'mck_key' => Str::uniqueString(),// 商户唯一key
  83. 'order_key' => Str::getChr(array_column($order_key_data, 'order_key')),// 商户唯一order_key
  84. ];
  85. $adminMerchants->create($add_mch);
  86. return $this->ok(AdminMerchantsResource::make($adminMerchants));
  87. }
  88. public function show(AdminUser $adminUser)
  89. {
  90. $adminUser->load(['roles', 'permissions', 'areas']);
  91. return $this->ok(AdminUserResource::make($adminUser));
  92. }
  93. /**
  94. * @param AdminMerchantRequest $request
  95. * @param AdminMerchant $adminMerchants
  96. * @return \Illuminate\Http\JsonResponse
  97. */
  98. public function update(AdminMerchantRequest $request, AdminMerchant $adminMerchants)
  99. {
  100. $inputs = $request->validated();
  101. unset($inputs['account']);
  102. $adminMerchants->update($inputs);
  103. return $this->created(AdminMerchantsResource::make($adminMerchants));
  104. }
  105. public function destroy(AdminMerchant $adminMerchants)
  106. {
  107. $adminMerchants->delete();
  108. return $this->noContent();
  109. }
  110. /**
  111. * @param AdminMerchant $adminMerchants
  112. * @return \Illuminate\Http\JsonResponse
  113. */
  114. public function edit(AdminMerchant $adminMerchants)
  115. {
  116. return $this->ok(AdminMerchantsResource::make($adminMerchants));
  117. }
  118. // 商户配置信息
  119. public function editMerchantConfig(Request $request)
  120. {
  121. //
  122. //
  123. $user = Admin::user();
  124. $params = $request->all();
  125. $admin_id = 0;
  126. if (Admin::user()->isRole(AdminRole::ADMINISTROTOR)) {
  127. // 技术
  128. // return $this->error('您不是商户不能修改!');
  129. $admin_id = $params['admin_id'];
  130. }
  131. if (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) {
  132. $admin_id = $user->id;
  133. }
  134. if (empty($admin_id)) {
  135. return $this->error('您无权修改!');
  136. }
  137. if ($params['sub_type'] == 1) {
  138. // 基础设置
  139. $data = [
  140. 'name' => $params['name'],
  141. 'proportion' => $params['proportion'],
  142. 'cash' => $params['cash'],
  143. 'is_refund' => $params['is_refund'],
  144. 'wxapp_qr_code' => $params['wxapp_qr_code'],
  145. 'username' => $params['username'],
  146. 'area_name' => $params['area_name'],
  147. 'refund_callback_url' => $params['refund_callback_url'],
  148. 'car_qr_code_url' => $params['car_qr_code_url'],
  149. 'ground_qr_code' => $params['ground_qr_code'],
  150. 'factory_qr_code' => $params['factory_qr_code'],
  151. ];
  152. }
  153. if ($params['sub_type'] == 2) {
  154. $data = [
  155. 'wxapp_app_id' => $params['wxapp_app_id'],
  156. 'wxapp_app_secret' => $params['wxapp_app_secret'],
  157. 'wxapp_qr_code' => $params['wxapp_qr_code'],
  158. 'wxapp_name' => $params['wxapp_name'],
  159. 'brand' => $params['brand'],
  160. 'wxapp_desc' => $params['wxapp_desc'],
  161. ];
  162. }
  163. if ($params['sub_type'] == 3) {
  164. $data = [
  165. 'pay_mch_id' => $params['mch_id'],
  166. 'pay_key' => $params['api_private_key'],
  167. ];
  168. }
  169. if (count($data)) {
  170. $this->error('缺少参数');
  171. }
  172. $update_res = AdminMerchant::query()->where('admin_id', $admin_id)->update($data);
  173. if ($update_res) {
  174. return $this->ok(['status' => 1]);
  175. }
  176. return $this->error('更新失败');
  177. }
  178. public function getMerchantConfig(Request $request)
  179. {
  180. $user = Admin::user();
  181. $admin_id = $user->id;
  182. $data = [];
  183. if (Admin::user()->isRole(AdminRole::ADMINISTROTOR)) {
  184. // 技术
  185. $model = AdminMerchant::query();
  186. if ($request->id) {
  187. $model->where('id', $request->id);
  188. }
  189. $data = $model->first();
  190. } elseif (Admin::user()->isRole(AdminRole::MERCHANTSADMIN)) {
  191. $data = AdminMerchant::query()->where('admin_id', $admin_id)->first();
  192. } else {
  193. return $this->error('权限不足!');
  194. }
  195. $data['mch_list'] = AdminMerchant::query()->get(['id', 'name']);
  196. return $data;
  197. }
  198. // 上传图片
  199. public function adminMerchantUplode(request $request)
  200. {
  201. $dat = $request->all();//接收所有的
  202. $file = $request->wxapp_qr_code;//接前台图片
  203. if (empty($file)) {
  204. $file = $request->factory_qr_code;//接前台图片
  205. }
  206. if (empty($file)) {
  207. $file = $request->ground_qr_code;//接前台图片
  208. }
  209. // $file = $request->avatar;
  210. $folder_name = "uploads/images/avatars/" . date("Ym/d", time());
  211. $upload_path = public_path() . '/' . $folder_name;
  212. $extension = strtolower($file->getClientOriginalExtension()) ?: 'png';
  213. $filename = time() . '_' . Str::random(10) . '.' . $extension;
  214. $file->move($upload_path, $filename);
  215. $url = config('app.url') . "/$folder_name/$filename";
  216. return $this->ok(['path' => $url]);
  217. }
  218. }