userCon = $userCon; } /** * 创建会员等级 * @param Request $request */ public function createSaasMemberLevel(Request $request){ try { $merchant_id = $request->account_id; $member_level = $request->all(); if (!$member_level['level_title'] || !$member_level['level_pic'] || !isset($member_level['level_price']) || !isset($member_level['level_years']) || !isset($member_level['level_month'])) { return $this->failure('参数不全'); } $divide_status = $request->input('divide_status') ?? 0; $merchant_ratio = $request->input('merchant_ratio') ?? 0; $facilitate_ratio = $request->input('facilitate_ratio') ?? 0; $describe = $request->input('describe') ?? ''; if(($merchant_ratio + $facilitate_ratio) > 1){ return $this->failure('商家比例和促成比例相加不能超过100%'); } $gain = $request->input('gain'); $member_level_db = SaasMemberLevel::where('level_title', $member_level['level_title']) ->where('merchant_id', $merchant_id) ->where('level_years', $member_level['level_years']) ->where('level_month', $member_level['level_month']) ->first(); if (!$member_level_db) { $member_level_db = new SaasMemberLevel(); $member_level_db->merchant_id = $merchant_id; $member_level_db->level_years = $member_level['level_years']; $member_level_db->level_month = $member_level['level_month']; $member_level_db->level_title = $member_level['level_title']; $member_level_db->level_sub_title = $member_level['level_sub_title']; $member_level_db->level_pic = $member_level['level_pic']; $member_level_db->level_price = $member_level['level_price']; $member_level_db->divide_status = $divide_status; $member_level_db->merchant_ratio = $merchant_ratio; $member_level_db->facilitate_ratio = $facilitate_ratio; $member_level_db->gain = $gain; $member_level_db->describe = $describe; $member_level_db->save(); } else { $member_level_db->level_sub_title = $member_level['level_sub_title']; $member_level_db->level_pic = $member_level['level_pic']; $member_level_db->level_price = $member_level['level_price']; $member_level_db->divide_status = $divide_status; $member_level_db->merchant_ratio = $merchant_ratio; $member_level_db->facilitate_ratio = $facilitate_ratio; $member_level_db->gain = $gain; $member_level_db->describe = $describe; $member_level_db->save(); } if (isset($member_level['level_column']) && is_array($member_level['level_column'])) { foreach ($member_level['level_column'] as $key => $val) { $column = SaasMemberColumns::where('merchant_id', $merchant_id)->where('level_id', $member_level_db->id) ->where('column_name', $val['column_name']) ->first(); if (!$column) { $column = new SaasMemberColumns(); $column->merchant_id = $merchant_id; $column->level_id = $member_level_db->id; $column->column_name = $val['column_name']; $column->column_value = $val['column_value']; $column->save(); } } } return $this->success('ok'); }catch (\Exception $e) { $this->getError($e); return $this->failure($e->getMessage()); } } /** * 查询商家会员等级列表 * @param Request $request */ public function getSaasMemberLevelList(Request $request){ try { $keyword = $request->keyword; $merchant_id = $request->account_id; $member_level = SaasMemberLevel::with('memberColumn')->where('merchant_id',$merchant_id) ->when($keyword,function ($query) use($keyword,$merchant_id){ $query->where(function ($sub_query) use($keyword,$merchant_id){ $sub_query->where('merchant_id', $merchant_id) ->Where('level_sub_title', 'like', "%$keyword%"); }) ->orWhere(function ($sub_query) use($keyword,$merchant_id){ $sub_query->where('merchant_id', $merchant_id) ->Where('level_title', 'like', "%$keyword%"); }); }) ->orderBy('updated_at','desc') ->paginate(); return $this->success('ok',$member_level); }catch (\Exception $e) { $this->getError($e); return $this->failure('操作失败'); } } /** * 查询商家会员等级详情 * @param Request $request */ public function getSaasMemberLevelDetail(Request $request,SaasVipSpreadService $s){ try { $merchant_id = $request->account_id; $level_id = $request->level_id; $member_level = SaasMemberLevel::with('memberColumn') ->where('merchant_id',$merchant_id) ->where('id',$level_id) ->first(); if(!$member_level){ return $this->success('ok',$member_level); } $gain = json_decode($member_level->gain); $member_level->gain = $gain; if(!$gain){ return $this->success('ok',$member_level); } foreach ($gain as $item){ if($item->type && isset($item->merchant_id) && $item->id){ $item->data = $s->getGain($item->type,$item->merchant_id,$item->id); if(isset($item->sku_id)){ $sku = $item->data->sku ?? null; $item->sku_name = ''; $item->sku_price = ''; if(!$sku){ continue; } foreach ($sku as $u){ if($u->sku_id == $item->sku_id){ $item->sku_name = $u->name; $item->sku_price = number_format($u->price,2); } } } } } return $this->success('ok',$member_level); }catch (\Exception $e) { $this->getError($e); return $this->failure($e->getMessage() . $e->getLine()); } } /** * 更新会员等级 * @param Request $request * @return JsonResponse|string */ public function updateSaasMemberLevel(Request $request){ $merchant_id = $request->account_id; $member_level = $request->all(); if (!$member_level['level_title'] || !$member_level['level_pic'] || !isset($member_level['level_price']) || !isset($member_level['level_years']) || !isset($member_level['level_month']) || !isset($member_level['level_id']) ) { return $this->failure('参数不全'); } $level = SaasMemberLevel::where('id', $member_level['level_id']) ->where('merchant_id', $merchant_id) ->first(); if(!$level){ return $this->failure('vip不存在'); } if(isset($member_level['level_title']) && $member_level['level_title'] != $level->level_title){ $level->level_title = $member_level['level_title']; } if(isset($member_level['level_sub_title']) && $member_level['level_sub_title'] != $level->level_sub_title){ $level->level_sub_title = $member_level['level_sub_title']; } if(isset($member_level['level_pic']) && $member_level['level_pic'] != $level->level_pic){ $level->level_pic = $member_level['level_pic']; } if(isset($member_level['level_price']) && $member_level['level_price'] != $level->level_price){ $level->level_price = $member_level['level_price']; } if(isset($member_level['level_years']) && $member_level['level_years'] != $level->level_years){ $level->level_years = $member_level['level_years']; } if(isset($member_level['level_month']) && $member_level['level_month'] != $level->level_month){ $level->level_month = $member_level['level_month']; } //分成开关 1开 0关 if(isset($member_level['divide_status'])){ $level->divide_status = $member_level['divide_status']; } //商家比例 if(isset($member_level['merchant_ratio'])){ $level->merchant_ratio = $member_level['merchant_ratio']; } //促成比例 if(isset($member_level['facilitate_ratio'])){ $level->facilitate_ratio = $member_level['facilitate_ratio']; } if(isset($member_level['merchant_ratio']) && isset($member_level['facilitate_ratio'])){ if( ($member_level['merchant_ratio'] + $member_level['facilitate_ratio']) > 1){ return $this->failure('商家比例和促成比例相加不能超过100%'); } } //介绍 if (isset($member_level['describe'])){ $level->describe = $member_level['describe']; } $gain = $request->input('gain'); if($gain){ $level->gain = $gain; } $level->save(); if (isset($member_level['level_column']) && is_array($member_level['level_column'])) { $value_name = []; foreach ($member_level['level_column'] as $key => $val) { $column = SaasMemberColumns::where('merchant_id', $merchant_id)->where('level_id', $level->id) ->where('column_name', $val['column_name']) ->first(); if (!$column) { $column = new SaasMemberColumns(); $column->merchant_id = $merchant_id; $column->level_id = $level->id; $column->column_name = $val['column_name']; $column->column_value = $val['column_value']; $column->save(); } $value_name[] = $val['column_name']; } $column_array = SaasMemberColumns::where('merchant_id', $merchant_id)->where('level_id', $level->id) ->pluck('column_name') ->toArray(); if(is_array($value_name) && is_array($column_array)){ $diff_array = array_diff($column_array,$value_name); if(is_array($diff_array)){ foreach ($diff_array as $array_key => $array_val){ SaasMemberColumns::where('merchant_id', $merchant_id)->where('level_id', $level->id) ->where('column_name',$array_val) ->delete(); SaasMemberBuyInfo::where('merchant_id',$merchant_id)->where('level_id',$level->id) ->where('column_name',$array_val) ->delete(); } } } } return $this->success('ok'); } /** * 删除会员等级 */ public function deleteSaasMemberLevel(Request $request){ try { $merchant_id = $request->account_id; $level_id = $request->level_id; if (!$level_id) { return $this->failure('等级ID不能为空'); } SaasMemberLevel::where('merchant_id', $merchant_id) ->where('id', $level_id) ->delete(); SaasMemberColumns::where('merchant_id', $merchant_id) ->where('level_id', $level_id) ->delete(); return $this->success('ok'); }catch (\Exception $e) { $this->getError($e); return $this->failure('操作失败'); } } /** * 用户填写信息列表 */ public function getSaasMemberUserInfo(Request $request, SaasVipUserService $s) { try { $merchant_id = $request->account_id; $level_id = $request->level_id; $keyword = $request->keyword; $expire = $request->expire ?? null; $where = [ ['member_level_id', '=', $level_id], ['merchant_id', '=', $merchant_id] ]; if ($expire == 0) { $where[] = ['expire_time', '>', date('Y-m-d H:i:s')]; } else { $where[] = ['expire_time', '<', date('Y-m-d H:i:s')]; } $data = SaasMemberUser::with('merchantUser') ->where($where) ->whereHas('merchantUser', function ($q) use ($keyword) { if ($keyword) { $q->where('nickname', 'like', "%{$keyword}%"); } }) ->orderBy('created_at', 'desc') ->paginate(); $data->transform(function ($value) use ($level_id, $merchant_id, $s) { $where = [ ['type', '=', 'member'], ['type_id', '=', $level_id], ['merchant_id', '=', $merchant_id], ['account_id', '=', $value->merchant_user_id], ['created_at', '<=', $value->expire_time] ]; $value->order = TouristOrder::where($where)->whereIn('pay_status', [1, 4])->first(); $value->order->linkmen = json_decode($value->order->linkmen); $value->created_at = $value->order->created_at; //默认头像 $value->merchantUser->pic = $value->merchantUser->pic ?: User::DefaultAvatar; //是否注册福恋小程序 $fulink_user_id = $s->matchFulinkUser($value->merchant_user_id,$value->order->mobile); $value->is_reg_fulink = $fulink_user_id ? 1 : 0; $value->fulink_user_id = $fulink_user_id; $fulink_user_status = [ 'is_ban' => null, //封号状态 1封号 0未封 'information_close' => null,//资料关闭 1关闭 0未关闭 'information_perfect' => null, //资料完善 1已完善 0未完善 ]; if($value->is_reg_fulink){ $frozen_state = $this->userCon->getUserBannedState($fulink_user_id); $fulink_user_status['is_ban'] = $frozen_state ? 1 : 0; $fulink_user = User::find($fulink_user_id); $fulink_user_status['information_close'] = $fulink_user->hidden_profile == 'ALLSEX' ? 1 : 0; $base_info = $this->userCon->isCompleteBaseInfo($fulink_user); $fulink_user_status['information_perfect'] = $base_info == 2 ? 1 : 0; } $value->fulink_user_status = $fulink_user_status; return $value; }); return $this->success('ok', $data); } catch (\Exception $e) { $this->getError($e); return $this->failure('操作失败'); } } /** * 订单列表 */ /** *获取 * @param Request $request * @return JsonResponse|string */ public function getMemberOrder(Request $request){ try { $merchant_id = $request->account_id; $nopage = $request->nopage; $keyword = $request->keyword; $type_id = $request->type_id; $spread_merchant_name = $request->spread_merchant_name; $facilitate_name = $request->facilitate_name; $members = \App\Models\Server\TouristOrder::with('viewer:avatar as pic,mobile,openid,sex,nickname', 'merUser', 'alliance', 'fromUser:user_id as id,avatar,mobile,openid,sex,nickname','spreadAnchor','fromUsers') ->where('type','member')->where('merchant_id',$merchant_id) ->when($type_id,function ($query) use ($type_id){ $query->where('type_id',$type_id); }); if(isset($request->pay_status)){ $members = $members->where('pay_status',$request->pay_status); } if($keyword){ $members = $members->where(function ($query) use($keyword){ $query->where('name','like',"%$keyword%") ->orWhere('mobile','like',"%$keyword%"); }); } if($spread_merchant_name){ $members = $members->whereHas('spreadAnchor',function ($query) use($spread_merchant_name){ $query->where('name','like',"%$spread_merchant_name%"); }); } if($facilitate_name){ $members = $members->whereHas('fromUser',function ($query) use($facilitate_name){ $query->where('nickname','like',"%$facilitate_name%"); }); } if($nopage){ $members = $members->orderBy('created_at','desc')->get(); }else{ $members = $members->orderBy('created_at','desc')->paginate(); } foreach ($members as $item) { //推广商家创始人数据 $extend = json_decode($item->extend); $spread_merchant_founder_user_id = $extend->spread_merchant_founder_user_id ?? 0; $item->spread_merchant_founder = $spread_merchant_founder_user_id ? MerchantUser::select('id','nickname','user_id','pic')->find($spread_merchant_founder_user_id) : null; } return $this->success('ok',$members); } catch (\Exception $e) { $this->getError($e); return $this->failure('操作失败'); } } }