SettingItemController.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <?php
  2. namespace App\Admin\Controllers;
  3. use App\Services\SettingItemService;
  4. use Slowlyo\OwlAdmin\Controllers\AdminController;
  5. /**
  6. * @group 后台
  7. *
  8. * 设置项
  9. *
  10. * @property SettingItemService $service
  11. */
  12. class SettingItemController extends AdminController
  13. {
  14. protected string $serviceName = SettingItemService::class;
  15. public function list()
  16. {
  17. $crud = $this->baseCRUD()
  18. ->filterTogglable(false)
  19. ->headerToolbar([
  20. $this->createButton('dialog'),
  21. ...$this->baseHeaderToolBar(),
  22. ])
  23. ->columns([
  24. amis()->TableColumn('id', 'ID')->sortable(),
  25. amis()->TableColumn('group_id', 'GroupId'),
  26. amis()->TableColumn('code', 'Code'),
  27. amis()->TableColumn('name', 'Name'),
  28. amis()->TableColumn('description', 'Description'),
  29. amis()->TableColumn('value_type', 'ValueType'),
  30. amis()->TableColumn('default_value', 'DefaultValue'),
  31. amis()->TableColumn('min_value', 'MinValue'),
  32. amis()->TableColumn('max_value', 'MaxValue'),
  33. amis()->TableColumn('options', 'Options'),
  34. amis()->TableColumn('sort', 'Sort')->sortable(),
  35. amis()->TableColumn('created_at', admin_trans('admin.created_at'))->type('datetime')->sortable(),
  36. amis()->TableColumn('updated_at', admin_trans('admin.updated_at'))->type('datetime')->sortable(),
  37. $this->rowActions('dialog'),
  38. ]);
  39. return $this->baseList($crud);
  40. }
  41. public function form($isEdit = false)
  42. {
  43. return $this->baseForm()->body([
  44. amis()->TextControl('group_id', 'GroupId'),
  45. amis()->TextControl('code', 'Code'),
  46. amis()->TextControl('name', 'Name'),
  47. amis()->TextControl('description', 'Description'),
  48. amis()->TextControl('value_type', 'ValueType'),
  49. amis()->TextControl('default_value', 'DefaultValue'),
  50. amis()->TextControl('min_value', 'MinValue'),
  51. amis()->TextControl('max_value', 'MaxValue'),
  52. amis()->TextControl('options', 'Options'),
  53. amis()->TextControl('sort', 'Sort'),
  54. ]);
  55. }
  56. public function detail()
  57. {
  58. return $this->baseDetail()->body([
  59. amis()->TextControl('id', 'ID')->static(),
  60. amis()->TextControl('group_id', 'GroupId')->static(),
  61. amis()->TextControl('code', 'Code')->static(),
  62. amis()->TextControl('name', 'Name')->static(),
  63. amis()->TextControl('description', 'Description')->static(),
  64. amis()->TextControl('value_type', 'ValueType')->static(),
  65. amis()->TextControl('default_value', 'DefaultValue')->static(),
  66. amis()->TextControl('min_value', 'MinValue')->static(),
  67. amis()->TextControl('max_value', 'MaxValue')->static(),
  68. amis()->TextControl('options', 'Options')->static(),
  69. amis()->TextControl('sort', 'Sort')->static(),
  70. amis()->TextControl('created_at', admin_trans('admin.created_at'))->static(),
  71. amis()->TextControl('updated_at', admin_trans('admin.updated_at'))->static(),
  72. ]);
  73. }
  74. /**
  75. * [项]获取设置项列表
  76. *
  77. * @description 获取所有设置项列表
  78. *
  79. * @param string keyword 关键词搜索
  80. * @param int group_id 分组ID
  81. *
  82. * @response {
  83. * "data": [
  84. * {
  85. * "id": 1,
  86. * "group_id": 1,
  87. * "code": "site_name",
  88. * "name": "网站名称",
  89. * "description": "网站的名称",
  90. * "value_type": "string",
  91. * "default_value": "示例网站",
  92. * "min_value": null,
  93. * "max_value": null,
  94. * "options": null,
  95. * "sort": 0,
  96. * "created_at": "2023-01-01 00:00:00",
  97. * "updated_at": "2023-01-01 00:00:00"
  98. * }
  99. * ]
  100. * }
  101. */
  102. public function getItemList()
  103. {
  104. return $this->response()->success(
  105. $this->service->getItemList(request()->all())
  106. );
  107. }
  108. /**
  109. * [项]创建设置项
  110. *
  111. * @description 创建新的设置项
  112. *
  113. * @param int group_id 分组ID
  114. * @param string code 设置项代码
  115. * @param string name 设置项名称
  116. * @param string description 设置项描述
  117. * @param string value_type 值类型
  118. * @param string default_value 默认值
  119. * @param string min_value 最小值
  120. * @param string max_value 最大值
  121. * @param string options 选项
  122. * @param int sort 排序值
  123. *
  124. * @response {
  125. * "group_id": 1,
  126. * "code": "site_name",
  127. * "name": "网站名称",
  128. * "description": "网站的名称",
  129. * "value_type": "string",
  130. * "default_value": "示例网站",
  131. * "sort": 0
  132. * }
  133. */
  134. public function createItem()
  135. {
  136. return $this->response()->success(
  137. $this->service->createItem(request()->all())
  138. );
  139. }
  140. /**
  141. * [项]更新设置项
  142. *
  143. * @description 更新指定ID的设置项
  144. *
  145. * @param int id 设置项ID
  146. * @param int group_id 分组ID
  147. * @param string code 设置项代码
  148. * @param string name 设置项名称
  149. * @param string description 设置项描述
  150. * @param string value_type 值类型
  151. * @param string default_value 默认值
  152. * @param string min_value 最小值
  153. * @param string max_value 最大值
  154. * @param string options 选项
  155. * @param int sort 排序值
  156. *
  157. * @response true
  158. */
  159. public function updateItem($id)
  160. {
  161. return $this->response()->success(
  162. $this->service->updateItem($id, request()->all())
  163. );
  164. }
  165. /**
  166. * [项]删除设置项
  167. *
  168. * @description 删除指定ID的设置项
  169. *
  170. * @param int id 设置项ID
  171. *
  172. * @response true
  173. */
  174. public function deleteItem($id)
  175. {
  176. return $this->response()->success(
  177. $this->service->deleteItem($id)
  178. );
  179. }
  180. /**
  181. * [项]获取设置项详情
  182. *
  183. * @description 获取指定ID或code的设置项详情
  184. *
  185. * @param string id_or_code 设置项ID或代码
  186. *
  187. * @response {
  188. * "id": 1,
  189. * "group_id": 1,
  190. * "code": "site_name",
  191. * "name": "网站名称",
  192. * "description": "网站的名称",
  193. * "value_type": "string",
  194. * "default_value": "示例网站",
  195. * "min_value": null,
  196. * "max_value": null,
  197. * "options": null,
  198. * "sort": 0,
  199. * "created_at": "2023-01-01 00:00:00",
  200. * "updated_at": "2023-01-01 00:00:00"
  201. * }
  202. */
  203. public function getItemDetail($id_or_code)
  204. {
  205. return $this->response()->success(
  206. $this->service->getItemDetail($id_or_code)
  207. );
  208. }
  209. }