123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885 |
- <?php
- namespace App\Http\Controllers\Wap\User;
- use App\Libs\AliSMS;
- 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\ForceGuidePersonAccountService;
- use App\Modules\User\Services\ReadRecordService;
- use App\Modules\User\Services\UserBindHkWelfareService;
- use App\Modules\User\Services\UserBindPhoneService;
- use App\Modules\User\Services\UserDivisionCpcPropertyService;
- use App\Modules\User\Services\UserWealthyOperateRecordService;
- 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['bind'] = 0;
- $data['bind_phone'] = '';
- $data['is_paid'] = $this->is_paid;
- if ($this->is_paid) {
- $bind_info = UserBindPhoneService::bindInfo($this->uid);
- if ($bind_info) {
- $data['bind'] = 1;
- $data['bind_phone'] = $bind_info->phone;
- }
- }
- $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 signV3()
- {
- //修改签到页面,version=v2
- $fee_pool = [0, 30, 50, 120, 50, 50, 50, 150];
- list($sign, $sign_count) = ReadRecordService::getByMultiField($this->uid, 'sign_day', 'sign_counts');
- $read_record = $this->getSignPageReadRecord($all_bid);
- if (!$all_bid) $all_bid = [];
- $user = $this->_user_info;
- $recommend_book = $this->getSignRecomandBook($user->sex, $all_bid);
- $bind_status = 0;
- $bind_link = '';
- if ($sign && $sign == date('Y-m-d')) {
- 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;
- }
- $day = $sign_count % 7;
- if ($day == 0) {
- $day = 7;
- }
- //签过到了
- $name = $user->nickname;
- $head_img = $user->head_img;
- $balance = $user->balance;
- $data = ['sign_count' => $sign_count, 'fee' => $fee, 'fee_pool' => $fee_pool,
- 'day' => $day, 'is_alert' => 0, 'read_record' => $read_record, 'name' => $name,
- 'head_img' => $head_img,
- 'balance' => $balance,
- 'recommend_book' => $recommend_book,
- 'bind_status'=>$bind_status,
- 'bind_link'=>$bind_link
- ];
- return view('wap.signV3', $data);
- }
- $fee = UserSignService::signToday($this->uid, 'v2');
- if (!$fee) {
- return response()->error('WAP_SYS_ERROR');
- }
- $sign_count = ReadRecordService::getSignCount($this->uid);
- //$sign_count++;
- if ($sign_count >= 8) {
- $fee_pool[1] = 50;
- }
- $day = $sign_count % 7;
- if ($day == 0) {
- $day = 7;
- }
- //签过到了
- $name = $user->nickname;
- $head_img = $user->head_img;
- $balance = $user->balance;
- //导粉
- list($inner_sites,$active_qrcode) = redisEnvMulti(
- 'GUIDE_PERSONAL_ACCOUNT_SITES',
- 'ACTIVE_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE'
- );
- if ($active_qrcode && $inner_sites && in_array($this->distribution_channel_id, explode(',', $inner_sites))){
- $get_info = UserBindHkWelfareService::isHasGet($this->uid);
- if(!$get_info){
- $property = UserDivisionCpcPropertyService::getUserPropertyV2($this->uid);
- $charge = false;
- if (in_array($property, ['medium', 'high'])) {
- $charge = true;
- } else {
- if ($property == 'undefined' && OrderService::getChargeNum($this->uid) >= 10) {
- $charge = true;
- }
- }
- if($charge){
- $bind_status = 1;
- $bind_link = '/guidestrem?uid=' . $this->uid . '&fee=500';
- }
- }
- }
- $data = ['sign_count' => $sign_count, 'fee' => $fee, 'fee_pool' => $fee_pool,
- 'day' => $day, 'is_alert' => 1, 'read_record' => $read_record,
- 'name' => $name,
- 'head_img' => $head_img,
- 'balance' => $balance,
- 'recommend_book' => $recommend_book,
- 'bind_status'=>$bind_status,
- 'bind_link'=>$bind_link
- ];
- return view('wap.signV3', $data);
- }
- private function getSignPageReadRecord(&$all_id)
- {
- $res = ReadRecordService::getReadRecord($this->uid);
- if ($res) {
- $id_arr = [];
- foreach ($res as $key => $value) {
- if ($key < 2) {
- $id_arr[] = $value['bid'];
- }
- $all_id[] = $value['bid'];
- }
- $book = BookConfigService::getBooksByIds($id_arr);
- foreach ($res as $key => &$value) {
- $value['cover'] = '';
- $value['url'] = sprintf('/reader?bid=%s&cid=%s', Hashids::encode($value['bid']), $value['cid']);
- $value['last_chapter'] = 0;
- $value['update_count'] = 0;
- foreach ($book as $val) {
- if ($value['bid'] == $val->bid) {
- $value['cover'] = $val->cover;
- $value['last_chapter'] = $val->last_chapter;
- if ($val->status == 0) {
- $value['update_count'] = DB::table('book_updates')
- ->where('bid', $val->bid)->where('update_type', 'add_chapter')
- ->where('created_at', '>=', date('Y-m-d H:i:s', $value['time']))
- ->sum('update_chapter_count');
- }
- break;
- }
- }
- }
- }
- return $res;
- }
- private function getSignRecomandBook(int $sex, array $all_bid):array
- {
- if ($sex == 1) {
- $set_key = 'male_high_reco_bids';
- } else {
- $set_key = 'female_high_reco_bids';
- }
- $bids = Cookie::get('sign_recomand_bids');
- if (!$bids) {
- $bid_array = Redis::Srandmember($set_key, 16);
- //Log::info($bid_array);
- $time = strtotime(date('Y-m-d', time() + 86400)) - time();
- $new_bid_array = [];
- foreach ($bid_array as $item) {
- if (in_array($item, $all_bid)) {
- array_unshift($new_bid_array, $item);
- } else {
- array_push($new_bid_array, $item);
- }
- }
- $bids = implode(',', $new_bid_array);
- Cookie::queue('sign_recomand_bids', $bids, $time);
- }
- //Log::info($bids);
- $result = DB::select(sprintf('select book_configs.book_name,intro,bid,books.category_name,book_configs.cover,first_cid,
- (select GROUP_CONCAT(tags) from book_tags where bid = book_configs.bid and `status` = 1) as tag from book_configs
- left join books on books.id = book_configs.bid left join book_categories on book_categories.id = books.category_id
- where bid in (%s) and is_on_shelf =2 ORDER by field(book_configs.bid,%s)', $bids, $bids));
- $data = [];
- foreach ($result as $item) {
- $tag_list = [];
- if ($item->tag) {
- $tag_list = explode(',', $item->tag);
- }
- $data[] = [
- 'book_name' => $item->book_name,
- 'intro' => $item->intro,
- 'bid' => $item->bid,
- 'category_name' => $item->category_name,
- 'cover' => $item->cover,
- 'tag' => $item->tag,
- 'tag_list' => $tag_list,
- 'url' => sprintf('/reader?bid=%s&cid=%s&source=wechatmsg&fromtype=sign_recommend', Hashids::encode($item->bid), $item->first_cid),
- ];
- }
- return $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'));
- }
- public function sendCode(Request $request)
- {
- $phone = $request->post('phone');
- $code = random_int(1000, 9999);
- Redis::setex('code:' . $phone, 120, $code);
- AliSMS::send($phone, 'paid_user_bind_phone', ['code' => $code]);
- return response()->success();
- }
- public function bindPhone(Request $request)
- {
- $code = $request->post('code');
- $phone = $request->post('phone');
- $from = $request->post('from');
- $old = Redis::get('code:' . $phone);
- if ($old && $old == $code) {
- Redis::del('code:' . $phone);
- $user_info = UserService::getById($this->uid);
- if (!$user_info) {
- return response()->error();
- }
- try {
- $result = UserBindPhoneService::bind($this->uid, $user_info->openid, $phone, $from);
- if ($result == 0) {
- UserService::addBalance($this->uid, 100, 0, 100);
- UserWealthyOperateRecordService::create($this->uid, 100, $this->distribution_channel_id, 'bind_phone');
- return response()->success();
- }
- if ($result == -1) {
- return response()->error('WAP_BIND_PHONE_EXIST');
- }
- if ($result == -2) {
- return response()->error('WAP_SEND_OPENID_EXIST');
- }
- } catch (\Exception $e) {
- }
- } else {
- return response()->error('WAP_SEND_CODE_ERROR');
- }
- return response()->error();
- }
- public function bindPhoneView(Request $request)
- {
- $from = 'personal';
- $order = '';
- $url = '/personal';
- return view('pay.order.bindPhone', compact('order', 'url', 'from'));
- }
- public function guidePersonalAccount(Request $request)
- {
- $bid = $request->get('bid');
- $cid = $request->get('cid');
- $prev_cid = $request->get('prev_cid');
- $book_name = $request->get('book_name');
- $bid_no = Hashids::decode($bid)[0];
- if (Redis::SISMEMBER('crm:out_channel_sites', $this->distribution_channel_id)) {
- $group = 'OUT_FORCE';
- } else {
- $group = 'FORCE';
- }
- $env_config = redisEnvMulti($group . '_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE', $group . '_GUIDE_PERSONAL_ACCOUNT_MAX_UV',
- $group . '_GUIDE_PERSONAL_ACCOUNT_ID', $group . '_GUIDE_PERSONAL_ACCOUNT_MAX_EVERY_UV');
- if (empty($env_config[0])) return back();
- $img = $env_config[0];
- $max = empty($env_config[1]) ? 100 : $env_config[1];
- $one_loop_max = empty($env_config[3]) ? 10 : $env_config[3];
- $now_id = (int)$env_config[2];
- $uv = Redis::scard(strtolower($group) . '_guide_personal_uv');
- $personal_info = DB::table('personal_account_list')->where('id', $now_id)->select('count')->first();
- $total_max = $personal_info->count + $uv;
- //Log::info('$total_max is: '.);
- if ($uv >= $one_loop_max || $total_max >= $max) {
- if ($total_max >= $max) {
- DB::table('personal_account_list')->where('id', $now_id)->update([
- 'status' => 2,
- 'count' => $total_max,
- 'updated_at' => date('Y-m-d H:i:s')
- ]);
- } else {
- DB::table('personal_account_list')->where('id', $now_id)->increment('count', $uv, [
- 'updated_at' => date('Y-m-d H:i:s')
- ]);
- }
- $account = DB::table('personal_account_list')
- ->where('is_enable', 1)
- ->whereIn('status', [1, 0])
- ->select('id', 'url')
- ->where('count', '<', $max)
- ->where('group', $group)
- ->orderBy('count', 'asc')
- ->orderBy('id')
- ->first();
- Redis::del(strtolower($group) . '_guide_personal_uv');
- if ($account) {
- DB::table('personal_account_list')->where('id', $account->id)->update([
- 'status' => 1,
- 'updated_at' => date('Y-m-d H:i:s')
- ]);
- $img = $account->url;
- $now_id = $account->id;
- Redis::Hmset('env', $group . '_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE', $account->url, $group . '_GUIDE_PERSONAL_ACCOUNT_ID', $account->id);
- } else {
- Redis::Hmset('env', $group . '_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE', '', $group . '_GUIDE_PERSONAL_ACCOUNT_ID', '');
- }
- }
- Redis::sadd(strtolower($group) . '_guide_personal_uv', $this->uid);
- if ($group == 'OUT_FORCE') {
- $data = UserService::getById($this->uid);
- Redis::hset('crm:out_guide_exposure_user', $data->openid, $this->uid);
- }
- $personal_info = DB::table('personal_account_list')->where('id', $now_id)->select('name')->first();
- DB::table('ad_pdd')->insert([
- 'uid' => $this->uid,
- 'img' => $group . '_GUIDE_PERSONAL_ACCOUNT_' . $now_id,
- 'date' => date('Y-m-d'),
- 'created_at' => date('Y-m-d H:i:s'),
- 'updated_at' => date('Y-m-d H:i:s')
- ]);
- ForceGuidePersonAccountService::create($this->uid, $bid_no, $cid);
- $link['next'] = sprintf('/reader?bid=%s&cid=%s', $bid, $cid);
- $link['prev'] = sprintf('/reader?bid=%s&cid=%s', $bid, $prev_cid);
- $link['catalog'] = sprintf('/catalog?id=%s', $bid);
- return view('jump.forceGuidePersonalAccountV2', ['img' => $img, 'link' => $link, 'title' => $book_name, 'name' => $personal_info->name]);
- }
- /*public function crmPushView(Request $request)
- {
- $out_status = Redis::SISMEMBER('crm:out_channel_sites', $this->distribution_channel_id);
- if ($out_status) {
- $group = 'OUT_ACTIVE';
- } else {
- $group = 'ACTIVE';
- }
- list($qrcode, $max_uv, $account_id, $one_uv) = redisEnvMulti($group . '_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE', $group . '_GUIDE_PERSONAL_ACCOUNT_MAX_UV',
- $group . '_GUIDE_PERSONAL_ACCOUNT_ID', $group . '_GUIDE_PERSONAL_ACCOUNT_MAX_EVERY_UV');
- $uv = Redis::scard(strtolower($group) . '_guide_personal_uv');
- if (!$max_uv) $max_uv = 100;
- if ($uv >= $max_uv) {
- //名额不足
- $data = ['code' => -1, 'read_url' => '/continue'];
- return view('crm.crmPush', $data);
- }
- $sql = 'SELECT friend_link_uid_bind.uid FROM friend_link_uid_bind where openid = (SELECT openid FROM users WHERE id = %s) ORDER by id desc limit 1';
- $friend_link_uid_bind = DB::select(sprintf($sql, $this->uid));
- //$get_info = UserBindHkWelfareService::isHasGet($this->uid);
- if ($friend_link_uid_bind) {
- $info = DB::table('ad_pdd')->where('uid', $friend_link_uid_bind[0]->uid)->orderBy('id', 'desc')->first();
- if ($info) {
- $personal_account_id = preg_replace('/\D+/', '', $info->img);
- if ($info) {
- $personal_info = DB::table('personal_account_list')
- ->where('id', $personal_account_id)
- ->where('is_enable', 1)
- ->select('name', 'url', 'status', 'is_enable')->first();
- //$user_info = UserService::getById($friend_link_uid_bind[0]->uid);
- //$link = sprintf('https://site%s.leyuee.com',encodeDistributionChannelId($user_info->distribution_channel_id));
- if ($personal_info) {
- $data = ['code' => -2, 'name' => $personal_info->name, 'read_url' => '/guidestrem?uid=' . $this->uid . '&name=' . $personal_info->name . '&img=' . urlencode($personal_info->url)];
- return view('crm.crmPush', $data);
- }
- }
- }
- $data = ['code' => -3, 'read_url' => '/guidestrem?uid=' . $this->uid . '&fee=500', 'name' => ''];
- return view('crm.crmPush', $data);
- } else {
- $data = ['code' => 0, 'read_url' => '/guidestrem?uid=' . $this->uid . '&fee=500', 'name' => ''];
- return view('crm.crmPush', $data);
- }
- }*/
- public function crmPushView(Request $request)
- {
- $crm_config = redisEnvMulti('ACTIVE_GUIDE_PERSONAL_ACCOUNT_OURS_QRCODE',
- 'ACTIVE_GUIDE_PERSONAL_ACCOUNT_MAX_UV', 'ACTIVE_GUIDE_PERSONAL_ACCOUNT_ID',
- 'ACTIVE_GUIDE_PERSONAL_ACCOUNT_MAX_EVERY_UV');
- $img = $crm_config[0];
- $max = empty($crm_config[1]) ? 100 : $crm_config[1];
- $max = (int)$max;
- $one_loop_max = empty($crm_config[3]) ? 10 : $crm_config[3];
- $now_id = (int)$crm_config[2];
- $uv_key = 'active_guide_personal_uv';
- $uv = Redis::scard($uv_key);
- $personal_info = DB::table('personal_account_list')->where('id', $now_id)->select('id','count','name')->first();
- $total_max = (int)($personal_info->count + $uv);
- if (empty($img) || empty($now_id) || $total_max >= $max) {
- //没有名额
- $data = ['code' => -1, 'read_url' => '/sign'];
- return view('crm.crmPush', $data);
- }
- $sql = 'SELECT friend_link_uid_bind.uid FROM friend_link_uid_bind where openid = (SELECT openid FROM users WHERE id = %s) ORDER by id desc limit 1';
- $friend_link_uid_bind = DB::select(sprintf($sql, $this->uid));
- //$get_info = UserBindHkWelfareService::isHasGet($this->uid);
- if ($friend_link_uid_bind) {
- $info = DB::table('ad_pdd')->where('uid', $friend_link_uid_bind[0]->uid)->orderBy('id', 'desc')->first();
- if ($info) {
- $personal_account_id = preg_replace('/\D+/', '', $info->img);
- if ($info) {
- $personal_info = DB::table('personal_account_list')
- ->where('id', $personal_account_id)
- ->where('is_enable', 1)
- ->select('name', 'url', 'status', 'is_enable')->first();
- if ($personal_info) {
- $data = ['code' => -2, 'name' => $personal_info->name];
- return view('crm.crmPush', $data);
- }
- }
- }
- $user_info = UserService::getById($friend_link_uid_bind[0]->uid);
- $link = 'https://site'.encodeDistributionChannelId($user_info->distribution_channel_id).'.leyuee.com/sign';
- $data = ['code' => -3, 'read_url' => $link];
- return view('crm.crmPush', $data);
- }
- $property = UserDivisionCpcPropertyService::getUserPropertyV2($this->uid);
- $charge = false;
- if (in_array($property, ['medium', 'high'])) {
- $charge = true;
- } else {
- if ($this->property == 'undefined' && OrderService::getChargeNum($this->uid) >= 10) {
- $charge = true;
- }
- }
- if (!$charge) {
- //不符合条件
- $data = ['code' => -1, 'read_url' => '/sign'];
- return view('crm.crmPush', $data);
- }
- Redis::sadd($uv_key, $this->uid);
- DB::table('ad_pdd')->insert([
- 'uid' => $this->uid,
- 'img' => 'GUIDE_PERSONAL_ACCOUNT_' . $now_id,
- 'date' => date('Y-m-d'),
- 'created_at' => date('Y-m-d H:i:s'),
- 'updated_at' => date('Y-m-d H:i:s')
- ]);
- return view('crm.crmPush2', ['name' => $personal_info->name, 'img' => $img]);
- }
- }
|