manage.ctrl.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. uni_user_permission_check('wechat_manage');
  8. $dos = array('display', 'location_post', 'logo', 'location_list','location_view', 'location_del', 'whitelist', 'location_edit', 'export', 'location_sync');
  9. $do = in_array($do, $dos) ? $do : 'logo';
  10. $acid = $_W['acid'];
  11. if($do == 'logo') {
  12. $coupon_setting = pdo_fetch('SELECT * FROM ' . tablename('coupon_setting') . ' WHERE uniacid = :aid AND acid = :acid', array(':aid' => $_W['uniacid'], ':acid' => $acid));
  13. if(checksubmit('submit')) {
  14. $_GPC['logo'] = trim($_GPC['logo']);
  15. empty($_GPC['logo']) && message('请上传商户logo', referer(), 'info');
  16. $data = array(
  17. 'uniacid' => $_W['uniacid'],
  18. 'acid' => $acid,
  19. 'logourl' => $_GPC['logo'],
  20. );
  21. if(empty($coupon_setting)) {
  22. pdo_insert('coupon_setting', $data);
  23. } else {
  24. pdo_update('coupon_setting', $data, array('uniacid' => $_W['uniacid']));
  25. }
  26. message('上传商户LOGO成功', referer(), 'success');
  27. }
  28. }
  29. if($do == 'location_post') {
  30. if(checksubmit('submit')) {
  31. $data['business_name'] = trim($_GPC['business_name']) ? urlencode(trim($_GPC['business_name'])) : message('门店名称不能为空');
  32. $data['branch_name'] = urlencode(trim($_GPC['branch_name']));
  33. $cate = array();
  34. $in_cate = array();
  35. if(!empty($_GPC['class']['cate']) && !empty($_GPC['class']['sub'])) {
  36. $class = array($_GPC['class']['cate'], $_GPC['class']['sub']);
  37. $in_cate = array('cate' => $_GPC['class']['cate'], 'sub' => $_GPC['class']['sub']);
  38. if(!empty($_GPC['class']['clas'])) {
  39. $class[] = $_GPC['class']['clas'];
  40. $in_cate['clas'] = $_GPC['class']['clas'];
  41. }
  42. $cate = array(urlencode(implode($class, ',')));
  43. }
  44. if(empty($cate)) {
  45. message('门店类目不能为空');
  46. }
  47. $data['categories'] = $cate;
  48. $data['province'] = trim($_GPC['reside']['province']) ? urlencode(trim($_GPC['reside']['province'])) : message('请选择门店所在省');
  49. $data['city'] = trim($_GPC['reside']['city']) ? urlencode(trim($_GPC['reside']['city'])) : message('请选择门店所在市');
  50. $data['district'] = trim($_GPC['reside']['district']) ? urlencode(trim($_GPC['reside']['district'])) : message('请选择门店所在区');
  51. $data['address'] = trim($_GPC['address']) ? urlencode(trim($_GPC['address'])) : message('门店详细地址不能为空');
  52. $data['longitude'] = trim($_GPC['baidumap']['lng']) ? trim($_GPC['baidumap']['lng']) : message('请选择门店所在地理位置经度');
  53. $data['latitude'] = trim($_GPC['baidumap']['lat']) ? trim($_GPC['baidumap']['lat']) : message('请选择门店所在地理位置维度');
  54. $data['telephone'] = trim($_GPC['telephone']) ? trim($_GPC['telephone']) : message('门店电话不能为空');
  55. if(empty($_GPC['photo_list'])) {
  56. message('门店图片不能为空');
  57. } else {
  58. foreach($_GPC['photo_list'] as $val) {
  59. if(empty($val)) continue;
  60. $data['photo_list'][] = array('photo_url' => $val);
  61. }
  62. }
  63. $data['avg_price'] = intval($_GPC['avg_price']);
  64. if(empty($_GPC['open_time_start']) || empty($_GPC['open_time_end'])) {
  65. message('营业时间不能为空');
  66. } else {
  67. $data['open_time'] = $_GPC['open_time_start'] . '-' . $_GPC['open_time_end'];
  68. }
  69. $data['recommend'] = urlencode(trim($_GPC['recommend']));
  70. $data['special'] = trim($_GPC['special']) ? urlencode(trim($_GPC['special'])) : message('特色服务不能为空');
  71. $data['introduction'] = urlencode(trim($_GPC['introduction']));
  72. $data['offset_type'] = 1;
  73. $data['sid'] = TIMESTAMP;
  74. load()->classs('coupon');
  75. $acc = new coupon($acid);
  76. $status = $acc->LocationAdd($data);
  77. if(is_error($status)) {
  78. message($status['message'], '', 'error');
  79. }
  80. $insert['uniacid'] = $_W['uniacid'];
  81. $insert['acid'] = $acid;
  82. $insert['sid'] = $data['sid'];
  83. $insert['business_name'] = trim($_GPC['business_name']);
  84. $insert['branch_name'] = trim($_GPC['branch_name']);
  85. $insert['category'] = iserializer($in_cate);
  86. $insert['province'] = trim($_GPC['reside']['province']);
  87. $insert['city'] = trim($_GPC['reside']['city']);
  88. $insert['district'] = trim($_GPC['reside']['district']);
  89. $insert['address'] = trim($_GPC['address']);
  90. $insert['longitude'] = trim($_GPC['baidumap']['lng']);
  91. $insert['latitude'] = trim($_GPC['baidumap']['lat']);
  92. $insert['telephone'] = trim($_GPC['telephone']);
  93. $insert['location_id'] = $status['location_id_list'][0];
  94. $insert['photo_list'] = iserializer($data['photo_list']);
  95. $insert['avg_price'] = intval($_GPC['avg_price']);
  96. $insert['open_time'] = $_GPC['open_time_start'] . '-' . $_GPC['open_time_end'];
  97. $insert['recommend'] = trim($_GPC['recommend']);
  98. $insert['special'] = trim($_GPC['special']);
  99. $insert['introduction'] = trim($_GPC['introduction']);
  100. $insert['offset_type'] = 1;
  101. $insert['status'] = 2;
  102. pdo_insert('coupon_location', $insert);
  103. $id = pdo_insertid();
  104. message('添加门店成功', url('wechat/manage/location_list'), 'success');
  105. }
  106. }
  107. if($do == 'location_edit') {
  108. $id = intval($_GPC['id']);
  109. $location = pdo_fetch('SELECT * FROM ' . tablename('coupon_location') . ' WHERE uniacid = :aid AND id = :id', array(':aid' => $_W['uniacid'], ':id' => $id));
  110. if(empty($location)) {
  111. message('门店不存在或已删除', referer(), 'error');
  112. }
  113. load()->classs('coupon');
  114. $acc = new coupon($acid);
  115. $location = $acc->LocationGet($location['location_id']);
  116. if(is_error($location)) {
  117. message("从微信获取门店信息失败,错误详情:{$location['message']}", referer(), 'error');
  118. }
  119. $update_status = $location['business']['base_info']['update_status'];
  120. if(checksubmit('submit')) {
  121. if(empty($location['location_id'])) {
  122. message('门店正在审核中或审核未通过,不能更新门店信息', referer(), 'error');
  123. }
  124. if($update_status == 1) {
  125. message('服务信息正在更新中,尚未生效,不允许再次更新', referer(), 'error');
  126. }
  127. $data['telephone'] = trim($_GPC['telephone']) ? trim($_GPC['telephone']) : message('门店电话不能为空');
  128. if(empty($_GPC['photo_list'])) {
  129. message('门店图片不能为空');
  130. } else {
  131. foreach($_GPC['photo_list'] as $val) {
  132. if(empty($val)) continue;
  133. $data['photo_list'][] = array('photo_url' => $val);
  134. }
  135. }
  136. $data['avg_price'] = intval($_GPC['avg_price']);
  137. if(empty($_GPC['open_time_start']) || empty($_GPC['open_time_end'])) {
  138. message('营业时间不能为空');
  139. } else {
  140. $data['open_time'] = $_GPC['open_time_start'] . '-' . $_GPC['open_time_end'];
  141. }
  142. $data['recommend'] = urlencode(trim($_GPC['recommend']));
  143. $data['special'] = trim($_GPC['special']) ? urlencode(trim($_GPC['special'])) : message('特色服务不能为空');
  144. $data['introduction'] = urlencode(trim($_GPC['introduction']));
  145. $data['poi_id'] = $location['location_id'];
  146. load()->classs('coupon');
  147. $acc = new coupon($acid);
  148. $status = $acc->LocationEdit($data);
  149. if(is_error($status)) {
  150. message($status['message'], '', 'error');
  151. }
  152. }
  153. $location = $location['business']['base_info'];
  154. $status2local = array('', 3, 2, 1, 3);
  155. $location['status'] = $status2local[$location['available_state']];
  156. $location['location_id'] = $location['poi_id'];
  157. $category_temp = explode(',', $location['categories'][0]);
  158. $location['category'] = iserializer(array('cate' => $category_temp[0], 'sub' => $category_temp[1], 'clas' => $category_temp[2]));
  159. $location['photo_list'] = iserializer($location['photo_list']);
  160. unset($location['sid'], $location['categories'], $location['poi_id'], $location['update_status'], $location['available_state']);
  161. pdo_update('coupon_location', $location, array('acid' => $acid, 'id' => $id));
  162. $location = array();
  163. $location = pdo_fetch('SELECT * FROM ' . tablename('coupon_location') . ' WHERE uniacid = :aid AND id = :id', array(':aid' => $_W['uniacid'], ':id' => $id));
  164. $location['open_time_start'] = '8:00';
  165. $location['open_time_end'] = '24:00';
  166. $open_time = explode('-', $location['open_time']);
  167. if(!empty($open_time)) {
  168. $location['open_time_start'] = $open_time[0];
  169. $location['open_time_end'] = $open_time[1];
  170. }
  171. $location['category'] = iunserializer($location['category']);
  172. $location['category'] = implode('-', $location['category']);
  173. $location['address'] = $location['provice'].$location['city'].$location['district'].$location['address'];
  174. $location['baidumap'] = array('lng' => $location['longitude'], 'lat' => $location['latitude']);
  175. $photo_lists = iunserializer($location['photo_list']);
  176. $location['photo_list'] = array();
  177. if(!empty($photo_lists)) {
  178. foreach($photo_lists as $li) {
  179. if(!empty($li['photo_url'])) {
  180. $location['photo_list'][] = $li['photo_url'];
  181. }
  182. }
  183. }
  184. }
  185. if($do == 'location_list') {
  186. $pindex = max(1, intval($_GPC['page']));
  187. $psize = 20;
  188. $condition = ' WHERE `uniacid`=:uniacid AND acid = :aid';
  189. $pars = array();
  190. $pars[':uniacid'] = $_W['uniacid'];
  191. $pars[':aid'] = $acid;
  192. $keyword = trim($_GPC['keyword']);
  193. if(!empty($keyword)) {
  194. $condition .= " AND (business_name LIKE '%{$keyword}%' OR address LIKE '%{$keyword}%')";
  195. }
  196. $total = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename('coupon_location').$condition, $pars);
  197. $list = pdo_fetchall("SELECT * FROM ".tablename('coupon_location') . $condition ." ORDER BY id DESC LIMIT ".($pindex - 1) * $psize.','.$psize, $pars);
  198. if(!empty($list)) {
  199. foreach($list as &$li) {
  200. $temp = iunserializer($li['category']);
  201. $li['category_'] = implode('-', $temp);
  202. }
  203. }
  204. $pager = pagination($total, $pindex, $psize);
  205. }
  206. if($do == 'location_del') {
  207. $id = intval($_GPC['id']);
  208. $location = pdo_fetch('SELECT status,location_id FROM ' . tablename('coupon_location') . ' WHERE uniacid = :aid AND id = :id', array(':aid' => $_W['uniacid'], ':id' => $id));
  209. if(!empty($location['location_id'])) {
  210. load()->classs('coupon');
  211. $acc = new coupon($acid);
  212. $status = $acc->LocationDel($location['location_id']);
  213. }
  214. pdo_delete('coupon_location', array('uniacid' => $_W['uniacid'], 'acid' => $acid, 'id' => $id));
  215. if(is_error($status)) {
  216. message("删除本地门店数据成功<br>通过微信接口删除微信门店数据失败,请登陆微信公众平台手动删除门店<br>错误原因:{$status['message']}", url('wechat/manage/location_list'), 'error');
  217. }
  218. message('删除门店成功', url('wechat/manage/location_list'), 'success');
  219. }
  220. if($do == 'export') {
  221. load()->classs('coupon');
  222. $acc = new coupon($acid);
  223. $location = $acc->LocationBatchGet();
  224. if(is_error($location)) {
  225. message($location['message'], referer(), 'error');
  226. }
  227. $location = $location['business_list'];
  228. $status2local = array('', 3, 2, 1, 3);
  229. if(!empty($location)) {
  230. foreach($location as $row) {
  231. $li = $row['base_info'];
  232. if($li['available_state'] == 3 && !empty($li['poi_id']) && empty($li['sid'])) {
  233. $isexist = pdo_fetchcolumn('SELECT id FROM ' . tablename('coupon_location') . ' WHERE uniacid = :uniacid AND acid = :acid AND location_id = :location_id', array(':uniacid' => $_W['uniacid'], ':acid' => $acid, ':location_id' => $li['poi_id']));
  234. if(empty($isexist)) {
  235. $li['uniacid'] = $_W['uniacid'];
  236. $li['acid'] = $acid;
  237. $li['status'] = 1;
  238. $li['location_id'] = $li['poi_id'];
  239. $category_temp = explode(',', $li['categories'][0]);
  240. $li['category'] = iserializer(array('cate' => $category_temp[0], 'sub' => $category_temp[1], 'clas' => $category_temp[2]));
  241. $li['photo_list'] = iserializer($li['photo_list']);
  242. unset($li['sid'], $li['categories'], $li['poi_id'], $li['update_status'], $li['available_state']);
  243. pdo_insert('coupon_location', $li);
  244. }
  245. } else {
  246. $data = pdo_fetch('SELECT id,sid FROM ' . tablename('coupon_location') . ' WHERE uniacid = :uniacid AND acid = :acid AND (sid = :sid OR id = :sid)', array(':uniacid' => $_W['uniacid'], ':acid' => $acid, ':sid' => $li['sid']));
  247. $li['uniacid'] = $_W['uniacid'];
  248. $li['acid'] = $acid;
  249. $li['status'] = $status2local[$li['available_state']];
  250. $li['location_id'] = $li['poi_id'];
  251. $category_temp = explode(',', $li['categories'][0]);
  252. $li['category'] = iserializer(array('cate' => $category_temp[0], 'sub' => $category_temp[1], 'clas' => $category_temp[2]));
  253. $li['photo_list'] = iserializer($li['photo_list']);
  254. unset($li['categories'], $li['poi_id'], $li['update_status'], $li['available_state']);
  255. if(empty($isexist)) {
  256. pdo_insert('coupon_location', $li);
  257. } else {
  258. if($data['id'] == $li['sid']) {
  259. pdo_update('coupon_location', $li, array('acid' => $acid, 'id' => $li['sid']));
  260. } else {
  261. pdo_update('coupon_location', $li, array('acid' => $acid, 'sid' => $li['sid']));
  262. }
  263. }
  264. }
  265. }
  266. }
  267. message('导入门店成功', referer(), 'success');
  268. }
  269. if($do == 'location_sync') {
  270. $id = intval($_GPC['id']);
  271. $location = pdo_fetch('SELECT * FROM ' . tablename('coupon_location') . ' WHERE uniacid = :aid AND id = :id', array(':aid' => $_W['uniacid'], ':id' => $id));
  272. if(empty($location)) {
  273. message('门店不存在或已删除', referer(), 'error');
  274. }
  275. load()->classs('coupon');
  276. $acc = new coupon($acid);
  277. $location = $acc->LocationGet($location['location_id']);
  278. if(is_error($location)) {
  279. message("获取门店信息失败,错误详情:{$location['message']}", referer(), 'error');
  280. }
  281. $location = $location['business']['base_info'];
  282. $status2local = array('', 3, 2, 1, 3);
  283. $location['status'] = $status2local[$location['available_state']];
  284. $location['location_id'] = $location['poi_id'];
  285. $category_temp = explode(',', $location['categories'][0]);
  286. $location['category'] = iserializer(array('cate' => $category_temp[0], 'sub' => $category_temp[1], 'clas' => $category_temp[2]));
  287. $location['photo_list'] = iserializer($location['photo_list']);
  288. unset($location['sid'], $location['categories'], $location['poi_id'], $location['update_status'], $location['available_state']);
  289. pdo_update('coupon_location', $location, array('acid' => $acid, 'id' => $id));
  290. message('更新门店信息成功', referer(), 'success');
  291. }
  292. if($do == 'whitelist') {
  293. $whitelist = pdo_fetchcolumn('SELECT whitelist FROM ' . tablename('coupon_setting') . ' WHERE uniacid = :aid AND acid = :acid', array(':aid' => $_W['uniacid'], ':acid' => $acid));
  294. if(!empty($whitelist)) {
  295. $whitelist = @iunserializer($whitelist);
  296. }
  297. if(checksubmit('submit')) {
  298. if(!empty($_GPC['username'])) {
  299. $data = array();
  300. foreach($_GPC['username'] as $da) {
  301. $da = trim($da);
  302. if(empty($da)) {
  303. continue;
  304. }
  305. $i++;
  306. $data[] = trim($da);
  307. if($i >= 10) {
  308. break;
  309. }
  310. }
  311. }
  312. load()->classs('coupon');
  313. $acc = new coupon($acid);
  314. $post['username'] = $data;
  315. $status = $acc->SetTestWhiteList($post);
  316. if(is_error($status)) {
  317. message($status['message'], '', 'error');
  318. } else {
  319. $data = iserializer($data);
  320. pdo_update('coupon_setting', array('whitelist' => $data), array('uniacid' => $_W['uniacid'], 'acid' => $acid));
  321. }
  322. message('设置测试白名单成功', referer(), 'success');
  323. }
  324. }
  325. template('wechat/manage');