1733 lines
78 KiB
PHP
1733 lines
78 KiB
PHP
<?php
|
||
|
||
namespace App\Http\Controllers\Admin;
|
||
|
||
use App\Models\Server\EvaluateDetail;
|
||
use App\Models\Server\MerchantEvaluate;
|
||
use App\Models\Wechat;
|
||
use Illuminate\Http\Request;
|
||
use App\Http\Controllers\Controller;
|
||
use App\Models\AnchorVideo;
|
||
use Illuminate\Support\Facades\Redis;
|
||
use App\Models\Server\MerchantInformation as MInformation;
|
||
use App\Models\Consultation;
|
||
use App\Models\ConsultAccount;
|
||
use App\Models\CommunityActivity;
|
||
use App\Models\ConsultationRecords;
|
||
use App\Models\Server\MerchantUser;
|
||
use App\Models\MerchantUsers;
|
||
use App\Models\Course\Course;
|
||
use App\Models\Course\UserCourses;
|
||
use App\Models\EarningAccount;
|
||
use App\Models\Live\Anchor;
|
||
use App\Models\Live\Viewer;
|
||
use App\Models\MerchantShop;
|
||
use App\Models\MEarning;
|
||
use App\Models\MerchantInfo;
|
||
use App\Models\Server\TouristOrder;
|
||
use App\Models\QATest;
|
||
use App\Models\MarriageMessenger;
|
||
use App\Models\QATestRecord;
|
||
use App\Models\Server\EnterpriseSettlement;
|
||
use App\Models\Server\MEarningAccount;
|
||
use App\Models\Server\MerchantAccount;
|
||
use App\Models\Server\MerchantFollow;
|
||
use App\Models\Server\MerchantInformation;
|
||
use App\Models\User;
|
||
use Illuminate\Support\Facades\DB;
|
||
|
||
class ServicePlatController extends Controller
|
||
{
|
||
/**
|
||
* 服务商平台数据
|
||
*/
|
||
|
||
/** 老师资讯列表 */
|
||
public function merchantsInfos(Request $request, $merchant_id=0)
|
||
{
|
||
try{
|
||
if ($merchant_id) {
|
||
$infos = MInformation::where('merchant_id', $merchant_id)->orderBy('id', 'desc');
|
||
}else{
|
||
$infos = MInformation::with('anchor')->whereHas('anchor')->where('title','<>','演示内容——如何发布和管理文章')->orderBy('id', 'desc');
|
||
}
|
||
$is_love_show = $request->is_love_show??2;
|
||
if($is_love_show != 2){
|
||
$infos = $infos->where('is_love_show',$is_love_show);
|
||
}
|
||
$keyword = trim($request->input('keyword'));
|
||
if ($keyword) {
|
||
$m_ids = Anchor::where('name','like','%'.$keyword.'%')->pluck('m_id');
|
||
$infos = $infos->where(function($sql) use($keyword,$m_ids){
|
||
$sql->where('title', 'like', '%'.$keyword.'%')
|
||
->orWhere('subTitle', 'like', '%'.$keyword.'%')
|
||
->orWhereIn('merchant_id',$m_ids);
|
||
});
|
||
}
|
||
$infos = $infos->select('id', 'merchant_id', 'title', 'subTitle', 'created_at', 'pic', 'status','is_love_show','reward_status')->paginate();
|
||
foreach ($infos as $key => $value) {
|
||
$value->merchant_name = $value->anchor ? $value->anchor->name : '未获取';
|
||
unset($value->anchor);
|
||
}
|
||
return $this->success('ok', $infos);
|
||
}catch(\Exception $e){
|
||
$this->getError($e);
|
||
return $this->failure("获取资讯列表失败,请稍后再试");
|
||
}
|
||
}
|
||
|
||
/** 老师活动列表 */
|
||
public function merchantsActivities(Request $request, $merchant_id=0)
|
||
{
|
||
try{
|
||
$activities = $this->getCommunityActities($merchant_id, $class='one',$request);
|
||
return $this->success('ok', $activities);
|
||
}catch(\Exception $e){
|
||
$this->getError($e);
|
||
return $this->failure("获取活动列表失败,请稍后再试");
|
||
}
|
||
}
|
||
|
||
/** 老师服务列表 */
|
||
public function merchantsServices(Request $request, $merchant_id=0)
|
||
{
|
||
try{
|
||
$activities = $this->getCommunityActities($merchant_id, $class='many',$request);
|
||
return $this->success('ok', $activities);
|
||
}catch(\Exception $e){
|
||
$this->getError($e);
|
||
return $this->failure("获取服务列表失败,请稍后再试");
|
||
}
|
||
}
|
||
|
||
public function getCommunityActities($merchant_id, $class,$request)
|
||
{
|
||
if ($merchant_id) {
|
||
$activities = CommunityActivity::with('banners:class_id,icon')->where('merchant_id', $merchant_id);
|
||
}else{
|
||
$activities = CommunityActivity::with('banners:class_id,icon','anchor')->whereHas('anchor')->whereNotIn('title',['如何创建和管理服务','如何创建和管理活动']);
|
||
}
|
||
$keyword = request()->input('keyword');
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
$m_ids = Anchor::where('name','like','%'.$keyword.'%')->pluck('m_id')->toArray();
|
||
$activities->where(function($sql) use($keyword,$m_ids){
|
||
$sql->where('title','like','%'.$keyword.'%')
|
||
->orWhereIn('merchant_id',$m_ids);
|
||
});
|
||
}
|
||
if($request->has('is_love_show')&&$request->is_love_show!=2){
|
||
$activities = $activities->where('is_love_show',$request->is_love_show)->orderBy('h5_top','desc');
|
||
}
|
||
if($request->has('is_mp_show')&&$request->is_mp_show!=2){
|
||
$activities = $activities->where('is_mp_show',$request->is_mp_show)->orderBy('mp_top','desc');
|
||
}
|
||
if($request->sortName=='timeSort'){
|
||
$sortType = $request->sortType??'desc';
|
||
$activities = $activities->orderBy('created_at', $sortType);
|
||
}
|
||
if($request->sortName=='hotSort'){
|
||
$sortType = $request->sortType??'desc';
|
||
$activities = $activities->orderBy('pv', $sortType);
|
||
}
|
||
$activityies = $activities->where('class', $class)->orderBy('sort','desc')->orderBy('apply_deadline','desc')->orderBy('id', 'desc')->paginate();
|
||
foreach ($activityies as $key => $value) {
|
||
$value->merchant_name = $value->anchor ? $value->anchor->name : '未获取';
|
||
unset($value->anchor);
|
||
}
|
||
return $activityies;
|
||
}
|
||
|
||
// 入选福恋
|
||
public function intoLove(Request $request)
|
||
{
|
||
$type = $request->type ?? 'community';
|
||
$ids = $request->ids;
|
||
if(empty($ids)) return $this->failure('请选择要同步的内容');
|
||
$is_love_show = $request->is_love_show??0;
|
||
$is_mp_show = $request->is_mp_show??0;
|
||
switch ($type) {
|
||
case 'community':
|
||
if($request->has('is_love_show')) CommunityActivity::whereIn('id',$ids)->update(['is_love_show'=>$is_love_show]);
|
||
if($request->has('is_mp_show')) CommunityActivity::whereIn('id',$ids)->update(['is_mp_show'=>$is_mp_show]);
|
||
break;
|
||
case 'info':
|
||
if($request->has('is_love_show')) MerchantInformation::whereIn('id',$ids)->update(['is_love_show'=>$is_love_show]);
|
||
break;
|
||
case 'course':
|
||
if($request->has('is_love_show')) Course::whereIn('id',$ids)->update(['is_love_show'=>$is_love_show]);
|
||
break;
|
||
case 'video':
|
||
if($request->has('is_love_show')) AnchorVideo::whereIn('id',$ids)->update(['is_love_show'=>$is_love_show]);
|
||
break;
|
||
default:
|
||
# code...
|
||
break;
|
||
}
|
||
$this->forgetBykey('homeContent');
|
||
return $this->success('ok');
|
||
}
|
||
|
||
// 分成收益记录
|
||
public function earningRecord(Request $request)
|
||
{
|
||
$keyword = $request->keyword;
|
||
$sharer = $request->sharer;
|
||
$m_order_id = TouristOrder::where('type',$request->type)->where('type_id',$request->type_id)->pluck('id');
|
||
$result = MEarning::select('id','m_id','m_user_id','ratio','sub_ratio','m_order_id','sharer','value','status','created_at')->wherein('m_order_id',$m_order_id)->wherenotin('type',['system','reward']);
|
||
if($sharer)
|
||
$result = $result->where('sharer',$sharer);
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
$result = $result->whereHas('order',function($sql) use($keyword){
|
||
$sql->where('name','like','%'.$keyword.'%')
|
||
->orWhere('mobile','like','%'.$keyword.'%')
|
||
->orWhere('desc','like','%'.$keyword.'%');
|
||
});
|
||
}
|
||
$result = $result->where('type','<>','enter');
|
||
$result = $result->orderBy('id','desc')->paginate();
|
||
foreach ($result as $key => $value) {
|
||
if($value->user){
|
||
$value->sharer_user_name = $value->user->nickname??'匿名用户';
|
||
$value->sharer_user_pic = $value->user->pic??User::DefaultAvatar;
|
||
$value->sharer_user_mobile = $value->user->mobile??'';
|
||
}else{
|
||
$merchant_id = TouristOrder::where('id',$m_order_id)->value('merchant_id');
|
||
$user = MerchantAccount::where('id',$merchant_id)->first();
|
||
$value->sharer_user_name = $user->anchor->name??'匿名用户';
|
||
$value->sharer_user_pic = $user->anchor->pic??User::DefaultAvatar;
|
||
$value->sharer_user_mobile = $user->mobile??'';
|
||
}
|
||
|
||
$value->pay_user_mobile =$value->order->mobile??'';
|
||
$payUser = 0;
|
||
if($value->order){
|
||
$payUser = MerchantUser::where('id',$value->order->account_id)->first();
|
||
}
|
||
|
||
$value->pay_user_mobile =$value->order->mobile??'';
|
||
$value->title =$value->order->desc??'';
|
||
$value->order_price = $value->order->price??0;
|
||
$value->pay_user_name =!empty($payUser) ? $payUser->nickname:'匿名用户';
|
||
$value->pay_user_pic =!empty($payUser) ? $payUser->pic:User::DefaultAvatar;
|
||
switch ($value->sharer) {
|
||
case 'first_sharer':
|
||
$value->sharer = '首邀';
|
||
break;
|
||
case 'other_sharer':
|
||
$value->sharer = '间接';
|
||
break;
|
||
case 'last_sharer':
|
||
$value->sharer = '促成';
|
||
break;
|
||
case 'merchant':
|
||
$value->sharer = '商家';
|
||
break;
|
||
default:
|
||
$value->sharer = '商家';
|
||
break;
|
||
}
|
||
unset($value->user);
|
||
unset($value->order);
|
||
}
|
||
return $this->success('ok',$result);
|
||
}
|
||
|
||
|
||
/** 老师咨询列表 */
|
||
public function merchantsConsults(Request $request, $merchant_id=0)
|
||
{
|
||
try{
|
||
if ($merchant_id) {
|
||
//咨询师id
|
||
$consult_account_ids = ConsultAccount::where('merchant_id', $merchant_id)->pluck('id');
|
||
$consults = Consultation::whereIn('consult_account_id', $consult_account_ids)->orderBy('id', 'desc');
|
||
}else{
|
||
$consults = Consultation::with('teacher.merchant','teacher.anchor')->whereHas('teacher.anchor')->orderBy('id', 'desc');
|
||
}
|
||
$keyword = request()->input('keyword');
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
// $m_ids = Anchor::where('name','like','%'.$keyword.'%')->pluck('m_id');
|
||
$consults = $consults->where(function($sql) use($keyword){
|
||
$sql->where('title','like','%'.$keyword.'%');
|
||
})->orWhereHas('teacher.anchor',function($sql) use($keyword){
|
||
$sql->where('name','like','%'.$keyword.'%');
|
||
});
|
||
}
|
||
$consults = $consults->paginate();
|
||
foreach ($consults as $key => $value) {
|
||
$value->merchant_name = $value->teacher->anchor ? $value->teacher->anchor->name : '未获取';
|
||
}
|
||
return $this->success('ok', $consults);
|
||
}catch(\Exception $e){
|
||
$this->getError($e);
|
||
return $this->failure("获取服务列表失败,请稍后再试");
|
||
}
|
||
}
|
||
|
||
//单个老师的课程列表
|
||
public function merchantsCourses(Request $request, $merchant_id=0)
|
||
{
|
||
try{
|
||
//课程列表
|
||
if ($merchant_id) {
|
||
//$courses = Course::with('tagged')->where('merchant_id', $merchant_id);
|
||
$courses = Course::where('merchant_id', $merchant_id)->where('type','business');;
|
||
}else{
|
||
//$courses = Course::with('tagged');
|
||
$courses = Course::with('anchor')->whereHas('anchor')->where('id','>',0)->where('type','business');
|
||
}
|
||
|
||
$keyword = $request->input('keyword');
|
||
if ($keyword){
|
||
$keyword = trim($keyword);
|
||
$m_ids = Anchor::where('name','like','%'.$keyword.'%')->pluck('m_id');
|
||
$courses = $courses->where(function($sql) use($keyword,$m_ids){
|
||
$sql->where('title','like','%'.$keyword.'%')
|
||
->orWhereIn('merchant_id',$m_ids);
|
||
});
|
||
}
|
||
if(isset($request->is_love_show) && in_array($request->is_love_show,[0,1])) {
|
||
$courses = $courses->where('is_love_show', $request->is_love_show);
|
||
}
|
||
$courses = $courses->orderBy('id','desc')->paginate();
|
||
foreach($courses as $course){
|
||
$course_tags = [];
|
||
foreach($course->tags as $tag) {
|
||
$course_tags[] = $tag->name;
|
||
}
|
||
$course->course_tags = $course_tags;
|
||
$course->merchant_name = $course->anchor ? $course->anchor->name : '未获取';
|
||
unset($course->anchor);
|
||
unset($course->tagged);
|
||
}
|
||
return $this->success('ok', $courses);
|
||
}catch(\Exception $e){
|
||
$this->getError($e);
|
||
return $this->failure('数据错误,请联系开发人员'.$e->getMessage());
|
||
}
|
||
}
|
||
|
||
/** 服务商咨询详情 */
|
||
public function merchantConsult(Request $request, $id)
|
||
{
|
||
try {
|
||
$consult = Consultation::find($id);
|
||
$consult->teacher->merchant;
|
||
return $this->success('ok', $consult);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('获取咨询详情失败,请稍后再试');
|
||
}
|
||
}
|
||
|
||
/** 服务商资讯详情 */
|
||
public function merchantInfor(Request $request, $id)
|
||
{
|
||
try {
|
||
$infor = MInformation::find($id);
|
||
$jump_url = urlencode(env('APP_URL').'/h5/#/dynamicParticulars/'.$id);
|
||
$url = env('APP_URL').'/api/official/live/wechat/oauth?merchant_id='.$infor->merchant_id.'&anchor_openid=&url='.$jump_url;
|
||
// $qr_code = $this->getPreviewQrcode($url);
|
||
$qr_code = Redis::get('InforDetail_L'.$id);
|
||
$qr_code = 'test';
|
||
if(!$qr_code){
|
||
$qr_code = $this->getPreviewQrcode($url);
|
||
Redis::setex('InforDetail_L'.$id,60*60*24*30,$qr_code);
|
||
$qr_code = Redis::get('InforDetail_L'.$id);
|
||
}
|
||
$infor->merchant;
|
||
$infor->share_qr_code = $qr_code;
|
||
$infor->share_url = $url;
|
||
return $this->success('ok', $infor);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('获取资讯详情失败,请稍后再试');
|
||
}
|
||
}
|
||
|
||
/** 服务商活动详情 */
|
||
public function merchantActivity(Request $request, $id)
|
||
{
|
||
try {
|
||
$activity = CommunityActivity::where(['id'=>$id, 'class'=>'one'])->first();
|
||
$activity->merchant;
|
||
if ($activity->banners){
|
||
$activity->banners->icon = json_decode($activity->banners->icon, true);
|
||
}
|
||
if($activity->sku && $activity->sku != 'null') $activity->sku = json_decode($activity->sku,true);
|
||
$jump_url = urlencode(env('APP_URL').'/h5/#/activityDetails/'.$activity->id);
|
||
$url = env('APP_URL').'/api/official/live/wechat/oauth?url='.$jump_url;
|
||
if (config('app.env') == 'production') {
|
||
$qr_code = Redis::get('ActivityDetail_L'.$id);
|
||
if(!$qr_code){
|
||
$qr_code = $this->getPreviewQrcode($url);
|
||
Redis::setex('ActivityDetail_L'.$id,60*60*24*30,$qr_code);
|
||
$qr_code = Redis::get('ActivityDetail_L'.$id);
|
||
}
|
||
}else{
|
||
$qr_code = '';
|
||
}
|
||
|
||
$activity->qr_codes = $qr_code;
|
||
$activity->share_url = $url;
|
||
return $this->success('ok', $activity);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('获取活动详情失败,请稍后再试');
|
||
}
|
||
}
|
||
|
||
// 服务商活动成员
|
||
public function members(Request $request){
|
||
try {
|
||
$type_id = $request->type_id;
|
||
$type = $request->type;
|
||
$keyword = $request->keyword;
|
||
$pay_status = $request->pay_status??2;
|
||
switch ($type) {
|
||
case 'information':
|
||
$type = 'reward_info';
|
||
break;
|
||
case 'activity':
|
||
$type = 'community';
|
||
break;
|
||
case 'service':
|
||
$type = 'community';
|
||
break;
|
||
default:
|
||
$type = $type;
|
||
break;
|
||
}
|
||
$members = TouristOrder::with('merUser')->where('type', $type)->where('type_id',$type_id)->orderBy('id','desc');
|
||
// if($pay_status != 2){
|
||
// $members = $members->where('pay_status',$pay_status);
|
||
// }
|
||
if($pay_status != 2){
|
||
if($pay_status == 1){
|
||
$members = $members->whereIn('pay_status',[1,4]);
|
||
}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();
|
||
foreach ($members as $member) {
|
||
//$member->merchant_user = $member->merUser;
|
||
if($member->channel=='福恋小程序'){
|
||
$wechat = Wechat::where('openid',$member->open_id)->first();
|
||
if($wechat){
|
||
$user = User::where('id',$wechat->user_id)->first();
|
||
if($user){
|
||
$userinfo['nickname'] = $user->nickname;
|
||
$userinfo['pic'] = $user->photo?:($user->circle_avatar?:User::DefaultAvatar);
|
||
$member->merchant_user = $userinfo;
|
||
}
|
||
} else {
|
||
$member->merchant_user = $member->merUser;
|
||
}
|
||
|
||
}else{
|
||
$rand_str = $this->randString(8);
|
||
$nickname = '用户'.$rand_str;
|
||
if(!$member->merUser) {
|
||
$userinfo['nickname'] = $nickname;
|
||
$userinfo['pic'] = User::DefaultAvatar;
|
||
$member->merchant_user = $userinfo;
|
||
}
|
||
if($member->merUser && !$member->merUser['pic']) {
|
||
$member->merUser['pic'] = User::DefaultAvatar;
|
||
$member->merchant_user = $member->merUser;
|
||
} else {
|
||
$member->merchant_user = $member->merUser;
|
||
}
|
||
}
|
||
$member->linkmen = json_decode($member->linkmen,true);
|
||
$member->insurance_info = json_decode($member->insurance_info);
|
||
if($member->linkmen){
|
||
//$member->linkmen = json_decode( $member->linkmen,true);
|
||
if($member->mobile=='未获取'){
|
||
$member->mobile = $member->linkmen[0]['mobile'];
|
||
}
|
||
if($member->name=='未获取'){
|
||
$member->name = $member->linkmen[0]['name'];
|
||
}
|
||
}
|
||
}
|
||
return $this->success('ok',$members);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('操作失败'.$e->getMessage());
|
||
}
|
||
|
||
}
|
||
|
||
/*服务商项目详情*/
|
||
public function infos(Request $request, $id)
|
||
{
|
||
try {
|
||
$url = '';
|
||
switch ($request->type) {
|
||
//活动和服务
|
||
case 'community':
|
||
$result = CommunityActivity::select('id','price','title','pic','pv','is_love_show','class','sku')->where(['id'=>$id])->first();
|
||
if ($result->banners){
|
||
$result->banners->icon = json_decode($result->banners->icon, true);
|
||
}
|
||
if($result->class=='one'){
|
||
$jump_url = urlencode(env('APP_URL').'/h5/#/activityDetails/'.$result->id);
|
||
$jump_key = 'ActivityDetail_L';
|
||
}else{
|
||
$jump_url = urlencode(env('APP_URL').'/h5/#/serveDetails/'.$result->id);
|
||
$jump_key = 'ServeDetail_L';
|
||
}
|
||
if($result->sku && $result->sku != 'null'){
|
||
$result->sku = json_decode($result->sku,true);
|
||
}
|
||
$key = $jump_key.$id;
|
||
# code...
|
||
break;
|
||
// 课程
|
||
case 'course':
|
||
$result = Course::select('id','thumb as pic','is_love_show','short_description','title','charge','published_at','is_show','publicity_video')->where('id',$id)->first();
|
||
$jump_url = urlencode(env('APP_URL').'/h5/#/syncCourseDetail/'.$result->id);
|
||
$key = 'CourseDetail_L'.$id;
|
||
# code...
|
||
break;
|
||
// 商城
|
||
case 'shop':
|
||
$result = MerchantShop::select('id','icon','describe','is_show','pay_type','sub_title','title','price','sku')->where('id',$id)->first();
|
||
$result->sku = json_decode($result->sku, true)?:[];
|
||
$key = 'L-shopDetail'.$id;
|
||
$jump_url = urlencode(env('APP_URL').'/h5/#/mallDetail/'.$result->id);
|
||
break;
|
||
// 咨询
|
||
case 'consult':
|
||
$result = Consultation::find($id);
|
||
$result->teacher;
|
||
$key = 'L-consultDetail'.$id;
|
||
$jump_url = urlencode(env('APP_URL').'/h5/#/mallDetail/'.$result->id);
|
||
# code...
|
||
break;
|
||
// 文章
|
||
case 'information':
|
||
# code...
|
||
$result = MInformation::find($id);
|
||
$jump_url = urlencode(env('APP_URL').'/h5/#/dynamicParticulars/'.$id);
|
||
$key = 'InforDetail_L'.$id;
|
||
break;
|
||
// 问题
|
||
case 'question':
|
||
$result = QATest::with('answer')->where('id', $id)->first();
|
||
$result->question = json_decode($result->question);
|
||
$jump_url = urlencode(env('APP_URL').'/h5/#/dynamicParticulars/'.$result->id);
|
||
$key = 'L-questionDetail'.$id;
|
||
break;
|
||
case 'evaluate':
|
||
$result = MerchantEvaluate::where('id', $id)->selectRaw('id, image as pic, title, 0 as is_love_show, price,merchant_id')->first();
|
||
$jump_url = urlencode(env('APP_URL').'/pu/#/evaluateDetails/'.$result->id.'?merchant_id='.$result->merchant_id);
|
||
$key = 'L-evaluateDetail'.$id;
|
||
$url = env('APP_URL').'/api/official/live/wechat/FamilyAuth?merchant_id='.$result->merchant_id.'&url='.$jump_url;
|
||
break;
|
||
default:
|
||
return $this->failure('获取详情失败,请稍后再试!');
|
||
}
|
||
$url = $url?$url:env('APP_URL').'/api/official/live/wechat/oauth?url='.$jump_url;
|
||
if($id == 171 && $request->type == 'course') {
|
||
$qr_code = $this->getPreviewQrcode($url);
|
||
Redis::setex($key,60*60*24*30,$qr_code);
|
||
}
|
||
$qr_code = 'test';
|
||
// $qr_code = Redis::get($key);
|
||
if(!$qr_code){
|
||
$qr_code = $this->getPreviewQrcode($url);
|
||
Redis::setex($key,60*60*24*30,$qr_code);
|
||
// $qr_code = Redis::get($key);
|
||
}
|
||
// $result->qr_code = Redis::get($key);
|
||
$result->qr_code = $qr_code;
|
||
$result->share_url = $url;
|
||
return $this->success('ok', $result);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('获取详情失败,请稍后再试');
|
||
}
|
||
}
|
||
|
||
//数据分析
|
||
public function dataAnalysis(Request $request){
|
||
$type = $request->type;
|
||
$type_id = $request->type_id;
|
||
$data = [];
|
||
$watch_user_count = 0;//访问人数
|
||
$consume_user_count = 0;//消费人数
|
||
$consume_cash_amount = 0;//支付金额
|
||
$love_watch_user_count = 0;//福恋消费人数
|
||
|
||
if($type == 'course'){
|
||
$watch_user_count = Redis::zscore('coursepv',$type_id)??0;
|
||
}elseif($type == 'community'){
|
||
$watch_user_count = CommunityActivity::where('id',$type_id)->value('pv')??0;
|
||
}elseif($type == 'consult'){
|
||
$watch_user_count = Redis::zscore('consulation',$type_id)??0;
|
||
}elseif($type == 'shop'){
|
||
$watch_user_count = Redis::zscore('shop',$type_id)??0;
|
||
}elseif($type == 'information'){
|
||
$watch_user_count = Redis::zscore('information',$type_id);
|
||
$type = 'reward_info';
|
||
}
|
||
$obj = TouristOrder::where('type',$type)->where('type_id',$type_id)->whereIn('pay_status',[1,4]);
|
||
$love_obj = TouristOrder::where('type',$type)->where('type_id',$type_id)->wherein('channel',[1,2,3])->whereIn('pay_status',[1,4]);
|
||
$consume_user_count = $obj->count();
|
||
$consume_cash_amount = $obj->sum('price');
|
||
$love_consume_user_count = $love_obj->count();
|
||
$love_consume_cash_amount = $love_obj->sum('price');
|
||
$data['consume_user_count'] = $consume_user_count;
|
||
$data['consume_cash_amount'] = $consume_cash_amount;
|
||
$data['love_consume_user_count'] = $love_consume_user_count;
|
||
$data['love_consume_cash_amount'] = $love_consume_cash_amount;
|
||
$data['watch_user_count'] = $watch_user_count;
|
||
$data['love_watch_user_count'] = Redis::zscore('love_'.$type.'_pv', $type_id)?:0;
|
||
return $this->success('ok',$data);
|
||
}
|
||
|
||
// 订单数据统计
|
||
public function weekOrdersStat(Request $request){
|
||
$type_id = $request->type_id;//id
|
||
$type = $request->type;
|
||
if($type == 'information') $type = 'reward_info';
|
||
$week_consume_user_count = 0;//一周消费人数
|
||
$week_consume_cash_amount = 0;//一周支付金额
|
||
|
||
if($request->start_time && $request->end_time){
|
||
$start_time = $request->start_time;
|
||
$end_time = $request->end_time;
|
||
//间隔天数
|
||
$between_time = ceil((strtotime($end_time) - strtotime($start_time))/3600/24) + 1;
|
||
for($i=0; $i<$between_time; $i++){
|
||
$date[] = date("Y-m-d",strtotime("+$i day", strtotime($start_time)));
|
||
}
|
||
}
|
||
foreach ($date as $start_time) {
|
||
$date_arr[] = $start_time;
|
||
$start_time = $start_time.' 00:00:00';
|
||
$end_time = date("Y-m-d 23:59:59",strtotime($start_time));
|
||
$week_consume_user_count = TouristOrder::where('type',$type)->where('type_id',$type_id)->whereIn('pay_status',[1,4])->whereBetween('created_at',[$start_time,$end_time])->count();
|
||
$consume_user_count[] = $week_consume_user_count;
|
||
$love_week_consume_user_count = TouristOrder::where('type',$type)->where('type_id',$type_id)->whereIn('pay_status',[1,4])->wherein('channel',[1,2,3])->whereBetween('created_at',[$start_time,$end_time])->count();
|
||
$love_consume_user_count[] = $love_week_consume_user_count;
|
||
}
|
||
|
||
return $this->success('ok',compact('date_arr','consume_user_count','love_consume_user_count'));
|
||
}
|
||
|
||
/** 服务商服务详情 */
|
||
public function merchantService(Request $request, $id)
|
||
{
|
||
try {
|
||
$service = CommunityActivity::where(['id'=>$id, 'class'=>'many'])->first();
|
||
$service->merchant;
|
||
if ($service->banners){
|
||
$service->banners->icon = json_decode($service->banners->icon, true);
|
||
}
|
||
if($service->sku && $service->sku != 'null'){
|
||
$service->sku = json_decode($service->sku,true);
|
||
}
|
||
$service->qr_code = Redis::get('ServeDetail_L'.$id);
|
||
return $this->success('ok', $service);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('获取活动详情失败,请稍后再试');
|
||
}
|
||
}
|
||
|
||
/** 服务商课程详情 */
|
||
public function merchantCourse(Request $request, $id)
|
||
{
|
||
try {
|
||
$course = Course::find($id);
|
||
$course->account;
|
||
$jump_url = urlencode(env('APP_URL').'/h5/#/syncCourseDetail/'.$id);
|
||
$key = 'CourseDetail_L'.$id;
|
||
$url = env('APP_URL').'/api/official/live/wechat/oauth?url='.$jump_url;
|
||
// if($id == 171 && $request->type == 'course') {
|
||
// $qr_code = $this->getPreviewQrcode($url);
|
||
// Redis::setex($key,60*60*24*30,$qr_code);
|
||
// }
|
||
// $qr_code = Redis::get($key);
|
||
// if(!$qr_code){
|
||
// $qr_code = $this->getPreviewQrcode($url);
|
||
// Redis::setex($key,60*60*24*30,$qr_code);
|
||
// $qr_code = Redis::get($key);
|
||
// }
|
||
$course->qr_code = 'test';
|
||
$course->share_url = $url;
|
||
return $this->success('ok', $course);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('获取活动详情失败,请稍后再试');
|
||
}
|
||
}
|
||
|
||
/** 服务商商城列表 */
|
||
public function merchantsShops(Request $request, $merchant_id=0)
|
||
{
|
||
try {
|
||
$keyword = $request->keyword;
|
||
$is_show = $request->is_show??2;
|
||
if ($merchant_id) {
|
||
$shops = MerchantShop::with('merchant')->where('merchant_id',$merchant_id);
|
||
} else {
|
||
$shops = MerchantShop::with('merchant','anchor')->whereHas('anchor')->where('title','<>','【预售】JOHN英文原版2021品牌杂志(虚拟商品)')->where('title','<>','【原版】时尚界CEREAL设计杂志(虚拟商品)');
|
||
}
|
||
|
||
if($is_show != 2){
|
||
$shops = $shops->where('is_show',$is_show);
|
||
}
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
$m_ids = Anchor::where('name','like','%'.$keyword.'%')->pluck('m_id');
|
||
$shops = $shops->where(function($sql) use($keyword,$m_ids){
|
||
$sql->where('title','like','%'.$keyword.'%')
|
||
->orWhereIn('merchant_id',$m_ids);
|
||
});
|
||
}
|
||
$shops = $shops->orderBy('id','desc')->paginate();
|
||
foreach ($shops as $key => $value) {
|
||
# code...
|
||
$value->merchant_name = $value->anchor ? $value->anchor->name : '未获取';
|
||
unset($value->anchor);
|
||
}
|
||
return $this->success('ok', $shops);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('获取商品列表失败,请稍后再试');
|
||
}
|
||
}
|
||
|
||
/** 服务商商品详情 */
|
||
public function merchantShop(Request $request, $shop_id)
|
||
{
|
||
try {
|
||
$shop = MerchantShop::with('merchant')->find($shop_id);
|
||
$shop->sku = json_decode($shop->sku, true)?:[];
|
||
return $this->success('ok', $shop);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure("获取商品详情失败,请稍后再试");
|
||
}
|
||
}
|
||
|
||
/** 服务商测试列表 */
|
||
public function merchantTests(Request $request, $merchant_id=0)
|
||
{
|
||
try {
|
||
if ($merchant_id) {
|
||
$tests = QATest::with('merchant')->where('merchant_id',$merchant_id);
|
||
} else {
|
||
$tests = QATest::with('merchant','anchor')->whereHas('anchor');
|
||
}
|
||
$keyword = $request->input('keyword');
|
||
if ($keyword) {
|
||
$keyword = trim($keyword);
|
||
$m_ids = Anchor::where('name','like','%'.$keyword.'%')->pluck('m_id');
|
||
$tests = $tests->where(function($sql) use($keyword,$m_ids){
|
||
$sql->where('title', 'like', '%'.$keyword.'%')
|
||
->orWhereIn('merchant_id',$m_ids);
|
||
});
|
||
}
|
||
$tests = $tests->orderBy('id', 'desc')->paginate();
|
||
foreach ($tests as $test) {
|
||
$test->question = json_decode($request->question);
|
||
$test->merchant_name = $test->anchor ? $test->anchor->name : '未获取';
|
||
unset($test->anchor);
|
||
}
|
||
return $this->success("ok", $tests);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
$this->failure("获取测试列表失败,请稍后再试");
|
||
}
|
||
|
||
}
|
||
|
||
/** 服务商测试详情 */
|
||
public function merchantTest(Request $request, $test_id)
|
||
{
|
||
try {
|
||
$test = QATest::with('merchant', 'answer')->where('id', $test_id)->first();
|
||
$test->question = json_decode($test->question);
|
||
return $this->success('ok', $test);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
$this->failure("获取测试详情失败,请稍后再试");
|
||
}
|
||
}
|
||
|
||
/** 服务商是否展示福恋 */
|
||
public function showMerchantToLove(Request $request, $merchant_id)
|
||
{
|
||
try {
|
||
$merchant = MerchantAccount::find($merchant_id);
|
||
$is_love_show = $request->input('is_love_show', 0);
|
||
$merchant->is_love_show = $is_love_show;
|
||
$merchant->save();
|
||
$time = date('Y-m-d H:i:s');
|
||
MerchantInfo::updateOrCreate(['m_id'=>$merchant_id],['love_show_at'=>$time]);
|
||
return $this->success('ok');
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure("修改服务商展示福恋失败,请稍后再试");
|
||
}
|
||
}
|
||
|
||
//短视频列表
|
||
public function videoList(Request $request){
|
||
$keyword = $request->keyword;
|
||
$is_love_show = $request->is_love_show;
|
||
$videos = AnchorVideo::with('anchor')->whereHas('anchor')->select('id','title','anchor_id','m_id','cover','is_love_show','status','video_url','created_at');
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
$m_ids = Anchor::where('name','like','%'.$keyword.'%')->pluck('m_id');
|
||
$videos = $videos->where(function($sql) use($keyword,$m_ids){
|
||
$sql->where('title','like','%'.$keyword.'%')
|
||
->orWhereIn('m_id',$m_ids);
|
||
});
|
||
}
|
||
if($request->has('is_love_show')&&$is_love_show!=2){
|
||
$videos = $videos->where('is_love_show',$is_love_show);
|
||
}
|
||
$videos = $videos->orderBy('id','desc')->paginate();
|
||
foreach ($videos as $key => $video) {
|
||
$video->pv = Redis::zscore('short_videopv',$video->id)?:0;
|
||
$video->type = 'video';
|
||
$video->merchant_name = $video->anchor ? $video->anchor->name : '未获取';
|
||
unset($video->anchor);
|
||
}
|
||
return $this->success('ok',$videos);
|
||
}
|
||
|
||
//短视频详情
|
||
public function shortVideoDetail(Request $request,$video_id){
|
||
$video = AnchorVideo::where('id',$video_id)->select('id','title','anchor_id','m_id','cover','is_love_show','status','video_url','created_at')->first();
|
||
$video->pv = Redis::zscore('short_videopv',$video->id)?:0;
|
||
//点赞数
|
||
$video->liker_num = $video->likers()->count();
|
||
//评论数
|
||
$video->comment_num = $video->totalCommentsCount();
|
||
// 分享二维码
|
||
$jump_url = urlencode(env('APP_URL').'/h5/#/homeV3');
|
||
$url = env('APP_URL').'/api/official/live/wechat/oauth?url='.$jump_url;
|
||
// $qr_code = Redis::get('short_video-s-h5'.$video_id);
|
||
$qr_code = 'test';
|
||
if(!$qr_code){
|
||
$qr_code = $this->getPreviewQrcode($url);
|
||
Redis::setex('short_video-s-h5'.$video_id,60*60,$qr_code);
|
||
$qr_code = Redis::get('short_video-s-h5'.$video_id);
|
||
}
|
||
$video->share_qr_code = $qr_code;
|
||
$video->merchant_id = $video->m_id;
|
||
unset($video->m_id);
|
||
$video->share_url = $url;
|
||
$video->share_qr_code = $qr_code;
|
||
return $this->success('ok',$video);
|
||
}
|
||
|
||
//评论列表
|
||
public function videoCommentList(Request $request,$video_id){
|
||
$video = AnchorVideo::where('id',$video_id)->select('id','anchor_id','m_id','cover','video_url','created_at')->first();
|
||
$comments = $video->comments()->select('id','commentable_id','commented_id','reply_id','comment','created_at')->where('reply_id',0)->orderBy('id', 'desc')->paginate();
|
||
foreach ($comments as $key => $value) {
|
||
# code...
|
||
$merchant_user = MerchantUsers::select('nickname','pic')->where('id',$value->commented_id)->first();
|
||
$value->nickname = $merchant_user->nickname??'匿名用户';
|
||
$value->pic = $merchant_user->pic??User::DefaultAvatar;
|
||
$reply = $video->comments()->select('id','commentable_id','commented_id','reply_id','comment','created_at')->where('reply_id',$value->id)->orderBy('id', 'desc')->get();
|
||
foreach ($reply as $k => $v) {
|
||
$merchant_user = MerchantUsers::select('nickname','pic')->where('id',$v->commented_id)->first();
|
||
$v->nickname = $merchant_user->nickname??'匿名用户';
|
||
$v->pic = $merchant_user->pic??User::DefaultAvatar;
|
||
}
|
||
$value->reply = $reply;
|
||
}
|
||
return $this->success('ok',$comments);
|
||
}
|
||
|
||
// 点赞列表
|
||
public function videoLikes(Request $request,$video_id)
|
||
{
|
||
$video = AnchorVideo::select('id','title','cover')->where('id',$video_id)->first();
|
||
$comments = $video->likers()->select('id','likedable_id','created_at')->orderBy('id', 'desc')->paginate();
|
||
foreach ($comments as $key => $value) {
|
||
$user = MerchantUser::select('id','nickname','pic')->where('id',$value->likedable_id)->first();
|
||
$value->nickname = $user->nickname??'匿名用户';
|
||
$value->pic = $user->pic??User::DefaultAvatar;
|
||
}
|
||
return $this->success('ok',$comments);
|
||
}
|
||
|
||
//商户列表
|
||
public function platMerchants(Request $request){
|
||
try {
|
||
$keyword = $request->keyword;
|
||
$status = $request->status??3;
|
||
$l_status = $request->l_status??3;
|
||
$merchants = MerchantAccount::with('anchorV2','follow','info')->select('id','mobile','is_love_show','recommend','recommend_attr','email','poundage','created_at')->withCount(['information','service','activity','course','test','shop']);
|
||
$publish_status = 0;
|
||
$launch_status = 0;
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
$merchants = $merchants->whereHas('anchorV2',function($sql) use($keyword){
|
||
$sql->where('mobile','like','%'.$keyword.'%')
|
||
->orWhere('name','like','%'.$keyword.'%')
|
||
->orWhere('id',$keyword);
|
||
});
|
||
}
|
||
//获取推荐商户
|
||
if ($request->has('recommend') && $request->recommend == 1) {
|
||
$merchants = $merchants->where('recommend', 1);
|
||
}
|
||
if($request->has('channel') && $request->channel){
|
||
$merchants = $merchants->whereHas('anchorV2',function($sql) use($request){
|
||
$sql->where('channel',$request->channel);
|
||
});
|
||
}
|
||
//是否展示福恋
|
||
$is_love_show = $request->input('is_love_show');
|
||
if (is_numeric($is_love_show)) {
|
||
$merchants = $merchants->where('is_love_show', $is_love_show);
|
||
}
|
||
$follow_ids = MerchantFollow::pluck('merchant_id')->toArray();
|
||
|
||
//是否跟进筛选
|
||
$is_follow = $request->is_follow??2;
|
||
if($is_follow == 1){//已跟进
|
||
$merchants = $merchants->whereIn('id',$follow_ids);
|
||
}elseif($is_follow == 2){//未跟进
|
||
$merchants = $merchants->whereNotIn('id',$follow_ids);
|
||
}
|
||
if($status != 3){
|
||
$merchants = $merchants->whereHas('info',function($sql) use($status){
|
||
$sql->where('status',$status);
|
||
});
|
||
}
|
||
if($l_status != 3){
|
||
$merchants = $merchants->whereHas('info',function($sql) use($l_status){
|
||
$sql->where('launch_status',$l_status);
|
||
});
|
||
}
|
||
$merchants = $merchants->orderBy('id','desc')->paginate();
|
||
foreach ($merchants as $key => $merchant) {
|
||
if($merchant->member_info){
|
||
$merchant->member_info == json_decode($merchant->member_info,true);
|
||
}
|
||
if(strlen($merchant->recommend_attr) > 4) {
|
||
$merchant->recommend_attr = json_decode($merchant->recommend_attr,true);
|
||
}
|
||
$ids = ConsultAccount::where('merchant_id',$merchant->id)->pluck('id')->toArray();
|
||
$merchant->consult_count = Consultation::whereIn('consult_account_id',$ids)->count();
|
||
if($merchant->info){
|
||
$publish_status = $merchant->info->status;
|
||
$launch_status = $merchant->info->launch_status;
|
||
}
|
||
$merchant->publish_status = $publish_status;
|
||
$merchant->launch_status = $launch_status;
|
||
|
||
// $anchor = Anchor::where('m_id',$merchant->id)->first();
|
||
$merchant->avatar = User::DefaultAvatar;
|
||
$merchant->name = '匿名商户';
|
||
$merchant->from_user_name = '无推荐人';
|
||
$merchant->channel = 1;
|
||
if($merchant->anchorV2){
|
||
$merchant->avatar = $merchant->anchorV2->pic == "" ? User::DefaultAvatar : $merchant->anchorV2->pic;
|
||
$merchant->name = $merchant->anchorV2->name;
|
||
$merchant->from_user_name = Viewer::where('openid',$merchant->anchorV2->from_openid)->value('nickname');
|
||
$merchant->channel = $merchant->anchorV2->channel;
|
||
}
|
||
if(empty($merchant->mobile)) $merchant->mobile = $merchant->email;
|
||
if(!in_array($merchant->id,$follow_ids)){
|
||
$merchant->status = '未跟进';
|
||
}elseif($merchant->follow->status == 'following'){
|
||
$merchant->status = '跟进中';
|
||
}else{
|
||
$merchant->status = '完成跟进';
|
||
}
|
||
unset($merchant->follow);
|
||
}
|
||
return $this->success('ok',$merchants);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure("获取商家列表失败,请稍后再试");
|
||
}
|
||
}
|
||
|
||
//福恋推荐商家列表
|
||
public function loveShowMerchants(Request $request){
|
||
try {
|
||
$keyword = $request->keyword;
|
||
$status = $request->status??3;
|
||
$l_status = $request->l_status??3;
|
||
$publish_status = 0;
|
||
$launch_status = 0;
|
||
$merchants = MerchantAccount::with('anchorV2','follow','info')->where('is_love_show',1)->select('id','mobile','alipay_account','alipay_real_name','openid','email','member_info','is_love_show','created_at','updated_at')->withCount(['information','service','activity','course','test','shop']);
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
$merchants = $merchants->whereHas('anchorV2',function($sql) use($keyword){
|
||
$sql->where('mobile','like','%'.$keyword.'%')
|
||
->orWhere('name','like','%'.$keyword.'%')
|
||
->orWhere('id',$keyword);
|
||
});
|
||
}
|
||
$follow_ids = MerchantFollow::pluck('merchant_id')->toArray();
|
||
|
||
//是否跟进筛选
|
||
$is_follow = $request->is_follow??2;
|
||
if($is_follow == 1){//已跟进
|
||
$merchants = $merchants->whereIn('id',$follow_ids);
|
||
}elseif($is_follow == 2){//未跟进
|
||
$merchants = $merchants->whereNotIn('id',$follow_ids);
|
||
}
|
||
if($status != 3){
|
||
$merchants = $merchants->whereHas('info',function($sql) use($status){
|
||
$sql->where('status',$status);
|
||
});
|
||
}
|
||
if($l_status != 3){
|
||
$merchants = $merchants->whereHas('info',function($sql) use($l_status){
|
||
$sql->where('launch_status',$l_status);
|
||
});
|
||
}
|
||
if($request->has('channel') && $request->channel){
|
||
$merchants = $merchants->whereHas('anchorV2',function($sql) use($request){
|
||
$sql->where('channel',$request->channel);
|
||
});
|
||
}
|
||
$orderby_at = MerchantInfo::orderBy('love_show_at','desc')->pluck('m_id')->toArray();
|
||
$orderby = implode(',', $orderby_at);
|
||
$merchants = $merchants->orderByRaw(DB::raw("FIELD(id, $orderby) asc"))->orderBy('id','desc')->paginate();
|
||
foreach ($merchants as $key => $merchant) {
|
||
if($merchant->member_info){
|
||
$merchant->member_info == json_decode($merchant->member_info,true);
|
||
}
|
||
$ids = ConsultAccount::where('merchant_id',$merchant->id)->pluck('id')->toArray();
|
||
$merchant->consult_count = Consultation::whereIn('consult_account_id',$ids)->count();
|
||
if($merchant->info){
|
||
$publish_status = $merchant->info->status;
|
||
$launch_status = $merchant->info->launch_status;
|
||
}
|
||
$merchant->publish_status = $publish_status;
|
||
$merchant->launch_status = $launch_status;
|
||
|
||
// $anchor = Anchor::where('m_id',$merchant->id)->first();
|
||
$merchant->avatar = User::DefaultAvatar;
|
||
$merchant->name = '匿名商户';
|
||
$merchant->from_user_name = '无推荐人';
|
||
$merchant->channel = 1;
|
||
if($merchant->anchorV2){
|
||
$merchant->avatar = $merchant->anchorV2->pic == "" ? User::DefaultAvatar : $merchant->anchorV2->pic;
|
||
$merchant->name = $merchant->anchorV2->name;
|
||
$merchant->from_user_name = Viewer::where('openid',$merchant->anchorV2->from_openid)->value('nickname');
|
||
$merchant->channel = $merchant->anchorV2->channel;
|
||
}
|
||
if(empty($merchant->mobile)) $merchant->mobile = $merchant->email;
|
||
if(!in_array($merchant->id,$follow_ids)){
|
||
$merchant->status = '未跟进';
|
||
}elseif($merchant->follow->status == 'following'){
|
||
$merchant->status = '跟进中';
|
||
}else{
|
||
$merchant->status = '完成跟进';
|
||
}
|
||
unset($merchant->follow);
|
||
}
|
||
return $this->success('ok',$merchants);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure("获取商家列表失败,请稍后再试");
|
||
}
|
||
}
|
||
|
||
// 婚姻使者列表
|
||
|
||
public function marriageMessengers(Request $request)
|
||
{
|
||
$keyword = $request->keyword;
|
||
$check_status = $request->check_status??0;
|
||
if($request->has('check_status')){
|
||
$result = MarriageMessenger::where('check_status',$check_status)->orderBy('id','desc');;
|
||
}else{
|
||
$result = MarriageMessenger::orderBy('id','desc');
|
||
}
|
||
if($keyword&&$request->has('keyword')){
|
||
$result = $result->where(function($query) use ($keyword){
|
||
$query->where('name', 'like', '%'.$keyword.'%')
|
||
->orWhere('nickname', 'like', '%'.$keyword.'%');
|
||
});
|
||
}
|
||
$result = $result->paginate();
|
||
foreach ($result as $key => $value) {
|
||
$value->reason = json_decode($value->reason,true);
|
||
$Anchor = Anchor::where('m_id',$value->m_id)->first();
|
||
$value->pic = $Anchor->pic??User::DefaultAvatar;
|
||
$value->mobile = $Anchor->mobile??'';
|
||
|
||
unset($value->merchant);
|
||
}
|
||
return $this->success('ok',$result);
|
||
|
||
}
|
||
// 更新婚姻使者状态
|
||
public function changeMarriageMessengers(Request $request)
|
||
{
|
||
$ids = $request->ids;
|
||
$check_status = $request->check_status;
|
||
$belief = $request->belief;
|
||
if($request->has('check_status')&&!empty($check_status))
|
||
MarriageMessenger::wherein('id',$ids)->update(['check_status'=>$check_status]);
|
||
if($request->has('belief')&&!empty($belief))
|
||
MarriageMessenger::wherein('id',$ids)->update(['belief'=>$belief]);
|
||
|
||
return $this->success('ok');
|
||
|
||
}
|
||
|
||
//设置商家发布状态
|
||
public function updateMerchantStatus(Request $request,$merchant_id){
|
||
$status = $request->status;
|
||
$type = $request->type ?? 'publish';
|
||
if($type == 'publish'){
|
||
MerchantInfo::updateOrCreate(['m_id'=>$merchant_id],['status'=>$status]);
|
||
}else{
|
||
MerchantInfo::updateOrCreate(['m_id'=>$merchant_id],['launch_status'=>$status]);
|
||
}
|
||
return $this->success('ok');
|
||
}
|
||
|
||
//企业入驻列表
|
||
public function enterprises(Request $request){
|
||
try {
|
||
$keyword = $request->keyword;
|
||
$check_status = $request->check_status??2;
|
||
$enters = EnterpriseSettlement::orderBy('id','desc');
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
$enters = $enters->where(function($sql) use($keyword){
|
||
$sql->where('name','like','%'.$keyword.'%')
|
||
->orWhere('mobile','like','%'.$keyword.'%');
|
||
});
|
||
}
|
||
if($check_status != 2){
|
||
$enters = $enters->where('check_status',$check_status);
|
||
}
|
||
$enters = $enters->paginate();
|
||
return $this->success('ok',$enters);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('获取企业入驻列表失败,请稍后再试');
|
||
}
|
||
|
||
}
|
||
//更新企业入驻状态
|
||
public function changeEnterpriseStatus(Request $request){
|
||
$ids = $request->ids;
|
||
$check_status = $request->check_status;
|
||
EnterpriseSettlement::whereIn('id',$ids)->update(['check_status'=>$check_status]);
|
||
return $this->success('ok');
|
||
}
|
||
//删除商户
|
||
public function deleteMerchant(Request $request , $merchant_id){
|
||
$merchant = MerchantAccount::find($merchant_id);
|
||
$anchor = Anchor::where('m_id',$merchant->id)->first();
|
||
$merchant->delete();
|
||
$anchor->delete();
|
||
return $this->success('ok');
|
||
}
|
||
|
||
//商户详情
|
||
public function merchantDetail(Request $request,$id){
|
||
try {
|
||
$type = $request->type ?? 'merchant';
|
||
$used_withdraw_total = 0;//已提现金额
|
||
$can_cash_out_amount = 0;//可提现收益
|
||
$can_withdraw_total = 0; //总收益
|
||
if($type == 'merchant'){//商户详情
|
||
$account = MerchantAccount::where('id',$id)->first();
|
||
if(empty($account)) return $this->failure('该商户不存在或已被删除');
|
||
$anchor = Anchor::where('m_id',$account->id)->first();
|
||
$account->name = '匿名商户';
|
||
$account->avatar = User::DefaultAvatar;
|
||
if($anchor){
|
||
$anchor->pic = $anchor->pic == '' ? User::DefaultAvatar : $anchor->pic;
|
||
$account->name = $anchor->name;
|
||
}
|
||
$MEarningAccount = MEarningAccount::where('m_id',$id)->where('m_user_id',0)->first();
|
||
//可提现金额
|
||
if($MEarningAccount){
|
||
$can_cash_out_amount = $MEarningAccount->balance;
|
||
$can_withdraw_total = $MEarningAccount->total_value;
|
||
$used_withdraw_total = $MEarningAccount->withdrawl??0;
|
||
}
|
||
$jump_url = urlencode(env('APP_URL').'/pu/#/');
|
||
// $u = urlencode('anchor_openid='.$openid.'&url=http://love.ufutx.cn/pu/#/');
|
||
$url = env('APP_URL').'/api/official/live/wechat/FamilyAuth?merchant_id='.$id.'&url='.$jump_url;
|
||
// $qr_codes = Redis::get('HomePage_S'.$id);
|
||
$qr_codes = 'test';
|
||
if(!$qr_codes){
|
||
$qr_code = $this->getPreviewQrcode($url);
|
||
Redis::setex('HomePage_S'.$id,60*60*24*30,$qr_code);
|
||
$qr_codes = Redis::get('HomePage_S'.$id);
|
||
}
|
||
$share_url = env('APP_URL').'/api/official/live/wechat/FamilyAuth?merchant_id='.$request->id.'&url='.$jump_url;
|
||
if(empty($anchor->mobile)) $anchor->mobile = $account->email;
|
||
return $this->success('ok',compact('can_cash_out_amount','can_withdraw_total','used_withdraw_total','account','anchor','qr_codes','share_url'));
|
||
}elseif($type == 'merchant_user'){//saas 用户
|
||
$user = MerchantUser::where('id',$id)->select('id','mobile','pic','nickname')->first();
|
||
if(empty($user)) return $this->failure('该用户不存在或已被删除');
|
||
if(!$user->pic) $user->pic = User::DefaultAvatar;
|
||
if(!$user->nickname) $user->nickname = '匿名用户';
|
||
$can_cash_out_amount = MEarningAccount::where('m_user_id',$id)->sum('balance');
|
||
$can_withdraw_total = MEarningAccount::where('m_user_id',$id)->sum('total_value');
|
||
$used_withdraw_total = MEarningAccount::where('m_user_id',$id)->sum('withdrawl');
|
||
return $this->success('ok',compact('can_cash_out_amount','can_withdraw_total','used_withdraw_total','user'));
|
||
}else{//福恋h5用户
|
||
$user = User::where('id',$id)->select('id','circle_avatar','app_avatar','photo','nickname','mobile')->first();
|
||
if(empty($user)) return $this->failure('该用户不存在或已被删除');
|
||
if(!$user->circle_avatar) $user->circle_avatar = User::DefaultAvatar;
|
||
if(!$user->nickname) $user->nickname = '匿名用户';
|
||
$earning_account = EarningAccount::where('user_id',$id)->first();
|
||
if($earning_account){
|
||
$can_cash_out_amount = $earning_account->balance;
|
||
$can_withdraw_total = $earning_account->total_value;
|
||
$used_withdraw_total = $earning_account->withdrawl??0;
|
||
}
|
||
// $user->pic = $user->avatar;
|
||
$user->pic = !empty($user->app_avatar) ? $user->app_avatar : $user->photo;
|
||
unset($user->photo);
|
||
return $this->success('ok',compact('can_cash_out_amount','can_withdraw_total','used_withdraw_total','user'));
|
||
}
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('获取商户详情失败'.$e->getMessage());
|
||
}
|
||
}
|
||
|
||
//添加服务商跟进记录
|
||
public function addFollowRecord(Request $request,$merchant_id){
|
||
$way = $request->way;
|
||
if(!$way) return $this->failure('请填写跟进方式');
|
||
$content = $request->input('content');
|
||
if(!$content) return $this->failure('请填写跟进内容');
|
||
$result = $request->result;
|
||
if(!$result) return $this->failure('请填写跟进结果');
|
||
$status = $request->status ?? 'following';
|
||
$follow = new MerchantFollow();
|
||
$follow->merchant_id = $merchant_id;
|
||
$follow->operater = auth()->id();
|
||
$follow->status = $status;
|
||
$follow->way = $way;
|
||
$follow->content = $content;
|
||
$follow->result = $result;
|
||
$follow->save();
|
||
return $this->success('ok');
|
||
}
|
||
|
||
//已推荐福恋商家同步merchant_info
|
||
public function synMerchantInfo(){
|
||
$merchant_ids = MerchantAccount::pluck('id')->toArray();
|
||
$has_merchant_ids = MerchantInfo::pluck('m_id')->toArray();
|
||
$merchant_ids = array_diff($merchant_ids,$has_merchant_ids);
|
||
$insert = [];
|
||
foreach ($merchant_ids as $key => $m_id) {
|
||
$arr = [
|
||
'm_id'=>$m_id,
|
||
'created_at'=>date('Y-m-d H:i:s'),
|
||
'updated_at'=>date('Y-m-d H:i:s'),
|
||
];
|
||
$insert []=$arr;
|
||
}
|
||
MerchantInfo::insert($insert);
|
||
return $this->success('ok');
|
||
}
|
||
|
||
//单个服务商记录列表
|
||
public function merchantRecords(Request $request,$merchant_id){
|
||
$follows = MerchantFollow::with('operater')->where('merchant_id',$merchant_id)->orderBy('id','desc')->paginate();
|
||
return $this->success('ok',$follows);
|
||
}
|
||
|
||
// 问答测试成员列表
|
||
public function QA_testUser(Request $request,$id)
|
||
{
|
||
$merchant_id = $request->account_id;
|
||
|
||
$ids = QATestRecord::where('q_a_test_id',$id);
|
||
if($merchant_id){
|
||
$ids = $ids->where('merchant_id',$merchant_id);
|
||
}
|
||
$ids = $ids->groupBy('merchant_user_id')->pluck('merchant_user_id');
|
||
$QATest = QATestRecord::select('id','merchant_user_id','q_a_test_id','score','q_a_answer_id','created_at')
|
||
->where('q_a_test_id',$id)
|
||
->where('merchant_id',$merchant_id)
|
||
->wherein('merchant_user_id',$ids)
|
||
->orderBy('id','desc')
|
||
->paginate();
|
||
foreach ($QATest as $key => $value) {
|
||
$value->nickname = $value->user->nickname??'匿名用户';
|
||
$value->pic = $value->user->pic??User::DefaultAvatar;
|
||
$value->title = $value->answer->title??'该测试不存在或已下架';
|
||
$value->content = $value->answer->content??null;
|
||
unset( $value->answer);
|
||
unset($value->user);
|
||
}
|
||
return $this->success('ok',$QATest);
|
||
}
|
||
|
||
//商户推荐操作
|
||
public function recommendMerchant(Request $request,$merchant_id)
|
||
{
|
||
try {
|
||
$merchant = MerchantAccount::find($merchant_id);
|
||
|
||
if($request->has('recommend') && $request->recommend == 1) {
|
||
$merchant->recommend = $request->recommend;
|
||
$data = [
|
||
'banner' => $request->banner,
|
||
'service' => $request->service,
|
||
];
|
||
$merchant->recommend_attr = json_encode($data);
|
||
} elseif($request->has('recommend') && $request->recommend == 0 && $merchant->recommend == 1) {
|
||
$merchant->recommend = $request->recommend;
|
||
} else {
|
||
return $this->success('已操作成功');
|
||
}
|
||
DB::beginTransaction();
|
||
$merchant->save();
|
||
DB::commit();
|
||
return $this->success('ok');
|
||
} catch (\Exception $e) {
|
||
DB::rollBack();
|
||
\Log::info($e->getMessage());
|
||
return $this->failure('操作失败');
|
||
}
|
||
|
||
}
|
||
|
||
public function getRecommendMerchant(Request $request,$merchant_id)
|
||
{
|
||
$merchant = MerchantAccount::with('anchorV2')->select('id','is_love_show','recommend','recommend_attr')->find($merchant_id);
|
||
if(!$merchant) {
|
||
return $this->failure('商户不存在');
|
||
} else {
|
||
$merchant->recommend_attr = json_decode($merchant->recommend_attr);
|
||
return $this->success('ok',$merchant);
|
||
}
|
||
}
|
||
|
||
//文章 活动打赏列表
|
||
public function payRewardDetail(Request $request){
|
||
$merchant_id = $request->merchant_id;
|
||
$type = $request->type ?? 'reward_info';
|
||
$type_id = $request->type_id;
|
||
$keyword = $request->keyword;
|
||
$result = TouristOrder::with('merUser')
|
||
->where('merchant_id',$merchant_id)
|
||
->whereIn('pay_status',[1,4])
|
||
->where('type',$type)
|
||
->where('type_id',$type_id);
|
||
if($keyword){
|
||
$result = $result->whereHas('user', function ($query) use($keyword) {
|
||
$query->where('nickname', 'like', '%'.$keyword.'%');
|
||
})
|
||
->orWhereHas('information', function ($query) use($keyword,$merchant_id) {
|
||
$query->where('merchant_id', $merchant_id);
|
||
$query->where('title', 'like', '%'.$keyword.'%');
|
||
});
|
||
}
|
||
$result = $result->orderBy('id','desc')->paginate();
|
||
foreach ($result as $key => $value) {
|
||
// return $value->information;
|
||
# code...
|
||
if(isset($value['merUser']['pic']) && $value['merUser']['pic'] == null) {
|
||
$value['merUser']['pic'] = User::DefaultAvatar;
|
||
}
|
||
if(isset($value['merUser']['nickname']) && $value['merUser']['nickname'] == null) {
|
||
$value['merUser']['nickname'] = '未获取';
|
||
}
|
||
$value->name = $value->user->nickname??'未获取';
|
||
if($value->type=='reward_info'){
|
||
$value->title = $value->information->title??'';
|
||
$value->pic = $value->information->pic??'';
|
||
}elseif($value->type=='reward_activity'){
|
||
$activity = CommunityActivity::select('id','title','pic')->where('id',$value->type_id)->first();
|
||
$value->title = $activity->title??'';
|
||
$value->pic = $activity->pic??'';
|
||
}
|
||
|
||
unset($value->user);
|
||
unset($value->information);
|
||
}
|
||
return $this->success('ok',$result);
|
||
}
|
||
|
||
//活动或服务 报名成员
|
||
public function platJoinMembers(Request $request){
|
||
try {
|
||
$consulator_id = $request->consulator_id;
|
||
$keyword = $request->keyword;
|
||
// $pay_status = $request->pay_status??2;
|
||
$members = TouristOrder::with('merUser')->whereIn('pay_status',[1,4])->where('type','community')->where('type_id',$consulator_id)->orderBy('id','desc');
|
||
// if($pay_status != 2){
|
||
// $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();
|
||
// foreach ($members as $key => $value) {
|
||
//// if($value->mobile == '匿名用户' || $value->mobile == '未获取') {
|
||
//// $value->mobile = null;
|
||
//// }
|
||
// if($value['merUser'] != null && $value['merUser']['pic'] == null) {
|
||
// $value['merUser']['pic'] = User::DefaultAvatar;
|
||
// }
|
||
// if($value['merUser'] != null && $value['merUser']['nickname'] == null) {
|
||
// $value['merUser']['nickname'] = '未获取';
|
||
// }
|
||
// $value->merchant_user = $value['merUser'];
|
||
//
|
||
// $value->user_pic = $value->user->pic??User::DefaultAvatar;
|
||
// $value->insurance_info = json_decode( $value->insurance_info,true);
|
||
//
|
||
// if($value->linkmen) {
|
||
// $value->linkmen = json_decode( $value->linkmen,true);
|
||
// if($value->mobile=='未获取'){
|
||
// $value->mobile = $value->linkmen[0]['mobile'];
|
||
// }
|
||
// if($value->name=='未获取'){
|
||
// $value->name = $value->linkmen[0]['name'];
|
||
// }
|
||
// }
|
||
// unset($value->user);
|
||
// }
|
||
foreach ($members as $member) {
|
||
//$member->merchant_user = $member->merUser;
|
||
if($member->channel=='福恋小程序'){
|
||
$wechat = Wechat::where('openid',$member->open_id)->first();
|
||
if($wechat){
|
||
$user = User::where('id',$wechat->user_id)->first();
|
||
if($user){
|
||
$userinfo['nickname'] = $user->nickname;
|
||
$userinfo['pic'] = $user->photo?:($user->circle_avatar?:User::DefaultAvatar);
|
||
$member->merchant_user = $userinfo;
|
||
$member->user_id = $user->id;
|
||
} else {
|
||
$member->user_id = 0;
|
||
}
|
||
} else {
|
||
$member->merchant_user = $member->merUser;
|
||
$member->user_id = 0;
|
||
}
|
||
|
||
}else{
|
||
$rand_str = $this->randString(8);
|
||
$nickname = '用户'.$rand_str;
|
||
|
||
if(!$member->merUser) {
|
||
$userinfo['nickname'] = $nickname;
|
||
$userinfo['pic'] = User::DefaultAvatar;
|
||
$member->merchant_user = $userinfo;
|
||
$member->user_id = 0;
|
||
} else {
|
||
$member->user_id = $member->merUser['user_id'];
|
||
}
|
||
if($member->merUser && !$member->merUser['pic']) {
|
||
$member->merUser['pic'] = User::DefaultAvatar;
|
||
$member->merchant_user = $member->merUser;
|
||
} else {
|
||
$member->merchant_user = $member->merUser;
|
||
}
|
||
}
|
||
$member->linkmen = json_decode($member->linkmen,true);
|
||
$member->insurance_info = json_decode($member->insurance_info);
|
||
if($member->linkmen){
|
||
//$member->linkmen = json_decode( $member->linkmen,true);
|
||
if($member->mobile=='未获取'){
|
||
$member->mobile = $member->linkmen[0]['mobile'];
|
||
}
|
||
if($member->name=='未获取'){
|
||
$member->name = $member->linkmen[0]['name'];
|
||
}
|
||
}
|
||
}
|
||
$members = $members->toArray();
|
||
$members['enroll_num'] = TouristOrder::selectRaw('JSON_LENGTH(linkmen) as num')
|
||
->whereIn('pay_status',[1,4])
|
||
->where('type','community')
|
||
->where('type_id',$consulator_id)
|
||
->sum('num');
|
||
return $this->success('ok',$members);
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('操作失败');
|
||
}
|
||
}
|
||
|
||
//课程成员
|
||
public function platCourseMembers(Request $request,$course_id){
|
||
$keyword = $request->keyword;
|
||
// $status = $request->pay_status??2;
|
||
$users = UserCourses::with('s_member')->where('status',1)->where('course_id',$course_id)->orderBy('id','desc');
|
||
// if($status != 2){
|
||
// $users = $users->where('status',$status);
|
||
// }
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
$users = $users->whereHas('s_member',function($sql) use($keyword){
|
||
$sql->where('mobile','like','%'.$keyword.'%')->orWhere('nickname','like','%'.$keyword.'%');
|
||
});
|
||
}
|
||
$users = $users->orderBy('id','desc')->paginate();
|
||
//return $this->success('ok',$users);
|
||
foreach ($users as &$user) {
|
||
if($user->s_member == null) {
|
||
$arr = [
|
||
'pic' => User::DefaultAvatar,
|
||
'nickname' => '未获取',
|
||
];
|
||
$user->s_member = $arr;
|
||
} else {
|
||
if($user['s_member']['pic'] == null) {
|
||
$user['s_member']['pic'] = User::DefaultAvatar;
|
||
}
|
||
if($user['s_member']['nickname'] == null) {
|
||
$user['s_member']['nickname'] = '未获取';
|
||
}
|
||
}
|
||
$user->merchant_user = $user->s_member;
|
||
$trade_no = $user['trade_no'];
|
||
$toursit_order = TouristOrder::where('trade_no',$trade_no)->first();
|
||
$user->price = isset($toursit_order->price) ? $toursit_order->price : 0;
|
||
if($toursit_order) {
|
||
$linkmen = json_decode($toursit_order->linkmen,true);
|
||
$user['buyer'] = [
|
||
'name' => $toursit_order->name ?: $linkmen['name'],
|
||
'area_code' => $toursit_order->area_code,
|
||
'mobile' => ($toursit_order->mobile == '匿名用户' || $toursit_order->mobile == '未获取') ? $linkmen['mobile'] : $toursit_order->mobile,
|
||
];
|
||
} else {
|
||
$user['buyer'] = [];
|
||
}
|
||
}
|
||
return $this->success('ok',$users);
|
||
}
|
||
|
||
//咨询报名成员
|
||
public function consultOrders(Request $request){
|
||
$merchant_id = $request->merchant_id;
|
||
$status = $request->status??3;
|
||
// $pay_status = $request->pay_status??2;
|
||
$keyword = $request->keyword;
|
||
$comment = $request->comment;
|
||
$nopage = $request->nopage??1;
|
||
$records = ConsultationRecords::with('consulation','consulation.teacher')->where('pay_status',1)->where('merchant_id',$merchant_id);
|
||
$consulation_id = $request->consulation_id;
|
||
if($status != 3){
|
||
$records = $records->where('status',$status);
|
||
}
|
||
// if($pay_status != 2){
|
||
// $records = $records->where('pay_status',$pay_status);
|
||
// }
|
||
if($comment == 'comment'){
|
||
$records = $records->whereNotNull('comment')->where('comment','<>','');
|
||
}
|
||
if($consulation_id){
|
||
$records = $records->where('consulation_id',$consulation_id);
|
||
}
|
||
if ($keyword) {
|
||
$keyword = trim($keyword);
|
||
$records = $records->where(function($sql) use($keyword){
|
||
$sql->where('name','like','%'.$keyword.'%')->orWhere('phone','like','%'.$keyword.'%');
|
||
});
|
||
}
|
||
$paid_count = $records->sum('price');
|
||
if($nopage){
|
||
$records = $records->orderBy('id','desc')->paginate();
|
||
}else{
|
||
$records = $records->orderBy('id','desc')->get();
|
||
}
|
||
|
||
foreach ($records as $value) {
|
||
if($value->phone == '匿名用户' || $value->phone == '未获取') {
|
||
$value->phone = null;
|
||
}
|
||
$value->channel = TouristOrder::where('trade_no',$value->trade_no)->value('channel');
|
||
$merchant_user = MerchantUsers::where('id',$value->merchant_user_id)->select('openid','pic','mobile','sex','nickname')->first();
|
||
$value->openid = $merchant_user ? ($merchant_user->openid ?: '') : '';
|
||
$value->mer_user = $merchant_user;
|
||
if($value['mer_user'] != null && $value['mer_user']['pic'] == null) {
|
||
$value['mer_user']['pic'] = User::DefaultAvatar;
|
||
}
|
||
if($value['mer_user'] != null && $value['mer_user']['nickname'] == null) {
|
||
$value['mer_user']['nickname'] = '未获取';
|
||
}
|
||
$value->teacher_name = '未获取';
|
||
if(isset($value->consulation->teacher)){
|
||
$value->teacher_name = $value->consulation->teacher->name ;
|
||
}
|
||
$value->title = Consultation::where('id',$value->consulation_id)->value('title');
|
||
if(!empty($value->remark) && $value->remark != 'null') $value->remark = json_decode($value->remark,true);
|
||
unset($value->consulation);
|
||
$value->paid_count = $paid_count;
|
||
}
|
||
return $this->success('ok',$records);
|
||
}
|
||
|
||
public function paidShopMember(Request $request,$id){
|
||
$keyword = $request->keyword;
|
||
$merchant_id = $request->merchant_id;
|
||
$orders = TouristOrder::with('merUser')->where('merchant_id',$merchant_id)->whereIn('pay_status',[1,4])->where('type','shop')->where('type_id',$id);
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
$orders = $orders->where(function($sql) use($keyword){
|
||
$sql->where('name','like','%'.$keyword.'%')
|
||
->orWhere('mobile','like','%'.$keyword.'%');
|
||
});
|
||
}
|
||
$orders = $orders->orderBy('id','desc')->paginate();
|
||
foreach ($orders as $key => $order) {
|
||
if($order->mobile == '匿名用户' || $order->mobile == '未获取') {
|
||
$order->mobile = null;
|
||
}
|
||
if($order['merUser'] != null && $order['merUser']['pic'] == null) {
|
||
$order['merUser']['pic'] = User::DefaultAvatar;
|
||
}
|
||
if($order['merUser'] != null && $order['merUser']['nickname'] == null) {
|
||
$order['merUser']['nickname'] = '未获取';
|
||
}
|
||
$user = MerchantUser::where('id',$order->account_id)->first();
|
||
$order->pay_user_name = $user->nickname??'匿名用户';
|
||
$order->pay_mobile = $user->mobile??'未获取';
|
||
$order->pay_avatar = $user->pic??User::DefaultAvatar;
|
||
}
|
||
return $this->success('ok',$orders);
|
||
}
|
||
|
||
//活动 服务在小程序或者h5置顶
|
||
public function systemTopActivity(Request $request,$id){
|
||
try {
|
||
$activity = CommunityActivity::where('id',$id)->first();
|
||
if(!$activity) return $this->failure('该服务不存在或已下架');
|
||
$type = $activity->class == 'one' ? '活动' : '服务';
|
||
if($request->has('mp_top')){
|
||
if($request->mp_top == 1){ //小程序置顶
|
||
//获取置顶最大sort
|
||
$sorts = CommunityActivity::where('mp_top',1)->pluck('sort')->toArray();
|
||
$max_sort = empty($sorts) ? 1 : max($sorts);
|
||
if($activity->is_mp_show != 1) return $this->failure('请先将该'.$type.'同步到小程序');
|
||
$activity->update(['mp_top'=>$request->mp_top,'sort'=>$max_sort+1]);
|
||
}else{//取消小程序置顶
|
||
$activity->update(['mp_top'=>$request->mp_top,'sort'=>0]);
|
||
}
|
||
}
|
||
if($request->has('h5_top')){
|
||
if($request->h5_top == 1){//h5置顶
|
||
//获取置顶最大sort
|
||
$sorts = CommunityActivity::where('h5_top',1)->pluck('sort')->toArray();
|
||
$max_sort = empty($sorts) ? 1 : max($sorts);
|
||
if($activity->is_love_show != 1) return $this->failure('请先将该'.$type.'同步到h5');
|
||
$activity->update(['h5_top'=>$request->h5_top,'sort'=>$max_sort+1]);
|
||
}else{//取消h5置顶
|
||
$activity->update(['h5_top'=>$request->h5_top,'sort'=>0]);
|
||
}
|
||
}
|
||
return $this->success('ok');
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('服务器休息,请稍后再试');
|
||
}
|
||
}
|
||
|
||
//商户订单数 营业额
|
||
public function merchantStat(Request $request){
|
||
try {
|
||
if($request->start_time && $request->end_time){
|
||
$start_time = $request->start_time;
|
||
$end_time = $request->end_time;
|
||
//间隔天数
|
||
$between_time = ceil((strtotime($end_time) - strtotime($start_time))/3600/24) + 1;
|
||
for($i=0; $i<$between_time; $i++){
|
||
$date[] = date("Y-m-d",strtotime("+$i day", strtotime($start_time)));
|
||
}
|
||
} else {
|
||
return $this->failure('请选择开始和结束时间');
|
||
}
|
||
foreach ($date as $start_time) {
|
||
$date_arr[] = $start_time;
|
||
$start_time = $start_time.' 00:00:00';
|
||
$end_time = date("Y-m-d 23:59:59",strtotime($start_time));
|
||
//订单数
|
||
$order_count[] = TouristOrder::where('merchant_id',$request->account_id)->whereIn('pay_status',[1,4])->whereBetween('created_at',[$start_time,$end_time])->count();
|
||
|
||
// 成交金额
|
||
$deal_money[] = floatval(TouristOrder::where('merchant_id',$request->account_id)->whereIn('pay_status',[1,4])->whereBetween('created_at',[$start_time,$end_time])->sum('price'));
|
||
}
|
||
return $this->success('ok',compact('date_arr','order_count','deal_money'));
|
||
} catch (\Exception $e) {
|
||
Log::error($e->getMessage());
|
||
return $this->failure('数据错误,请稍后重试');
|
||
}
|
||
|
||
}
|
||
|
||
//对单个商家设置提现手续费
|
||
public function setMerchantPoundage(Request $request){
|
||
try {
|
||
$merchant_id = $request->merchant_id;
|
||
$poundage = $request->poundage ?? 1;//百分制
|
||
if($poundage >= 100 || $poundage <= 0 || !is_numeric($poundage)){
|
||
return $this->failure('请输入有效的提现所收取的手续费百分比');
|
||
}
|
||
$merchant = MerchantAccount::find($merchant_id);
|
||
$anchor = Anchor::where('m_id',$merchant_id)->first();
|
||
if(empty($merchant) || empty($anchor)) throw new \Exception('商家信息有误 商户id:'.$merchant_id);
|
||
$merchant->poundage = $poundage;
|
||
//同步一条商户备注
|
||
MerchantFollow::create([
|
||
'merchant_id'=>$request->merchant_id,
|
||
'operater'=>auth()->id(),
|
||
'status'=>'following',
|
||
'way'=>'后台',
|
||
'content'=>'修改商家提现手续费',
|
||
'result'=>'修改商家提现手续费为百分之'.$poundage,
|
||
]);
|
||
$merchant->save();
|
||
return $this->success('ok');
|
||
} catch (\Exception $e) {
|
||
$this->getError($e);
|
||
return $this->failure('商家信息有误');
|
||
}
|
||
}
|
||
|
||
public function evaluate(Request $request, $id)
|
||
{
|
||
try {
|
||
$evaluate = MerchantEvaluate::with('evaluateList')->where('id', $id)->first();
|
||
$evaluateList = $evaluate->evaluateList;
|
||
$evaluateList->notes = EvaluateDetail::where('test_item_id', $evaluateList->test_item_id)->value('notes');
|
||
$evaluateList->status = $evaluate->status;
|
||
return $this->success('ok', $evaluateList);
|
||
}catch (\Exception $e) {
|
||
$this->getError($e);
|
||
$this->failure();
|
||
}
|
||
}
|
||
}
|