card.ctrl.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796
  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_card_list');
  8. $dos = array('module', 'coupon', 'location', 'discount', 'display', 'del', 'sync', 'modifystock', 'toggle', 'selfconsume', 'qr', 'record', 'cash', 'gift', 'groupon', 'general_coupon');
  9. $do = in_array($do, $dos) ? $do : 'display';
  10. $op = trim($_GPC['op']) ? trim($_GPC['op']) : 'post';
  11. $acid = intval($_W['acid']);
  12. if(!$acid) {
  13. message('公众号不存在', url('wechat/account'), 'error');
  14. }
  15. if($do == 'location') {
  16. $location = pdo_fetchall('SELECT id,location_id, business_name, branch_name, address FROM ' . tablename('activity_stores') . " WHERE uniacid = :uniacid AND status = :status AND location_id != ''", array(':uniacid' => $_W['uniacid'], ':status' => 1));
  17. template('wechat/location_model');
  18. exit();
  19. }
  20. if(empty($_GPC['__color'])) {
  21. load()->classs('coupon');
  22. $acc = new coupon($acid);
  23. $status = $acc->GetColors();
  24. if(is_error($status)) {
  25. message($status['message'], referer(), 'error');
  26. }
  27. foreach($status['colors'] as $val) {
  28. $colors[$val['name']] = $val;
  29. }
  30. $colors = base64_encode(iserializer($colors));
  31. isetcookie('__color', $colors, 86400*7);
  32. }
  33. $colors = iunserializer(base64_decode($_GPC['__color']));
  34. load()->model('coupon');
  35. load()->classs('coupon');
  36. $setting = pdo_fetch('SELECT * FROM ' . tablename('coupon_setting') . ' WHERE uniacid = :aid AND acid = :cid', array(':aid' => $_W['uniacid'], ':cid' => $acid));
  37. $setting['logourl_'] = media2local($setting['logourl']);
  38. $types = array(
  39. 'discount' => '折扣券',
  40. 'cash' => '代金券',
  41. 'gift' => '礼品券',
  42. 'groupon' => '团购券',
  43. 'general_coupon' => '优惠券',
  44. );
  45. if($do == 'display') {
  46. $condition = ' WHERE uniacid = :aid AND acid = :cid';
  47. $parma[':aid'] = $_W['uniacid'];
  48. $parma[':cid'] = $acid;
  49. if(!empty($_GPC['type'])) {
  50. $condition .= ' AND type = :type';
  51. $parma[':type'] = $_GPC['type'];
  52. }
  53. if(!empty($_GPC['title'])) {
  54. $title = trim($_GPC['title']);
  55. $condition .= " AND title LIKE '%{$title}%'";
  56. }
  57. if(!empty($_GPC['status'])) {
  58. $status = intval($_GPC['status']);
  59. $condition .= " AND status = {$status}";
  60. }
  61. if($_GPC['is_selfconsume'] == '1') {
  62. $condition .= " AND is_selfconsume = 1";
  63. } elseif ($_GPC['is_selfconsume'] == '0') {
  64. $condition .= " AND is_selfconsume = 0";
  65. } else {
  66. $condition = $condition;
  67. }
  68. $pindex = max(1, intval($_GPC['page']));
  69. $psize = 20;
  70. $total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('coupon') . $condition, $parma);
  71. $data = pdo_fetchall('SELECT * FROM ' . tablename('coupon') . $condition . ' ORDER BY id DESC LIMIT ' .($pindex - 1) * $psize.','.$psize, $parma);
  72. if(!empty($data)) {
  73. foreach($data as &$da) {
  74. $da['date_info'] = @iunserializer($da['date_info']);
  75. $da['location_id_list'] = @iunserializer($da['location_id_list']);
  76. }
  77. }
  78. $pager = pagination($total, $pindex, $psize);
  79. template('wechat/card');
  80. }
  81. if($do == 'sync') {
  82. $id = intval($_GPC['cid']);
  83. $card = pdo_fetch('SELECT id,status,card_id,acid FROM ' . tablename('coupon') . ' WHERE acid = :acid AND id = :id', array(':acid' => $acid, ':id' => $id));
  84. if(empty($card) || empty($card['card_id'])) {
  85. message('卡券不存在或卡券id为空', referer(), 'error');
  86. }
  87. $coupon = new coupon($acid);
  88. $card = $coupon->fetchCard($card['card_id']);
  89. if(is_error($card)) {
  90. message($card['message'], referer(), 'error');
  91. }
  92. $type = strtolower($card['card_type']);
  93. $coupon_status = coupon_status();
  94. $status = $coupon_status[$card[$type]['base_info']['status']];
  95. pdo_update('coupon', array('status' => $status), array('acid' => $acid, 'id' => $id));
  96. message('更新卡券状态成功', referer(), 'success');
  97. }
  98. if($do == 'del') {
  99. $id = intval($_GPC['id']);
  100. $card_id = pdo_fetchcolumn('SELECT card_id FROM ' . tablename('coupon') . ' WHERE acid = :acid AND id = :id', array(':acid' => $acid, ':id' => $id));
  101. $status = coupon_delete($id);
  102. if(!is_error($status) || $_GPC['force'] == 1) {
  103. pdo_delete('coupon', array('id' => $id, 'uniacid' => $_W['uniacid']));
  104. pdo_delete('qrcode', array('acid' => $acid, 'type' => 'card', 'extra' => $id));
  105. pdo_delete('coupon_record', array('acid' => $acid, 'card_id' => $card_id));
  106. pdo_delete('coupon_modules', array('acid' => $acid, 'id' => $id));
  107. message('删除卡券成功', url('wechat/card/display'), 'success');
  108. } else{
  109. $url_1 = url('wechat/card/display');
  110. $url_2 = url('wechat/card/del', array('id' => $id, 'force' => 1));
  111. $message = "<a href='{$url_1}' class='btn btn-default'>否</a> <a href='{$url_2}' class='btn btn-primary'>是</a> ";
  112. message($status['message']."<br>是否强制删除本地数据 {$message}", '', 'error');
  113. }
  114. }
  115. if($do == 'modifystock') {
  116. $status = coupon_modifystock($_GPC['id'], $_GPC['num']);
  117. $out['erron'] = 0;
  118. $out['error'] = '';
  119. if(!is_error($status)) {
  120. exit(json_encode($out));
  121. } else{
  122. $out['erron'] = 1;
  123. $out['error'] = $status['message'];
  124. exit(json_encode($out));
  125. }
  126. }
  127. if($do == 'qr') {
  128. if($op == 'post') {
  129. $cid = intval($_GPC['cid']);
  130. $id = intval($_GPC['id']);
  131. $title = pdo_fetchcolumn('SELECT title FROM ' . tablename('coupon') . ' WHERE uniacid = :aid AND id = :id', array(':aid' => $_W['uniacid'], ':id' => $cid));
  132. if(empty($title)) {
  133. message('卡券不存在或已经删除', url('wechat/card/display'), 'error');
  134. }
  135. $row = pdo_fetch('SELECT * FROM ' . tablename('qrcode') . ' WHERE uniacid = :aid AND id = :id', array(':aid' => $_W['uniacid'], ':id' => $id));
  136. if(checksubmit('submit')) {
  137. $title = !empty($_GPC['name']) ? trim($_GPC['name']) : message('场景名称不能为空');
  138. $qrctype = intval($_GPC['qrc-model']);
  139. $data['id'] = $cid;
  140. if($id > 0) {
  141. $data['id'] = $cid;
  142. $data['outer_id'] = $row['qrcid'];
  143. $data['expire_seconds'] = min(array(intval($_GPC['expire-seconds']), 1800));
  144. $status = coupon_qr($data);
  145. if(!is_error($status)) {
  146. $update['name'] = $title;
  147. $update['createtime'] = TIMESTAMP;
  148. $update['expire'] = $status['expire_seconds'];
  149. $update['ticket'] = $status['ticket'];
  150. $update['url'] = $status['url'];
  151. pdo_update('qrcode', $update, array('uniacid' => $_W['uniacid'], 'id' => $id));
  152. message('更新二维码成功', url('wechat/card/qr', array('op' => 'list','cid' => $cid)), 'success');
  153. } else {
  154. message('更新二维码失败,' . $status['message'], referer(), 'error');
  155. }
  156. }
  157. if ($qrctype == 1) {
  158. $qrcid = pdo_fetchcolumn("SELECT qrcid FROM ".tablename('qrcode')." WHERE acid = :acid AND model = '1' ORDER BY qrcid DESC", array(':acid' => $acid));
  159. $data['outer_id'] = !empty($qrcid) ? ($qrcid+1) : 100001;
  160. $data['expire_seconds'] = intval($_GPC['expire-seconds']) ? min(array(intval($_GPC['expire-seconds']), 1800)) : 1800;
  161. $result = coupon_qr($data);
  162. } else if ($qrctype == 2) {
  163. $qrcid = pdo_fetchcolumn("SELECT qrcid FROM ".tablename('qrcode')." WHERE acid = :acid AND model = '2' ORDER BY qrcid DESC", array(':acid' => $acid));
  164. $data['outer_id'] = !empty($qrcid) ? ($qrcid+1) : 1;
  165. if ($data['outer_id'] > 100000) {
  166. message('抱歉,永久二维码已经生成最大数量,请先删除一些。');
  167. }
  168. $result = coupon_qr($data);
  169. } else {
  170. message('抱歉,此公众号暂不支持您请求的二维码类型!');
  171. }
  172. if(!is_error($result)) {
  173. $insert = array(
  174. 'uniacid' => $_W['uniacid'],
  175. 'acid' => $acid,
  176. 'qrcid' => $data['outer_id'],
  177. 'keyword' => '',
  178. 'name' => $_GPC['name'],
  179. 'model' => $qrctype,
  180. 'ticket' => $result['ticket'],
  181. 'expire' => $result['expire_seconds'],
  182. 'url' => $result['url'],
  183. 'createtime' => TIMESTAMP,
  184. 'status' => '1',
  185. 'type' => 'card',
  186. 'extra' => $cid
  187. );
  188. pdo_insert('qrcode', $insert);
  189. message('恭喜,生成二维码成功!', url('wechat/card/qr', array('op' => 'list', 'cid' => $cid)), 'success');
  190. } else {
  191. message("公众平台返回接口错误. <br />错误代码为: {$result['errorcode']} <br />错误信息为: {$result['message']}");
  192. }
  193. }
  194. }
  195. if($op == 'list') {
  196. $cid = intval($_GPC['cid']);
  197. $title = pdo_fetchcolumn('SELECT title FROM ' . tablename('coupon') . ' WHERE uniacid = :aid AND id = :id', array(':aid' => $_W['uniacid'], ':id' => $cid));
  198. $data = pdo_fetchall('SELECT * FROM ' . tablename('qrcode') . ' WHERE uniacid = :aid AND type = :type AND extra = :cid', array(':aid' => $_W['uniacid'], ':type' => 'card', ':cid' => $cid));
  199. pdo_query("UPDATE ".tablename('qrcode')." SET status = '0' WHERE uniacid = '{$_W['uniacid']}' AND model = '1' AND createtime < '{$_W['timestamp']}' - expire");
  200. }
  201. if($op == 'extend') {
  202. $id = intval($_GPC['id']);
  203. if (!empty($id)) {
  204. $qrcrow = pdo_fetch("SELECT * FROM ".tablename('qrcode')." WHERE uniacid = {$_W['uniacid']} AND id = '{$id}'");
  205. $update = array();
  206. if($qrcrow['model'] == 1) {
  207. $data['expire_seconds'] = 1800;
  208. $data['id'] = $qrcrow['extra'];
  209. $data['outer_id'] = $qrcrow['qrcid'];
  210. $result = coupon_qr($data);
  211. if(is_error($result)) {
  212. message($result['message'], '', 'error');
  213. }
  214. $update['ticket'] = $result['ticket'];
  215. $update['expire'] = $result['expire_seconds'];
  216. $update['url'] = $result['url'];
  217. $update['createtime'] = TIMESTAMP;
  218. pdo_update('qrcode', $update, array('id' => $id, 'uniacid' => $_W['uniacid']));
  219. }
  220. message('恭喜,延长临时二维码时间成功!', referer(), 'success');
  221. }
  222. }
  223. if($op == 'del') {
  224. $cid = intval($_GPC['cid']);
  225. if ($_GPC['scgq']) {
  226. $list = pdo_fetchall("SELECT id FROM ".tablename('qrcode')." WHERE uniacid = '{$_W['uniacid']}' AND extra = {$cid} AND status = '0' AND type='card'", array(), 'id');
  227. if (!empty($list)) {
  228. pdo_query("DELETE FROM ".tablename('qrcode')." WHERE id IN (".implode(',', array_keys($list)).")");
  229. }
  230. message('执行成功<br />删除二维码:'.count($list), url('wechat/card/qr', array('op' => 'list', 'cid' => $cid)),'success');
  231. }else{
  232. $id = $_GPC['id'];
  233. pdo_delete('qrcode', array('id' =>$id, 'extra' => $cid, 'uniacid' => $_W['uniacid']));
  234. message('删除成功', url('wechat/card/qr', array('op' => 'list', 'cid' => $cid)), 'success');
  235. }
  236. }
  237. template('wechat/qrcode');
  238. }
  239. if($do == 'record') {
  240. load()->model('mc');
  241. if($op == 'list') {
  242. $condition = ' WHERE acid = :acid';
  243. $parma[':acid'] = $acid;
  244. $cid = intval($_GPC['cid']);
  245. $card_id = trim($_GPC['card_id']);
  246. if($cid > 0) {
  247. $coupon = pdo_fetch('SELECT title,card_id FROM ' . tablename('coupon') . ' WHERE acid = :acid AND id = :id', array(':acid' => $acid, ':id' => $cid));
  248. $card_id = $coupon['card_id'];
  249. } else {
  250. $coupon = pdo_fetch('SELECT title FROM ' . tablename('coupon') . ' WHERE acid = :acid AND card_id = :card_id', array(':acid' => $acid, ':card_id' => $card_id));
  251. }
  252. if(!empty($card_id)) {
  253. $condition .= ' AND card_id = :card_id';
  254. $parma[':card_id'] = $card_id;
  255. }
  256. $code = trim($_GPC['code']);
  257. if(!empty($code)) {
  258. $condition .= " AND code LIKE '%{$code}%'";
  259. }
  260. $status = intval($_GPC['status']);
  261. if($status > 0) {
  262. $condition .= " AND status = :status";
  263. $parma[':status'] = $status;
  264. }
  265. $outer_id = intval($_GPC['outer_id']);
  266. if(!empty($outer_id)) {
  267. $condition .= " AND outer_id = :oid";
  268. $parma[':oid'] = $outer_id;
  269. }
  270. $nickname = trim($_GPC['nickname']);
  271. if(!empty($nickname)) {
  272. $condition .= " AND openid IN (SELECT openid FROM " . tablename('mc_mapping_fans') ." WHERE acid = {$acid} AND nickname LIKE '%{$nickname}%')";
  273. }
  274. $pindex = max(1, intval($_GPC['page']));
  275. $psize = 20;
  276. $total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('coupon_record') . $condition, $parma);
  277. $data = pdo_fetchall('SELECT * FROM ' . tablename('coupon_record') . $condition . ' ORDER BY id DESC LIMIT ' .($pindex - 1) * $psize.','.$psize, $parma);
  278. if(!empty($data)) {
  279. foreach($data as &$da) {
  280. if(!empty($da['openid'])) {
  281. $openids[] = $da['openid'];
  282. }
  283. if(!empty($da['friend_openid'])) {
  284. $openids[] = $da['friend_openid'];
  285. }
  286. if($da['outer_id'] > 0) {
  287. $outer_ids[] = $da['outer_id'];
  288. }
  289. }
  290. if(!empty($openids)) {
  291. $openids_str = "'" . implode("','", $openids) . "'";
  292. $nicknames = pdo_fetchall('SELECT nickname,openid FROM ' . tablename('mc_mapping_fans') . "WHERE acid = {$acid} AND openid IN ({$openids_str})", array(), 'openid');
  293. }
  294. if(!empty($outer_ids)) {
  295. $outer_str = implode(',', $outer_ids);
  296. $outers = pdo_fetchall('SELECT name,qrcid FROM ' . tablename('qrcode') . "WHERE acid = {$acid} AND type = 'card' AND qrcid IN ({$outer_str})", array(), 'qrcid');
  297. }
  298. $operator = mc_account_change_operator($da['clerk_type'], $da['store_id'], $da['clerk_id']);
  299. $da['clerk_cn'] = $operator['clerk_cn'];
  300. $da['store_cn'] = $operator['store_cn'];
  301. }
  302. $pager = pagination($total, $pindex, $psize);
  303. }
  304. if($op == 'unavailable') {
  305. $id = intval($_GPC['id']);
  306. $del = intval($_GPC['del']);
  307. $record = pdo_fetch('SELECT code,status FROM ' . tablename('coupon_record') . ' WHERE acid = :acid AND id = :id', array(':acid' => $acid, ':id' => $id));
  308. if(empty($record)) {
  309. message('对应code码不存在', referer(), 'error');
  310. }
  311. if($record['status'] == 1) {
  312. $acc = new coupon($acid);
  313. $status = $acc->UnavailableCode(array('code' => $record['code']));
  314. if(is_error($status)) {
  315. message($status['message'], '', 'error');
  316. } else {
  317. pdo_update('coupon_record', array('status' => 2, 'clerk_name' => $_W['user']['name'], 'clerk_id' => $_W['user']['clerk_id'], 'store_id' => $_W['user']['store_id'], 'clerk_type' => $_W['user']['clerk_type'], 'usetime' => TIMESTAMP), array('acid' => $acid, 'code' => $record['code'], 'id' => $id));
  318. }
  319. }
  320. if($del == 1) {
  321. pdo_delete('coupon_record', array('acid' => $acid, 'id' => $id));
  322. message('删除卡券领取状态成功', referer(), 'success');
  323. }
  324. message('更改卡券领取状态成功', referer(), 'success');
  325. }
  326. if($op == 'consume') {
  327. $id = intval($_GPC['id']);
  328. $record = pdo_fetch('SELECT code,status FROM ' . tablename('coupon_record') . ' WHERE acid = :acid AND id = :id', array(':acid' => $acid, ':id' => $id));
  329. if(empty($record)) {
  330. message('对应code码不存在', referer(), 'error');
  331. }
  332. if($record['status'] == 1) {
  333. $acc = new coupon($acid);
  334. $status = $acc->ConsumeCode(array('code' => $record['code']));
  335. if(is_error($status)) {
  336. message($status['message'], '', 'error');
  337. } else {
  338. pdo_update('coupon_record', array('status' => 3, 'clerk_name' => $_W['user']['name'], 'clerk_id' => $_W['user']['clerk_id'], 'store_id' => $_W['user']['store_id'], 'clerk_type' => $_W['user']['clerk_type'], 'usetime' => TIMESTAMP), array('acid' => $acid, 'code' => $record['code'], 'id' => $id));
  339. }
  340. }
  341. message('核销卡券成功', referer(), 'success');
  342. }
  343. template('wechat/record');
  344. }
  345. if($do == 'toggle') {
  346. $id = intval($_GPC['id']);
  347. if($op == 'is_display') {
  348. $display = pdo_fetchcolumn('SELECT is_display FROM ' . tablename('coupon') . ' WHERE acid = :acid AND id = :id', array(':acid' => $acid, ':id' => $id));
  349. if($display == 1) {
  350. pdo_update('coupon', array('is_display' => 0), array('acid' => $acid, 'id' => $id));
  351. } else {
  352. pdo_update('coupon', array('is_display' => 1), array('acid' => $acid, 'id' => $id));
  353. }
  354. exit('success');
  355. }
  356. }
  357. if($do == 'selfconsume') {
  358. $id = intval($_GPC['id']);
  359. load()->classs('coupon');
  360. $coupon = new coupon($acid);
  361. $card_info = pdo_get('coupon', array('acid' => $acid,'id' => $id),array('is_selfconsume','card_id','location_id_list'));
  362. $is_selfconsume = $card_info['is_selfconsume'];
  363. $card_id = $card_info['card_id'];
  364. $location_id_list = iunserializer($card_info['location_id_list']);
  365. if(empty($location_id_list)) {
  366. exit('该卡券未设置适用门店,无法设置自助核销');
  367. } else {
  368. $is_open = ($is_selfconsume == 1) ? false : true;
  369. $selfconsume_value = ($is_selfconsume == 1) ? 0 : 1;
  370. $data = array(
  371. 'card_id' => $card_id,
  372. 'is_open' => $is_open
  373. );
  374. $result = $coupon->selfConsume($data);
  375. if(!is_error($result)) {
  376. pdo_update('coupon', array('is_selfconsume' => $selfconsume_value), array('acid' => $acid, 'id' => $id));
  377. }
  378. exit('success');
  379. }
  380. }
  381. if($do == 'discount') {
  382. if($op == 'post') {
  383. unset($url_name_type['URL_NAME_TYPE_VIP_SERVICE']);
  384. $id = intval($_GPC['id']);
  385. if($id > 0) {
  386. $item = coupon_fetch($id);
  387. if(is_error($item)) {
  388. message($item['message'], '', 'error');
  389. }
  390. }
  391. template('wechat/coupon-post');
  392. } elseif($op == 'post_save') {
  393. $post = array();
  394. foreach($_GPC['data'] as $da) {
  395. $post[$da['name']] = trim($da['value']);
  396. }
  397. $out['errno'] = 1;
  398. $out['error'] = '';
  399. $post['logo_url'] = empty($post['logo_url']) ? $setting['logourl'] : trim($post['logo_url']);
  400. $base = new Card('DISCOUNT', $post);
  401. if(is_error($base->discount->base_info)) {
  402. $out['errno'] = 0;
  403. $out['error'] = $base->discount->base_info['message'];
  404. exit(json_encode($out));
  405. }
  406. $base->get_card()->set_discount(100 - intval($post['discount']));
  407. $acc = new coupon($acid);
  408. $status = $acc->CreateCard($base->toJson());
  409. if(is_error($status)) {
  410. $out['errno'] = 0;
  411. $out['error'] = $status['message'];
  412. exit(json_encode($out));
  413. }
  414. $post['card_id'] = $status['card_id'];
  415. $post['date_info'] = array(
  416. 'time_type' => $post['time_type'],
  417. 'time_limit_start' => $post['time_limit[start]'],
  418. 'time_limit_end' => $post['time_limit[end]'],
  419. 'deadline' => $post['deadline'],
  420. 'limit' => $post['limit'],
  421. );
  422. $post['date_info'] = iserializer($post['date_info']);
  423. if(!empty($post['location-select'])) {
  424. $location = explode('-', $post['location-select']);
  425. $post['location_id_list'] = iserializer($location);
  426. } else {
  427. $post['location_id_list'] = iserializer(array());
  428. }
  429. $post['uniacid'] = $_W['uniacid'];
  430. $post['acid'] = $acid;
  431. $post['type'] = 'discount';
  432. $post['extra'] = intval($post['discount']);
  433. $post['is_display'] = intval($post['is_display']);
  434. empty($post['code_type']) && $post['code_type'] = 1;
  435. $post['status'] = 1;
  436. $module = trim($post['module-select']);
  437. unset($post['module-select'],$post['discount'],$post['time_type'],$post['limit'],$post['deadline'], $post['time_limit[start]'],$post['time_limit[end]'],$post['color-value'], $post['token'], $post['is_location'], $post['location-select']);
  438. $is_ok = pdo_fetchcolumn('SELECT id FROM ' . tablename('coupon') . ' WHERE acid = :acid AND card_id = :card_id', array(':acid' => $acid, ':card_id' => $post['card_id']));
  439. if(empty($is_ok)) {
  440. pdo_insert('coupon', $post);
  441. $cid = pdo_insertid();
  442. } else {
  443. $cid = $is_ok;
  444. unset($post['status']);
  445. pdo_update('coupon', $post, array('acid' => $acid, 'id' => $is_ok));
  446. }
  447. if(!empty($module)) {
  448. $arr = explode('@', $module);
  449. foreach($arr as $li) {
  450. $data = array(
  451. 'uniacid' => $_W['uniacid'],
  452. 'acid' => $acid,
  453. 'card_id' =>$post['card_id'],
  454. 'cid' => $cid,
  455. 'module' => $li
  456. );
  457. pdo_insert('coupon_modules', $data);
  458. }
  459. }
  460. exit(json_encode($out));
  461. }
  462. }
  463. if($do == 'cash') {
  464. if($op == 'post') {
  465. unset($url_name_type['URL_NAME_TYPE_VIP_SERVICE']);
  466. $id = intval($_GPC['id']);
  467. if($id > 0) {
  468. $item = coupon_fetch($id);
  469. if(is_error($item)) {
  470. message($item['message'], '', 'error');
  471. }
  472. }
  473. template('wechat/cash-post');
  474. } elseif($op == 'post_save') {
  475. $post = array();
  476. foreach($_GPC['data'] as $da) {
  477. $post[$da['name']] = trim($da['value']);
  478. }
  479. $out['errno'] = 1;
  480. $out['error'] = '';
  481. $post['logo_url'] = empty($post['logo_url']) ? $setting['logourl'] : trim($post['logo_url']);
  482. $base = new Card('CASH', $post);
  483. if(is_error($base->cash->base_info)) {
  484. $out['errno'] = 0;
  485. $out['error'] = $base->cash->base_info['message'];
  486. exit(json_encode($out));
  487. }
  488. $base->get_card()->set_least_cost($post['least_cost'] * 100);
  489. $base->get_card()->set_reduce_cost($post['reduce_cost'] * 100);
  490. $acc = new coupon($acid);
  491. $status = $acc->CreateCard($base->toJson());
  492. if(is_error($status)) {
  493. $out['errno'] = 0;
  494. $out['error'] = $status['message'];
  495. exit(json_encode($out));
  496. }
  497. $post['card_id'] = $status['card_id'];
  498. $post['date_info'] = array(
  499. 'time_type' => $post['time_type'],
  500. 'time_limit_start' => $post['time_limit[start]'],
  501. 'time_limit_end' => $post['time_limit[end]'],
  502. 'deadline' => $post['deadline'],
  503. 'limit' => $post['limit'],
  504. );
  505. $post['date_info'] = iserializer($post['date_info']);
  506. if(!empty($post['location-select'])) {
  507. $location = explode('-', $post['location-select']);
  508. $post['location_id_list'] = iserializer($location);
  509. } else {
  510. $post['location_id_list'] = iserializer(array());
  511. }
  512. $post['uniacid'] = $_W['uniacid'];
  513. $post['acid'] = $acid;
  514. $post['type'] = 'cash';
  515. $post['extra'] = iserializer(array('least_cost' => $post['least_cost'], 'reduce_cost' => $post['reduce_cost'],));
  516. $post['is_display'] = intval($post['is_display']);
  517. empty($post['code_type']) && $post['code_type'] = 1;
  518. $post['status'] = 1;
  519. $module = trim($post['module-select']);
  520. unset($post['module-select'],$post['least_cost'],$post['reduce_cost'],$post['time_type'],$post['limit'],$post['deadline'], $post['time_limit[start]'],$post['time_limit[end]'],$post['color-value'], $post['token'], $post['is_location'], $post['location-select']);
  521. $is_ok = pdo_fetchcolumn('SELECT id FROM ' . tablename('coupon') . ' WHERE acid = :acid AND card_id = :card_id', array(':acid' => $acid, ':card_id' => $post['card_id']));
  522. if(empty($is_ok)) {
  523. pdo_insert('coupon', $post);
  524. $cid = pdo_insertid();
  525. } else {
  526. $cid = $is_ok;
  527. unset($post['status']);
  528. pdo_update('coupon', $post, array('acid' => $acid, 'id' => $is_ok));
  529. }
  530. if(!empty($module)) {
  531. $arr = explode('@', $module);
  532. foreach($arr as $li) {
  533. $data = array(
  534. 'uniacid' => $_W['uniacid'],
  535. 'acid' => $acid,
  536. 'card_id' =>$post['card_id'],
  537. 'cid' => $cid,
  538. 'module' => $li
  539. );
  540. pdo_insert('coupon_modules', $data);
  541. }
  542. }
  543. exit(json_encode($out));
  544. }
  545. }
  546. if($do == 'gift') {
  547. if($op == 'post') {
  548. unset($url_name_type['URL_NAME_TYPE_VIP_SERVICE']);
  549. $id = intval($_GPC['id']);
  550. if($id > 0) {
  551. $item = coupon_fetch($id);
  552. if(is_error($item)) {
  553. message($item['message'], '', 'error');
  554. }
  555. }
  556. template('wechat/gift-post');
  557. } elseif($op == 'post_save') {
  558. $post = array();
  559. foreach($_GPC['data'] as $da) {
  560. $post[$da['name']] = trim($da['value']);
  561. }
  562. $out['errno'] = 1;
  563. $out['error'] = '';
  564. $post['logo_url'] = empty($post['logo_url']) ? $setting['logourl'] : trim($post['logo_url']);
  565. $base = new Card('GIFT', $post);
  566. if(is_error($base->gift->base_info)) {
  567. $out['errno'] = 0;
  568. $out['error'] = $base->gift->base_info['message'];
  569. exit(json_encode($out));
  570. }
  571. $base->get_card()->set_gift(urlencode(trim($post['gift'])));
  572. $acc = new coupon($acid);
  573. $status = $acc->CreateCard($base->toJson());
  574. if(is_error($status)) {
  575. $out['errno'] = 0;
  576. $out['error'] = $status['message'];
  577. exit(json_encode($out));
  578. }
  579. $post['card_id'] = $status['card_id'];
  580. $post['date_info'] = array(
  581. 'time_type' => $post['time_type'],
  582. 'time_limit_start' => $post['time_limit[start]'],
  583. 'time_limit_end' => $post['time_limit[end]'],
  584. 'deadline' => $post['deadline'],
  585. 'limit' => $post['limit'],
  586. );
  587. $post['date_info'] = iserializer($post['date_info']);
  588. if(!empty($post['location-select'])) {
  589. $location = explode('-', $post['location-select']);
  590. $post['location_id_list'] = iserializer($location);
  591. } else {
  592. $post['location_id_list'] = iserializer(array());
  593. }
  594. $post['uniacid'] = $_W['uniacid'];
  595. $post['acid'] = $acid;
  596. $post['type'] = 'gift';
  597. $post['extra'] = trim($post['gift']);
  598. $post['is_display'] = intval($post['is_display']);
  599. empty($post['code_type']) && $post['code_type'] = 1;
  600. $post['status'] = 1;
  601. unset($post['gift'],$post['time_type'],$post['limit'],$post['deadline'], $post['time_limit[start]'],$post['time_limit[end]'],$post['color-value'], $post['token'], $post['is_location'], $post['location-select']);
  602. $is_ok = pdo_fetchcolumn('SELECT id FROM ' . tablename('coupon') . ' WHERE acid = :acid AND card_id = :card_id', array(':acid' => $acid, ':card_id' => $post['card_id']));
  603. if(empty($is_ok)) {
  604. pdo_insert('coupon', $post);
  605. } else {
  606. unset($post['status']);
  607. pdo_update('coupon', $post, array('acid' => $acid, 'id' => $is_ok));
  608. }
  609. exit(json_encode($out));
  610. }
  611. }
  612. if($do == 'groupon') {
  613. if($op == 'post') {
  614. unset($url_name_type['URL_NAME_TYPE_VIP_SERVICE']);
  615. $id = intval($_GPC['id']);
  616. if($id > 0) {
  617. $item = coupon_fetch($id);
  618. if(is_error($item)) {
  619. message($item['message'], '', 'error');
  620. }
  621. }
  622. template('wechat/groupon-post');
  623. } elseif($op == 'post_save') {
  624. $post = array();
  625. foreach($_GPC['data'] as $da) {
  626. $post[$da['name']] = trim($da['value']);
  627. }
  628. $out['errno'] = 1;
  629. $out['error'] = '';
  630. $post['logo_url'] = empty($post['logo_url']) ? $setting['logourl'] : trim($post['logo_url']);
  631. $base = new Card('GROUPON', $post);
  632. if(is_error($base->groupon->base_info)) {
  633. $out['errno'] = 0;
  634. $out['error'] = $base->groupon->base_info['message'];
  635. exit(json_encode($out));
  636. }
  637. $base->get_card()->set_deal_detail(urlencode(trim($post['deal_detail'])));
  638. $acc = new coupon($acid);
  639. $status = $acc->CreateCard($base->toJson());
  640. if(is_error($status)) {
  641. $out['errno'] = 0;
  642. $out['error'] = $status['message'];
  643. exit(json_encode($out));
  644. }
  645. $post['card_id'] = $status['card_id'];
  646. $post['date_info'] = array(
  647. 'time_type' => $post['time_type'],
  648. 'time_limit_start' => $post['time_limit[start]'],
  649. 'time_limit_end' => $post['time_limit[end]'],
  650. 'deadline' => $post['deadline'],
  651. 'limit' => $post['limit'],
  652. );
  653. $post['date_info'] = iserializer($post['date_info']);
  654. if(!empty($post['location-select'])) {
  655. $location = explode('-', $post['location-select']);
  656. $post['location_id_list'] = iserializer($location);
  657. } else {
  658. $post['location_id_list'] = iserializer(array());
  659. }
  660. $post['uniacid'] = $_W['uniacid'];
  661. $post['acid'] = $acid;
  662. $post['type'] = 'groupon';
  663. $post['extra'] = trim($post['deal_detail']);
  664. $post['is_display'] = intval($post['is_display']);
  665. empty($post['code_type']) && $post['code_type'] = 1;
  666. $post['status'] = 1;
  667. unset($post['deal_detail'],$post['time_type'],$post['limit'],$post['deadline'], $post['time_limit[start]'],$post['time_limit[end]'],$post['color-value'], $post['token'], $post['is_location'], $post['location-select']);
  668. $is_ok = pdo_fetchcolumn('SELECT id FROM ' . tablename('coupon') . ' WHERE acid = :acid AND card_id = :card_id', array(':acid' => $acid, ':card_id' => $post['card_id']));
  669. if(empty($is_ok)) {
  670. pdo_insert('coupon', $post);
  671. } else {
  672. unset($post['status']);
  673. pdo_update('coupon', $post, array('acid' => $acid, 'id' => $is_ok));
  674. }
  675. exit(json_encode($out));
  676. }
  677. }
  678. if($do == 'general_coupon') {
  679. if($op == 'post') {
  680. unset($url_name_type['URL_NAME_TYPE_VIP_SERVICE']);
  681. $id = intval($_GPC['id']);
  682. if($id > 0) {
  683. $item = coupon_fetch($id);
  684. if(is_error($item)) {
  685. message($item['message'], '', 'error');
  686. }
  687. }
  688. template('wechat/general_coupon-post');
  689. } elseif($op == 'post_save') {
  690. $post = array();
  691. foreach($_GPC['data'] as $da) {
  692. $post[$da['name']] = trim($da['value']);
  693. }
  694. $out['errno'] = 1;
  695. $out['error'] = '';
  696. $post['logo_url'] = empty($post['logo_url']) ? $setting['logourl'] : trim($post['logo_url']);
  697. $base = new Card('GENERAL_COUPON', $post);
  698. if(is_error($base->general_coupon->base_info)) {
  699. $out['errno'] = 0;
  700. $out['error'] = $base->general_coupon->base_info['message'];
  701. exit(json_encode($out));
  702. }
  703. $base->get_card()->set_default_detail(urlencode(trim($post['default_detail'])));
  704. $acc = new coupon($acid);
  705. $status = $acc->CreateCard($base->toJson());
  706. if(is_error($status)) {
  707. $out['errno'] = 0;
  708. $out['error'] = $status['message'];
  709. exit(json_encode($out));
  710. }
  711. $post['card_id'] = $status['card_id'];
  712. $post['date_info'] = array(
  713. 'time_type' => $post['time_type'],
  714. 'time_limit_start' => $post['time_limit[start]'],
  715. 'time_limit_end' => $post['time_limit[end]'],
  716. 'deadline' => $post['deadline'],
  717. 'limit' => $post['limit'],
  718. );
  719. $post['date_info'] = iserializer($post['date_info']);
  720. if(!empty($post['location-select'])) {
  721. $location = explode('-', $post['location-select']);
  722. $post['location_id_list'] = iserializer($location);
  723. } else {
  724. $post['location_id_list'] = iserializer(array());
  725. }
  726. $post['uniacid'] = $_W['uniacid'];
  727. $post['acid'] = $acid;
  728. $post['type'] = 'general_coupon';
  729. $post['extra'] = $post['default_detail'];
  730. $post['is_display'] = intval($post['is_display']);
  731. empty($post['code_type']) && $post['code_type'] = 1;
  732. $post['status'] = 1;
  733. unset($post['default_detail'],$post['time_type'],$post['limit'],$post['deadline'], $post['time_limit[start]'],$post['time_limit[end]'],$post['color-value'], $post['token'], $post['is_location'], $post['location-select']);
  734. $is_ok = pdo_fetchcolumn('SELECT id FROM ' . tablename('coupon') . ' WHERE acid = :acid AND card_id = :card_id', array(':acid' => $acid, ':card_id' => $post['card_id']));
  735. if(empty($is_ok)) {
  736. pdo_insert('coupon', $post);
  737. } else {
  738. unset($post['status']);
  739. pdo_update('coupon', $post, array('acid' => $acid, 'id' => $is_ok));
  740. }
  741. exit(json_encode($out));
  742. }
  743. }
  744. if($do == 'module') {
  745. $module = uni_modules();
  746. if(!empty($module)) {
  747. $new = array();
  748. $filter = array('system', 'activity');
  749. foreach($module as $mou) {
  750. if(in_array($mou['type'], $filter)) continue;
  751. $new[] = $mou;
  752. }
  753. }
  754. unset($module);
  755. template('wechat/module_model');
  756. die;
  757. }