123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435 |
- <?php
- namespace App\Http\Controllers\Wap\User;
- use App\Modules\Book\Services\BookConfigService;
- use App\Modules\Book\Services\BookUrgeUpdateService;
- use App\Modules\Book\Services\SignBookService;
- use App\Modules\Statistic\Services\AdVisitStatService;
- use App\Modules\Subscribe\Services\OrderService;
- use App\Modules\User\Services\ReadRecordService;
- use App\Modules\User\Services\WapReaderPageFissionService;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Wap\BaseController;
- use App\Modules\Subscribe\Services\YearOrderService;
- use App\Modules\User\Services\UserService;
- use App\Modules\User\Services\UserRandSignService;
- use App\Modules\User\Services\UserSignService;
- use App\Http\Controllers\Wap\User\Transformers\SignRecordTransformer;
- use Log;
- use Redis;
- use Cookie;
- use DB;
- use Hashids;
- class UserController extends BaseController
- {
- /**
- * @apiDefine User 用户
- */
- /**
- * @apiVersion 1.0.0
- * @apiDescription 获取用户信息
- * @api {GET} userinfo 获取用户信息
- * @apiGroup User
- * @apiName index
- * @apiSuccess {Number} id 用户ID.
- * @apiSuccess {String} openid 微信openid.
- * @apiSuccess {String} unionid 微信unionid.
- * @apiSuccess {Number} distribution_channel_id 分销渠道ID.
- * @apiSuccess {String} province 省份.
- * @apiSuccess {String} city 城市.
- * @apiSuccess {String} country 国家.
- * @apiSuccess {String} headimgurl 头像地址.
- * @apiSuccess {Number} send_order_id 派单ID.
- * @apiSuccess {Number=0,1} sex 性别.
- * @apiSuccess {String} balance 书币余额.
- * @apiSuccess {Int} is_vip 是否vip
- * @apiSuccess {String} vip_days 364天.
- * @apiSuccessExample {json} Success-Response:
- *
- * {
- * "code": 0,
- * "msg": "",
- * "data": {
- * "id": 56,
- * "openid": "sdfs34ssdfdsf",
- * "unionid": "SDFSD3343S",
- * "distribution_channel_id": 1212,
- * "province": "浙江省",
- * "city": "杭州",
- * "country": "中国",
- * "headimgurl": "http://.."
- * "send_order_id": 323
- * "balance": 8956
- * "register_time": "2017-12-12 12:12:12"
- * }
- * }
- */
- public function index(){
- if(!$this->checkUid()){
- return response()->error('NOT_LOGIN');
- }
- $data = UserService::getById($this->uid);
- $data['is_vip'] = 0;
- $data['vip_days'] = 0;
- $year_record = YearOrderService::getRecord($this->uid);
- if($year_record){
- $data['is_vip'] = 1;
- $time = strtotime($year_record['end_time'])-time();
- if($time>=86400){
- $data['vip_days'] = floor($time/86400).'天';
- }elseif ($time>3600) {
- $data['vip_days'] = floor($time/3600).'小时';
- }elseif ($time>60) {
- $data['vip_days'] = floor($time/60).'分钟';
- }else{
- $data['vip_days'] = $time.'秒';
- }
- }
- $data['is_all_life'] = 0;
- $activity_id = env('FOREVER_ACTIVITY_ID');
- if($activity_id){
- if(OrderService::userIsParticipateActivity($this->uid,$activity_id)){
- $data['is_vip'] = 0 ;
- $data['vip_days'] = '99年';
- $data['is_all_life'] = 1;
- }
- }
- return response()->success($data);
- }
- /**
- * @apiVersion 1.0.0
- * @apiDescription 用户签到记录
- * @api {GET} user/sign_record 用户签到记录
- * @apiGroup User
- * @apiName signRecord
- * @apiSuccess {int} code 状态码
- * @apiSuccess {String} msg 信息
- * @apiSuccess {object} data 结果集
- * @apiSuccess {reward} data.reward 奖励金额.
- * @apiSuccess {sign_time} data.sign_time 签到时间.
- * @apiParam {page} page
- * @apiSuccessExample {json} Success-Response:
- *
- * {
- * code: 0,
- * msg: "",
- * data: {
- * list: [
- * {
- * reward: 50,
- * sign_time: "2018-03-20 13:43:11"
- * },
- * {
- * reward: 50,
- * sign_time: "2018-01-18 16:22:33"
- * },
- * ],
- * meta: {
- * total: 12,
- * per_page: 15,
- * current_page: 1,
- * last_page: 1,
- * next_page_url: "",
- * prev_page_url: ""
- * }
- * }
- * }
- */
- public function signRecord(Request $request){
- $sign_result = paginationTransform(new SignRecordTransformer(),UserSignService::getUserSignRecord($this->uid));
- $sign_status = UserSignService::isSign($this->uid);
- $sign_today = [];
- if($sign_status){
- $sign_today = ReadRecordService::getByField($this->uid,'sign_info');
- if($sign_today) $sign_today = json_decode($sign_today,1);
- isset($sign_today['sign_time']) && $sign_today['sign_time'] = date('Y-m-d H:i:s',$sign_today['sign_time']);
- isset($sign_today['sign_at']) && $sign_today['sign_time'] = $sign_today['sign_at'];
- isset($sign_today['price']) && $sign_today['reward'] = $sign_today['price'];
- }
- $result = [
- 'sign_status'=>$sign_status,
- 'sign_result'=>$sign_result,
- 'sign_today'=>$sign_today
- ];
- return response()->success($result);
- }
- public function getCoupons(Request $request){
- $activity_id = $request->input('activity_id');
- if(!DB::table('discount_coupons')->where('uid',$this->uid)->where('activity_id',$activity_id)->count()){
- DB::table('discount_coupons')->insert([
- 'uid'=>$this->uid,
- 'activity_id'=>$activity_id,
- 'created_at'=>date('Y-m-d H:i:s'),
- 'updated_at'=>date('Y-m-d H:i:s')
- ]);
- }
- return response()->success();
- }
- public function sign(Request $request){
- //sign_days
- //$day = date('Y-m-d');
- $sign = UserSignService::isSign($this->uid);
- $sign_count = ReadRecordService::getSignCount($this->uid);
- if($sign){
- //如果已经签过到
- if(!$sign_count){
- ReadRecordService::setSignCount($this->uid,1);
- ReadRecordService::setSignDay($this->uid);
- $sign_count = 1;
- }
- $fee = 30;
- if($sign_count>=3){
- $fee = 50;
- }
- $data = ['sign_days'=>$sign_count,'sign_reard'=>$fee,'status'=>1];
- return response()->success($data);
- }
- //还没有签到
- $status = UserSignService::signToday($this->uid);
- $sign_count = ReadRecordService::getSignCount($this->uid);
- $data = ['sign_days'=>$sign_count,'sign_reard'=>$status,'status'=>0];
- return response()->success($data);
- }
- /**
- * @return string
- */
- public function signi()
- {
- /*if(in_array($this->distribution_channel_id,explode(',',redisEnv('NEW_SIGN_CHANNELS','')))){
- $version = UserSignService::getUserSignVersion($this->uid);
- }else{
- $version = 'v1';
- }*/
- $version = UserSignService::getUserSignVersion($this->uid);
- if($version == 'v1'){
- $page = 'wap.sign';
- }else{
- $page = 'wap.signv2';
- }
- $book1= $book2 = null;
- if($version == 'v2' ){
- $sex = $this->_user_info->sex;
- $sex = $sex?$sex:2;
- $book1 = BookConfigService::getRandomOneHighQualityBook($sex);
- $book1->url = sprintf('/reader?bid=%s&cid=%s&source=wechatmsg&fromtype=sign_recommend',Hashids::encode($book1->bid),$book1->first_cid);
- $book2 = SignBookService::getRandomBook($sex);
- \Log::info($book2);
- foreach ($book2 as $item){
- $item->url = sprintf('/reader?bid=%s&cid=%s&source=wechatmsg&fromtype=sign_recommend',Hashids::encode($item->bid),$item->first_cid);
- }
- }
- $tomorrow_pool = $fee_pool = [0,30,50,120,50,50,50,150];
- $day = [0,'一','二','三','四','五','六','七'];
- list($sign,$sign_count) = ReadRecordService::getByMultiField($this->uid,'sign_day','sign_counts');
- if ($sign && $sign == date('Y-m-d')) {
- if($version == 'v1'){
- $fee = $sign_count>=3 ? 50:30;
- }else{
- if ($sign_count % 7 == 1 && $sign_count<=7) {
- $fee = 30;
- } elseif ($sign_count % 7 == 3) {
- $fee = 120;
- } elseif ($sign_count % 7 == 0) {
- $fee = 150;
- } else {
- $fee = 50;
- }
- }
- if($sign_count >=8){
- $fee_pool[1] = 50;
- }
- $tomorrow = (($sign_count+1) % 7 == 0? 7:($sign_count+1) % 7);
- if($sign_count+1 >=8){
- $tomorrow_pool[1] = 50;
- }
- //签过到了
- $data = ['sign_count'=>$sign_count,'fee'=>$fee,'fee_pool'=>$fee_pool,'day'=>$day,'book1'=>$book1,'book2'=>$book2,'tomorrow_fee'=>$tomorrow_pool[$tomorrow]];
- return view($page,$data);
- }
- $fee = UserSignService::signToday($this->uid,$version);
- if(!$fee){
- return response()->error('WAP_SYS_ERROR');
- }
- $sign_count = ReadRecordService::getSignCount($this->uid);
- if($sign_count >=8){
- $fee_pool[1] = 50;
- }
- if($sign_count+1 >=8){
- $tomorrow_pool[1] = 50;
- }
- $tomorrow = (($sign_count+1) % 7 == 0? 7:($sign_count+1) % 7);
- $data = ['sign_count'=>$sign_count,'fee'=>$fee,'fee_pool'=>$fee_pool,'day'=>$day,'book1'=>$book1,'book2'=>$book2,'tomorrow_fee'=>$tomorrow_pool[$tomorrow]];
- return view($page,$data);
- }
- public function recordShare(Request $request){
- if(!$this->checkUid()){
- return response()->error('NOT_LOGIN');
- }
- $uid = $this->uid;
- $distribution_channel_id = $this->distribution_channel_id;
- $type = 'click';
- $bid = $request->get('bid');
- $cid = $request->get('cid',0);
- if(!$bid){
- return response()->error('PARAM_ERROR');
- }
- !is_numeric($bid) && $bid = Hashids::decode($bid)[0];
- WapReaderPageFissionService::createV2($uid,$bid,$distribution_channel_id,$type,0,$cid);
- $user = $this->_user_info;
- $data = [];
- if(in_array($distribution_channel_id,[2,14,211]) && $user){
- $data['username'] = $user->nickname;
- $data['head_img'] = $user->head_img;
- $url = 'https://'._domain().'/detail?fromtype=readershare&id='.Hashids::encode($bid).'&fromflag='.$uid;
- //$url = str_replace('http://', $h5_scheme . '://', url()->current() . '?' . http_build_query($params));
- $data['share_url'] = $url;
- }
- return response()->success($data);
- }
- /**
- * @apiVersion 1.0.0
- * @apiDescription 用户点击广告统计
- * @api {post} user/advisitstat 用户点击广告统计
- * @apiGroup User
- * @apiName signRecord
- * @apiParam {Int} bid bid
- * @apiParam {Int} cid cid
- * @apiParam {Int} type type类型(CLICK|UNLOCK)
- * @apiSuccess {int} code 状态码
- * @apiSuccess {String} msg 信息
- * @apiSuccess {object} data 结果集
- * @apiParam {page} page
- * @apiSuccessExample {json} Success-Response:
- *
- * {
- * code: 0,
- * msg: "",
- * data: {
- * {
- * reward: 50,
- * sign_time: "2018-03-20 13:43:11"
- * },
- * {
- * reward: 50,
- * sign_time: "2018-01-18 16:22:33"
- * },
- * }
- * }
- */
- public function adVisitStat(Request $request){
- $bid = $request->get('bid');
- $cid = $request->get('cid',0);
- $type = $request->get('type');
- if(!$bid || !$type){
- return response()->error('PARAM_ERROR');
- }
- !is_numeric($bid) && $bid = Hashids::decode($bid)[0];
- AdVisitStatService::create($this->uid,$bid,$cid,$type);
- return response()->success();
- }
- public function urgeUpdate(Request $request){
- $bid = $request->get('bid');
- if(!$bid){
- return response()->error('PARAM_ERROR');
- }
- $bid = Hashids::decode($bid)[0];
- $result = BookUrgeUpdateService::UrgeRecord($this->uid,$bid);
- if($result && !$result->id){
- BookUrgeUpdateService::UrgeUpdate($this->uid,$bid,$result->updated_at);
- }
- return response()->success();
- }
- function logout(Request $request,$channel_id,$domain)
- {
- //echo $channel_id.'----';
- //echo $domain;
- $domains = ['zhuishuyun','66kshu','iycdm','leyuee'];
- setcookie(env('COOKIE_AUTH_WEB_WECHAT'), '', -1);
- setcookie('u', '', -1);
- setcookie('force_show_qrcode', '', -1);
- setcookie('sub_random_num', '', -1);
- setcookie('cpc_ad_status', '', -1);
- //return response('logout');
- $param = $request->except('_url');
- $url_format = '%s://site%s.%s.com/logout?%s';
- if(in_array($domain,$domains)){
- $i = 0;
- foreach ($domains as $k=>$v){
- if($v == $domain){
- $i = $k;
- }
- }
- if(isset($domains[$i+1])){
- $link = sprintf($url_format,env('PROTOCOL'),$channel_id,$domains[$i+1],http_build_query($param)) ;
- return redirect()->to($link);
- }
- }
- return view('help.logout');
- }
- function setOrderDelCookie(Request $request){
- $param = $request->except('_url');
- $type = isset($param['type']) ?$param['type']:'set';
- foreach ($param as $k=>$v){
- if($k == 'type') continue;
- if($type == 'set'){
- Cookie::queue($k, $v, 1000, null, null, false, false);
- }else{
- setcookie($k, '', -1);
- }
- }
- return response('ok');
- }
-
- function test_add_user_login_cookie(Request $request)
- {
- $uid = $request->get('uid');
- \Log::info('test_add_user_login_cookie:'.$uid);
- Cookie::queue(env('COOKIE_AUTH_WEB_WECHAT'), $uid, env('U_COOKIE_EXPIRE'), null, null, false, false);
- return response('add_cookie:'.$uid);
- }
- //日常随机签到
- function day_rand_sign(Request $request)
- {
- $uid = $this->uid;
- $day = date('Y-m-d');
- $hasSigned = UserRandSignService::hasSigned(compact('uid','day'));
- $fee = 0;
- if(!$hasSigned)
- {
- $fee = mt_rand(5,15);
- UserRandSignService::sign(compact('uid','day','fee'));
- }
- return view('wap.rand_sign',compact('hasSigned','fee'));
- }
- private function bindTelephoneStatus(){
- }
-
- }
|