You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
470 lines
17 KiB
470 lines
17 KiB
<?php
|
|
defined('IN_IA') or exit('Access Denied');
|
|
|
|
class Halfcard
|
|
{
|
|
|
|
static function checkFollow($cardid)
|
|
{
|
|
global $_W;
|
|
if ($_W['fans']['follow'] != 1) {
|
|
$showurl = !empty($_W['wlsetting']['share']['gz_image']) ? $_W['wlsetting']['share']['gz_image'] : 'qrcode_' . $_W['acid'] . '.jpg';
|
|
pdo_insert('wlmerchant_halfcard_qrscan', array('uniacid' => $_W['uniacid'], 'openid' => $_W['openid'], 'scantime' => time(), 'cardid' => $cardid));
|
|
include wl_template('newcard/qrcode');
|
|
exit;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 保存特权内容
|
|
*
|
|
* @access static
|
|
* @name saveHalfcard
|
|
* @param mixed 参数一的说明
|
|
* @return array
|
|
*/
|
|
static function saveHalfcard($halfcard, $param = array())
|
|
{
|
|
global $_W;
|
|
if (!is_array($halfcard)) return FALSE;
|
|
$halfcard['uniacid'] = $_W['uniacid'];
|
|
$halfcard['aid'] = $_W['aid'];
|
|
if (empty($param)) {
|
|
pdo_insert(PDO_NAME . 'halfcardlist', $halfcard);
|
|
return pdo_insertid();
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
* 删除特权券
|
|
*
|
|
* @access static
|
|
* @name deleteOrder
|
|
* @param $params 修改参数
|
|
* @param $where 修改条件
|
|
* @return array
|
|
*/
|
|
static function deleteHalfcard($where)
|
|
{
|
|
$res = pdo_delete(PDO_NAME . 'halfcardlist', $where);
|
|
if ($res) {
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* //TODO:删除特权券用户记录删除特权券用户记录
|
|
*
|
|
* @access static
|
|
* @name deleteOrder
|
|
* @param $params 修改参数
|
|
* @param $where 修改条件
|
|
* @return array
|
|
*/
|
|
static function deleteHalfcardRecord($where)
|
|
{
|
|
$res = pdo_delete(PDO_NAME . 'timecardrecord', $where);
|
|
if ($res) {
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取单条特权券内容
|
|
*
|
|
* @access static
|
|
* @name getSingleOrder
|
|
* @param $where 查询条件
|
|
* @param $select 查询参数
|
|
* @return array
|
|
*/
|
|
static function getSingleHalfcard($id, $select, $where = array())
|
|
{
|
|
$where['id'] = $id;
|
|
return Util::getSingelData($select, PDO_NAME . 'halfcardlist', $where);
|
|
}
|
|
|
|
/**
|
|
* 获取单条用户记录
|
|
*
|
|
* @access static
|
|
* @name getSingleOrder
|
|
* @param $where 查询条件
|
|
* @param $select 查询参数
|
|
* @return array
|
|
*/
|
|
static function getSingleMember($id, $select, $where = array())
|
|
{
|
|
$where['mid'] = $id;
|
|
return Util::getSingelData($select, PDO_NAME . 'halfcardmember', $where);
|
|
}
|
|
|
|
/**
|
|
* 更新特权券母类
|
|
*
|
|
* @access static
|
|
* @name updateCoupons
|
|
* @param $params 修改参数
|
|
* @param $where 修改条件
|
|
* @return array
|
|
*/
|
|
static function updateHalfcard($params, $where)
|
|
{
|
|
$res = pdo_update(PDO_NAME . 'halfcardlist', $params, $where);
|
|
if ($res) {
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取多条特权优惠记录
|
|
*
|
|
* @access static
|
|
* @name getNumRecord
|
|
* @param $where 查询条件
|
|
* @param $select 查询参数
|
|
* @return array
|
|
*/
|
|
static function getNumRecord($select, $where, $order, $pindex, $psize, $ifpage)
|
|
{
|
|
$goodsInfo = Util::getNumData($select, PDO_NAME . 'halfcardrecord', $where, $order, $pindex, $psize, $ifpage);
|
|
$newGoodInfo = $newGoodInfo ? $newGoodInfo : array();
|
|
return array($newGoodInfo, $goodsInfo[1], $goodsInfo[2]) ? array($newGoodInfo, $goodsInfo[1], $goodsInfo[2]) : array();
|
|
}
|
|
|
|
//判断会员等级是否有权限购买商品
|
|
static function checklevel($mid, $levels)
|
|
{
|
|
global $_W;
|
|
$now = time();
|
|
if ($_W['wlsetting']['halfcard']['halfcardtype'] == 2) {
|
|
$cards = pdo_fetchall("SELECT levelid FROM " . tablename('wlmerchant_halfcardmember') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$mid} AND aid = {$_W['aid']} AND expiretime > {$now} AND disable != 1");
|
|
} else {
|
|
$cards = pdo_fetchall("SELECT levelid FROM " . tablename('wlmerchant_halfcardmember') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$mid} AND expiretime > {$now} AND disable != 1");
|
|
}
|
|
$flag = 0;
|
|
if ($cards) {
|
|
foreach ($cards as $key => $cs) {
|
|
if (in_array($cs['levelid'], $levels)) {
|
|
$flag = 1;
|
|
}
|
|
}
|
|
}
|
|
return $flag;
|
|
}
|
|
|
|
|
|
/**
|
|
* 获取多条店铺记录
|
|
*
|
|
* @access static
|
|
* @name getNumCouponOrder
|
|
* @param $where 查询条件
|
|
* @param $select 查询参数
|
|
* @return array
|
|
*/
|
|
static function getNumstore($select, $where, $order, $pindex, $psize, $ifpage)
|
|
{
|
|
$goodsInfo = Util::getNumData($select, PDO_NAME . 'merchantdata', $where, $order, $pindex, $psize, $ifpage);
|
|
return $goodsInfo;
|
|
}
|
|
|
|
static function getstores($locations, $lng, $lat)
|
|
{
|
|
global $_W;
|
|
if (empty($lat) || empty($lng)) return false;
|
|
foreach ($locations as $key => $val) {
|
|
$loca = unserialize($val['location']);
|
|
$locations[$key]['distance'] = Store::getdistance($loca['lng'], $loca['lat'], $lng, $lat);
|
|
}
|
|
//排序
|
|
for ($i = 0; $i < count($locations) - 1; $i++) {
|
|
for ($j = 0; $j < count($locations) - 1 - $i; $j++) {
|
|
if ($locations[$j]['distance'] > $locations[$j + 1]['distance']) {
|
|
$temp = $locations[$j + 1];
|
|
$locations[$j + 1] = $locations[$j];
|
|
$locations[$j] = $temp;
|
|
}
|
|
}
|
|
}
|
|
foreach ($locations as $key => $value) {
|
|
if ($value['distance'] > 1000) {
|
|
$locations[$key]['distance'] = (floor(($value['distance'] / 1000) * 10) / 10) . "km";
|
|
} else {
|
|
$locations[$key]['distance'] = round($value['distance']) . "m";
|
|
}
|
|
}
|
|
return $locations;
|
|
}
|
|
|
|
/**
|
|
* 异步支付结果回调 ,处理业务逻辑
|
|
*
|
|
* @access public
|
|
* @name
|
|
* @param mixed 参数一的说明
|
|
* @return array
|
|
*/
|
|
static function payHalfcardNotify($params)
|
|
{
|
|
global $_W;
|
|
Util::wl_log('vip_notify', PATH_DATA . "merchant/data/", $params); //写入异步日志记录
|
|
$data = self::getVipPayData($params); //得到支付参数,处理代付
|
|
pdo_update(PDO_NAME . 'halfcard_record', $data, array('orderno' => $params['tid'])); //更新订单状态
|
|
|
|
$order_out = pdo_get(PDO_NAME . 'halfcard_record', array('orderno' => $params['tid']));
|
|
$memberData = array(
|
|
'halfcardstatus' => 1,
|
|
'lasthalfcardtime' => $order_out['limittime'],
|
|
'areaid' => $order_out['areaid'],
|
|
'aid' => $order_out['aid']
|
|
);
|
|
pdo_update(PDO_NAME . 'member', $memberData, array('id' => $order_out['mid']));
|
|
}
|
|
|
|
/**
|
|
* 函数的含义说明
|
|
*
|
|
* @access public
|
|
* @name 方法名称
|
|
* @param mixed 参数一的说明
|
|
* @return array
|
|
*/
|
|
static function payHalfcardReturn($params)
|
|
{
|
|
global $_W;
|
|
Util::wl_log('Vip_return', PATH_DATA . "merchant/data/", $params);//写入日志记录
|
|
$order_out = pdo_get(PDO_NAME . 'halfcard_record', array('orderno' => $params['tid']), array('id'));
|
|
header("location:" . h5_url('pages/mainPages/memberCard/getMembership/getMembership'));
|
|
}
|
|
|
|
/**
|
|
* 获取多条活动数据
|
|
*
|
|
* @access static
|
|
* @name getNumActive
|
|
* @param $where 查询条件
|
|
* @param $select 查询参数
|
|
* @return array
|
|
*/
|
|
static function getNumActive($select, $where, $order, $pindex, $psize, $ifpage)
|
|
{
|
|
$activeInfo = Util::getNumData($select, PDO_NAME . 'halfcardlist', $where, $order, $pindex, $psize, $ifpage);
|
|
return $activeInfo;
|
|
}
|
|
|
|
|
|
static function getNumPackActive($select, $where, $order, $pindex, $psize, $ifpage)
|
|
{
|
|
$activeInfo = Util::getNumData($select, PDO_NAME . 'package', $where, $order, $pindex, $psize, $ifpage);
|
|
return $activeInfo;
|
|
}
|
|
|
|
/**
|
|
* 获取多条活动数据1
|
|
*
|
|
* @access static
|
|
* @name getNumActive
|
|
* @param $where 查询条件
|
|
* @param $select 查询参数
|
|
* @return array
|
|
*/
|
|
static function getNumActive1($select, $where, $order, $pindex, $psize, $ifpage)
|
|
{
|
|
$activeInfo = Util::getNumData($select, PDO_NAME . 'halfcardrecord', $where, $order, $pindex, $psize, $ifpage);
|
|
return $activeInfo;
|
|
}
|
|
|
|
static function getNumActive2($select, $where, $order, $pindex, $psize, $ifpage)
|
|
{
|
|
$activeInfo = Util::getNumData($select, PDO_NAME . 'timecardrecord', $where, $order, $pindex, $psize, $ifpage);
|
|
return $activeInfo;
|
|
}
|
|
|
|
static function getNumhalfcardmember($select, $where, $order, $pindex, $psize, $ifpage)
|
|
{
|
|
$activeInfo = Util::getNumData($select, PDO_NAME . 'halfcardmember', $where, $order, $pindex, $psize, $ifpage);
|
|
return $activeInfo;
|
|
}
|
|
|
|
static function getNumhalfcardpay($select, $where, $order, $pindex, $psize, $ifpage)
|
|
{
|
|
$activeInfo = Util::getNumData($select, PDO_NAME . 'halfcard_record', $where, $order, $pindex, $psize, $ifpage);
|
|
return $activeInfo;
|
|
}
|
|
|
|
static function doTask()
|
|
{
|
|
global $_W, $_GPC;
|
|
//自动过期礼包特权
|
|
$nowtime = time();
|
|
pdo_update('wlmerchant_package', array('status' => 0), array('status' => 1, 'packtimestatus' => 1, 'dateendtime <' => $nowtime));
|
|
pdo_update('wlmerchant_package', array('status' => 0), array('status' => 1, 'packtimestatus' => 1, 'datestarttime >' => $nowtime));
|
|
pdo_update('wlmerchant_halfcardlist', array('status' => 0), array('status' => 1, 'timingstatus' => 1, 'endtime <' => $nowtime));
|
|
pdo_update('wlmerchant_halfcardlist', array('status' => 0), array('status' => 1, 'timingstatus' => 1, 'starttime >' => $nowtime));
|
|
//自动上架礼包
|
|
pdo_update('wlmerchant_package', array('status' => 1), array('status' => 0, 'packtimestatus' => 1, 'datestarttime <' => $nowtime, 'dateendtime >' => $nowtime));
|
|
pdo_update('wlmerchant_halfcardlist', array('status' => 1), array('status' => 0, 'timingstatus' => 1, 'starttime <' => $nowtime, 'endtime >' => $nowtime));
|
|
}
|
|
|
|
/**
|
|
* Comment: 获取用户正在使用的一张会员卡信息
|
|
* Author: zzw
|
|
* Date: 2019/8/19 15:15
|
|
* @return array|bool
|
|
*/
|
|
public static function getUserMemberCardInfo()
|
|
{
|
|
global $_W;
|
|
$time = time();
|
|
$set = $_W['wlsetting']['halfcard'];
|
|
$defaultlevel = $_W['wlsetting']['halflevel'];
|
|
$isVip = WeliamWeChat::VipVerification($_W['mid'], true);
|
|
$settings = Setting::wlsetting_read('halfcard');
|
|
if ($set['halfcardtype'] == 2) {
|
|
$info = pdo_fetch("SELECT id,expiretime,username,levelid FROM " . tablename(PDO_NAME . "halfcardmember") . "WHERE aid = {$_W['aid']} AND uniacid = {$_W['uniacid']} AND mid = {$_W['mid']} AND expiretime > {$time} AND disable != 1 ");
|
|
} else {
|
|
$info = pdo_fetch("SELECT id,expiretime,username,levelid FROM " . tablename(PDO_NAME . "halfcardmember") . "WHERE uniacid = {$_W['uniacid']} AND mid = {$_W['mid']} AND expiretime > {$time} AND disable != 1 ");
|
|
}
|
|
$info['isVip'] = $isVip;
|
|
//默认面
|
|
$defaultCardImg = tomedia('/addons/{MODULE_NAME}/h5/resource/image/defaulthalfimg.png');
|
|
if ($info['levelid'] > 0 && $isVip) {
|
|
//会员并且会员等级不是最低级
|
|
$level = pdo_get(PDO_NAME . "halflevel", array('id' => $info['levelid']), array('name', 'cardimg','army'));
|
|
$info['name'] = $level['name'];
|
|
$info['levelarmy'] = $level['army'];
|
|
$info['cardimg'] = !empty($level['cardimg']) ? tomedia($level['cardimg']) : tomedia($settings['cardimg']);
|
|
} else if ($isVip) {
|
|
//会员 但是会员等级为默认等级
|
|
$info['name'] = $defaultlevel['name'];
|
|
$info['levelarmy'] = 0;
|
|
$info['cardimg'] = !empty($defaultlevel['cardimg']) ? tomedia($defaultlevel['cardimg']) : tomedia($settings['cardimg']);
|
|
} else {
|
|
//不是会员
|
|
$info['name'] = '';
|
|
$info['levelarmy'] = 0;
|
|
$info['cardimg'] = tomedia($settings['cardimg']) ?: $defaultCardImg;
|
|
}
|
|
|
|
$info['cardimg'] = $info['cardimg'] ? tomedia($info['cardimg']) : $defaultCardImg;
|
|
$info['endtime'] = date('Y-m-d', $info['expiretime']);
|
|
$info['cardimg'] = $info['cardimg'] ? tomedia($info['cardimg']) : tomedia($set['cardimg']);
|
|
$info['avatar'] = $_W['wlmember']['avatar'];
|
|
//获取已节省的信息
|
|
$base = Setting::wlsetting_read('halfcard');
|
|
//$info['is_statistics'] = $info['id'] > 0 ? $base['statisticsdiv'] : 0 ;//0=隐藏;1=显示
|
|
if ($info['id'] > 0 && $base['statisticsdiv']) {
|
|
$where['mid'] = $_W['mid'];
|
|
$where['uniacid'] = $_W['uniacid'];
|
|
$totalPrice = pdo_getcolumn(PDO_NAME . 'timecardrecord', $where, array("SUM(ordermoney)"));
|
|
$price = pdo_getcolumn(PDO_NAME . 'timecardrecord', $where, array("SUM(realmoney)"));
|
|
$savePrice = $totalPrice - $price;
|
|
$info['total_price'] = sprintf("%.2f", $totalPrice) ?: 0.00;//消费金额
|
|
$info['price'] = sprintf("%.2f", $savePrice) ?: 0.00;//节省金额
|
|
}
|
|
//获取实卡编号
|
|
$info['cardsn'] = pdo_getcolumn(PDO_NAME . 'halfcard_realcard', array('cardid' => $info['id']), 'cardsn');
|
|
if (!$info['cardsn']) {
|
|
$info['cardsn'] = 0;
|
|
}
|
|
//N814定制项目
|
|
if (file_exists(PATH_MODULE . 'N814.log')) {
|
|
$info['banknum'] = $_W['wlmember']['card_number'];
|
|
}
|
|
return is_array($info) ? $info : [];
|
|
}
|
|
|
|
/**
|
|
* Comment: 电商联盟定制 同步会员卡到另一个模块
|
|
* Author: wlf
|
|
* Date: 2020/04/16 16:46
|
|
* @return array|bool
|
|
*/
|
|
static function toHccardMode($mid, $username, $mobile)
|
|
{
|
|
global $_W;
|
|
$member = pdo_get('wlmerchant_member', array('id' => $mid), array('nickname', 'uid', 'uniacid', 'avatar', 'realname', 'mobile', 'openid'));
|
|
if (!empty($member['openid'])) {
|
|
$hcmember = pdo_get('hccard_user', array('openid' => $member['openid']), array('id', 'username', 'tel'));
|
|
if (!empty($hcmember['id'])) {
|
|
$update = ['is_pay' => 1];
|
|
if (empty($hcmember['username'])) {
|
|
$update['username'] = $username;
|
|
}
|
|
if (empty($hcmember['tel'])) {
|
|
$update['tel'] = $mobile;
|
|
}
|
|
pdo_update('hccard_user', $update, array('id' => $hcmember['id']));
|
|
} else {
|
|
$gender = pdo_getcolumn('mc_members', array('uid' => $member['uid']), 'gender');
|
|
$data = [
|
|
'uniacid' => $member['uniacid'],
|
|
'openid' => $member['openid'],
|
|
'nickname' => $member['nickname'],
|
|
'headimgurl' => tomedia($member['avatar']),
|
|
'username' => $username,
|
|
'tel' => $mobile,
|
|
'createtime' => time(),
|
|
'level' => 2,
|
|
'gender' => $gender,
|
|
'is_pay' => 1
|
|
];
|
|
pdo_insert('hccard_user', $data);
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* Comment: 获取激活码根据关键字分组后的信息
|
|
* Author: zzw
|
|
* Date: 2020/9/14 15:56
|
|
* @return array|bool|mixed
|
|
*/
|
|
public static function getGroupList(){
|
|
global $_W,$_GPC;
|
|
//条件生成
|
|
$where = " WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND remark <> '' AND status = 0 ";
|
|
//信息获取
|
|
$field = "remark,count(*) as total";
|
|
$sql = "SELECT {$field} FROM ".tablename(PDO_NAME."token");
|
|
$order = " ORDER BY id DESC ";
|
|
$group = " GROUP BY remark ";
|
|
$list = pdo_fetchall($sql.$where.$group.$order);
|
|
|
|
return $list;
|
|
}
|
|
/**
|
|
* Comment: 根据关键字获取某个激活码序列中的一个激活码
|
|
* Author: zzw
|
|
* Date: 2020/9/21 14:42
|
|
* @param $keyword
|
|
* @return array
|
|
*/
|
|
public static function getActivationCode($keyword){
|
|
global $_W;
|
|
//判断是否存在关键字信息
|
|
if (!$keyword) return error(0 , '不存在的激活码序列');
|
|
//判断是否存在激活码
|
|
$sql = "SELECT id,`number` FROM " . tablename(PDO_NAME . "token")
|
|
. " WHERE remark = '{$keyword}' AND status = 0 AND uniacid = {$_W['uniacid']} "
|
|
. " ORDER BY createtime ASC,id ASC ";
|
|
$codeInfo = pdo_fetch($sql);
|
|
if (!$codeInfo) return error(0 , '不存在的激活码序列');
|
|
//锁定当前激活码
|
|
$res = pdo_update(PDO_NAME . "token" , ['status' => 2] , ['id' => $codeInfo['id']]);
|
|
if (!$res) return error(0 , '不存在的激活码序列');
|
|
//返回激活码信息
|
|
return $codeInfo;
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|