classs('coupon'); if(empty($coupon_api)) { $coupon_api = new coupon(); } $is_coupon_supported = $coupon_api->isCouponSupported(); if (!empty($is_coupon_supported)) { define('COUPON_TYPE', WECHAT_COUPON); } else { define('COUPON_TYPE', SYSTEM_COUPON); } } } function activity_coupon_available(){ activity_coupon_type_init(); global $_W; $condition = array('uniacid' => $_W['uniacid'], 'is_display' => 1, 'source' => COUPON_TYPE); if (!empty($_W['current_module']['name'])) { $coupon_modules = pdo_fetchall("SELECT a.id FROM " . tablename('coupon') . " as a LEFT JOIN " . tablename('coupon_modules') . " as b ON a.id = b.couponid WHERE b.couponid is null or b.module = :module AND a.uniacid = :uniacid", array(':uniacid' => $_W['uniacid'], ':module' => 'shopping'), 'id'); if (!empty($coupon_modules)) { $condition['id'] = array_keys($coupon_modules); } } $coupons = pdo_getall('coupon', $condition); if (!empty($coupons)) { foreach ($coupons as $key => &$coupon) { $coupon = activity_coupon_info($coupon['id']); $endtime = strtotime(str_replace('.', '-', $coupon['time_limit_end'])); $time = strtotime(date('Y-m-d')); if ( ($coupon['time_type']['time_type'] == 1 && $endtime > $time) || $coupon['quantity'] <= 0) { unset($coupons[$key]); } } } return $coupons; } function activity_coupon_user_available() { global $_W; load()->model('mc'); $uid = $_W['member']['uid']; $user = mc_fetch($uid, array('groupid')); $fan = mc_fansinfo($uid, '', $_W['uniacid']); $openid = $_W['openid']; $groupid = $user['groupid']; $coupons = activity_coupon_available(); foreach ($coupons as $key => &$coupon) { $coupon = activity_coupon_info($coupon['id']); $person_total = pdo_getcolumn('coupon_record', array('uniacid' => $_W['uniacid'], 'openid' => $_W['openid'], 'couponid' => $coupon['id']), 'COUNT(*)'); if ($person_total > $coupon['get_limit']) { unset($coupons[$key]); continue; } $coupon_groups = pdo_getall('coupon_groups', array('uniacid' => $_W['uniacid'], 'couponid' => $coupon['id']), array(), 'groupid'); $coupon_groups = array_keys($coupon_groups); if (COUPON_TYPE == WECHAT_COUPON) { $fan_groups = explode(',', $fan['tag']); $group = array_intersect($coupon_groups, $fan_groups); } else { $group = pdo_get('coupon_groups', array('uniacid' => $_W['uniacid'], 'couponid' => $coupon['id'], 'groupid' => $groupid)); } if (empty($group) && !empty($coupon_groups)) { unset($coupons[$key]); continue; } } unset($coupon); return $coupons; } function activity_coupon_owned() { global $_W, $_GPC; $uid = $_W['member']['uid']; $param = array('uniacid' => $_W['uniacid'], 'openid' => $_W['openid'], 'status' => 1); $data = pdo_getall('coupon_record', $param); foreach ($data as $key => $record) { $coupon = activity_coupon_info($record['couponid']); if ($coupon['source'] != COUPON_TYPE) { unset($data[$key]); continue; } if ($coupon['status'] != '3') { pdo_delete('coupon_record', array('id' => $record['id'])); unset($data[$key]); continue; } if (is_error($coupon)) { unset($data[$key]); continue; } $modules = array(); if (!empty($coupon['modules'])) { foreach ($coupon['modules'] as $module) { $modules[] = $module['name']; } } if (!empty($modules) && !in_array($_W['current_module']['name'], $modules) && !empty($_W['current_module']['name'])) { unset($data[$key]); continue; } if (is_array($coupon['date_info']) && $coupon['date_info']['time_type'] == '2') { $starttime = $record['addtime'] + $coupon['date_info']['deadline'] * 86400; $endtime = $starttime + ($coupon['date_info']['limit'] - 1) * 86400; if ($endtime < time()) { unset($data[$key]); pdo_delete('coupon_record', array('id' => $record['id'])); continue; } else { $coupon['extra_date_info'] = '有效期:' . date('Y.m.d', $starttime) . '-' . date('Y.m.d', $endtime); } } if (is_array($coupon['date_info']) && $coupon['date_info']['time_type'] == '1') { $endtime = str_replace('.', '-', $coupon['date_info']['time_limit_end']); $endtime = strtotime($endtime); if ($endtime < time()) { pdo_delete('coupon_record', array('id' => $record['id'])); unset($data[$key]); continue; } } if ($coupon['type'] == COUPON_TYPE_DISCOUNT) { $coupon['icon'] = '
' . $coupon['extra']['discount'] * 0.1 . '
'; } elseif($coupon['type'] == COUPON_TYPE_CASH) { $coupon['icon'] = '
' . $coupon['extra']['reduce_cost'] * 0.01 . '
满' . $coupon['extra']['least_cost'] * 0.01 . '元可用
'; } elseif($coupon['type'] == COUPON_TYPE_GIFT) { $coupon['icon'] = ''; } elseif($coupon['type'] == COUPON_TYPE_GROUPON) { $coupon['icon'] = ''; } elseif($coupon['type'] == COUPON_TYPE_GENERAL) { $coupon['icon'] = ''; } $data[$key] = $coupon; $data[$key]['recid'] = $record['id']; $data[$key]['code'] = $record['code']; if ($coupon['source'] == '2') { if (empty($data[$key]['code'])) { $data[$key]['extra_ajax'] = url('entry', array('m' => 'we7_coupon', 'do' => 'activity', 'type' => 'coupon', 'op' => 'addcard')); } else { $data[$key]['extra_ajax'] = url('entry', array('m' => 'we7_coupon', 'do' => 'activity', 'type' => 'coupon', 'op' => 'opencard')); } } } return $data; } function activity_coupon_info($id) { global $_W; activity_coupon_type_init(); $id = intval($id); if (empty($_W['current_module']) && !empty($GLOBALS['site']) && is_object($GLOBALS['site']) && $GLOBALS['site'] instanceof WeModuleSite && !empty($GLOBALS['site']->module)) { $_W['current_module'] = $GLOBALS['site']->module; } $coupon = pdo_get('coupon', array('uniacid' => $_W['uniacid'], 'id' => $id)); if (empty($coupon)) { return error(1, '卡券不存在或是已经被删除'); } $coupon['date_info'] = iunserializer($coupon['date_info']); if ($coupon['date_info']['time_type'] == '1'){ $coupon['extra_date_info'] = '有效期:' . $coupon['date_info']['time_limit_start'] . '-' . $coupon['date_info']['time_limit_end']; } else { $coupon['extra_date_info'] = '有效期:领取后' . $coupon['date_info']['deadline'] . '天可用,有效期' . $coupon['date_info']['limit'] . '天'; } if ($coupon['type'] == COUPON_TYPE_DISCOUNT) { $coupon['extra'] = iunserializer($coupon['extra']); $coupon['extra_instruction'] = '凭此券消费打' . $coupon['extra']['discount'] * 0.1 . '折'; } elseif ($coupon['type'] == COUPON_TYPE_CASH) { $coupon['extra'] = iunserializer($coupon['extra']); $coupon['extra_instruction'] = '消费满' . $coupon['extra']['least_cost'] * 0.01 . '元,减' . $coupon['extra']['reduce_cost'] * 0.01 . '元'; } else { } $coupon['logo_url'] = tomedia($coupon['logo_url']); $coupon['description'] = htmlspecialchars_decode($coupon['description']); $modules = pdo_getall('coupon_modules', array('uniacid' => $_W['uniacid'], 'couponid' => $coupon['id']), array(), 'module'); if (!empty($modules)) { $unimodules = uni_modules(); foreach ($modules as $modulename => $row) { $coupon['modules'][$modulename] = array('title' => $unimodules[$modulename]['title'], 'name' => $modulename); } } $stores = pdo_getall('coupon_store', array('uniacid' => $_W['uniacid'], 'couponid' => $coupon['id']), array(), 'storeid'); if (!empty($stores)) { $stores = pdo_getall('activity_stores', array('id' => array_keys($stores)), array('business_name', 'location_id', 'id'), 'id'); $coupon['location_id_list'] = $stores; } return $coupon; } function activity_coupon_grant($id,$openid) { activity_coupon_type_init(); global $_W, $_GPC; if (empty($openid)) { $openid = $_W['openid']; if(empty($openid)) { $openid = $_W['member']['uid']; } if (empty($openid)) { return error(-1, '没有找到指定会员'); } } $fan = mc_fansinfo($openid, '', $_W['uniacid']); $openid = $fan['openid']; if (empty($openid)) { return error(-1, '兑换失败'); } $code = base_convert(md5(uniqid() . random(4)), 16, 10); $code = substr($code, 1, 16); $user = mc_fetch($fan['uid'], array('groupid')); $credit_names = array('credit1' => '积分', 'credit2' => '余额'); $coupon = activity_coupon_info($id); $pcount = pdo_fetchcolumn("SELECT count(*) FROM " . tablename('coupon_record') . " WHERE `openid` = :openid AND `couponid` = :couponid", array(':couponid' => $id, ':openid' => $openid)); $coupongroup = pdo_fetchall("SELECT * FROM " . tablename('coupon_groups') . " WHERE `couponid` = :couponid", array(':couponid' => $id), 'groupid'); $coupon_group = array_keys($coupongroup); $member = pdo_get('mc_members', array('uniacid' => $_W['uniacid'], 'uid' => $fan['uid'])); if (COUPON_TYPE == WECHAT_COUPON) { $fan_groups = $fan['tag']['tagid_list']; } else { $fan_groups[] = $user['groupid']; } $group = @array_intersect($coupon_group, $fan_groups); if (empty($coupon)) { return error(-1, '未找到指定卡券'); } elseif (empty($group) && !empty($coupon_group)) { if (!empty($fan_groups)) { return error(-1, '无权限兑换'); } else { if (is_array($coupon_group) && !in_array('0', $coupon_group)) { return error(-1, '无权限兑换'); } } } elseif (strtotime(str_replace('.', '-', $coupon['date_info']['time_limit_end'])) < strtotime(date('Y-m-d')) && $coupon['date_info']['time_type'] != 2) { return error(-1, '活动已结束'); } elseif ($coupon['quantity'] <= 0) { return error(-1, '卡券发放完毕'); } elseif ($pcount >= $coupon['get_limit'] && !empty($coupon['get_limit'])) { return error(-1, '数量超限'); } elseif (!empty($coupon['modules']) && !in_array($_W['current_module']['name'], array_keys($coupon['modules'])) && ($_GPC['c'] != 'activity' && $_GPC['c'] != 'mc' )) { return error(-1, '该模块没有此卡券发放权限'); } $give = $_W['activity_coupon_id'] ? true :false; $uid = !empty($_W['member']['uid']) ? $_W['member']['uid'] : $fan['uid']; $insert = array( 'couponid' => $id, 'uid' => $uid, 'uniacid' => $_W['uniacid'], 'openid' => $fan['openid'], 'code' => $code, 'grantmodule' => $give ? $_W['activity_coupon_id'] : $_W['current_module']['name'], 'addtime' => TIMESTAMP, 'status' => 1, 'remark' => $give ? '系统赠送' : '用户使用' . $coupon['exchange']['credit'] . $credit_names[$coupon['exchange']['credittype']] . '兑换' ); if ($coupon['source'] == 2) { $insert['card_id'] = $coupon['card_id']; $insert['code'] = ''; } pdo_insert('coupon_record', $insert); pdo_update('coupon', array('quantity' => $coupon['quantity'] - 1, 'dosage' => $coupon['dosage'] +1), array('uniacid' => $_W['uniacid'],'id' => $coupon['id'])); return true; } function activity_coupon_use($couponid, $recid, $module = 'system') { global $_W, $_GPC; $clerk_name = $_W['user']['name']; $clerk_id = $_W['user']['clerk_id']; $clerk_type = $_W['user']['type']; $store_id = $_W['user']['store_id']; $coupon_record = pdo_get('coupon_record', array('id' => $recid, 'status' => '1')); $coupon_info = activity_coupon_info(trim($couponid)); $uid = $coupon_record['uid']; load()->model('mc'); $user = mc_fetch($uid, array('groupid')); $fan = mc_fansinfo($uid, '', $_W['uniacid']); $coupongroup = pdo_fetchall("SELECT * FROM " . tablename('coupon_groups') . " WHERE `couponid` = :couponid", array(':couponid' => $couponid), 'groupid'); $coupon_group = array_keys($coupongroup); if (COUPON_TYPE == WECHAT_COUPON) { $fan_groups = $fan['tag']['tagid_list']; } else { $fan_groups[] = $user['groupid']; } $group = @array_intersect($coupon_group, $fan_groups); if (empty($coupon_info)) { return error(-1, '没有指定的卡券信息'); } if (empty($group) && !empty($coupon_group)) { return error(-1, '无法使用该卡券'); } if ($module == 'paycenter') { if (!empty($coupon_info['location_id_list'])) { $store_ids = array_keys($coupon_info['location_id_list']); } if (!empty($store_ids) && !in_array($store_id, $store_ids)) { return error(-1, '门店信息错误'); } } else { $coupon_modules = array_keys($coupon_info['modules']); if (!empty($coupon_info['modules']) && !in_array($module, $coupon_modules) && $module != 'system') { return error(-1, '非法模块'); } } $date_info = iunserializer($coupon_info['date_info']); if ($date_info['time_type'] == '1') { if (strtotime(str_replace('.', '-', $date_info['time_limit_start'])) > strtotime(date('Y-m-d'))) { return error(-1, '卡券活动尚未开始'); } elseif (strtotime(str_replace('.', '-', $date_info['time_limit_end'])) < strtotime(date('Y-m-d'))) { return error(-1, '卡券活动已经结束'); } } else { $starttime = strtotime(date('Y-m-d', $coupon_record['addtime'])) + $date_info['deadline'] * 86400; $endtime = $starttime + $date_info['limit'] * 86400; if ($starttime > strtotime(date('Y-m-d'))) { return error(-1, '卡券活动尚未开始'); } elseif ($endtime < strtotime(date('Y-m-d'))) { return error(-1, '卡券活动已经结束'); } } if (empty($coupon_record)) { return error(-1, '没有可使用的卡券'); } if ($coupon_info['source'] == '2') { load()->classs('coupon'); $coupon_api = new coupon($_W['acid']); $status = $coupon_api->ConsumeCode(array('code' => $coupon_record['code'])); if(is_error($status)) { return error('-1', $status['message']); } } $update = array( 'status' => 3, 'usetime' => TIMESTAMP, 'clerk_name' => $clerk_name, 'clerk_id' => intval($clerk_id), 'clerk_type' => $clerk_type, 'store_id' => $store_id ); pdo_update('coupon_record', $update, array('id' => $coupon_record['id'])); return true; } function activity_paycenter_coupon_available() { $coupon_owned = activity_coupon_owned(); foreach ($coupon_owned as $key => &$val) { if (empty($val['code'])) { unset($val); } if ($val['type'] == '1' || $val['type'] == '2') { $coupon_available[$val['id']] = $val; } } return $coupon_available; } function activity_goods_grant($uid, $exid){ global $_W; $exid = intval($exid); $uid = intval($uid); $exchange = activity_exchange_info($exid, $_W['uniacid']); if (empty($exchange)) { return error(-1, '没有指定的实物兑换'); } if ($exchange['starttime'] > TIMESTAMP) { return error(-1, '该实物兑换尚未开始'); } if ($exchange['endtime'] < TIMESTAMP) { return error(-1, '该实物兑换已经结束'); } $pnum = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('activity_exchange_trades') . ' WHERE uniacid = :uniacid AND uid = :uid AND exid = :exid', array(':uniacid' => $_W['uniacid'], ':uid' => $uid, ':exid' => $exid)); if ($pnum >= $exchange['pretotal']) { return error(-1, '该实物兑换每人只能使用' . $exchange['pretotal'] . '次'); } if ($exchange['num'] >= $exchange['total']) { return error(-1, '该实物兑换已兑换完'); } $data = array( 'uniacid' => $_W['uniacid'], 'uid' => $uid, 'type' => 3, 'exid' => $exid, 'createtime' => TIMESTAMP, ); pdo_insert('activity_exchange_trades', $data); $insert_id = pdo_insertid(); if (empty($insert_id)) { return error(-1, '实物兑换失败'); } $insert = array( 'tid' => $insert_id, 'uniacid' => $_W['uniacid'], 'uid' => $uid, 'status' => 0, 'exid' => $exid, 'createtime' => TIMESTAMP ); pdo_insert('activity_exchange_trades_shipping', $insert); pdo_update('activity_exchange', array('num' => $exchange['num'] + 1), array('id' => $exid, 'uniacid' => $_W['uniacid'])); return $insert_id; } function activity_exchange_info($exchangeid, $uniacid = 0){ global $_W; $uniacid = intval($uniacid) ? intval($uniacid) : $_W['uniacid']; $exchange = pdo_fetch('SELECT * FROM '.tablename('activity_exchange').' WHERE id=:id AND uniacid = :uniacid', array(':id'=>$exchangeid, ':uniacid' => $uniacid)); if (!empty($exchange) && !empty($exchange['extra'])) { $exchange['extra'] = iunserializer($exchange['extra']); } return $exchange; } function activity_exchange_shipping($id){ global $_W; return pdo_fetch('SELECT * FROM ' . tablename('activity_exchange_trades_shipping') . ' WHERE tid=:id AND uniacid=:uniacid', array(':id' => $id, ':uniacid' => $_W['uniacid'])); } function activity_type_title($type){ switch (intval($type)) { case 1: return '卡券'; case 2: return '代金券'; case 3: return '实体物品'; case 4: return '虚拟物品'; case 5: default: return '活动参与次数'; } } function activity_coupon_give() { global $_W; $openid = $_W['openid']; if (!empty($openid)) { $member = array(); $new_members = activity_get_member('new_member'); if (!empty($new_members['members'])) { $member['is_newmember'] = in_array($openid, $new_members['members'])? 'new_member' : ''; } else { $member['is_newmember'] = ''; } $old_members = activity_get_member('old_member'); if (!empty($old_members['members'])) { $member['is_oldmember'] = in_array($openid, $old_members['members'])? 'old_member' : ''; } else { $member['is_oldmember'] = ''; } $quiet_members = activity_get_member('quiet_member'); if (!empty($quiet_members['members'])) { $member['is_quietmember'] = in_array($openid, $quiet_members['members'])? 'quiet_member' : ''; } else { $member['is_quietmember'] = ''; } $activity_members = activity_get_member('activity_member'); if (!empty($activity_members['members'])) { $member['is_activitymember'] = in_array($openid, $activity_members['members'])? 'activity_member' : ''; } else { $member['is_activitymember'] = ''; } } else { $member = array(); } $coupon_activitys = pdo_getall('coupon_activity', array('uniacid' => $_W['uniacid'], 'type' => 1, 'status' => 1)); foreach ($coupon_activitys as $activity) { $is_give = pdo_get('coupon_record', array('grantmodule' => $activity['id'], 'remark' => '系统赠送')); if (!empty($is_give)) { continue; } $activity['members'] = empty($activity['members']) ? array() : iunserializer($activity['members']); if (in_array('group_member', $activity['members'])) { $groupid = pdo_fetchcolumn("SELECT groupid FROM ". tablename('mc_members')." WHERE uniacid = :uniacid AND uid = :uid", array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid'])); if ($groupid == $activity['members']['groupid']) { $member['is_groupmember'] = 'group_member'; } } if (in_array('cash_time', $activity['members'])) { $cash_member = pdo_fetch("SELECT * FROM " . tablename('mc_cash_record') . " WHERE uniacid = :uniacid AND uid = :uid AND createtime > :start AND createtime < :end", array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid'], ':start' => strtotime($activity['members']['start']), ':end' => strtotime($activity['members']['start']))); if (!empty($cash_member)) { $member['is_cashtime'] = 'cash_time'; } } if (in_array('openids', $activity['members'])) { $fan = pdo_get('mc_mapping_fans', array('uniacid' => $_W['uniacid'], 'uid' => $_W['member']['uid'])); $openid = $_W['openid']; if (in_array($openid, $activity['members']['openids'])) { $member['is_openids'] = 'openids'; } } if (array_intersect($activity['members'], $member)) { $activity['coupons'] = empty($activity['coupons']) ? array() : iunserializer($activity['coupons']); foreach ($activity['coupons'] as $id){ $coupon = activity_coupon_info($id); if(is_error($coupon)){ continue; } $_W['activity_coupon_id'] = $activity['id']; $ret = activity_coupon_grant($id, $_W['member']['uid']); unset($_W['activity_coupon_id']); if(is_error($ret)) { continue; } } unset($id); } } unset($activity); } function activity_get_member($type, $param = array()) { activity_coupon_type_init(); global $_W; $types = array('new_member', 'old_member', 'quiet_member', 'activity_member', 'group_member', 'cash_time', 'openids'); if (!in_array($type, $types)) { return error('1', '没有匹配的用户类型'); } $propertys = activity_member_propertys(); if ($type == 'new_member') { $property_time = strtotime('-' . $propertys['newmember'] . ' month', time()); $members_sql = "SELECT c.openid FROM ( SELECT a.uid FROM ". tablename('mc_members')." as a LEFT JOIN ".tablename('mc_cash_record')." as b ON a.uid = b.uid WHERE a.uniacid = :uniacid AND a.createtime > :time AND (b.createtime > :time or b.id is null) GROUP BY a.uid HAVING COUNT(*) < 2) as d LEFT JOIN ". tablename('mc_mapping_fans')." as c ON d.uid = c.uid WHERE c.openid <> ''"; $members = pdo_fetchall($members_sql, array(':uniacid' => $_W['uniacid'], ':time' => $property_time), 'openid'); } if ($type == 'old_member') { $property_time = strtotime('-' . $propertys['oldmember'] . ' month', time()); $members = pdo_fetchall("SELECT b.openid FROM ".tablename('mc_members')." as a LEFT JOIN ". tablename('mc_mapping_fans')." as b ON a.uid = b.uid WHERE a.createtime < :time AND a.uniacid = :uniacid AND b.openid <> ''", array(':time' => $property_time, ':uniacid' => $_W['uniacid']), 'openid'); } if ($type == 'activity_member') { $property_time = strtotime('-' . $propertys['activitymember'] . ' month', time()); $members = pdo_fetchall("SELECT * FROM " . tablename('mc_cash_record') . " as a LEFT JOIN ". tablename('mc_mapping_fans')." as b ON a.uid = b.uid WHERE a.uniacid = :uniacid AND a.createtime > :time AND b.openid <> '' GROUP BY a.uid HAVING COUNT(*) > 2", array(':uniacid' => $_W['uniacid'], ':time' => $property_time), 'openid'); } if ($type == 'quiet_member') { $property_time = strtotime('-' . $propertys['quietmember'] . ' month', time()); $members = pdo_fetchall("SELECT a.openid FROM " . tablename('mc_mapping_fans') . " as a LEFT JOIN ".tablename('mc_cash_record')." as b ON a.uid = b.uid WHERE a.uniacid = :uniacid AND b.id is null GROUP BY a.uid ", array(':uniacid' => $_W['uniacid']), 'openid'); $member = pdo_fetchall("SELECT a.openid FROM " . tablename('mc_mapping_fans') . " as a LEFT JOIN ".tablename('mc_cash_record')." as b ON a.uid = b.uid WHERE a.uniacid = :uniacid AND b.createtime > :time GROUP BY a.uid ", array(':uniacid' => $_W['uniacid'], ':time' => $property_time), 'openid'); if (!empty($member)) { foreach ($member as $key => $mem) { unset($members[$key]); } } } if ($type == 'group_member') { if (empty($param)) { return error(1, '请选择会员组'); } if (COUPON_TYPE == WECHAT_COUPON) { $members = pdo_getall('mc_mapping_fans', array('uniacid' => $_W['uniacid']), array(), 'openid'); foreach ($members as $key => &$fan) { $fan['groupid'] = explode(',', $fan['groupid']); if (!is_array($fan['groupid']) || !in_array($param['groupid'], $fan['groupid'])) { unset($members[$key]); } } } else { $members = pdo_fetchall('SELECT b.openid FROM '.tablename('mc_members')." as a LEFT JOIN ". tablename('mc_mapping_fans')." as b ON a.uid = b.uid WHERE a.groupid = :groupid AND a.uniacid = :uniacid AND b.openid <> ''", array(':groupid' => $param['groupid'], ':uniacid' => $_W['uniacid']), 'openid'); } } if ($type == 'cash_time') { $members = pdo_fetchall("SELECT a.openid FROM ". tablename('mc_mapping_fans')." as a LEFT JOIN ".tablename('mc_cash_record')." as b ON a.uid = b.uid WHERE a.uniacid = :uniacid AND b.createtime >= :start AND b.createtime <= :end GROUP BY a.openid", array(':uniacid' => $_W['uniacid'], ':start' => $param['start'], ':end' => $param['end']), 'openid'); } if ($type == 'openids') { $members = json_decode($_COOKIE['fans_openids'.$_W['uniacid']]); } if (is_array($members)) { $member = $type == 'openids' ? $members : array_keys($members); $members = array(); $members['members'] = $member; $members['total'] = count($members['members']); } else { $members = array(); } return $members; } function activity_coupon_sync() { global $_W; $cachekey = cache_system_key('couponsync', array('uniacid' => $_W['uniacid'])); $cache = cache_load($cachekey); if (!empty($cache) && $cache['expire'] > time()) { return false; } $coupon_api = new coupon($_W['acid']); $cards = pdo_getall('coupon', array('acid' => $_W['acid']), array('id', 'status', 'card_id', 'acid')); foreach ($cards as $val) { $card = $coupon_api -> fetchCard($val['card_id']); if (is_error($card)) { return(error(-1, $card['message'])); } $type = strtolower($card['card_type']); $coupon_status = activity_coupon_status(); $status = $coupon_status[$card[$type]['base_info']['status']]; pdo_update('coupon', array('status' => $status), array('id' => $val['id'])); } cache_write($cachekey, array('expire' => time() + 1800)); return true; } function activity_coupon_download($card_list) { global $_W; $coupon_api = new coupon($_W['acid']); $local_coupon_list = pdo_getall('coupon', array('acid' => $_W['acid'], 'source' => 2), array('id', 'status', 'card_id', 'type'), 'card_id'); if (!empty($card_list['card_id_list'])) { foreach ($card_list['card_id_list'] as $card_id) { $coupon_info = $coupon_api->fetchCard($card_id); if (is_error($coupon_info)) { return(error(-1, $coupon_info['message'])); } if ($coupon_info['card_type'] == 'DISCOUNT') { $type = 1; } elseif ($coupon_info['card_type'] == 'CASH') { $type = 2; } elseif ($coupon_info['card_type'] == 'GENERAL_COUPON') { $type = 3; } elseif ($coupon_info['card_type'] == 'GIFT') { $type = 4; } elseif ($coupon_info['card_type'] == 'GROUPON') { $type = 5; } $coupon_type_label = activity_coupon_type_label($type); $coupon = Card::create($type); $coupon->logo_url = $coupon_info[$coupon_type_label[1]]['base_info']['logo_url']; $coupon->brand_name = $coupon_info[$coupon_type_label[1]]['base_info']['brand_name']; $coupon->title = $coupon_info[$coupon_type_label[1]]['base_info']['title']; $coupon->sub_title = $coupon_info[$coupon_type_label[1]]['base_info']['sub_title']; $coupon_colors = array_flip(activity_coupon_colors()); $coupon->color = $coupon_colors[$coupon_info[$coupon_type_label[1]]['base_info']['color']]; $coupon->notice = $coupon_info[$coupon_type_label[1]]['base_info']['notice']; $coupon->service_phone = $coupon_info[$coupon_type_label[1]]['base_info']['service_phone']; $coupon->description = $coupon_info[$coupon_type_label[1]]['base_info']['description']; $coupon->get_limit = $coupon_info[$coupon_type_label[1]]['base_info']['get_limit']; $coupon->can_share = $coupon_info[$coupon_type_label[1]]['base_info']['can_share']; $coupon->can_give_friend = $coupon_info[$coupon_type_label[1]]['base_info']['can_give_friend']; if ($coupon_info[$coupon_type_label[1]]['base_info']['date_info']['type'] == 'DATE_TYPE_FIX_TIME_RANGE') { $coupon->date_info = array( 'type' => 'DATE_TYPE_FIX_TIME_RANGE', 'begin_timestamp' => $coupon_info[$coupon_type_label[1]]['base_info']['date_info']['begin_timestamp'], 'end_timestamp' => $coupon_info[$coupon_type_label[1]]['base_info']['date_info']['end_timestamp'], ); } elseif ($coupon_info[$coupon_type_label[1]]['base_info']['date_info']['type'] == 'DATE_TYPE_FIX_TERM') { $coupon->setDateinfoFix($coupon_info[$coupon_type_label[1]]['base_info']['date_info']['fixed_begin_term'], $coupon_info[$coupon_type_label[1]]['base_info']['date_info']['fixed_term']); } if (!empty($coupon_info[$coupon_type_label[1]]['base_info']['promotion_url_name']) && !empty($coupon_info[$coupon_type_label[1]]['base_info']['promotion_url'])) { $coupon->setPromotionMenu($coupon_info[$coupon_type_label[1]]['base_info']['promotion_url_name'], $coupon_info[$coupon_type_label[1]]['base_info']['promotion_url_sub_title'], $coupon_info[$coupon_type_label[1]]['base_info']['promotion_url']); } if (!empty($coupon_info[$coupon_type_label[1]]['base_info']['location_id_list'])) { $coupon->location_id_list = $coupon_info[$coupon_type_label[1]]['base_info']['location_id_list']; } $coupon->setCustomMenu('立即使用', '', murl('entry', array('m' => 'paycenter', 'do' => 'consume'), true, true)); $coupon->setQuantity($coupon_info[$coupon_type_label[1]]['base_info']['sku']['quantity']); $coupon->code_type = $coupon_info[$coupon_type_label[1]]['base_info']['code_type']; $coupon->discount = $coupon_info[$coupon_type_label[1]]['discount']; $coupon->least_cost = $coupon_info[$coupon_type_label[1]]['least_cost']; $coupon->reduce_cost = $coupon_info[$coupon_type_label[1]]['reduce_cost']; $coupon->gift = $coupon_info[$coupon_type_label[1]]['gift']; $coupon->deal_detail = $coupon_info[$coupon_type_label[1]]['deal_detail']; $coupon->default_detail = $coupon_info[$coupon_type_label[1]]['default_detail']; $coupon->card_id = $coupon_info[$coupon_type_label[1]]['base_info']['id']; $coupon->source = 2; $coupon_status = activity_coupon_status(); $coupon->status = $coupon_status[$coupon_info[$coupon_type_label[1]]['base_info']['status']]; $coupon_insert_data = $coupon->getCardArray(); $coupon_insert_data['uniacid'] = $_W['uniacid']; $coupon_insert_data['acid'] = $_W['acid']; if (empty($local_coupon_list[$coupon_insert_data['card_id']])) { pdo_insert('coupon', $coupon_insert_data); } } } return true; } function activity_store_sync() { global $_W; load()->classs('coupon'); $cachekey = cache_system_key('storesync', array('uniacid' => $_W['uniacid'])); $cache = cache_load($cachekey); if (!empty($cache) && $cache['expire'] > time()) { return false; } $stores = pdo_getall('activity_stores', array('uniacid' => $_W['uniacid'], 'source' => 2)); foreach ($stores as $val) { if ($val['status'] == 3) { continue; } $acc = new coupon($_W['acid']); $location = $acc->LocationGet($val['location_id']); if(is_error($location)) { return error(-1, $location['message']); } $location = $location['business']['base_info']; $status2local = array('', 3, 2, 1, 3); $location['status'] = $status2local[$location['available_state']]; $location['location_id'] = $location['poi_id']; $category_temp = explode(',', $location['categories'][0]); $location['category'] = iserializer(array('cate' => $category_temp[0], 'sub' => $category_temp[1], 'clas' => $category_temp[2])); $location['photo_list'] = iserializer($location['photo_list']); unset($location['categories'], $location['poi_id'], $location['update_status'], $location['available_state'],$location['offset_type'], $location['sid'], $location['type']); pdo_update('activity_stores', $location, array('uniacid' => $_W['uniacid'], 'id' => $val['id'])); } cache_write($cachekey, array('expire' => time() + 1800)); return true; } function activity_coupon_colors() { $colors = array( 'Color010' => '#55bd47', 'Color020' => '#10ad61', 'Color030' => '#35a4de', 'Color040' => '#3d78da', 'Color050' => '#9058cb', 'Color060' => '#de9c33', 'Color070' => '#ebac16', 'Color080' => '#f9861f', 'Color081' => '#f08500', 'Color082' => '#a9d92d', 'Color090' => '#e75735', 'Color100' => '#d54036', 'Color101' => '#cf3e36', 'Color102' => '#5e6671', ); return $colors; } function activity_coupon_type_label($type = '') { $types = array( COUPON_TYPE_DISCOUNT => array('折扣券', 'discount'), COUPON_TYPE_CASH => array('代金券', 'cash'), COUPON_TYPE_GIFT => array('礼品券', 'gift'), COUPON_TYPE_GROUPON => array('团购券', 'groupon'), COUPON_TYPE_GENERAL => array('优惠券', 'general_coupon'), ); return $types[$type] ? $types[$type] : $types; } function activity_shipping_status_title($status){ if ($status == 0) { return '正常'; } elseif ($status == 1) { return '已发货'; } elseif ($status == 2) { return '已完成'; } elseif ($status == -1) { return '关闭'; } } function activity_coupon_status() { return array( 'CARD_STATUS_NOT_VERIFY' => 1, 'CARD_STATUS_VERIFY_FAIL' => 2, 'CARD_STATUS_VERIFY_OK' => 3, 'CARD_STATUS_USER_DELETE' => 4, 'CARD_STATUS_DELETE' => 4, 'CARD_STATUS_USER_DISPATCH' => 5, 'CARD_STATUS_DISPATCH' => 5, ); } function activity_member_propertys() { global $_W; $current_property_info = pdo_get('mc_member_property', array('uniacid' => $_W['uniacid'])); if (!empty($current_property_info)) { $propertys = json_decode($current_property_info['property'], true); } else { $propertys = array( 'newmember' => '1', 'oldmember' => '2', 'activitymember' => '1', 'quietmember' => '1' ); } return $propertys; }