From 69a60b156fb0ea49713aef3af6a101aba6666cea Mon Sep 17 00:00:00 2001 From: Hankin Date: Wed, 15 Apr 2026 11:36:01 +0800 Subject: [PATCH] activity --- .../Server/Admin/ActivityController.php | 794 ++++++++++-------- ...13214_table_community_activity_sponsor.php | 32 + 2 files changed, 481 insertions(+), 345 deletions(-) create mode 100644 database/migrations/2026_04_15_113214_table_community_activity_sponsor.php diff --git a/app/Http/Controllers/Server/Admin/ActivityController.php b/app/Http/Controllers/Server/Admin/ActivityController.php index 5009ff0..0d62d4b 100644 --- a/app/Http/Controllers/Server/Admin/ActivityController.php +++ b/app/Http/Controllers/Server/Admin/ActivityController.php @@ -101,11 +101,24 @@ class ActivityController extends Controller ->where('merchant_services.type', 'community') ->whereNull('merchant_services.deleted_at'); }, null, null, 'left') - ->select('community_activities.pic', 'community_activities.title', 'community_activities.price', - 'community_activities.pv', 'merchant_services.status', 'community_activities.pay_type', - 'community_activities.reward_status', 'community_activities.created_at', 'merchant_services.is_top', - 'merchant_services.service_type', 'community_activities.id', 'community_activities.sku', 'community_activities.Subtitle','community_activities.start_time', - 'community_activities.end_time', 'community_activities.top_time') + ->select( + 'community_activities.pic', + 'community_activities.title', + 'community_activities.price', + 'community_activities.pv', + 'merchant_services.status', + 'community_activities.pay_type', + 'community_activities.reward_status', + 'community_activities.created_at', + 'merchant_services.is_top', + 'merchant_services.service_type', + 'community_activities.id', + 'community_activities.sku', + 'community_activities.Subtitle', + 'community_activities.start_time', + 'community_activities.end_time', + 'community_activities.top_time' + ) ->with('banners:class_id,icon'); if ($status != 2) { $activities = $activities->where('merchant_services.status', $status); @@ -121,17 +134,17 @@ class ActivityController extends Controller }); } $time = date('Y-m-d H:i:s'); - + $activities = $activities ->orderBy('merchant_services.status', 'desc') ->orderBy('merchant_services.is_top', 'desc'); - // ->orderBy('merchant_services.top_time', 'desc'); + // ->orderBy('merchant_services.top_time', 'desc'); $order_by_time = $request->input("order_by_time"); if ($order_by_time) { $activities = $activities->orderBy('community_activities.start_time', $order_by_time); - }else { + } else { $activities = $activities->orderBy('community_activities.id', 'desc'); - } + } $activities = $activities->paginate(); foreach ($activities as $activity) { if ($my_market_services_ids) { @@ -149,7 +162,8 @@ class ActivityController extends Controller $activity->banners->icon = json_decode($activity->banners->icon, true); } } - if ($activity->sku && $activity->sku != 'null') $activity->sku = json_decode($activity->sku, true); + if ($activity->sku && $activity->sku != 'null') + $activity->sku = json_decode($activity->sku, true); $is_deadline = 0; if ($activity->class == 'one' && $activity->apply_deadline) { if ($activity->apply_deadline <= $time) { @@ -200,7 +214,8 @@ class ActivityController extends Controller break; } - if (empty($service)) return $this->success('ok', []); + if (empty($service)) + return $this->success('ok', []); $previews = $service->previews()->where(function ($sql) { $sql->whereHas('merchantUser')->orWhereHas('mpUser'); }) @@ -208,7 +223,8 @@ class ActivityController extends Controller ->orderBy('id', 'desc') ->paginate(); foreach ($previews as $preview) { - $preview->user = $preview->merchantUser?:$preview->mpUser;; + $preview->user = $preview->merchantUser ?: $preview->mpUser; + ; $preview->type = ($preview->previewed_type == 'App\\Models\\User') ? 1 : 2; unset($preview->merchantUser, $preview->mpUser); } @@ -352,11 +368,13 @@ class ActivityController extends Controller $await_checkoutTextArray = []; $class = $request->class ?? 'one'; $anchor = Anchor::where('m_id', $request->account_id)->first(); - if (!$anchor) return $this->fail('创建失败,请重新登录', 2); + if (!$anchor) + return $this->fail('创建失败,请重新登录', 2); $forzen_time = $request->forzen_time; $banners = $request->banners; $price = $request->price ? $request->price : 0; - if (!is_numeric($price) || $price < 0) return $this->failure('请输入正确的价格'); + if (!is_numeric($price) || $price < 0) + return $this->failure('请输入正确的价格'); $await_checkoutTextArray[] = $price; $title = $request->title; $await_checkoutTextArray[] = $title; @@ -368,31 +386,35 @@ class ActivityController extends Controller $agree_title = $request->agree_title; $agree_content = $request->agree_content; $share_thumb = $request->share_thumb; + $sponsor = $request->sponsor; if ($class == 'one') { $start_time = $request->start_time; - if (empty($start_time)) return $this->failure('请填写活动开始时间'); + if (empty($start_time)) + return $this->failure('请填写活动开始时间'); $end_time = $request->end_time; - if (empty($end_time)) return $this->failure('请填写活动结束时间'); + if (empty($end_time)) + return $this->failure('请填写活动结束时间'); $apply_deadline = $request->apply_deadline; - if (empty($apply_deadline)) return $this->failure('请填写活动截止报名时间'); + if (empty($apply_deadline)) + return $this->failure('请填写活动截止报名时间'); } -// $sku = null; + // $sku = null; // if ($request->has('sku') && $request->sku) // $sku = json_encode($request->sku); // $await_checkoutTextArray[] = $describe; $sort = $request->input('sort', 0); $await_checkoutTextArray[] = $title; $status = $request->input('status', 0); - $hidden_avatar = $request->input('hidden_avatar',0); - $hidden_order_total = $request->input('hidden_order_total',0); - $join_type = $request->input('join_type','single'); + $hidden_avatar = $request->input('hidden_avatar', 0); + $hidden_order_total = $request->input('hidden_order_total', 0); + $join_type = $request->input('join_type', 'single'); //敏感词汇过滤 $result = \CommonUtilsService::checkoutTextArrayV3($await_checkoutTextArray); if ($result['code'] == 1) { return $this->failure($result['cause']); } -// $result = \CommonUtilsService::imageContentCecurity([$pic]); + // $result = \CommonUtilsService::imageContentCecurity([$pic]); // if ($result && isset($result['result']) && $result['result']) { // return $this->failure('图片' . $result['result'] . ',请换一张照片'); // } @@ -421,7 +443,7 @@ class ActivityController extends Controller $consulator->pay_type = $pay_type; $consulator->describe = $describe; $consulator->sort = $sort; -// $consulator->sku = $sku; + // $consulator->sku = $sku; $consulator->status = $status; $consulator->pic = $pic; $consulator->class = $class; @@ -436,6 +458,7 @@ class ActivityController extends Controller $consulator->hidden_avatar = $hidden_avatar; $consulator->hidden_order_total = $hidden_order_total; $consulator->join_type = $join_type; + $consulator->sponsor = $sponsor; DB::beginTransaction(); // if($consulator->class=='one'){ // // 创建聊天室 @@ -455,10 +478,10 @@ class ActivityController extends Controller $consulator->save(); //同步sku $s = new CommunityActivityService(); - $s->syncSku('add',$consulator->id,$request->sku); + $s->syncSku('add', $consulator->id, $request->sku); if (isset($request->banners)) { - if($request->banners == null || $request->banners == 'null' || $request->banners == ''){ + if ($request->banners == null || $request->banners == 'null' || $request->banners == '') { LiveBanner::create([ 'icon' => json_encode([]), 'class' => 'community', @@ -466,7 +489,7 @@ class ActivityController extends Controller 'sort' => 0, 'class_id' => $consulator->id, ]); - }else{ + } else { LiveBanner::create([ 'icon' => json_encode($banners), 'class' => 'community', @@ -495,9 +518,9 @@ class ActivityController extends Controller $MEarningRule->forzen_time = $forzen_time ?? 1; $MEarningRule->ratio = number_format($request->ratio, 2); $MEarningRule->type_id = $consulator->id; - $MEarningRule->first_sharer = $rule?$rule->first_sharer:0.3; - $MEarningRule->last_sharer = $rule?$rule->last_sharer:0.5; - $MEarningRule->other_sharer = $rule?$rule->other_sharer:0.2; + $MEarningRule->first_sharer = $rule ? $rule->first_sharer : 0.3; + $MEarningRule->last_sharer = $rule ? $rule->last_sharer : 0.5; + $MEarningRule->other_sharer = $rule ? $rule->other_sharer : 0.2; $MEarningRule->save(); $merchant_market_service = new MerchantService(); $merchant_market_service->merchant_id = $request->account_id; @@ -519,7 +542,8 @@ class ActivityController extends Controller $qr_code->save(); $temp_url = urlencode(env('APP_URL') . '/pu/#/activitySignIn/' . $consulator->id); $jump_url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . $request->account_id . - '&qr_code_id=' . $qr_code->id . '&url=' . $temp_url;; + '&qr_code_id=' . $qr_code->id . '&url=' . $temp_url; + ; $image_url = $this->getPreviewQrcode($jump_url); $qr_code->jump_url = $jump_url; $qr_code->url = $image_url; @@ -527,8 +551,10 @@ class ActivityController extends Controller } DB::commit(); //保存后删除缓存草稿箱内容 - if (Cache::has('drafts_activity_merchant_id_' . $request->account_id) && $request->class == 'one') Cache::forget('drafts_activity_merchant_id_' . $request->account_id); - if (Cache::has('drafts_service_merchant_id_' . $request->account_id) && $request->class == 'many') Cache::forget('drafts_service_merchant_id_' . $request->account_id); + if (Cache::has('drafts_activity_merchant_id_' . $request->account_id) && $request->class == 'one') + Cache::forget('drafts_activity_merchant_id_' . $request->account_id); + if (Cache::has('drafts_service_merchant_id_' . $request->account_id) && $request->class == 'many') + Cache::forget('drafts_service_merchant_id_' . $request->account_id); return $this->success('ok', ['id' => $consulator->id]); } catch (\Exception $e) { DB::rollBack(); @@ -556,7 +582,7 @@ class ActivityController extends Controller ->first(); $activity = CommunityActivity::where('id', $id) ->first(); - $type = ($activity->class == "one")?'activity':"service"; + $type = ($activity->class == "one") ? 'activity' : "service"; if (!$consulator) { $consulator = CommunityActivity::where('id', $id) ->first(); @@ -602,9 +628,9 @@ class ActivityController extends Controller $MEarningRule->forzen_time = $forzen_time ?? 1; $MEarningRule->ratio = number_format($request->ratio, 2); $MEarningRule->type_id = $id; - $MEarningRule->first_sharer = $rule?$rule->first_sharer:0.3; - $MEarningRule->last_sharer = $rule?$rule->last_sharer:0.5; - $MEarningRule->other_sharer = $rule?$rule->other_sharer:0.2; + $MEarningRule->first_sharer = $rule ? $rule->first_sharer : 0.3; + $MEarningRule->last_sharer = $rule ? $rule->last_sharer : 0.5; + $MEarningRule->other_sharer = $rule ? $rule->other_sharer : 0.2; $MEarningRule->save(); } else { if ($consulator->class == 'one') { @@ -614,9 +640,9 @@ class ActivityController extends Controller } $MEarningRule->forzen_time = $forzen_time ?? 1; $MEarningRule->ratio = number_format($request->ratio, 2); - $MEarningRule->first_sharer = $rule?$rule->first_sharer:0.3; - $MEarningRule->last_sharer = $rule?$rule->last_sharer:0.5; - $MEarningRule->other_sharer = $rule?$rule->other_sharer:0.2; + $MEarningRule->first_sharer = $rule ? $rule->first_sharer : 0.3; + $MEarningRule->last_sharer = $rule ? $rule->last_sharer : 0.5; + $MEarningRule->other_sharer = $rule ? $rule->other_sharer : 0.2; $MEarningRule->save(); } } @@ -627,7 +653,8 @@ class ActivityController extends Controller } $await_checkoutTextArray = []; $price = $request->input('price', 0); - if (!is_numeric($price) || $price < 0) return $this->failure('请输入正确价格'); + if (!is_numeric($price) || $price < 0) + return $this->failure('请输入正确价格'); if (is_numeric($request->price) && $request->price != $consulator->price) { $consulator->price = $request->price; $await_checkoutTextArray[] = $request->price; @@ -664,9 +691,10 @@ class ActivityController extends Controller if ($request->flow && json_encode($request->flow) != $consulator->flow) { $consulator->flow = json_encode($request->flow); } - if($request->has('report')){ + if ($request->has('report')) { $consulator->report = json_encode($request->report); - if(empty($request->report)) $consulator->report = null; + if (empty($request->report)) + $consulator->report = null; } //是否展示报名人头像 if ($request->has('hidden_avatar')) { @@ -703,6 +731,9 @@ class ActivityController extends Controller if ($request->has('reward_status')) { $consulator->reward_status = $request->reward_status; } + if ($request->has("sponsor")) { + $consulator->sponsor = $request->sponsor; + } if ($request->has('ratio') && $request->ratio >= 0) { if ($request->ratio > 1.0) { return $this->failure('利润分成不可以大于100%'); @@ -732,9 +763,9 @@ class ActivityController extends Controller $MEarningRule->forzen_time = $forzen_time ?? 1; $MEarningRule->ratio = number_format($request->ratio, 2); $MEarningRule->type_id = $id; - $MEarningRule->first_sharer = $rule?$rule->first_sharer:0.3; - $MEarningRule->last_sharer = $rule?$rule->last_sharer:0.5; - $MEarningRule->other_sharer = $rule?$rule->other_sharer:0.2; + $MEarningRule->first_sharer = $rule ? $rule->first_sharer : 0.3; + $MEarningRule->last_sharer = $rule ? $rule->last_sharer : 0.5; + $MEarningRule->other_sharer = $rule ? $rule->other_sharer : 0.2; $MEarningRule->save(); } else { if ($consulator->class == 'one') { @@ -744,13 +775,13 @@ class ActivityController extends Controller } $MEarningRule->forzen_time = $forzen_time ?? 1; $MEarningRule->ratio = number_format($request->ratio, 2); - $MEarningRule->first_sharer = $rule?$rule->first_sharer:0.3; - $MEarningRule->last_sharer = $rule?$rule->last_sharer:0.5; - $MEarningRule->other_sharer = $rule?$rule->other_sharer:0.2; + $MEarningRule->first_sharer = $rule ? $rule->first_sharer : 0.3; + $MEarningRule->last_sharer = $rule ? $rule->last_sharer : 0.5; + $MEarningRule->other_sharer = $rule ? $rule->other_sharer : 0.2; $MEarningRule->save(); } } -// if ($request->has('sku')) { + // if ($request->has('sku')) { //// $consulator->sku = json_encode($request->sku); // //是否配置团购 // $group = CollageGroup::where('type', 'community')->where('type_id', $id)->first(); @@ -801,17 +832,17 @@ class ActivityController extends Controller DB::beginTransaction(); if (isset($request->banners)) { - if($request->banners == null || $request->banners == 'null' || $request->banners == ''){ + if ($request->banners == null || $request->banners == 'null' || $request->banners == '') { LiveBanner::updateOrCreate(['class' => 'community', 'class_id' => $consulator->id], ['icon' => json_encode([])]); - }else{ + } else { LiveBanner::updateOrCreate(['class' => 'community', 'class_id' => $consulator->id], ['icon' => json_encode($request->banners)]); } } $consulator->save(); //同步sku - if($request->sku){ + if ($request->sku) { $s = new CommunityActivityService(); - $after_sku = $s->syncSku('edit',$consulator->id,$request->sku); + $after_sku = $s->syncSku('edit', $consulator->id, $request->sku); //是否配置团购 $group = CollageGroup::where('type', 'community')->where('type_id', $id)->first(); if ($group) { @@ -821,7 +852,8 @@ class ActivityController extends Controller $new_sku[$key]['sku_id'] = $s['sku_id']; $new_sku[$key]['name'] = $s['name']; $new_sku[$key]['price'] = $s['price']; - if ($consulator->class == 'one') $new_sku[$key]['num'] = $s['num']; + if ($consulator->class == 'one') + $new_sku[$key]['num'] = $s['num']; $new_sku[$key]['discount_price'] = !empty($group_sku[$key]['discount_price']) ? $group_sku[$key]['discount_price'] : $s['price']; //if($new_sku[$key]['discount_price'] > $new_sku[$key]['price']) return $this->failure('拼团优惠价不能大于原始价格'); } @@ -839,23 +871,24 @@ class ActivityController extends Controller } //用户提交报告列表 - public function userReports(Request $request){ + public function userReports(Request $request) + { try { $id = $request->id; $keyword = trim($request->keyword); - $result = TouristOrder::with('mUser')->where('type','community')->where('type_id',$id)->whereNotNull('report_answer') - ->select('id','account_id','report_answer','created_at'); - if($keyword){ - $result = $result->whereHas('mUser',function($sql) use($keyword){ - $sql->where('nickname','like',"%$keyword%") - ->orWhere('mobile','like',"%$keyword%"); + $result = TouristOrder::with('mUser')->where('type', 'community')->where('type_id', $id)->whereNotNull('report_answer') + ->select('id', 'account_id', 'report_answer', 'created_at'); + if ($keyword) { + $result = $result->whereHas('mUser', function ($sql) use ($keyword) { + $sql->where('nickname', 'like', "%$keyword%") + ->orWhere('mobile', 'like', "%$keyword%"); }); } - $result = $result->orderBy('id','desc')->paginate(); + $result = $result->orderBy('id', 'desc')->paginate(); foreach ($result as $key => $value) { - $value->report_answer = json_decode($value->report_answer,true); + $value->report_answer = json_decode($value->report_answer, true); } - return $this->success('ok',$result); + return $this->success('ok', $result); } catch (\Exception $e) { $this->getError($e); return $this->failure(); @@ -958,12 +991,13 @@ class ActivityController extends Controller $time = date('Y-m-d H:i:s'); $is_deadline = 0; if ($activity->class == 'one' && $activity->apply_deadline) { - if ($activity->apply_deadline <= $time) $is_deadline = 1; + if ($activity->apply_deadline <= $time) + $is_deadline = 1; } $activity->is_deadline = $is_deadline; $sign_qr_codes = QrCode::where('merchant_id', $request->account_id) - ->where('type','community') - ->where('type_id',$activity->id) + ->where('type', 'community') + ->where('type_id', $activity->id) ->value('url'); $activity->sign_qr_codes = $sign_qr_codes; return $this->success('ok', $activity); @@ -1021,129 +1055,132 @@ class ActivityController extends Controller */ public function platJoinMembers(Request $request) { - $consulator_id = $request->consulator_id; - $merchant_id = $request->account_id; - $activity = CommunityActivity::find($consulator_id); - $service_type = 0; - $source_merchant = MerchantAccount::where('id', $activity->merchant_id) - ->select('id', 'share_icon', 'share_title') - ->first(); - $keyword = $request->keyword; - $pay_status = $request->pay_status ?? 2; - if ($activity->merchant_id != $merchant_id) { - $service_type = 1; - } - $members = TouristOrder::with('merUser', 'alliance', 'merchant:id,share_icon,share_title','orderStatusLink:id,order_id,status', 'mEarning:id,m_user_id,m_order_id,sharer,ratio,sub_ratio,value', 'mAdvanceEarning:id,m_user_id,m_order_id,sharer,ratio,sub_ratio,value', 'mEarning.user:id,pic,nickname,mobile', 'mAdvanceEarning.user:id,pic,nickname,mobile')->withCount(['blacklist'=>function($sql) { + $consulator_id = $request->consulator_id; + $merchant_id = $request->account_id; + $activity = CommunityActivity::find($consulator_id); + $service_type = 0; + $source_merchant = MerchantAccount::where('id', $activity->merchant_id) + ->select('id', 'share_icon', 'share_title') + ->first(); + $keyword = $request->keyword; + $pay_status = $request->pay_status ?? 2; + if ($activity->merchant_id != $merchant_id) { + $service_type = 1; + } + $members = TouristOrder::with('merUser', 'alliance', 'merchant:id,share_icon,share_title', 'orderStatusLink:id,order_id,status', 'mEarning:id,m_user_id,m_order_id,sharer,ratio,sub_ratio,value', 'mAdvanceEarning:id,m_user_id,m_order_id,sharer,ratio,sub_ratio,value', 'mEarning.user:id,pic,nickname,mobile', 'mAdvanceEarning.user:id,pic,nickname,mobile')->withCount([ + 'blacklist' => function ($sql) { $sql->where('type', 'activity'); - }]) - ->where('type', 'community') - ->where('type_id', $consulator_id) - ->orderBy('id', 'desc'); - // if($pay_status != 2){ - // $members = $members->where('pay_status',$pay_status); - // } - if ($service_type) { - $members = $members->where('merchant_id', $merchant_id); } - if ($pay_status != 2) { - if ($pay_status == 1) {//已支付 - $members = $members->whereIn('pay_status', [1, 4]); - //是否使用优惠券或实际金额 - if ($request->is_coupon) { - $members = $members->whereNotNull('user_coupon_id'); - } - if ($request->is_cash) { - $members = $members->where('price', '<>', 0); - } + ]) + ->where('type', 'community') + ->where('type_id', $consulator_id) + ->orderBy('id', 'desc'); + // if($pay_status != 2){ + // $members = $members->where('pay_status',$pay_status); + // } + if ($service_type) { + $members = $members->where('merchant_id', $merchant_id); + } + if ($pay_status != 2) { + if ($pay_status == 1) {//已支付 + $members = $members->whereIn('pay_status', [1, 4]); + //是否使用优惠券或实际金额 + if ($request->is_coupon) { + $members = $members->whereNotNull('user_coupon_id'); + } + if ($request->is_cash) { + $members = $members->where('price', '<>', 0); + } + } else { + $members = $members->where('pay_status', $pay_status); + } + } + if ($keyword) { + $keyword = trim($keyword); + $members = $members->where(function ($sql) use ($keyword) { + $sql->where('name', 'like', '%' . $keyword . '%')->orWhere('mobile', 'like', '%' . $keyword . '%'); + }); + } + $members = $members->paginate(); + $qr_code = QrCode::where('type', 'community')->where('type_id', $consulator_id) + ->first(); + if ($qr_code) { + $have_qr_code = 1; + } else { + $have_qr_code = 0; + } + + foreach ($members as $key => $value) { + $value->insurance_info = json_decode($value->insurance_info, true); + $value->linkmen = json_decode($value->linkmen, true); + $value->fromUsers; + $fol = MOrderFollow::where('order_id', $value->id)->where('result', '订单状态修改')->first(); + $is_start = !empty($fol) ? $fol->is_start : 0; + $value->is_start = $is_start; + if ($value->created_at < '2022-3-21 18:00') { + $temp_sku = explode('-', $value->desc); + if (!empty($temp_sku[1])) { + $value->goods = $temp_sku[1]; + } + } + if ($have_qr_code) { + $sign = SignIn::where('qr_code_id', $qr_code->id)->where('merchant_user_id', $value->account_id) + ->first(); + if ($sign) { + $value->qr_code_id = $qr_code->id; + $value->sign = 1; } else { - $members = $members->where('pay_status', $pay_status); + $value->sign = 0; + $value->qr_code_id = $qr_code->id; } - } - if ($keyword) { - $keyword = trim($keyword); - $members = $members->where(function ($sql) use ($keyword) { - $sql->where('name', 'like', '%' . $keyword . '%')->orWhere('mobile', 'like', '%' . $keyword . '%'); - }); - } - $members = $members->paginate(); - $qr_code = QrCode::where('type', 'community')->where('type_id', $consulator_id) - ->first(); - if($qr_code){ - $have_qr_code = 1; - }else{ - $have_qr_code = 0; + } else { + $value->sign = 2; + $value->sign_id = null; } - foreach ($members as $key => $value) { - $value->insurance_info = json_decode($value->insurance_info, true); - $value->linkmen = json_decode($value->linkmen,true); - $value->fromUsers; - $fol = MOrderFollow::where('order_id', $value->id)->where('result', '订单状态修改')->first(); - $is_start = !empty($fol) ? $fol->is_start : 0; - $value->is_start = $is_start; - if ($value->created_at < '2022-3-21 18:00') { - $temp_sku = explode('-', $value->desc); - if (!empty($temp_sku[1])) { - $value->goods = $temp_sku[1]; + $value->source_merchant = $source_merchant; + if ($value->channel == '福恋小程序') { //渠道:0商家H5,1福恋H5,2福恋app,3福恋小程序 + $wechat = Wechat::where('openid', $value->open_id)->first(); + if ($wechat) { + $user = User::where('id', $wechat->user_id)->first(); + if ($user) { + $userinfo['nickname'] = $user->nickname; + $userinfo['mobile'] = $user->mobile; + $userinfo['pic'] = $user->photo ?: ($user->circle_avatar ?: User::DefaultAvatar); + $value->merchant_user = $userinfo; } } - if($have_qr_code){ - $sign = SignIn::where('qr_code_id',$qr_code->id)->where('merchant_user_id',$value->account_id) - ->first(); - if($sign){ - $value->qr_code_id = $qr_code->id; - $value->sign = 1; - }else{ - $value->sign = 0; - $value->qr_code_id = $qr_code->id; - } - }else{ - $value->sign = 2; - $value->sign_id = null; - } - $value->source_merchant = $source_merchant; - if ($value->channel == '福恋小程序') { //渠道:0商家H5,1福恋H5,2福恋app,3福恋小程序 - $wechat = Wechat::where('openid', $value->open_id)->first(); - if ($wechat) { - $user = User::where('id', $wechat->user_id)->first(); - if ($user) { - $userinfo['nickname'] = $user->nickname; - $userinfo['mobile'] = $user->mobile; - $userinfo['pic'] = $user->photo ?: ($user->circle_avatar ?: User::DefaultAvatar); - $value->merchant_user = $userinfo; - } - } - - } else { //渠道:0商家H5,1福恋H5,2福恋app,3福恋小程序 - $value->merchant_user = $value->merUser; - unset($value->merUser); - } + } else { //渠道:0商家H5,1福恋H5,2福恋app,3福恋小程序 + $value->merchant_user = $value->merUser; + unset($value->merUser); } - if (count($members)) { - $code = CommonUtilsService::randString(16); - Redis::set('activity:'.$consulator_id.':members:export:code', $code); - $members[0]['code'] = $code; - } - $members = $members->toArray(); - $members['enroll_num'] = TouristOrder::selectRaw("sum( if(left(linkmen,1)='[',JSON_LENGTH( linkmen ) ,1)) as count") - ->whereIn('pay_status',[1,4]) - ->where('type','community') - ->where('type_id',$consulator_id) - ->value('count'); - return $this->success('ok-test', $members); + } + if (count($members)) { + $code = CommonUtilsService::randString(16); + Redis::set('activity:' . $consulator_id . ':members:export:code', $code); + $members[0]['code'] = $code; + } + $members = $members->toArray(); + $members['enroll_num'] = TouristOrder::selectRaw("sum( if(left(linkmen,1)='[',JSON_LENGTH( linkmen ) ,1)) as count") + ->whereIn('pay_status', [1, 4]) + ->where('type', 'community') + ->where('type_id', $consulator_id) + ->value('count'); + return $this->success('ok-test', $members); } public function memberExport(Request $request, $activity_id) { try { $code = $request->input('code'); - if (empty($code)) throw new \Exception('缺少参数code'); - $value = Redis::get('activity:'.$activity_id.':members:export:code'); - if ($code != $value) throw new \Exception('code失效'); - $orders = TouristOrder::with('user:id,openid,user_id', 'user.user:id,name,sex,card_num,is_real_approved', 'tcfaceid:openid,name,card_num,is_real_approved')->where('type', 'community')->where('type_id',$activity_id)->where('pay_status', '!=', 0)->select('id', 'open_id', 'name', 'mobile', 'account_id', 'insurance_info','linkmen')->get(); + if (empty($code)) + throw new \Exception('缺少参数code'); + $value = Redis::get('activity:' . $activity_id . ':members:export:code'); + if ($code != $value) + throw new \Exception('code失效'); + $orders = TouristOrder::with('user:id,openid,user_id', 'user.user:id,name,sex,card_num,is_real_approved', 'tcfaceid:openid,name,card_num,is_real_approved')->where('type', 'community')->where('type_id', $activity_id)->where('pay_status', '!=', 0)->select('id', 'open_id', 'name', 'mobile', 'account_id', 'insurance_info', 'linkmen')->get(); $data = []; - foreach ($orders as $key => $order) - { + foreach ($orders as $key => $order) { $real_name = ''; if ($order->user && $order->user->user) { $mp_user = $order->user->user; @@ -1154,40 +1191,40 @@ class ActivityController extends Controller $real_name = $mp_user->name; $is_real_approved = $mp_user->is_real_approved; - }else{ + } else { $sex = " "; $is_real_approved = 0; } - if(empty($is_real_approved) && $order->tcfaceid) { + if (empty($is_real_approved) && $order->tcfaceid) { $is_real_approved = $order->tcfaceid->is_real_approved; $sex = \CommonUtilsService::getSexByCard($order->tcfaceid->card_num); $real_name = $order->tcfaceid->name; } if ($sex == 1) { $sex = "男"; - }elseif ($sex == 2) { + } elseif ($sex == 2) { $sex = '女'; - }else{ + } else { $sex = ' '; } - $order->remark = $sex.($key+1); + $order->remark = $sex . ($key + 1); $order->sex = $sex; $order->real_name = $real_name; - $order->is_real_approved = $is_real_approved?"是":"否"; + $order->is_real_approved = $is_real_approved ? "是" : "否"; $insurance_info = ''; if ($order->insurance_info) { $order->insurance_info = json_decode($order->insurance_info, true); - foreach ($order->insurance_info as $info) { - $insurance_info .= $info['name'].': '.$info['idCard'].' '; + foreach ($order->insurance_info as $info) { + $insurance_info .= $info['name'] . ': ' . $info['idCard'] . ' '; } } $linkmen = json_decode($order->linkmen, true); - $institution = ($linkmen && isset($linkmen[0]['institution']))?$linkmen[0]['institution']:""; - $data[] = ['name'=>$order->name, 'real_name'=>$order->real_name, 'mobile'=>$order->mobile, 'is_real_approved'=>$order->is_real_approved, 'sex'=>$order->sex, 'remark'=>$order->remark, 'insurance_info'=>$insurance_info, 'institution'=>$institution]; - TouristOrder::where('id', $order->id)->update(['remark'=>$order->remark]); + $institution = ($linkmen && isset($linkmen[0]['institution'])) ? $linkmen[0]['institution'] : ""; + $data[] = ['name' => $order->name, 'real_name' => $order->real_name, 'mobile' => $order->mobile, 'is_real_approved' => $order->is_real_approved, 'sex' => $order->sex, 'remark' => $order->remark, 'insurance_info' => $insurance_info, 'institution' => $institution]; + TouristOrder::where('id', $order->id)->update(['remark' => $order->remark]); } $title = CommunityActivity::where('id', $activity_id)->value('title'); - return \Excel::download(new ActivityMemberExportV2($data), $title.'.xlsx'); + return \Excel::download(new ActivityMemberExportV2($data), $title . '.xlsx'); } catch (\Exception $e) { $this->getError($e); return $this->failure(); @@ -1216,7 +1253,8 @@ class ActivityController extends Controller { try { $order = TouristOrder::find($id); - if (!$order) return $this->failure('要删除的id不存在'); + if (!$order) + return $this->failure('要删除的id不存在'); $order->delete(); return $this->success('ok'); } catch (\Exception $e) { @@ -1235,12 +1273,33 @@ class ActivityController extends Controller { try { $serve_tab = $request->serve_tab; - $activity = CommunityActivity::withTrashed()->where('id', $id)->select('id', 'merchant_id', 'title', 'price' - , 'pv', 'pic', 'start_time', 'end_time', 'apply_deadline', 'describe', 'sku', 'Subtitle', 'status', - 'class', 'deleted_at',"location_longitude","location_latitude","address","location")->first(); + $activity = CommunityActivity::withTrashed()->where('id', $id)->select( + 'id', + 'merchant_id', + 'title', + 'price' + , + 'pv', + 'pic', + 'start_time', + 'end_time', + 'apply_deadline', + 'describe', + 'sku', + 'Subtitle', + 'status', + 'class', + 'deleted_at', + "location_longitude", + "location_latitude", + "address", + "location" + )->first(); $openid = MerchantAccount::where('id', $activity->merchant_id)->value('openid'); - if (!$openid) $openid = Anchor::where('m_id', $activity->merchant_id)->value('openid'); - if (empty($activity)) return $this->failure('该服务不存在'); + if (!$openid) + $openid = Anchor::where('m_id', $activity->merchant_id)->value('openid'); + if (empty($activity)) + return $this->failure('该服务不存在'); $banner = LiveBanner::where('class', 'community')->where('class_id', $id)->value('icon'); //消费人数 $consume_user_count = TouristOrder::where('type', 'community')->where('type_id', $id)->whereIn('pay_status', [1, 4])->groupBy('open_id')->get()->count(); @@ -1290,7 +1349,8 @@ class ActivityController extends Controller // MEarning::where('m_order_id',$value->id)->pluck foreach ($orders as $key => $order) { $avatar[$key] = MerchantUser::where('id', $order->account_id)->value('pic') ?? User::DefaultAvatar; - if (empty($avatar[$key])) $avatar[$key] = User::DefaultAvatar; + if (empty($avatar[$key])) + $avatar[$key] = User::DefaultAvatar; } $activity->avatar = $avatar; //下架或删除状态 0下架 1正常上架 2已删除 @@ -1303,9 +1363,9 @@ class ActivityController extends Controller $publish_state = 0; } $activity->publish_state = $publish_state; - if($activity->merchant_id != $request->account_id){ + if ($activity->merchant_id != $request->account_id) { $activity->service_type = 1; - }else{ + } else { $activity->service_type = 0; } return $this->success('ok', $activity); @@ -1360,7 +1420,8 @@ class ActivityController extends Controller $order->text = $order->created_at . '购买了《' . $goods . '》'; $order->name = $order->merUser ? $order->merUser->nickname : '匿名用户'; - if (empty($order['pic'])) $order['pic'] = User::DefaultAvatar; + if (empty($order['pic'])) + $order['pic'] = User::DefaultAvatar; } return $this->success('ok', $orders); } catch (\Exception $e) { @@ -1407,19 +1468,22 @@ class ActivityController extends Controller $order->pay_price = $order->price; $order->pay_mobile = $order->mobile ?? ''; $order->pay_pic = $payUser['pic'] ?? User::DefaultAvatar; - if (empty($order->pay_pic)) $order->pay_pic = User::DefaultAvatar; + if (empty($order->pay_pic)) + $order->pay_pic = User::DefaultAvatar; foreach ($order->mEarning as $k => $value) { $list[$k]['type'] = $value->sharer; $list[$k]['value'] = $value->value; if ($value->user) { $list[$k]['name'] = $value->user ? $value->user->nickname : '匿名用户'; $list[$k]['pic'] = $value->user ? $value->user['pic'] : User::DefaultAvatar; - if (empty($list[$k]['pic'])) $list[$k]['pic'] = User::DefaultAvatar; + if (empty($list[$k]['pic'])) + $list[$k]['pic'] = User::DefaultAvatar; } else { $user = MerchantAccount::where('id', $merchant_id)->first(); $list[$k]['name'] = $user->anchor->name ?? '匿名用户'; $list[$k]['pic'] = $user->anchor['pic'] ?? User::DefaultAvatar; - if (empty($list[$k]['pic'])) $list[$k]['pic'] = User::DefaultAvatar; + if (empty($list[$k]['pic'])) + $list[$k]['pic'] = User::DefaultAvatar; } unset($order->mEarning); @@ -1465,9 +1529,9 @@ class ActivityController extends Controller return $this->failure('原始活动没有开始时间'); } $communityActivity['end_time'] = date('Y-m-d H:i:s', strtotime($start_time) + (strtotime($communityActivity['end_time']) - - strtotime($communityActivity['start_time']))); + - strtotime($communityActivity['start_time']))); $communityActivity['apply_deadline'] = date('Y-m-d H:i:s', strtotime($start_time) + (strtotime($communityActivity['apply_deadline']) - - strtotime($communityActivity['start_time']))); + - strtotime($communityActivity['start_time']))); $communityActivity['title'] = $title; $communityActivity['start_time'] = $start_time; $communityActivity['Subtitle'] = $Subtitle; @@ -1478,10 +1542,10 @@ class ActivityController extends Controller $communityActivity['status'] = 0; $old_id = $communityActivity['id']; unset($communityActivity['id']); - if($communityActivity['flow']){ + if ($communityActivity['flow']) { $communityActivity['flow'] = json_encode($communityActivity['flow']); } - if($communityActivity['report']){ + if ($communityActivity['report']) { $communityActivity['report'] = json_encode($communityActivity['report']); } $id = DB::table('community_activities')->insertGetId($communityActivity); @@ -1525,7 +1589,8 @@ class ActivityController extends Controller $qr_code->save(); $temp_url = urlencode(env('APP_URL') . '/pu/#/activitySignIn/' . $id); $jump_url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . - $merchant_id . '&qr_code_id=' . $qr_code->id . '&url=' . $temp_url;; + $merchant_id . '&qr_code_id=' . $qr_code->id . '&url=' . $temp_url; + ; $image_url = $this->getPreviewQrcode($jump_url); $qr_code->jump_url = $jump_url; $qr_code->url = $image_url; @@ -1552,7 +1617,7 @@ class ActivityController extends Controller $activity_type = $request->type; $merchant_id = $request->account_id; $is_match = $request->is_match; -// if (!($merchant_id == 491 || $merchant_id == 974)) { + // if (!($merchant_id == 491 || $merchant_id == 974)) { // return $this->failure('暂不提供此功能!'); // } $orders = TouristOrder::where('type_id', $activity_id) @@ -1560,22 +1625,22 @@ class ActivityController extends Controller if (isset($pay_status)) { if ($pay_status == 1) { $orders = $orders->whereIn('pay_status', [1, 4]); - }elseif($pay_status ==2) { + } elseif ($pay_status == 2) { - }else{ - $orders = $orders->where('pay_status',$pay_status); + } else { + $orders = $orders->where('pay_status', $pay_status); } } - $orders = $orders->where('match_config',1)->orderBy('id', 'desc'); - if($is_match == 1){ + $orders = $orders->where('match_config', 1)->orderBy('id', 'desc'); + if ($is_match == 1) { //内部匹配过滤同一个用户多笔订单 $orders = $orders->groupBy('account_id')->get(); - }else{ + } else { $orders = $orders->get(); } $t1 = microtime(true); $user_info_list = $this->touristOrdersExport($orders); - $t2 = sprintf("耗时: %f秒", round(microtime(true)-$t1,3)); + $t2 = sprintf("耗时: %f秒", round(microtime(true) - $t1, 3)); $type = []; //$user_info_list = $this->arraySort($user_info_list, '年龄', SORT_DESC); if ($merchant_id == 491 || $merchant_id == 974) { @@ -1583,17 +1648,21 @@ class ActivityController extends Controller if (!empty($val['性别'])) { if ($val['性别'] == '男') { Log::info($val); - if ($val['常居地'] == '未设置' || $val['常居地'] == '未提供' || $val['婚姻状态'] == '未设置' || + if ( + $val['常居地'] == '未设置' || $val['常居地'] == '未提供' || $val['婚姻状态'] == '未设置' || $val['婚姻状态'] == '未提供' || $val['年龄'] == '未提供' || $val['年龄'] == '未设置' || - $val['常居地'] == '未设置-未设置' || $val['生日'] == '未设置' || $val['真实姓名'] == '未设置') { + $val['常居地'] == '未设置-未设置' || $val['生日'] == '未设置' || $val['真实姓名'] == '未设置' + ) { $type['unknown'][] = $val; } else { $type['man'][] = $val; } } elseif ($val['性别'] == '女') { - if ($val['常居地'] == '未设置' || $val['常居地'] == '未提供' || $val['婚姻状态'] == '未设置' || + if ( + $val['常居地'] == '未设置' || $val['常居地'] == '未提供' || $val['婚姻状态'] == '未设置' || $val['婚姻状态'] == '未提供' || $val['年龄'] == '未提供' || $val['年龄'] == '未设置' || - $val['常居地'] == '未设置-未设置' || $val['生日'] == '未设置' || $val['真实姓名'] == '未设置') { + $val['常居地'] == '未设置-未设置' || $val['生日'] == '未设置' || $val['真实姓名'] == '未设置' + ) { $type['unknown'][] = $val; } else { $type['women'][] = $val; @@ -1604,7 +1673,7 @@ class ActivityController extends Controller } } } - return $this->success('ok', compact('user_info_list', 'type','t2')); + return $this->success('ok', compact('user_info_list', 'type', 't2')); } catch (\Exception $e) { $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); @@ -1618,13 +1687,16 @@ class ActivityController extends Controller { try { $activity_id = $request->activity_id; - if(empty($activity_id)) return $this->failure('活动id不能为空'); + if (empty($activity_id)) + return $this->failure('活动id不能为空'); $activity = CommunityActivity::find($activity_id); $merchant_id = $request->merchant_id; - if(empty($merchant_id)) return $this->failure('商家id不能为空'); + if (empty($merchant_id)) + return $this->failure('商家id不能为空'); $user_id = $request->user_id; - if(empty($user_id)) return $this->failure('用户id不能为空'); - $user = User::select('nickname','mobile','photo')->where('id',$user_id)->first(); + if (empty($user_id)) + return $this->failure('用户id不能为空'); + $user = User::select('nickname', 'mobile', 'photo')->where('id', $user_id)->first(); $merchnat_user = MerchantUser::where('user_id', $user_id)->first(); $order = new TouristOrder(); $order->price = 0; @@ -1634,17 +1706,17 @@ class ActivityController extends Controller $order->pay_status = 1; $order->trade_no = \CommonUtilsService::getTradeNO(); $order->desc = '后台添加成员'; - $order->name = $user->nickname??'匿名用户'; - $order->mobile = $user->mobile??'匿名用户'; + $order->name = $user->nickname ?? '匿名用户'; + $order->mobile = $user->mobile ?? '匿名用户'; $order->goods = $activity->title; $order->merchant_id = $merchant_id; $order->account_id = $merchnat_user->id ?? null; $order->open_id = $merchnat_user->openid ?? null; $res = $order->save(); - if(!$res){ + if (!$res) { return $this->failure('添加失败'); } - return $this->success('ok',compact('activity_id','merchant_id','user_id')); + return $this->success('ok', compact('activity_id', 'merchant_id', 'user_id')); } catch (\Exception $e) { $this->getError($e); return $this->failure($e->getMessage()); @@ -1665,7 +1737,7 @@ class ActivityController extends Controller if (!$order_id) { return $this->failure('参数错误'); } - if(empty($value)){ + if (empty($value)) { return $this->failure('修改的编号不能为空'); } $where = [ @@ -1677,7 +1749,7 @@ class ActivityController extends Controller return $this->failure('订单未找到'); } $order->remark = $value; - $extend = json_decode($order->extend,true); + $extend = json_decode($order->extend, true); $extend['is_update_remark'] = 1; $order->extend = json_encode($extend); $order->save(); @@ -1769,8 +1841,13 @@ class ActivityController extends Controller */ private function getOrder($community_ids, $keyword, $nopage, $account, $request, $market_service_ids) { - $orders = TouristOrder::with('viewer:avatar,mobile,openid,sex,nickname', 'merchant:id,share_icon,share_title', - 'fromUser:user_id as id,avatar,mobile,openid,sex,nickname', 'merUser', 'alliance')->withCount('follow'); + $orders = TouristOrder::with( + 'viewer:avatar,mobile,openid,sex,nickname', + 'merchant:id,share_icon,share_title', + 'fromUser:user_id as id,avatar,mobile,openid,sex,nickname', + 'merUser', + 'alliance' + )->withCount('follow'); $orders = $orders->where('type', 'community') ->where(function ($query) use ($community_ids, $market_service_ids, $account) { $query->whereIn('type_id', $community_ids); @@ -1815,8 +1892,10 @@ class ActivityController extends Controller } } if ($request->account_id == 491) { - if (strstr($order->desc, '牵线') !== false || strstr($order->desc, '盲盒') !== false && - ($order->pay_status == 1 || $order->pay_status == 4)) { + if ( + strstr($order->desc, '牵线') !== false || strstr($order->desc, '盲盒') !== false && + ($order->pay_status == 1 || $order->pay_status == 4) + ) { $order->show_match_user_button = 1; } else { $order->show_match_user_button = 0; @@ -1906,7 +1985,8 @@ class ActivityController extends Controller } elseif ($order->viewer && $order->viewer['nickname']) { $user_info['nickname'] = $order->viewer['nickname']; } else { - $user_info['nickname'] = '未获取';; + $user_info['nickname'] = '未获取'; + ; } $order->merchant_user = $user_info; } @@ -1964,7 +2044,8 @@ class ActivityController extends Controller if ($account->pay_income >= 1) $order->pay_income = ($order->price * $account->pay_income) / 100; // $can_withdraw_total = $can_withdraw_total+$order->can_withdraw_count; - if (!empty($order->remark) && $order->remark != 'null') $order->remark = json_decode($order->remark, true); + if (!empty($order->remark) && $order->remark != 'null') + $order->remark = json_decode($order->remark, true); $fol = MOrderFollow::where('order_id', $order->id)->where('result', '订单状态修改')->first(); if ($fol) { $is_start = $fol->is_start; @@ -1987,7 +2068,8 @@ class ActivityController extends Controller $max_price = 0; $has_refund = 0; $order = Order::where('trade_no', $trade_no)->first(); - if (!$order || $order->pay_status == 0 || $order->pay_status == 3) return 0; + if (!$order || $order->pay_status == 0 || $order->pay_status == 3) + return 0; if ($order->pay_status == 4) { //收益已到账 退商家收益 //生成收益时间 $created_at = MEarning::where('m_order_id', $order->id)->value('created_at'); @@ -2001,7 +2083,8 @@ class ActivityController extends Controller $has_refund = MRefundOrder::where('trade_no', $trade_no)->where('is_hook', 1)->sum('refund_fee'); $max_price = $order->price - $has_refund; } - if ($max_price < 0) return 0; + if ($max_price < 0) + return 0; return $max_price; } catch (\Exception $e) { $this->getError($e); @@ -2191,7 +2274,7 @@ class ActivityController extends Controller } $redis = Redis::connection('big_data'); $result = json_decode(Redis::get('ai:recmd:score:inside:' . $activity_id . '_' . $sum), true); -// $result = json_decode($redis->get('activity:'.$activity_id.':match'), true); + // $result = json_decode($redis->get('activity:'.$activity_id.':match'), true); if (!$result) { $proc_status = Redis::get('InsideUserMatch:' . $activity_id); if ($proc_status) { @@ -2208,8 +2291,8 @@ class ActivityController extends Controller InsideUserMatch::dispatch($man_list, $women_list, $activity_id)->onQueue('match_user'); Redis::setex('InsideUserMatch:' . $activity_id, 60, 1); $data['status'] = 1; - $redis->set('activity:'.$activity_id.':'.'female', json_encode($women)); - $redis->set('activity:'.$activity_id.':'.'male', json_encode($man)); + $redis->set('activity:' . $activity_id . ':' . 'female', json_encode($women)); + $redis->set('activity:' . $activity_id . ':' . 'male', json_encode($man)); return $this->success('已开始执行匹配任务,请1分钟后重试', $data); } } @@ -2274,7 +2357,7 @@ class ActivityController extends Controller if ($proc_status) { return $this->failure('正在匹配中,请稍后再试'); } else { -// event(new OutUserMatch($order)); + // event(new OutUserMatch($order)); OutUserMatchListener::dispatch($order)->onQueue('match_user'); Redis::setex('OutUserMatch:' . $order->id, 60 * 5, 1); return $this->failure('已开始执行匹配任务,请1分钟后重试'); @@ -2315,8 +2398,19 @@ class ActivityController extends Controller { try { $degree = [ - '其他' => 0, '小学' => 1, '初中' => 2, '初中及初中以下' => 2, '中专' => 4, '高中' => 4, - '高中/中专' => 4, '大专' => 5, '专科' => 5, '本科' => 6, '硕士' => 7,'硕士以上' => 7, '博士' => 8, + '其他' => 0, + '小学' => 1, + '初中' => 2, + '初中及初中以下' => 2, + '中专' => 4, + '高中' => 4, + '高中/中专' => 4, + '大专' => 5, + '专科' => 5, + '本科' => 6, + '硕士' => 7, + '硕士以上' => 7, + '博士' => 8, ]; $trade_no = $request->trade_no; $merchant_id = $request->account_id; @@ -2348,7 +2442,7 @@ class ActivityController extends Controller if (!$data_object->matchmaker_condition) { $data_object->matchmaker_condition = json_encode([]); } - if(!$data_object->mate_conditon){ + if (!$data_object->mate_conditon) { $data_object->mate_conditon = json_encode([]); } $data_object->matchmaker_condition = json_encode(array_merge(json_decode($data_object->mate_conditon, true), $mate_condition)); @@ -2368,7 +2462,7 @@ class ActivityController extends Controller return $this->failure('用户性别异常,不能进行匹配'); } } - $no_match_user = json_decode(Redis::get('no_match_user_' . $send_user->id),true); + $no_match_user = json_decode(Redis::get('no_match_user_' . $send_user->id), true); $users = Profile::with('member:photo,name,is_real_approved,id')->where('sex', $sex) ->when(!empty($mate_condition['age']), function ($query) use ($mate_condition) { if (!($mate_condition['age'] == '年龄不限' || $mate_condition['age'] == '不限')) { @@ -2403,14 +2497,14 @@ class ActivityController extends Controller $max_degree_temp = $degree[$max_degree]; $degree_array = []; foreach ($degree as $key => $val) { - if ($val >= $min_degree_temp && $val <= $max_degree_temp) { + if ($val >= $min_degree_temp && $val <= $max_degree_temp) { $degree_array[] = $key; } } - if($degree_array){ + if ($degree_array) { $query->whereIn('degree', $degree_array); } - }else{ + } else { $min_degree_temp = $degree[$min_degree]; foreach ($degree as $key => $val) { if ($val >= $min_degree_temp) { @@ -2418,7 +2512,7 @@ class ActivityController extends Controller } } - if($degree_array){ + if ($degree_array) { $query->whereIn('degree', $degree_array); } } @@ -2480,10 +2574,10 @@ class ActivityController extends Controller ->when(!empty($mate_condition['state']), function ($query) use ($mate_condition) { if ($mate_condition['state'] != '不限') { if (is_array($mate_condition['state'])) { - if(in_array('未婚',$mate_condition['state']) || in_array('从未结婚',$mate_condition['state']) ){ - $query->whereIn('state', array_merge(['未婚', '从未结婚'],$mate_condition['state'])); - }else{ - $query->whereIn('state',$mate_condition['state']); + if (in_array('未婚', $mate_condition['state']) || in_array('从未结婚', $mate_condition['state'])) { + $query->whereIn('state', array_merge(['未婚', '从未结婚'], $mate_condition['state'])); + } else { + $query->whereIn('state', $mate_condition['state']); } } } @@ -2510,23 +2604,23 @@ class ActivityController extends Controller } } }) - ->when($no_match_user,function ($query) use($no_match_user){ - $query->whereNotIn('user_id',$no_match_user); + ->when($no_match_user, function ($query) use ($no_match_user) { + $query->whereNotIn('user_id', $no_match_user); }) ->whereHas('member', function ($query) { $query->where('type', 'single')->whereNotNull('photo') ->where('hidden_profile', 'NONE') ->select(); }) - ->select('birthday', 'sex', 'resident_province', 'resident_city', 'province', 'city', 'user_id','belief') + ->select('birthday', 'sex', 'resident_province', 'resident_city', 'province', 'city', 'user_id', 'belief') ->paginate(); - foreach ($users as $key => $val){ - $match = MatchLog::where('send_user_id',$send_user->id) - ->where('receive_user_id',$val->user_id) + foreach ($users as $key => $val) { + $match = MatchLog::where('send_user_id', $send_user->id) + ->where('receive_user_id', $val->user_id) ->first(); - if($match){ + if ($match) { $val->is_matched = 1; - }else{ + } else { $val->is_matched = 0; } } @@ -2543,7 +2637,8 @@ class ActivityController extends Controller * 匹配后给被匹配用户发通知 * @param Request $request */ - public function sendTemplateMessageToMatchUser(Request $request){ + public function sendTemplateMessageToMatchUser(Request $request) + { try { $merchant_id = $request->account_id; $receive_user_id = $request->receive_user_id; @@ -2552,22 +2647,22 @@ class ActivityController extends Controller if (!$receive_user_id || !$send_user_id || !$order_id) { return $this->failure('参数不全'); } - $order = Order::where('id',$order_id)->where('merchant_id',$merchant_id) + $order = Order::where('id', $order_id)->where('merchant_id', $merchant_id) ->first(); - if(!$order){ + if (!$order) { return $this->failure('订单不存在'); } $user = $this->getOrderUserInfo($order); - if(!$user || $user->id != $send_user_id){ + if (!$user || $user->id != $send_user_id) { return $this->failure('订单用户不匹配'); } $mobile = User::where('id', $receive_user_id)->value('mobile'); $send_user = User::where('id', $send_user_id)->value('mobile'); - if(!$send_user){ + if (!$send_user) { return $this->failure('用户信息不存在'); } if ($mobile) { - $url = 'https://love.ufutx.com/h5/#/userDetail/'.$send_user_id.'?receive_user_id='.$receive_user_id; + $url = 'https://love.ufutx.com/h5/#/userDetail/' . $send_user_id . '?receive_user_id=' . $receive_user_id; $url = \CommonUtilsService::shortUrlv3($url); $message = '【福恋】你的过去我来不及参与,你的未来我奉陪到底。已为您匹配出一名异性,请点击(' . $url['url'] . ') 查看Ta的信息'; MatchLog::create([ @@ -2576,7 +2671,7 @@ class ActivityController extends Controller 'receive_user_id' => $receive_user_id, 'pattern' => 2, //匹配推荐 'is_positive' => 1, //主动匹配 - 'status' => 3 , //发送沟通请求 + 'status' => 3, //发送沟通请求 'admin_id' => $request->merchant_admin_id ?? 0, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), @@ -2587,39 +2682,39 @@ class ActivityController extends Controller 'receive_user_id' => $send_user_id, //订单用户ID 'pattern' => 2, //匹配推荐 'is_positive' => 0, //被动匹配 - 'status' => 3 , //发送沟通请求 + 'status' => 3, //发送沟通请求 'admin_id' => $request->merchant_admin_id ?? 0, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ]); - if($request->merchant_admin_id){ - $name = MerchantMembers::where('mch_id',$merchant_id)->where('admin_id',$request->merchant_admin_id) + if ($request->merchant_admin_id) { + $name = MerchantMembers::where('mch_id', $merchant_id)->where('admin_id', $request->merchant_admin_id) ->value('name'); - $maker_user_id = $this->getMakerUserId($request->merchant_admin_id,$merchant_id); - }else{ - $name = Anchor::where('m_id',$merchant_id)->value('name'); - $maker_user_id = $this->getMakerUserId(0,$merchant_id); + $maker_user_id = $this->getMakerUserId($request->merchant_admin_id, $merchant_id); + } else { + $name = Anchor::where('m_id', $merchant_id)->value('name'); + $maker_user_id = $this->getMakerUserId(0, $merchant_id); } ClientComment::create([ - 'user_id'=>$receive_user_id, - 'maker_user_id'=>$maker_user_id, - 'type'=>'mobile', - 'pics'=>null, - 'comment'=>'管理员:'.$name.'通过匹配推荐了用户ID:'.$send_user_id, + 'user_id' => $receive_user_id, + 'maker_user_id' => $maker_user_id, + 'type' => 'mobile', + 'pics' => null, + 'comment' => '管理员:' . $name . '通过匹配推荐了用户ID:' . $send_user_id, ]); ClientComment::create([ - 'user_id'=>$send_user_id, - 'maker_user_id'=>$maker_user_id, - 'type'=>'mobile', - 'pics'=>null, - 'comment'=>'管理员id:'.$name.'通过匹配推荐了用户ID:'.$receive_user_id, + 'user_id' => $send_user_id, + 'maker_user_id' => $maker_user_id, + 'type' => 'mobile', + 'pics' => null, + 'comment' => '管理员id:' . $name . '通过匹配推荐了用户ID:' . $receive_user_id, ]); - $this->sentMessage($mobile,$message); - }else{ + $this->sentMessage($mobile, $message); + } else { return $this->failure('用户信息不存在'); } return $this->success('ok'); - }catch (\Exception $e){ + } catch (\Exception $e) { $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } @@ -2630,22 +2725,23 @@ class ActivityController extends Controller * @param Request $request * @return JsonResponse|string */ - public function getNoMatchUser(Request $request){ + public function getNoMatchUser(Request $request) + { try { $user_id = $request->user_id; - $no_match_user = json_decode(Redis::get('no_match_user_' . $user_id),true); - if(!empty($no_match_user)){ + $no_match_user = json_decode(Redis::get('no_match_user_' . $user_id), true); + if (!empty($no_match_user)) { $users = Profile::with('member:photo,name,is_real_approved,id')->whereIn('user_id', $no_match_user) ->select('birthday', 'sex', 'resident_province', 'resident_city', 'province', 'city', 'user_id', 'belief') ->paginate(); - }else{ + } else { $users = Profile::whereNull('id')->paginate(); } return $this->success('ok', $users); - }catch (\Exception $e) { - $this->getError($e); - return $this->failure('服务器休息中,请稍后再试'); + } catch (\Exception $e) { + $this->getError($e); + return $this->failure('服务器休息中,请稍后再试'); } } @@ -2654,21 +2750,22 @@ class ActivityController extends Controller * @param Request $request * @return JsonResponse|string */ - public function updateNoMatchUser(Request $request){ + public function updateNoMatchUser(Request $request) + { try { $user_id = $request->user_id; $no_match_user_list = $request->no_match_user_list; - if(!$no_match_user_list || !is_array($no_match_user_list)){ + if (!$no_match_user_list || !is_array($no_match_user_list)) { return $this->fail('no_match_user_list不能为空'); } - $no_match_user = json_decode(Redis::get('no_match_user_' . $user_id),true); - if(!$no_match_user){ + $no_match_user = json_decode(Redis::get('no_match_user_' . $user_id), true); + if (!$no_match_user) { $no_match_user = []; } $no_match_user_list = array_merge($no_match_user_list, $no_match_user); - Redis::set('no_match_user_' . $user_id,json_encode($no_match_user_list)); + Redis::set('no_match_user_' . $user_id, json_encode($no_match_user_list)); return $this->success('ok'); - }catch (\Exception $e) { + } catch (\Exception $e) { $this->getError($e); return $this->failure('服务器休息中,请稍后再试'); } @@ -2677,9 +2774,10 @@ class ActivityController extends Controller /** * 生成签到码 */ - public function makeSignQrcode(Request $request){ + public function makeSignQrcode(Request $request) + { - $lists = CommunityActivity::where('status',1)->where('class','one')->get(); + $lists = CommunityActivity::where('status', 1)->where('class', 'one')->get(); foreach ($lists as $key => $val) { //生成签到二维码 $qr_code = QrCode::where('type', 'community') @@ -2694,7 +2792,8 @@ class ActivityController extends Controller $qr_code->save(); $temp_url = urlencode(env('APP_URL') . '/pu/#/activitySignIn/' . $val->id); $jump_url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . - $val->merchant_id . '&qr_code_id=' . $qr_code->id . '&url=' . $temp_url;; + $val->merchant_id . '&qr_code_id=' . $qr_code->id . '&url=' . $temp_url; + ; $image_url = $this->getPreviewQrcode($jump_url); $qr_code->jump_url = $jump_url; $qr_code->url = $image_url; @@ -2704,23 +2803,25 @@ class ActivityController extends Controller return $this->success('ok'); } - public function activityPhotos(Request $request, $id) { + public function activityPhotos(Request $request, $id) + { $type = 'activity'; $photos = ActivityPhoto::where('type', $type)->where('type_id', $id)->orderByDesc('id')->paginate(); return $this->success('ok', $photos); } - public function storeActvityPhotos(Request $request, $id) { + public function storeActvityPhotos(Request $request, $id) + { $pics = $request->input('pics'); $data = []; foreach ($pics as $pic) { $param = [ - 'type'=>'activity', - 'type_id'=>$id, - 'pic'=>$pic, - 'thumb_pic'=>$pic.'?x-oss-process=image/auto-orient,1/resize,p_20/quality,q_80', - 'created_at'=> date('Y-m-d H:i:s'), - 'updated_at'=> date('Y-m-d H:i:s'), + 'type' => 'activity', + 'type_id' => $id, + 'pic' => $pic, + 'thumb_pic' => $pic . '?x-oss-process=image/auto-orient,1/resize,p_20/quality,q_80', + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at' => date('Y-m-d H:i:s'), ]; $data[] = $param; } @@ -2730,18 +2831,19 @@ class ActivityController extends Controller public function deleteActvityPhotos(Request $request, $id) { - ActivityPhoto::where('id',$id)->delete(); + ActivityPhoto::where('id', $id)->delete(); return $this->success('ok'); } - public function addActivityMenu(Request $request){ + public function addActivityMenu(Request $request) + { try { - $activity_id = $request->id; - $activity = CommunityActivity::where('id',$activity_id)->first(); - if(empty($activity)){ + $activity_id = $request->id; + $activity = CommunityActivity::where('id', $activity_id)->first(); + if (empty($activity)) { return $this->failure('活动不存在'); } - $data = $request->only(['total_desk','menu','back_images','desk_images','start_desk','user_number','sign_images','desk_back_images']); + $data = $request->only(['total_desk', 'menu', 'back_images', 'desk_images', 'start_desk', 'user_number', 'sign_images', 'desk_back_images']); $validator = Validator::make($request->all(), [ 'total_desk' => 'required', 'back_images' => 'required', @@ -2764,21 +2866,21 @@ class ActivityController extends Controller } $menus = $data['menu']; - $meeting = ActivityMeeting::where('activity_id',$activity_id)->first(); + $meeting = ActivityMeeting::where('activity_id', $activity_id)->first(); - if(!empty($menus)){ - array_push($menus,['name'=>"座位查询",'images'=>$data['desk_back_images']]); + if (!empty($menus)) { + array_push($menus, ['name' => "座位查询", 'images' => $data['desk_back_images']]); } unset($data['desk_back_images']); - if(empty($meeting)){ + if (empty($meeting)) { $data['activity_id'] = $activity_id; } $data['menu'] = json_encode($menus); - if($meeting){ - ActivityMeeting::where('activity_id',$activity_id)->update($data); - }else{ + if ($meeting) { + ActivityMeeting::where('activity_id', $activity_id)->update($data); + } else { $merchant_id = $request->account_id; $temp_url = urlencode(env('APP_URL') . '/pu/#/activitySignIn/' . $activity_id); $jump_url = env('APP_URL') . '/api/official/live/wechat/activityMeetingAuth?merchant_id=' . $merchant_id . '&url=' . $temp_url; @@ -2788,19 +2890,20 @@ class ActivityController extends Controller ActivityMeeting::create($data); } return $this->success('ok'); - }catch (\Exception $e){ + } catch (\Exception $e) { return $this->failure($e->getMessage()); } } - public function getActivityMenu(Request $request){ + public function getActivityMenu(Request $request) + { try { $activity_id = $request->id; - $meeting = ActivityMeeting::where('activity_id',$activity_id)->first(); - if($meeting){ - $temp_menu = json_decode($meeting->menu,true); - foreach ($temp_menu as $index => $menu){ - if($menu['name'] == "座位查询"){ + $meeting = ActivityMeeting::where('activity_id', $activity_id)->first(); + if ($meeting) { + $temp_menu = json_decode($meeting->menu, true); + foreach ($temp_menu as $index => $menu) { + if ($menu['name'] == "座位查询") { $meeting->desk_back_images = $menu['images']; unset($temp_menu[$index]); } @@ -2808,46 +2911,47 @@ class ActivityController extends Controller sort($temp_menu); $meeting->menu = $temp_menu; } - return $this->success('ok',$meeting); - }catch (\Exception $e){ + return $this->success('ok', $meeting); + } catch (\Exception $e) { return $this->failure($e->getMessage()); } } - public function getMeetingApplyUser(Request $request){ + public function getMeetingApplyUser(Request $request) + { try { $activity_id = $request->id; $keyword = $request->keyword; $is_export = $request->is_export; $no_page = $request->no_page; - if($is_export){ + if ($is_export) { $no_page = true; } $query = CommunityActivityMember::query(); - $query->when($keyword,function ($query) use ($keyword){ - $query->where('name','%'.$keyword.'%'); + $query->when($keyword, function ($query) use ($keyword) { + $query->where('name', '%' . $keyword . '%'); }); - $query->where('activity_id',$activity_id); + $query->where('activity_id', $activity_id); - if($no_page){ + if ($no_page) { $apply_user = $query->get(); - }else{ + } else { $apply_user = $query->paginate(); } - foreach ($apply_user as $item){ - $sign = ActivityMeetingApply::where('activity_id',$activity_id)->where('mobile',$item->mobile)->first(); + foreach ($apply_user as $item) { + $sign = ActivityMeetingApply::where('activity_id', $activity_id)->where('mobile', $item->mobile)->first(); $item->is_sign = false; $item->sign_time = ''; - if(!empty($sign)){ + if (!empty($sign)) { $item->is_sign = true; $item->sign_time = $sign->created_at->toDateTimeString(); } } - if($is_export){ + if ($is_export) { return \Excel::download(new ActivityApplyUserExport($apply_user), 'activity_member.xlsx'); } - return $this->success('ok',$apply_user); - }catch (\Exception $e){ + return $this->success('ok', $apply_user); + } catch (\Exception $e) { return $this->failure($e->getMessage()); } } diff --git a/database/migrations/2026_04_15_113214_table_community_activity_sponsor.php b/database/migrations/2026_04_15_113214_table_community_activity_sponsor.php new file mode 100644 index 0000000..0cd93a0 --- /dev/null +++ b/database/migrations/2026_04_15_113214_table_community_activity_sponsor.php @@ -0,0 +1,32 @@ +string("sponsor", 191)->nullable()->comment("举办方")->after("class"); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('ufutx_community_activities', function (Blueprint $table) { + $table->dropColumn("sponsor"); + }); + } +}