SettingController.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <?php
  2. namespace App\Http\Controllers\Admin\Base;
  3. use App\Http\Controllers\Controller;
  4. use App\Repositories\Models\Base\Setting;
  5. use App\Services\Base\SettingService;
  6. use Illuminate\Http\Request;
  7. /**
  8. * 配置管理
  9. */
  10. class SettingController extends Controller
  11. {
  12. /**
  13. * @var SettingService
  14. */
  15. private $settingService;
  16. /**
  17. * SettingController constructor.
  18. *
  19. * @param SettingService $settingService
  20. */
  21. public function __construct(SettingService $settingService)
  22. {
  23. parent::__construct();
  24. $this->middleware('checkUserPermission', ['except' => 'configs']);
  25. $this->settingService = $settingService;
  26. }
  27. /**
  28. * 列表
  29. * @param Request $request
  30. *
  31. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  32. * @throws \Prettus\Repository\Exceptions\RepositoryException
  33. */
  34. public function index(Request $request)
  35. {
  36. $settings = $this->settingService->handleList($request);
  37. return $this->response->success($settings);
  38. }
  39. /**
  40. * 创建
  41. * @param Request $request
  42. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  43. * @throws \Prettus\Validator\Exceptions\ValidatorException
  44. */
  45. public function store(Request $request)
  46. {
  47. $data = $this->validateData($request, [
  48. 'name' => 'required|string',
  49. 'code' => [
  50. 'required',
  51. 'alpha_dash',
  52. function ($attribute, $value, $fail) use ($request) {
  53. if (Setting::checkCodeIsUnique($value, $request->get('id'))) {
  54. $fail('配置代码 已存在');
  55. }
  56. },
  57. ],
  58. 'tag' => 'required',
  59. 'type' => 'required|in:1,2,3,4',
  60. 'value' => 'required',
  61. 'limit' => 'nullable',
  62. 'tips' => 'nullable',
  63. 'is_system' => 'required|in:0,1',
  64. 'remark' => 'nullable',
  65. ], [
  66. 'name' => '配置名称',
  67. 'code' => '配置代码',
  68. 'value' => '配置值',
  69. 'is_system' => '是否系统内置',
  70. 'remark' => '备注',
  71. 'tag' => '标签模块',
  72. 'type' => '参数类型',
  73. 'limit' => '参数限制条件',
  74. ]);
  75. $setting = $this->settingService->handleStore($data);
  76. return $this->response->created($setting, '创建成功');
  77. }
  78. /**
  79. * 详情
  80. * @param int $id
  81. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  82. */
  83. public function show(Request $request)
  84. {
  85. $this->validate($request, ['id' => 'required|integer']);
  86. $setting = $this->settingService->handleProfile($request->get('id'));
  87. return $this->response->success($setting);
  88. }
  89. /**
  90. * 更新
  91. * @param Request $request
  92. *
  93. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  94. * @throws \Prettus\Validator\Exceptions\ValidatorException
  95. */
  96. public function update(Request $request)
  97. {
  98. $data = $this->validateData($request, [
  99. 'id' => 'required|integer',
  100. 'name' => 'required|string',
  101. // 'code' => [
  102. // 'required',
  103. // 'alpha_dash',
  104. // function ($attribute, $value, $fail) use ($request) {
  105. // if (Setting::checkCodeIsUnique($value, $request->get('id'))) {
  106. // $fail('配置代码 已存在');
  107. // }
  108. // },
  109. // ],
  110. 'tag' => 'required',
  111. // 'type' => 'required|in:1,2,3,4',
  112. 'value' => 'required',
  113. 'limit' => 'nullable',
  114. 'tips' => 'nullable',
  115. // 'is_system' => 'required|in:0,1',
  116. 'remark' => 'nullable',
  117. ], [
  118. 'name' => '配置名称',
  119. 'code' => '配置代码',
  120. 'value' => '配置值',
  121. 'is_system' => '是否系统内置',
  122. 'remark' => '备注',
  123. 'tag' => '标签模块',
  124. 'type' => '参数类型',
  125. 'limit' => '参数限制条件',
  126. ]);
  127. $setting = $this->settingService->handleUpdate($data);
  128. return $this->response->success($setting, '更新成功');
  129. }
  130. /**
  131. * 删除
  132. * @param int $id
  133. */
  134. public function destroy(Request $request)
  135. {
  136. $this->validate($request, ['id' => 'required|integer']);
  137. $re = $this->settingService->handleDelete($request->get('id'));
  138. if ($re) {
  139. return $this->response->ok('删除成功');
  140. }
  141. return $this->response->fail('删除失败');
  142. }
  143. /**
  144. * 获取系统配置参数
  145. * @must
  146. * @param Request $request
  147. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  148. * @throws \Illuminate\Validation\ValidationException
  149. */
  150. public function configs(Request $request)
  151. {
  152. $this->validate($request, ['keys' => 'required|array']);
  153. $configs = $this->settingService->handleConfigs($request->get('keys'));
  154. return $this->response->success(compact('configs'));
  155. }
  156. /**
  157. * 保存配置
  158. * @must
  159. * @param Request $request
  160. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  161. * @throws \Illuminate\Validation\ValidationException
  162. */
  163. public function save(Request $request)
  164. {
  165. $fields = $this->validateData($request, [
  166. 'fields' => 'required|array',
  167. ], [
  168. 'fields' => '字段表',
  169. ])['fields'];
  170. $data = $this->checkData($fields, $request);
  171. $this->settingService->handleSave($data);
  172. return $this->response->ok('保存成功');
  173. }
  174. /**
  175. * 校检数据
  176. * @param $fields
  177. * @param Request $request
  178. * @return array|mixed
  179. * @throws \Illuminate\Validation\ValidationException
  180. */
  181. protected function checkData($fields, Request $request)
  182. {
  183. $da = $this->settingService->handleRules();
  184. $keys = array_keys($da);
  185. $rules = [];
  186. $names = [];
  187. foreach ($fields as $field) {
  188. if (in_array($field, $keys)) {
  189. $rules[$field] = 'required';
  190. $names[$field] = $da[$field];
  191. }
  192. }
  193. $data = $this->validateData($request, $rules, $names);
  194. return $data;
  195. }
  196. /**
  197. * 配置模块列表
  198. * @param Request $request
  199. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  200. */
  201. public function tags(Request $request)
  202. {
  203. $settings = $this->settingService->handleTagsList($request);
  204. return $this->response->success($settings);
  205. }
  206. }