function icheckauth($force = true)
{
global $_W, $_GPC;
load()->model('mc');
$_W['member'] = array();
if (is_weixin() && !defined('IN_WXAPP')) {
if (!empty($_W['openid'])) {
if (empty($force)) {
$member = get_member($_W['openid']);
} else {
$fansInfo = mc_oauth_userinfo();
if (!empty($fansInfo['unionid'])) {
pdo_update('tiny_wmall_members', array('openid' => $fansInfo['openid']), array('unionId' => $fansInfo['unionid']));
pdo_update('tiny_wmall_members', array('unionId' => $fansInfo['unionid']), array('openid' => $fansInfo['openid']));
member_union($fansInfo['unionid']);
$member = get_member($fansInfo['unionid'], 'unionId');
} else {
$member = get_member($fansInfo['openid']);
}
$avatar = rtrim(rtrim($fansInfo['headimgurl'], '0'), 132) . 132;
if (empty($member)) {
$mc = pdo_fetch('select a.fanid,b.credit1,b.credit2,b.uid,b.realname,b.mobile,b.gender from' . tablename('mc_mapping_fans') . ' as a left join ' . tablename('mc_members') . ' as b on a.uid = b.uid where a.uniacid = :uniacid and a.acid = :acid and a.openid = :openid', array(':uniacid' => $_W['uniacid'], ':acid' => $_W['acid'], ':openid' => $_W['openid']));
if (empty($mc['uid'])) {
$member = array(
'uniacid' => $_W['uniacid'],
'uid' => date('His') . random(3, true),
'openid' => $fansInfo['openid'],
'unionId' => $fansInfo['unionid'],
'nickname' => $fansInfo['nickname'],
'realname' => $fansInfo['nickname'],
'sex' => ($fansInfo['sex'] == 1 ? '男' : '女'),
'avatar' => $avatar,
'is_sys' => 2, //模拟用户
'status' => 1,
'token' => random(32),
'addtime' => TIMESTAMP,
);
pdo_insert('tiny_wmall_members', $member);
$member['credit1'] = 0;
$member['credit2'] = 0;
} else {
$member = array(
'uniacid' => $_W['uniacid'],
'uid' => $mc['uid'],
'openid' => $_W['openid'],
'unionId' => $fansInfo['unionid'],
'nickname' => $fansInfo['nickname'],
'realname' => $mc['realname'],
'mobile' => $mc['mobile'],
'sex' => ($fansInfo['sex'] == 1 ? '男' : '女'),
'avatar' => $avatar,
'is_sys' => 1,
'status' => 1,
'token' => random(32),
'addtime' => TIMESTAMP,
);
pdo_insert('tiny_wmall_members', $member);
$member['credit1'] = $mc['credit1'];
$member['credit2'] = $mc['credit2'];
}
} else {
if (($member['nickname'] != $fansInfo['nickname']) || ($member['avatar'] != $avatar)) {
$update = array(
'nickname' => $fansInfo['nickname'],
'avatar' => $avatar
);
pdo_update('tiny_wmall_members', $update, array('id' => $member['id']));
}
}
}
$_W['member'] = $member;
}
} elseif (defined('IN_WXAPP')) {
$force = false;//小程序不强制授权
if (!empty($_W['openid'])) {
//这里统一用户
if (!empty($_W['unionid'])) {
member_union($_W['unionid']);
$member = get_member($_W['unionid'], 'unionId');
}
if (empty($member)) {
$member = get_member($_W['openid'], 'openid_wxapp');
}
if (!empty($member)) {
$_W['member'] = $member;
$update = array();
if (empty($member['openid_wxapp'])) {
$update['openid_wxapp'] = $_W['openid'];
}
if (empty($member['unionId']) && !empty($_W['unionid'])) {
$update['unionId'] = $_W['unionid'];
}
if (!empty($update)) {
pdo_update('tiny_wmall_members', $update, array('id' => $_W['member']['id']));
}
}
}
} else {
$key = "we7_wmall_member_session_{$_W['uniacid']}";
if (isset($_GPC[$key])) {
$session = json_decode(base64_decode($_GPC[$key]), true);
if (is_array($session)) {
$member = get_member($session['uid']);
if (is_array($member) && ($session['hash'] == $member['password'])) {
$_W['member'] = $member;
} else {
isetcookie($key, false, -100);
}
} else {
isetcookie($key, false, -100);
}
}
}
if ($_W['member']['uid'] > 0) {
$_W['openid'] = $_W['openid_wechat'] = $_W['member']['openid'];
$_W['openid_wxapp'] = $_W['member']['openid_wxapp'];
if (defined('IN_WXAPP')) {
$_W['openid'] = $_W['member']['openid'] = $_W['openid_wxapp'];
}
member_group_update();
$_W['member']['is_store_newmember'] = 1;
$_W['member']['is_mall_newmember'] = 1;
$config_newmember_condition = 0;
if (!empty($_W['we7_wmall']['config']['activity'])) {
$config_newmember_condition = $_W['we7_wmall']['config']['activity']['newmember']['newmember_condition'];
}
if ($_GPC['sid'] > 0) {
if ($config_newmember_condition == 1) {
$is_exist = pdo_fetch('select id from ' . tablename('tiny_wmall_order') . ' where uniacid = :uniacid and sid = :sid and uid = :uid and status != 6', array(':uniacid' => $_W['uniacid'], ':sid' => intval($_GPC['sid']), ':uid' => $_W['member']['uid']));
} else {
$is_exist = pdo_get('tiny_wmall_order', array('uniacid' => $_W['uniacid'], 'sid' => intval($_GPC['sid']), 'uid' => $_W['member']['uid']), array('id'));
}
if (!empty($is_exist)) {
$_W['member']['is_store_newmember'] = 0;
$_W['member']['is_mall_newmember'] = 0;
}
}
if ($_W['member']['is_mall_newmember'] == 1) {
if ($config_newmember_condition == 1) {
$is_exist = pdo_fetch('select id from ' . tablename('tiny_wmall_order') . ' where uniacid = :uniacid and uid = :uid and status != 6', array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid']));
} else {
$is_exist = pdo_get('tiny_wmall_order', array('uniacid' => $_W['uniacid'], 'uid' => $_W['member']['uid']), array('id'));
}
if (!empty($is_exist)) {
$_W['member']['is_mall_newmember'] = 0;
}
}
if (!$_W['member']['status'] && $force) {
imessage('您暂时无权访问平台,', 'close', 'info');
}
return true;
}
if ($force) {
$forward = base64_encode($_SERVER['QUERY_STRING']);
if (defined('IN_WXAPP')) {
imessage(error(41009, '请先登录'), '', 'ajax');
} elseif (is_qianfan()) {
if ($_W['ispost']) {
imessage(error(-1, '请先登录'), imurl('wmall/auth/login', array('forward' => $forward)), 'ajax');
}
include itemplate('auth/qianfan');
exit();
} elseif (is_majia()) {
if ($_W['ispost']) {
imessage(error(-1, '请先登录'), imurl('wmall/auth/login', array('forward' => $forward)), 'ajax');
}
include itemplate('auth/majia');
exit();
} else {
if ($_W['ispost']) {
imessage(error(-1, '请先登录'), imurl('wmall/auth/login', array('forward' => $forward)), 'ajax');
}
header("location: " . imurl('wmall/auth/login', array('forward' => $forward)), true);
}
exit;
}
}