goods_class.php 23 KB

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