goods_class.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738
  1. <?php
  2. /**
  3. * 商品分类管理
  4. *
  5. *
  6. *
  7. **by 好商城V3 www.33hao.com 运营版*/
  8. defined('InShopNC') or exit('Access Invalid!');
  9. class goods_classControl extends SystemControl
  10. {
  11. private $links = array(
  12. array('url'=>'act=goods_class&op=goods_class','lang'=>'nc_manage'),
  13. array('url'=>'act=goods_class&op=goods_class_add','lang'=>'nc_new'),
  14. array('url'=>'act=goods_class&op=goods_class_export','lang'=>'goods_class_index_export'),
  15. array('url'=>'act=goods_class&op=goods_class_import','lang'=>'goods_class_index_import'),
  16. array('url'=>'act=goods_class&op=tag','lang'=>'goods_class_index_tag'),
  17. );
  18. public function __construct() {
  19. parent::__construct();
  20. Language::read('goods_class');
  21. }
  22. /**
  23. * 分类管理
  24. */
  25. public function goods_classOp()
  26. {
  27. $lang = Language::getLangContent();
  28. $model_class = Model('goods_class');
  29. if (chksubmit())
  30. {
  31. //删除
  32. if ($_POST['submit_type'] == 'del')
  33. {
  34. $gcids = implode(',', $_POST['check_gc_id']);
  35. if (!empty($_POST['check_gc_id']))
  36. {
  37. if (!is_array($_POST['check_gc_id'])) {
  38. $this->log(L('nc_delete,goods_class_index_class').'[ID:'.$gcids.']',0);
  39. showMessage($lang['nc_common_del_fail']);
  40. }
  41. $del_array = $model_class->delGoodsClassByGcIdString($gcids);
  42. $this->log(L('nc_delete,goods_class_index_class').'[ID:'.$gcids.']',1);
  43. showMessage($lang['nc_common_del_succ']);
  44. } else {
  45. $this->log(L('nc_delete,goods_class_index_class').'[ID:'.$gcids.']',0);
  46. showMessage($lang['nc_common_del_fail']);
  47. }
  48. }
  49. }
  50. //父ID
  51. $parent_id = $_GET['gc_parent_id']?intval($_GET['gc_parent_id']):0;
  52. //列表
  53. $tmp_list = $model_class->getTreeClassList(3);
  54. if (is_array($tmp_list))
  55. {
  56. foreach ($tmp_list as $k => $v)
  57. {
  58. if ($v['gc_parent_id'] == $parent_id)
  59. {
  60. //判断是否有子类
  61. if ($tmp_list[$k+1]['deep'] > $v['deep']) {
  62. $v['have_child'] = 1;
  63. }
  64. $class_list[] = $v;
  65. }
  66. }
  67. }
  68. if ($_GET['ajax'] == '1')
  69. {
  70. //转码
  71. if (strtoupper(CHARSET) == 'GBK'){
  72. $class_list = Language::getUTF8($class_list);
  73. }
  74. $output = json_encode($class_list);
  75. print_r($output);
  76. exit;
  77. } else {
  78. Tpl::output('class_list',$class_list);
  79. Tpl::output('top_link',$this->sublink($this->links,'goods_class'));
  80. Tpl::showpage('goods_class.index');
  81. }
  82. }
  83. /**
  84. * 商品分类添加
  85. */
  86. public function goods_class_addOp()
  87. {
  88. $lang = Language::getLangContent();
  89. $model_class = Model('goods_class');
  90. if (chksubmit())
  91. {
  92. $obj_validate = new Validate();
  93. $obj_validate->validateparam = array(
  94. array("input"=>$_POST["gc_name"], "require"=>"true", "message"=>$lang['goods_class_add_name_null']),
  95. array("input"=>$_POST["gc_sort"], "require"=>"true", 'validator'=>'Number', "message"=>$lang['goods_class_add_sort_int']),
  96. );
  97. $error = $obj_validate->validate();
  98. if ($error != '') {
  99. showMessage($error);
  100. }
  101. else
  102. {
  103. $insert_array = array();
  104. $insert_array['gc_name'] = $_POST['gc_name'];
  105. $insert_array['type_id'] = intval($_POST['t_id']);
  106. $insert_array['type_name'] = trim($_POST['t_name']);
  107. $insert_array['gc_parent_id'] = intval($_POST['gc_parent_id']);
  108. $insert_array['commis_rate'] = intval($_POST['commis_rate']);
  109. $insert_array['gc_sort'] = intval($_POST['gc_sort']);
  110. $insert_array['gc_virtual'] = intval($_POST['gc_virtual']);
  111. $result = $model_class->addGoodsClass($insert_array);
  112. if ($result)
  113. {
  114. if ($insert_array['gc_parent_id'] == 0)
  115. {
  116. if (!empty($_FILES['pic']['name'])) {//上传图片
  117. $upload = new UploadFile();
  118. $upload->set('default_dir',ATTACH_COMMON);
  119. $upload->set('file_name','category-pic-'.$result.'.jpg');
  120. $upload->upfile('pic');
  121. }
  122. }
  123. $url = array(
  124. array(
  125. 'url'=>'index.php?act=goods_class&op=goods_class_add&gc_parent_id='.$_POST['gc_parent_id'],
  126. 'msg'=>$lang['goods_class_add_again'],
  127. ),
  128. array(
  129. 'url'=>'index.php?act=goods_class&op=goods_class',
  130. 'msg'=>$lang['goods_class_add_back_to_list'],
  131. )
  132. );
  133. $this->log(L('nc_add,goods_class_index_class').'['.$_POST['gc_name'].']',1);
  134. showMessage($lang['nc_common_save_succ'],$url);
  135. }
  136. else
  137. {
  138. $this->log(L('nc_add,goods_class_index_class').'['.$_POST['gc_name'].']',0);
  139. showMessage($lang['nc_common_save_fail']);
  140. }
  141. }
  142. }
  143. //父类列表,只取到第二级
  144. $parent_list = $model_class->getTreeClassList(2);
  145. $gc_list = array();
  146. if (is_array($parent_list))
  147. {
  148. foreach ($parent_list as $k => $v) {
  149. $parent_list[$k]['gc_name'] = str_repeat("&nbsp;",$v['deep']*2).$v['gc_name'];
  150. if($v['deep'] == 1) $gc_list[$k] = $v;
  151. }
  152. }
  153. Tpl::output('gc_list', $gc_list);
  154. //类型列表
  155. $model_type = Model('type');
  156. $type_list = $model_type->typeList(array('order'=>'type_sort asc'), '', 'type_id,type_name,class_id,class_name');
  157. $t_list = array();
  158. if(is_array($type_list) && !empty($type_list))
  159. {
  160. foreach($type_list as $k=>$val) {
  161. $t_list[$val['class_id']]['type'][$k] = $val;
  162. $t_list[$val['class_id']]['name'] = $val['class_name']==''?L('nc_default'):$val['class_name'];
  163. }
  164. }
  165. ksort($t_list);
  166. Tpl::output('type_list',$t_list);
  167. Tpl::output('gc_parent_id',$_GET['gc_parent_id']);
  168. Tpl::output('parent_list',$parent_list);
  169. Tpl::output('top_link',$this->sublink($this->links,'goods_class_add'));
  170. Tpl::showpage('goods_class.add');
  171. }
  172. /**
  173. * 编辑
  174. */
  175. public function goods_class_editOp()
  176. {
  177. $lang = Language::getLangContent();
  178. $model_class = Model('goods_class');
  179. if (chksubmit())
  180. {
  181. $obj_validate = new Validate();
  182. $obj_validate->validateparam = array(
  183. array("input"=>$_POST["gc_name"], "require"=>"true", "message"=>$lang['goods_class_add_name_null']),
  184. array("input"=>$_POST["commis_rate"], "require"=>"true", 'validator'=>'range','max'=>100,'min'=>0, "message"=>$lang['goods_class_add_commis_rate_error']),
  185. array("input"=>$_POST["gc_sort"], "require"=>"true", 'validator'=>'Number', "message"=>$lang['goods_class_add_sort_int']),
  186. );
  187. $error = $obj_validate->validate();
  188. if ($error != '') {
  189. showMessage($error);
  190. }
  191. // 更新分类信息
  192. $where = array('gc_id' => intval($_POST['gc_id']));
  193. $update_array = array();
  194. $update_array['gc_name'] = $_POST['gc_name'];
  195. $update_array['type_id'] = intval($_POST['t_id']);
  196. $update_array['type_name'] = trim($_POST['t_name']);
  197. $update_array['commis_rate'] = intval($_POST['commis_rate']);
  198. $update_array['gc_sort'] = intval($_POST['gc_sort']);
  199. $update_array['gc_virtual'] = intval($_POST['gc_virtual']);
  200. //好商城 v3-b10
  201. $update_array['gc_parent_id'] = intval($_POST['gc_parent_id']);
  202. $result = $model_class->editGoodsClass($update_array, $where);
  203. if (!$result){
  204. $this->log(L('nc_edit,goods_class_index_class').'['.$_POST['gc_name'].']',0);
  205. showMessage($lang['goods_class_batch_edit_fail']);
  206. }
  207. if (!empty($_FILES['pic']['name'])) {//上传图片
  208. $upload = new UploadFile();
  209. $upload->set('default_dir',ATTACH_COMMON);
  210. $upload->set('file_name','category-pic-'.intval($_POST['gc_id']).'.jpg');
  211. $upload->upfile('pic');
  212. }
  213. // 检测是否需要关联自己操作,统一查询子分类
  214. if ($_POST['t_commis_rate'] == '1' || $_POST['t_associated'] == '1' || $_POST['t_gc_virtual'] == '1')
  215. {
  216. $gc_id_list = $model_class->getChildClass($_POST['gc_id']);
  217. $gc_ids = array();
  218. if (is_array($gc_id_list) && !empty($gc_id_list))
  219. {
  220. foreach ($gc_id_list as $val){
  221. $gc_ids[] = $val['gc_id'];
  222. }
  223. }
  224. }
  225. // 更新该分类下子分类的所有分佣比例
  226. if ($_POST['t_commis_rate'] == '1' && !empty($gc_ids)) {
  227. $model_class->editGoodsClass(array('commis_rate'=>$update_array['commis_rate']),array('gc_id'=>array('in',$gc_ids)));
  228. }
  229. // 更新该分类下子分类的所有类型
  230. if ($_POST['t_associated'] == '1' && !empty($gc_ids)) {
  231. $where = array();
  232. $where['gc_id'] = array('in', $gc_ids);
  233. $update = array();
  234. $update['type_id'] = intval($_POST['t_id']);
  235. $update['type_name'] = trim($_POST['t_name']);
  236. $model_class->editGoodsClass($update, $where);
  237. }
  238. // 虚拟商品
  239. if ($_POST['t_gc_virtual'] == '1' && !empty($gc_ids)) {
  240. $model_class->editGoodsClass(array('gc_virtual'=>$update_array['gc_virtual']),array('gc_id'=>array('in',$gc_ids)));
  241. }
  242. $url = array(
  243. array(
  244. 'url'=>'index.php?act=goods_class&op=goods_class_edit&gc_id='.intval($_POST['gc_id']),
  245. 'msg'=>$lang['goods_class_batch_edit_again'],
  246. ),
  247. array(
  248. 'url'=>'index.php?act=goods_class&op=goods_class',
  249. 'msg'=>$lang['goods_class_add_back_to_list'],
  250. )
  251. );
  252. $this->log(L('nc_edit,goods_class_index_class').'['.$_POST['gc_name'].']',1);
  253. showMessage($lang['goods_class_batch_edit_ok'],$url,'html','succ',1,5000);
  254. }
  255. $class_array = $model_class->getGoodsClassInfoById(intval($_GET['gc_id']));
  256. if (empty($class_array)){
  257. showMessage($lang['goods_class_batch_edit_paramerror']);
  258. }
  259. //类型列表
  260. $model_type = Model('type');
  261. $type_list = $model_type->typeList(array('order'=>'type_sort asc'), '', 'type_id,type_name,class_id,class_name');
  262. $t_list = array();
  263. if(is_array($type_list) && !empty($type_list))
  264. {
  265. foreach($type_list as $k=>$val){
  266. $t_list[$val['class_id']]['type'][$k] = $val;
  267. $t_list[$val['class_id']]['name'] = $val['class_name']==''?L('nc_default'):$val['class_name'];
  268. }
  269. }
  270. ksort($t_list);
  271. //父类列表,只取到第二级
  272. $parent_list = $model_class->getTreeClassList(2);
  273. if (is_array($parent_list)){
  274. foreach ($parent_list as $k => $v){
  275. $parent_list[$k]['gc_name'] = str_repeat("&nbsp;",$v['deep']*2).$v['gc_name'];
  276. }
  277. }
  278. Tpl::output('parent_list',$parent_list);
  279. // 一级分类列表
  280. $gc_list = Model('goods_class')->getGoodsClassListByParentId(0);
  281. Tpl::output('gc_list', $gc_list);
  282. $pic_name = BASE_UPLOAD_PATH.'/'.ATTACH_COMMON.'/category-pic-'.$class_array['gc_id'].'.jpg';
  283. if (file_exists($pic_name)) {
  284. $class_array['pic'] = UPLOAD_SITE_URL.'/'.ATTACH_COMMON.'/category-pic-'.$class_array['gc_id'].'.jpg';
  285. }
  286. Tpl::output('type_list',$t_list);
  287. Tpl::output('class_array',$class_array);
  288. $this->links[] = array('url'=>'act=goods_class&op=goods_class_edit','lang'=>'nc_edit');
  289. Tpl::output('top_link',$this->sublink($this->links,'goods_class_edit'));
  290. Tpl::showpage('goods_class.edit');
  291. }
  292. /**
  293. * 分类导入
  294. */
  295. public function goods_class_importOp()
  296. {
  297. $lang = Language::getLangContent();
  298. $model_class = Model('goods_class');
  299. //导入
  300. if (chksubmit())
  301. {
  302. //得到导入文件后缀名
  303. $csv_array = explode('.',$_FILES['csv']['name']);
  304. $file_type = end($csv_array);
  305. if (!empty($_FILES['csv']) && !empty($_FILES['csv']['name']) && $file_type == 'csv')
  306. {
  307. $fp = @fopen($_FILES['csv']['tmp_name'],'rb');
  308. // 父ID
  309. $parent_id_1 = 0;
  310. while (!feof($fp))
  311. {
  312. $data = fgets($fp, 4096);
  313. switch (strtoupper($_POST['charset']))
  314. {
  315. case 'UTF-8':
  316. if (strtoupper(CHARSET) !== 'UTF-8') {
  317. $data = iconv('UTF-8',strtoupper(CHARSET),$data);
  318. }
  319. break;
  320. case 'GBK':
  321. if (strtoupper(CHARSET) !== 'GBK') {
  322. $data = iconv('GBK',strtoupper(CHARSET),$data);
  323. }
  324. break;
  325. }
  326. if (!empty($data)){
  327. $data = str_replace('"','',$data);
  328. //逗号去除
  329. $tmp_array = array();
  330. $tmp_array = explode(',',$data);
  331. if($tmp_array[0] == 'sort_order')continue;
  332. //第一位是序号,后面的是内容,最后一位名称
  333. $tmp_deep = 'parent_id_'.(count($tmp_array)-1);
  334. $insert_array = array();
  335. $insert_array['gc_sort'] = $tmp_array[0];
  336. $insert_array['gc_parent_id'] = $$tmp_deep;
  337. $insert_array['gc_name'] = $tmp_array[count($tmp_array)-1];
  338. $gc_id = $model_class->addGoodsClass($insert_array);
  339. //赋值这个深度父ID
  340. $tmp = 'parent_id_'.count($tmp_array);
  341. $$tmp = $gc_id;
  342. }
  343. }
  344. $this->log(L('goods_class_index_import,goods_class_index_class'),1);
  345. showMessage($lang['nc_common_op_succ'],'index.php?act=goods_class&op=goods_class');
  346. }
  347. else
  348. {
  349. $this->log(L('goods_class_index_import,goods_class_index_class'),0);
  350. showMessage($lang['goods_class_import_csv_null']);
  351. }
  352. }
  353. Tpl::output('top_link',$this->sublink($this->links,'goods_class_import'));
  354. Tpl::showpage('goods_class.import');
  355. }
  356. /**
  357. * 分类导出
  358. */
  359. public function goods_class_exportOp()
  360. {
  361. if (chksubmit())
  362. {
  363. $model_class = Model('goods_class');
  364. $class_list = $model_class->getTreeClassList();
  365. @header("Content-type: application/unknown");
  366. @header("Content-Disposition: attachment; filename=goods_class.csv");
  367. if (is_array($class_list))
  368. {
  369. foreach ($class_list as $k => $v)
  370. {
  371. $tmp = array();
  372. //序号
  373. $tmp['gc_sort'] = $v['gc_sort'];
  374. //深度
  375. for ($i=1; $i<=($v['deep']-1); $i++) {
  376. $tmp[] = '';
  377. }
  378. //分类名称
  379. $tmp['gc_name'] = $v['gc_name'];
  380. //转码 utf-gbk
  381. if (strtoupper(CHARSET) == 'UTF-8')
  382. {
  383. switch ($_POST['if_convert'])
  384. {
  385. case '1':
  386. $tmp_line = iconv('UTF-8','GB2312//IGNORE',join(',',$tmp));
  387. break;
  388. case '0':
  389. $tmp_line = join(',',$tmp);
  390. break;
  391. }
  392. }
  393. else
  394. {
  395. $tmp_line = join(',',$tmp);
  396. }
  397. $tmp_line = str_replace("\r\n",'',$tmp_line);
  398. echo $tmp_line."\r\n";
  399. }
  400. }
  401. $this->log(L('goods_class_index_export,goods_class_index_class'),1);
  402. exit;
  403. }
  404. Tpl::output('top_link',$this->sublink($this->links,'goods_class_export'));
  405. Tpl::showpage('goods_class.export');
  406. }
  407. /**
  408. * 删除分类
  409. */
  410. public function goods_class_delOp()
  411. {
  412. $lang = Language::getLangContent();
  413. $model_class = Model('goods_class');
  414. if (intval($_GET['gc_id']) > 0) {
  415. //删除分类
  416. $model_class->delGoodsClassByGcIdString(intval($_GET['gc_id']));
  417. $this->log(L('nc_delete,goods_class_index_class') . '[ID:' . intval($_GET['gc_id']) . ']',1);
  418. showMessage($lang['nc_common_del_succ'],'index.php?act=goods_class&op=goods_class');
  419. } else {
  420. $this->log(L('nc_delete,goods_class_index_class') . '[ID:' . intval($_GET['gc_id']) . ']',0);
  421. showMessage($lang['nc_common_del_fail'],'index.php?act=goods_class&op=goods_class');
  422. }
  423. }
  424. /**
  425. * tag列表
  426. */
  427. public function tagOp()
  428. {
  429. $lang = Language::getLangContent();
  430. /**
  431. * 处理商品分类
  432. */
  433. $choose_gcid = ($t = intval($_REQUEST['choose_gcid']))>0?$t:0;
  434. $gccache_arr = Model('goods_class')->getGoodsclassCache($choose_gcid,3);
  435. Tpl::output('gc_json',json_encode($gccache_arr['showclass']));
  436. Tpl::output('gc_choose_json',json_encode($gccache_arr['choose_gcid']));
  437. $model_class_tag = Model('goods_class_tag');
  438. if (chksubmit())
  439. {
  440. //删除
  441. if ($_POST['submit_type'] == 'del')
  442. {
  443. if (is_array($_POST['tag_id']) && !empty($_POST['tag_id'])) {
  444. //删除TAG
  445. $model_class_tag->delTagByIds(implode(',',$_POST['tag_id']));
  446. $this->log(L('nc_delete').'tag[ID:'.implode(',',$_POST['tag_id']).']',1);
  447. showMessage($lang['nc_common_del_succ']);
  448. } else {
  449. $this->log(L('nc_delete').'tag',0);
  450. showMessage($lang['nc_common_del_fail']);
  451. }
  452. }
  453. }
  454. $page = new Page();
  455. $page->setEachNum(10);
  456. $page->setStyle('admin');
  457. $where = array();
  458. if ($choose_gcid > 0) {
  459. $where['gc_id_'.($gccache_arr['showclass'][$choose_gcid]['depth'])] = $choose_gcid;
  460. }
  461. $tag_list = $model_class_tag->getTagList($where, $page);
  462. Tpl::output('tag_list', $tag_list);
  463. Tpl::output('page',$page->show());
  464. Tpl::output('top_link',$this->sublink($this->links,'tag'));
  465. Tpl::showpage('goods_class_tag.index');
  466. }
  467. /**
  468. * 重置TAG
  469. */
  470. public function tag_resetOp()
  471. {
  472. $lang = Language::getLangContent();
  473. //实例化模型
  474. $model_class = Model('goods_class');
  475. $model_class_tag = Model('goods_class_tag');
  476. //清空TAG
  477. $return = $model_class_tag->clearTag();
  478. if(!$return) {
  479. showMessage($lang['goods_class_reset_tag_fail'], 'index.php?act=goods_class&op=tag');
  480. }
  481. //商品分类
  482. $goods_class = $model_class->getTreeClassList(3);
  483. //格式化分类。组成三维数组
  484. if(is_array($goods_class) and !empty($goods_class))
  485. {
  486. $goods_class_array = array();
  487. foreach ($goods_class as $val)
  488. {
  489. //一级分类
  490. if($val['gc_parent_id'] == 0) {
  491. $goods_class_array[$val['gc_id']]['gc_name'] = $val['gc_name'];
  492. $goods_class_array[$val['gc_id']]['gc_id'] = $val['gc_id'];
  493. $goods_class_array[$val['gc_id']]['type_id'] = $val['type_id'];
  494. }
  495. else
  496. {
  497. //二级分类
  498. if(isset($goods_class_array[$val['gc_parent_id']])){
  499. $goods_class_array[$val['gc_parent_id']]['sub_class'][$val['gc_id']]['gc_name'] = $val['gc_name'];
  500. $goods_class_array[$val['gc_parent_id']]['sub_class'][$val['gc_id']]['gc_id'] = $val['gc_id'];
  501. $goods_class_array[$val['gc_parent_id']]['sub_class'][$val['gc_id']]['gc_parent_id'] = $val['gc_parent_id'];
  502. $goods_class_array[$val['gc_parent_id']]['sub_class'][$val['gc_id']]['type_id'] = $val['type_id'];
  503. }
  504. else
  505. {
  506. foreach ($goods_class_array as $v)
  507. {
  508. //三级分类
  509. if(isset($v['sub_class'][$val['gc_parent_id']])){
  510. $goods_class_array[$v['sub_class'][$val['gc_parent_id']]['gc_parent_id']]['sub_class'][$val['gc_parent_id']]['sub_class'][$val['gc_id']]['gc_name'] = $val['gc_name'];
  511. $goods_class_array[$v['sub_class'][$val['gc_parent_id']]['gc_parent_id']]['sub_class'][$val['gc_parent_id']]['sub_class'][$val['gc_id']]['gc_id'] = $val['gc_id'];
  512. $goods_class_array[$v['sub_class'][$val['gc_parent_id']]['gc_parent_id']]['sub_class'][$val['gc_parent_id']]['sub_class'][$val['gc_id']]['type_id'] = $val['type_id'];
  513. }
  514. }
  515. }
  516. }
  517. }
  518. $return = $model_class_tag->tagAdd($goods_class_array);
  519. if($return) {
  520. $this->log(L('nc_reset').'tag',1);
  521. showMessage($lang['nc_common_op_succ'], 'index.php?act=goods_class&op=tag');
  522. } else {
  523. $this->log(L('nc_reset').'tag',0);
  524. showMessage($lang['nc_common_op_fail'], 'index.php?act=goods_class&op=tag');
  525. }
  526. }
  527. else
  528. {
  529. $this->log(L('nc_reset').'tag',0);
  530. showMessage($lang['goods_class_reset_tag_fail_no_class'], 'index.php?act=goods_class&op=tag');
  531. }
  532. }
  533. /**
  534. * 更新TAG名称
  535. */
  536. public function tag_updateOp()
  537. {
  538. $lang = Language::getLangContent();
  539. $model_class = Model('goods_class');
  540. $model_class_tag = Model('goods_class_tag');
  541. //需要更新的TAG列表
  542. $tag_list = $model_class_tag->getTagList(array(), '', 'gc_tag_id,gc_id_1,gc_id_2,gc_id_3');
  543. if(is_array($tag_list) && !empty($tag_list))
  544. {
  545. foreach ($tag_list as $val)
  546. {
  547. //查询分类信息
  548. $in_gc_id = array();
  549. if($val['gc_id_1'] != '0'){
  550. $in_gc_id[] = $val['gc_id_1'];
  551. }
  552. if($val['gc_id_2'] != '0'){
  553. $in_gc_id[] = $val['gc_id_2'];
  554. }
  555. if($val['gc_id_3'] != '0'){
  556. $in_gc_id[] = $val['gc_id_3'];
  557. }
  558. $gc_list = $model_class->getGoodsClassListByIds($in_gc_id);
  559. //更新TAG信息
  560. $update_tag = array();
  561. if(isset($gc_list['0']['gc_id']) && $gc_list['0']['gc_id'] != '0'){
  562. $update_tag['gc_id_1'] = $gc_list['0']['gc_id'];
  563. $update_tag['gc_tag_name'] .= $gc_list['0']['gc_name'];
  564. }
  565. if(isset($gc_list['1']['gc_id']) && $gc_list['1']['gc_id'] != '0'){
  566. $update_tag['gc_id_2'] = $gc_list['1']['gc_id'];
  567. $update_tag['gc_tag_name'] .= "&nbsp;&gt;&nbsp;".$gc_list['1']['gc_name'];
  568. }
  569. if(isset($gc_list['2']['gc_id']) && $gc_list['2']['gc_id'] != '0'){
  570. $update_tag['gc_id_3'] = $gc_list['2']['gc_id'];
  571. $update_tag['gc_tag_name'] .= "&nbsp;&gt;&nbsp;".$gc_list['2']['gc_name'];
  572. }
  573. unset($gc_list);
  574. $update_tag['gc_tag_id'] = $val['gc_tag_id'];
  575. $return = $model_class_tag->updateTag($update_tag);
  576. if(!$return){
  577. $this->log(L('nc_update').'tag',0);
  578. showMessage($lang['nc_common_op_fail'], 'index.php?act=goods_class&op=tag');
  579. }
  580. }
  581. $this->log(L('nc_update').'tag',1);
  582. showMessage($lang['nc_common_op_succ'], 'index.php?act=goods_class&op=tag');
  583. }
  584. else {
  585. $this->log(L('nc_update').'tag',0);
  586. showMessage($lang['goods_class_update_tag_fail_no_class'], 'index.php?act=goods_class&op=tag');
  587. }
  588. }
  589. /**
  590. * 删除TAG
  591. */
  592. public function tag_delOp()
  593. {
  594. $id = intval($_GET['tag_id']);
  595. $lang = Language::getLangContent();
  596. $model_class_tag = Model('goods_class_tag');
  597. if ($id > 0)
  598. {
  599. /**
  600. * 删除TAG
  601. */
  602. $model_class_tag->delTagByIds($id);
  603. $this->log(L('nc_delete').'tag[ID:'.$id.']',1);
  604. showMessage($lang['nc_common_op_succ']);
  605. }else {
  606. $this->log(L('nc_delete').'tag[ID:'.$id.']',0);
  607. showMessage($lang['nc_common_op_fail']);
  608. }
  609. }
  610. /**
  611. * ajax操作
  612. */
  613. public function ajaxOp()
  614. {
  615. switch ($_GET['branch'])
  616. {
  617. /**
  618. * 更新分类
  619. */
  620. case 'goods_class_name':
  621. $model_class = Model('goods_class');
  622. $class_array = $model_class->getGoodsClassInfoById(intval($_GET['id']));
  623. $condition['gc_name'] = trim($_GET['value']);
  624. $condition['gc_parent_id'] = $class_array['gc_parent_id'];
  625. $condition['gc_id'] = array('neq' => intval($_GET['id']));
  626. $class_list = $model_class->getGoodsClassList($condition);
  627. if (empty($class_list)) {
  628. $where = array('gc_id' => intval($_GET['id']));
  629. $update_array = array();
  630. $update_array['gc_name'] = trim($_GET['value']);
  631. $model_class->editGoodsClass($update_array, $where);
  632. echo 'true';exit;
  633. } else {
  634. echo 'false';exit;
  635. }
  636. break;
  637. /**
  638. * 分类 排序 显示 设置
  639. */
  640. case 'goods_class_sort':
  641. case 'goods_class_show':
  642. case 'goods_class_index_show':
  643. $model_class = Model('goods_class');
  644. $where = array('gc_id' => intval($_GET['id']));
  645. $update_array = array();
  646. $update_array[$_GET['column']] = $_GET['value'];
  647. $model_class->editGoodsClass($update_array, $where);
  648. echo 'true';exit;
  649. break;
  650. /**
  651. * 添加、修改操作中 检测类别名称是否有重复
  652. */
  653. case 'check_class_name':
  654. $model_class = Model('goods_class');
  655. $condition['gc_name'] = trim($_GET['gc_name']);
  656. $condition['gc_parent_id'] = intval($_GET['gc_parent_id']);
  657. $condition['gc_id'] = array('neq', intval($_GET['gc_id']));
  658. $class_list = $model_class->getGoodsClassList($condition);
  659. if (empty($class_list)) {
  660. echo 'true';exit;
  661. } else {
  662. echo 'false';exit;
  663. }
  664. break;
  665. /**
  666. * TAG值编辑
  667. */
  668. case 'goods_class_tag_value':
  669. $model_class_tag = Model('goods_class_tag');
  670. $update_array = array();
  671. $update_array['gc_tag_id'] = intval($_GET['id']);
  672. /**
  673. * 转码 防止GBK下用中文逗号截取不正确
  674. */
  675. $comma = ',';
  676. if (strtoupper(CHARSET) == 'GBK'){
  677. $comma = Language::getGBK($comma);
  678. }
  679. $update_array[$_GET['column']] = trim(str_replace($comma,',',$_GET['value']));
  680. $model_class_tag->updateTag($update_array);
  681. echo 'true';exit;
  682. break;
  683. }
  684. }
  685. }