location.ctrl.php 15 KB

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