pointprod.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459
  1. <?php
  2. /**
  3. * 兑换礼品管理
  4. ***/
  5. defined('InShopNC') or exit('Access Invalid!');
  6. class pointprodControl extends SystemControl{
  7. public function __construct(){
  8. parent::__construct();
  9. Language::read('pointprod');
  10. }
  11. /**
  12. * 积分礼品列表
  13. */
  14. public function pointprodOp(){
  15. $pointprod_model = Model('pointprod');
  16. //获得兑换商品的上下架状态
  17. $pgoodsshowstate_arr = $pointprod_model->getPgoodsShowState();
  18. //获得兑换商品的推荐状态
  19. $pgoodsrecommendstate_arr = $pointprod_model->getPgoodsRecommendState();
  20. //条件
  21. $where = array();
  22. $pgoods_name = trim($_GET['pg_name']);
  23. if ($pgoods_name){
  24. $where['pgoods_name'] = array('like',"%{$pgoods_name}%");
  25. }
  26. switch (trim($_GET['pg_state'])){
  27. case 'show':
  28. $where['pgoods_show'] = $pgoodsshowstate_arr['show'][0];
  29. break;
  30. case 'nshow':
  31. $where['pgoods_show'] = $pgoodsshowstate_arr['unshow'][0];
  32. break;
  33. case 'commend':
  34. $where['pgoods_commend'] = $pgoodsrecommendstate_arr['commend'][0];
  35. break;
  36. }
  37. $prod_list = $pointprod_model->getPointProdList($where, '*', 'pgoods_sort asc,pgoods_id desc', 0, 10);
  38. //信息输出
  39. Tpl::output('prod_list',$prod_list);
  40. Tpl::output('show_page',$pointprod_model->showpage());
  41. Tpl::showpage('pointprod.list');
  42. }
  43. /**
  44. * 积分礼品添加
  45. */
  46. public function prod_addOp(){
  47. $hourarr = array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23');
  48. $upload_model = Model('upload');
  49. if (chksubmit()){
  50. //验证表单
  51. $obj_validate = new Validator();
  52. $validate_arr[] = array("input"=>$_POST["goodsname"],"require"=>"true","message"=>L('admin_pointprod_add_goodsname_error'));
  53. $validate_arr[] = array("input"=>$_POST["goodsprice"],"require"=>"true","validator"=>"DoublePositive","message"=>L('admin_pointprod_add_goodsprice_number_error'));
  54. $validate_arr[] = array('input'=>$_POST['goodspoints'],'require'=>'true','validator'=>'IntegerPositive','message'=>L('admin_pointprod_add_goodspoint_number_error'));
  55. $validate_arr[] = array('input'=>$_POST['goodsserial'],'require'=>'true','message'=>L('admin_pointprod_add_goodsserial_null_error'));
  56. $validate_arr[] = array('input'=>$_POST['goodsstorage'],'require'=>'true','validator'=>'IntegerPositive','message'=>L('admin_pointprod_add_storage_number_error'));
  57. $validate_arr[] = array('input'=>$_POST['sort'],'require'=>'true','validator'=>'IntegerPositive','message'=>L('admin_pointprod_add_sort_number_error'));
  58. if ($_POST['islimit'] == 1){
  59. $validate_arr[] = array('input'=>$_POST['limitnum'],'validator'=>'IntegerPositive','message'=>L('admin_pointprod_add_limitnum_digits_error'));
  60. }
  61. if ($_POST['islimittime']){
  62. $validate_arr[] = array('input'=>$_POST['starttime'],'require'=>'true','message'=>L('admin_pointprod_add_limittime_null_error'));
  63. $validate_arr[] = array('input'=>$_POST['endtime'],'require'=>'true','message'=>L('admin_pointprod_add_limittime_null_error'));
  64. }
  65. $obj_validate->validateparam = $validate_arr;
  66. $error = $obj_validate->validate();
  67. if ($error != ''){
  68. showDialog(L('error').$error,'','error');
  69. }
  70. $model_pointprod = Model('pointprod');
  71. $goods_array = array();
  72. $goods_array['pgoods_name'] = trim($_POST['goodsname']);
  73. $goods_array['pgoods_tag'] = trim($_POST['goodstag']);
  74. $goods_array['pgoods_price'] = trim($_POST['goodsprice']);
  75. $goods_array['pgoods_points'] = trim($_POST['goodspoints']);
  76. $goods_array['pgoods_serial'] = trim($_POST['goodsserial']);
  77. $goods_array['pgoods_storage'] = intval($_POST['goodsstorage']);
  78. $goods_array['pgoods_islimit'] = intval($_POST['islimit']);
  79. if ($goods_array['pgoods_islimit'] == 1){
  80. $goods_array['pgoods_limitnum'] = intval($_POST['limitnum']);
  81. }else {
  82. $goods_array['pgoods_limitnum'] = 0;
  83. }
  84. $goods_array['pgoods_islimittime'] = intval($_POST['islimittime']);
  85. if ($goods_array['pgoods_islimittime'] == 1){
  86. //如果添加了开始时间
  87. if (trim($_POST['starttime'])){
  88. $starttime = trim($_POST['starttime']);
  89. $sdatearr = explode('-',$starttime);
  90. $starttime = mktime(intval($_POST['starthour']),0,0,$sdatearr[1],$sdatearr[2],$sdatearr[0]);
  91. unset($sdatearr);
  92. }
  93. if (trim($_POST['endtime'])){
  94. $endtime = trim($_POST['endtime']);
  95. $edatearr = explode('-',$endtime);
  96. $endtime = mktime(intval($_POST['endhour']),0,0,$edatearr[1],$edatearr[2],$edatearr[0]);
  97. }
  98. $goods_array['pgoods_starttime'] = $starttime;
  99. $goods_array['pgoods_endtime'] = $endtime;
  100. }else {
  101. $goods_array['pgoods_starttime'] = '';
  102. $goods_array['pgoods_endtime'] = '';
  103. }
  104. $goods_array['pgoods_show'] = trim($_POST['showstate']);
  105. $goods_array['pgoods_commend'] = trim($_POST['commendstate']);
  106. $goods_array['pgoods_add_time'] = time();
  107. $goods_array['pgoods_state'] = trim($_POST['forbidstate']);
  108. $goods_array['pgoods_close_reason'] = trim($_POST['forbidreason']);
  109. $goods_array['pgoods_keywords'] = trim($_POST['keywords']);
  110. $goods_array['pgoods_description'] = trim($_POST['description']);
  111. $goods_array['pgoods_body'] = trim($_POST['pgoods_body']);
  112. $goods_array['pgoods_sort'] = intval($_POST['sort']);
  113. $goods_array['pgoods_limitmgrade'] = intval($_POST['limitgrade']);
  114. //添加礼品代表图片
  115. $indeximg_succ = false;
  116. if (!empty($_FILES['goods_image']['name'])){
  117. $upload = new UploadFile();
  118. $upload->set('default_dir',ATTACH_POINTPROD);
  119. $upload->set('thumb_width', '60,240');
  120. $upload->set('thumb_height','60,240');
  121. $upload->set('thumb_ext', '_small,_mid');
  122. $result = $upload->upfile('goods_image');
  123. if ($result){
  124. $indeximg_succ = true;
  125. $goods_array['pgoods_image'] = $upload->file_name;
  126. }else {
  127. showDialog($upload->error,'','error');
  128. }
  129. }
  130. $state = $model_pointprod->addPointGoods($goods_array);
  131. if($state){
  132. //礼品代表图片数据入库
  133. if ($indeximg_succ){
  134. $insert_array = array();
  135. $insert_array['file_name'] = $upload->file_name;
  136. $insert_array['file_thumb'] = $upload->thumb_image;
  137. $insert_array['upload_type'] = 5;
  138. $insert_array['file_size'] = filesize(BASE_UPLOAD_PATH.DS.ATTACH_POINTPROD.DS.$upload->file_name);
  139. $insert_array['item_id'] = $state;
  140. $insert_array['upload_time'] = time();
  141. $upload_model->add($insert_array);
  142. }
  143. //更新积分礼品描述图片
  144. $file_idstr = '';
  145. if (is_array($_POST['file_id']) && count($_POST['file_id'])>0){
  146. $file_idstr = "'".implode("','",$_POST['file_id'])."'";
  147. }
  148. $upload_model->updatebywhere(array('item_id'=>$state),array('upload_type'=>6,'item_id'=>'0','upload_id_in'=>"{$file_idstr}"));
  149. $this->log(L('admin_pointprod_add_title').'['.$_POST['goodsname'].']');
  150. showDialog(L('admin_pointprod_add_success'),'index.php?act=pointprod&op=pointprod','succ');
  151. }
  152. }
  153. //模型实例化
  154. $where = array();
  155. $where['upload_type'] = '6';
  156. $where['item_id'] = '0';
  157. $file_upload = $upload_model->getUploadList($where);
  158. if (is_array($file_upload)){
  159. foreach ($file_upload as $k => $v){
  160. $file_upload[$k]['upload_path'] = UPLOAD_SITE_URL.DS.ATTACH_POINTPROD.DS.$file_upload[$k]['file_name'];
  161. }
  162. }
  163. Tpl::output('file_upload',$file_upload);
  164. Tpl::output('PHPSESSID',session_id());
  165. $hourarr = array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23');
  166. Tpl::output('hourarr',$hourarr);
  167. //会员级别
  168. $member_grade = Model('member')->getMemberGradeArr();
  169. Tpl::output('member_grade',$member_grade);
  170. Tpl::showpage('pointprod.add');
  171. }
  172. /**
  173. * 积分礼品编辑
  174. */
  175. public function prod_editOp(){
  176. $hourarr = array('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23');
  177. $upload_model = Model('upload');
  178. $pg_id = intval($_GET['pg_id']);
  179. if (!$pg_id){
  180. showDialog(L('admin_pointprod_parameter_error'),'index.php?act=pointprod&op=pointprod','error');
  181. }
  182. $model_pointprod = Model('pointprod');
  183. //查询礼品记录是否存在
  184. $prod_info = $model_pointprod->getPointProdInfo(array('pgoods_id'=>$pg_id));
  185. if (!$prod_info){
  186. showDialog(L('admin_pointprod_record_error'),'index.php?act=pointprod&op=pointprod','error');
  187. }
  188. if (chksubmit()){
  189. //验证表单
  190. $obj_validate = new Validator();
  191. $validate_arr[] = array("input"=>$_POST["goodsname"],"require"=>"true","message"=>L('admin_pointprod_add_goodsname_error'));
  192. $validate_arr[] = array("input"=>$_POST["goodsprice"],"require"=>"true","validator"=>"DoublePositive","message"=>L('admin_pointprod_add_goodsprice_number_error'));
  193. $validate_arr[] = array('input'=>$_POST['goodspoints'],'require'=>'true','validator'=>'IntegerPositive','message'=>L('admin_pointprod_add_goodspoint_number_error'));
  194. $validate_arr[] = array('input'=>$_POST['goodsserial'],'require'=>'true','message'=>L('admin_pointprod_add_goodsserial_null_error'));
  195. $validate_arr[] = array('input'=>$_POST['goodsstorage'],'require'=>'true','validator'=>'IntegerPositive','message'=>L('admin_pointprod_add_storage_number_error'));
  196. $validate_arr[] = array('input'=>$_POST['sort'],'require'=>'true','validator'=>'IntegerPositive','message'=>L('admin_pointprod_add_sort_number_error'));
  197. if ($_POST['islimit'] == 1){
  198. $validate_arr[] = array('input'=>$_POST['limitnum'],'validator'=>'IntegerPositive','message'=>L('admin_pointprod_add_limitnum_digits_error'));
  199. }
  200. if ($_POST['islimittime']){
  201. $validate_arr[] = array('input'=>$_POST['starttime'],'require'=>'true','message'=>L('admin_pointprod_add_limittime_null_error'));
  202. $validate_arr[] = array('input'=>$_POST['endtime'],'require'=>'true','message'=>L('admin_pointprod_add_limittime_null_error'));
  203. }
  204. $obj_validate->validateparam = $validate_arr;
  205. $error = $obj_validate->validate();
  206. if ($error != ''){
  207. showDialog(L('error').$error,'','error');
  208. }
  209. //实例化店铺商品模型
  210. $model_pointprod = Model('pointprod');
  211. $goods_array = array();
  212. $goods_array['pgoods_name'] = trim($_POST['goodsname']);
  213. $goods_array['pgoods_tag'] = trim($_POST['goodstag']);
  214. $goods_array['pgoods_price'] = trim($_POST['goodsprice']);
  215. $goods_array['pgoods_points'] = trim($_POST['goodspoints']);
  216. $goods_array['pgoods_serial'] = trim($_POST['goodsserial']);
  217. $goods_array['pgoods_storage'] = intval($_POST['goodsstorage']);
  218. $goods_array['pgoods_islimit'] = intval($_POST['islimit']);
  219. if ($goods_array['pgoods_islimit'] == 1){
  220. $goods_array['pgoods_limitnum'] = intval($_POST['limitnum']);
  221. }else {
  222. $goods_array['pgoods_limitnum'] = 0;
  223. }
  224. $goods_array['pgoods_islimittime'] = intval($_POST['islimittime']);
  225. if ($goods_array['pgoods_islimittime'] == 1){
  226. //如果添加了开始时间
  227. if (trim($_POST['starttime'])){
  228. $starttime = trim($_POST['starttime']);
  229. $sdatearr = explode('-',$starttime);
  230. $starttime = mktime(intval($_POST['starthour']),0,0,$sdatearr[1],$sdatearr[2],$sdatearr[0]);
  231. unset($sdatearr);
  232. }
  233. if (trim($_POST['endtime'])){
  234. $endtime = trim($_POST['endtime']);
  235. $edatearr = explode('-',$endtime);
  236. $endtime = mktime(intval($_POST['endhour']),0,0,$edatearr[1],$edatearr[2],$edatearr[0]);
  237. }
  238. $goods_array['pgoods_starttime'] = $starttime;
  239. $goods_array['pgoods_endtime'] = $endtime;
  240. }else {
  241. $goods_array['pgoods_starttime'] = '';
  242. $goods_array['pgoods_endtime'] = '';
  243. }
  244. $goods_array['pgoods_show'] = trim($_POST['showstate']);
  245. $goods_array['pgoods_commend'] = trim($_POST['commendstate']);
  246. $goods_array['pgoods_state'] = trim($_POST['forbidstate']);
  247. $goods_array['pgoods_close_reason'] = trim($_POST['forbidreason']);
  248. $goods_array['pgoods_keywords'] = trim($_POST['keywords']);
  249. $goods_array['pgoods_description'] = trim($_POST['description']);
  250. $goods_array['pgoods_body'] = trim($_POST['pgoods_body']);
  251. $goods_array['pgoods_sort'] = intval($_POST['sort']);
  252. $goods_array['pgoods_limitmgrade'] = intval($_POST['limitgrade']);
  253. //添加礼品代表图片
  254. $indeximg_succ = false;
  255. if (!empty($_FILES['goods_image']['name'])){
  256. $upload = new UploadFile();
  257. $upload->set('default_dir',ATTACH_POINTPROD);
  258. $upload->set('thumb_width', '60,240');
  259. $upload->set('thumb_height','60,240');
  260. $upload->set('thumb_ext', '_small,_mid');
  261. $result = $upload->upfile('goods_image');
  262. if ($result){
  263. $indeximg_succ = true;
  264. $goods_array['pgoods_image'] = $upload->file_name;
  265. }else {
  266. showDialog($upload->error,'','error');
  267. }
  268. }
  269. $state = $model_pointprod->editPointProd($goods_array,array('pgoods_id'=>$prod_info['pgoods_id']));
  270. if($state){
  271. //礼品代表图片数据入库
  272. if ($indeximg_succ){
  273. //删除原有图片
  274. $upload_list = $upload_model->getUploadList(array('upload_type'=>5,'item_id'=>$prod_info['pgoods_id']));
  275. if (is_array($upload_list) && count($upload_list)>0){
  276. $upload_idarr = array();
  277. foreach ($upload_list as $v){
  278. @unlink(BASE_UPLOAD_PATH.DS.ATTACH_POINTPROD.DS.$v['file_name']);
  279. @unlink(BASE_UPLOAD_PATH.DS.ATTACH_POINTPROD.DS.$v['file_thumb']);
  280. $upload_idarr[] = $v['upload_id'];
  281. }
  282. //删除图片
  283. $upload_model->dropUploadById($upload_idarr);
  284. }
  285. $insert_array = array();
  286. $insert_array['file_name'] = $upload->file_name;
  287. $insert_array['file_thumb'] = $upload->thumb_image;
  288. $insert_array['upload_type'] = 5;
  289. $insert_array['file_size'] = filesize(BASE_UPLOAD_PATH.DS.DS.ATTACH_POINTPROD.DS.$upload->file_name);
  290. $insert_array['item_id'] = $prod_info['pgoods_id'];
  291. $insert_array['upload_time'] = time();
  292. $upload_model->add($insert_array);
  293. }
  294. //更新积分礼品描述图片
  295. $file_idstr = '';
  296. if (is_array($_POST['file_id']) && count($_POST['file_id'])>0){
  297. $file_idstr = "'".implode("','",$_POST['file_id'])."'";
  298. }
  299. $upload_model->updatebywhere(array('item_id'=>$prod_info['pgoods_id']),array('upload_type'=>6,'item_id'=>'0','upload_id_in'=>"{$file_idstr}"));
  300. $this->log(L('nc_edit,admin_pointprodp').'['.$_POST['goodsname'].']');
  301. showDialog(L('admin_pointprod_edit_success'),'index.php?act=pointprod&op=pointprod','succ');
  302. }
  303. }else {
  304. $where = array();
  305. $where['upload_type'] = '6';
  306. $where['item_id'] = $prod_info['pgoods_id'];
  307. $file_upload = $upload_model->getUploadList($where);
  308. if (is_array($file_upload)){
  309. foreach ($file_upload as $k => $v){
  310. $file_upload[$k]['upload_path'] = UPLOAD_SITE_URL.DS.ATTACH_POINTPROD.DS.$file_upload[$k]['file_name'];
  311. }
  312. }
  313. //会员级别
  314. $member_grade = Model('member')->getMemberGradeArr();
  315. Tpl::output('member_grade',$member_grade);
  316. Tpl::output('file_upload',$file_upload);
  317. Tpl::output('PHPSESSID',session_id());
  318. Tpl::output('hourarr',$hourarr);
  319. Tpl::output('prod_info',$prod_info);
  320. Tpl::showpage('pointprod.edit');
  321. }
  322. }
  323. /**
  324. * 删除积分礼品
  325. */
  326. public function prod_dropOp(){
  327. $pg_id = intval($_GET['pg_id']);
  328. if (!$pg_id){
  329. showDialog(L('admin_pointprod_parameter_error'),'index.php?act=pointprod&op=pointprod','error');
  330. }
  331. $model_pointprod = Model('pointprod');
  332. //查询礼品是否存在
  333. $prod_info = $model_pointprod->getPointProdInfo(array('pgoods_id'=>$pg_id));
  334. if (!is_array($prod_info) || count($prod_info)<=0){
  335. showDialog(L('admin_pointprod_record_error'),'index.php?act=pointprod&op=pointprod','error');
  336. }
  337. //查询积分礼品的下属信息(比如兑换信息)
  338. //删除操作
  339. $result = $model_pointprod->delPointProdById($pg_id);
  340. if($result) {
  341. $this->log(L('nc_del,admin_pointprodp').'[ID:'.$pg_id.']');
  342. showDialog(L('admin_pointprod_del_success'),'index.php?act=pointprod&op=pointprod','succ');
  343. } else {
  344. showDialog(L('admin_pointprod_del_fail'),'index.php?act=pointprod&op=pointprod','error');
  345. }
  346. }
  347. /**
  348. * 批量删除积分礼品
  349. */
  350. public function prod_dropallOp(){
  351. $pg_id = $_POST['pg_id'];
  352. if (!$pg_id){
  353. showDialog(L('admin_pointprod_parameter_error'),'index.php?act=pointprod&op=pointprod','','error');
  354. }
  355. $result = Model('pointprod')->delPointProdById($pg_id);
  356. if($result) {
  357. $this->log(L('nc_del,admin_pointprodp').'[ID:'.implode(',',$pg_id).']');
  358. showDialog(L('admin_pointprod_del_success'),'index.php?act=pointprod&op=pointprod','succ');
  359. } else {
  360. showDialog(L('admin_pointprod_del_fail'),'index.php?act=pointprod&op=pointprod','','error');
  361. }
  362. }
  363. /**
  364. * 积分礼品异步状态修改
  365. */
  366. public function ajaxOp(){
  367. //礼品上架,礼品推荐,礼品禁售
  368. $id = intval($_GET['id']);
  369. if ($id <= 0){
  370. echo 'false'; exit;
  371. }
  372. $model_pointprod = Model('pointprod');
  373. $update_array = array();
  374. $update_array[$_GET['column']] = trim($_GET['value']);
  375. $model_pointprod->editPointProd($update_array,array('pgoods_id'=>$id));
  376. echo 'true';exit;
  377. }
  378. /**
  379. * 积分礼品上传
  380. */
  381. public function pointprod_pic_uploadOp(){
  382. /**
  383. * 上传图片
  384. */
  385. $upload = new UploadFile();
  386. $upload->set('default_dir',ATTACH_POINTPROD);
  387. $result = $upload->upfile('fileupload');
  388. if ($result){
  389. $_POST['pic'] = $upload->file_name;
  390. }else {
  391. echo 'error';exit;
  392. }
  393. /**
  394. * 模型实例化
  395. */
  396. $model_upload = Model('upload');
  397. /**
  398. * 图片数据入库
  399. */
  400. $insert_array = array();
  401. $insert_array['file_name'] = $_POST['pic'];
  402. $insert_array['upload_type'] = '6';
  403. $insert_array['file_size'] = $_FILES['Filedata']['size'];
  404. $insert_array['upload_time'] = time();
  405. $insert_array['item_id'] = intval($_POST['item_id']);
  406. $result = $model_upload->add($insert_array);
  407. if ($result){
  408. $data = array();
  409. $data['file_id'] = $result;
  410. $data['file_name'] = $_POST['pic'];
  411. $data['file_path'] = $_POST['pic'];
  412. /**
  413. * 整理为json格式
  414. */
  415. $output = json_encode($data);
  416. echo $output;
  417. }
  418. }
  419. /**
  420. * ajax操作删除已上传图片
  421. */
  422. public function ajaxdeluploadOp(){
  423. //删除文章图片
  424. if (intval($_GET['file_id']) > 0){
  425. $model_upload = Model('upload');
  426. /**
  427. * 删除图片
  428. */
  429. $file_array = $model_upload->getOneUpload(intval($_GET['file_id']));
  430. @unlink(BASE_UPLOAD_PATH.DS.ATTACH_POINTPROD.DS.$file_array['file_name']);
  431. /**
  432. * 删除信息
  433. */
  434. $model_upload->del(intval($_GET['file_id']));
  435. echo 'true';exit;
  436. }else {
  437. echo 'false';exit;
  438. }
  439. }
  440. }