input('paas'); $activities = Activity::orderBy('is_deadline', 'asc')->orderBy('start_time', 'asc'); if (!empty($paas)) { $paas_id = Paas::Where('name', $paas)->value('id'); $activity_ids = PaasActivity::where('paas_id', $paas_id)->pluck('activity_id'); $activities = $activities->whereIn('id', $activity_ids); } $keyword = $request->input('keyword'); if ($keyword) { $keyword = trim($keyword); $activities = $activities->where("theme", 'like', '%'.$keyword.'%'); } $activities = $activities->paginate(); foreach ($activities as $activity) { $start_time = date('Y/m/d', strtotime($activity->start_time)); $end_time = date('Y/m/d', strtotime($activity->end_time)); if ($start_time === $end_time) { $time = $start_time; }else{ if (empty($activity->end_time)) { $time = $start_time.' - '.'待定'; }else{ $time = $start_time.' - '.$end_time; } } $activity->time = $time; } return $activities; } /** * 活动详情 * @param [type] $activity_id [description] * @return [type] [description] */ public function officialActivity($activity_id,$user = null) { $user_id = 0; if(!empty($user)){ $user_id = $user->id; } $activity = Activity:: withCount(['activityMember' => function ($query) use ($user_id) { $query->where('user_id', $user_id); }])->findOrFail($activity_id); $activity->end_time = $activity->end_time?$activity->end_time:'待定'; $activity->detail_pic = json_decode($activity->detail_pic); $activity->increment('click_num', 1); //是否报名 $is_joined = $this->isJoined(auth()->id(), $activity_id); $activity->is_joined = $is_joined; //最近参加 $members = ActivityMember::where('activity_id', $activity_id)->where('is_joined', 1)->orderBy('id', 'desc')->get(); foreach ($members as $member) { $member->type = User::where('id', $member->user_id)->value('type'); } $activity->members = $members; return $activity; } public function isJoined($user_id, $activity_id) { $is_joined = ActivityMember::where('user_id', $user_id)->where('activity_id',$activity_id)->where('is_joined', 1)->count(); return $is_joined?1:0; } /** * 活动报名 * @param [type] $activity_id [description] * @return [type] [description] */ public function officailJoinActivity($request, $activity_id) { $user = auth()->user(); $activity = Activity::findOrFail($activity_id); if ($activity->is_deadline) { return '活动截止报名'; } $member = $this->isJoined($user->id, $activity_id); if ($member) { return '该活动已报名'; } $member = ActivityMember::firstOrCreate([ 'user_id'=>$user->id, 'activity_id'=>$activity_id, ]); $member->name = $user->name; $member->avatar = $user->photo; $member->sex = $user->sex; $member->mobile = $user->mobile; $member->save(); if ($activity->fee == 0) { $member->is_joined = 1; $member->save(); $member->wx_pay = []; return $member; }else{ $trade_no = \CommonUtilsService::getTradeNO(); $pay_order = array( 'user_id' => $user->id, 'trade_no' => $trade_no, 'pay_status' => 'UNPAID', 'cash' => $activity->fee, ); $order = array( 'user_id'=>$user->id, 'type_id'=>$activity_id, 'goods'=>$activity->theme, 'price'=>$activity->fee, 'num'=>1, 'type'=>'activity', 'trade_no'=>$trade_no, ); if (strstr($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger')) { $wx_pay = \WechatService::constructWXPay($pay_order, $user->id, $activity->theme); }else{ $wx_pay = \WechatService::constructWXH5Pay($pay_order, $user->id, $activity->theme, $activity_id); } //支付订单 $order_pay = PayOrder::create($pay_order); $order = Order::create($order); $order_pay->wx_pay = $wx_pay; return $order_pay; } } public function getClientIp() { $cip = 'unknown'; if ($_SERVER['REMOTE_ADDR']) { $cip = $_SERVER['REMOTE_ADDR']; }elseif (getenv('REMOTE_ADDR')) { $cip = getenv('REMOTE_ADDR'); } return $cip; } /** * 活动置顶 * @param [type] $activity_id [description] * @return [type] [description] */ public function topActivity($activity_id) { $activity = Activity::find($activity_id); if ($activity->is_top) {//已经是置顶状态 //当前置顶以上的置顶状态-1 Activity::where('is_top', '>', $activity->is_top)->where('is_deadline', 0)->where('is_cancel', 0)->decrement('is_top', 1); } //置顶数 $top_count = Activity::where('is_top', '>', 0)->where('id', '<>', $activity_id)->where('is_deadline', 0)->where('is_cancel', 0)->count(); $top_count = $top_count?$top_count:0; $activity->is_top = $top_count + 1; $activity->save(); return ; } /** * 取消置顶 * @param [type] $activity_id [description] * @return [type] [description] */ public function cancelActivityTop($activity_id) { $activity = Activity::find($activity_id); if ($activity->is_top) { //置顶以上的状态-1 Activity::where('is_top', '>', $activity->is_top)->where('is_deadline', 0)->where('is_cancel', 0)->decrement('is_top', 1); $activity->is_top = 0; $activity->save(); } return; } /** * 取消活动 * @param Request $request [description] * @param [type] $activity_id [description] * @return [type] [description] */ public function cancelActivity($request, $activity_id) { //取消活动 $activity = Activity::find($activity_id); $activity->is_cancel = 1; $activity->save(); } /** * 复制活动 * @param [type] $activity_id [description] * @return [type] [description] */ public function copyActivity($request, $activity_id) { $activity = Activity::where('id', $activity_id)->first(); $array = ['id'=>$activity->id, 'is_top'=>$activity->is_top, 'qrcode'=>$activity->qrcode, 'vote_qrcode'=>null, 'sign_in_qrcode'=>$activity->sign_in_qrcode, 'is_deadline'=>0, 'is_cancel'=>0, 'click_num'=>0, 'created_at'=>$activity->created_at, 'updated_at'=>$activity->updated_at, 'deleted_at'=>null]; $activity_arr = $activity->toArray(); $new_arr = array_diff($activity_arr, $array); $activity = $this->addActivity($new_arr); $admin_type = $request->session()->get('admin_type'); if ($admin_type == 'paas_admin') { $paas_obj = $request->session()->get('paas_obj'); PaasActivity::create([ 'paas_id'=>$paas_obj->id, 'activity_id'=>$activity->id, ]); } return $activity; } /** * 复制活动 * @param [type] $activity_id [description] * @return [type] [description] */ public function copyActivityV2($request, $activity_id) { $activity = Activity::where('id', $activity_id)->first(); $array = ['id'=>$activity->id,'pay_type'=>$activity->pay_type, 'is_top'=>$activity->is_top, 'qrcode'=>$activity->qrcode, 'vote_qrcode'=>null, 'sign_in_qrcode'=>$activity->sign_in_qrcode, 'is_deadline'=>0, 'is_cancel'=>0, 'click_num'=>0, 'is_hidden'=>$activity->is_hidden,'created_at'=>$activity->created_at, 'updated_at'=>$activity->updated_at, 'deleted_at'=>null,'is_online'=>$activity->is_online,'can_coin_amount'=>$activity->can_coin_amount,'can_cash_amount'=>$activity->can_cash_amount,'can_repeat_sign'=>$activity->can_repeat_sign,]; $activity_arr = $activity->toArray(); $new_arr = array_diff($activity_arr, $array); $activity = $this->addActivity($new_arr); $admin_type = $request->session()->get('admin_type'); if ($admin_type == 'paas_admin') { $paas_obj = $request->session()->get('paas_obj'); PaasActivity::create([ 'paas_id'=>$paas_obj->id, 'activity_id'=>$activity->id, ]); } return $activity; } /** * 添加活动 */ public function addActivity($array) { $activity = Activity::create($array); return $activity; } /**获取活动的 的报名状态 */ public function getActivityApplyStatus(){ } }