<?php namespace app\api\controller; use app\common\controller\Api; use app\common\library\Ems; use app\common\library\Sms; use fast\Random; use think\Request; use think\Validate; use think\Db; use EasyWeChat\Foundation\Application; use think\response; /** * 用户接口 */ class User extends Api { protected $noNeedLogin = ['*']; protected $noNeedRight = '*'; public function _initialize() { parent::_initialize(); } /** * 用户接口 * @ApiTitle (授权登录) * @ApiSummary (授权登录) * @ApiMethod (POST) * @ApiRoute (/api/User/UserLogin) * @ApiParams (name="vi", type="string", required=true, description="vi") * @ApiParams (name="encryptData", type="string", required=true, description="encryptData") * @ApiParams (name="code", type="string", required=true, description="code") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', }) */ public function UserLogin() { $params = Request::instance()->post(false); $options = [ // ... 'mini_program' => [ 'app_id' => appid, 'secret' => secret, 'token' => 'component-token', 'aes_key' => 'component-aes-key' ], // ... ]; $app = new Application($options); $miniProgram = $app->mini_program; $sessionKey = $miniProgram->sns->getSessionKey($params['code']); $Json = $miniProgram->encryptor->decryptData($sessionKey['session_key'], urldecode($params['iv']), urldecode($params['encryptData'])); $is_open = Db::name('user')->where(['UnionID' => $Json['unionId']])->find(); if (empty($is_open)) { /*新增会员到管易平台*/ $GuanYiCloud = new GuanYiCloud(); $GuanYiCloud->addVip($Json['unionId'], $Json['nickName']); $dataUser = [ 'UnionID' => $Json['unionId'], 'updatetime' => time(), 'createtime' => time(), 'avatar' => $Json['avatarUrl'], 'nickname' => $Json['nickName'], 'num' => 0, 'sex' => $Json['gender'], 'is_new' => 1, 'level' => 1, 'invite_num' => 0, 'money' => 0, 'openid' => $Json['openId'] ]; Db::name('user')->insert($dataUser); } $token = $this->request->token(); $arr = [ 'nickname' => $Json['nickName'], 'avatar' => $Json['avatarUrl'], 'token' => $token, 'updatetime' => time(), ]; $res = Db::name("user")->where(['UnionID' => $Json['unionId']])->update($arr); if (!$res) { $this->error('授权失败', 0); die; } $rult = Db::name("user")->where(['UnionID' => $Json['unionId']])->find(); //判断用户是否有活动钱包 $HuodongMoneyArray = Db::name('huodong_money')->where('user_id', $rult['id'])->find(); if (empty($HuodongMoneyArray)) { $data = [ 'user_id' => $rult['id'], 'count_money' => 0, 'tixian_money' => 200, 'befor_money' => 0, 'type' => 0, 'befor_tixian' => 0, 'createtime' => time(), 'updatetime' => time() ]; Db::name('huodong_money')->insert($data); } $return = [ 'token' => $rult['token'], ]; $this->success('成功', $return); } /** * 用户接口 * @ApiTitle (绑定手机号) * @ApiSummary (绑定手机号) * @ApiMethod (POST) * @ApiRoute (/api/User/BindMobile) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="vi", type="string", required=true, description="vi") * @ApiParams (name="encryptData", type="string", required=true, description="encryptData") * @ApiParams (name="code", type="string", required=true, description="code") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', }) */ public function BindMobile() { $UserId = $this->is_token($this->request->header()); $params = Request::instance()->post(false); $options = [ // ... 'mini_program' => [ 'app_id' => appid, 'secret' => secret, 'token' => 'component-token', 'aes_key' => 'component-aes-key' ], // ... ]; $app = new Application($options); $miniProgram = $app->mini_program; $sessionKey = $miniProgram->sns->getSessionKey($params['code']); $Json = $miniProgram->encryptor->decryptData($sessionKey['session_key'], urldecode($params['iv']), urldecode($params['encryptData'])); $res = Db::name('user')->where('id', $UserId)->update( [ 'mobile' => $Json['phoneNumber'], 'updatetime' => time() ] ); $this->res($res); } /** * 用户接口 * @ApiTitle (我的主页) * @ApiSummary (我的主页) * @ApiMethod (POST) * @ApiRoute (/api/User/UserInfo) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', }) */ public function UserInfo() { $UserId = $this->is_token($this->request->header()); //检查待入账收益 是否入账 $this->UpdateMoney($UserId); //本月起止时间戳 $start_time = mktime(0, 0, 0, date('m'), 1, date('Y')); $end_time = mktime(23, 59, 59, date('m'), date('t'), date('Y')); //用户信息 $UserInfo = Db::name('user')->where('id', $UserId)->find(); //累计总收入计算 $CountMoney $CountMoney = $this->CountMoney($UserId, [], []); //本月自购返现 $MonthMyMoney $MonthMyMoneyMap['createtime'] = ['between', [$start_time, $end_time]]; $MonthMyMoneyType['type'] = ['EQ', 1]; $MonthMyMoney = $this->CountMoney($UserId, $MonthMyMoneyType, $MonthMyMoneyMap); //本月分佣收入 $MonthDobueMoney $MonthDobueMoneyMap['createtime'] = ['between', [$start_time, $end_time]]; $MonthDobueMoneyType['type'] = ['EQ', 2]; $MonthDobueMoney = $this->CountMoney($UserId, $MonthDobueMoneyType, $MonthDobueMoneyMap); /*我的好友团*/ $Level1 = 0; //普通会员 $Level2 = 0; //中级会员 $Level3 = 0; //VIP //查询一级下级 $First = Db::name('group')->where('fuser_id', $UserId)->select(); if (!empty($First)) { //如果一级不为空 foreach ($First as $k => $v) { $FirstLevel = Db::name('user')->where('id', $v['user_id'])->value('level'); //判断下级等级 if (!empty($FirstLevel)) { if ($FirstLevel == 1) { $Level1++; } elseif ($FirstLevel == 2) { $Level2++; } elseif ($FirstLevel == 3) { $Level3++; } $Second = Db::name('group')->where('fuser_id', $v['user_id'])->select(); foreach ($Second as $key => $value) { $SecondLevel = Db::name('user')->where('id', $value['user_id'])->value('level'); if (!empty($SecondLevel)) { if ($SecondLevel == 1) { $Level1++; } elseif ($SecondLevel == 2) { $Level2++; } elseif ($SecondLevel == 3) { $Level3++; } } } } } } $Return = [ 'Avatar' => $UserInfo['avatar'], 'Nickname' => $UserInfo['nickname'], 'Level' => $UserInfo['level'], 'Mobile' => $UserInfo['mobile'], 'Num' => $UserInfo['num'], 'Money' => $UserInfo['money'], //累计总收入 'CountMoney' => $CountMoney, //本月自购收入 'MonthMyMoney' => $MonthMyMoney, //本月分销收入 'MonthDobueMoney' => $MonthDobueMoney, 'Level1' => $Level1, 'Level2' => $Level2, 'Level3' => $Level3, ]; $this->success('成功', $Return); } /** * 用户接口 * @ApiTitle (是否有默认地址) * @ApiSummary (是否有默认地址) * @ApiMethod (POST) * @ApiRoute (/api/User/IsMAddress) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": 1=有,0=无 }) */ public function IsMAddress() { $UserId = $this->is_token($this->request->header()); $IfMAddress = Db::name('address')->where('user_id', $UserId)->where('type', 1)->find(); if (!empty($IfMAddress)) { $Type = 1; } else { $Type = 0; } $this->success('成功', $Type); } /** * 用户接口 * @ApiTitle (新增/更改地址) * @ApiSummary (新增/更改地址) * @ApiMethod (POST) * @ApiRoute (/api/User/InsertAddress) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="status", type="integer", required=true, description="1=新增,2=更改") * @ApiParams (name="id", type="integer", required=true, description="更改地址ID 新增为0 ") * @ApiParams (name="name", type="integer", required=true, description="收货人") * @ApiParams (name="mobile", type="integer", required=true, description="手机号") * @ApiParams (name="city", type="integer", required=true, description="所在地区 省/市/区") * @ApiParams (name="address", type="integer", required=true, description="详细地址") * @ApiParams (name="address_con", type="integer", required=true, description="街道,门牌号等") * @ApiParams (name="type", type="integer", required=true, description="状态:1=默认,0=否") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function InsertAddress() { $UserId = $this->is_token($this->request->header()); $params = $this->request->param(); if ($params['status'] == 1) { //新增 //判断是否有默认地址 $IfMAddress = Db::name('address')->where('user_id', $UserId)->where('type', 1)->find(); if (!empty($IfMAddress)) { if ($params['type'] == 1) { Db::name('address')->where('id', $IfMAddress['id'])->update(['type' => 0, 'updatetime' => time()]); } } $data = [ 'user_id' => $UserId, 'name' => $params['name'], 'mobile' => $params['mobile'], 'city' => $params['city'], 'address' => $params['address'], 'address_con' => $params['address_con'], 'type' => $params['type'], 'createtime' => time(), 'updatetime' => time(), ]; $Res = Db::name('address')->insert($data); } else { //更改 //判断是否有默认地址 $IfMAddress = Db::name('address')->where('user_id', $UserId)->where('id', 'NEQ', $params['id'])->where('type', 1)->find(); if ($params['type'] == 1) { if (!empty($IfMAddress)) { Db::name('address')->where('id', $IfMAddress['id'])->update(['type' => 0, 'updatetime' => time()]); } } else { if (empty($IfMAddress)) { $InsertMAddress = Db::name('address')->where('user_id', $UserId)->where('id', 'NEQ', $params['id'])->find(); if (!empty($InsertMAddress)) { //随机设置默认地址 Db::name('address')->where('id', $InsertMAddress['id'])->update(['type' => 1, 'updatetime' => time()]); } else { $this->error('不能取消唯一地址默认', 0); die; } } } $data = [ 'name' => $params['name'], 'mobile' => $params['mobile'], 'city' => $params['city'], 'address' => $params['address'], 'address_con' => $params['address_con'], 'type' => $params['type'], 'updatetime' => time(), ]; $Res = Db::name('address')->where('id', $params['id'])->update($data); } $this->res($Res); } /** * 用户接口 * @ApiTitle (地址详情) * @ApiSummary (地址详情) * @ApiMethod (POST) * @ApiRoute (/api/User/AddressCon) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="id", type="integer", required=true, description="地址ID") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function AddressCon() { $UserId = $this->is_token($this->request->header()); $params = $this->request->param(); $Array = Db::name('address')->where('user_id', $UserId)->where('id', $params['id'])->find(); if (empty($Array)) { $this->error('参数错误', 0); die; } $data = [ 'Name' => $Array['name'], 'Mobile' => $Array['mobile'], 'City' => $Array['city'], 'Address' => $Array['address'], 'AddressCon' => $Array['address_con'], 'Type' => $Array['type'], ]; $this->success('成功', $data); } /** * 用户接口 * @ApiTitle (删除地址) * @ApiSummary (删除地址) * @ApiMethod (POST) * @ApiRoute (/api/User/DeleteAddress) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="id", type="integer", required=true, description="地址ID") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function DeleteAddress() { $UserId = $this->is_token($this->request->header()); $params = $this->request->param(); $AddressArray = Db::name('address')->where('user_id', $UserId)->where('id', 'NEQ', $params['id'])->find(); $IsMo = Db::name('address')->where('user_id', $UserId)->where('id', $params['id'])->find(); if ($IsMo['type'] == 1) { //是默认地址 if (empty($AddressArray)) { $this->error('请先添加一个地址,在删除默认地址', 0); } else { Db::name('address')->where('user_id', $UserId)->where('id', $AddressArray['id'])->update( ['type' => 1] ); } } $res = Db::name('address')->where('user_id', $UserId)->where('id', $params['id'])->delete(); $this->res($res); } /** * 用户接口 * @ApiTitle (地址列表) * @ApiSummary (地址列表) * @ApiMethod (POST) * @ApiRoute (/api/User/AddressList) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="pages", type="integer", required=true, description="pages") * @ApiParams (name="rows", type="integer", required=true, description="rows") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function AddressList() { $UserId = $this->is_token($this->request->header()); $UserInfo = Db::name('user')->where('id', $UserId)->find(); $params = $this->request->param(); $Array = Db::name('address')->where('user_id', $UserId)->order('type desc,id desc')->select(); if (empty($Array)) { $data = [ 'Count' => 0, 'List' => [] ]; } else { foreach ($Array as $k => $v) { $List[$k]['Avatar'] = $UserInfo['avatar']; $List[$k]['Id'] = $v['id']; $List[$k]['Type'] = $v['type']; $List[$k]['Name'] = $v['name']; $List[$k]['Mobile'] = $v['mobile']; $List[$k]['City'] = $v['city']; $List[$k]['Address'] = $v['address']; $List[$k]['AddressCon'] = $v['address_con']; } $data = [ 'Count' => count($Array), 'List' => $this->page_array($params['rows'], $params['pages'], $List, 0) ]; } $this->success('成功', $data); } /** * 用户接口 * @ApiTitle (绑定上级) * @ApiSummary (绑定上级) * @ApiMethod (POST) * @ApiRoute (/api/User/Invite) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="user_id", type="integer", required=true, description="邀请用户ID") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function Invite() { $UserId = $this->is_token($this->request->header()); $params = $this->request->param(); if ($UserId != $params['user_id']) { //添加绑定关系 $IsInvite = Db::name('group')->where('user_id', $UserId)->where('fuser_id', $params['user_id'])->find(); if (!empty($IsInvite)) { $this->error('重复邀请', 0); die; } //添加绑定渠道 $QudaoId = Db::name('user')->where('id', $params['user_id'])->value('qudao_id'); Db::name('user')->where('id', $UserId)->update( [ 'qudao_id' => $QudaoId ] ); $data = [ 'user_id' => $UserId, 'fuser_id' => $params['user_id'], 'createtime' => time() ]; $Invite = Db::name('group')->insert($data); if (!$Invite) { $this->error('邀请失败', 0); die; } //增加邀请人数 $InviteNum = Db::name('user')->where('id', $params['user_id'])->value('invite_num'); $AddOneInvite = Db::name('user')->where('id', $params['user_id'])->update(['invite_num' => $InviteNum + 1]); if (!$AddOneInvite) { $this->error('增加邀请人数失败', 0); die; } $UserInfo = Db::name('user')->where('id', $params['user_id'])->find(); //每邀请十个人 +500积分 if ($UserInfo['invite_num'] % 10 == 0) { $AddNum = Db::name('user')->where('id', $params['user_id'])->update(['num' => $UserInfo['num'] + 500]); if (!$AddNum) { $this->error('上级积分增加失败', 0); die; } //添加积分记录 $data = [ 'user_id' => $params['user_id'], 'status' => 1, 'num' => 500, 'type' => 8, 'up_num' => $UserInfo['num'] + 500, 'createtime' => time() ]; $IsNum = Db::name('num')->insert($data); if (!$IsNum) { $this->error('积分记录增加失败', 0); die; } } } $this->success('成功', 1); } /** * 用户接口 * @ApiTitle (会员晋升进度) * @ApiSummary (会员晋升进度) * @ApiMethod (POST) * @ApiRoute (/api/User/InVipStree) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', }) */ public function InVipStree() { $UserId = $this->is_token($this->request->header()); //是否解锁 $Level = Db::name('user')->where('id', $UserId)->value('level'); if ($Level == 1) { $FirstUnlock = 1; $SecondUnlock = 0; $ThirdUnlock = 0; } elseif ($Level == 2) { $FirstUnlock = 0; $SecondUnlock = 1; $ThirdUnlock = 0; } elseif ($Level == 3) { $FirstUnlock = 0; $SecondUnlock = 0; $ThirdUnlock = 1; } $OrderArray = Db::name('order')->where('user_id', $UserId)->where('status', 3)->select(); if (empty($OrderArray)) { //已消费Consumed $Consumed = 0; } else { foreach ($OrderArray as $k => $v) { $ConsumedArray[] = $v['total']; } $Consumed = array_sum($ConsumedArray); } $SecondArray = Db::name('level')->where('type', 2)->find(); $ThirdArray = Db::name('level')->where('type', 3)->find(); $Return = [ 'First' => [ 'Unlock' => $FirstUnlock, 'Door' => '完成测试即可开启', 'Rights' => [ '0' => '享100天有效期1000积分', '1' => '享100天产品分销权限' ], 'Consumption' => 0 ], 'Second' => [ 'Unlock' => $SecondUnlock, 'Door' => '消费累计¥' . $SecondArray['price'], 'Rights' => [ '0' => '享' . $SecondArray['num'] . '可消费积分', '1' => '自购产品享' . (100 - ($SecondArray['buycount'] * 100)) . '%返现' ], 'Consumption' => $SecondArray['price'] - $Consumed ], 'Third' => [ 'Unlock' => $ThirdUnlock, 'Door' => '消费累计¥' . $ThirdArray['price'], 'Rights' => [ '0' => '享' . $ThirdArray['num'] . '可消费积分', '1' => '自购产品享' . (100 - ($ThirdArray['buycount'] * 100)) . '%返现' ], 'Consumption' => $ThirdArray['price'] - $Consumed ] ]; $this->success('成功', $Return); } /** * 用户接口 * @ApiTitle (个人资料) * @ApiSummary (个人资料) * @ApiMethod (POST) * @ApiRoute (/api/User/UserCon) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function UserCon() { $UserId = $this->is_token($this->request->header()); $UserInfo = Db::name('user')->where('id', $UserId)->find(); $FUserId = Db::name('group')->where('user_id', $UserId)->value('fuser_id'); if (!empty($FUserId)) { $InviteNickname = Db::name('user')->where('id', $FUserId)->value('nickname'); } else { $InviteNickname = ''; } //测试人数 $SleepCount = Db::name('user') ->alias('u') ->join('sleep s', 's.user_id=u.id') ->where('s.type', 1) ->select(); /*刷新用户登陆时间*/ Db::name('user')->where('id', $UserId)->update( [ 'updatetime' => time() ] ); $MyUpInvitePeopleNum = $this->MyUpInvitePeopleNum($UserId); $Return = [ 'Num' => $UserInfo['num'], 'Money' => $UserInfo['money'], 'QudaoId' => $UserInfo['qudao_id'], 'ID' => $UserInfo['id'], 'SleepCount' => count($SleepCount), 'Avatar' => $UserInfo['avatar'], 'Nickname' => $UserInfo['nickname'], 'Sex' => $UserInfo['sex'], 'Mobile' => $UserInfo['mobile'], 'Level' => $UserInfo['level'], 'MyUpInvitePeopleNum' => $MyUpInvitePeopleNum, 'InviteNickname' => $InviteNickname, 'Createtime' => date('Y-m-d', $UserInfo['createtime']) ]; $this->success('成功', $Return); } /** * 用户接口 * @ApiTitle (我的积分页面) * @ApiSummary (我的积分页面) * @ApiMethod (POST) * @ApiRoute (/api/User/UserNum) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="Y", type="integer", required=true, description="年") * @ApiParams (name="M", type="integer", required=true, description="月") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { 'Status':0=减少,1=增加, 'Type':分类:1=首次测试奖励,2=邀请好友奖励,3=分销佣金扣除,4=自购返现扣除,5=首单奖励,6=升级奖励,7=关注奖励,8=绑定奖励,9=好友下单奖励 } }) */ public function UserNum() { $UserId = $this->is_token($this->request->header()); $params = $this->request->param(); $UserInfo = Db::name('user')->where('id', $UserId)->find(); $TimeArray = $this->mFristAndLast($params['Y'], $params['M']); $Map['createtime'] = ['between', [$TimeArray['start'], $TimeArray['end']]]; $Array = Db::name('num')->where('user_id', $UserId)->where($Map)->order('id desc')->select(); if (empty($Array)) { $data = [ 'CountNum' => $UserInfo['num'], 'AddNum' => 0, 'DeleteNum' => 0, 'List' => [] ]; } else { foreach ($Array as $k => $v) { $List[$k]['Id'] = $v['id']; $List[$k]['Status'] = $v['status']; $List[$k]['Type'] = $v['type']; $List[$k]['Num'] = $v['num']; $List[$k]['UpNum'] = $v['up_num']; $List[$k]['Createtime'] = date('Y-m-d', $v['createtime']); if ($v['status'] == 1) { $AddNumArray[] = $v['num']; } elseif ($v['status'] == 0) { $DeleteNumArray[] = $v['num']; } } if (empty($AddNumArray)) { $AddNum = 0; } else { $AddNum = array_sum($AddNumArray); } if (empty($DeleteNumArray)) { $DeleteNum = 0; } else { $DeleteNum = array_sum($DeleteNumArray); } $data = [ 'CountNum' => $UserInfo['num'], 'AddNum' => $AddNum, 'DeleteNum' => $DeleteNum, 'List' => $List ]; } $this->success('成功', $data); } /** * 用户接口 * @ApiTitle (可提现余额查询) * @ApiSummary (可提现余额查询) * @ApiMethod (POST) * @ApiRoute (/api/User/KeTixianMoney) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function KeTixianMoney() { $UserId = $this->is_token($this->request->header()); $Money = Db::name('user')->where('id', $UserId)->value('money'); $this->success('成功', $Money); } /** * 用户接口 * @ApiTitle (提现) * @ApiSummary (提现) * @ApiMethod (POST) * @ApiRoute (/api/User/Tixian) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="money", type="integer", required=true, description="提现金额") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function Tixian() { $UserId = $this->is_token($this->request->header()); $params = $this->request->param(); $Money = Db::name('user')->where('id', $UserId)->value('money'); if ($params['money'] > $Money) { $this->error('超过可提现余额', 0); die; } $data = [ 'user_id' => $UserId, 'money' => $params['money'] * 0.99, 'status' => 0, 'createtime' => time(), 'updatetime' => time() ]; $res = Db::name('tixian')->insert($data); if (!$res) { $this->error('提现失败', 0); die; } $Res = Db::name('user')->where('id', $UserId)->update(['money' => $Money - $params['money']]); $this->res($Res); } /** * 用户接口 * @ApiTitle (我的草籽) * @ApiSummary (我的草籽) * @ApiMethod (POST) * @ApiRoute (/api/User/MyTree) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="Y", type="integer", required=true, description="年") * @ApiParams (name="M", type="integer", required=true, description="月") * @ApiParams (name="type", type="integer", required=true, description="0=不不调用1=普通会员,2=中级会员,3=Vip") * @ApiParams (name="status", type="integer", required=true, description="贡献金额 0=不调用,1=升序降序,2=降序排序") * @ApiParams (name="pages", type="integer", required=true, description="pages") * @ApiParams (name="rows", type="integer", required=true, description="rows") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function MyTree() { $UserId = $this->is_token($this->request->header()); $params = $this->request->param(); $Map = []; $Map3 = []; if ($params['Y'] != 0 && $params['M'] != 0) { $TimeArray = $this->mFristAndLast($params['Y'], $params['M']); $Map['g.createtime'] = ['between', [$TimeArray['start'], $TimeArray['end']]]; $Map3['createtime'] = ['between', [$TimeArray['start'], $TimeArray['end']]]; } $map2 = []; if ($params['type'] != 0) { $map2['u.level'] = ['EQ', $params['type']]; } $Array = Db::name('group') ->alias('g') ->where('g.fuser_id', $UserId) ->where($Map) ->join('user u', 'u.id=g.user_id') ->where($map2) ->order('id desc') ->field('g.id,g.user_id,u.avatar,u.nickname,u.level,g.createtime') ->select(); if (empty($Array)) { $data = [ 'Count' => 0, 'List' => [] ]; } else { //数组去重 $SonArray = $this->second_array_unique_bykey($Array, 'user_id'); foreach ($SonArray as $k => $v) { $OldList[$k]['Id'] = $v['id']; $OldList[$k]['Avatar'] = $v['avatar']; $OldList[$k]['Nickname'] = $v['nickname']; $OldList[$k]['Level'] = $v['level']; $OldList[$k]['Createtime'] = date('Y-m-d', $v['createtime']); $CountNum = Db::name('money')->where('touser_id', $v['user_id'])->select(); if (!empty($CountNum)) { foreach ($CountNum as $key => $value) { $Count[] = $value['money']; } $OldList[$k]['CountMoney'] = array_sum($Count); } else { $OldList[$k]['CountMoney'] = 0; } } if ($params['status'] == 1) { $List = $this->MyTreeAsc($OldList); } elseif ($params['status'] == 2) { $List = $this->MyTreeDesc($OldList); } else { $List = $OldList; } $data = [ 'Count' => count($List), 'List' => $this->page_array($params['rows'], $params['pages'], $List, 0) ]; } $this->success('成功', $data); } /** * 用户接口 * @ApiTitle (我的收入) * @ApiSummary (我的收入) * @ApiMethod (POST) * @ApiRoute (/api/User/MyPrice) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="Y", type="integer", required=true, description="年") * @ApiParams (name="M", type="integer", required=true, description="月") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function MyPrice() { $UserId = $this->is_token($this->request->header()); $params = $this->request->param(); $UserInfo = Db::name('user')->where('id', $UserId)->find(); $TimeArray = $this->mFristAndLast($params['Y'], $params['M']); $Map['m.createtime'] = ['between', [$TimeArray['start'], $TimeArray['end']]]; //累计总收入计算 $CountMoney $CountMoney = $this->CountMoney($UserId, [], []); //待入账收入 $Recorded $RecordedArray = Db::name('money')->where('status', 0)->select(); if (empty($RecordedArray)) { $Recorded = 0; } else { foreach ($RecordedArray as $k => $v) { $RecordedKong[] = $v['money']; } $Recorded = array_sum($RecordedKong); } $ArrayList = Db::name('money') ->alias('m') ->where($Map) ->where('m.user_id', $UserId) ->join('user u', 'u.id=m.touser_id') ->order('m.createtime desc') ->field('m.id,m.createtime,u.nickname,m.type,m.money,m.status') ->select(); $List = []; if (!empty($ArrayList)) { foreach ($ArrayList as $k => $v) { $List[$k]['Id'] = $v['id']; $List[$k]['Createtime'] = date('Y-m-d', $v['createtime']); $List[$k]['Nickname'] = $v['nickname']; $List[$k]['Type'] = $v['type']; $List[$k]['Money'] = $v['money']; $List[$k]['Status'] = $v['status']; } } $data = [ 'CountMoney' => $CountMoney, 'Money' => $UserInfo['money'], 'Recorded' => $Recorded, 'List' => $List ]; $this->success('成功', $data); } /** * 用户接口 * @ApiTitle (活动页面) * @ApiSummary (活动页面) * @ApiMethod (POST) * @ApiRoute (/api/User/PartHtml) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="status", type="integer", required=true, description="1=未测试,2=未下单,3=已下单,4=已完成") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function PartHtml() { $UserId = $this->is_token($this->request->header()); $params = $this->request->param(); //检查活动是否进行中 $Part = Db::name('huodong')->find(); $i = 0; if ($Part['start_time'] < time() && time() < $Part['end_time']) { $i++; } if ($i == 0) { $this->error('活动未开放', 0); die; } //查询活动钱包 $HuodongArray = Db::name('huodong_money')->where('user_id', $UserId)->find(); if (empty($HuodongArray)) { $this->error('活动钱包不存在', 0); die; } //查询所有下级 $List = []; $SonUserArray = Db::name('group')->where('fuser_id', $UserId)->order('createtime desc')->select(); if (!empty($SonUserArray)) { $UserArray = []; if ($params['status'] == 1) { //未测试 foreach ($SonUserArray as $k => $v) { $Weiceshi = Db::name('sleep')->where('user_id', $v['user_id'])->find(); if (empty($Weiceshi)) { $UserArray[] = $v['user_id']; } } } if ($params['status'] == 2) { //未下单 foreach ($SonUserArray as $k => $v) { $WeiOrder = Db::name('order')->where('user_id', $v['user_id'])->find(); if (empty($WeiOrder)) { $UserArray[] = $v['user_id']; } } } if ($params['status'] == 3) { //已下单 foreach ($SonUserArray as $k => $v) { $UpOrder = Db::name('order')->where('user_id', $v['user_id'])->where('status', 'NEQ', 0)->find(); if (!empty($UpOrder)) { $UserArray[] = $v['user_id']; } } } if ($params['status'] == 4) { //已完成 foreach ($SonUserArray as $k => $v) { $OnOrder = Db::name('order')->where('user_id', $v['user_id'])->where('status', 3)->find(); if (!empty($OnOrder)) { $UserArray[] = $v['user_id']; } } } if (!empty($UserArray)) { foreach ($UserArray as $k => $v) { $userINFO = Db::name('user')->where('id', $v)->find(); if (!empty($userINFO)) { $List[$k]['Id'] = $v; $List[$k]['Avatar'] = $userINFO['avatar']; $List[$k]['Nickname'] = $userINFO['nickname']; } } } } $Return = [ 'CountMoney' => $HuodongArray['count_money'], 'BeforMoney' => $HuodongArray['befor_money'], 'BeforTixian' => $HuodongArray['befor_tixian'], 'List' => $List ]; $this->success('成功', $Return); } /** * 用户接口 * @ApiTitle (活动提现) * @ApiSummary (活动提现) * @ApiMethod (POST) * @ApiRoute (/api/User/HuodongTixian) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="money", type="integer", required=true, description="提现金额") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function HuodongTixian() { $UserId = $this->is_token($this->request->header()); $params = $this->request->param(); $HuoodngMoneyArray = Db::name('huodong_money')->where('user_id', $UserId)->find(); if ($params['money'] > $HuoodngMoneyArray['tixian_money']) { $this->error('当日提现额度不足', 0); die; } if ($params['money'] > $HuoodngMoneyArray['befor_tixian']) { $this->error('可提现不足', 0); die; } $data = [ 'user_id' => $UserId, 'money' => $params['money'], 'status' => 0, 'createtime' => time(), 'updatetime' => time() ]; $res = Db::name('huodong_tixian')->insert($data); if (!$res) { $this->error('提现失败', 0); die; } $RES2 = Db::name('huodong_money')->where('user_id', $UserId)->update( [ 'befor_tixian' => $HuoodngMoneyArray['befor_tixian'] - $params['money'], 'tixian_money' => $HuoodngMoneyArray['tixian_money'] - $params['money'], ] ); $this->res($RES2); } /** * 用户接口 * @ApiTitle (客服) * @ApiSummary (客服) * @ApiMethod (POST) * @ApiRoute (/api/User/Kefu) * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": }) */ public function Kefu() { $Array = Db::name('kefu')->where('id', 1)->find(); $this->success('成功', $Array['web']); } /** * 用户接口 * @ApiTitle (绑定渠道) * @ApiSummary (绑定渠道) * @ApiMethod (POST) * @ApiRoute (/api/User/BindQudao) * @ApiHeaders (name=token, type=string, required=true, description="请求的Token") * @ApiParams (name="qudao_id", type="integer", required=true, description="渠道ID") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function BindQudao() { $UserId = $this->is_token($this->request->header()); $params = $this->request->param(); $res = Db::name('user')->where('id', $UserId)->update( [ 'qudao_id' => $params['qudao_id'] ] ); $this->res($res); } /** * 用户接口 * @ApiTitle (根据渠道渲染首页) * @ApiSummary (根据渠道渲染首页) * @ApiMethod (POST) * @ApiRoute (/api/User/IndexImage) * @ApiParams (name="qudao_id", type="integer", required=true, description="渠道ID") * @ApiReturnParams (name="code", type="integer", required=true, sample="0") * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") * @ApiReturn ({ 'code':'1', 'msg':'返回成功', "data": { } }) */ public function IndexImage() { $QudaoId = input('qudao_id'); $Image = Db::name('qudao_qcode')->where('qudao_id', $QudaoId)->value('image'); //测试人数 $SleepCount = Db::name('sleep')->where('type', 1)->select(); $data = [ 'SleepCount' => count($SleepCount), 'image' => cdnurl($Image) ]; $this->success('成功', $data); } }