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.
649 lines
30 KiB
649 lines
30 KiB
<?php
|
|
defined('IN_IA') or exit('Access Denied');
|
|
class Member {
|
|
|
|
/**
|
|
* 根据openid获取用户信息
|
|
* @param $openid
|
|
* @return array
|
|
*/
|
|
static function wl_fans_info($openid) {
|
|
load()->model('mc');
|
|
$fansinfo = mc_fansinfo($openid);
|
|
if (empty($fansinfo)) {
|
|
$fansinfo = mc_init_fans_info($openid, true);
|
|
}
|
|
$userinfo = array(
|
|
'uid' => $fansinfo['uid'],
|
|
'openid' => $fansinfo['openid'],
|
|
'nickname' => $fansinfo['nickname'],
|
|
'avatar' => $fansinfo['avatar'],
|
|
'unionid' => $fansinfo['unionid']
|
|
);
|
|
return $userinfo;
|
|
}
|
|
|
|
/**
|
|
* 获取用户信息
|
|
* @param $mcinfo 用户id|用户openid|条件
|
|
* @param array $fields 字段,留空返回全部信息
|
|
* @param bool $credit 是否需要返回微擎用户积分余额
|
|
* @return bool
|
|
*/
|
|
static function wl_member_get($mcinfo, $fields = [], $credit = true) {
|
|
global $_W;
|
|
if (is_array($mcinfo)) {
|
|
//$where = $mcinfo;
|
|
$member = pdo_get(PDO_NAME . 'member', array_merge($mcinfo, array('uniacid' => $_W['uniacid'])), $fields);
|
|
} else {
|
|
$field = is_array($fields) && count($fields) > 0 ? implode(',',$fields) : '*';
|
|
$member = pdo_fetch("SELECT {$field} FROM ".tablename(PDO_NAME."member")
|
|
." WHERE id = {$mcinfo} OR openid = '{$mcinfo}' ");
|
|
//$where = intval($mcinfo) ? ['id' => $mcinfo] : ['openid' => $mcinfo];
|
|
}
|
|
//$member = pdo_get(PDO_NAME . 'member', array_merge($where, array('uniacid' => $_W['uniacid'])), $fields);
|
|
// if(!empty($member['openid']) && $_W['source'] == 1){
|
|
// $newinfo = self::wl_fans_info($member['openid']);
|
|
// $member['avatar'] = $newinfo['avatar'];
|
|
// $member['nickname'] = $newinfo['nickname'];
|
|
// pdo_update(PDO_NAME . 'member',array('avatar' => $newinfo['avatar'],'nickname' => $newinfo['nickname']),array('openid' => $member['openid']));
|
|
// }
|
|
if (!empty($member['uid']) && $credit) {
|
|
load()->model('mc');
|
|
$credits = pdo_get('mc_members', array('uid' => $member['uid']), array('credit1', 'credit2'));
|
|
$member['credit1'] = $credits['credit1'];
|
|
$member['credit2'] = $credits['credit2'];
|
|
}
|
|
if (!empty($member['nickname']) && !empty($member['encodename'])) {
|
|
$member['nickname'] = base64_decode($member['encodename']);
|
|
}
|
|
return $member;
|
|
}
|
|
|
|
/**
|
|
* 创建新用户
|
|
* @param $userinfo 用户信息
|
|
* @param string $channel 渠道wechat(微信公众号)wxapp(微信小程序)webapp(打包APP)mobile(H5手机号)
|
|
* @return array|bool
|
|
*/
|
|
static function wl_member_create($userinfo, $channel = 'wechat') {
|
|
global $_W;
|
|
$userinfo['encodename'] = base64_encode($userinfo['nickname']);
|
|
$channels = ['wechat' => 'openid', 'wxapp' => 'wechat_openid', 'webapp' => 'webapp_openid', 'mobile' => 'mobile'];
|
|
if (!in_array($channel, array_keys($channels))) {
|
|
return error(1, '渠道错误,请检查后重试');
|
|
}
|
|
|
|
$uidstr = $channels[$channel];
|
|
if (empty($userinfo[$uidstr])) {
|
|
return error(1, '缺少用户标识,请检查后重试');
|
|
}
|
|
$member = self::wl_member_get([$uidstr => $userinfo[$uidstr]]);
|
|
if (empty($member) && !empty($userinfo['unionid'])) {
|
|
$member = self::wl_member_get(['unionid' => $userinfo['unionid']]);
|
|
}
|
|
|
|
$newinfo = [];
|
|
$fields = self::wl_member_update_fields();
|
|
foreach ($fields as $field) {
|
|
if (!empty($userinfo[$field])) {
|
|
$newinfo[$field] = $userinfo[$field];
|
|
}
|
|
}
|
|
|
|
if (empty($member)) {
|
|
$newinfo['avatar'] = $newinfo['avatar'] ? str_replace('132132', '132', $newinfo['avatar']) : './addons/'.MODULE_NAME.'/h5/resource/image/default_avatar.png';
|
|
$member = array(
|
|
'uniacid' => $_W['uniacid'],
|
|
'tokey' => strtoupper(MD5(sha1(time() . random(12)))),
|
|
'createtime' => time(),
|
|
'dotime' => time()
|
|
);
|
|
$member = array_merge($member, $newinfo);
|
|
if (!empty($member['openid'])) {
|
|
$member['uid'] = mc_openid2uid($member['openid']);
|
|
}
|
|
if(empty($member['uid'])){
|
|
$member['uid'] = self::createUserInfo($member['nickname']);
|
|
}
|
|
pdo_insert(PDO_NAME . 'member', $member);
|
|
$member['id'] = pdo_insertid();
|
|
} else {
|
|
//判断是否存在uid 不存在则添加uid
|
|
$uid = pdo_getcolumn(PDO_NAME."member",['id'=>$member['id']],'uid');
|
|
if($uid <= 0){
|
|
$newinfo['uid'] = self::createUserInfo($member['nickname']);
|
|
}
|
|
$member = self::wl_member_update($newinfo, $member['id']);
|
|
}
|
|
|
|
return $member;
|
|
}
|
|
|
|
/**
|
|
* 更新用户信息
|
|
* @param $userinfo 用户信息
|
|
* @param $mid 用户ID
|
|
* @return array|bool
|
|
*/
|
|
static function wl_member_update($userinfo, $mid) {
|
|
global $_W;
|
|
load()->model('mc');
|
|
$member = self::wl_member_get($mid, [], false);
|
|
if (empty($member)) {
|
|
return error(1, '用户不存在,请检查后重试');
|
|
}
|
|
if(empty($userinfo['uid'])){
|
|
$userinfo['uid'] = $member['uid'];
|
|
}
|
|
$upgrade = array('dotime' => time());
|
|
//同步用户积分信息
|
|
$uid = 0;
|
|
if (!empty($member['openid'])) {
|
|
$uid = mc_openid2uid($member['openid']);
|
|
}
|
|
if (!empty($uid)) {
|
|
if($userinfo['uid'] != $uid){
|
|
$creditarray = pdo_get('mc_members',array('uid'=>$userinfo['uid']),array('credit1','credit2'));
|
|
$member['credit1'] = $creditarray['credit1'];
|
|
$member['credit2'] = $creditarray['credit2'];
|
|
$zoreres = pdo_update('mc_members',array('credit1' => 0,'credit2' => 0),array('uid' => $userinfo['uid']));
|
|
if($zoreres){
|
|
pdo_insert(PDO_NAME . 'credit2zero', ['uid'=>$userinfo['uid'],'uniacid'=>$_W['uniacid'],'createtime'=>time()]);
|
|
}
|
|
}
|
|
$flaguid = $userinfo['uid'];
|
|
$userinfo['uid'] = $uid;
|
|
if (0 < $member['credit1']) {
|
|
mc_credit_update($uid, 'credit1', $member['credit1'],array($uid, '合并用户数据修改积分,uid='.$flaguid, MODULE_NAME));
|
|
$upgrade['credit1'] = 0;
|
|
$userinfo['credit1'] = 0;
|
|
}
|
|
if (0 < $member['credit2']) {
|
|
mc_credit_update($uid, 'credit2', $member['credit2'],array($uid, '合并用户数据修改余额,uid='.$flaguid, MODULE_NAME));
|
|
$upgrade['credit2'] = 0;
|
|
$userinfo['credit2'] = 0;
|
|
}
|
|
}else if(!empty($member['uid'])){
|
|
//公众号同步到小程序数据
|
|
if($userinfo['uid'] != $member['uid']){
|
|
$creditarray = pdo_get('mc_members',array('uid'=>$member['uid']),array('credit1','credit2'));
|
|
$member['credit1'] = $creditarray['credit1'];
|
|
$member['credit2'] = $creditarray['credit2'];
|
|
$zoreres = pdo_update('mc_members',array('credit1' => 0,'credit2' => 0),array('uid' => $member['uid']));
|
|
if($zoreres){
|
|
pdo_insert(PDO_NAME . 'credit2zero', ['uid'=>$member['uid'],'uniacid'=>$_W['uniacid'],'createtime'=>time()]);
|
|
}
|
|
}
|
|
$flaguid = $member['uid'];
|
|
if (0 < $member['credit1']) {
|
|
mc_credit_update($userinfo['uid'], 'credit1', $member['credit1'],array($userinfo['uid'], '合并用户数据修改积分,uid='.$flaguid, MODULE_NAME));
|
|
$upgrade['credit1'] = 0;
|
|
$userinfo['credit1'] = 0;
|
|
}
|
|
if (0 < $member['credit2']) {
|
|
mc_credit_update($userinfo['uid'], 'credit2', $member['credit2'],array($userinfo['uid'], '合并用户数据修改余额,uid='.$flaguid, MODULE_NAME));
|
|
$upgrade['credit2'] = 0;
|
|
$userinfo['credit2'] = 0;
|
|
}
|
|
}
|
|
|
|
//对比用户信息,不同则更新
|
|
if (empty($member['tokey'])) {
|
|
$upgrade['tokey'] = strtoupper(MD5(sha1(time() . random(12))));
|
|
}
|
|
$fields = self::wl_member_update_fields();
|
|
foreach ($fields as $field) {
|
|
if (!empty($userinfo[$field]) && $userinfo[$field] != $member[$field]) {
|
|
$upgrade[$field] = $userinfo[$field];
|
|
}
|
|
}
|
|
if ($upgrade['nickname'] == '微信用户') {
|
|
unset($upgrade['nickname']);
|
|
unset($upgrade['encodename']);
|
|
unset($upgrade['avatar']);
|
|
}
|
|
pdo_update(PDO_NAME . 'member', $upgrade, array('id' => $member['id']));
|
|
$member = array_merge($member, $upgrade);
|
|
|
|
if ($member['uid']) {
|
|
$credit = pdo_get('mc_members', array('uid' => $member['uid']), array('credit1', 'credit2'));
|
|
$member['credit1'] = $credit['credit1'] + $member['credit1'];
|
|
$member['credit2'] = $credit['credit2'] + $member['credit2'];
|
|
}
|
|
|
|
//同步分销商表
|
|
if ($member['distributorid']) {
|
|
pdo_update('wlmerchant_distributor', array('mobile' => $member['mobile'], 'nickname' => $member['nickname'], 'realname' => $member['realname']), array('mid' => $member['id']));
|
|
}
|
|
|
|
return $member;
|
|
}
|
|
|
|
/**
|
|
* 用户更新字段
|
|
* @return array
|
|
*/
|
|
private static function wl_member_update_fields() {
|
|
return ['uid', 'avatar', 'nickname', 'encodename','openid', 'wechat_openid', 'webapp_openid', 'unionid', 'mobile', 'password', 'salt', 'session_key', 'credit1', 'credit2'];
|
|
}
|
|
|
|
/**
|
|
* 合并用户的账号
|
|
* @param $keyval 合并关键内容的值 手机号 || unionid
|
|
* @param string $type mobile或unionid为关键
|
|
* @return bool
|
|
*/
|
|
static function wl_member_merge($keyval, $type = 'mobile') {
|
|
global $_W;
|
|
if (empty($keyval)) {
|
|
return error(1, '合并内容值不得为空');
|
|
}
|
|
if (!in_array($type, ['mobile', 'unionid'])) {
|
|
return error(1, '合并类型错误,检查后重试');
|
|
}
|
|
#1、获取符号条件的所账号信息
|
|
$fields = self::wl_member_update_fields();
|
|
$info = pdo_getall(PDO_NAME . "member", array('uniacid' => $_W['uniacid'], $type => $keyval), array_merge($fields, array('id', 'distributorid', 'tokey')), '', 'id asc');
|
|
|
|
#2、判断账号信息是否大于等于 2 条,是通过循环合并账号信息 否则不管
|
|
if (count($info) < 2) {
|
|
return error(1, '不存在重复信息,无需合并');
|
|
}
|
|
|
|
#3、获取最早建立的账号 为主账号
|
|
$earliest = $info[0];
|
|
|
|
#4、通过循环合并账号信息
|
|
WeliamWeChat::startTrans();//开启事务处理
|
|
foreach ($info as $key => $val) {
|
|
//修改的账号不包括最早建立的账号
|
|
if ($val['id'] != $earliest['id']) {
|
|
//---4-1: 合并第一项内容 账号信息 合并内容:member表中 不同的openid,mobile,unionid
|
|
$userinfo = $val;
|
|
unset($userinfo['id'], $userinfo['distributorid'], $userinfo['tokey']);
|
|
self::wl_member_update($userinfo, $earliest['id']);
|
|
|
|
//---4-2: 合并第二项内容 订单信息 合并内容:order订单表,rush_order订单表中的mid 全部改为最早账号的mid
|
|
//修改 order 订单表
|
|
pdo_update(PDO_NAME . "order", array('mid' => $earliest['id']), array('mid' => $val['id']));
|
|
//修改 rush_order 订单表
|
|
pdo_update(PDO_NAME . "rush_order", array('mid' => $earliest['id']), array('mid' => $val['id']));
|
|
//修改disorder 表
|
|
pdo_update(PDO_NAME . "disorder", array('buymid' => $earliest['id']), array('buymid' => $val['id']));
|
|
|
|
//---4-3: 合并第三项内容 分销商信息
|
|
if (empty($earliest['distributorid'])) {
|
|
$earliest['distributorid'] = $val['distributorid'];
|
|
} else if ($val['distributorid'] > 0) {
|
|
//修改distributor表 金额 下级
|
|
$eardis = pdo_get('wlmerchant_distributor', array('id' => $earliest['distributorid']), array('dismoney', 'nowmoney', 'mid'));
|
|
$valdis = pdo_get('wlmerchant_distributor', array('id' => $val['distributorid']), array('dismoney', 'nowmoney', 'mid'));
|
|
if ($valdis['dismoney'] > 0) {
|
|
$newdismoney = sprintf("%.2f", $eardis['dismoney'] + $valdis['dismoney']);
|
|
pdo_update('wlmerchant_distributor', array('dismoney' => $newdismoney), array('id' => $earliest['distributorid']));
|
|
}
|
|
if ($valdis['nowmoney'] > 0) {
|
|
$newnowmoney = sprintf("%.2f", $eardis['nowmoney'] + $valdis['nowmoney']);
|
|
pdo_update('wlmerchant_distributor', array('nowmoney' => $newnowmoney), array('id' => $earliest['distributorid']));
|
|
}
|
|
pdo_update('wlmerchant_distributor', array('leadid' => $earliest['id']), array('leadid' => $val['id']));
|
|
pdo_delete('wlmerchant_distributor', array('id' => $val['distributorid']));
|
|
//修改disorder 分销订单表
|
|
pdo_update('wlmerchant_disorder', array('oneleadid' => $earliest['distributorid']), array('oneleadid' => $val['distributorid'], 'status' => 0));
|
|
pdo_update('wlmerchant_disorder', array('twoleadid' => $earliest['distributorid']), array('twoleadid' => $val['distributorid'], 'status' => 0));
|
|
//修改disapply 分销商提现表
|
|
pdo_update('wlmerchant_disapply', array('mid' => $earliest['id'], 'disid' => $earliest['distributorid']), array('mid' => $val['id']));
|
|
}
|
|
|
|
//---4-4: 合并第四项内容 商户信息
|
|
//修改 merchantuser 将当前用户mid修改为最早账号的mid
|
|
pdo_update(PDO_NAME . "merchantuser", ['mid' => $earliest['id']], ['mid' => $val['id']]);
|
|
|
|
#5、账号合并完成 当前账号的信息已经全部合并给最早建立的账号 删除当前账号
|
|
pdo_delete(PDO_NAME . "member", array('id' => $val['id']));
|
|
}
|
|
}
|
|
WeliamWeChat::commit();//提交事务信息
|
|
|
|
return $earliest;
|
|
}
|
|
|
|
/*
|
|
* 更新积分信息
|
|
*/
|
|
static function credit_update_credit1($mid, $credit1 = 0, $remark = '', $orderno = '') {
|
|
global $_W;
|
|
$member = self::wl_member_get($mid);
|
|
$settings = Setting::wlsetting_read('base');
|
|
if (empty($member)) {
|
|
return error(-1, '用户不存在');
|
|
}
|
|
if (($member['credit1'] + $credit1) < 0) {
|
|
return error(-1, '用户积分不足');
|
|
}
|
|
if(abs($credit1) > 0.01){
|
|
//会员不存在uid时,更新模块本身的积分余额
|
|
if (empty($member['uid'])) {
|
|
return error(-1, 'UID不存在,请重新登录');
|
|
//$res = pdo_update(PDO_NAME . "member", array('credit1' => $member['credit1'] + $credit1), array('id' => $member['id']));
|
|
} else {
|
|
load()->model('mc');
|
|
if (empty($remark)) {
|
|
$remark = $settings['name'] ? $settings['name'] . '积分操作' : '智慧城市积分操作';
|
|
}
|
|
$res = mc_credit_update($member['uid'], 'credit1', $credit1, array($member['uid'], $remark, MODULE_NAME));
|
|
}
|
|
if(is_error($res)){
|
|
return $res;
|
|
}else{
|
|
$data = array('uid' => $member['uid'], 'uniacid' => $_W['uniacid'], 'mid' => $member['id'], 'num' => $credit1, 'createtime' => TIMESTAMP, 'type' => 1, 'remark' => $remark, 'ordersn' => $orderno);
|
|
pdo_insert(PDO_NAME . "creditrecord", $data);
|
|
$newCredit = pdo_getcolumn('mc_members',['uid' => $member['uid']],'credit1');
|
|
//积分变更通知
|
|
$trade = Setting::wlsetting_read('trade');
|
|
$integralText = $trade['credittext'] ? : '积分';
|
|
if(Customized::init('customized530') && $credit1 > 0){
|
|
$payinfo = [
|
|
'first' => "收益到账通知:",
|
|
'profit_money' => "{$credit1}{$integralText}",//收益金额
|
|
'profit_source' => $remark,//收益来源
|
|
'time' => date("Y年m月d日 Y:i:s",time()),//变更日期
|
|
'remark' => '',
|
|
];
|
|
TempModel::sendInit('profit',$member['id'],$payinfo,$_W['source']);
|
|
}else if(!Customized::init('customized530')){
|
|
$integral = trim($credit1,'-');
|
|
$payinfo = [
|
|
'first' => "您的{$integralText}已发生变化",
|
|
'old_number' => "原有{$integralText}:{$member['credit1']},{$remark}:{$integral}",//原有数量
|
|
'current_number' => "现有{$integralText}:{$newCredit}",//变更结果
|
|
'time' => date("Y-m-d H:i:s",time()),//变更日期
|
|
'remark' => "点击查看{$integralText}变更记录",
|
|
'change_num' => $credit1,
|
|
'balance' => $newCredit,
|
|
'change_remark' => $remark,
|
|
];
|
|
$url = h5_url('pages/subPages/IntegralRecord/IntegralRecord');
|
|
TempModel::sendInit('change',$member['id'],$payinfo,$_W['source'],$url);
|
|
}
|
|
}
|
|
return TRUE;
|
|
}else{
|
|
return error(-1, '修改积分数额不正确');
|
|
}
|
|
}
|
|
|
|
/*
|
|
* 更新余额信息
|
|
*
|
|
*/
|
|
static function credit_update_credit2($mid, $credit2 = 0, $remark = '', $orderno = '') {//余额
|
|
global $_W;
|
|
$member = self::wl_member_get($mid);
|
|
$settings = Setting::wlsetting_read('base');
|
|
if (empty($member)) {
|
|
return error(-1, '用户不存在');
|
|
}
|
|
if (($member['credit2'] + $credit2) < 0) {
|
|
return error(-1, '用户余额不足');
|
|
}
|
|
if(abs($credit2)>0){
|
|
//会员不存在uid时,更新模块本身的积分余额
|
|
if (empty($member['uid'])) {
|
|
return error(-1, 'UID不存在,请重新登录');
|
|
//pdo_update(PDO_NAME . "member", array('credit2' => $member['credit2'] + $credit2), array('id' => $member['id']));
|
|
} else {
|
|
load()->model('mc');
|
|
$header = $remark ? $settings['name'] . ':' : '智慧城市余额操作';
|
|
$res = mc_credit_update($member['uid'], 'credit2', $credit2, array($member['uid'], $header . $remark, MODULE_NAME));
|
|
}
|
|
if(is_error($res)){
|
|
return $res;
|
|
}else {
|
|
$data = array('uid' => $member['uid'], 'uniacid' => $_W['uniacid'], 'mid' => $member['id'], 'num' => $credit2, 'createtime' => TIMESTAMP, 'type' => 2, 'remark' => $remark, 'ordersn' => $orderno);
|
|
pdo_insert(PDO_NAME . "creditrecord", $data);
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
//验证一卡通会员
|
|
static function checkhalfmember($url = '') {
|
|
global $_W;
|
|
if (empty($_W['mid'])) {
|
|
Uniapp::renderError('未登录');
|
|
}
|
|
$now = time();
|
|
if ($_W['wlsetting']['halfcard']['halfcardtype'] == 2) {
|
|
$halfcardflag = pdo_fetch("SELECT id FROM " . tablename('wlmerchant_halfcardmember') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$_W['mid']} AND aid = {$_W['aid']} AND expiretime > {$now} AND disable != 1");
|
|
} else {
|
|
$halfcardflag = pdo_fetch("SELECT id FROM " . tablename('wlmerchant_halfcardmember') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$_W['mid']} AND expiretime > {$now} AND disable != 1");
|
|
}
|
|
return $halfcardflag;
|
|
}
|
|
|
|
static function payChargeNotify($params) {
|
|
global $_W;
|
|
Util::wl_log('payResult_notify', PATH_DATA . "merchant/data/", $params); //写入异步日志记录
|
|
$order_out = pdo_get(PDO_NAME . 'order', array('orderno' => $params['tid']));
|
|
$_W['uniacid'] = $order_out['uniacid'];
|
|
if ($order_out['status'] == 0 || $order_out['status'] == 5) {
|
|
$data = self::getVipPayData($params); //得到支付参数,处理代付
|
|
if ($data['status'] == 1) {
|
|
$data['status'] = 3;
|
|
}
|
|
pdo_update(PDO_NAME . 'order', $data, array('orderno' => $params['tid']));
|
|
$res1 = self::credit_update_credit2($order_out['mid'], $order_out['price'], '余额充值', $order_out['orderno']);
|
|
$settings = Setting::wlsetting_read('recharge');
|
|
$count = count($settings['kilometre']);
|
|
for ($i = 0; $i < $count; $i++) {
|
|
$array[$i]['kilometre'] = $settings['kilometre'][$i];
|
|
$array[$i]['kilmoney'] = $settings['kilmoney'][$i];
|
|
}
|
|
$give = 0;
|
|
foreach ($array as $key => $val) {
|
|
$dos[$key] = $val['kilometre'];
|
|
}
|
|
array_multisort($dos, SORT_ASC, $array);
|
|
foreach ($array as $key => $ar) {
|
|
if ($order_out['price'] > $ar['kilometre'] || $order_out['price'] == $ar['kilometre']) {
|
|
$give = $ar['kilmoney'];
|
|
}
|
|
}
|
|
if ($give > 0) {
|
|
$res2 = self::credit_update_credit2($order_out['mid'], $give, '余额充值赠送', $order_out['orderno']);
|
|
}
|
|
}
|
|
}
|
|
|
|
static function payChargeReturn($params) {
|
|
wl_message('充值成功', h5_url('pages/mainPages/userCenter/userCenter'));
|
|
}
|
|
|
|
static function getVipPayData($params) {
|
|
global $_W;
|
|
$data = array('status' => $params['result'] == 'success' ? 1 : 0);
|
|
if ($params['is_usecard'] == 1) {
|
|
$fee = $params['card_fee'];
|
|
$data['is_usecard'] = 1;
|
|
} else {
|
|
$fee = $params['fee'];
|
|
}
|
|
//$paytype = array('credit' => 1, 'wechat' => 2, 'alipay' => 3, 'delivery' => 4, 'wxapp' => 5);
|
|
$data['paytype'] = $params['type'];
|
|
if ($params['type'] == 'wechat') $data['transid'] = $params['tag']['transaction_id'];
|
|
$data['paytime'] = TIMESTAMP;
|
|
return $data;
|
|
}
|
|
/**
|
|
* Comment: 生成微信用户信息
|
|
* Author: zzw
|
|
* Date: 2020/3/9 10:32
|
|
* @param $nickname
|
|
* @return mixed
|
|
*/
|
|
public static function createUserInfo($nickname){
|
|
global $_W;
|
|
$group_id = pdo_getcolumn('mc_groups', ['uniacid' => $_W['uniacid'], 'isdefault' => 1], 'groupid');
|
|
$salt = random(8);
|
|
$data = [
|
|
'uniacid' => $_W['uniacid'],
|
|
'salt' => $salt,
|
|
'groupid' => $group_id,
|
|
'createtime' => TIMESTAMP,
|
|
'nickname' => $nickname,
|
|
];
|
|
//储存微擎用户数据信息
|
|
pdo_insert('mc_members', $data);
|
|
$uid = pdo_insertid();
|
|
return $uid;
|
|
}
|
|
|
|
/**
|
|
* 修改商户关联用户身份
|
|
* @param $storeid // 商户id
|
|
* @param $merchant_type // 商户类型 1-企业 2-商户
|
|
* @return false|void
|
|
*/
|
|
static function updateStoreUserIdentity($storeid,$merchant_type = '') {
|
|
if (empty($storeid)) return false;
|
|
$storeRes = pdo_get(PDO_NAME . 'merchantdata' , ['id' => $storeid] , ['status','merchant_type']);
|
|
if ($storeRes['status'] != 2) return false;
|
|
if (empty($merchant_type)) $merchant_type = $storeRes['merchant_type'];
|
|
$identity_id = $merchant_type == 1 ? 5 : 4; // 4 商家 5 企业
|
|
$mid_res = pdo_getall(PDO_NAME . 'merchantuser', ['storeid' => $storeid, 'ismain' => 1],['mid']);
|
|
foreach ($mid_res as $mid_row) {
|
|
pdo_update(PDO_NAME . 'member',['identity_id' => $identity_id], ['id' => $mid_row['mid']]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 商户企业身份 回退游客身份
|
|
* @param $mid
|
|
*/
|
|
static function returnIdentity($mid)
|
|
{
|
|
$query = pdo_get(PDO_NAME . 'merchantuser',['mid' => $mid]);
|
|
if (!$query) {
|
|
$memberQuery = pdo_get(PDO_NAME.'member',['id' => $mid,'identity_id' => [4,5]],'identity_id');
|
|
if ($memberQuery) {
|
|
pdo_update(PDO_NAME . 'member',['identity_id' => 1], ['id' => $mid]);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取用户头像和昵称
|
|
* @param $data
|
|
* @param $mid
|
|
* @return false|void
|
|
*/
|
|
static function getMemberInfo(&$data,$mid) {
|
|
if (!is_array($data)) return false;
|
|
$memberinfo = pdo_get(PDO_NAME.'member',array('id' => $mid),array('avatar','nickname','encodename'));
|
|
if (!$memberinfo) return false;
|
|
$data['nickname'] = base64_decode($memberinfo['encodename']);
|
|
$data['avatar'] = tomedia($memberinfo['avatar']);
|
|
}
|
|
|
|
/**
|
|
* 验证用户身份是否可以认证
|
|
* @param $mid // 用户ID
|
|
* @param $notIdentity // 是否进行身份验证
|
|
* @return array|bool[]
|
|
*/
|
|
static function validateMemberIdentity($mid,$notIdentity = true,$storePay = false) {
|
|
if (empty($mid)) return ['status' => true];
|
|
|
|
// 防止交叉申请认证
|
|
$where = ['mid' => $mid, 'status' => 0];
|
|
$student_res = pdo_get(PDO_NAME . 'member_student_info',['check_status' => 0, 'mid' => $mid],'id');
|
|
if ($student_res) return ['status' => false, 'msg' => '学生身份认证审核中...,不可申请认证', 'identity' => '学生身份'];
|
|
$teacher_res = pdo_get(PDO_NAME . 'member_teacher_certified',$where,'id');
|
|
if ($teacher_res) return ['status' => false, 'msg' => '教师身份认证审核中...,不可申请认证', 'identity' => '教师身份'];
|
|
$blogger_res = pdo_get(PDO_NAME . 'member_daren_certified',$where,'id');
|
|
if ($blogger_res) return ['status' => false, 'msg' => '达人身份认证审核中...,不可申请认证', 'identity' => '达人身份'];
|
|
$user_res = pdo_get(PDO_NAME . 'merchantuser',['mid' => $mid],['storeid']);
|
|
if ($user_res) {
|
|
$statusArr = $storePay ? 1 : [0,1];
|
|
$merchant_res = pdo_get(PDO_NAME . 'merchantdata',['id' => $user_res['storeid'], 'status' => $statusArr],['id','status']);
|
|
if ($merchant_res) {
|
|
$str = $merchant_res['status'] == 1 ? '审核' : '待支付';
|
|
return ['status' => false, 'msg' => '企业身份认证'.$str.'中...,不可申请认证', 'identity' => '企业身份'];
|
|
}
|
|
}
|
|
|
|
// 认证身份是否可以申请
|
|
if ($notIdentity) {
|
|
$member = pdo_get(PDO_NAME . 'member',['id' => $mid],['identity_id']);
|
|
if (in_array($member['identity_id'],[1,3])) return ['status' => true];
|
|
$identity = pdo_get(PDO_NAME . 'member_identity',['id' => $member['identity_id']],'name');
|
|
return ['status' => false, 'msg' => '当前用户已是'.$identity['name'].'身份,不可申请认证', 'identity' => $identity['name'].'身份'];
|
|
}
|
|
return ['status' => true];
|
|
}
|
|
|
|
/**
|
|
* 申请变更身份的用户
|
|
* @return array
|
|
*/
|
|
static function applyChangeInentityUser()
|
|
{
|
|
$midArr = [];
|
|
$student_res = pdo_getall(PDO_NAME . 'member_student_info',['check_status' => 0],'mid');
|
|
foreach ($student_res as $student_row) $midArr[] = $student_row['mid'];
|
|
$teacher_res = pdo_getall(PDO_NAME . 'member_teacher_certified',['status' => 0],'mid');
|
|
foreach ($teacher_res as $teacher_row) $midArr[] = $teacher_row['mid'];
|
|
$blogger_res = pdo_getall(PDO_NAME . 'member_daren_certified',['status' => 0],'mid');
|
|
foreach ($blogger_res as $blogger_row) $midArr[] = $blogger_row['mid'];
|
|
$user_sql = "select a.mid from ".tablename('wlmerchant_merchantuser')." as a join ".tablename('wlmerchant_merchantdata')." as b "
|
|
." on a.storeid = b.id where a.enabled = 1 and a.status in (0,1) and b.status in (0,1)";
|
|
$user_res = pdo_fetch($user_sql);
|
|
foreach ($user_res as $user_row) $midArr[] = $user_row['mid'];
|
|
return array_unique($midArr);
|
|
}
|
|
|
|
/**
|
|
* 验证用户权限
|
|
* @param $mid
|
|
* @param $key
|
|
* @param $member
|
|
* @return array|bool[]
|
|
*/
|
|
public static function validateMemberRights($mid,$key,$member = [])
|
|
{
|
|
if (empty($member)) {
|
|
$member = pdo_get(PDO_NAME . 'member',['id' => $mid]);
|
|
}
|
|
$rights = $member['rights'];
|
|
$rightsInfo = $rights ? unserialize($rights) : []; // 用户权限
|
|
# 校园活动发布是否显示 判断用户是否有权限 是否有校园活动发布权限
|
|
|
|
switch ($key) {
|
|
case 'campus_activities':
|
|
if (!isset($rightsInfo[$key]) || $rightsInfo[$key] != 1) {
|
|
return ['status' => false, 'msg' => '您未开通校园活动发布权限,无法访问'];
|
|
}
|
|
break;
|
|
case '未完待续':
|
|
break;
|
|
}
|
|
return ['status' => true];
|
|
}
|
|
|
|
/**
|
|
* 递归删除校园活动评论
|
|
*/
|
|
static function commentDelete($id)
|
|
{
|
|
global $_W;
|
|
if (empty($id)) return false;
|
|
$arr = pdo_getall(PDO_NAME . 'member_evaluation_activities' , ['uniacid' => $_W['uniacid'] , 'pid' => $id]);
|
|
if (empty($arr)) return pdo_delete(PDO_NAME . 'member_evaluation_activities' , ['uniacid' => $_W['uniacid'] , 'id' => $id]);
|
|
foreach ($arr as $key => $value) {
|
|
if (!self::commentDelete($value['id'])) return false;
|
|
}
|
|
return pdo_delete(PDO_NAME . 'member_evaluation_activities' , ['uniacid' => $_W['uniacid'] , 'id' => $id]);
|
|
}
|
|
}
|
|
|