SystemGroupData.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. <?php
  2. namespace app\admin\controller\setting;
  3. use app\admin\controller\AuthController;
  4. use crmeb\services\{
  5. CacheService,
  6. FormBuilder as Form,
  7. JsonService as Json,
  8. UtilService as Util
  9. };
  10. use think\facade\Route as Url;
  11. use app\admin\model\system\{
  12. SystemAttachment, SystemGroup as GroupModel, SystemGroupData as GroupDataModel
  13. };
  14. /**
  15. * 数据列表控制器 在组合数据中
  16. * Class SystemGroupData
  17. * @package app\admin\controller\system
  18. */
  19. class SystemGroupData extends AuthController
  20. {
  21. /**
  22. * 显示资源列表
  23. * @return \think\Response
  24. */
  25. public function index($gid = 0)
  26. {
  27. $where = Util::getMore([
  28. ['gid', 0],
  29. ['status', ''],
  30. ], $this->request);
  31. if ($gid) $where['gid'] = $gid;
  32. $this->assign('where', $where);
  33. $this->assign(compact("gid"));
  34. $this->assign(GroupModel::getField($gid));
  35. $this->assign(GroupDataModel::getList($where));
  36. return $this->fetch();
  37. }
  38. /**
  39. * 显示创建资源表单页.
  40. * @return \think\Response
  41. */
  42. public function create($gid)
  43. {
  44. $Fields = GroupModel::getField($gid);
  45. $f = array();
  46. foreach ($Fields["fields"] as $key => $value) {
  47. $info = [];
  48. if (isset($value["param"])) {
  49. $value["param"] = str_replace("\r\n", "\n", $value["param"]);//防止不兼容
  50. $params = explode("\n", $value["param"]);
  51. if (is_array($params) && !empty($params)) {
  52. foreach ($params as $index => $v) {
  53. $vl = explode('=>', $v);
  54. if (isset($vl[0]) && isset($vl[1])) {
  55. $info[$index]["value"] = $vl[0];
  56. $info[$index]["label"] = $vl[1];
  57. }
  58. }
  59. }
  60. }
  61. switch ($value["type"]) {
  62. case 'input':
  63. $f[] = Form::input($value["title"], $value["name"]);
  64. break;
  65. case 'textarea':
  66. $f[] = Form::input($value["title"], $value["name"])->type('textarea')->placeholder($value['param']);
  67. break;
  68. case 'radio':
  69. $f[] = Form::radio($value["title"], $value["name"], $info[0]["value"] ?? '')->options($info);
  70. break;
  71. case 'checkbox':
  72. $f[] = Form::checkbox($value["title"], $value["name"], $info[0] ?? '')->options($info);
  73. break;
  74. case 'select':
  75. $f[] = Form::select($value["title"], $value["name"], $info[0] ?? '')->options($info)->multiple(false);
  76. break;
  77. case 'upload':
  78. $f[] = Form::frameImageOne($value["title"], $value["name"], Url::buildUrl('admin/widget.images/index', array('fodder' => $value["title"], 'big' => 1)))->icon('image')->width('100%')->height('500px');
  79. break;
  80. case 'uploads':
  81. $f[] = Form::frameImages($value["title"], $value["name"], Url::buildUrl('admin/widget.images/index', array('fodder' => $value["title"], 'big' => 1)))->maxLength(5)->icon('images')->width('100%')->height('500px')->spin(0);
  82. break;
  83. default:
  84. $f[] = Form::input($value["title"], $value["name"]);
  85. break;
  86. }
  87. }
  88. $f[] = Form::number('sort', '排序', 1);
  89. $f[] = Form::radio('status', '状态', 1)->options([['value' => 1, 'label' => '显示'], ['value' => 2, 'label' => '隐藏']]);
  90. $f[] = Form::radio('is_big_pic', '是否大图', 1)->options([['value' => 1, 'label' => '是'], ['value' => 0, 'label' => '否']]);
  91. $form = Form::make_post_form('添加数据', $f, Url::buildUrl('save', compact('gid')), 2);
  92. $this->assign(compact('form'));
  93. return $this->fetch('public/form-builder');
  94. }
  95. /**
  96. * 保存新建的资源
  97. *
  98. * @param \think\Request $request
  99. * @return \think\Response
  100. */
  101. public function save($gid)
  102. {
  103. $Fields = GroupModel::getField($gid);
  104. $params = request()->post();
  105. foreach ($params as $key => $param) {
  106. foreach ($Fields['fields'] as $index => $field) {
  107. if ($key == $field["title"]) {
  108. // if($param == "" || count($param) == 0)
  109. if ($param == "")
  110. return Json::fail($field["name"] . "不能为空!");
  111. else {
  112. $value[$key]["type"] = $field["type"];
  113. $value[$key]["value"] = $param;
  114. }
  115. }
  116. }
  117. }
  118. $data = array("gid" => $gid, "add_time" => time(), "value" => htmlspecialchars_decode(json_encode($value)), "sort" => $params["sort"], "status" => $params["status"], "is_big_pic" => $params["is_big_pic"]);
  119. GroupDataModel::create($data);
  120. CacheService::clear();
  121. return Json::successful('添加数据成功!');
  122. }
  123. /**
  124. * 显示指定的资源
  125. *
  126. * @param int $id
  127. * @return \think\Response
  128. */
  129. public function read($id)
  130. {
  131. //
  132. }
  133. /**
  134. * 显示编辑资源表单页.
  135. *
  136. * @param int $id
  137. * @return \think\Response
  138. */
  139. public function edit($gid, $id)
  140. {
  141. $GroupData = GroupDataModel::get($id);
  142. $GroupDataValue = json_decode($GroupData["value"], true);
  143. $Fields = GroupModel::getField($gid);
  144. $f = array();
  145. if (!isset($Fields['fields'])) return $this->failed('数据解析失败!');
  146. foreach ($Fields['fields'] as $key => $value) {
  147. $info = [];
  148. if (isset($value["param"])) {
  149. $value["param"] = str_replace("\r\n", "\n", $value["param"]);//防止不兼容
  150. $params = explode("\n", $value["param"]);
  151. if (is_array($params) && !empty($params)) {
  152. foreach ($params as $index => $v) {
  153. $vl = explode('=>', $v);
  154. if (isset($vl[0]) && isset($vl[1])) {
  155. $info[$index]["value"] = $vl[0];
  156. $info[$index]["label"] = $vl[1];
  157. }
  158. }
  159. }
  160. }
  161. $fvalue = isset($GroupDataValue[$value['title']]['value']) ? $GroupDataValue[$value['title']]['value'] : '';
  162. switch ($value['type']) {
  163. case 'input':
  164. $f[] = Form::input($value['title'], $value['name'], $fvalue);
  165. break;
  166. case 'textarea':
  167. $f[] = Form::input($value['title'], $value['name'], $fvalue)->type('textarea');
  168. break;
  169. case 'radio':
  170. $f[] = Form::radio($value['title'], $value['name'], $fvalue)->options($info);
  171. break;
  172. case 'checkbox':
  173. $f[] = Form::checkbox($value['title'], $value['name'], $fvalue)->options($info);
  174. break;
  175. case 'upload':
  176. if (!empty($fvalue)) {
  177. $image = is_string($fvalue) ? $fvalue : $fvalue[0];
  178. } else {
  179. $image = '';
  180. }
  181. $f[] = Form::frameImageOne($value['title'], $value['name'], Url::buildUrl('admin/widget.images/index', array('fodder' => $value['title'], 'big' => 1)), $image)->icon('image')->width('100%')->height('500px');
  182. break;
  183. case 'uploads':
  184. $images = !empty($fvalue) ? $fvalue : [];
  185. $f[] = Form::frameImages($value['title'], $value['name'], Url::buildUrl('admin/widget.images/index', array('fodder' => $value['title'], 'big' => 1)), $images)->maxLength(5)->icon('images')->width('100%')->height('500px')->spin(0);
  186. break;
  187. case 'select':
  188. $f[] = Form::select($value['title'], $value['name'], $fvalue)->setOptions($info);
  189. break;
  190. default:
  191. $f[] = Form::input($value['title'], $value['name'], $fvalue);
  192. break;
  193. }
  194. }
  195. $f[] = Form::input('sort', '排序', $GroupData["sort"]);
  196. $f[] = Form::radio('status', '状态', $GroupData["status"])->options([['value' => 1, 'label' => '显示'], ['value' => 2, 'label' => '隐藏']]);
  197. $f[] = Form::radio('is_big_pic', '是否大图', $GroupData["is_big_pic"])->options([['value' => 1, 'label' => '是'], ['value' => 0, 'label' => '否']]);
  198. $form = Form::make_post_form('添加用户通知', $f, Url::buildUrl('update', compact('id')), 2);
  199. $this->assign(compact('form'));
  200. return $this->fetch('public/form-builder');
  201. }
  202. /**
  203. * 保存更新的资源
  204. *
  205. * @param $id
  206. */
  207. public function update($id)
  208. {
  209. $GroupData = GroupDataModel::get($id);
  210. $Fields = GroupModel::getField($GroupData["gid"]);
  211. $params = request()->post();
  212. foreach ($params as $key => $param) {
  213. foreach ($Fields['fields'] as $index => $field) {
  214. if ($key == $field["title"]) {
  215. if (trim($param) == '')
  216. return Json::fail($field["name"] . "不能为空!");
  217. else {
  218. $value[$key]["type"] = $field["type"];
  219. $value[$key]["value"] = $param;
  220. }
  221. }
  222. }
  223. }
  224. $data = array("value" => htmlspecialchars_decode(json_encode($value)), "sort" => $params["sort"], "status" => $params["status"], "is_big_pic" => $params['is_big_pic']);
  225. if ($params['is_big_pic']) { //如果设置为大图,那么其他的都设置未小图
  226. GroupDataModel::where("gid", $GroupData["gid"])->update([
  227. 'is_big_pic' => 0
  228. ]);
  229. }
  230. GroupDataModel::edit($data, $id);
  231. CacheService::clear();
  232. return Json::successful('修改成功!');
  233. }
  234. /**
  235. * 删除指定资源
  236. *
  237. * @param int $id
  238. * @return \think\Response
  239. */
  240. public function delete($id)
  241. {
  242. if (!GroupDataModel::del($id))
  243. return Json::fail(GroupDataModel::getErrorInfo('删除失败,请稍候再试!'));
  244. else {
  245. CacheService::clear();
  246. return Json::successful('删除成功!');
  247. }
  248. }
  249. }