getChannelUserId(); $res = WelfarePriceSerivce::isCanPrize($channel_user_id, date('Y-m-d')); $data = []; $data['prize']['is_has_prize'] = 0; $data['prize']['url'] = ''; $data['prize']['is_alert'] = 0; $open_welfare_channel = env('OPEN_WELFARE_CHANNEL'); $is_open_welfare = false; if($open_welfare_channel){ if($open_welfare_channel == 'all'){ $is_open_welfare = true; }else{ $open_welfare_channel_array = explode(',',$open_welfare_channel); if(in_array($channel_user_id,$open_welfare_channel_array)){ $is_open_welfare = true; } } } if ($res > 0) { $now = time(); $sign_array = ['channel_user_id' => $channel_user_id, 'time' => $now]; $token = _sign($sign_array, $this->_welfare_key); DB::table('welfare_pre_prizes')->insert([ 'channel_user_id' => $channel_user_id, 'token' => $token, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s', $now), 'is_enable' => 1 ]); $data['prize']['is_alert'] = 1; $data['prize']['is_has_prize'] = 1; $data['prize']['url'] = 'https://' . _domain() . '/welfare/prizeView?token=' . $token; } if($res == 0){ $data['prize']['is_alert'] = 1; $data['prize']['is_has_prize'] = 0; } if($res == -1){ $data['prize']['is_alert'] = 0; $data['prize']['is_has_prize'] = 0; } if(!$is_open_welfare){ $data['prize']['is_alert'] = 0; $data['prize']['is_has_prize'] = 0; } $channel_user_info = ChannelUserService::getById($channel_user_id); $company = CompanyService::getCompany($channel_user_info->company_id); if ($company && $company->is_important == 1) { $data['books'] = WelfareBookService::getByImportantType(1); }else{ $data['books'] = WelfareBookService::getByImportantType(0); } if( $data['books']){ foreach ($data['books'] as &$v){ $v->bid = Hashids::encode($v->bid); } } return response()->success($data); } //领取页面 public function prizeView(Request $request) { $token = $request->get('token'); if (empty($token)) { return view('channel.web.welfare.index', ['options' => json_encode(['is_access'=>0,'msg'=>'非法访问']),'amount'=>0]); } $openid = $request->get('openid'); $welfare_user_id = Cookie::get('welfare_user'); if (!$openid && !$welfare_user_id) { //没有coookie且没有openid 则授权获取openid $h5_scheme = 'https'; $params = $request->except('_url'); $url = str_replace('http://', $h5_scheme . '://', url()->current() . '?' . http_build_query($params)); $auth_url = $this->getAuthUrl($url); return redirect($auth_url); } //根据token获取抽奖信息 $res = DB::table('welfare_pre_prizes')->join('welfare_prizes', 'welfare_prizes.channel_user_id', '=', 'welfare_pre_prizes.channel_user_id') ->select('welfare_pre_prizes.channel_user_id', 'welfare_prizes.left', 'welfare_pre_prizes.id','welfare_prizes.id as prize_id') ->where('welfare_pre_prizes.token', $token) ->where('welfare_prizes.date', date('Y-m-d')) ->where('welfare_pre_prizes.created_at', '>', date('Y-m-d')) ->where('welfare_pre_prizes.is_enable', '=', 1) ->first(); if (!$res) { return view('channel.web.welfare.index', ['options' => json_encode(['is_access'=>0,'msg'=>'非法访问']),'is_prize'=>0,'amount'=>0]); } if (!$welfare_user_id) { $welfare_user = WelfareUserService::createUser($openid, $res->channel_user_id); Cookie::queue('welfare_user', $welfare_user->id); $welfare_user_id = $welfare_user->id; } DB::table('welfare_pre_prizes')->where('id', $res->id)->update(['is_enable' => 0, 'updated_at' => date('Y-m-d H:i:s')]); if ($res->left <= 0) { return view('channel.web.welfare.index', ['options' => json_encode(['is_access'=>0,'msg'=>'']),'is_prize'=>0,'amount'=>0]); } //抽奖记录 一个用户一天只能抽一次 $info = WelfareRecordService::getByUid($welfare_user_id); if ($info) { //已经抽过讲了 return view('channel.web.welfare.index', ['options' => json_encode(['is_access'=>0,'msg'=>'']),'is_prize'=>0,'amount'=>0]); } //机会减一次 WelfarePriceSerivce::decrementLeft($res->prize_id); //保存抽奖记录 $price_pool =$this->getPriceList(); $amount = array_random($price_pool); WelfareRecordService::create([ 'prize_id' => $res->prize_id, 'welfare_uid' => $welfare_user_id, 'amount' => $amount, 'status' => 'PENDING' ]); return view('channel.web.welfare.index', ['options' => json_encode(['is_access'=>1,'msg'=>'']),'is_prize'=>1,'amount'=>$amount]); } private function getPriceList(){ $str = '247,2,5,254,13,255,108,256,121,262,425,263,166,267,172,275,184,290,200,292,217,300,229,308,236,311,17,334,154,341,167,345,195,350,228,365,429,376,160,381,207,232,426,176,399,424,404'; $channel_user_id = $this->getChannelUserId(); if(in_array($channel_user_id,explode(',',$str))){ //return $price_pool = [0.1, 0.1, 0.1]; } return [1, 1, 1]; } public function getAuthUrl($redirect_url){ $params['redirect_url'] = $redirect_url; $params['timestamp'] = time(); $params['gzh_app_id'] = 'wxe559e68b007476f6'; $params['sign'] = _sign($params,env('OAUTH_KEY') ); $auth_base = 'https://zsyauth.aizhuishu.com/user_oauth'; $redirect = $auth_base . '?' . http_build_query($params); return $redirect; } /** * @apiVersion 1.0.0 * @api {GET} Welfare/prize 抽奖 * @apiGroup Welfare * @apiName prize * @apiSuccess {Number} is_prize 是否中奖 * @apiSuccess {Number} amount 中将金额 * @apiSuccessExample {json} Success-Response: * * { * "code": 0, * "msg": "", * "data": * { * "is_prize": 1, * "amount": 0, * } * * } */ public function prize(Request $request) { $welfare_user_id = Cookie::get('welfare_user'); if (!$welfare_user_id) { //没有用户信息 return response()->success(['is_prize' => 0, 'amount' => 0]); } //抽奖记录 一个用户一天只能抽一次 $info = WelfareRecordService::getByUid($welfare_user_id); if ($info) { //已经抽过讲了 return response()->success(['is_prize' => 0, 'amount' => 0]); } $welfare_user = WelfareUserService::getByUid($welfare_user_id); $price = WelfarePriceSerivce::getByToday($welfare_user->channel_user_id); if (!$price) { //异常 return response()->success(['is_prize' => 0, 'amount' => 0]); } if ($price->left <= 0) { //没有抽奖机会了 return response()->success(['is_prize' => 0, 'amount' => 0]); } //机会减一次 WelfarePriceSerivce::where('id', $price->id)->decrement('left'); //保存抽奖记录 $price_pool = [1.8, 5.8, 8.8]; $amount = array_random($price_pool); WelfareRecordService::create([ 'prize_id' => $price->id, 'welfare_uid' => $welfare_user_id, 'amount' => $amount, 'status' => 'PENDING' ]); return response()->success(['is_prize' => 1, 'amount' => $amount]); } }