goods_class.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741
  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 Validator();
  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 Validator();
  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[1] == 'sort_order')continue;
  332. //第一位是序号,后面的是内容,最后一位名称
  333. $tmp_deep = 'parent_id_'.(count($tmp_array)-2);
  334. $insert_array = array();
  335. $insert_array['gc_id'] = $tmp_array[0];
  336. $insert_array['gc_sort'] = $tmp_array[1];
  337. $insert_array['gc_parent_id'] = $$tmp_deep;
  338. $insert_array['gc_name'] = $tmp_array[count($tmp_array)-1];
  339. $gc_id = $model_class->addGoodsClass($insert_array);
  340. //赋值这个深度父ID
  341. $tmp = 'parent_id_'.(count($tmp_array) - 1);
  342. $$tmp = $gc_id;
  343. }
  344. }
  345. $this->log(L('goods_class_index_import,goods_class_index_class'),1);
  346. showMessage($lang['nc_common_op_succ'],'index.php?act=goods_class&op=goods_class');
  347. }
  348. else
  349. {
  350. $this->log(L('goods_class_index_import,goods_class_index_class'),0);
  351. showMessage($lang['goods_class_import_csv_null']);
  352. }
  353. }
  354. Tpl::output('top_link',$this->sublink($this->links,'goods_class_import'));
  355. Tpl::showpage('goods_class.import');
  356. }
  357. /**
  358. * 分类导出
  359. */
  360. public function goods_class_exportOp()
  361. {
  362. if (chksubmit())
  363. {
  364. $model_class = Model('goods_class');
  365. $class_list = $model_class->getTreeClassList();
  366. @header("Content-type: application/unknown");
  367. @header("Content-Disposition: attachment; filename=goods_class.csv");
  368. if (is_array($class_list))
  369. {
  370. foreach ($class_list as $k => $v)
  371. {
  372. $tmp = array();
  373. //分类ID
  374. $tmp['gc_id'] = $v['gc_id'];
  375. //序号
  376. $tmp['gc_sort'] = $v['gc_sort'];
  377. //深度
  378. for ($i=1; $i<=($v['deep']-1); $i++) {
  379. $tmp[] = '';
  380. }
  381. //分类名称
  382. $tmp['gc_name'] = $v['gc_name'];
  383. //转码 utf-gbk
  384. if (strtoupper(CHARSET) == 'UTF-8')
  385. {
  386. switch ($_POST['if_convert'])
  387. {
  388. case '1':
  389. $tmp_line = iconv('UTF-8','GB2312//IGNORE',join(',',$tmp));
  390. break;
  391. case '0':
  392. $tmp_line = join(',',$tmp);
  393. break;
  394. }
  395. }
  396. else
  397. {
  398. $tmp_line = join(',',$tmp);
  399. }
  400. $tmp_line = str_replace("\r\n",'',$tmp_line);
  401. echo $tmp_line."\r\n";
  402. }
  403. }
  404. $this->log(L('goods_class_index_export,goods_class_index_class'),1);
  405. exit;
  406. }
  407. Tpl::output('top_link',$this->sublink($this->links,'goods_class_export'));
  408. Tpl::showpage('goods_class.export');
  409. }
  410. /**
  411. * 删除分类
  412. */
  413. public function goods_class_delOp()
  414. {
  415. $lang = Language::getLangContent();
  416. $model_class = Model('goods_class');
  417. if (intval($_GET['gc_id']) > 0) {
  418. //删除分类
  419. $model_class->delGoodsClassByGcIdString(intval($_GET['gc_id']));
  420. $this->log(L('nc_delete,goods_class_index_class') . '[ID:' . intval($_GET['gc_id']) . ']',1);
  421. showMessage($lang['nc_common_del_succ'],'index.php?act=goods_class&op=goods_class');
  422. } else {
  423. $this->log(L('nc_delete,goods_class_index_class') . '[ID:' . intval($_GET['gc_id']) . ']',0);
  424. showMessage($lang['nc_common_del_fail'],'index.php?act=goods_class&op=goods_class');
  425. }
  426. }
  427. /**
  428. * tag列表
  429. */
  430. public function tagOp()
  431. {
  432. $lang = Language::getLangContent();
  433. /**
  434. * 处理商品分类
  435. */
  436. $choose_gcid = ($t = intval($_REQUEST['choose_gcid']))>0?$t:0;
  437. $gccache_arr = Model('goods_class')->getGoodsclassCache($choose_gcid,3);
  438. Tpl::output('gc_json',json_encode($gccache_arr['showclass']));
  439. Tpl::output('gc_choose_json',json_encode($gccache_arr['choose_gcid']));
  440. $model_class_tag = Model('goods_class_tag');
  441. if (chksubmit())
  442. {
  443. //删除
  444. if ($_POST['submit_type'] == 'del')
  445. {
  446. if (is_array($_POST['tag_id']) && !empty($_POST['tag_id'])) {
  447. //删除TAG
  448. $model_class_tag->delTagByIds(implode(',',$_POST['tag_id']));
  449. $this->log(L('nc_delete').'tag[ID:'.implode(',',$_POST['tag_id']).']',1);
  450. showMessage($lang['nc_common_del_succ']);
  451. } else {
  452. $this->log(L('nc_delete').'tag',0);
  453. showMessage($lang['nc_common_del_fail']);
  454. }
  455. }
  456. }
  457. $page = new Page();
  458. $page->setEachNum(10);
  459. $page->setStyle('admin');
  460. $where = array();
  461. if ($choose_gcid > 0) {
  462. $where['gc_id_'.($gccache_arr['showclass'][$choose_gcid]['depth'])] = $choose_gcid;
  463. }
  464. $tag_list = $model_class_tag->getTagList($where, $page);
  465. Tpl::output('tag_list', $tag_list);
  466. Tpl::output('page',$page->show());
  467. Tpl::output('top_link',$this->sublink($this->links,'tag'));
  468. Tpl::showpage('goods_class_tag.index');
  469. }
  470. /**
  471. * 重置TAG
  472. */
  473. public function tag_resetOp()
  474. {
  475. $lang = Language::getLangContent();
  476. //实例化模型
  477. $model_class = Model('goods_class');
  478. $model_class_tag = Model('goods_class_tag');
  479. //清空TAG
  480. $return = $model_class_tag->clearTag();
  481. if(!$return) {
  482. showMessage($lang['goods_class_reset_tag_fail'], 'index.php?act=goods_class&op=tag');
  483. }
  484. //商品分类
  485. $goods_class = $model_class->getTreeClassList(3);
  486. //格式化分类。组成三维数组
  487. if(is_array($goods_class) and !empty($goods_class))
  488. {
  489. $goods_class_array = array();
  490. foreach ($goods_class as $val)
  491. {
  492. //一级分类
  493. if($val['gc_parent_id'] == 0) {
  494. $goods_class_array[$val['gc_id']]['gc_name'] = $val['gc_name'];
  495. $goods_class_array[$val['gc_id']]['gc_id'] = $val['gc_id'];
  496. $goods_class_array[$val['gc_id']]['type_id'] = $val['type_id'];
  497. }
  498. else
  499. {
  500. //二级分类
  501. if(isset($goods_class_array[$val['gc_parent_id']])){
  502. $goods_class_array[$val['gc_parent_id']]['sub_class'][$val['gc_id']]['gc_name'] = $val['gc_name'];
  503. $goods_class_array[$val['gc_parent_id']]['sub_class'][$val['gc_id']]['gc_id'] = $val['gc_id'];
  504. $goods_class_array[$val['gc_parent_id']]['sub_class'][$val['gc_id']]['gc_parent_id'] = $val['gc_parent_id'];
  505. $goods_class_array[$val['gc_parent_id']]['sub_class'][$val['gc_id']]['type_id'] = $val['type_id'];
  506. }
  507. else
  508. {
  509. foreach ($goods_class_array as $v)
  510. {
  511. //三级分类
  512. if(isset($v['sub_class'][$val['gc_parent_id']])){
  513. $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'];
  514. $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'];
  515. $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'];
  516. }
  517. }
  518. }
  519. }
  520. }
  521. $return = $model_class_tag->tagAdd($goods_class_array);
  522. if($return) {
  523. $this->log(L('nc_reset').'tag',1);
  524. showMessage($lang['nc_common_op_succ'], 'index.php?act=goods_class&op=tag');
  525. } else {
  526. $this->log(L('nc_reset').'tag',0);
  527. showMessage($lang['nc_common_op_fail'], 'index.php?act=goods_class&op=tag');
  528. }
  529. }
  530. else
  531. {
  532. $this->log(L('nc_reset').'tag',0);
  533. showMessage($lang['goods_class_reset_tag_fail_no_class'], 'index.php?act=goods_class&op=tag');
  534. }
  535. }
  536. /**
  537. * 更新TAG名称
  538. */
  539. public function tag_updateOp()
  540. {
  541. $lang = Language::getLangContent();
  542. $model_class = Model('goods_class');
  543. $model_class_tag = Model('goods_class_tag');
  544. //需要更新的TAG列表
  545. $tag_list = $model_class_tag->getTagList(array(), '', 'gc_tag_id,gc_id_1,gc_id_2,gc_id_3');
  546. if(is_array($tag_list) && !empty($tag_list))
  547. {
  548. foreach ($tag_list as $val)
  549. {
  550. //查询分类信息
  551. $in_gc_id = array();
  552. if($val['gc_id_1'] != '0'){
  553. $in_gc_id[] = $val['gc_id_1'];
  554. }
  555. if($val['gc_id_2'] != '0'){
  556. $in_gc_id[] = $val['gc_id_2'];
  557. }
  558. if($val['gc_id_3'] != '0'){
  559. $in_gc_id[] = $val['gc_id_3'];
  560. }
  561. $gc_list = $model_class->getGoodsClassListByIds($in_gc_id);
  562. //更新TAG信息
  563. $update_tag = array();
  564. if(isset($gc_list['0']['gc_id']) && $gc_list['0']['gc_id'] != '0'){
  565. $update_tag['gc_id_1'] = $gc_list['0']['gc_id'];
  566. $update_tag['gc_tag_name'] .= $gc_list['0']['gc_name'];
  567. }
  568. if(isset($gc_list['1']['gc_id']) && $gc_list['1']['gc_id'] != '0'){
  569. $update_tag['gc_id_2'] = $gc_list['1']['gc_id'];
  570. $update_tag['gc_tag_name'] .= "&nbsp;&gt;&nbsp;".$gc_list['1']['gc_name'];
  571. }
  572. if(isset($gc_list['2']['gc_id']) && $gc_list['2']['gc_id'] != '0'){
  573. $update_tag['gc_id_3'] = $gc_list['2']['gc_id'];
  574. $update_tag['gc_tag_name'] .= "&nbsp;&gt;&nbsp;".$gc_list['2']['gc_name'];
  575. }
  576. unset($gc_list);
  577. $update_tag['gc_tag_id'] = $val['gc_tag_id'];
  578. $return = $model_class_tag->updateTag($update_tag);
  579. if(!$return){
  580. $this->log(L('nc_update').'tag',0);
  581. showMessage($lang['nc_common_op_fail'], 'index.php?act=goods_class&op=tag');
  582. }
  583. }
  584. $this->log(L('nc_update').'tag',1);
  585. showMessage($lang['nc_common_op_succ'], 'index.php?act=goods_class&op=tag');
  586. }
  587. else {
  588. $this->log(L('nc_update').'tag',0);
  589. showMessage($lang['goods_class_update_tag_fail_no_class'], 'index.php?act=goods_class&op=tag');
  590. }
  591. }
  592. /**
  593. * 删除TAG
  594. */
  595. public function tag_delOp()
  596. {
  597. $id = intval($_GET['tag_id']);
  598. $lang = Language::getLangContent();
  599. $model_class_tag = Model('goods_class_tag');
  600. if ($id > 0)
  601. {
  602. /**
  603. * 删除TAG
  604. */
  605. $model_class_tag->delTagByIds($id);
  606. $this->log(L('nc_delete').'tag[ID:'.$id.']',1);
  607. showMessage($lang['nc_common_op_succ']);
  608. }else {
  609. $this->log(L('nc_delete').'tag[ID:'.$id.']',0);
  610. showMessage($lang['nc_common_op_fail']);
  611. }
  612. }
  613. /**
  614. * ajax操作
  615. */
  616. public function ajaxOp()
  617. {
  618. switch ($_GET['branch'])
  619. {
  620. /**
  621. * 更新分类
  622. */
  623. case 'goods_class_name':
  624. $model_class = Model('goods_class');
  625. $class_array = $model_class->getGoodsClassInfoById(intval($_GET['id']));
  626. $condition['gc_name'] = trim($_GET['value']);
  627. $condition['gc_parent_id'] = $class_array['gc_parent_id'];
  628. $condition['gc_id'] = array('neq' => intval($_GET['id']));
  629. $class_list = $model_class->getGoodsClassList($condition);
  630. if (empty($class_list)) {
  631. $where = array('gc_id' => intval($_GET['id']));
  632. $update_array = array();
  633. $update_array['gc_name'] = trim($_GET['value']);
  634. $model_class->editGoodsClass($update_array, $where);
  635. echo 'true';exit;
  636. } else {
  637. echo 'false';exit;
  638. }
  639. break;
  640. /**
  641. * 分类 排序 显示 设置
  642. */
  643. case 'goods_class_sort':
  644. case 'goods_class_show':
  645. case 'goods_class_index_show':
  646. $model_class = Model('goods_class');
  647. $where = array('gc_id' => intval($_GET['id']));
  648. $update_array = array();
  649. $update_array[$_GET['column']] = $_GET['value'];
  650. $model_class->editGoodsClass($update_array, $where);
  651. echo 'true';exit;
  652. break;
  653. /**
  654. * 添加、修改操作中 检测类别名称是否有重复
  655. */
  656. case 'check_class_name':
  657. $model_class = Model('goods_class');
  658. $condition['gc_name'] = trim($_GET['gc_name']);
  659. $condition['gc_parent_id'] = intval($_GET['gc_parent_id']);
  660. $condition['gc_id'] = array('neq', intval($_GET['gc_id']));
  661. $class_list = $model_class->getGoodsClassList($condition);
  662. if (empty($class_list)) {
  663. echo 'true';exit;
  664. } else {
  665. echo 'false';exit;
  666. }
  667. break;
  668. /**
  669. * TAG值编辑
  670. */
  671. case 'goods_class_tag_value':
  672. $model_class_tag = Model('goods_class_tag');
  673. $update_array = array();
  674. $update_array['gc_tag_id'] = intval($_GET['id']);
  675. /**
  676. * 转码 防止GBK下用中文逗号截取不正确
  677. */
  678. $comma = ',';
  679. if (strtoupper(CHARSET) == 'GBK'){
  680. $comma = Language::getGBK($comma);
  681. }
  682. $update_array[$_GET['column']] = trim(str_replace($comma,',',$_GET['value']));
  683. $model_class_tag->updateTag($update_array);
  684. echo 'true';exit;
  685. break;
  686. }
  687. }
  688. }