EditablePage.php 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935
  1. <?php
  2. namespace app\admin\controller;
  3. use think\facade\View;
  4. use think\facade\Lang;
  5. /**
  6. * ============================================================================
  7. * DSMall多用户商城
  8. * ============================================================================
  9. * 版权所有 2014-2028 长沙德尚网络科技有限公司,并保留所有权利。
  10. * 网站地址: http://www.csdeshang.com
  11. * ----------------------------------------------------------------------------
  12. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
  13. * 不允许对程序代码以任何形式任何目的的再发布。
  14. * ============================================================================
  15. * 控制器
  16. */
  17. class EditablePage extends AdminControl {
  18. var $type = 'pc';
  19. var $model_dir = 'home@default/base/editable_page_model/';
  20. public function initialize() {
  21. parent::initialize();
  22. Lang::load(base_path() . 'admin/lang/' . config('lang.default_lang') . '/editable_page.lang.php');
  23. Lang::load(base_path() . 'home/lang/' . config('lang.default_lang') . '.php');
  24. }
  25. /**
  26. * 页面列表
  27. */
  28. public function page_list($type = 'pc') {
  29. $this->type = $type;
  30. $keyword = input('param.editable_page_name');
  31. $condition = array();
  32. if ($keyword) {
  33. $condition[]=array('editable_page_name','like', '%' . $keyword . '%');
  34. }
  35. View::assign('filtered', empty($condition) ? 0 : 1);
  36. if (!in_array($type, array('pc', 'h5'))) {
  37. $type = 'pc';
  38. }
  39. $editable_page_model = model('editable_page');
  40. $condition = array_merge(array(array('store_id', '=', 0), array('editable_page_client', '=', $type)), $condition);
  41. $editable_page_list = $editable_page_model->getEditablePageList($condition, 10);
  42. foreach ($editable_page_list as $key => $val) {
  43. if ($val['editable_page_client'] == 'pc') {
  44. $editable_page_list[$key]['edit_url'] = (string)url('admin/editable_page/special', ['editable_page_id' => $val['editable_page_id']]);
  45. $editable_page_list[$key]['view_url'] = (string)url('home/special/index', ['special_id' => $val['editable_page_id']]);
  46. } else {
  47. $editable_page_list[$key]['edit_url'] = (string)url('EditablePage/mobile_page_setting', array('editable_page_id' => $val['editable_page_id']));
  48. $editable_page_list[$key]['view_url'] = config('ds_config.h5_site_url') . '/' . 'home/special' . '?' . http_build_query(['special_id' => $val['editable_page_id']]);
  49. }
  50. }
  51. View::assign('show_page', $editable_page_model->page_info->render());
  52. View::assign('editable_page_list', $editable_page_list);
  53. View::assign('type', $type);
  54. $this->setAdminCurItem($type . '_page_list');
  55. return View::fetch('page_list');
  56. }
  57. public function h5_page_list() {
  58. return $this->page_list('h5');
  59. }
  60. public function special(){
  61. $obj = new \app\home\controller\Special($this->app);
  62. return $obj->index();
  63. }
  64. /**
  65. * 新增页面
  66. */
  67. public function page_add() {
  68. $editable_page_path = input('param.editable_page_path');
  69. $editable_page_item_id = intval(input('param.editable_page_item_id'));
  70. $editable_page_model = model('editable_page');
  71. if (!request()->isPost()) {
  72. return View::fetch('page_form');
  73. } else {
  74. $data = array(
  75. 'editable_page_name' => input('post.editable_page_name'),
  76. 'editable_page_path' => $editable_page_path,
  77. 'editable_page_item_id' => $editable_page_item_id,
  78. 'editable_page_client' => input('param.type', 'pc'),
  79. 'editable_page_theme' => 'style_1',
  80. 'editable_page_edit_time' => TIMESTAMP,
  81. 'editable_page_theme_config' => json_encode(array(
  82. 'back_color' => input('param.back_color')
  83. ))
  84. );
  85. $result = $editable_page_model->addEditablePage($data);
  86. $condition = array();
  87. $condition[] = array('store_id','=',0);
  88. $condition[] = array('editable_page_id','<>',$result);
  89. $condition[] = array('editable_page_path','=',$data['editable_page_path']);
  90. $condition[] = array('editable_page_client','=',$data['editable_page_client']);
  91. if (!in_array($data['editable_page_path'], array('index/index'))) {
  92. $condition[] = array('editable_page_item_id','=',$data['editable_page_item_id']);
  93. }
  94. $editable_page_model->editEditablePage($condition, array('editable_page_path' => '', 'editable_page_item_id' => 0));
  95. if ($result) {
  96. $this->log(lang('ds_add') . ($data['editable_page_client'] == 'h5' ? lang('editable_page_h5') : lang('editable_page_pc')) . '[flex_' . $result . ':' . input('post.editable_page_name') . ']', null);
  97. dsLayerOpenSuccess(lang('ds_common_op_succ'));
  98. } else {
  99. $this->error(lang('ds_common_op_fail'));
  100. }
  101. }
  102. }
  103. /**
  104. * 设置手机端页面
  105. */
  106. public function mobile_page_setting() {
  107. return View::fetch($this->model_dir . 'mobile_page_setting');
  108. }
  109. public function mobile_page_view() {
  110. //获取配置列表
  111. $editable_page_id = intval(input('param.editable_page_id'));
  112. $editable_page_model = model('editable_page');
  113. $editable_page = $editable_page_model->getOneEditablePage(array('editable_page_id' => $editable_page_id));
  114. if (!$editable_page) {
  115. $this->error(lang('param_error'));
  116. }
  117. $editable_page['if_edit'] = 1;
  118. $editable_page['editable_page_theme_config'] = json_decode($editable_page['editable_page_theme_config'], true);
  119. View::assign('editable_page', $editable_page);
  120. $data = $editable_page_model->getEditablePageConfigByPageId($editable_page_id);
  121. View::assign('editable_page_config_list', $data['editable_page_config_list']);
  122. return View::fetch($this->model_dir . 'mobile_page_view');
  123. }
  124. /**
  125. * 编辑页面
  126. */
  127. public function page_edit() {
  128. $editable_page_id = intval(input('param.editable_page_id'));
  129. $editable_page_model = model('editable_page');
  130. $editable_page_info = $editable_page_model->getOneEditablePage(array('editable_page_id' => $editable_page_id));
  131. if (!$editable_page_info) {
  132. $this->error(lang('param_error'));
  133. }
  134. $editable_page_info['editable_page_theme_config'] = json_decode($editable_page_info['editable_page_theme_config'], true);
  135. if (!request()->isPost()) {
  136. View::assign('editable_page', $editable_page_info);
  137. return View::fetch('page_form');
  138. } else {
  139. $data = array(
  140. 'editable_page_path' => input('post.editable_page_path'),
  141. 'editable_page_item_id' => intval(input('post.editable_page_item_id')),
  142. 'editable_page_name' => input('post.editable_page_name'),
  143. 'editable_page_theme_config' => json_encode(array(
  144. 'back_color' => input('param.back_color')
  145. ))
  146. );
  147. $result = $editable_page_model->editEditablePage(array('editable_page_id' => $editable_page_id), $data);
  148. $condition = array();
  149. $condition[] = array('store_id','=',0);
  150. $condition[] = array('editable_page_id','<>',$editable_page_id);
  151. $condition[] = array('editable_page_path','=',$data['editable_page_path']);
  152. $condition[] = array('editable_page_client','=',$editable_page_info['editable_page_client']);
  153. if (!in_array($data['editable_page_path'], array('index/index'))) {
  154. $condition[] = array('editable_page_item_id','=',$data['editable_page_item_id']);
  155. }
  156. $editable_page_model->editEditablePage($condition, array('editable_page_path' => '', 'editable_page_item_id' => 0));
  157. if ($result) {
  158. $this->log(lang('ds_edit') . ($editable_page_info['editable_page_client'] == 'h5' ? lang('editable_page_h5') : lang('editable_page_pc')) . '[' . $editable_page_info['editable_page_name'] . ']', null);
  159. dsLayerOpenSuccess(lang('ds_common_op_succ'));
  160. } else {
  161. $this->error(lang('ds_common_op_fail'));
  162. }
  163. }
  164. }
  165. /**
  166. * 删除页面
  167. */
  168. public function page_del() {
  169. $editable_page_id = intval(input('param.editable_page_id'));
  170. $editable_page_model = model('editable_page');
  171. $editable_page_info = $editable_page_model->getOneEditablePage(array('editable_page_id' => $editable_page_id));
  172. if (!$editable_page_info) {
  173. ds_json_encode(10001, lang('param_error'));
  174. }
  175. if (!$editable_page_model->delEditablePage($editable_page_id)) {
  176. ds_json_encode(10001, lang('ds_common_op_fail'));
  177. }
  178. $this->log(lang('ds_del') . ($editable_page_info['editable_page_client'] == 'h5' ? lang('editable_page_h5') : lang('editable_page_pc')) . '[ID:' . $editable_page_info['editable_page_id'] . ':' . $editable_page_info['editable_page_name'] . ']', null);
  179. ds_json_encode(10000, lang('ds_common_del_succ'));
  180. }
  181. /**
  182. * 新增模块
  183. */
  184. public function model_add() {
  185. $page_id = intval(input('param.editable_page_id'));
  186. if (!$page_id) {
  187. ds_json_encode(10001, lang('param_error'));
  188. }
  189. $editable_page_model = model('editable_page');
  190. $editable_page = $editable_page_model->getOneEditablePage(array('editable_page_id' => $page_id));
  191. if (!$editable_page) {
  192. ds_json_encode(10001, lang('param_error'));
  193. }
  194. $model_id = intval(input('param.model_id'));
  195. $type = input('param.type', 'pc');
  196. if (!$model_id) {
  197. $condition = array();
  198. $condition[] = array('editable_page_model_type','in', array('', 'mall'));
  199. $condition[] = array('editable_page_model_client','in', array('', $type));
  200. $condition[] = array('editable_page_theme','in', array('', '|' . $editable_page['editable_page_theme'] . '|'));
  201. $editable_page_model_list = model('editable_page_model')->getEditablePageModelList($condition);
  202. View::assign('editable_page_model_list', $editable_page_model_list);
  203. echo View::fetch($this->model_dir . 'model_add');
  204. exit;
  205. } else {
  206. $config_id = intval(input('param.config_id'));
  207. $res = model('editable_page_model', 'logic')->modelAdd($page_id, $type, $model_id, $config_id);
  208. if (!$res['code']) {
  209. ds_json_encode(10001, $res['msg']);
  210. }
  211. $data = $res['data'];
  212. //日志
  213. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . $data['editable_page_config_id'] . ']', null);
  214. View::assign('page_config', $data);
  215. ds_json_encode(10000, '', array('config_id' => $data['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $model_id)));
  216. }
  217. }
  218. public function model_del() {
  219. if (!model('editable_page_config')->delEditablePageConfig(array('editable_page_id' => intval(input('param.editable_page_id')), 'editable_page_config_id' => intval(input('param.config_id'))))) {
  220. ds_json_encode(10001, lang('ds_common_op_fail'));
  221. } else {
  222. //日志
  223. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . input('param.config_id') . ']', null);
  224. ds_json_encode(10000);
  225. }
  226. }
  227. public function model_sort() {
  228. $config_id = intval(input('param.config_id'));
  229. $o_config_id = intval(input('param.o_config_id'));
  230. $direction = intval(input('param.direction'));
  231. if (!$config_id || !$o_config_id) {
  232. ds_json_encode(10001, lang('param_error'));
  233. }
  234. $res = model('editable_page_model', 'logic')->modelSort($direction, $config_id, $o_config_id);
  235. if (!$res['code']) {
  236. ds_json_encode(10001, $res['msg']);
  237. }
  238. ds_json_encode(10000);
  239. }
  240. /**
  241. * 编辑模块
  242. */
  243. public function model_edit() {
  244. $config_id = intval(input('param.config_id'));
  245. if (!$config_id) {
  246. ds_json_encode(10001, lang('param_error'));
  247. }
  248. $editable_page_config_model = model('editable_page_config');
  249. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  250. if (!$editable_page_config_info) {
  251. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  252. }
  253. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  254. if (!request()->isPost()) {
  255. View::assign('base_config', $config_info);
  256. View::assign('model_type', $editable_page_config_info['editable_page_model_id']);
  257. echo View::fetch($this->model_dir . 'model_edit');
  258. exit;
  259. } else {
  260. $res = model('editable_page_model', 'logic')->modelEdit($editable_page_config_info, input('post.'));
  261. if (!$res['code']) {
  262. ds_json_encode(10001, $res['msg']);
  263. }
  264. $editable_page_config_info = $res['data'];
  265. //日志
  266. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']', null);
  267. $type = input('param.type', 'pc');
  268. View::assign('page_config', $editable_page_config_info);
  269. ds_json_encode(10000, '', array('config_id' => $editable_page_config_info['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $editable_page_config_info['editable_page_model_id'])));
  270. }
  271. }
  272. /**
  273. * 商品模块
  274. */
  275. public function model_goods() {
  276. $config_id = intval(input('param.config_id'));
  277. $item_id = intval(input('param.item_id'));
  278. if (!$config_id) {
  279. ds_json_encode(10001, lang('param_error'));
  280. }
  281. $editable_page_config_model = model('editable_page_config');
  282. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  283. if (!$editable_page_config_info) {
  284. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  285. }
  286. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  287. if (!isset($config_info['goods']) || !isset($config_info['goods'][$item_id])) {
  288. ds_json_encode(10001, lang('param_error'));
  289. }
  290. $goods_info = $config_info['goods'][$item_id];
  291. if (!isset($goods_info['gc_id']) || !isset($goods_info['sort']) || !isset($goods_info['if_fix']) || !isset($goods_info['goods_id']) || !is_array($goods_info['goods_id'])) {
  292. ds_json_encode(10001, lang('param_error'));
  293. }
  294. if (!request()->isPost()) {
  295. View::assign('goods_info', $goods_info);
  296. $goods_list = array();
  297. if ($goods_info['if_fix'] && !empty($goods_info['goods_id'])) {
  298. $goods_model = model('goods');
  299. $goods_list = $goods_model->getGoodsOnlineList(array(array('goods_id' ,'in', array_keys($goods_info['goods_id']))));
  300. }
  301. View::assign('goods_list', $goods_list);
  302. /**
  303. * 处理商品分类
  304. */
  305. $choose_gcid = ($t = intval($goods_info['gc_id'])) > 0 ? $t : 0;
  306. $gccache_arr = model('goodsclass')->getGoodsclassCache($choose_gcid, 3);
  307. View::assign('gc_json', json_encode($gccache_arr['showclass']));
  308. View::assign('gc_choose_json', json_encode($gccache_arr['choose_gcid']));
  309. echo View::fetch($this->model_dir . 'model_goods');
  310. exit;
  311. } else {
  312. $sort = input('param.sort');
  313. if (!in_array($sort, array('new', 'hot', 'good'))) {
  314. ds_json_encode(10001, lang('param_error'));
  315. }
  316. $if_fix = intval(input('param.if_fix'));
  317. if (!in_array($if_fix, array(0, 1))) {
  318. ds_json_encode(10001, lang('param_error'));
  319. }
  320. $goods_id = input('param.goods_id/a');
  321. if (!is_array($goods_id)) {
  322. $goods_id = array();
  323. }
  324. asort($goods_id);
  325. $temp = array(
  326. 'gc_id' => intval(input('param.choose_gcid')),
  327. 'sort' => $sort,
  328. 'if_fix' => $if_fix,
  329. 'goods_id' => $goods_id,
  330. );
  331. $config_info['goods'][$item_id] = array_merge($config_info['goods'][$item_id], $temp);
  332. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  333. ds_json_encode(10001, lang('ds_common_op_fail'));
  334. }
  335. $editable_page_config_info['editable_page_config_content'] = $config_info;
  336. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info);
  337. //日志
  338. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']', null);
  339. $type = input('param.type', 'pc');
  340. View::assign('page_config', $editable_page_config_info);
  341. ds_json_encode(10000, '', array('config_id' => $editable_page_config_info['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $editable_page_config_info['editable_page_model_id'])));
  342. }
  343. }
  344. /**
  345. * 店铺模块
  346. */
  347. public function model_store() {
  348. $config_id = intval(input('param.config_id'));
  349. $item_id = intval(input('param.item_id'));
  350. if (!$config_id) {
  351. ds_json_encode(10001, lang('param_error'));
  352. }
  353. $editable_page_config_model = model('editable_page_config');
  354. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  355. if (!$editable_page_config_info) {
  356. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  357. }
  358. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  359. if (!isset($config_info['store']) || !isset($config_info['store'][$item_id])) {
  360. ds_json_encode(10001, lang('param_error'));
  361. }
  362. $store_info = $config_info['store'][$item_id];
  363. if (!isset($store_info['storeclass_id']) || !isset($store_info['sort']) || !isset($store_info['if_fix']) || !isset($store_info['store_id']) || !is_array($store_info['store_id'])) {
  364. ds_json_encode(10001, lang('param_error'));
  365. }
  366. if (!request()->isPost()) {
  367. View::assign('store_info', $store_info);
  368. $store_list = array();
  369. if ($store_info['if_fix'] && !empty($store_info['store_id'])) {
  370. $store_model = model('store');
  371. $store_list = $store_model->getStoreOnlineList(array(array('store_id','in', array_keys($store_info['store_id']))));
  372. }
  373. View::assign('store_list', $store_list);
  374. $storeclass_list = model('storeclass')->getStoreclassList();
  375. View::assign('storeclass_list', $storeclass_list);
  376. echo View::fetch($this->model_dir . 'model_store');
  377. exit;
  378. } else {
  379. $sort = input('param.sort');
  380. if (!in_array($sort, array('grade', 'hot', 'good'))) {
  381. ds_json_encode(10001, lang('param_error'));
  382. }
  383. $if_fix = intval(input('param.if_fix'));
  384. if (!in_array($if_fix, array(0, 1))) {
  385. ds_json_encode(10001, lang('param_error'));
  386. }
  387. $store_id = input('param.store_id/a');
  388. if (!is_array($store_id)) {
  389. $store_id = array();
  390. }
  391. asort($store_id);
  392. $temp = array(
  393. 'storeclass_id' => intval(input('param.storeclass_id')),
  394. 'sort' => $sort,
  395. 'if_fix' => $if_fix,
  396. 'store_id' => $store_id,
  397. );
  398. $config_info['store'][$item_id] = array_merge($config_info['store'][$item_id], $temp);
  399. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  400. ds_json_encode(10001, lang('ds_common_op_fail'));
  401. }
  402. $editable_page_config_info['editable_page_config_content'] = $config_info;
  403. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info);
  404. //日志
  405. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']', null);
  406. $type = input('param.type', 'pc');
  407. View::assign('page_config', $editable_page_config_info);
  408. ds_json_encode(10000, '', array('config_id' => $editable_page_config_info['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $editable_page_config_info['editable_page_model_id'])));
  409. }
  410. }
  411. /**
  412. * 搜索店铺
  413. */
  414. public function search_store() {
  415. $store_model = model('store');
  416. /**
  417. * 查询条件
  418. */
  419. $where = array();
  420. $search_store_name = trim(input('param.keyword'));
  421. if ($search_store_name != '') {
  422. $where[]=array('store_name','like', '%' . $search_store_name . '%');
  423. }
  424. $store_list = $store_model->getStoreOnlineList($where, 12);
  425. View::assign('store_list', $store_list);
  426. View::assign('show_page', $store_model->page_info->render());
  427. echo View::fetch($this->model_dir . 'search_store');
  428. exit;
  429. }
  430. /**
  431. * 代金券模块
  432. */
  433. public function model_voucher() {
  434. $config_id = intval(input('param.config_id'));
  435. $item_id = intval(input('param.item_id'));
  436. if (!$config_id) {
  437. ds_json_encode(10001, lang('param_error'));
  438. }
  439. $editable_page_config_model = model('editable_page_config');
  440. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  441. if (!$editable_page_config_info) {
  442. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  443. }
  444. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  445. if (!isset($config_info['voucher']) || !isset($config_info['voucher'][$item_id])) {
  446. ds_json_encode(10001, lang('param_error'));
  447. }
  448. $voucher_info = $config_info['voucher'][$item_id];
  449. if (!isset($voucher_info['price'])) {
  450. ds_json_encode(10001, lang('param_error'));
  451. }
  452. if (!request()->isPost()) {
  453. View::assign('voucher_info', $voucher_info);
  454. $voucher_model = model('voucher');
  455. $voucherprice_list = $voucher_model->getVoucherpriceList('', 'voucherprice asc');
  456. View::assign('voucherprice_list', $voucherprice_list);
  457. echo View::fetch($this->model_dir . 'model_voucher');
  458. exit;
  459. } else {
  460. $temp = array(
  461. 'price' => input('param.price'),
  462. );
  463. $config_info['voucher'][$item_id] = array_merge($config_info['voucher'][$item_id], $temp);
  464. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  465. ds_json_encode(10001, lang('ds_common_op_fail'));
  466. }
  467. $editable_page_config_info['editable_page_config_content'] = $config_info;
  468. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info);
  469. //日志
  470. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']', null);
  471. $type = input('param.type', 'pc');
  472. View::assign('page_config', $editable_page_config_info);
  473. ds_json_encode(10000, '', array('config_id' => $editable_page_config_info['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $editable_page_config_info['editable_page_model_id'])));
  474. }
  475. }
  476. /**
  477. * 编辑器模块
  478. */
  479. public function model_editor() {
  480. $config_id = intval(input('param.config_id'));
  481. $item_id = intval(input('param.item_id'));
  482. if (!$config_id) {
  483. ds_json_encode(10001, lang('param_error'));
  484. }
  485. $editable_page_config_model = model('editable_page_config');
  486. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  487. if (!$editable_page_config_info) {
  488. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  489. }
  490. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  491. if (!isset($config_info['editor']) || !isset($config_info['editor'][$item_id])) {
  492. ds_json_encode(10001, lang('param_error'));
  493. }
  494. $editor_content = $config_info['editor'][$item_id];
  495. if (!request()->isPost()) {
  496. View::assign('editor_content', $editor_content);
  497. View::assign('file_upload', model('upload')->getUploadList(array('upload_type' => 7, 'item_id' => $config_id)));
  498. echo View::fetch($this->model_dir . 'model_editor');
  499. exit;
  500. } else {
  501. $config_info['editor'][$item_id] = input('post.editor');
  502. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  503. ds_json_encode(10001, lang('ds_common_op_fail'));
  504. }
  505. $config_info['editor'][$item_id] = htmlspecialchars_decode($config_info['editor'][$item_id]);
  506. $editable_page_config_info['editable_page_config_content'] = $config_info;
  507. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info);
  508. //日志
  509. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']', null);
  510. $type = input('param.type', 'pc');
  511. View::assign('page_config', $editable_page_config_info);
  512. ds_json_encode(10000, '', array('config_id' => $editable_page_config_info['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $editable_page_config_info['editable_page_model_id'])));
  513. }
  514. }
  515. /**
  516. * 搜索商品
  517. */
  518. public function search_goods() {
  519. $goods_model = model('goods');
  520. /**
  521. * 查询条件
  522. */
  523. $where = array();
  524. $search_goods_name = trim(input('param.keyword'));
  525. if ($search_goods_name != '') {
  526. $where[]=array('goods_name|store_name','like', '%' . $search_goods_name . '%');
  527. }
  528. $goods_list = $goods_model->getGoodsOnlineList($where, '*', 12);
  529. View::assign('goods_list', $goods_list);
  530. View::assign('show_page', $goods_model->page_info->render());
  531. echo View::fetch($this->model_dir . 'search_goods');
  532. exit;
  533. }
  534. /**
  535. * 搜索商品
  536. */
  537. public function model_brand() {
  538. $config_id = intval(input('param.config_id'));
  539. $item_id = intval(input('param.item_id'));
  540. if (!$config_id) {
  541. ds_json_encode(10001, lang('param_error'));
  542. }
  543. $editable_page_config_model = model('editable_page_config');
  544. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  545. if (!$editable_page_config_info) {
  546. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  547. }
  548. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  549. if (!isset($config_info['brand']) || !isset($config_info['brand'][$item_id])) {
  550. ds_json_encode(10001, lang('param_error'));
  551. }
  552. $brand_info = $config_info['brand'][$item_id];
  553. if (!isset($brand_info['gc_id']) || !isset($brand_info['if_fix']) || !isset($brand_info['brand_id']) || !is_array($brand_info['brand_id'])) {
  554. ds_json_encode(10001, lang('param_error'));
  555. }
  556. if (!request()->isPost()) {
  557. View::assign('brand_info', $brand_info);
  558. $brand_list = array();
  559. if ($brand_info['if_fix'] && !empty($brand_info['brand_id'])) {
  560. $brand_model = model('brand');
  561. $brand_list = $brand_model->getBrandList(array(array('brand_id' ,'in', array_keys($brand_info['brand_id']))));
  562. }
  563. View::assign('brand_list', $brand_list);
  564. /**
  565. * 处理商品分类
  566. */
  567. $choose_gcid = ($t = intval($brand_info['gc_id'])) > 0 ? $t : 0;
  568. $gccache_arr = model('goodsclass')->getGoodsclassCache($choose_gcid, 3);
  569. View::assign('gc_json', json_encode($gccache_arr['showclass']));
  570. View::assign('gc_choose_json', json_encode($gccache_arr['choose_gcid']));
  571. echo View::fetch($this->model_dir . 'model_brand');
  572. exit;
  573. } else {
  574. $if_fix = intval(input('param.if_fix'));
  575. if (!in_array($if_fix, array(0, 1))) {
  576. ds_json_encode(10001, lang('param_error'));
  577. }
  578. $brand_id = input('param.brand_id/a');
  579. if (!is_array($brand_id)) {
  580. $brand_id = array();
  581. }
  582. asort($brand_id);
  583. $temp = array(
  584. 'gc_id' => intval(input('param.choose_gcid')),
  585. 'if_fix' => $if_fix,
  586. 'brand_id' => $brand_id,
  587. );
  588. $config_info['brand'][$item_id] = array_merge($config_info['brand'][$item_id], $temp);
  589. $config_info['brand'][$item_id]['list'] = $this->arraySort($brand_id, 'sort' , 'asc');
  590. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  591. ds_json_encode(10001, lang('ds_common_op_fail'));
  592. }
  593. $editable_page_config_info['editable_page_config_content'] = $config_info;
  594. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info);
  595. //日志
  596. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']', null);
  597. $type = input('param.type', 'pc');
  598. View::assign('page_config', $editable_page_config_info);
  599. ds_json_encode(10000, '', array('config_id' => $editable_page_config_info['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $editable_page_config_info['editable_page_model_id'])));
  600. }
  601. }
  602. /**
  603. * 商品分类模块
  604. */
  605. public function model_cate() {
  606. $config_id = intval(input('param.config_id'));
  607. $item_id = intval(input('param.item_id'));
  608. if (!$config_id) {
  609. ds_json_encode(10001, lang('param_error'));
  610. }
  611. $editable_page_config_model = model('editable_page_config');
  612. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  613. if (!$editable_page_config_info) {
  614. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  615. }
  616. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  617. if (!isset($config_info['cate']) || !isset($config_info['cate'][$item_id])) {
  618. ds_json_encode(10001, lang('param_error'));
  619. }
  620. $cate_info = $config_info['cate'][$item_id];
  621. if (!isset($cate_info['gc_id']) || !isset($cate_info['list']) || !is_array($cate_info['list'])) {
  622. ds_json_encode(10001, lang('param_error'));
  623. }
  624. if (!request()->isPost()) {
  625. View::assign('cate_info', $cate_info);
  626. /**
  627. * 处理商品分类
  628. */
  629. $choose_gcid = ($t = intval($cate_info['gc_id'])) > 0 ? $t : 0;
  630. $gccache_arr = model('goodsclass')->getGoodsclassCache($choose_gcid, 3);
  631. View::assign('gc_json', json_encode($gccache_arr['showclass']));
  632. View::assign('gc_choose_json', json_encode($gccache_arr['choose_gcid']));
  633. echo View::fetch($this->model_dir . 'model_cate');
  634. exit;
  635. } else {
  636. $cate_id = input('param.cate_id/a');
  637. if (!is_array($cate_id)) {
  638. $cate_id = array();
  639. }
  640. $temp = array(
  641. 'gc_id' => intval(input('param.choose_gcid')),
  642. 'list' => $cate_id,
  643. );
  644. $config_info['cate'][$item_id] = array_merge($config_info['cate'][$item_id], $temp);
  645. $config_info['cate'][$item_id]['list'] = $this->arraySort($cate_id, 'sort' , 'asc');
  646. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  647. ds_json_encode(10001, lang('ds_common_op_fail'));
  648. }
  649. $editable_page_config_info['editable_page_config_content'] = $config_info;
  650. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info);
  651. //日志
  652. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']', null);
  653. $type = input('param.type', 'pc');
  654. View::assign('page_config', $editable_page_config_info);
  655. ds_json_encode(10000, '', array('config_id' => $editable_page_config_info['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $editable_page_config_info['editable_page_model_id'])));
  656. }
  657. }
  658. /**
  659. * 搜索品牌
  660. */
  661. public function search_brand() {
  662. $brand_model = model('brand');
  663. /**
  664. * 查询条件
  665. */
  666. $where = array('brand_apply' => 1);
  667. $search_brand_name = trim(input('param.keyword'));
  668. if ($search_brand_name != '') {
  669. $where[]=array('brand_name','like', '%' . $search_brand_name . '%');
  670. }
  671. $brand_list = $brand_model->getBrandList($where, '*', 12);
  672. View::assign('brand_list', $brand_list);
  673. View::assign('show_page', $brand_model->page_info->render());
  674. echo View::fetch($this->model_dir . 'search_brand');
  675. exit;
  676. }
  677. /**
  678. * 文字模块
  679. */
  680. public function model_text() {
  681. $config_id = intval(input('param.config_id'));
  682. $item_id = intval(input('param.item_id'));
  683. if (!$config_id) {
  684. ds_json_encode(10001, lang('param_error'));
  685. }
  686. $editable_page_config_model = model('editable_page_config');
  687. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  688. if (!$editable_page_config_info) {
  689. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  690. }
  691. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  692. if (!isset($config_info['text']) || !isset($config_info['text'][$item_id]) || !isset($config_info['text'][$item_id]['count']) || !isset($config_info['text'][$item_id]['list'])) {
  693. ds_json_encode(10001, lang('param_error'));
  694. }
  695. $text_info = $config_info['text'][$item_id];
  696. if (!request()->isPost()) {
  697. View::assign('text_info', $text_info);
  698. View::assign('editable_type', 'text');
  699. echo View::fetch($this->model_dir . 'model_text');
  700. exit;
  701. } else {
  702. $text_list = input('post.text/a');
  703. if (!is_array($text_list) || empty($text_list)) {
  704. ds_json_encode(10001, lang('param_error'));
  705. }
  706. $config_info['text'][$item_id]['list'] = $this->arraySort($text_list, 'sort' , 'asc');
  707. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  708. ds_json_encode(10001, lang('ds_common_op_fail'));
  709. }
  710. $editable_page_config_info['editable_page_config_content'] = $config_info;
  711. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info);
  712. //日志
  713. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']', null);
  714. $type = input('param.type', 'pc');
  715. View::assign('page_config', $editable_page_config_info);
  716. ds_json_encode(10000, '', array('config_id' => $editable_page_config_info['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $editable_page_config_info['editable_page_model_id'])));
  717. }
  718. }
  719. /**
  720. * 链接模块
  721. */
  722. public function model_link() {
  723. $config_id = intval(input('param.config_id'));
  724. $item_id = intval(input('param.item_id'));
  725. if (!$config_id) {
  726. ds_json_encode(10001, lang('param_error'));
  727. }
  728. $editable_page_config_model = model('editable_page_config');
  729. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  730. if (!$editable_page_config_info) {
  731. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  732. }
  733. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  734. if (!isset($config_info['link']) || !isset($config_info['link'][$item_id]) || !isset($config_info['link'][$item_id]['count']) || !isset($config_info['link'][$item_id]['list'])) {
  735. ds_json_encode(10001, lang('param_error'));
  736. }
  737. $link_info = $config_info['link'][$item_id];
  738. if (!request()->isPost()) {
  739. View::assign('text_info', $link_info);
  740. View::assign('editable_type', 'link');
  741. echo View::fetch($this->model_dir . 'model_text');
  742. exit;
  743. } else {
  744. $link_list = input('post.text/a');
  745. if (!is_array($link_list) || empty($link_list)) {
  746. ds_json_encode(10001, lang('param_error'));
  747. }
  748. $config_info['link'][$item_id]['list'] = $this->arraySort($link_list, 'sort' , 'asc');
  749. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  750. ds_json_encode(10001, lang('ds_common_op_fail'));
  751. }
  752. $editable_page_config_info['editable_page_config_content'] = $config_info;
  753. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info);
  754. //日志
  755. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']', null);
  756. $type = input('param.type', 'pc');
  757. View::assign('page_config', $editable_page_config_info);
  758. ds_json_encode(10000, '', array('config_id' => $editable_page_config_info['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $editable_page_config_info['editable_page_model_id'])));
  759. }
  760. }
  761. /**
  762. * 图片模块
  763. */
  764. public function model_image() {
  765. $config_id = intval(input('param.config_id'));
  766. $item_id = intval(input('param.item_id'));
  767. if (!$config_id) {
  768. ds_json_encode(10001, lang('param_error'));
  769. }
  770. $editable_page_config_model = model('editable_page_config');
  771. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  772. if (!$editable_page_config_info) {
  773. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  774. }
  775. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  776. if (!isset($config_info['image']) || !isset($config_info['image'][$item_id]) || !isset($config_info['image'][$item_id]['count']) || !isset($config_info['image'][$item_id]['list'])) {
  777. ds_json_encode(10001, lang('param_error'));
  778. }
  779. $image_info = $config_info['image'][$item_id];
  780. if (!request()->isPost()) {
  781. View::assign('image_info', $image_info);
  782. echo View::fetch($this->model_dir . 'model_image');
  783. exit;
  784. } else {
  785. $image_list = input('post.img/a');
  786. if (!is_array($image_list) || empty($image_list)) {
  787. ds_json_encode(10001, lang('param_error'));
  788. }
  789. $config_info['image'][$item_id]['list'] = $this->arraySort($image_list, 'sort' , 'asc');
  790. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  791. ds_json_encode(10001, lang('ds_common_op_fail'));
  792. }
  793. $editable_page_config_info['editable_page_config_content'] = $config_info;
  794. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info);
  795. //日志
  796. $this->log(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']', null);
  797. $type = input('param.type', 'pc');
  798. View::assign('page_config', $editable_page_config_info);
  799. ds_json_encode(10000, '', array('config_id' => $editable_page_config_info['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $editable_page_config_info['editable_page_model_id'])));
  800. }
  801. }
  802. public function image_del() {
  803. $file_id = intval(input('param.upload_id'));
  804. $res = model('editable_page_model', 'logic')->imageDel($file_id);
  805. if (!$res['code']) {
  806. ds_json_encode(10001, $res['msg']);
  807. }
  808. ds_json_encode(10000);
  809. }
  810. /**
  811. * 图片上传
  812. */
  813. public function image_upload() {
  814. $res = model('editable_page_model', 'logic')->imageUpload(input('param.name'), input('param.config_id'));
  815. if (!$res['code']) {
  816. ds_json_encode_exit(10001, $res['msg']);
  817. }
  818. $data = $res['data'];
  819. ds_json_encode_exit(10000, '', $data);
  820. }
  821. /**
  822. * 多维数组排序(多用于文件数组数据)
  823. *
  824. * @param array $array
  825. * @param array $cols
  826. * @return array
  827. *
  828. */
  829. private function arraySort($array, $keys, $sort = 'asc') {
  830. $newArr = $valArr = array();
  831. foreach ($array as $key => $value) {
  832. $valArr[$key] = $value[$keys];
  833. }
  834. ($sort == 'asc') ? asort($valArr) : arsort($valArr);
  835. reset($valArr);
  836. foreach ($valArr as $key => $value) {
  837. $newArr[$key] = $array[$key];
  838. }
  839. return $newArr;
  840. }
  841. /**
  842. * 菜单列表
  843. */
  844. protected function getAdminItemList() {
  845. if ($this->type == 'pc') {
  846. $menu_array = array(
  847. array(
  848. 'name' => 'pc_page_list',
  849. 'text' => lang('ds_list'),
  850. 'url' => (string)url('EditablePage/page_list'),
  851. ),
  852. array(
  853. 'name' => 'page_add',
  854. 'text' => lang('ds_new'),
  855. 'url' => "javascript:dsLayerOpen('" . (string)url('EditablePage/page_add') . "','" . lang('ds_new') . "')",
  856. ),
  857. );
  858. } else {
  859. $menu_array = array(
  860. array(
  861. 'name' => 'h5_page_list',
  862. 'text' => lang('ds_list'),
  863. 'url' => (string)url('EditablePage/page_list', array('type' => 'h5')),
  864. ),
  865. array(
  866. 'name' => 'page_add',
  867. 'text' => lang('ds_new'),
  868. 'url' => "javascript:dsLayerOpen('" . (string)url('EditablePage/page_add', array('type' => 'h5')) . "','" . lang('ds_new') . "')",
  869. ),
  870. );
  871. }
  872. return $menu_array;
  873. }
  874. }
  875. ?>