brand.php 14 KB

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