test
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.
 
 
 
 
 
 

2927 lines
134 KiB

<?php
defined('IN_IA') or exit('Access Denied');
class MemberModuleUniapp extends Uniapp
{
/**
* Comment: 获取用户注册设置信息
* Author: zzw
* Date: 2019/8/8 9:26
*/
public function getRegisterSet()
{
global $_W , $_GPC;
#1、获取基本设置
$set = Setting::wlsetting_read("userset");
$data['sms_switch'] = $set['smsver'] ? $set['smsver'] : 0;//0=启用 1=禁用
$data['img_switch'] = $set['verifycode'] ? $set['verifycode'] : 0;//1=启用 0=禁用
#2、获取用户协议
$userSet = Setting::wlsetting_read('userset');
$data['describe'] = htmlspecialchars_decode($userSet['describe']);//用户协议
$data['privacy'] = htmlspecialchars_decode($userSet['privacy']);//用户协议
$this->renderSuccess('获取用户注册设置信息' , $data);
}
/**
* Comment: 用户申请注册账号
* Author: zzw
* Date: 2019/8/8 11:14
*/
public function register()
{
global $_W , $_GPC;
#1、参数接收
$mobile = trim($_GPC['phone']);//手机号
$password = trim($_GPC['password']);//密码
$code = trim($_GPC['code']);//验证码
if (!$mobile) {
$this->renderError('请输入手机号');
}
if (!$password) {
$this->renderError('请输入登录密码');
}
//短信验证码登录 判断验证码是否输入正确
if (empty($_W['wlsetting']['userset']['smsver'])) {
$pin_info = pdo_get('wlmerchant_pincode' , ['mobile' => $mobile]);
if (empty($pin_info)) {
$this->renderError('验证码错误');
}
if ($pin_info['time'] < time() - 300) {
$this->renderError('验证码已过期,请重新获取' , ['code' => 1]);
}
if ($code != $pin_info['code']) {
$this->renderError('验证码错误');
}
}
#2、判断是否已经注册
$have = Member::wl_member_get(['mobile' => $mobile] , ['id'] , false);
if ($have) {
$this->renderError('当前手机已被注册,请直接登录');
}
#3、生成用户信息数据
$salt = random(8);
$nickname = substr($mobile , 0 , 3) . '****' . substr($mobile , -4 , 4);
$data2 = [
'nickname' => $nickname ,
'mobile' => $mobile ,
'password' => md5($password . $salt) ,
'salt' => $salt ,
];
$member = Member::wl_member_create($data2 , 'mobile');
if (!is_error($member)) {
$userinfo['mobile'] = $mobile;
$userinfo['pwd'] = $member['password'];
$userinfo['tokey'] = $member['tokey'];
wl_setcookie('usersign' , $userinfo , 3600 * 24 * 30);
$token = pdo_getcolumn(PDO_NAME . 'login' , ['token' => $userinfo['tokey']] , 'secret_key');
if (empty($token)) {
$res = Login::generateToken($userinfo['tokey'] , 'login');
$token = $res['message'];
}
wl_setcookie('user_token' , $token , 3600 * 24 * 30);
$this->renderSuccess('注册成功');
}
else {
$this->renderError('注册失败');
}
}
/**
* Comment: 用户登录
* Author: zzw
* Date: 2019/8/8 13:40
*/
public function userLogin()
{
global $_W , $_GPC;
#1、参数获取
$type = $_GPC['type'] ? $_GPC['type'] : 1;//1=账号密码登录 2=短信验证码登录
$phone = $_GPC['phone'];//手机号
$pwd = $_GPC['password'];// 登录密码/短信验证码
$backUrl = urldecode($_GPC['backurl']);
if (!$phone) $this->renderError('请输入登录账号');
if (!$pwd) $this->renderError($type == 1 ? '请输入密码' : '请输入验证码');
#2、根据登录方式进行判断是否登录成功
$member = Member::wl_member_get(['mobile' => $phone] , [
'password' ,
'id' ,
'salt' ,
'tokey' ,
'openid' ,
'blackflag'
]);
if (!$member) $this->renderError('账号不存在,请先注册!');
if ($type == 1) {
//账号密码登录 判断密码是否正确
if ($member['password'] != md5($pwd . $member['salt'])) $this->renderError('密码错误!');
}
else {
//短信验证码登录 判断验证码是否输入正确
$pin_info = pdo_get('wlmerchant_pincode' , ['mobile' => $phone]);
if (empty($pin_info)) {
$this->renderError('验证码错误');
}
if ($pin_info['time'] < time() - 300) {
$this->renderError('验证码已过期,请重新获取' , ['code' => 1]);
}
if ($pwd != $pin_info['code']) $this->renderError('验证码错误');
}
if ($member['blackflag'] > 0) {
$tips = $_W['wlsetting']['userset']['black_desc'] ? $_W['wlsetting']['userset']['black_desc'] : '您被禁止访问,如有疑问请联系客服';
$this->renderError($tips);
}
#3、密码输出正确 成功登录
$userInfo = [
'mobile' => $phone ,
'pwd' => $pwd ,
'openid' => $member['openid'] ? $member['openid'] : $_W['wlmember']['openid'] ,
'tokey' => $member['tokey'] ? $member['tokey'] : $_W['wlmember']['tokey'] ,
];
wl_setcookie('usersign' , $userInfo , 3600 * 24 * 30);
$res = Login::generateToken($userInfo['tokey'] , 'login');
$token = $res['message'];
wl_setcookie('user_token' , $token , 3600 * 24 * 30);
wl_setcookie('exitlogin_code' , [] , 100);
#3、登录成功 返回跳转地址
$link = $backUrl ? $backUrl : '';
$this->renderSuccess('登录成功' , ['back_url' => $link , 'token' => $token]);
}
/**
* Comment: 验证短信验证码是否正确
* Author: wlf
* Date: 2019/03/31 10:20
*/
public function checkCode()
{
global $_W , $_GPC;
$phone = $_GPC['phone'];
$code = $_GPC['code'];
$pin_info = pdo_get('wlmerchant_pincode' , ['mobile' => $phone]);
if (empty($pin_info)) {
$this->renderError('验证码错误');
}
if ($pin_info['time'] < time() - 300) {
$this->renderError('验证码已过期,请重新获取');
}
if ($code != $pin_info['code']) $this->renderError('验证码错误');
$this->renderSuccess('正确');
}
/**
* Comment: 重置登录密码
* Author: zzw
* Date: 2019/8/8 14:13
*/
public function resetPassword()
{
global $_W , $_GPC;
#1、参数获取
$phone = $_GPC['phone'];
$pwd = $_GPC['password'];
if (!$phone) $this->renderError('请输入账号!');
if (!$pwd) $this->renderError('请输入新的密码!');
#2、获取用户信息
$member = Member::wl_member_get(['mobile' => $phone] , ['password' , 'id' , 'salt' , 'tokey' , 'openid']);
if (!$member) $this->renderError('用户信息不存在,请先注册!');
#3、判断密码是否修改
$salt = random(8);
$password = md5($pwd . $salt);
if ($member['password'] == $password) $this->renderError('密码不能与原密码一致!');
#4、修改密码的操作
$res = Member::wl_member_update(['password' => $password , 'salt' => $salt] , $member['id']);
if (!is_error($res)) {
$this->renderSuccess('修改成功');
}
else {
$this->renderError('修改失败');
}
}
/**
* Comment: 获取用户订单列表信息
* Author: wlf
* Date: 2019/8/10 10:58
*/
public function orderList()
{
global $_W , $_GPC;
$trade = Setting::wlsetting_read('trade');
$authinfo = Cloud::wl_syssetting_read('authinfo');
if ($authinfo['code'] == '116495A4C76AB8B1BBC387C941FE7424' || $authinfo['code'] == 'E9FEC02FCF843080D04DF170CBA8EF7A') {
$data['changeflag'] = 1;
}
$page = $_GPC['page'] ? $_GPC['page'] : 1;
$page_index = 10;
$page_start = $page * $page_index - $page_index;
$status = $_GPC['status'] ? $_GPC['status'] : 0;
$cc_id = $_GPC['cc_id'];
$where = " uniacid = {$_W['uniacid']} and mid = {$_W['mid']}";
if ($status != 10) {
if($data['changeflag'] > 0 && $status == 1 ){
$where .= " and status IN (1,8)";
}else{
$where .= " and status = {intval($status)}";
}
}
$where_cc = '';
if (!empty($cc_id) && $cc_id > 0) {
$where_cc = " AND activityid IN (SELECT id FROM ". tablename(PDO_NAME."rush_activity")
. " WHERE uniacid = {$_W['uniacid']} AND cc_id = '{$cc_id}') ";
}
$myorder = pdo_fetchall('SELECT id,createtime,sid,num,status,price,paidprid,applyrefund,expressid,paytype,orderno as tid,pftorderinfo, "a" FROM '
. tablename(PDO_NAME . "order")
. " where {$where} and orderno != 666666 AND plugin != 'distribution' AND plugin != 'housekeep' "
. ' UNION ALL SELECT id,createtime,sid,num,status,price,paidprid,applyrefund,expressid,paytype,orderno as tid,pftorderinfo, "b" FROM '
. tablename(PDO_NAME . "rush_order")
. " where {$where} {$where_cc} ORDER BY createtime DESC LIMIT {$page_start},{$page_index}");
//计算页码
$total1 = pdo_fetchcolumn('SELECT count(id) FROM ' . tablename(PDO_NAME . "order") . " where {$where} and orderno != 666666 AND plugin != 'distribution' AND plugin != 'housekeep' ");
$total2 = pdo_fetchcolumn('SELECT count(id) FROM ' . tablename(PDO_NAME . "rush_order") . " where {$where}");
$total = $total1 + $total2;
$data['pagetotal'] = ceil($total / 10);
if (empty($data['pagetotal'])) {
$data['pagetotal'] = 1;
}
//处理订单
foreach ($myorder as $k => &$v) {
if ($v['a'] == 'a') {
$ndorder = pdo_get(PDO_NAME . 'order' , ['id' => $v['id'] , 'uniacid' => $_W['uniacid']] , [
'id' ,
'payfor' ,
'num' ,
'plugin' ,
'fkid' ,
'goodsprice' ,
'specid' ,
'orderno' ,
'fightstatus' ,
'fightgroupid' ,
'recordid'
]);
if ($ndorder['specid'] && $ndorder['plugin'] != 'bargain' && $ndorder['plugin'] != 'yellowpage') {
if($ndorder['plugin'] == 'activity'){
$v['optionname'] = pdo_getcolumn(PDO_NAME . 'activity_spec' , ['id' => $ndorder['specid']] , 'name');
}else{
$v['optionname'] = pdo_getcolumn(PDO_NAME . 'goods_option' , ['id' => $ndorder['specid']] , 'title');
}
}
$v['activityid'] = $ndorder['fkid'];
if ($ndorder['plugin'] == 'coupon') {
$goods = wlCoupon::getSingleCoupons($ndorder['fkid'] , 'title,sub_title,logo,id,allowapplyre');
$v['goodsname'] = $goods['title'];
$v['goodsimg'] = tomedia($goods['logo']);
$v['optionname'] = $goods['sub_title'];
$coupon = pdo_get(PDO_NAME . 'member_coupons' , [
'uniacid' => $_W['uniacid'] ,
'orderno' => $ndorder['orderno']
] , ['status' , 'id' , 'usetimes' , 'endtime' , 'usedtime']);
$this->checkcoupon($coupon , $ndorder);
$v['typeid'] = 5;
$v['recordid'] = $ndorder['recordid'];
}
else if ($ndorder['plugin'] == 'wlfightgroup') {
$goods = Wlfightgroup::getSingleGood($ndorder['fkid'] , 'name,logo,id,allowapplyre');
$v['goodsname'] = $goods['name'];
$v['goodsimg'] = tomedia($goods['logo']);
$v['fightstatus'] = $ndorder['fightstatus'];
$v['recordid'] = $ndorder['recordid'];
if ($v['fightstatus'] == 1) {
$v['buystatus'] = '拼团';
}
else {
$v['buystatus'] = '单购';
}
switch ($v['status']) {
case '1':
if ($ndorder['fightgroupid']) {
$groupstatus = pdo_getcolumn(PDO_NAME . 'fightgroup_group' , ['id' => $ndorder['fightgroupid']] , 'status');
$v['groupstatus'] = $groupstatus;
if ($groupstatus == 1) {
$v['statusName'] = '组团中';
}
else if ($groupstatus == 2) {
$v['statusName'] = '待使用';
}
}
else {
$v['statusName'] = '待使用';
}
break;
case '2':
$v['statusName'] = '已消费';
break;
case '3':
$v['statusName'] = '已完成';
break;
case '8':
$v['statusName'] = '待发货';
break;
case '4':
$v['statusName'] = '待收货';
break;
case '5':
$v['statusName'] = '已取消';
break;
case '6':
$v['statusName'] = '待退款';
break;
case '7':
$v['statusName'] = '已退款';
break;
case '9':
$v['statusName'] = '已过期';
break;
default:
$v['statusName'] = '待付款';
break;
}
$v['typeid'] = 3;
}
else if ($ndorder['plugin'] == 'groupon') {
$goods = pdo_get('wlmerchant_groupon_activity' , ['id' => $ndorder['fkid']] , [
'name' ,
'subtitle' ,
'thumb' ,
'id' ,
'allowapplyre',
'pftid'
]);
if (empty($v['optionname'])) {
$v['optionname'] = $goods['subtitle'];
}
$v['goodsname'] = $goods['name'];
$v['goodsimg'] = tomedia($goods['thumb']);
$v['typeid'] = 2;
if($goods['pftid'] > 0){
$v['storename'] = '平台商品';
}
}
else if ($ndorder['plugin'] == 'pocket') {
$infrom = Pocket::getInformations($ndorder['fkid']);
$typename = pdo_getcolumn(PDO_NAME . 'pocket_type' , [
'uniacid' => $_W['uniacid'] ,
'id' => $infrom['type']
] , 'title');
$typeimg = pdo_getcolumn(PDO_NAME . 'pocket_type' , [
'uniacid' => $_W['uniacid'] ,
'id' => $infrom['type']
] , 'img');
if ($ndorder['fightstatus'] == 1) {
$v['goodsname'] = '发布' . $typename . '信息';
}
else if ($ndorder['fightstatus'] == 2) {
$v['goodsname'] = '置顶' . $typename . '信息';
}
else {
$v['goodsname'] = '支付' . $typename . '信息红包';
}
$v['goodsimg'] = tomedia($typeimg);
$v['typeid'] = 11;
$v['num'] = 1;
}
else if ($ndorder['plugin'] == 'store') {
$chargetype = pdo_get('wlmerchant_chargelist' , ['id' => $ndorder['fkid']] , ['name']);
$v['goodsname'] = '商户入驻' . $chargetype['name'];
$typeimg = pdo_getcolumn(PDO_NAME . 'merchantdata' , ['id' => $v['sid']] , 'logo');
$v['goodsimg'] = tomedia($typeimg);
$v['typeid'] = 10;
$v['num'] = 1;
}
else if ($ndorder['plugin'] == 'activity') {
$activity = pdo_get('wlmerchant_activitylist' , ['id' => $ndorder['fkid']] , [
'title' ,
'thumb'
]);
$v['goodsname'] = $activity['title'];
$typeimg = $activity['thumb'];
$v['goodsimg'] = tomedia($typeimg);
}
else if ($ndorder['plugin'] == 'taxipay') {
$master = pdo_get('wlmerchant_taxipay_master' , ['id' => $ndorder['fkid']]);
$v['goodsname'] = '支付给[' . $master['name'] . ']师傅';
$v['optionname'] = '车牌号:' . $master['plate1'] . $master['plate2'] . $master['plate_number'];
$v['goodsimg'] = tomedia(pdo_getcolumn(PDO_NAME . 'member' , ['id' => $master['mid']] , 'avatar'));
$v['storename'] = '出租车买单';
$v['typeid'] = 12;
$v['mastermobile'] = $master['mobile'];
}
else if ($ndorder['plugin'] == 'consumption') {
$activity = pdo_get('wlmerchant_consumption_goods' , ['id' => $ndorder['fkid']] , [
'title' ,
'thumb'
]);
$v['goodsname'] = $activity['title'];
$v['goodsimg'] = $activity['thumb'];
$v['storename'] = '系统平台';
$v['typeid'] = 8;
$v['num'] = 1;
}
else if ($ndorder['plugin'] == 'member') {
$v['goodsname'] = $trade['moneytext'] . '充值';
$v['goodsimg'] = tomedia($_W['wlmember']['avatar']);
$v['storename'] = '系统平台';
}
else if ($ndorder['plugin'] == 'halfcard') {
$v['goodsname'] = '在线买单';
$v['goodsimg'] = pdo_getcolumn(PDO_NAME . 'merchantdata' , [
'id' => $v['sid'] ,
'uniacid' => $_W['uniacid']
] , 'logo');
$v['goodsimg'] = tomedia($v['goodsimg']);
$v['typeid'] = 6;
$v['num'] = 1;
}
else if ($ndorder['plugin'] == 'bargain') {
$goods = pdo_get('wlmerchant_bargain_activity' , ['id' => $ndorder['fkid']] , [
'name' ,
'thumb' ,
'allowapplyre'
]);
$v['goodsname'] = $goods['name'];
$v['goodsimg'] = tomedia($goods['thumb']);
$v['fightstatus'] = $ndorder['fightstatus'];
if ($v['expressid'] && $v['status'] == 8) {
$v['statusName'] = '待发货';
}
$v['typeid'] = 7;
}
else if ($ndorder['plugin'] == 'citycard') {
if ($ndorder['fightstatus'] == 1) {
$v['goodsname'] = '同城名片套餐付费';
$v['optionname'] = pdo_getcolumn(PDO_NAME . "citycard_meals" , ['id' => $ndorder['fkid']] , 'name');
}
else {
$v['goodsname'] = '同城名片置顶付费';
$v['optionname'] = pdo_getcolumn(PDO_NAME . "citycard_tops" , ['id' => $ndorder['fkid']] , 'name');
}
$v['storename'] = '同城名片';
$userLogo = pdo_getcolumn(PDO_NAME . "citycard_lists" , ['id' => $ndorder['specid']] , 'logo');
$v['goodsimg'] = !empty($userLogo) ? tomedia($userLogo) : $_W['wlmember']['avatar'];
$v['num'] = 1;
}
else if ($ndorder['plugin'] == 'citydelivery') {
$smallorders = pdo_fetchall("SELECT gid,num,specid FROM " . tablename('wlmerchant_delivery_order') . "WHERE orderid = {$ndorder['id']} ORDER BY price DESC");
foreach ($smallorders as $ke => $orr) {
$good = pdo_get('wlmerchant_delivery_activity' , ['id' => $orr['gid']] , ['name' , 'thumb']);
if (empty($ke)) {
$v['goodsimg'] = tomedia($good['thumb']);
}
if ($ke > 0) {
if ($orr['specid'] > 0) {
$specname = pdo_getcolumn(PDO_NAME . 'delivery_spec' , ['id' => $orr['specid']] , 'name');
$v['goodsname'] .= ' + [' . $good['name'] . '/' . $specname . '] X' . $orr['num'];
}
else {
$v['goodsname'] .= ' + [' . $good['name'] . '] X' . $orr['num'];
}
}
else {
if ($orr['specid'] > 0) {
$specname = pdo_getcolumn(PDO_NAME . 'delivery_spec' , ['id' => $orr['specid']] , 'name');
$v['goodsname'] .= '[' . $good['name'] . '/' . $specname . '] X' . $orr['num'];
}
else {
$v['goodsname'] .= '[' . $good['name'] . '] X' . $orr['num'];
}
}
}
if ($v['status'] == 1) {
$v['statusName'] = '待取用';
}
else if ($v['status'] == 8) {
$v['statusName'] = '待接单';
}
else if ($v['status'] == 4) {
$v['statusName'] = '配送中';
}
else if ($v['status'] == 7) {
$v['statusName'] = '已退款';
}
$v['num'] = 1;
//判断退款
if ($v['status'] != 7) {
$canre = pdo_getcolumn(PDO_NAME . 'aftersale' , [
'orderid' => $v['id'] ,
'plugin' => 'citydelivery' ,
'status' => [1 , 2]
] , 'id');
if ($canre) {
$v['status'] = 10;
$v['statusName'] = '退款处理中';
}
}
}
else if ($ndorder['plugin'] == 'yellowpage') {
$page = pdo_get('wlmerchant_yellowpage_lists',array('id' => $ndorder['fkid']),array('name','logo'));
if ($ndorder['fightstatus'] == 1) {
$v['goodsname'] = '认领[' . $page['name'] . ']114信息';
}
else if ($ndorder['fightstatus'] == 2) {
$v['goodsname'] = '查阅[' . $page['name'] . ']114信息';
}
else if ($ndorder['fightstatus'] == 3) {
$v['goodsname'] = '入驻[' . $page['name'] . ']114信息';
}
else if ($ndorder['fightstatus'] == 4) {
$v['goodsname'] = '续费[' . $page['name'] . ']114信息';
}
$v['goodsimg'] = tomedia($page['logo']);
$v['typeid'] = 15;
$v['num'] = 1;
$v['storename'] = '黄页114';
if($ndorder['specid']){
$mealname = pdo_getcolumn(PDO_NAME.'yellowpage_meals',array('id'=>$ndorder['specid']),'name');
$v['goodsname'] .= ",套餐[".$mealname."]";
}
}
else if ($ndorder['plugin'] == 'recruit') {
//订单类型为求职招聘时 获取对应的信息
$recruit = pdo_get(PDO_NAME."recruit_recruit",['id'=>$ndorder['fkid']]);
//判断发布方 招聘类型:1=个人招聘,2=企业招聘
if($recruit['recruitment_type'] == 1){
$release = pdo_get(PDO_NAME."member",['id'=>$recruit['release_mid']],['nickname','avatar','encodename']);
$v['goodsname'] = '个人招聘:'.base64_decode($release['encodename']);
$v['goodsimg'] = tomedia($release['avatar']);
}else{
$release = pdo_get(PDO_NAME."merchantdata",['id'=>$recruit['release_sid']],['storename','logo']);
$v['goodsname'] = '企业招聘:'.$release['storename'];
$v['goodsimg'] = tomedia($release['logo']);
}
$v['storename'] = '求职招聘';
$v['typeid'] = 16;
$v['num'] = 1;
}
else if ($ndorder['plugin'] == 'dating') {
//订单类型为相亲交友时 获取对应的信息
if($ndorder['payfor'] == 'datingTop'){
//信息置顶
[$nickname,$avatar] = Dating::handleUserInfo($_W['mid']);
$v['goodsname'] = '信息置顶:'.$nickname;
$v['goodsimg'] = tomedia($avatar);
}else if($ndorder['payfor'] == 'datingVip'){
//会员卡开通
[$nickname,$avatar] = Dating::handleUserInfo($_W['mid']);
$v['goodsname'] = '会员卡开通:'.$nickname;
$v['goodsimg'] = tomedia($avatar);
}else if($ndorder['payfor'] == 'datingMatchmaker'){
//红娘申请
$matchmaker = pdo_get(PDO_NAME."dating_matchmaker",['id'=>$ndorder['fkid']],['nickname','avatar','encodename']);
$v['goodsname'] = '红娘申请:'.base64_decode($matchmaker['encodename']);
$v['goodsimg'] = tomedia($matchmaker['avatar']);
}
$v['storename'] = '相亲交友';
$v['typeid'] = 17;
$v['num'] = 1;
}
else if ($ndorder['plugin'] == 'vehicle') {
//订单类型为相亲交友时 获取对应的信息
$v['goodsname'] = '顺风车';
$v['goodsimg'] = tomedia($_W['wlmember']['avatar']);
$v['storename'] = '顺风车';
$v['typeid'] = 18;
$v['num'] = 1;
}
$v['plugin'] = $ndorder['plugin'];
if ($ndorder['goodsprice'] < 0.01) {
$ndorder['goodsprice'] = $v['price'];
}
if (empty($v['num'])) {
$v['num'] = 1;
}
$v['goodsprice'] = sprintf("%.2f" , $ndorder['goodsprice'] / $v['num']);
}
if ($v['a'] == 'b') {
$v['activityid'] = pdo_getcolumn(PDO_NAME . 'rush_order' , [
'id' => $v['id'] ,
'uniacid' => $_W['uniacid']
] , 'activityid');
$goods = Rush::getSingleActive($v['activityid'] , 'name,isdistri,thumb,id,cutofftime,viponedismoney,viptwodismoney,vipthreedismoney,dissettime,onedismoney,twodismoney,threedismoney,allowapplyre,pftid');
if ($v['status'] == 0 || $v['status'] == 5) { //校验支付
$orderno = pdo_getcolumn(PDO_NAME . 'rush_order' , [
'uniacid' => $_W['uniacid'] ,
'id' => $v['id']
] , 'orderno');
$paylog = pdo_get('core_paylogvfour' , [
'uniacid' => $_W['uniacid'] ,
'tid' => $orderno
] , ['status' , 'uniontid' , 'type']);
if ($paylog['status'] == 1) {
$paytype = [
'credit' => 1 ,
'wechat' => 2 ,
'alipay' => 3 ,
'delivery' => 4 ,
'wxapp' => 5
];
$data['paytype'] = $paytype[$paylog['type']];
if ($v['expressid']) {
$data['status'] = 8;
}
else {
$data['status'] = 1;
}
$data['transid'] = $paylog['uniontid'];
pdo_update(PDO_NAME . 'rush_order' , $data , ['id' => $v['id']]); //更新订单状态
$v = pdo_get('wlmerchant_rush_order' , ['id' => $v['id']]);
}
}
$actualprice = pdo_getcolumn(PDO_NAME . 'rush_order' , [
'id' => $v['id'] ,
'uniacid' => $_W['uniacid']
] , 'actualprice');
$v['goodsname'] = $goods['name'];
$v['goodsimg'] = tomedia($goods['thumb']);
$v['plugin'] = 'rush';
$v['goodsprice'] = sprintf("%.2f" , $v['price'] / $v['num']);
$v['price'] = $actualprice;
$v['typeid'] = 1;
if($goods['pftid'] > 0){
$v['storename'] = '平台商品';
}
}
if (!$v['storename']) {
$v['storename'] = pdo_getcolumn(PDO_NAME . 'merchantdata' , [
'id' => $v['sid'] ,
'uniacid' => $_W['uniacid']
] , 'storename');
if (!$v['storename']) {
$v['storename'] = '掌上信息';
}
}
if(empty($v['shop_img'])){
$v['shop_img'] = tomedia($_W['wlsetting']['base']['logo']);
}
if (($v['status'] == 8 || $v['status'] == 1) && empty($goods['allowapplyre']) && $v['plugin'] != 'citydelivery' && $v['plugin'] != 'consumption' && $v['paytype'] != 6 && $v['statusName'] != '组团中' && empty($v['pftorderinfo'])) {
if ($v['status'] == 1) {
$canre = pdo_getcolumn(PDO_NAME . 'smallorder' , [
'orderid' => $v['id'] ,
'plugin' => $v['plugin'] ,
'status' => 1
] , 'id');
}
else {
$canre = pdo_getcolumn(PDO_NAME . 'aftersale' , [
'orderid' => $v['id'] ,
'plugin' => $v['plugin'] ,
'status' => [1 , 2]
] , 'id');
$canre = !$canre;
}
if ($canre) {
$v['surerefund'] = 1;
}
else {
$v['status'] = 10;
$v['surerefund'] = 0;
}
}
else {
$v['surerefund'] = 0;
}
$v['createtime'] = date('Y-m-d H:i' , $v['createtime']);
//获取商户信息
if ($v['sid'] > 0) {
$v['shop_img'] = tomedia(pdo_getcolumn(PDO_NAME . "merchantdata" , ['id' => $v['sid']] , 'logo'));
}
if (empty($v['groupstatus'])) {
$v['groupstatus'] = 0;
}
}
$data['myorder'] = is_array($myorder) ? array_values($myorder) : [];
$this->renderSuccess('用户订单' , $data);
}
/**
* Comment: 检测卡券订单是否已被使用
* Date: 2019/8/30 16:29
* @param $coupon
* @param $ndorder
* @return bool
*/
private function checkcoupon($coupon , $ndorder)
{
global $_W , $_GPC;
if (empty($coupon) || empty($ndorder)) return false;
if (($coupon['usetimes'] < 1 || $coupon['endtime'] < time()) && $ndorder['status'] == 1) {
pdo_update(PDO_NAME . 'order' , ['status' => 2] , ['orderno' => $ndorder['orderno']]);
}
}
/**
* Comment: 用户个人中心信息
* Author: wlf
* Date: 2019/8/12 09:09
*/
public function memberInfo()
{
global $_W;
$data = [];
$data['nickname'] = $_W['wlmember']['nickname'] ? : ''; //用户昵称
$data['bgimg'] = $_W['wlsetting']['userset']['userbg'] ? tomedia($_W['wlsetting']['userset']['userbg']) : URL_MODULE . 'h5/resource/image/userCenterImg.png';//背景图
$data['avatar'] = tomedia($_W['wlmember']['avatar']); //用户头像
Member::getMemberInfo($data,$_W['mid']);
if ($_W['wlmember']['mobile'] > 0) {
$data['truemobile'] = $_W['wlmember']['mobile'];
$data['mobile'] = substr($_W['wlmember']['mobile'] , 0 , 3) . '****' . substr($_W['wlmember']['mobile'] , -4 , 4); //用户手机号
}else if(Customized::init('integral074') > 0 && empty($_W['wlsetting']['wxappset']['examineing']) && !empty($_W['mid']) ){
$this->renderError('请先绑定手机号');
}
$data['credit1'] = sprintf("%.2f" , $_W['wlmember']['credit1']); //用户积分
$data['credit2'] = sprintf("%.2f" , $_W['wlmember']['credit2']); //用户余额
$identity_data = pdo_get(PDO_NAME . 'member_identity',['id' => $_W['wlmember']['identity_id']]); // 获取身份
$data['identity'] = $identity_data ? $identity_data['name'] : '未知'; // 身份
$data['interest_user_count'] = pdo_count(PDO_NAME . 'member_interest',['mid' => $_W['mid']]); // 关注数量
$data['fans_user_count'] = pdo_count(PDO_NAME . 'member_interest',['interest_mid' => $_W['mid']]); // 粉丝数量
$student_info = pdo_get(PDO_NAME . 'member_student_info',['mid' => $_W['mid'],'check_status' => 1,'status' => 1],['department_name','school_name','code']);
$data['school_department_name'] = $student_info['department_name'] ?: ''; // 学院名称
$data['school_name'] = $student_info['school_name'] ?: ''; // 学校名称
$data['school_code'] = $student_info['code'] ?: ''; // 学号
// $collectnum = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'storefans') . " WHERE uniacid={$_W['uniacid']} and mid={$_W['mid']}");
// $pocketcollectnum = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'pocket_collection') . " WHERE uniacid={$_W['uniacid']} and mid={$_W['mid']}");
// $citycardcollectnum = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'citycard_collect') . " WHERE mid={$_W['mid']}");
$collect_activities = pdo_count(PDO_NAME . 'member_collect_activities',['mid' => $_W['mid']]);
$data['collectnum'] = $collect_activities ?: 0; //收藏店铺数量
//统计用户的未读信息数量
$data['news_total'] = pdo_getcolumn(PDO_NAME . "im" , [
'receive_type' => 1 ,
'receive_id' => $_W['mid'] ,
'is_read' => 0
] , 'count(*)');
$num_1 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'order') . " WHERE uniacid={$_W['uniacid']} and mid={$_W['mid']} and status = 0 and plugin <> 'distribution' AND plugin != 'housekeep'");
$num_2 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'order') . " WHERE uniacid={$_W['uniacid']} and mid={$_W['mid']} and status = 1 and plugin <> 'distribution' AND plugin != 'housekeep'");
$num_3 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'order') . " WHERE uniacid={$_W['uniacid']} and mid={$_W['mid']} and status = 2 and plugin <> 'distribution' AND plugin != 'housekeep'");
$num_4 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'order') . " WHERE uniacid={$_W['uniacid']} and mid={$_W['mid']} and status = 4 and plugin <> 'distribution' AND plugin != 'housekeep'");
$rnum_1 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'rush_order') . " WHERE uniacid={$_W['uniacid']} and mid={$_W['mid']} and status = 0 ");
$rnum_2 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'rush_order') . " WHERE uniacid={$_W['uniacid']} and mid={$_W['mid']} and status = 1 ");
$rnum_3 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'rush_order') . " WHERE uniacid={$_W['uniacid']} and mid={$_W['mid']} and status = 2 ");
$rnum_4 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'rush_order') . " WHERE uniacid={$_W['uniacid']} and mid={$_W['mid']} and status = 4 ");
$num1 = $num_1 + $rnum_1;
$num2 = $num_2 + $rnum_2;
$num3 = $num_3 + $rnum_3;
$num4 = $num_4 + $rnum_4;
$data['ordernum1'] = $num1; //待付款
$data['ordernum2'] = $num2; //待使用
$data['ordernum3'] = $num3; //待评价
$data['ordernum4'] = $num4; //待退款
//判断商户
$storever = pdo_get('wlmerchant_merchantuser' , ['mid' => $_W['mid'] , 'uniacid' => $_W['uniacid']] , ['id','storeid']);
$storemain = pdo_get('wlmerchant_merchantuser' , [
'mid' => $_W['mid'] ,
'uniacid' => $_W['uniacid'] ,
'ismain' => [1 , 3 , 4]
] , ['id']);
$data['storeid'] = $storever['storeid'];// 商户id
$storeadmin = pdo_fetch("SELECT id FROM " . tablename('wlmerchant_merchantuser') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$_W['mid']} AND ismain IN (1,3)");
if (!empty($storeadmin)) {
$data['storeTextStatus'] = 1;
}
//判断会员
$data['halfcardflag'] = WeliamWeChat::VipVerification($_W['mid'] , true); //会员状态
//节省
$swhere['mid'] = $_W['mid'];
$swhere['uniacid'] = $_W['uniacid'];
$allorderprice = pdo_getcolumn('wlmerchant_timecardrecord' , $swhere , ["SUM(ordermoney)"]);
$realprice = pdo_getcolumn('wlmerchant_timecardrecord' , $swhere , ["SUM(realmoney)"]);
$ellipsismoney = $allorderprice - $realprice;
$data['ellipsismoney'] = sprintf("%.2f" , $ellipsismoney); //节约金额
//积分签到
$data['signstatus'] = $_W['wlsetting']['wlsign']['signstatus'];
//判断分销
$distributionbase = Setting::wlsetting_read('distribution');
if ($distributionbase['switch'] && p('distribution')) {
if ($_W['wlmember']['distributorid']) {
$distributor = pdo_get('wlmerchant_distributor' , ['id' => $_W['wlmember']['distributorid']]);
if ($distributor['disflag']) {
$disflag = 1;
}
else {
if ($distributionbase['appdis']) {
$disflag = 2;
}
else {
$disflag = 0;
}
}
}
else {
if ($distributionbase['appdis']) {
$disflag = 2;
}
else {
$disflag = 0;
}
}
}
else {
$disflag = 0;
}
//电商联盟定制 分销同步到其他模块
if (file_exists(PATH_MODULE . 'lsh.log') && !empty($data['halfcardflag'])) {
if (!empty($_W['wlmember']['openid'])) {
$myuser = Distribution::initUserInfo($_W['wlmember']);
if (empty($distributor)) {
$distributor = pdo_get('wlmerchant_distributor' , ['mid' => $_W['wlmember']['id']]);
}
}
// 其他模块上级ID不存在,并且我有上级才同步
if (empty($myuser['pid']) && $distributor['leadid'] > 0) {
$leaderinfo = pdo_get('wlmerchant_member' , ['id' => $distributor['leadid']]);
$leader = Distribution::initUserInfo($leaderinfo);
pdo_update('hccard_user' , ['pid' => $leader['id']] , ['id' => $myuser['id']]);
}
}
//判断手机号是否显示
$mustmobile = unserialize($_W['wlsetting']['userset']['plugin']);
if (empty($mustmobile) || !empty($_W['wlmember']['mobile'])) {
$data['mobilediv'] = 0;
}
else {
$data['mobilediv'] = 1;
}
$data['disflag'] = $disflag; //分销商状态
$pocketset = Setting::agentsetting_read('pocket');
//我的工具 开关显示 (1=开启;0=关闭)
$userSet = User::userSet();
// $userSet['ykthy']['switch'] = $_W['wlsetting']['halfcard']['status'] == 1 ? $userSet['ykthy']['switch'] == 1 ? 1 : 0 : 0;//一卡通会员(ykthy)
// $userSet['xfjl']['switch'] = $_W['wlsetting']['halfcard']['status'] == 1 ? $userSet['xfjl']['switch'] == 1 ? 1 : 0 : 0;//消费记录(xfjl)
// $userSet['wdkj']['switch'] = p('bargain') ? $userSet['wdkj']['switch'] == 1 ? 1 : 0 : 0;//我的砍价(wdkj)
// $userSet['shzx']['switch'] = !empty($storemain) ? $userSet['shzx']['switch'] == 1 ? 1 : 0 : 0;//商户中心(shzx)
// $userSet['hxjl']['switch'] = !empty($storever) ? $userSet['hxjl']['switch'] == 1 ? 1 : 0 : 0;//核销记录(hxjl)
#$userSet['jfsc']['switch'] = $_W['wlsetting']['consumption']['status'] == 1 ? $userSet['jfsc']['switch'] == 1 ? 1 : 0 : 0;//积分商城(jfsc)
// $userSet['wdtz']['switch'] = $pocketset['status'] == 1 ? $userSet['wdtz']['switch'] == 1 ? 1 : 0 : 0;//我的帖子(wdtz)
// $userSet['fxzx']['switch'] = !empty($disflag) ? $userSet['fxzx']['switch'] == 1 ? 1 : 0 : 0;//分销中心(fxzx)
//$userSet['rzzx']['switch'] = $_W['wlsetting']['attestation']['switch'] == 1 ? $userSet['rzzx']['switch'] == 1 ? 1 : 0 : 0;//认证中心(rzzx)
// $userSet['kefu']['switch'] = $_W['wlsetting']['customer']['status'] == 1 ? $userSet['kefu']['switch'] == 1 ? 1 : 0 : 0;//客服(kefu)
// $userSet['wdhb']['switch'] = p('redpack') ? $userSet['wdhb']['switch'] == 1 ? 1 : 0 : 0;//我的红包(kefu)
// $userSet['hbgc']['switch'] = p('redpack') ? $userSet['hbgc']['switch'] == 1 ? 1 : 0 : 0;//红包广场(kefu)
//文本替换
$trade = $_W['wlsetting']['trade'];
$halfcardtext = $trade['halfcardtext'] ? : '一卡通';
$userSet['ykthy']['title'] = str_replace('一卡通' , $halfcardtext , $userSet['ykthy']['title']);
$fxtext = $trade['fxtext'] ? : '分销';
$userSet['fxzx']['title'] = str_replace('分销' , $fxtext , $userSet['fxzx']['title']);
//循环处理信息
foreach ($userSet as $key => &$val) {
//判断是否开启
if ($val['switch'] != 1) {
unset($userSet[$key]);
continue;
}
// 身份判断是否开启
if (!empty($val['identity']) && !in_array($identity_data['id'],$val['identity'])) {
unset($userSet[$key]);
continue;
}
//处理图片路径
$val['icon'] = tomedia($val['icon']);
//mid参数替换
$paramsMid = "mid={$_W['mid']}&";
$val['link'] = str_replace('mid=&' , $paramsMid , $val['link']);
//自定义名称
$val['title'] = $val['diy_title'] ? : $val['title'];
//客服按钮
if($key == 'kefu' && $val['link'] == $val['default']){
if($_W['aid']>0){
$set = Setting::agentsetting_read('agentcustomer');
}else{
$set = Setting::wlsetting_read("customer");
}
if($set['wxapptype'] > 0){
$val['kefuflag'] = $set['wxapptype'];
$val['customerurl'] = $set['customerurl'];
$val['enterpriseid'] = $set['enterpriseid'];
}
}
}
$data['user_set'] = $userSet ? array_values($userSet) : [];
$data['halfcardstatus'] = $_W['wlsetting']['halfcard']['status'];
$data['mid'] = $_W['mid'] ? : '';
//定制
$authinfo = Cloud::wl_syssetting_read('authinfo');
if ($authinfo['code'] == '116495A4C76AB8B1BBC387C941FE7424' || $authinfo['code'] == 'E9FEC02FCF843080D04DF170CBA8EF7A') {
$data['changeflag'] = 1;
}
//881定制
$isAuth = Customized::init('diy_userInfo');
if($isAuth){
$data['diy_userInfo']['dhurl'] = $_W['wlsetting']['recharge']['dhurl'];
}
$this->renderSuccess('用户信息' , $data);
}
/**
* Comment: 用户数据
* Author: wlf
* Date: 2019/8/12 09:50
*/
public function userData()
{
global $_W;
$data = [];
$data['nickname'] = $_W['wlmember']['nickname'];
$data['realname'] = $_W['wlmember']['realname'];
$data['mobile'] = $_W['wlmember']['mobile'];
if ($_W['wlsetting']['cashset']['payment_type']['bank_card'] == 1) {
$data['bankstatus'] = 1;
}
else {
$data['bankstatus'] = 0;
}
$data['bank_name'] = $_W['wlmember']['bank_name'];
$data['bank_username'] = $_W['wlmember']['bank_username'];
$data['card_number'] = $_W['wlmember']['card_number'];
if ($_W['wlsetting']['cashset']['payment_type']['alipay'] == 1) {
$data['alipaystatus'] = 1;
}
else {
$data['alipaystatus'] = 0;
}
$data['alipay'] = $_W['wlmember']['alipay'];
Member::getMemberInfo($data,$_W['mid']);
unset($data['avatar']);
$this->renderSuccess('用户数据' , $data);
}
/**
* Comment: 修改用户数据
* Author: wlf
* Date: 2019/8/12 10:17
*/
public function changeUserData()
{
global $_W , $_GPC;
$data = [];
$data['nickname'] = $_GPC['nickname'];
$data['encodename'] = base64_encode($_GPC['nickname']);
$data['realname'] = $_GPC['realname'];
$nicknameRes = Filter::init($data['nickname'],$_W['source']);
if($nicknameRes['errno'] == 0) $this->renderError('昵称'.$nicknameRes['message']);
if ($_GPC['bank_name']) {
$data['bank_name'] = $_GPC['bank_name'];
}
if ($_GPC['bank_username']) {
$data['bank_username'] = $_GPC['bank_username'];
}
if ($_GPC['card_number']) {
$data['card_number'] = $_GPC['card_number'];
}
if ($_GPC['alipay']) {
$data['alipay'] = $_GPC['alipay'];
}
$res = pdo_update('wlmerchant_member' , $data , ['id' => $_W['mid']]);
if ($res) {
$this->renderSuccess('修改成功');
}
else {
$this->renderError('修改失败,请刷新重试');
}
}
/**
* Comment: 修改用户昵称 和 头像
* Author: wlf
* Date: 2019/8/12 11:07
*/
public function updateUserInfo()
{
global $_W, $_GPC;
$mid = $_W['mid'];
$nickname = $_GPC['nickname'];
$avatar = $_GPC['avatar'];
$member = Member::wl_member_get($mid, [], false);
if (empty($member)) $this->renderError('用户不存在,请检查后重试');
if (empty($nickname)) $this->renderError('请填写用户昵称');
if (strlen($nickname) > 64) $this->renderError('用户昵称最大字符数不得超过64字符');
if (empty($avatar)) $this->renderError('请上传用户头像');
$nicknameRes = Filter::init($nickname,$_W['source'],1);
if ($nicknameRes['errno'] == 0) $this->renderError('用户名'.$nicknameRes['message']);
$avatarRes = Filter::init($avatar,$_W['source'],2);
if($avatarRes['errno'] == 0) $this->renderError('用户头像'.$avatarRes['message']);
$data = [
'nickname' => $nickname,
'encodename' => base64_encode($nickname),
'avatar' => $avatar
];
$result = pdo_update(PDO_NAME . 'member',$data,['id' => $mid]);
if (!$result) $this->renderError('修改失败');
$this->renderSuccess('修改成功');
}
/**
* Comment: 用户地址列表
* Author: wlf
* Date: 2019/8/12 11:07
*/
public function addressList()
{
global $_W;
$data = pdo_getall('wlmerchant_address' , ['mid' => $_W['mid'] , 'uniacid' => $_W['uniacid']] , [
'id' ,
'name' ,
'status' ,
'tel' ,
'province' ,
'city' ,
'county' ,
'detailed_address'
]);
$this->renderSuccess('用户地址列表' , is_array($data) ? $data : []);
}
/**
* Comment: 创建或编辑地址
* Author: wlf
* Date: 2019/8/12 11:22
*/
public function addAddress()
{
global $_W , $_GPC;
$id = $_GPC['id'];
$data = [];
if ($id) {
$address = pdo_get('wlmerchant_address' , ['id' => $id] , ['name','status','tel','province','city','county','detailed_address','housenumber']);
$data['name'] = $address['name'];
$data['status'] = $address['status'];
$data['tel'] = $address['tel'];
$provinceid = pdo_fetch("SELECT id FROM " . tablename('wlmerchant_area') . "WHERE `name` like '%{$address['province']}%' ");
$cityid = pdo_fetch("SELECT id FROM " . tablename('wlmerchant_area') . "WHERE `name` like '%{$address['city']}%' ");
$countyid = pdo_fetch("SELECT id FROM " . tablename('wlmerchant_area') . "WHERE `name` like '%{$address['county']}%' ");
$data['provinceid'] = $provinceid['id'];
$data['cityid'] = $cityid['id'];
$data['countyid'] = $countyid['id'];
$data['detailed_address'] = $address['detailed_address'];
$data['houseNumber'] = $address['housenumber'];
}
//切割门牌号
if(!empty($data['houseNumber'])){
$data['detailed_address'] = strstr($data['detailed_address'],$data['houseNumber'],true);
}
$this->renderSuccess('地址数据' , $data);
}
/**
* Comment: 保存地址数据
* Author: wlf
* Date: 2019/8/12 15:59
*/
public function saveAddress()
{
global $_W , $_GPC;
$id = $_GPC['id'];
$data = [];
$data['name'] = $_GPC['name'];
$data['status'] = $_GPC['status'];
$data['lat'] = $_GPC['lat'];
$data['lng'] = $_GPC['lng'];
if (empty($data['lat']) || empty($data['lng'])) {
$data['lat'] = 0;
$data['lng'] = 0;
}
if ($data['status']) {
pdo_update('wlmerchant_address' , ['status' => 0] , ['uniacid' => $_W['uniacid'] , 'mid' => $_W['mid']]);
}
$data['tel'] = $_GPC['tel'];
$data['detailed_address'] = $_GPC['detailed_address'].$_GPC['houseNumber'];
$data['housenumber'] = $_GPC['houseNumber'];
$provinceid = $_GPC['provinceid'];
$data['province'] = pdo_getcolumn(PDO_NAME . 'area' , ['id' => $provinceid] , 'name');
$cityid = $_GPC['cityid'];
$data['city'] = pdo_getcolumn(PDO_NAME . 'area' , ['id' => $cityid] , 'name');
$countyid = $_GPC['countyid'] ? $_GPC['countyid'] : $_GPC['cityid'];
$data['county'] = pdo_getcolumn(PDO_NAME . 'area' , ['id' => $countyid] , 'name');
$data['addtime'] = time();
if ($id) {
$res = pdo_update('wlmerchant_address' , $data , ['id' => $id]);
}
else {
$data['uniacid'] = $_W['uniacid'];
$data['aid'] = $_W['aid'];
$data['mid'] = $_W['mid'];
$res = pdo_insert(PDO_NAME . 'address' , $data);
}
if ($res) {
$this->renderSuccess('修改成功');
}
else {
$this->renderError('修改失败,请刷新重试');
}
}
/**
* Comment: 修改默认地址
* Author: wlf
* Date: 2019/8/12 16:21
*/
public function changeAddressStatus()
{
global $_W , $_GPC;
$id = $_GPC['id'];
if (empty($id)) {
$this->renderError('缺少地址参数');
}
pdo_update('wlmerchant_address' , ['status' => 0] , ['uniacid' => $_W['uniacid'] , 'mid' => $_W['mid']]);
$res = pdo_update('wlmerchant_address' , ['status' => 1] , ['id' => $id]);
if ($res) {
$this->renderSuccess('修改成功');
}
else {
$this->renderError('修改失败,请刷新重试');
}
}
/**
* Comment: 删除地址
* Author: wlf
* Date: 2019/8/12 17:40
*/
public function deleteAddress()
{
global $_W , $_GPC;
$id = $_GPC['id'];
if (empty($id)) {
$this->renderError('缺少地址参数');
}
$res = pdo_delete('wlmerchant_address' , ['id' => $id]);
if ($res) {
$this->renderSuccess('删除成功');
}
else {
$this->renderError('删除失败,请刷新重试');
}
}
/**
* Comment: 改绑手机
* Author: wlf
* Date: 2019/8/12 16:40
*/
public function changeMobile()
{
global $_W , $_GPC;
$mobile = $_GPC['mobile'];
$mergeflag = $_GPC['mergeflag'];
$code = $_GPC['code'];
if (empty($mobile)) {
$this->renderError('手机号码错误');
}
if (!empty($code)) {
$pin_info = pdo_get('wlmerchant_pincode' , ['mobile' => $mobile]);
if (empty($pin_info)) {
$this->renderError('验证码错误' , ['code' => 1]);
}
if ($pin_info['time'] < time() - 300) {
$this->renderError('验证码已过期,请重新获取' , ['code' => 1]);
}
if ($code != $pin_info['code']) $this->renderError('验证码错误' , ['code' => 1]);
}
//判断是否绑定
$flag = Member::wl_member_get(['mobile' => $mobile] , ['id']);
if ($flag && empty($mergeflag)) {
if($_W['wlsetting']['userset']['onemobiletype'] == 1){
$this->renderError('手机号已存在,绑定该手机号会取消之前用户的绑定手机' , ['mergeflag' => 1]);
}else if($_W['wlsetting']['userset']['onemobiletype'] == 2){
$this->renderError('手机号已存在,无法重复绑定');
}else{
$this->renderError('手机号已存在,绑定该手机号会自动同步用户数据' , ['mergeflag' => 1]);
}
}
//解绑之前手机
if($flag && !empty($mergeflag) && $_W['wlsetting']['userset']['onemobiletype'] == 1){
pdo_update('wlmerchant_member',array('mobile' => ''),array('mobile' => $mobile));
}
//绑定用户手机号
$bind = Member::wl_member_update(['mobile' => $mobile] , $_W['mid']);
if (is_error($bind)) {
$this->renderError($bind['message']);
}
//合并重复手机号
if ($flag && !empty($mergeflag) && empty($_W['wlsetting']['userset']['onemobiletype'])) {
$res = Member::wl_member_merge($mobile , 'mobile');
if (is_error($res)) {
$this->renderError($res['message']);
}
$this->renderSuccess('合并数据成功,请重新登录' , ['token' => $res['tokey']]);
}
$this->renderSuccess('修改成功' , ['token' => $bind['tokey']]);
}
/**
* Comment: 积分余额变更记录
* Author: wlf
* Date: 2019/8/28 14:42
*/
public function creditRecord()
{
global $_W , $_GPC;
$page = $_GPC['page'] ? $_GPC['page'] : 1;
$page_start = $page * 50 - 50;
$type = $_GPC['type'] ? $_GPC['type'] : 1;
$type = $type == 1 ? 'credit1' : 'credit2';
$uid = $_W['wlmember']['uid'];
$records = pdo_fetchall("SELECT id,num,createtime,remark FROM " . tablename("mc_credits_record") . " WHERE uid = {$uid} AND uniacid = {$_W['uniacid']} AND credittype = '{$type}' ORDER BY createtime DESC LIMIT {$page_start},50");
$allnum = pdo_fetchcolumn('SELECT count(id) FROM ' . tablename('mc_credits_record') . " WHERE uid = {$uid} AND uniacid = {$_W['uniacid']} AND credittype = '{$type}'");
if ($records) {
foreach ($records as $key => &$va) {
$va['createtime'] = date('Y-m-d H:i:s' , $va['createtime']);
}
$records = array_values($records);
}
$data['list'] = $records;
$data['pagetotal'] = ceil($allnum / 50);
$data['mycredit'] = sprintf("%.2f" , $_W['wlmember']['credit1']);
$data['flag074'] = Customized::init('integral074') > 0 ? 1 : 0;
//文字替换 积分 换成自定义文字
$textData = Setting::wlsetting_read('trade');
$credittext = $textData['credittext'] ? $textData['credittext'] : '积分';
$jsonData = json_encode($data , JSON_UNESCAPED_UNICODE);
$jsonData = str_replace('积分' , $credittext , $jsonData);
$data = json_decode($jsonData , true);
$this->renderSuccess('积分余额记录' , $data);
}
/**
* Comment: 收藏店铺列表
* Author: wlf
* Date: 2019/8/12 16:20
*/
public function storeCollect()
{
global $_W , $_GPC;
$page = $_GPC['page'] ? $_GPC['page'] : 1; //显示的页数
$lat = $_GPC['lat'];
$lng = $_GPC['lng'];
$pagestatrt = $page * 10 - 10;
$collects = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_storefans') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$_W['mid']} ORDER BY createtime DESC LIMIT {$pagestatrt},10");
$allnum = pdo_fetchcolumn('SELECT count(id) FROM ' . tablename('wlmerchant_storefans') . " WHERE uniacid = {$_W['uniacid']} AND mid = {$_W['mid']}");
if ($collects) {
foreach ($collects as $key => $value) {
$merchant = pdo_get('wlmerchant_merchantdata' , [
'uniacid' => $_W['uniacid'] ,
'id' => $value['sid']
] , ['mobile' , 'id' , 'storename' , 'location' , 'logo' , 'storehours' , 'score' , 'tag']);
if ($merchant) {
//计算距离
if (!empty($lat) && !empty($lng)) {
$location = unserialize($merchant['location']);
$merchant['distance'] = Store::getdistance($location['lng'] , $location['lat'] , $lng , $lat);
if ($merchant['distance'] > 1000) {
$merchant['distance'] = (floor(($merchant['distance'] / 1000) * 10) / 10) . "km";
}
else {
$merchant['distance'] = round($merchant['distance']) . "m";
}
}
$merchant['logo'] = tomedia($merchant['logo']);
$merchant['tags'] = [];
$tagids = unserialize($merchant['tag']);
if (!empty($tagids)) {
$tags = pdo_getall('wlmerchant_tags' , ['id' => $tagids] , ['title']);
$merchant['tags'] = $tags ? array_column($tags , 'title') : [];
}
unset($merchant['tag']);
//营业时间
$storehours = unserialize($merchant['storehours']);
if(!empty($storehours['startTime'])){
$merchant['storehours'] = $storehours['startTime'] . ' - ' . $storehours['endTime']. " 营业";
}else{
$merchant['storehours'] = '';
foreach($storehours as $hk => $hour){
if($hk > 0){
$merchant['storehours'] .= ','.$hour['startTime'] . ' - ' . $hour['endTime'];
}else{
$merchant['storehours'] .= $hour['startTime'] . ' - ' . $hour['endTime'];
}
}
$merchant['storehours'] .= " 营业";
}
$merchant['hourstatus'] = Store::getShopBusinessStatus($storehours,$merchant['id']);
//查询认证和保证金
if (p('attestation')) {
$merchant['attestation'] = Attestation::checkAttestation(2 , $merchant['id']);
}
else {
$merchant['attestation'] = 0;
}
$colls[$key]['store'] = $merchant;
}
else {
pdo_delete('wlmerchant_storefans' , ['sid' => $value['sid']]);
}
}
$data['list'] = $colls;
$data['pagetotal'] = ceil($allnum / 10);
$this->renderSuccess('店铺列表' , $data);
}
else {
$data['list'] = [];
$data['pagetotal'] = 1;
$this->renderSuccess('无数据' , $data);
}
}
/**
* Comment: 我的卡券列表
* Author: wlf
* Date: 2019/8/12 16:32
*/
public function memberCoupon()
{
global $_W , $_GPC;
if(Customized::init('transfergift') > 0){
$data['transfer'] = 1;
$trwhere = " WHERE uniacid = {$_W['uniacid']} AND type = 1 AND omid = {$_W['mid']} AND status = 1";
$alllist = pdo_fetchall("select distinct objid from " . tablename(PDO_NAME.'transferRecord').$trwhere);
$alltrnum = count($alllist);
$data['alltrnum'] = $alltrnum;
}else{
$data['transfer'] = 0;
}
$page = $_GPC['page'] ? $_GPC['page'] : 1;
$status = $_GPC['status'] ? trim($_GPC['status']) : 1;
$where['mid'] = $_W['mid'];
if ($status == 1) {
$where['usetimes>'] = 1;
$where['endtime>'] = time();
}
else if ($status == 2) {
$where['usetimes'] = 0;
}
else {
$where['usetimes>'] = 1;
$where['endtime<'] = time();
}
$couponlist = wlCoupon::getNumCoupon('id,title,sub_title,endtime,starttime,parentid,orderno,status,transferflag' , $where , 'ID DESC' , $page , 20 , 1);
$allnum = $couponlist[2];
$couponlist = $couponlist[0];
if ($couponlist) {
foreach ($couponlist as $key => &$v) {
$parent = pdo_get('wlmerchant_couponlist' , ['id' => $v['parentid']] , [
'logo' ,
'merchantid' ,
'title' ,
'sub_title',
'transferstatus',
'transfermore',
'transferlevel'
]);
$store = pdo_get('wlmerchant_merchantdata' , ['id' => $parent['merchantid']] , [
'storename' ,
'logo'
]);
$v['title'] = $parent['title'];
$v['sub_title'] = $parent['sub_title'];
$v['storename'] = $store['storename'];
$v['storeid'] = $parent['merchantid'];
$v['transferflag'] = $v['transferflag'] ? : 0;
$v['endtime'] = date('Y-m-d' , $v['endtime']);
$v['starttime'] = date('Y-m-d' , $v['starttime']);
$v['storelogo'] = tomedia($store['logo']);
$v['orderid'] = pdo_getcolumn(PDO_NAME . 'order' , ['orderno' => $v['orderno']] , 'id');
if (empty($v['orderid'])) {
$v['orderid'] = pdo_getcolumn(PDO_NAME . 'order' , [
'recordid' => $v['id'] ,
'plugin' => 'coupon'
] , 'id');
}
//判断是否能够转赠
if($parent['transferstatus'] > 0){
if(empty($v['transferflag']) || $parent['transfermore'] > 0){
$transferlevel = unserialize($parent['transferlevel']);
if(empty($transferlevel)){
$v['transferstatus'] = 1;
}else{
$halfflag = WeliamWeChat::VipVerification($_W['mid']);
if(empty($halfflag)){
$levelid = -1;
}else{
$levelid = $halfflag['levelid'];
}
if(in_array($levelid,$transferlevel)){
$v['transferstatus'] = 1;
}
}
}
}
$v['transferstatus'] = $v['transferstatus'] ? : 0;
//转赠卡券信息获取
if($v['transferflag'] > 0){
$record = pdo_getall('wlmerchant_transferRecord',array('type' => 1,'objid' => $v['id'],'nmid' => $_W['mid']),array('omid','gettime'),'','ID DESC');
$record = $record[0];
$oldmember = pdo_get('wlmerchant_member',array('id' => $record['omid']),array('nickname','mobile','encodename'));
$v['oldnickname'] = base64_decode($oldmember['encodename']);
$v['oldmobile'] = substr($oldmember['mobile'],0,3).'****'.substr($oldmember['mobile'], -4);
$v['gettime'] = date('Y/m/d H:i:s',$record['gettime']);
}
//未获取订单id 删除当前卡券信息
if (empty($v['orderid'])) {
unset($couponlist[$key]);
continue;
}
}
$data['list'] = array_values($couponlist);
$data['pagetotal'] = ceil($allnum / 20);
$data['allnum'] = $allnum;
$this->renderSuccess('卡券列表' , $data);
}
else {
$data['list'] = [];
$data['allnum'] = 0;
$data['pagetotal'] = 0;
$this->renderSuccess('无数据' , $data);
}
}
/**
* Comment: 我的砍价列表
* Author: wlf
* Date: 2019/8/13 09:28
*/
public function memberBargain()
{
global $_W , $_GPC;
$where = " uniacid = {$_W['uniacid']} AND mid = {$_W['mid']}";
$myorder = pdo_fetchall("SELECT activityid,id,createtime,price,status FROM " . tablename('wlmerchant_bargain_userlist') . "WHERE {$where} ORDER BY createtime DESC");
if ($myorder) {
foreach ($myorder as $k => &$v) {
$goods = pdo_get('wlmerchant_bargain_activity' , ['id' => $v['activityid']] , [
'name' ,
'endtime' ,
'id' ,
'vipprice' ,
'vipstatus' ,
'price' ,
'oldprice' ,
'sid' ,
'thumb'
]);
$v['goodsname'] = $goods['name'];
$v['goodsimg'] = tomedia($goods['thumb']);
$v['oldprice'] = $goods['oldprice'];
$v['endtime'] = $goods['endtime'];
if ($goods['vipstatus'] == 1) {
$halfflag = WeliamWeChat::VipVerification($_W['mid'] , true);
if ($halfflag) {
$goods['price'] = $goods['vipprice'];
}
}
//已砍金额
$v['alprice'] = sprintf("%.2f" , $v['oldprice'] - $v['price']);
//还需砍价金额
$v['needprice'] = sprintf("%.2f" , $v['price'] - $goods['price']);
//比例
$canprice = $goods['oldprice'] - $goods['price'];
$v['redrate'] = sprintf("%.2f" , ($v['alprice'] / $canprice) * 100);
$v['successnum'] = pdo_fetchcolumn('SELECT count(id) FROM ' . tablename('wlmerchant_bargain_userlist') . " WHERE status = 2 AND activityid = {$v['activityid']} ");
}
$this->renderSuccess('砍价列表' , $myorder);
}
else {
$this->renderSuccess('无数据' , []);
}
}
/**
* Comment: 我的核销列表
* Author: wlf
* Date: 2019/8/13 10:44
*/
public function memberVerifList()
{
global $_W , $_GPC;
$data = [];
if ($_GPC['getlistflag']) {
//所有店铺
$alladmin = pdo_getall(PDO_NAME . 'merchantuser' , [
'uniacid' => $_W['uniacid'] ,
'mid' => $_W['mid']
] , ['storeid']);
if ($alladmin) {
foreach ($alladmin as $ak => &$av) {
$av['storename'] = pdo_getcolumn(PDO_NAME . 'merchantdata' , [
'uniacid' => $_W['uniacid'] ,
'id' => $av['storeid']
] , 'storename');
}
}
//所有分类
// $halfcardtext = !empty($_W['wlsetting']['trade']['halfcardtext']) ? $_W['wlsetting']['trade']['halfcardtext'] : '一卡通';
$alltype = [];
// $alltype[] = ['name' => $halfcardtext , 'type' => 'halfcard1'];
// $alltype[] = ['name' => '大礼包' , 'type' => 'halfcard2'];
// $alltype[] = ['name' => '抢购' , 'type' => 'rush'];
// $alltype[] = ['name' => '卡券' , 'type' => 'coupon'];
// $alltype[] = ['name' => '拼团' , 'type' => 'wlfightgroup'];
// $alltype[] = ['name' => '团购' , 'type' => 'groupon'];
// $alltype[] = ['name' => '砍价' , 'type' => 'bargain'];
$cultivate_class = Category::getStoreCategory();
foreach ($cultivate_class as $cultivate_class_val) {
$alltype[] = ['name' => $cultivate_class_val['name'], 'type' => 'rush', 'cc_id' => $cultivate_class_val['id']];
}
$data['typelist'] = $alltype;
$data['storelist'] = $alladmin;
}
$page = $_GPC['page'] ? $_GPC['page'] : 1;
$type = trim($_GPC['type']);
$cc_id = trim($_GPC['cc_id']);
$storeid = intval($_GPC['storeid']);
$time = trim($_GPC['time']);
$where = ['uniacid' => $_W['uniacid'] , 'verifmid' => $_W['mid']];
if (!empty($type)) {
$where['plugin'] = $type;
}
if (!empty($cc_id)) {
$where['cc_id'] = $cc_id;
}
if (!empty($storeid)) {
$where['storeid'] = $storeid;
}
if (!empty($time)) {
if ($time == 'today') {
$starttime = strtotime(date('Y-m-d'));
$endtime = $starttime + 86399;
}
else if ($time == 'week') {
$starttime = strtotime("previous monday");
$endtime = time();
}
else if ($time == 'month') {
$starttime = mktime(0 , 0 , 0 , date('m') , 1 , date('Y'));
$endtime = time();
}
else {
$times = explode(',' , $time);
$starttime = $times[0];
$endtime = ($starttime > $times[1]) ? $starttime + 86399 : $times[1] + 86399;
}
$where['createtime>'] = $starttime;
$where['createtime<'] = $endtime;
}
$data1 = Util::createStandardWhereString($where);
$allfen = pdo_fetchcolumn('SELECT SUM(num) FROM ' . tablename(PDO_NAME . "verifrecord") . " WHERE $data1[0] " , $data1[1]);
$myorder = Util::getNumData('mid,storeid,createtime,verifrcode,verifnickname,orderid,plugin,verifmid,remark,type,num,cc_id' , PDO_NAME . 'verifrecord' , $where , 'ID DESC' , $page , 20 , 1);
$allnum = $myorder[2];
$myorder = $myorder[0];
foreach ($myorder as $key => &$value) {
$member = pdo_get(PDO_NAME . 'member',['id' => $value['mid']],['avatar' , 'mobile', 'encodename']);
//$member = Member::wl_member_get($value['mid'] , ['nickname' , 'avatar' , 'mobile', 'encodename']);
$value['nickname'] = base64_decode($member['encodename']);
$value['mobile'] = $member['mobile'];
$value['avatar'] = tomedia($member['avatar']);
if (empty($value['verifnickname'])) {
$verifnickname = pdo_getcolumn(PDO_NAME . 'merchantuser' , [
'uniacid' => $_W['uniacid'] ,
'mid' => $value['verifmid'] ,
'storeid' => $value['storeid']
] , 'name');
$value['verifnickname'] = $verifnickname;
}
$value['createtime'] = date('Y-m-d H:i:s' , $value['createtime']);
$cc_name = pdo_getcolumn(PDO_NAME . 'cultivate_class',['id' => $value['cc_id']],'name');
$value['classname'] = $cc_name ?: ''; // 自定义特殊分类
//处理数据
switch ($value['plugin']) {
case 'rush':
$order = pdo_get(PDO_NAME . 'rush_order' , ['id' => $value['orderid']] , [
'optionid' ,
'activityid'
]);
$value['goodimg'] = pdo_getcolumn(PDO_NAME . 'rush_activity' , ['id' => $order['activityid']] , 'thumb');
$optionid = $order['optionid'];
$value['pluginname'] = '抢购';
$value['orderprice'] = pdo_getcolumn(PDO_NAME . 'smallorder' , ['checkcode' => $value['verifrcode'],'plugin' => $value['plugin'],'orderid' => $value['orderid']] , 'orderprice');
break;//抢购
case 'groupon':
$order = pdo_get(PDO_NAME . 'order' , ['id' => $value['orderid']] , [
'specid' ,
'fkid'
]);
$optionid = $order['specid'];
$value['goodimg'] = pdo_getcolumn(PDO_NAME . 'groupon_activity' , ['id' => $order['fkid']] , 'thumb');
$value['pluginname'] = '团购';
$value['orderprice'] = pdo_getcolumn(PDO_NAME . 'smallorder' , ['checkcode' => $value['verifrcode'],'plugin' => $value['plugin'],'orderid' => $value['orderid']] , 'orderprice');
break;//团购
case 'wlfightgroup':
$order = pdo_get(PDO_NAME . 'order' , ['id' => $value['orderid']] , [
'specid' ,
'fkid'
]);
$optionid = $order['specid'];
$value['goodimg'] = pdo_getcolumn(PDO_NAME . 'fightgroup_goods' , ['id' => $order['fkid']] , 'logo');
$value['pluginname'] = '拼团';
$value['orderprice'] = pdo_getcolumn(PDO_NAME . 'smallorder' , ['checkcode' => $value['verifrcode'],'plugin' => $value['plugin'],'orderid' => $value['orderid']] , 'orderprice');
break;//拼团
case 'coupon':
$order = pdo_get(PDO_NAME . 'order' , ['id' => $value['orderid']] , ['fkid']);
$value['goodimg'] = pdo_getcolumn(PDO_NAME . 'couponlist' , ['id' => $order['fkid']] , 'logo');
$value['pluginname'] = '卡券';
$value['orderprice'] = pdo_getcolumn(PDO_NAME . 'smallorder' , ['checkcode' => $value['verifrcode'],'plugin' => $value['plugin'],'orderid' => $value['orderid']] , 'orderprice');
break;//卡券
case 'wlcoupon':
$order = pdo_get(PDO_NAME . 'order' , ['id' => $value['orderid']] , ['fkid']);
$value['goodimg'] = pdo_getcolumn(PDO_NAME . 'couponlist' , ['id' => $order['fkid']] , 'logo');
$value['pluginname'] = '卡券';
$value['orderprice'] = pdo_getcolumn(PDO_NAME . 'smallorder' , ['checkcode' => $value['verifrcode'],'plugin' => $value['plugin'],'orderid' => $value['orderid']] , 'orderprice');
break;//卡券
case 'bargain':
$order = pdo_get(PDO_NAME . 'order' , ['id' => $value['orderid']] , ['fkid']);
$value['goodimg'] = pdo_getcolumn(PDO_NAME . 'bargain_activity' , ['id' => $order['fkid']] , 'thumb');
$value['pluginname'] = '砍价';
$value['orderprice'] = pdo_getcolumn(PDO_NAME . 'smallorder' , ['checkcode' => $value['verifrcode'],'plugin' => $value['plugin'],'orderid' => $value['orderid']] , 'orderprice');
break;//砍价
case 'halfcard1':
$value['goodimg'] = pdo_getcolumn(PDO_NAME . 'merchantdata' , ['id' => $value['storeid']] , 'logo');
$value['pluginname'] = '会员特权';
$value['orderprice'] = pdo_getcolumn(PDO_NAME . 'timecardrecord' , ['id' => $value['verifrcode']] , 'realmoney');
break;//特权
case 'halfcard2':
$value['goodimg'] = pdo_getcolumn(PDO_NAME . 'merchantdata' , ['id' => $value['storeid']] , 'logo');
$value['pluginname'] = '大礼包';
$value['orderprice'] = pdo_getcolumn(PDO_NAME . 'timecardrecord' , ['id' => $value['verifrcode']] , 'realmoney');
break;//大礼包
}
//查找规格
if ($value['plugin'] == 'rush') {
$optionid = pdo_getcolumn(PDO_NAME . 'rush_order' , ['id' => $value['orderid']] , 'optionid');
}
else if ($value['plugin'] == 'groupon' || $value['plugin'] == 'wlfightgroup') {
$optionid = pdo_getcolumn(PDO_NAME . 'order' , ['id' => $value['orderid']] , 'specid');
}
if ($optionid) {
$value['optionname'] = pdo_getcolumn(PDO_NAME . 'goods_option' , ['id' => $optionid] , 'title');
}
else {
$value['optionname'] = '';
}
$value['storename'] = pdo_getcolumn(PDO_NAME . 'merchantdata' , [
'uniacid' => $_W['uniacid'] ,
'id' => $value['storeid']
] , 'storename');
$value['goodimg'] = tomedia($value['goodimg']);
//兼容处理
if (empty($value['goodimg'])) $value['goodimg'] = $_W['siteroot'] . 'web/resource/images/nopic-107.png';
}
$data['list'] = $myorder;
$data['allnum'] = intval($allnum);
$data['allfen'] = intval($allfen);
$data['totalpage'] = ceil($allnum / 20);
$this->renderSuccess('核销记录' , $data);
}
/**
* Comment: 余额充值页面
* Author: wlf
* Date: 2019/8/26 14:18
*/
public function rechargePage()
{
global $_W , $_GPC;
$data = [];
$settings = Setting::wlsetting_read('recharge');
$cashsets = Setting::wlsetting_read('cashset');
if (empty($cashsets['withdrawals'])) {
$data['nowithdrawals'] = 1;
}
if ($settings['status']) {
$count = count($settings['kilometre']);
for ($i = 0 ; $i < $count ; $i++) {
$array[$i]['kilometre'] = $settings['kilometre'][$i];
$array[$i]['kilmoney'] = $settings['kilmoney'][$i];
}
}
else {
$data['norecharge'] = 1;
}
foreach ($array as $key => $val) {
$dos[$key] = $val['kilometre'];
}
array_multisort($dos , SORT_ASC , $array);
$data['activity'] = $array;
$data['credit'] = sprintf("%.2f" , $_W['wlmember']['credit2']);
//N561定制
if (file_exists(PATH_MODULE . 'N561.log')) {
$data['transfer'] = 1;
}
$this->renderSuccess('充值页面数据' , $data);
}
/**
* Comment: 余额充值订单生成
* Author: wlf
* Date: 2019/8/26 14:31
*/
public function rechargeOrder()
{
global $_W , $_GPC;
$data = [];
$money = sprintf("%.2f" , trim($_GPC['money']));
$settings = Setting::wlsetting_read('recharge');
if (!$settings['status']) {
$this->renderError('余额充值未开启');
}
if ($money < 0.01) {
$this->renderError('充值金额错误');
}
$member = pdo_get('wlmerchant_member' , ['id' => $_W['mid']] , ['uid']);
$mastmobile = unserialize($_W['wlsetting']['userset']['plugin']);
if (empty($_W['wlmember']['mobile']) && in_array('recharge' , $mastmobile)) {
$this->renderError('未绑定手机号,无法支付');
}
//创建订单
$data = [
'uniacid' => $_W['uniacid'] ,
'mid' => $_W['mid'] ,
'aid' => $_W['aid'] ,
'fkid' => 0 ,
'sid' => 0 ,
'status' => 0 ,
'paytype' => 0 ,
'createtime' => time() ,
'orderno' => createUniontid() ,
'price' => $money ,
'goodsprice' => $money ,
'num' => 1 ,
'plugin' => 'member' ,
'payfor' => 'recharge' ,
'issettlement' => 3
];
pdo_insert(PDO_NAME . 'order' , $data);
$orderid = pdo_insertid();
if ($orderid) {
$data['orderid'] = $orderid;
$this->renderSuccess('生成订单成功' , $data);
}
else {
$this->renderError('订单创建失败,请重试');
}
}
/**
* Comment: 余额提现页面
* Author: wlf
* Date: 2019/8/28 15:05
*/
public function creditCashPage()
{
global $_W , $_GPC;
$cashsets = Setting::wlsetting_read('cashset');
if (empty($cashsets['withdrawals'])) {
$this->renderError('余额提现已关闭');
}
$data = [];
$memberInfo = pdo_get('wlmerchant_member' , ['id' => $_W['mid']]);
$data['nowmoney'] = pdo_getcolumn('mc_members' , [
'uniacid' => $_W['uniacid'] ,
'uid' => $memberInfo['uid']
] , 'credit2');
//可提现金额 - 支付返现金额 = 实际可提现金额
$data['nowmoney'] = sprintf("%.2f" , $data['nowmoney'] - $memberInfo['cash_back_money']);
if (!$data['nowmoney']) {
$data['nowmoney'] = 0.00;
}
$data['alcredit'] = pdo_getcolumn('wlmerchant_settlement_record' , [
'mid' => $memberInfo['id'] ,
'type' => 4 ,
'status' => 5
] , ["SUM(sapplymoney)"]);
//提现方式
$payment_type = $cashsets['payment_type'];
if ($payment_type['alipay']) {
$data['alipaystatus'] = 1;
$data['alipay'] = $memberInfo['alipay'];
$data['realname'] = $memberInfo['realname'];
}
else {
$data['alipaystatus'] = 0;
}
if ($payment_type['we_chat']) {
$data['wechatstatus'] = 1;
}
else {
$data['wechatstatus'] = 0;
}
if ($payment_type['bank_card']) {
$data['bankcardstatus'] = 1;
$data['bank_name'] = $memberInfo['bank_name'];
$data['card_number'] = $memberInfo['card_number'];
$data['bank_username'] = $memberInfo['bank_username'];
}
else {
$data['bankcardstatus'] = 0;
}
$data['syssalepercent'] = sprintf("%.2f" , $cashsets['memberpercent']);
$data['lowsetmoney'] = $cashsets['lowsetmoney'] ? : 0;
$data['maxsetmoney'] = $cashsets['maxsetmoney'] ? : 0;
$this->renderSuccess('余额提现页面' , $data);
}
/**
* Comment: 余额提现申请
* Author: wlf
* Date: 2019/8/28 15:36
*/
public function creditCashing()
{
global $_W , $_GPC;
$cashsets = Setting::wlsetting_read('cashset');
//判断临时申请内容
$flag = pdo_get('wlmerchant_settlement_temporary',array('mid' => $_W['mid'],'uniacid'=>$_W['uniacid'],'type' => 1),array('id'));
if(!empty($flag)){
$this->renderError('您有处理中的提现申请,请稍后再试');
}
$settlementmoney = $_GPC['settlementmoney'];
$cashtype = $_GPC['cashtype'];
//判断提现时间限制
$memberInfo = pdo_get('wlmerchant_member' , ['id' => $_W['mid']]);
$shopIntervalTime = $cashsets['shopIntervalTime'];
if ($shopIntervalTime > 0) {
//获取上次提现申请时间
$startTime = pdo_fetchcolumn("SELECT applytime FROM " . tablename(PDO_NAME . "settlement_record") . " WHERE mid = {$_W['mid']} AND type = 4 AND uniacid = {$_W['uniacid']} ORDER BY applytime DESC ");
$interval = time() - $startTime;
$intervalDay = $interval / 3600 / 24;
//判断间隔时间
$intercalRes = ceil($shopIntervalTime - $intervalDay);
if ($intercalRes > 0) {
die(json_encode(['errno' => 1 , 'message' => '请等' . $intercalRes . '天后再申请!']));
$this->renderError('请等' . $intercalRes . '天后再申请!');
}
}
//判断提现金额限制
if ($_GPC['settlementmoney'] < $cashsets['lowsetmoney']) {
$this->renderError('申请失败,最低提现金额为' . $cashsets['lowsetmoney'] . '元。');
}
if ($_GPC['settlementmoney'] > $cashsets['maxsetmoney'] && $cashsets['maxsetmoney'] > 0) {
$this->renderError('申请失败,单次最大提现金额为' . $cashsets['maxsetmoney'] . '元。');
}
//提现方式
if ($cashtype == 1) {
$alipay = $_GPC['alipay'];
$realname = $_GPC['realname'];
if (empty($alipay)) {
$this->renderError('请填写支付宝账号');
}
if (empty($realname)) {
$this->renderError('请填写支付宝账号真实姓名');
}
pdo_update('wlmerchant_member' , ['alipay' => $alipay,'realname'=>$realname] , ['id' => $_W['mid']]);
}
if ($cashtype == 2) {
if ($_W['source'] == 1) {
if (empty($memberInfo['openid'])) {
$this->renderError('您无微信账号数据,无法微信提现');
}
else {
$sopenid = $memberInfo['openid'];
}
}
else if ($_W['source'] == 3) {
if (empty($memberInfo['wechat_openid'])) {
$this->renderError('您无微信账号数据,无法微信提现');
}
else {
$sopenid = $memberInfo['wechat_openid'];
}
}
}
else {
$sopenid = '';
}
if ($cashtype == 3) {
$bank_name = $_GPC['bank_name'];
$card_number = $_GPC['card_number'];
$bank_username = $_GPC['bank_username'];
if (empty($bank_name) || empty($card_number) || empty($bank_username)) {
$this->renderError('请填写银行卡各项参数');
}
pdo_update('wlmerchant_member' , [
'bank_name' => $bank_name ,
'card_number' => $card_number ,
'bank_username' => $bank_username
] , ['id' => $_W['mid']]);
}
//判断一下还有没有余额
$nowmoney = pdo_getcolumn('mc_members' , [
'uniacid' => $_W['uniacid'] ,
'uid' => $memberInfo['uid']
] , 'credit2');
if ($settlementmoney > $nowmoney) {
$this->renderError('可提现余额不足');
}
$syssalepercent = sprintf("%.2f" , $cashsets['memberpercent']);
$spercentmoney = sprintf("%.2f" , $syssalepercent * $settlementmoney / 100);
$sgetmoney = sprintf("%.2f" , $settlementmoney - $spercentmoney);
$data = [
'uniacid' => $_W['uniacid'] ,
'mid' => $memberInfo['id'] ,
'aid' => $_W['aid'] ,
'status' => 2 ,
'type' => 4 ,
'sapplymoney' => $settlementmoney ,
'sgetmoney' => $sgetmoney ,
'spercentmoney' => $spercentmoney ,
'spercent' => $syssalepercent ,
'applytime' => TIMESTAMP ,
'updatetime' => TIMESTAMP ,
'sopenid' => $sopenid ,
'payment_type' => $cashtype ,
'source' => $_W['source']
];
$value = serialize($data);
$temporary = array(
'info' => $value,
'type' => 1,
'uniacid' => $_W['uniacid'],
'mid' => $data['mid']
);
$res = pdo_insert(PDO_NAME . 'settlement_temporary' , $temporary);
if($res){
$this->renderSuccess('申请成功');
}else{
$this->renderError('申请失败,请重试');
}
}
/**
* Comment: 余额提现记录
* Author: wlf
* Date: 2019/8/28 14:16
*/
public function creditCashRecord()
{
global $_W , $_GPC;
$status = $_GPC['status'];
$page = $_GPC['page'] ? $_GPC['page'] : 1;
$page_start = $page * 10 - 10;
$where = " WHERE uniacid = {$_W['uniacid']} AND mid = {$_W['mid']} AND type = 4";
if ($status == 1) {
$where .= " AND status IN (1,2,3)";
}
else if ($status == 2) {
$where .= " AND status = 5 ";
}
else if ($status == 3) {
$where .= " AND status IN (-1,-2)";
}
$record = pdo_fetchall("SELECT applytime,sapplymoney,payment_type,spercentmoney,status FROM " . tablename('wlmerchant_settlement_record') . "{$where} ORDER BY id DESC LIMIT {$page_start},10");
$allnum = pdo_fetchcolumn('SELECT count(id) FROM ' . tablename('wlmerchant_settlement_record') . " {$where}");
if ($record) {
foreach ($record as $re) {
$re['applytime'] = date('Y-m-d H:i:s' , $re['applytime']);
}
}
$data['list'] = $record;
$data['pagetotal'] = ceil($allnum / 10);
$this->renderSuccess('提现列表' , $data);
}
/**
* Comment: 用户主页信息获取
* Author: zzw
* Date: 2019/8/30 17:18
*/
public function mainPageInfo()
{
global $_W , $_GPC;
#1、参数获取
$_GPC['mid'] ? $mid = $_GPC['mid'] : $this->renderError("缺少参数:mid");
$set = Setting::wlsetting_read('userset');
#2、获取用户信息
$info = pdo_get(PDO_NAME . "member" , ['id' => $mid] , [
'nickname' ,
'encodename',
'avatar' ,
'createtime' ,
'main_browse',
'identity_id'
]);
$info['nickname'] = base64_decode($info['encodename']);
$browse = $info['main_browse'] ? : intval(0);
$info['createtime'] = date("Y-m-d H:i:s" , $info['createtime']);
if ($info['main_browse'] >= 10000) $info['main_browse'] = sprintf("%.1f" , ($info['main_browse'] / 10000)) . '万';
#3、获取用户访客总数
$info['visitor'] = pdo_getcolumn(PDO_NAME . "member_visitor_record" , ['mid' => $mid] , 'count(*)');
#4、获取用户发帖总数
$info['release'] = pdo_getcolumn(PDO_NAME . "pocket_informations" , [
'mid' => $mid ,
'status' => 0
] , 'count(*)');
#5、用户访问操作
if ($_W['mid'] != $mid) {
#6、当前用户的浏览量自增一
pdo_update(PDO_NAME . "member" , ['main_browse' => ($browse + 1)] , ['id' => $mid]);
#7、判断当前用户是否为第一次访问
$data = ['visitor_id' => $_W['mid'] , 'mid' => $mid];
$visitor_id = pdo_getcolumn(PDO_NAME . "member_visitor_record" , $data , 'id');
if ($visitor_id) {
pdo_update(PDO_NAME . "member_visitor_record" , ['update_time' => time()] , ['id' => $visitor_id]);
}
else {
$data['create_time'] = time();
$data['update_time'] = time();
pdo_insert(PDO_NAME . "member_visitor_record" , $data);
}
$member_interest = pdo_get(PDO_NAME . 'member_interest',['mid' => $_W['mid'],'interest_mid' => $mid]);
$info['is_interest'] = $member_interest?true:false;
}
//获取背景图
if ($_W['mid'] != $mid) {
$info['useself'] = 0;
}
else {
$info['useself'] = 1;
}
$main_bgimg = pdo_getcolumn(PDO_NAME . 'member' , ['id' => $mid] , 'main_bgimg');
if (!empty($main_bgimg)) {
$info['thumb'] = tomedia($main_bgimg);
$info['isdefault'] = 0;
}
else {
$info['thumb'] = !empty($set['usermainbg']) ? tomedia($set['usermainbg']) : URL_MODULE . 'h5/resource/image/mainbgimg.png';
$info['isdefault'] = 1;
}
//获取认证信息
if (p('attestation')) {
$info['attestation'] = Attestation::checkAttestation(1 , $mid);
}
else {
$info['attestation'] = 0;
}
//判断当前平台是否存在掌上信息插件
$info['is_pocket'] = intval(0);//0=不存在 1=存在
if (uniacid_p('pocket') && $info['release'] > 0) {
$info['is_pocket'] = intval(1);
}
//判断是否有商户
$storeinfo = pdo_fetchall("SELECT b.id FROM " . tablename(PDO_NAME . "merchantuser") . " as a RIGHT JOIN " . tablename(PDO_NAME . "merchantdata") . " as b ON a.storeid = b.id WHERE a.mid = {$mid} AND a.enabled = 1 AND b.enabled = 1 GROUP BY a.storeid ");
$storenum = count($storeinfo);
$info['is_store'] = $storenum > 0 ? 1 : 0;
//判断用户是否是家政服务者
$info['is_artificer'] = intval(0);//0=不存在 1=存在
if (p('housekeep')) {
$artificer = pdo_get(PDO_NAME.'housekeep_artificer',array('uniacid'=>$_W['uniacid'],'status' => 1,'aid'=>$_W['aid'],'mid' => $mid),['id','detail','thumbs','casethumbs','tagarray']);
if($artificer['id'] > 0){
$info['is_artificer'] = intval(1);
$info['housekeep_type'] = Housekeep::getRelation($artificer['id'],2);
$info['thumbs'] = Housekeep::beautifyImgInfo($artificer['thumbs']);
$info['casethumbs'] = Housekeep::beautifyImgInfo($artificer['casethumbs']);
$info['detail'] = $artificer['detail'];
$info['tagarray'] = unserialize($artificer['tagarray']);
}
}
$identity_data = pdo_get(PDO_NAME . 'member_identity',['id' => $info['identity_id']]); // 获取身份
$info['identity'] = $identity_data ? $identity_data['name'] : '未知'; // 身份
$info['interest_user_count'] = pdo_count(PDO_NAME . 'member_interest',['mid' => $mid]); // 关注数量
$info['fans_user_count'] = pdo_count(PDO_NAME . 'member_interest',['interest_mid' => $mid]); // 粉丝数量
$student_info = pdo_get(PDO_NAME . 'member_student_info',['mid' => $mid,'check_status' => 1,'status' => 1],['department_name','school_name','code']);
$info['school_department_name'] = $student_info['department_name'] ?: ''; // 学院名称
$info['school_name'] = $student_info['school_name'] ?: ''; // 学校名称
$info['school_code'] = $student_info['code'] ?: ''; // 学号
$this->renderSuccess("用户主页信息" , $info);
}
/**
* Comment: 获取用户访客列表
* Author: zzw
* Date: 2019/8/30 17:47
*/
public function visitorList()
{
global $_W , $_GPC;
#1、参数获取
$_GPC['mid'] ? $mid = $_GPC['mid'] : $this->renderError("缺少参数:mid");
$page = $_GPC['page'] ? : 1;
$pageIndex = $_GPC['page_index'] ? : 10;
$pageStart = $page * $pageIndex - $pageIndex;
#2、获取总数
$total = pdo_getcolumn(PDO_NAME . "member_visitor_record" , ['mid' => $mid] , 'count(*)');
#3、获取访客信息列表
$list = pdo_fetchall("SELECT b.id as mid,b.nickname,b.encodename,b.avatar,FROM_UNIXTIME(a.update_time,'%Y-%m-%d %H:%i:%S') as update_time FROM " . tablename(PDO_NAME . "member_visitor_record") . " as a LEFT JOIN " . tablename(PDO_NAME . "member") . " as b ON a.visitor_id = b.id WHERE a.mid = {$mid} ORDER BY a.update_time DESC LIMIT {$pageStart},{$pageIndex}");
foreach ($list as &$val) $val['nickname'] = base64_decode($val['encodename']);
#2、数据拼装
$data['total'] = ceil($total / $pageIndex);
$data['list'] = $list;
$this->renderSuccess('访客列表' , $data);
}
/**
* Comment: 买家提醒商家发货
* Author: wlf
* Date: 2019/9/19 11:43
*/
public function remindSend()
{
global $_W , $_GPC;
$orderid = $_GPC['orderid'];
$plugin = $_GPC['plugin'];
$goodsname = $_GPC['goodsname'];
if ($orderid == $_GPC['remind_Send']) {
$this->renderError('此订单已经提醒发货');
}
//获取订单数据
if ($plugin == 'rush') {
$order = pdo_get('wlmerchant_rush_order' , ['id' => $orderid] , ['sid' , 'num' , 'orderno']);
}
else {
$order = pdo_get('wlmerchant_order' , ['id' => $orderid] , ['sid' , 'num' , 'orderno']);
}
//获取商户店员
$merchantusers = pdo_fetchall("SELECT mid FROM " . tablename('wlmerchant_merchantuser') . "WHERE storeid = {$order['sid']} AND ismain IN (1,3) ORDER BY id DESC");
if ($merchantusers) {
foreach ($merchantusers as $user) {
$data = [
'first' => '订单编号[' . $order['orderno'] . ']' ,
'type' => '买家提醒发货' ,//业务类型
'content' => '商品名称:[' . $goodsname . ']' ,//业务内容
'status' => '待发货' ,//处理结果
'time' => date('Y-m-d H:i:s' , time()) ,//操作时间
'remark' => '请商家负责人尽快发货'
];
TempModel::sendInit('service' , $user['mid'] , $data , $_W['source'] , '');
}
}
isetcookie("remind_Send" , $orderid , 86400);
$this->renderSuccess('提醒成功');
}
/**
* Comment: 登录接口(所有登录方式) —— 开发中(小程序完成)
* Author: zzw
* Date: 2019/11/18 15:09
*/
public function login()
{
global $_W , $_GPC;
#1、参数获取
$source = $_GPC['source1'] ? $_GPC['source1'] : $_W['source'];
if(empty($source)){
$this->renderError('访问渠道错误!');//1=公众号(默认);2=H5;3=小程序 4=app
}
/* $type = 'mode' . $_GPC['mode'] OR $this->renderError('非法登录,请使用正确的登录方式');//1-账号密码登录 2=微信登录
#2、生成对应的方法名称
# 'loginSource1Mode2'=公众号微信登录;
# 'loginSource2Mode1'=H5账号密码登录;
# 'loginSource3Mode2'=小程序微信登录;
$name = 'login' . ucfirst($source) . ucfirst($type);
#3、判断方法是否存在
$instance = new Login();
if (method_exists($instance, $name)) $result = $instance->$name($_GPC);
else $this->renderError('非法登录,请使用正确的登录方式!');
#4、根据登录结果进行对应的操作
switch ($name) {
case 'loginSource1Mode2':
//拼装用户信息
$userInfo = [
'openid' => $result['openid'] ?: '',//用户openid
'nickname' => $result['nickname'] ?: '',//用户昵称
'avatar' => $result['headimgurl'] ?: '',//用户头像
'unionid' => $result['unionid'] ?: '',//用户unionid
];
//判断是否获取用户信息
if (empty($userInfo['openid'])) $this->renderError('登录信息获取失败!');
//获取用户数据
$sql = "SELECT id,tokey FROM " . tablename(PDO_NAME . "member") . " WHERE openid = '{$userInfo['openid']}' ";
break;//公众号微信登录
case 'loginSource2Mode1':
break;//H5账号密码登录
case 'loginSource3Mode2':
//解密获取用户基本信息
$encryptedData = $_GPC['encryptedData'] OR $this->renderError('授权失败,缺少加密信息!');
$iv = $_GPC['iv'] OR $this->renderError('授权失败,缺少加密信息');
$basicInfo = openssl_decrypt(base64_decode($encryptedData), "AES-128-CBC", base64_decode($result['session_key']), 1, base64_decode($iv));
$basicInfo = json_decode($basicInfo, true);
//拼装用户数据信息
$userInfo = [
'wechat_openid' => $result['openid'] ?: '',//用户openid
'nickname' => $basicInfo['nickName'] ?: '',//用户昵称
'avatar' => $basicInfo['avatarUrl'] ?: '',//用户头像
'unionid' => $result['unionid'] ?: '' //用户unionid
];
$sessionKey = $result['session_key'] ?: '';
//判断是否获取用户信息
if (empty($userInfo['wechat_openid'])) $this->renderError('登录信息获取失败!');
//获取用户数据
$sql = "SELECT id,tokey FROM " . tablename(PDO_NAME . "member") . " WHERE wechat_openid = '{$userInfo['wechat_openid']}'";
break;//小程序微信登录
}
#4、判断用户是否存在
$userInfo2 = pdo_fetch($sql);
if (!$userInfo2) {
//生成微擎用户信息数据
$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' => $userInfo['nickname'],
];
//储存微擎用户数据信息
pdo_insert('mc_members', $data);
$uid = pdo_insertid();
//生成平台用户数据信息
$data2 = [
'uid' => $uid,
'uniacid' => $_W['uniacid'],
'openid' => $userInfo['openid'],
'wechat_openid' => $userInfo['wechat_openid'],
'nickname' => $userInfo['nickname'],
'salt' => $salt,
'avatar' => $userInfo['avatar'] ?: './addons/weliam_smartcity/app/resource/image/touxiang.png',
'registerflag' => 1,
'tokey' => strtoupper(MD5(sha1(time() . random(12)))),
'createtime' => time()
];
if (!empty($sessionKey)) $data2['session_key'] = $sessionKey;
pdo_insert(PDO_NAME . 'member', $data2);
} else if (!empty($sessionKey)) {
$data2 = [
'nickname' => $userInfo['nickname'],
'avatar' => $userInfo['avatar'] ?: './addons/weliam_smartcity/app/resource/image/touxiang.png',
];
if (!empty($sessionKey)) $data2['session_key'] = $sessionKey;
pdo_update(PDO_NAME . "member", $data2, ['id' => $userInfo2['id']]);
}
$userInfo['tokey'] = $userInfo2['tokey'] ? $userInfo2['tokey'] : $data2['tokey'];
wl_setcookie('usersign', $userInfo, 3600 * 24 * 30);
wl_setcookie('user_token', $userInfo['tokey'], 3600 * 24 * 30);*/
if($source == 3){
$result = Login::loginSource3Mode2($_GPC);
if (is_error($result)) {
$this->renderError($result['message']);
}
//解密获取用户基本信息
$encryptedData = $_GPC['encryptedData'] OR $this->renderError('授权失败,缺少加密信息!');
$iv = $_GPC['iv'] OR $this->renderError('授权失败,缺少加密信息');
$basicInfo = openssl_decrypt(base64_decode($encryptedData) , "AES-128-CBC" , base64_decode($result['session_key']) , 1 , base64_decode($iv));
if(empty($basicInfo)){
$this->renderError('用户信息解密失败,请返回重新登录');
}
$basicInfo = json_decode($basicInfo , true);
if (empty($result['openid'])) {
$this->renderError('登录信息获取失败!');
}
//拼装用户数据信息
$userInfo = [
'wechat_openid' => $result['openid'] ? : '' ,//用户openid
'nickname' => $basicInfo['nickName'] ? : '' ,//用户昵称
'avatar' => $basicInfo['avatarUrl'] ? : '' ,//用户头像
'unionid' => $basicInfo['unionId'] ? $basicInfo['unionId'] : $result['unionid'] ,//用户unionid
'session_key' => $result['session_key'] ? : ''//用户session_key
];
$member = Member::wl_member_create($userInfo , 'wxapp');
$head_id = intval($_GPC['head_id']);
if ($_W['source'] == 3 && $head_id > 0 && p('distribution') && $head_id != $member['id']) {
Distribution::addJunior($head_id , $member['id']);
}
$token = pdo_getcolumn(PDO_NAME . 'login' , [
'token' => $member['tokey'] ,
'refresh_time >' => time()
] , 'secret_key');
if (empty($token)) {
$res = Login::generateToken($member['tokey'] , 'login');
$token = $res['message'];
}
}else if($source == 4){
file_put_contents(PATH_DATA . "appinfo.log", var_export($_GPC, true) . PHP_EOL, FILE_APPEND);
$userInfo = [
'webapp_openid' => $_GPC['openid'] ? : '' ,//用户openid
'nickname' => $_GPC['nickName'] ? : '' ,//用户昵称
'avatar' => $_GPC['avatarUrl'] ? : '' ,//用户头像
'unionid' => $_GPC['unionid'],//用户unionid
];
if (empty($userInfo['webapp_openid'])) {
$this->renderError('无openid无法登陆');
}
$member = Member::wl_member_create($userInfo , 'webapp');
$token = pdo_getcolumn(PDO_NAME . 'login' , [
'token' => $member['tokey'] ,
'refresh_time >' => time()
] , 'secret_key');
if (empty($token)) {
$res = Login::generateToken($member['tokey'] , 'login');
$token = $res['message'];
}
}
$this->renderSuccess('登录成功' , ['token' => $token]);
}
/**
* Comment: 修改个人信息
* Author: zzw
* Date: 2019/11/5 14:05
*/
public function setUserInfo()
{
global $_W , $_GPC;
#1、参数获取
$type = $_GPC['type'] ? : 'get';//get=获取信息;set=设置信息
if(!empty($_GPC['realname'])){
$info['realname'] = $_GPC['realname'];
}
if(!empty($_GPC['bank_name'])){
$info['bank_name'] = $_GPC['bank_name'];
}
if(!empty($_GPC['card_number'])){
$info['card_number'] = $_GPC['card_number'];
}
if(!empty($_GPC['bank_username'])){
$info['bank_username'] = $_GPC['bank_username'];
}
if(!empty($_GPC['alipay'])){
$info['alipay'] = $_GPC['alipay'];
}
#2、获取用户信息
if ($type == 'get') {
$getInfo = pdo_get(PDO_NAME . "member" , ['id' => $_W['mid']] , [
'realname' ,
'bank_name' ,
'card_number' ,
'bank_username' ,
'alipay'
]);
//判断设置项目
$getInfo['bankstatus'] = $_W['wlsetting']['cashset']['payment_type']['bank_card'] ? : 0;
$getInfo['alipaystatus'] = $_W['wlsetting']['cashset']['payment_type']['alipay'] ? : 0;
if ($getInfo){
$this->renderSuccess('用户信息' , $getInfo);
}else{
$this->renderError('用户信息不存在');
}
}
#3、设置用户信息
if ($type == 'set' && is_array($info) && count($info) > 0) {
//查询是否修改内容
$isHave = pdo_get(PDO_NAME . "member" , $info);
if ($isHave) $this->renderError('请修改信息后提交!');
//修改内容 提交修改内容的数据信息
$setInfo = pdo_update(PDO_NAME . "member" , $info , ['id' => $_W['mid']]);
if ($setInfo) $this->renderSuccess('修改成功');
else $this->renderError('修改失败');
}
}
/**
* Comment: 上传个人主页图片
* Author: wlf
* Date: 2019/11/15 16:23
*/
public function setMainBgImg()
{
global $_W , $_GPC;
$img = $_GPC['img'];
pdo_update('wlmerchant_member' , ['main_bgimg' => $img] , ['id' => $_W['mid']]);
$this->renderSuccess('设置成功');
}
/**
* Comment: 小程序用户的手机加密信息解密操作
* Author: zzw
* Date: 2019/11/18 15:37
*/
public function phoneDecrypt(){
global $_W , $_GPC;
//基本参数信息获取
$data = $_GPC['data'] OR $this->renderError('缺少加密数据!');
$iv = $_GPC['iv'] OR $this->renderError('缺少加密算法的初始向量!');
$reslus = Login::loginSource3Mode2($_GPC);
$session_key = $reslus['session_key'];
if(!$session_key) $this->reLogin('session_key为空,请重新登录');
//数据解密
try {
$content = WeApp::decryptedMobile($session_key , $iv , $data);
$this->renderSuccess('用户手机号' , ['phone' => $content['phoneNumber']]);
}catch (Exception $e){
$this->renderError("绑定失败,请重试!");
}
}
/**
* Comment: 通过经纬度获取当前城市参数
* Author: wlf
* Date: 2020/05/18 13:55
*/
public function lng2areaid()
{
global $_W , $_GPC;
$lng = $_GPC['lng'];
$lat = $_GPC['lat'];
if (empty($lng) || empty($lat)) {
$this->renderError('参数错误');
}
$area = MapService::guide_gcoder($lat . ',' . $lng , 0);
if (!is_error($area)) {
$areaid = $area['result']['ad_info']['adcode'];
}
else {
$this->renderError($area['message']);
}
$area = pdo_get('wlmerchant_area' , ['id' => $areaid] , ['pid' , 'level']);
if ($area['level'] == 3) {
$data['countyid'] = $areaid;
$data['cityid'] = $area['pid'];
$data['provinceid'] = pdo_getcolumn(PDO_NAME . 'area' , ['id' => $area['pid']] , 'pid');
}
else if ($area['level'] == 2) {
$data['cityid'] = $areaid;
$data['countyid'] = pdo_getcolumn(PDO_NAME . 'area' , ['pid' => $areaid] , 'id');
$data['provinceid'] = $area['pid'];
}
else if ($area['level'] == 1) {
$data['provinceid'] = $areaid;
$data['cityid'] = pdo_getcolumn(PDO_NAME . 'area' , ['pid' => $areaid] , 'id');
$data['countyid'] = pdo_getcolumn(PDO_NAME . 'area' , ['pid' => $data['cityid']] , 'id');
}
else {
$this->renderError('无信息' , ['provinceid' => 0 , 'cityid' => 0 , 'countyid' => 0]);
}
$this->renderSuccess('城市信息' , $data);
}
/**
* Comment: 创建余额转赠活动(N561定制)
* Author: wlf
* Date: 2020/06/01 18:14
*/
public function createTransfer()
{
global $_W , $_GPC;
if (!file_exists(PATH_MODULE . 'N561.log')) {
$this->renderError('暂无权限');
}
$title = $_GPC['title'];
$allnum = $_GPC['allnum'];
$money = sprintf("%.2f" , $_GPC['money']);
$allmoney = sprintf("%.2f" , $money * $allnum);
MysqlFunction::setTrans(4);
MysqlFunction::startTrans();
$res = Member::credit_update_credit2($_W['mid'] , -$allmoney , '创建转赠活动[' . $title . ']活动扣除余额');
if (!is_error($res)) {
$transfer = [
'uniacid' => $_W['uniacid'] ,
'mid' => $_W['mid'] ,
'title' => $title ,
'allnum' => $allnum ,
'surplus' => $allnum ,
'money' => $money ,
'allmoney' => $allmoney ,
'createtime' => time()
];
$res = pdo_insert(PDO_NAME . 'transfer_list' , $transfer);
$transid = pdo_insertid();
if ($res) {
//生成二维码
//使用默认二维码
$path = 'pages/subPages/balance/collectMoney/collectMoney?transfer_id=' . $transid . '&head_id=' . $_W['mid'];//基本路径,也是小程序路径 页面站位中
#3、二维码生成
//公众号
$path1 = h5_url($path);
$filename = md5('transfer_id' . $transid . 'source1path' . $path1);
$qrCodeLink = Poster::qrcodeimg($path1 , $filename);
$wechatqrlink = tomedia($qrCodeLink);
//小程序
$qrCodeLink3 = WeApp::getQrCode($path , 'qrcode_' . $filename . '.png');
if (is_array($qrCodeLink3)) $qrCodeLink3 = Poster::qrcodeimg($path , $filename);
$wxappqrlink = tomedia($qrCodeLink3);
//生成短连接
$url = h5_url('pages/subPages/balance/collectMoney/collectMoney' , [
'transfer_id' => $transid ,
'head_id' => $_W['mid']
]);
$result = Util::long2short($url);
file_put_contents(PATH_DATA . "long2short.log" , var_export($result , true) . PHP_EOL , FILE_APPEND);
if (!is_error($result) && $result['short_url'] != 'h') {
$url = $result['short_url'];
}
pdo_update(PDO_NAME . 'transfer_list' , [
'wechatqrlink' => $wechatqrlink ,
'wxappqrlink' => $wxappqrlink ,
'pageurl' => $url
] , ['id' => $transid]);
MysqlFunction::commit();
$this->renderSuccess('创建成功' , ['transid' => $transid]);
}
else {
MysqlFunction::rollback();
$this->renderError('活动创建失败,请刷新重试');
}
}
else {
MysqlFunction::rollback();
$this->renderError($res['message']);
}
}
/**
* Comment: 初始化余额转赠活动页面(N561定制)
* Author: wlf
* Date: 2020/06/02 14:10
*/
public function transferpage()
{
global $_W , $_GPC;
if (!file_exists(PATH_MODULE . 'N561.log')) {
$this->renderError('暂无权限');
}
if (empty($_W['mid'])) {
$this->renderError('请先登录');
}
$id = $_GPC['id'];
if (empty($id)) {
$this->renderError('缺少关键参数:id');
}
$transfer = pdo_get('wlmerchant_transfer_list' , ['id' => $id] , ['title' , 'surplus' , 'mid' , 'money']);
$member = pdo_get('wlmerchant_member' , ['id' => $transfer['mid']] , ['nickname' , 'avatar' , 'encodename']);
$data = [
'nickname' => base64_decode($member['encodename']) ,
'avatar' => tomedia($member['avatar']) ,
'title' => $transfer['title'] ,
'money' => $transfer['money']
];
$this->renderSuccess('初始化信息' , $data);
}
/**
* Comment: 用户获取转赠余额(N561定制)
* Author: wlf
* Date: 2020/06/02 14:57
*/
public function getTransfer()
{
global $_W , $_GPC;
if (!file_exists(PATH_MODULE . 'N561.log')) {
$this->renderError('暂无权限');
}
if (empty($_W['mid'])) {
$this->renderError('请先登录');
}
$id = $_GPC['id'];
if (empty($id)) {
$this->renderError('缺少关键参数:id');
}
$realname = $_GPC['realname'];
if (empty($realname)) {
$this->renderError('请填写您的姓名');
}
$mobile = $_GPC['mobile'];
if (empty($mobile)) {
$this->renderError('请填写您的手机号');
}
$flag = pdo_get('wlmerchant_transfer_record' , ['mid' => $_W['mid'] , 'tid' => $id] , ['id']);
if (empty($flag)) {
pdo_update('wlmerchant_member' , ['mobile' => $mobile , 'realname' => $realname] , ['id' => $_W['mid']]);
$transfer = pdo_get('wlmerchant_transfer_list' , ['id' => $id] , [
'title' ,
'surplus' ,
'money' ,
'is_over'
]);
if (!empty($transfer['is_over'])) {
$this->renderError('转赠活动已过期');
}
if ($transfer['surplus'] < 1) {
$this->renderError('转赠活动已结束');
}
MysqlFunction::setTrans(4);
MysqlFunction::startTrans();
pdo_update('wlmerchant_transfer_list' , ['surplus -=' => 1] , ['id' => $id]);
$record = [
'uniacid' => $_W['uniacid'] ,
'tid' => $id ,
'mid' => $_W['mid'] ,
'money' => $transfer['money'] ,
'realname' => $realname ,
'mobile' => $mobile ,
'createtime' => time()
];
$res = pdo_insert(PDO_NAME . 'transfer_record' , $record);
if ($res) {
$changeres = Member::credit_update_credit2($_W['mid'] , $record['money'] , '参与转赠活动[' . $transfer['title'] . ']活动获得余额');
if ($changeres) {
MysqlFunction::commit();
$this->renderSuccess('活动参与成功');
}
else {
MysqlFunction::rollback();
$this->renderError('余额获取失败,请刷新重试');
}
}
else {
MysqlFunction::rollback();
$this->renderError('活动参与失败,请刷新重试');
}
}
else {
$this->renderError('您已参加过此活动,无法重复参加');
}
}
/**
* Comment: 转赠活动详情(N561定制)
* Author: wlf
* Date: 2020/06/02 15:57
*/
public function transferDetail()
{
global $_W , $_GPC;
if (!file_exists(PATH_MODULE . 'N561.log')) {
$this->renderError('暂无权限');
}
$id = $_GPC['id'];
if (empty($id)) {
$this->renderError('缺少关键参数:id');
}
$transfer = pdo_get('wlmerchant_transfer_list' , ['id' => $id] , [
'title' ,
'surplus' ,
'mid' ,
'allmoney' ,
'wechatqrlink' ,
'wxappqrlink' ,
'pageurl'
]);
$member = pdo_get('wlmerchant_member' , ['id' => $transfer['mid']] , ['nickname' , 'avatar' , 'encodename']);
if ($_W['source'] == 3) {
$qrCodeLink = $transfer['wxappqrlink'];
}
else {
$qrCodeLink = $transfer['wechatqrlink'];
}
$data = [
'nickname' => base64_decode($member['encodename']) ,
'avatar' => tomedia($member['avatar']) ,
'title' => $transfer['title'] ,
'money' => $transfer['allmoney'] ,
'qrlink' => $qrCodeLink ,
'pageurl' => $transfer['pageurl']
];
$this->renderSuccess('活动详情' , $data,1);
}
/**
* Comment: 余额转赠往期活动列表(N561定制)
* Author: wlf
* Date: 2020/06/02 14:57
*/
public function oldTransferList()
{
global $_W , $_GPC;
if (!file_exists(PATH_MODULE . 'N561.log')) {
$this->renderError('暂无权限');
}
if (empty($_W['mid'])) {
$this->renderError('请先登录');
}
$data = [];
$pindex = $_GPC['pindex'] ? $_GPC['pindex'] : 1;
$pageStart = $pindex * 10 - 10;
$list = pdo_fetchall("SELECT id,allnum,title,surplus,allmoney,createtime,is_over FROM " . tablename('wlmerchant_transfer_list') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$_W['mid']} ORDER BY createtime DESC LIMIT {$pageStart},10");
$allnum = pdo_fetchcolumn("SELECT count(id) FROM " . tablename('wlmerchant_transfer_list') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$_W['mid']}");
$data['pagetotal'] = ceil($allnum / 10);
if (!empty($list)) {
foreach ($list as &$li) {
$li['createtime'] = date('Y-m-d H:i:s' , $li['createtime']);
}
}
$data['list'] = $list;
$this->renderSuccess('往期活动' , $data);
}
/**
* Comment: 余额转赠活动领取记录(N561定制)
* Author: wlf
* Date: 2020/06/05 16:16
*/
public function getTransferRecord()
{
global $_W , $_GPC;
if (!file_exists(PATH_MODULE . 'N561.log')) {
$this->renderError('暂无权限');
}
if (empty($_W['mid'])) {
$this->renderError('请先登录');
}
$id = $_GPC['id'];
$pindex = max(1 , intval($_GPC['page']));
$psize = 20;
$start = $pindex * $psize - $psize;
if (empty($id)) {
$this->renderError('缺少关键参数:id');
}
if ($pindex == 1) {
$transfer = pdo_get('wlmerchant_transfer_list' , ['id' => $id] , [
'title' ,
'surplus' ,
'allnum' ,
'allmoney' ,
'createtime'
]);
$transfer['createtime'] = date("Y-m-d H:i:s" , $transfer['createtime']);
$data['transfer'] = $transfer;
}
$where = " a.uniacid = {$_W['uniacid']} AND a.tid = {$id} ";
$limit = " LIMIT {$start},{$psize}";
$sql = "SELECT a.tid,a.mid,a.money,a.realname,a.mobile,a.createtime,b.nickname,b.encodename,b.avatar FROM " . tablename("wlmerchant_transfer_record") . " as a LEFT JOIN " . tablename(PDO_NAME . "member") . " as b ON a.mid = b.id WHERE {$where} ORDER BY a.createtime DESC";
$total = pdo_fetchcolumn('SELECT count(a.id) FROM ' . tablename('wlmerchant_transfer_record') . " as a LEFT JOIN " . tablename(PDO_NAME . "member") . " as b ON a.mid = b.id WHERE {$where}");
$data['allpage'] = ceil($total / 20);
$lists = pdo_fetchall($sql . $limit);
foreach ($lists as &$li) {
$li['createtime'] = date('Y-m-d H:i:s' , $li['createtime']);
$li['avatar'] = tomedia($li['avatar']);
$li['nickname'] = base64_decode($li['encodename']);
}
$data['record'] = $lists;
$this->renderSuccess('领取记录' , $data);
}
/**
* Comment: 根据手机号筛选用户
* Author: wlf
* Date: 2021/08/19 16:16
*/
public function mobileToMmeber(){
global $_W , $_GPC;
$mobile = trim($_GPC['mobile']);
if(empty($mobile)){
$this->renderError('请输入查询手机号');
}else{
$member = pdo_get('wlmerchant_member',array('mobile' => $mobile),array('avatar','nickname','mobile','encodename'));
if(empty($member)){
$member = [];
}else{
$member['avatar'] = tomedia($member['avatar']);
$member['nickname'] = base64_decode($member['encodename']);
}
}
$this->renderSuccess('查询成功' , $member);
}
/**
* Comment: 074定制-积分转赠页面初始化
* Author: wlf
* Date: 2022/01/06 10:10
*/
public function integralPage(){
global $_W, $_GPC;
$data['mycredit'] = sprintf("%.2f" , $_W['wlmember']['credit1']);
$data['integralsxf'] = $_W['wlsetting']['creditset']['integralsxf'];
$this->renderSuccess('页面初始化信息',$data);
}
/**
* Comment: 074定制-积分转赠接口
* Author: wlf
* Date: 2022/01/06 10:17
*/
public function integralApi(){
global $_W, $_GPC;
$integra = trim($_GPC['credit']);
$pwd = trim($_GPC['pwd']);
$mobile = trim($_GPC['mobile']);
$member = pdo_get('wlmerchant_member',array('id' => $_W['mid']),array('integralpwd','nickname'));
if($pwd != $member['integralpwd']){
$this->renderError('支付密码错误,请重新输入');
}
$getmember = pdo_get(PDO_NAME.'member',array('uniacid'=>$_W['uniacid'],'mobile'=> $mobile),['id','nickname']);
if(empty($getmember)){
$this->renderError('查无此用户');
}
if($getmember['id'] == $_W['mid']){
$this->renderError('请勿转赠给自己');
}
if($integra > 0){
//计算手续费
$serviceCharge = sprintf("%.2f" ,$integra*$_W['wlsetting']['creditset']['integralsxf']/100);
$allcredit = $serviceCharge + $integra;
if($allcredit > $_W['wlmember']['credit1']){
$this->renderError('剩余积分不足,请重新输入转赠数量');
}else{
Member::credit_update_credit1($_W['mid'] , -$integra , '转赠积分给用户[' . $getmember['nickname'].']');
if($serviceCharge > 0){
Member::credit_update_credit1($_W['mid'] , -$serviceCharge , '转赠积分手续费扣除');
}
Member::credit_update_credit1($getmember['id'] , $integra , '用户[' . $member['nickname'].']给您赠送积分');
$this->renderSuccess('操作成功');
}
}else{
$this->renderError('转赠积分数量错误,请重新输入');
}
}
/**
* Comment: 074定制-支付密码修改接口
* Author: wlf
* Date: 2022/01/24 10:28
*/
public function integralpwd(){
global $_W, $_GPC;
$mobile = pdo_getcolumn(PDO_NAME.'member',array('id'=>$_W['mid']),'mobile');
$pwd = $_GPC['pwd'];
$code = $_GPC['code'];
$pin_info = pdo_get('wlmerchant_pincode' , ['mobile' => $mobile]);
if (empty($pin_info)) {
$this->renderError('验证码错误');
}
if ($pin_info['time'] < time() - 300) {
$this->renderError('验证码已过期,请重新获取' , ['code' => 1]);
}
if ($code != $pin_info['code']) {
$this->renderError('验证码错误');
}
$res = pdo_update('wlmerchant_member',array('integralpwd' => $pwd),array('id' => $_W['mid']));
$this->renderSuccess('修改成功');
}
/**
* Comment: 添加关注
* Author: whj
* Date: 2023/03/27 09:51
*/
public function addInterestMember() {
global $_W, $_GPC;
$interest_mid = $_GPC['interest_mid'];
if (empty($interest_mid) || !is_numeric($interest_mid)) $this->renderError('请求失败');
$data = ['mid' => $_W['mid'], 'interest_mid' => $interest_mid, 'create_time' => time()];
$result = pdo_insert(PDO_NAME . 'member_interest',$data);
if (!$result) $this->renderError('关注失败');
$this->renderSuccess('关注成功');
}
/**
* Comment: 取关
* Author: whj
* Date: 2023/03/27 09:56
*/
public function cancelInterestMember() {
global $_W, $_GPC;
$interest_mid = $_GPC['interest_mid'];
$where = ['mid' => $_W['mid'], 'interest_mid' => $interest_mid];
$query_res = pdo_get(PDO_NAME . 'member_interest',$where,'id');
if (!$query_res) $this->renderError('取关失败,数据不存在');
$del_res = pdo_delete(PDO_NAME . 'member_interest',['id' => $query_res['id']]);
if (!$del_res) $this->renderError('取关失败');
$this->renderSuccess('取关成功');
}
/**
* Comment: 获取关注用户信息
* Author: whj
* Date: 2023/03/27 09:56
*/
public function getInterestUserList() {
global $_W, $_GPC;
$mid = $_GPC['mid'] ?: $_W['mid'];
$where = ['mid' => $mid];
if (!empty($_GPC['name'])) {
$interest_mid_arr = [];
$user_res = pdo_getall(PDO_NAME . 'member',['nickname like' => '%'.trim($_GPC['name']).'%'],['id']);
foreach ($user_res as $user_row) $interest_mid_arr[] = $user_row['id'];
if ($interest_mid_arr) {
$where['interest_mid'] = $interest_mid_arr;
} else {
$where['id'] = 0;
}
}
$list = pdo_getall(PDO_NAME . 'member_interest',$where,['interest_mid'],'','id desc');
foreach ($list as &$row) {
$user = pdo_get(PDO_NAME . 'member',['id' => $row['interest_mid']],['encodename','avatar']);
$row['nickname'] = base64_decode($user['encodename']); // 用户名
$row['avatar'] = $user['avatar']; // 用户头像
}
$this->renderSuccess('数据获取成功',['data' => $list]);
}
/**
* Comment: 获取粉丝用户信息
* Author: whj
* Date: 2023/03/27 09:56
*/
public function getFansUserList() {
global $_W,$_GPC;
$mid = $_GPC['mid'] ?: $_W['mid'];
$where = ['interest_mid' => $mid];
if (!empty($_GPC['name'])) {
$mid_arr = [];
$user_res = pdo_getall(PDO_NAME . 'member',['nickname like' => '%'.trim($_GPC['name']).'%'],['id']);
foreach ($user_res as $user_row) $mid_arr[] = $user_row['id'];
if ($mid_arr) {
$where['mid'] = $mid_arr;
} else {
$where['id'] = 0;
}
}
$list = pdo_getall(PDO_NAME . 'member_interest',$where,['mid'],'','id desc');
foreach ($list as &$row) {
$user = pdo_get(PDO_NAME . 'member',['id' => $row['mid']],['encodename','avatar']);
$row['nickname'] = base64_decode($user['encodename']); // 用户名
$row['avatar'] = $user['avatar']; // 用户头像
$row['fans_mid'] = $row['mid'];
unset($row['mid']);
}
$this->renderSuccess('数据获取成功',['data' => $list]);
}
/**
* 获取规则中心列表
* @return void
*/
public function getRuleCenterList()
{
global $_W, $_GPC;
$where = ['status' => 1];
$pindex = max(1, intval($_GPC['page']));
$psize = $_GPC['pageSize'] ?: 10;
$field = 'id,img';
$memberData = Util::getNumData($field, PDO_NAME . 'rule_center', $where, 'sort desc', $pindex, $psize, 1);
$list = $memberData[0];
foreach ($list as &$item) {
$item['img'] = tomedia($item['img']);
}
$this->renderSuccess('数据获取成功',['list' => $list]);
}
}