SellerEditablePage.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
  1. <?php
  2. namespace app\home\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 SellerEditablePage extends BaseSeller {
  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() . 'home/lang/' . config('lang.default_lang') . '/seller_editable_page.lang.php');
  23. }
  24. public function page_list($type = 'pc') {
  25. $this->type = $type;
  26. $keyword = input('param.editable_page_name');
  27. $condition = array();
  28. if ($keyword) {
  29. $condition[]=array('editable_page_name','like', '%' . $keyword . '%');
  30. }
  31. View::assign('filtered', empty($condition) ? 0 : 1);
  32. if (!in_array($type, array('pc', 'h5'))) {
  33. $type = 'pc';
  34. }
  35. $editable_page_model = model('editable_page');
  36. $condition = array_merge(array(array('store_id' ,'=', $this->store_info['store_id']), array('editable_page_client' ,'=', $type)), $condition);
  37. $editable_page_list = $editable_page_model->getEditablePageList($condition, 10);
  38. foreach ($editable_page_list as $key => $val) {
  39. if ($val['editable_page_client'] == 'pc') {
  40. $editable_page_list[$key]['edit_url'] = (string)url('StoreSpecial/index', ['store_id' => $this->store_info['store_id'], 'editable_page_id' => $val['editable_page_id']]);
  41. $editable_page_list[$key]['view_url'] = (string)url('StoreSpecial/index', ['store_id' => $this->store_info['store_id'], 'special_id' => $val['editable_page_id']]);
  42. } else {
  43. $editable_page_list[$key]['edit_url'] = (string)url('SellerEditablePage/mobile_page_setting', array('store_id' => $this->store_info['store_id'], 'editable_page_id' => $val['editable_page_id']));
  44. $editable_page_list[$key]['view_url'] = config('ds_config.h5_site_url') . '/' . 'home/store_special' . '?' . http_build_query(['id' => $this->store_info['store_id'], 'special_id' => $val['editable_page_id']]);
  45. }
  46. }
  47. View::assign('show_page', $editable_page_model->page_info->render());
  48. View::assign('editable_page_list', $editable_page_list);
  49. View::assign('type', $type);
  50. /* 设置卖家当前菜单 */
  51. $this->setSellerCurMenu($type == 'h5' ? 'seller_editable_page_h5' : 'seller_editable_page_pc');
  52. /* 设置卖家当前栏目 */
  53. $this->setSellerCurItem('page_list');
  54. return View::fetch($this->template_dir . 'page_list');
  55. }
  56. public function h5_page_list() {
  57. return $this->page_list('h5');
  58. }
  59. /**
  60. * 新增页面
  61. */
  62. public function page_add() {
  63. $editable_page_path = input('param.editable_page_path');
  64. $editable_page_item_id = intval(input('param.editable_page_item_id'));
  65. $editable_page_model = model('editable_page');
  66. if (!request()->isPost()) {
  67. return View::fetch($this->template_dir . 'page_form');
  68. } else {
  69. $data = array(
  70. 'store_id' => $this->store_info['store_id'],
  71. 'editable_page_name' => input('post.editable_page_name'),
  72. 'editable_page_path' => $editable_page_path,
  73. 'editable_page_item_id' => $editable_page_item_id,
  74. 'editable_page_client' => input('param.type', 'pc'),
  75. 'editable_page_theme' => 'style_1',
  76. 'editable_page_edit_time' => TIMESTAMP,
  77. 'editable_page_theme_config' => json_encode(array(
  78. 'back_color' => input('param.back_color')
  79. ))
  80. );
  81. $result = $editable_page_model->addEditablePage($data);
  82. $condition = array();
  83. $condition[] = array('store_id','=',$data['store_id']);
  84. $condition[] = array('editable_page_id','<>',$result);
  85. $condition[] = array('editable_page_path','=',$data['editable_page_path']);
  86. $condition[] = array('editable_page_client','=',$data['editable_page_client']);
  87. if (!in_array($data['editable_page_path'], array('store/index'))) {
  88. $condition[] = array('editable_page_item_id','=',$data['editable_page_item_id']);
  89. }
  90. $editable_page_model->editEditablePage($condition, array('editable_page_path' => '', 'editable_page_item_id' => 0));
  91. if ($result) {
  92. $this->recordSellerlog(lang('ds_add') . ($data['editable_page_client'] == 'h5' ? lang('editable_page_h5') : lang('editable_page_pc')) . '[flex_' . $result . ':' . input('post.editable_page_name') . ']');
  93. ds_json_encode(10000, lang('ds_common_op_succ'));
  94. } else {
  95. ds_json_encode(10001, lang('ds_common_op_fail'));
  96. }
  97. }
  98. }
  99. /**
  100. * 设置手机端页面
  101. */
  102. public function mobile_page_setting() {
  103. return View::fetch($this->model_dir . 'mobile_page_setting');
  104. }
  105. public function mobile_page_view() {
  106. //获取配置列表
  107. $editable_page_id = intval(input('param.editable_page_id'));
  108. $editable_page_model = model('editable_page');
  109. $editable_page = $editable_page_model->getOneEditablePage(array('store_id'=>$this->store_info['store_id'],'editable_page_id' => $editable_page_id));
  110. if (!$editable_page) {
  111. $this->error(lang('param_error'));
  112. }
  113. $editable_page['if_edit'] = 1;
  114. $editable_page['editable_page_theme_config'] = json_decode($editable_page['editable_page_theme_config'], true);
  115. View::assign('editable_page', $editable_page);
  116. $data = $editable_page_model->getEditablePageConfigByPageId($editable_page_id,$this->store_info['store_id']);
  117. View::assign('editable_page_config_list', $data['editable_page_config_list']);
  118. return View::fetch($this->model_dir . 'mobile_page_view');
  119. }
  120. /**
  121. * 编辑页面
  122. */
  123. public function page_edit() {
  124. $editable_page_id = intval(input('param.editable_page_id'));
  125. $editable_page_model = model('editable_page');
  126. $editable_page_info = $editable_page_model->getOneEditablePage(array('store_id' => $this->store_info['store_id'], 'editable_page_id' => $editable_page_id));
  127. if (!$editable_page_info) {
  128. ds_json_encode(10001, lang('param_error'));
  129. }
  130. $editable_page_info['editable_page_theme_config'] = json_decode($editable_page_info['editable_page_theme_config'], true);
  131. if (!request()->isPost()) {
  132. View::assign('editable_page', $editable_page_info);
  133. return View::fetch($this->template_dir . 'page_form');
  134. } else {
  135. $data = array(
  136. 'editable_page_path' => input('post.editable_page_path'),
  137. 'editable_page_item_id' => input('post.editable_page_item_id'),
  138. 'editable_page_name' => input('post.editable_page_name'),
  139. 'editable_page_theme_config' => json_encode(array(
  140. 'back_color' => input('param.back_color')
  141. ))
  142. );
  143. $result = $editable_page_model->editEditablePage(array('editable_page_id' => $editable_page_id), $data);
  144. $condition = array();
  145. $condition[] = array('store_id','=',$this->store_info['store_id']);
  146. $condition[] = array('editable_page_id','<>',$editable_page_id);
  147. $condition[] = array('editable_page_path','=',$data['editable_page_path']);
  148. $condition[] = array('editable_page_client','=',$editable_page_info['editable_page_client']);
  149. if (!in_array($data['editable_page_path'], array('store/index'))) {
  150. $condition[] = array('editable_page_item_id','=',$data['editable_page_item_id']);
  151. }
  152. $editable_page_model->editEditablePage($condition, array('editable_page_path' => '', 'editable_page_item_id' => 0));
  153. if ($result) {
  154. $this->recordSellerlog(lang('ds_edit') . ($editable_page_info['editable_page_client'] == 'h5' ? lang('editable_page_h5') : lang('editable_page_pc')) . '[' . $editable_page_info['editable_page_name'] . ']');
  155. ds_json_encode(10000, lang('ds_common_op_succ'));
  156. } else {
  157. ds_json_encode(10000, lang('ds_common_op_fail'));
  158. }
  159. }
  160. }
  161. /**
  162. * 删除页面
  163. */
  164. public function page_del() {
  165. $editable_page_id = intval(input('param.editable_page_id'));
  166. $editable_page_model = model('editable_page');
  167. $editable_page_info = $editable_page_model->getOneEditablePage(array('store_id' => $this->store_info['store_id'], 'editable_page_id' => $editable_page_id));
  168. if (!$editable_page_info) {
  169. ds_json_encode(10001, lang('param_error'));
  170. }
  171. if (!$editable_page_model->delEditablePage($editable_page_id)) {
  172. ds_json_encode(10001, lang('ds_common_op_fail'));
  173. }
  174. $this->recordSellerlog(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'] . ']');
  175. ds_json_encode(10000, lang('ds_common_del_succ'));
  176. }
  177. /**
  178. * 新增模块
  179. */
  180. public function model_add() {
  181. $page_id = intval(input('param.editable_page_id'));
  182. if (!$page_id) {
  183. ds_json_encode(10001, lang('param_error'));
  184. }
  185. $editable_page_model = model('editable_page');
  186. $editable_page = $editable_page_model->getOneEditablePage(array('store_id' => $this->store_info['store_id'], 'editable_page_id' => $page_id));
  187. if (!$editable_page) {
  188. ds_json_encode(10001, lang('param_error'));
  189. }
  190. $model_id = intval(input('param.model_id'));
  191. $type = input('param.type', 'pc');
  192. if (!$model_id) {
  193. $editable_page_model_list = model('editable_page_model')->getEditablePageModelList(array(array('editable_page_model_type','in', array('', 'store')), array('editable_page_model_client','in', array('', $type)), array('editable_page_theme','in', array('', '|' . $editable_page['editable_page_theme'] . '|'))));
  194. View::assign('editable_page_model_list', $editable_page_model_list);
  195. echo View::fetch($this->model_dir . 'model_add');
  196. exit;
  197. } else {
  198. $config_id = intval(input('param.config_id'));
  199. $res = model('editable_page_model', 'logic')->modelAdd($page_id, $type, $model_id, $config_id, $this->store_info['store_id']);
  200. if (!$res['code']) {
  201. ds_json_encode(10001, $res['msg']);
  202. }
  203. $data = $res['data'];
  204. //日志
  205. $this->recordSellerlog(lang('ds_update') . lang('editable_page_model') . '[' . $data['editable_page_config_id'] . ']');
  206. View::assign('page_config', $data);
  207. ds_json_encode(10000, '', array('config_id' => $data['editable_page_config_id'], 'model_html' => View::fetch($this->model_dir . ($type == 'h5' ? 'h5_' : '') . $model_id)));
  208. }
  209. }
  210. public function model_del() {
  211. 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'))))) {
  212. ds_json_encode(10001, lang('ds_common_op_fail'));
  213. } else {
  214. //日志
  215. $this->recordSellerlog(lang('ds_update') . lang('editable_page_model') . '[' . input('param.config_id') . ']');
  216. ds_json_encode(10000);
  217. }
  218. }
  219. public function model_sort() {
  220. $config_id = intval(input('param.config_id'));
  221. $o_config_id = intval(input('param.o_config_id'));
  222. $direction = intval(input('param.direction'));
  223. if (!$config_id || !$o_config_id) {
  224. ds_json_encode(10001, lang('param_error'));
  225. }
  226. $res = model('editable_page_model', 'logic')->modelSort($direction, $config_id, $o_config_id);
  227. if (!$res['code']) {
  228. ds_json_encode(10001, $res['msg']);
  229. }
  230. ds_json_encode(10000);
  231. }
  232. /**
  233. * 编辑模块
  234. */
  235. public function model_edit() {
  236. $config_id = intval(input('param.config_id'));
  237. if (!$config_id) {
  238. ds_json_encode(10001, lang('param_error'));
  239. }
  240. $editable_page_config_model = model('editable_page_config');
  241. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  242. if (!$editable_page_config_info) {
  243. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  244. }
  245. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  246. if (!request()->isPost()) {
  247. View::assign('base_config', $config_info);
  248. View::assign('model_type', $editable_page_config_info['editable_page_model_id']);
  249. echo View::fetch($this->model_dir . 'model_edit');
  250. exit;
  251. } else {
  252. $res = model('editable_page_model', 'logic')->modelEdit($editable_page_config_info, input('post.'), $this->store_info['store_id']);
  253. if (!$res['code']) {
  254. ds_json_encode(10001, $res['msg']);
  255. }
  256. $editable_page_config_info = $res['data'];
  257. //日志
  258. $this->recordSellerlog(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']');
  259. $type = input('param.type', 'pc');
  260. View::assign('page_config', $editable_page_config_info);
  261. 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'])));
  262. }
  263. }
  264. /**
  265. * 编辑器模块
  266. */
  267. public function model_editor() {
  268. $config_id = intval(input('param.config_id'));
  269. $item_id = intval(input('param.item_id'));
  270. if (!$config_id) {
  271. ds_json_encode(10001, lang('param_error'));
  272. }
  273. $editable_page_config_model = model('editable_page_config');
  274. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  275. if (!$editable_page_config_info) {
  276. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  277. }
  278. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  279. if (!isset($config_info['editor']) || !isset($config_info['editor'][$item_id])) {
  280. ds_json_encode(10001, lang('param_error'));
  281. }
  282. $editor_content = $config_info['editor'][$item_id];
  283. if (!request()->isPost()) {
  284. View::assign('editor_content', $editor_content);
  285. View::assign('file_upload', model('upload')->getUploadList(array('upload_type' => 7, 'item_id' => $config_id)));
  286. echo View::fetch($this->model_dir . 'model_editor');
  287. exit;
  288. } else {
  289. $config_info['editor'][$item_id] = input('post.editor');
  290. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  291. ds_json_encode(10001, lang('ds_common_op_fail'));
  292. }
  293. $config_info['editor'][$item_id] = htmlspecialchars_decode($config_info['editor'][$item_id]);
  294. $editable_page_config_info['editable_page_config_content'] = $config_info;
  295. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info, $this->store_info['store_id']);
  296. //日志
  297. $this->recordSellerlog(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']');
  298. $type = input('param.type', 'pc');
  299. View::assign('page_config', $editable_page_config_info);
  300. 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'])));
  301. }
  302. }
  303. /**
  304. * 文字模块
  305. */
  306. public function model_text() {
  307. $config_id = intval(input('param.config_id'));
  308. $item_id = intval(input('param.item_id'));
  309. if (!$config_id) {
  310. ds_json_encode(10001, lang('param_error'));
  311. }
  312. $editable_page_config_model = model('editable_page_config');
  313. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  314. if (!$editable_page_config_info) {
  315. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  316. }
  317. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  318. 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'])) {
  319. ds_json_encode(10001, lang('param_error'));
  320. }
  321. $text_info = $config_info['text'][$item_id];
  322. if (!request()->isPost()) {
  323. View::assign('text_info', $text_info);
  324. View::assign('editable_type', 'text');
  325. echo View::fetch($this->model_dir . 'model_text');
  326. exit;
  327. } else {
  328. $text_list = input('post.text/a');
  329. if (!is_array($text_list) || empty($text_list)) {
  330. ds_json_encode(10001, lang('param_error'));
  331. }
  332. $config_info['text'][$item_id]['list'] = $this->arraySort($text_list, 'sort' , 'asc');
  333. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  334. ds_json_encode(10001, lang('ds_common_op_fail'));
  335. }
  336. $editable_page_config_info['editable_page_config_content'] = $config_info;
  337. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info, $this->store_info['store_id']);
  338. //日志
  339. $this->recordSellerlog(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']');
  340. $type = input('param.type', 'pc');
  341. View::assign('page_config', $editable_page_config_info);
  342. 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'])));
  343. }
  344. }
  345. /**
  346. * 链接模块
  347. */
  348. public function model_link() {
  349. $config_id = intval(input('param.config_id'));
  350. $item_id = intval(input('param.item_id'));
  351. if (!$config_id) {
  352. ds_json_encode(10001, lang('param_error'));
  353. }
  354. $editable_page_config_model = model('editable_page_config');
  355. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  356. if (!$editable_page_config_info) {
  357. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  358. }
  359. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  360. 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'])) {
  361. ds_json_encode(10001, lang('param_error'));
  362. }
  363. $link_info = $config_info['link'][$item_id];
  364. if (!request()->isPost()) {
  365. View::assign('text_info', $link_info);
  366. View::assign('editable_type', 'link');
  367. echo View::fetch($this->model_dir . 'model_text');
  368. exit;
  369. } else {
  370. $link_list = input('post.text/a');
  371. if (!is_array($link_list) || empty($link_list)) {
  372. ds_json_encode(10001, lang('param_error'));
  373. }
  374. $config_info['link'][$item_id]['list'] = $this->arraySort($link_list, 'sort' , 'asc');
  375. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  376. ds_json_encode(10001, lang('ds_common_op_fail'));
  377. }
  378. $editable_page_config_info['editable_page_config_content'] = $config_info;
  379. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info, $this->store_info['store_id']);
  380. //日志
  381. $this->recordSellerlog(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']');
  382. $type = input('param.type', 'pc');
  383. View::assign('page_config', $editable_page_config_info);
  384. 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'])));
  385. }
  386. }
  387. /**
  388. * 图片模块
  389. */
  390. public function model_image() {
  391. $config_id = intval(input('param.config_id'));
  392. $item_id = intval(input('param.item_id'));
  393. if (!$config_id) {
  394. ds_json_encode(10001, lang('param_error'));
  395. }
  396. $editable_page_config_model = model('editable_page_config');
  397. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  398. if (!$editable_page_config_info) {
  399. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  400. }
  401. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  402. 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'])) {
  403. ds_json_encode(10001, lang('param_error'));
  404. }
  405. $image_info = $config_info['image'][$item_id];
  406. if (!request()->isPost()) {
  407. View::assign('image_info', $image_info);
  408. echo View::fetch($this->model_dir . 'model_image');
  409. exit;
  410. } else {
  411. $image_list = input('post.img/a');
  412. if (!is_array($image_list) || empty($image_list)) {
  413. ds_json_encode(10001, lang('param_error'));
  414. }
  415. $config_info['image'][$item_id]['list'] = $this->arraySort($image_list, 'sort' , 'asc');
  416. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  417. ds_json_encode(10001, lang('ds_common_op_fail'));
  418. }
  419. $editable_page_config_info['editable_page_config_content'] = $config_info;
  420. $editable_page_config_info = model('editable_page_model', 'logic')->updatePage($editable_page_config_info, $this->store_info['store_id']);
  421. //日志
  422. $this->recordSellerlog(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']');
  423. $type = input('param.type', 'pc');
  424. View::assign('page_config', $editable_page_config_info);
  425. 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'])));
  426. }
  427. }
  428. public function image_del() {
  429. $file_id = intval(input('param.upload_id'));
  430. $res = model('editable_page_model', 'logic')->imageDel($file_id);
  431. if (!$res['code']) {
  432. ds_json_encode(10001, $res['msg']);
  433. }
  434. ds_json_encode(10000);
  435. }
  436. /**
  437. * 图片上传
  438. */
  439. public function image_upload() {
  440. $res = model('editable_page_model', 'logic')->imageUpload(input('param.name'), input('param.config_id'));
  441. if (!$res['code']) {
  442. ds_json_encode_exit(10001, $res['msg']);
  443. }
  444. $data = $res['data'];
  445. ds_json_encode_exit(10000, '', $data);
  446. }
  447. /**
  448. * 商品模块
  449. */
  450. public function model_goods() {
  451. $config_id = intval(input('param.config_id'));
  452. $item_id = intval(input('param.item_id'));
  453. if (!$config_id) {
  454. ds_json_encode(10001, lang('param_error'));
  455. }
  456. $editable_page_config_model = model('editable_page_config');
  457. $editable_page_config_info = $editable_page_config_model->getOneEditablePageConfig(array('editable_page_config_id' => $config_id));
  458. if (!$editable_page_config_info) {
  459. ds_json_encode(10001, lang('editable_page_config_not_exist'));
  460. }
  461. $config_info = json_decode($editable_page_config_info['editable_page_config_content'], true);
  462. if (!isset($config_info['goods']) || !isset($config_info['goods'][$item_id])) {
  463. ds_json_encode(10001, lang('param_error'));
  464. }
  465. $goods_info = $config_info['goods'][$item_id];
  466. 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'])) {
  467. ds_json_encode(10001, lang('param_error'));
  468. }
  469. if (!request()->isPost()) {
  470. View::assign('goods_info', $goods_info);
  471. $goods_list = array();
  472. if ($goods_info['if_fix'] && !empty($goods_info['goods_id'])) {
  473. $goods_model = model('goods');
  474. $goods_list = $goods_model->getGoodsOnlineList(array(array('goods_id','in', array_keys($goods_info['goods_id']))));
  475. }
  476. View::assign('goods_list', $goods_list);
  477. // 商品分类
  478. $store_goods_class = model('storegoodsclass')->getClassTree(array('store_id' => $this->store_info['store_id'], 'storegc_state' => '1'));
  479. View::assign('store_goods_class', $store_goods_class);
  480. echo View::fetch($this->model_dir . 'model_goods');
  481. exit;
  482. } else {
  483. $sort = input('param.sort');
  484. if (!in_array($sort, array('new', 'hot', 'good'))) {
  485. ds_json_encode(10001, lang('param_error'));
  486. }
  487. $if_fix = intval(input('param.if_fix'));
  488. if (!in_array($if_fix, array(0, 1))) {
  489. ds_json_encode(10001, lang('param_error'));
  490. }
  491. $goods_id = input('param.goods_id/a');
  492. if (!is_array($goods_id)) {
  493. $goods_id = array();
  494. }
  495. asort($goods_id);
  496. $temp = array(
  497. 'gc_id' => intval(input('param.choose_gcid')),
  498. 'sort' => $sort,
  499. 'if_fix' => $if_fix,
  500. 'goods_id' => $goods_id,
  501. );
  502. $config_info['goods'][$item_id] = array_merge($config_info['goods'][$item_id], $temp);
  503. if (!$editable_page_config_model->editEditablePageConfig(array('editable_page_config_id' => $config_id), array('editable_page_config_content' => json_encode($config_info)))) {
  504. ds_json_encode(10001, lang('ds_common_op_fail'));
  505. }
  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, $this->store_info['store_id']);
  508. //日志
  509. $this->recordSellerlog(lang('ds_update') . lang('editable_page_model') . '[' . $editable_page_config_info['editable_page_config_id'] . ']');
  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(array('store_id','=',$this->store_info['store_id']));
  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. * @param array $array
  538. * @param array $cols
  539. * @return array
  540. *
  541. */
  542. private function arraySort($array, $keys, $sort = 'asc') {
  543. $newArr = $valArr = array();
  544. foreach ($array as $key => $value) {
  545. $valArr[$key] = $value[$keys];
  546. }
  547. ($sort == 'asc') ? asort($valArr) : arsort($valArr);
  548. reset($valArr);
  549. foreach ($valArr as $key => $value) {
  550. $newArr[$key] = $array[$key];
  551. }
  552. return $newArr;
  553. }
  554. /**
  555. * 栏目菜单
  556. */
  557. function getSellerItemList() {
  558. $menu_array[] = array(
  559. 'name' => 'page_list',
  560. 'text' => lang('page_list'),
  561. 'url' => 'javascript:void(0)',
  562. );
  563. return $menu_array;
  564. }
  565. }