Ajax.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 海豚PHP框架 [ DolphinPHP ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2016~2017 河源市卓锐科技有限公司 [ http://www.zrthink.com ]
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://dolphinphp.com
  8. // +----------------------------------------------------------------------
  9. // | 开源协议 ( http://www.apache.org/licenses/LICENSE-2.0 )
  10. // +----------------------------------------------------------------------
  11. namespace app\admin\controller;
  12. use app\common\controller\Common;
  13. use app\admin\model\Menu as MenuModel;
  14. use app\admin\model\Attachment as AttachmentModel;
  15. use think\Cache;
  16. use think\Db;
  17. /**
  18. * 用于处理ajax请求的控制器
  19. * @package app\admin\controller
  20. */
  21. class Ajax extends Common
  22. {
  23. /**
  24. * 获取联动数据
  25. * @param string $table 表名
  26. * @param int $pid 父级ID
  27. * @param string $key 下拉选项的值
  28. * @param string $option 下拉选项的名称
  29. * @param string $pidkey 父级id字段名
  30. * @author 蔡伟明 <314013107@qq.com>
  31. * @return \think\response\Json
  32. */
  33. public function getLevelData($table = '', $pid = 0, $key = 'id', $option = 'name', $pidkey = 'pid')
  34. {
  35. if ($table == '') {
  36. return json(['code' => 0, 'msg' => '缺少表名']);
  37. }
  38. $data_list = Db::name($table)->where($pidkey, $pid)->column($option, $key);
  39. if ($data_list === false) {
  40. return json(['code' => 0, 'msg' => '查询失败']);
  41. }
  42. if ($data_list) {
  43. $result = [
  44. 'code' => 1,
  45. 'msg' => '请求成功',
  46. 'list' => format_linkage($data_list)
  47. ];
  48. return json($result);
  49. } else {
  50. return json(['code' => 0, 'msg' => '查询不到数据']);
  51. }
  52. }
  53. /**
  54. * 获取筛选数据
  55. * @param string $table 表名
  56. * @param string $field 字段名
  57. * @param array $map 查询条件
  58. * @param string $options 选项,用于显示转换
  59. * @param string $list 选项缓存列表名称
  60. * @author 蔡伟明 <314013107@qq.com>
  61. * @return \think\response\Json
  62. */
  63. public function getFilterList($table = '', $field = '', $map = [], $options = '', $list = '')
  64. {
  65. if ($list != '') {
  66. $result = [
  67. 'code' => 1,
  68. 'msg' => '请求成功',
  69. 'list' => Cache::get($list)
  70. ];
  71. return json($result);
  72. }
  73. if ($table == '') {
  74. return json(['code' => 0, 'msg' => '缺少表名']);
  75. }
  76. if ($field == '') {
  77. return json(['code' => 0, 'msg' => '缺少字段']);
  78. }
  79. if (!empty($map) && is_array($map)) {
  80. foreach ($map as &$item) {
  81. if (is_array($item)) {
  82. foreach ($item as &$value) {
  83. $value = trim($value);
  84. }
  85. } else {
  86. $item = trim($item);
  87. }
  88. }
  89. }
  90. $data_list = Db::name($table)->where($map)->group($field)->column($field);
  91. if ($data_list === false) {
  92. return json(['code' => 0, 'msg' => '查询失败']);
  93. }
  94. if ($data_list) {
  95. if ($options != '') {
  96. // 从缓存获取选项数据
  97. $options = cache($options);
  98. if ($options) {
  99. $temp_data_list = [];
  100. foreach ($data_list as $item) {
  101. $temp_data_list[$item] = isset($options[$item]) ? $options[$item] : '';
  102. }
  103. $data_list = $temp_data_list;
  104. } else {
  105. $data_list = parse_array($data_list);
  106. }
  107. } else {
  108. $data_list = parse_array($data_list);
  109. }
  110. $result = [
  111. 'code' => 1,
  112. 'msg' => '请求成功',
  113. 'list' => $data_list
  114. ];
  115. return json($result);
  116. } else {
  117. return json(['code' => 0, 'msg' => '查询不到数据']);
  118. }
  119. }
  120. /**
  121. * 获取指定模块的菜单
  122. * @param string $module 模块名
  123. * @author 蔡伟明 <314013107@qq.com>
  124. * @return mixed
  125. */
  126. public function getModuleMenus($module = '')
  127. {
  128. $menus = MenuModel::getMenuTree(0, '', $module);
  129. $result = [
  130. 'code' => 1,
  131. 'msg' => '请求成功',
  132. 'list' => format_linkage($menus)
  133. ];
  134. return json($result);
  135. }
  136. /**
  137. * 设置配色方案
  138. * @param string $theme 配色名称
  139. * @author 蔡伟明 <314013107@qq.com>
  140. */
  141. public function setTheme($theme = '') {
  142. $map['name'] = 'system_color';
  143. $map['group'] = 'system';
  144. if (Db::name('admin_config')->where($map)->setField('value', $theme)) {
  145. $this->success('设置成功');
  146. } else {
  147. $this->error('设置失败,请重试');
  148. }
  149. }
  150. /**
  151. * 获取侧栏菜单
  152. * @param string $module_id 模块id
  153. * @param string $module 模型名
  154. * @param string $controller 控制器名
  155. * @author 蔡伟明 <314013107@qq.com>
  156. * @return string
  157. */
  158. public function getSidebarMenu($module_id = '', $module = '', $controller = '')
  159. {
  160. role_auth();
  161. $menus = MenuModel::getSidebarMenu($module_id, $module, $controller);
  162. $output = '';
  163. foreach ($menus as $key => $menu) {
  164. if (!empty($menu['url_value'])) {
  165. $output = $menu['url_value'];
  166. break;
  167. }
  168. if (!empty($menu['child'])) {
  169. $output = $menu['child'][0]['url_value'];
  170. break;
  171. }
  172. }
  173. return $output;
  174. }
  175. /**
  176. * 检查附件是否存在
  177. * @param string $md5 文件md5
  178. * @author 蔡伟明 <314013107@qq.com>
  179. * @return \think\response\Json
  180. */
  181. public function check($md5 = '')
  182. {
  183. $md5 == '' && $this->error('参数错误');
  184. // 判断附件是否已存在
  185. if ($file_exists = AttachmentModel::get(['md5' => $md5])) {
  186. if ($file_exists['driver'] == 'local') {
  187. $file_path = PUBLIC_PATH.$file_exists['path'];
  188. } else {
  189. $file_path = $file_exists['path'];
  190. }
  191. return json([
  192. 'code' => 1,
  193. 'info' => '上传成功',
  194. 'class' => 'success',
  195. 'id' => $file_exists['id'],
  196. 'path' => $file_path
  197. ]);
  198. } else {
  199. $this->error('文件不存在');
  200. }
  201. }
  202. }