brand.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. <?php
  2. /**
  3. * 商品品牌管理
  4. *
  5. *
  6. *
  7. ***/
  8. defined('InShopNC') or exit('Access Invalid!');
  9. class brandControl extends SystemControl{
  10. const EXPORT_SIZE = 1000;
  11. public function __construct(){
  12. parent::__construct();
  13. Language::read('brand');
  14. }
  15. /**
  16. * 品牌列表
  17. */
  18. public function brandOp(){
  19. $lang = Language::getLangContent();
  20. $model_brand = Model('brand');
  21. if (chksubmit()){
  22. if (!empty($_POST['del_brand_id'])){
  23. //删除图片
  24. if (is_array($_POST['del_brand_id'])){
  25. $brandid_array = array();
  26. foreach ($_POST['del_brand_id'] as $k => $v){
  27. $brandid_array[] = intval($v);
  28. }
  29. $model_brand->delBrand(array('brand_id' => array('in', $brandid_array)));
  30. }
  31. $this->log(L('nc_delete,brand_index_brand').'[ID:'.implode(',',$_POST['del_brand_id']).']',1);
  32. showMessage($lang['nc_common_del_succ']);
  33. }else {
  34. $this->log(L('nc_delete,brand_index_brand').'[ID:'.implode(',',$_POST['del_brand_id']).']',0);
  35. showMessage($lang['nc_common_del_fail']);
  36. }
  37. }
  38. /**
  39. * 检索条件
  40. */
  41. if (!empty($_GET['search_brand_name'])){
  42. $condition['brand_name'] = array('like',"%".$_GET['search_brand_name']."%");
  43. }
  44. if (!empty($_GET['search_brand_class'])){
  45. $condition['brand_class'] = array('like',"%".$_GET['search_brand_class']."%");
  46. }
  47. $condition['brand_apply'] = '1';
  48. $brand_list = $model_brand->getBrandList($condition, "*", 10);
  49. Tpl::output('page',$model_brand->showpage());
  50. Tpl::output('brand_list',$brand_list);
  51. Tpl::output('search_brand_name',trim($_GET['search_brand_name']));
  52. Tpl::output('search_brand_class',trim($_GET['search_brand_class']));
  53. Tpl::showpage('brand.index');
  54. }
  55. /**
  56. * 增加品牌
  57. */
  58. public function brand_addOp(){
  59. $lang = Language::getLangContent();
  60. $model_brand = Model('brand');
  61. if (chksubmit()){
  62. $obj_validate = new Validate();
  63. $obj_validate->validateparam = array(
  64. array("input"=>$_POST["brand_name"], "require"=>"true", "message"=>$lang['brand_add_name_null']),
  65. array("input"=>$_POST["brand_initial"], "require"=>"true", "message"=>'请填写首字母'),
  66. array("input"=>$_POST["brand_sort"], "require"=>"true", 'validator'=>'Number', "message"=>$lang['brand_add_sort_int']),
  67. );
  68. $error = $obj_validate->validate();
  69. if ($error != ''){
  70. showMessage($error);
  71. }else {
  72. $insert_array = array();
  73. $insert_array['brand_name'] = trim($_POST['brand_name']);
  74. $insert_array['brand_initial'] = strtoupper($_POST['brand_initial']);
  75. $insert_array['class_id'] = $_POST['class_id'];
  76. $insert_array['brand_class'] = trim($_POST['brand_class']);
  77. $insert_array['brand_pic'] = trim($_POST['brand_pic']);
  78. $insert_array['brand_recommend'] = trim($_POST['brand_recommend']);
  79. $insert_array['brand_sort'] = intval($_POST['brand_sort']);
  80. $insert_array['show_type'] = intval($_POST['show_type'])==1?1:0;
  81. $result = $model_brand->addBrand($insert_array);
  82. if ($result){
  83. $url = array(
  84. array(
  85. 'url'=>'index.php?act=brand&op=brand_add',
  86. 'msg'=>$lang['brand_add_again'],
  87. ),
  88. array(
  89. 'url'=>'index.php?act=brand&op=brand',
  90. 'msg'=>$lang['brand_add_back_to_list'],
  91. )
  92. );
  93. $this->log(L('nc_add,brand_index_brand').'['.$_POST['brand_name'].']',1);
  94. showMessage($lang['nc_common_save_succ'],$url);
  95. }else {
  96. showMessage($lang['nc_common_save_fail']);
  97. }
  98. }
  99. }
  100. // 一级商品分类
  101. $gc_list = Model('goods_class')->getGoodsClassListByParentId(0);
  102. Tpl::output('gc_list', $gc_list);
  103. Tpl::showpage('brand.add');
  104. }
  105. /**
  106. * 品牌编辑
  107. */
  108. public function brand_editOp(){
  109. $lang = Language::getLangContent();
  110. $model_brand = Model('brand');
  111. if (chksubmit()){
  112. $obj_validate = new Validate();
  113. $obj_validate->validateparam = array(
  114. array("input"=>$_POST["brand_name"], "require"=>"true", "message"=>$lang['brand_add_name_null']),
  115. array("input"=>$_POST["brand_initial"], "require"=>"true", "message"=>'请填写首字母'),
  116. array("input"=>$_POST["brand_sort"], "require"=>"true", 'validator'=>'Number', "message"=>$lang['brand_add_sort_int']),
  117. );
  118. $error = $obj_validate->validate();
  119. if ($error != ''){
  120. showMessage($error);
  121. }else {
  122. $brand_info = $model_brand->getBrandInfo(array('brand_id' => intval($_POST['brand_id'])));
  123. $where = array();
  124. $where['brand_id'] = intval($_POST['brand_id']);
  125. $update_array = array();
  126. $update_array['brand_name'] = trim($_POST['brand_name']);
  127. $update_array['brand_initial'] = strtoupper($_POST['brand_initial']);
  128. $update_array['class_id'] = $_POST['class_id'];
  129. $update_array['brand_class'] = trim($_POST['brand_class']);
  130. if (!empty($_POST['brand_pic'])){
  131. $update_array['brand_pic'] = $_POST['brand_pic'];
  132. }
  133. $update_array['brand_recommend'] = intval($_POST['brand_recommend']);
  134. $update_array['brand_sort'] = intval($_POST['brand_sort']);
  135. $update_array['show_type'] = intval($_POST['show_type'])==1?1:0;
  136. $result = $model_brand->editBrand($where, $update_array);
  137. if ($result){
  138. if (!empty($_POST['brand_pic']) && !empty($brand_info['brand_pic'])){
  139. @unlink(BASE_UPLOAD_PATH.DS.ATTACH_BRAND.DS.$brand_info['brand_pic']);
  140. }
  141. $url = array(
  142. array(
  143. 'url'=>'index.php?act=brand&op=brand_edit&brand_id='.intval($_POST['brand_id']),
  144. 'msg'=>$lang['brand_edit_again'],
  145. ),
  146. array(
  147. 'url'=>'index.php?act=brand&op=brand',
  148. 'msg'=>$lang['brand_add_back_to_list'],
  149. )
  150. );
  151. $this->log(L('nc_edit,brand_index_brand').'['.$_POST['brand_name'].']',1);
  152. showMessage($lang['nc_common_save_succ'],$url);
  153. }else {
  154. $this->log(L('nc_edit,brand_index_brand').'['.$_POST['brand_name'].']',0);
  155. showMessage($lang['nc_common_save_fail']);
  156. }
  157. }
  158. }
  159. $brand_info = $model_brand->getBrandInfo(array('brand_id' => intval($_GET['brand_id'])));
  160. if (empty($brand_info)){
  161. showMessage($lang['param_error']);
  162. }
  163. Tpl::output('brand_array',$brand_info);
  164. // 一级商品分类
  165. $gc_list = Model('goods_class')->getGoodsClassListByParentId(0);
  166. Tpl::output('gc_list', $gc_list);
  167. Tpl::showpage('brand.edit');
  168. }
  169. /**
  170. * 删除品牌
  171. */
  172. public function brand_delOp(){
  173. if (intval($_GET['del_brand_id']) > 0){
  174. Model('brand')->delBrand(array('brand_id' => intval($_GET['del_brand_id'])));
  175. $this->log(L('nc_delete,brand_index_brand').'[ID:'.intval($_GET['del_brand_id']).']',1);
  176. showMessage(L('nc_common_del_succ'),'index.php?act=brand&op=brand');
  177. }else {
  178. $this->log(L('nc_delete,brand_index_brand').'[ID:'.intval($_GET['del_brand_id']).']',0);
  179. showMessage(L('nc_common_del_fail'),'index.php?act=brand&op=brand');
  180. }
  181. }
  182. /**
  183. * 品牌申请
  184. */
  185. public function brand_applyOp(){
  186. $lang = Language::getLangContent();
  187. $model_brand = Model('brand');
  188. /**
  189. * 对申请品牌进行操作 通过,拒绝
  190. */
  191. if (chksubmit()){
  192. if (!empty($_POST['del_id'])){
  193. switch ($_POST['type']){
  194. case 'pass':
  195. //更新品牌 申请状态
  196. $brandid_array = array();
  197. foreach ($_POST['del_id'] as $v){
  198. $brandid_array[] = intval($v);
  199. }
  200. $update_array = array();
  201. $update_array['brand_apply'] = 1;
  202. $model_brand->editBrand(array('brand_id' => array('in', $brandid_array)), $update_array);
  203. $this->log(L('brand_apply_pass').'[ID:'.implode(',',$brandid_array).']',null);
  204. showMessage($lang['brand_apply_passed']);
  205. break;
  206. case 'refuse':
  207. //删除该品牌
  208. $brandid_array = array();
  209. foreach ($_POST['del_id'] as $v){
  210. $brandid_array[] = intval($v);
  211. }
  212. $model_brand->delBrand(array('brand_id' => array('in', $brandid_array)));
  213. $this->log(L('nc_delete,brand_index_brand').'[ID:'.implode(',',$_POST['del_id']).']',1);
  214. showMessage($lang['nc_common_del_succ']);
  215. break;
  216. default:
  217. showMessage($lang['brand_apply_invalid_argument']);
  218. }
  219. }else {
  220. $this->log(L('nc_delete,brand_index_brand'),0);
  221. showMessage($lang['nc_common_del_fail']);
  222. }
  223. }
  224. /**
  225. * 检索条件
  226. */
  227. $condition = array();
  228. if (!empty($_POST['search_brand_name'])) {
  229. $condition['brand_name'] = array('like', '%' . trim($_POST['search_brand_name']) . '%');
  230. }
  231. if (!empty($_POST['search_brand_class'])) {
  232. $condition['brand_class'] = array('like', '%' . trim($_POST['search_brand_class']) . '%');
  233. }
  234. $brand_list = $model_brand->getBrandNoPassedList($condition, '*', 10);
  235. Tpl::output('brand_list',$brand_list);
  236. Tpl::output('show_page', $model_brand->showpage());
  237. Tpl::output('search_brand_name',trim($_POST['search_brand_name']));
  238. Tpl::output('search_brand_class',trim($_POST['search_brand_class']));
  239. Tpl::showpage('brand.apply');
  240. }
  241. /**
  242. * 审核 申请品牌操作
  243. */
  244. public function brand_apply_setOp(){
  245. $model_brand = Model('brand');
  246. if (intval($_GET['brand_id']) > 0){
  247. switch ($_GET['state']){
  248. case 'pass':
  249. /**
  250. * 更新品牌 申请状态
  251. */
  252. $update_array = array();
  253. $update_array['brand_apply'] = 1;
  254. $result = $model_brand->editBrand(array('brand_id' => intval($_GET['brand_id'])), $update_array);
  255. if ($result === true){
  256. $this->log(L('brand_apply_pass').'[ID:'.intval($_GET['brand_id']).']',null);
  257. showMessage(Language::get('brand_apply_pass'));
  258. }else {
  259. $this->log(L('brand_apply_pass').'[ID:'.intval($_GET['brand_id']).']',0);
  260. showMessage(Language::get('brand_apply_fail'));
  261. }
  262. break;
  263. case 'refuse':
  264. // 删除
  265. $model_brand->delBrand(array('brand_id' => intval($_GET['brand_id'])));
  266. $this->log(L('nc_delete,brand_index_brand').'[ID:'.intval($_GET['brand_id']).']',1);
  267. showMessage(Language::get('nc_common_del_succ'));
  268. break;
  269. default:
  270. showMessage(Language::get('brand_apply_paramerror'));
  271. }
  272. }else {
  273. $this->log(L('nc_delete,brand_index_brand').'[ID:'.intval($_GET['brand_id']).']',0);
  274. showMessage(Language::get('brand_apply_brandparamerror'));
  275. }
  276. }
  277. /**
  278. * ajax操作
  279. */
  280. public function ajaxOp(){
  281. $model_brand = Model('brand');
  282. switch ($_GET['branch']){
  283. /**
  284. * 品牌名称
  285. */
  286. case 'brand_name':
  287. /**
  288. * 判断是否有重复
  289. */
  290. $condition['brand_name'] = trim($_GET['value']);
  291. $condition['brand_id'] = array('neq', intval($_GET['id']));
  292. $result = $model_brand->getBrandList($condition);
  293. if (empty($result)){
  294. $model_brand->editBrand(array('brand_id' => intval($_GET['id'])), array('brand_name' => trim($_GET['value'])));
  295. $this->log(L('nc_edit,brand_index_name').'['.$_GET['value'].']',1);
  296. echo 'true';exit;
  297. }else {
  298. echo 'false';exit;
  299. }
  300. break;
  301. /**
  302. * 品牌类别,品牌排序,推荐
  303. */
  304. case 'brand_class':
  305. case 'brand_sort':
  306. case 'brand_recommend':
  307. $model_brand->editBrand(array('brand_id' => intval($_GET['id'])), array($_GET['column'] => trim($_GET['value'])));
  308. $detail_log = str_replace(array('brand_class','brand_sort','brand_recommend'),array(L('brand_index_class'),L('nc_sort'),L('nc_recommend')),$_GET['branch']);
  309. $this->log(L('nc_edit,brand_index_brand').$detail_log.'[ID:'.intval($_GET['id']).']',1);
  310. echo 'true';exit;
  311. break;
  312. /**
  313. * 验证品牌名称是否有重复
  314. */
  315. case 'check_brand_name':
  316. $condition['brand_name'] = trim($_GET['brand_name']);
  317. $condition['brand_id'] = array('neq', intval($_GET['id']));
  318. $result = $model_brand->getBrandList($condition);
  319. if (empty($result)){
  320. echo 'true';exit;
  321. }else {
  322. echo 'false';exit;
  323. }
  324. break;
  325. }
  326. }
  327. /**
  328. * 品牌导出第一步
  329. */
  330. public function export_step1Op(){
  331. $model_brand = Model('brand');
  332. $condition = array();
  333. if (!empty($_GET['search_brand_name'])){
  334. $condition['brand_name'] = array('like',"%{$_GET['search_brand_name']}%");
  335. }
  336. if (!empty($_GET['search_brand_class'])){
  337. $condition['brand_class'] = array('like',"%{$_GET['search_brand_class']}%");
  338. }
  339. $condition['brand_apply'] = '1';
  340. if (!is_numeric($_GET['curpage'])){
  341. $count = $model_brand->getBrandCount($condition);
  342. $array = array();
  343. if ($count > self::EXPORT_SIZE ){ //显示下载链接
  344. $page = ceil($count/self::EXPORT_SIZE);
  345. for ($i=1;$i<=$page;$i++){
  346. $limit1 = ($i-1)*self::EXPORT_SIZE + 1;
  347. $limit2 = $i*self::EXPORT_SIZE > $count ? $count : $i*self::EXPORT_SIZE;
  348. $array[$i] = $limit1.' ~ '.$limit2 ;
  349. }
  350. Tpl::output('list',$array);
  351. Tpl::output('murl','index.php?act=brand&op=brand');
  352. Tpl::showpage('export.excel');
  353. }else{ //如果数量小,直接下载
  354. $data = $model_brand->getBrandList($condition, '*', 0, 'brand_id desc', self::EXPORT_SIZE);
  355. $this->createExcel($data);
  356. }
  357. }else{ //下载
  358. $limit1 = ($_GET['curpage']-1) * self::EXPORT_SIZE;
  359. $limit2 = self::EXPORT_SIZE;
  360. $data = $model_brand->getBrandList($condition, '*', 0, 'brand_id desc', "{$limit1},{$limit2}");
  361. $this->createExcel($data);
  362. }
  363. }
  364. /**
  365. * 生成excel
  366. *
  367. * @param array $data
  368. */
  369. private function createExcel($data = array()){
  370. Language::read('export');
  371. import('libraries.excel');
  372. $excel_obj = new Excel();
  373. $excel_data = array();
  374. //设置样式
  375. $excel_obj->setStyle(array('id'=>'s_title','Font'=>array('FontName'=>'宋体','Size'=>'12','Bold'=>'1')));
  376. //header
  377. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_brandid'));
  378. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_brand'));
  379. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_brand_cate'));
  380. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_brand_img'));
  381. foreach ((array)$data as $k=>$v){
  382. $tmp = array();
  383. $tmp[] = array('data'=>$v['brand_id']);
  384. $tmp[] = array('data'=>$v['brand_name']);
  385. $tmp[] = array('data'=>$v['brand_class']);
  386. $tmp[] = array('data'=>$v['brand_pic']);
  387. $excel_data[] = $tmp;
  388. }
  389. $excel_data = $excel_obj->charset($excel_data,CHARSET);
  390. $excel_obj->addArray($excel_data);
  391. $excel_obj->addWorksheet($excel_obj->charset(L('exp_brand'),CHARSET));
  392. $excel_obj->generateXML($excel_obj->charset(L('exp_brand'),CHARSET).$_GET['curpage'].'-'.date('Y-m-d-H',time()));
  393. }
  394. }