love_php/app/Http/Controllers/Admin/CommunityController.php
2026-04-02 09:20:51 +08:00

927 lines
36 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Models\Live\Messenger;
use App\Models\ProfileCourtship;
use App\Models\CommunityGroupAdmin;
use App\Models\CommunityStar;
use App\Models\Live\Viewer;
use App\Utils\Str;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Community;
use App\Models\CommunityMember;
use App\Models\CommunityGroup;
use App\Models\CommunityGroupLink;
use App\Models\CommunityComplaintHistory;
use App\Models\User;
use App\Models\CommunityMoment;
use App\Models\CommunityMomentComplaint;
use App\Models\PaasCommunity;
use App\Models\CommunityTopic;
use App\Http\Response\ResponseJson;
use Illuminate\Support\Facades\DB;
class CommunityController extends Controller
{
use ResponseJson;
/**
* 社群列表
* @param Request $request [description]
* @param Community $community [description]
* @return [type] [description]
*/
public function communities(Request $request, Community $community)
{
$communities = $community->with('user')->orderBy('id', 'desc');
$keyword = $request->input('keyword');
if ($keyword) {
$keyword = trim($keyword);
$communities = $communities->where('title', 'like', '%'.$keyword.'%');
}
$admin_type = $request->session()->get('admin_type');
if ($admin_type == 'paas_admin') {
$paas_obj = $request->session()->get('paas_obj');
$paas_community_ids = $community->paasCommunityIds($paas_obj->id);
$communities = $communities->whereIn("id", $paas_community_ids);
}
if(is_numeric($request->is_hot)){
$communities = $communities->where('is_hot', $request->is_hot);
}
$communities = $communities->paginate();
foreach ($communities as $community){
if(!empty($community->user)){
$community->user->avatar = $community->user->userAvatar();
}
}
return $this->success('ok', $communities);
}
/**
* 社群详情
* @param Request $request [description]
* @param Community $community [description]
* @return [type] [description]
*/
public function community(Request $request, Community $community, CommunityGroupLink $link, CommunityGroup $group)
{
$admin_type = $request->session()->get('admin_type');
if ($admin_type == 'paas_admin') {
$paas_obj = $request->session()->get('paas_obj');
$paas_community_ids = $community->paasCommunityIds($paas_obj->id);
if (!in_array($community->id, $paas_community_ids)) {
return $this->failure('没有权限访问');
}
}
$group_ids = $link->where('community_id', $community->id)->pluck('group_id');
$groups = $group->whereIn('id', $group_ids)->get()->toArray();
$community->user = $community->user()->where('id', $community->user_id)->first();
$community->groups = $groups;
return $this->success('ok', $community);
}
/**
* 社区群员列表
* @param Request $request [description]
* @param CommunityMember $member [description]
* @return [type] [description]
*/
public function communityMembers(Request $request, Community $community)
{
$admin_type = $request->session()->get('admin_type');
if ($admin_type == 'paas_admin') {
$paas_obj = $request->session()->get('paas_obj');
$paas_community_ids = $community->paasCommunityIds($paas_obj->id);
if (!in_array($community->id, $paas_community_ids)) {
return $this->failure('没有权限访问');
}
}
$status = $request->input('status', 1);
$members = $community->members()->with('user')->whereHas('user', function($sql){
$sql->where('id', '>', 0);
})->where('status', $status);
$keyword = $request->input('keyword');
if ($keyword) {
$keyword = trim($keyword);
$members = $members->whereHas('user', function($sql) use($keyword){
$sql->where('name', 'like', '%'.$keyword.'%')
->orWhere('mobile', 'like', '%'.$keyword.'%');
});
}
$members = $members->orderBy('id', 'desc')->paginate();
return $this->success('ok', $members);
}
/**
* 添加社群
* @param Request $request [description]
* @return [type] [description]
*/
public function storeCommunity(Request $request, Community $community, CommunityGroupLink $link, CommunityGroup $group)
{
$data['logo'] = $request->input('logo');
$data['title'] = $request->input('title');
$data['intro'] = $request->input('intro');
$data['qrcode'] = $request->input('qrcode');
$data['owner_name'] = $request->input('owner_name');
$data['owner_photo'] = $request->input('owner_photo');
$data['owner_wechat'] = $request->input('owner_wechat');
$data['poster'] = $request->input('poster');
$data['poster_path'] = $request->input('poster_path');
$data['wechat_qrcode'] = $request->input('wechat_qrcode');
if($request->has('price') && $request->price){
$data['is_free'] = 0;
$data['price'] = $request->price;
}
$user_id = $request->user_id;
if(empty($user_id)){
return $this->failure('小程序用户不存在');
}
$data['user_id'] = $user_id;
// if (!is_numeric($data['user_id'])) {
// return $this->failure('请输入群主id');
// }
$community = $community->create($data);
$group_ids = $request->input('group_ids', []);
if ($group_ids && count($group_ids)) {
$new_data = [];
foreach ($group_ids as $group_id) {
$data = [];
$data['group_id'] = $group_id;
$data['community_id'] = $community->id;
$data['created_at'] = date('Y-m-d H:i:s');
$data['updated_at'] = date('Y-m-d H:i:s');
$new_data[] = $data;
$group_obj = $group->where('id', $group_id)->first();
if ($group_obj) {
$group_obj->increment('num', 1);
}
}
$link->insert($new_data);
}
$admin_type = $request->session()->get('admin_type');
if ($admin_type == 'paas_admin') {
$paas_obj = $request->session()->get('paas_obj');
PaasCommunity::firstOrCreate(['paas_id'=>$paas_obj->id, 'community_id'=>$community->id]);
}
return $this->success('ok', $community);
}
/**
* 修改社群
* @param Request $request [description]
* @param Community $community [description]
* @return [type] [description]
*/
public function updateCommunity(Request $request, Community $community, CommunityGroupLink $link)
{
if ($request->has('logo') && $request->logo != $community->logo) {
$community->logo = $request->logo;
}
if ($request->has('title') && $request->title != $community->title) {
$community->title = $request->title;
}
if ($request->has('intro') && $request->intro != $community->intro) {
$community->intro = $request->intro;
}
if ($request->has('qrcode') && $request->qrcode != $community->qrcode) {
$community->qrcode = $request->qrcode;
}
if ($request->has('owner_name') && $request->owner_name != $community->owner_name) {
$community->owner_name = $request->owner_name;
}
if ($request->has('owner_photo') && $request->owner_photo != $community->owner_photo) {
$community->owner_photo = $request->owner_photo;
}
if ($request->has('owner_wechat') && $request->owner_wechat != $community->owner_wechat) {
$community->owner_wechat = $request->owner_wechat;
}
if ($request->has("viewer_id") && $request->input('viewer_id')) {
$viewer_id = $request->viewer_id;
$mobile = Viewer::where('id', $viewer_id)->value('mobile');
if(empty($mobile)){
return $this->failure('该用户没有绑定手机号');
}
$community->user_id = User::where('mobile', $mobile)->value('id');
}
if ($request->has("poster") && $request->input('poster') != $community->poster) {
$community->poster = $request->poster;
}
if ($request->has("poster_path") && $request->input('poster_path') != $community->poster_path) {
$community->poster_path = $request->poster_path;
}
if ($request->has('wechat_qrcode') && $request->input('wechat_qrcode') != $community->wechat_qrcode) {
$community->wechat_qrcode = $request->wechat_qrcode;
}
if ($request->has('is_hot') && $request->is_hot != $community->is_hot) {
$community->is_hot = $request->is_hot;
}
$community->save();
$group_ids = $request->input('group_ids', []);
if ($group_ids && count($group_ids)) {
$link->where('community_id', $community->id)->delete();
$new_data = [];
foreach ($group_ids as $group_id) {
$data = [];
$data['group_id'] = $group_id;
$data['community_id'] = $community->id;
$data['created_at'] = date('Y-m-d H:i:s');
$data['updated_at'] = date('Y-m-d H:i:s');
$new_data[] = $data;
}
$link->insert($new_data);
}
return $this->success('update');
}
/**
* 删除社群
* @param Request $request [description]
* @param Community $community [description]
* @return [type] [description]
*/
public function deleteCommunity(Request $request, Community $community)
{
try{
DB::beginTransaction();
$community->delete();
CommunityMoment::where('community_id', $community->id)->delete();
CommunityMember::where('community_id', $community->id)->delete();
CommunityTopic::where('community_id', $community->id)->delete();
DB::commit();
return $this->success('ok');
} catch (\Exception $e) {
DB::rollback();
\Log::error($e->getMessage());
return $this->failure("系统错误");
}
}
/**
* 审核社群成员
* @param Request $request [description]
* @param CommunityMember $member [description]
* @return [type] [description]
*/
public function checkCommunityMembers(Request $request, CommunityMember $member)
{
$status = $request->input('status',0);
$member->status = $status;
$member->reason = $request->content;
$member->save();
return $this->success('ok');
}
/**
* 删除社群成员
* @param Request $request [description]
* @param CommunityMember $member [description]
* @return [type] [description]
*/
public function deleteCommunityMember(Request $request, CommunityMember $member)
{
$member->community()->decrement('member_num', 1);
$member->delete();
return $this->success('ok');
}
public function communityGroups(Request $request, CommunityGroup $group)
{
$groups = $group->withCount('communityGroupLinks')->orderBy('id', 'desc');
$admin_type = $request->session()->get('admin_type');
if ($admin_type == 'paas_admin') {
$paas_obj = $request->session()->get('paas_obj');
$paas_group_ids = $group->paasGroupIds($paas_obj->id);
$groups = $groups->whereIn('id', $paas_group_ids);
}
$keyword = $request->input('keyword');
if ($keyword) {
$keyword = trim($keyword);
$groups = $groups->where('title', 'like', '%'.$keyword.'%');
}
$nopage = $request->input('nopage');
if ($nopage) {
$groups = $groups->get();
}else{
$groups = $groups->paginate();
}
return $this->success('ok', $groups);
}
public function stroeCommunityGroup(Request $request)
{
$title = $request->input('title');
if (empty($title)) {
return $this->failure('请输入名称');
}
$logo = $request->input('logo');
if (empty($logo)) {
return $this->failure('请上传logo');
}
$intro = $request->input('intro');
if (empty($intro)) {
return $this->failure('请输入简介');
}
$user = auth()->user();
$user_viewer_id = 0;
if($user->mobile){
$user_viewer_id = Viewer::where('mobile', $user->mobile)->value('id');
}
try {
\DB::beginTransaction();
$group = new CommunityGroup;
$group->title = $title;
$group->logo = $logo;
$group->intro = $intro;
if($request->has('back_logo') && $request->back_logo){
$group->back_logo = $request->back_logo;
}else{
$group->back_logo = $logo;
}
$group->save();
$id_arr = [];
if($request->has('user_id') && $request->user_id){
$id_arr = $request->user_id;
}
$insert_arr = [];
foreach ($id_arr as $item){
$insert_arr[] = [
'group_id' => $group->id,
'viewer_id' => Viewer::where('user_id', $item)->value('id'),
'user_id' => $item,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
];
}
//添加群分类管理员
$admin_id = CommunityGroupAdmin::where('group_id', 0)->pluck('viewer_id')->toArray();
$new_data = [];
foreach ($admin_id as $k => $item){
$new_data[$k]['viewer_id'] = $item;
$new_data[$k]['user_id'] = Viewer::where('id', $item)->value('user_id');
$new_data[$k]['group_id'] = $group->id;
$new_data[$k]['created_at'] = date('Y-m-d H:i:s');
$new_data[$k]['updated_at'] = date('Y-m-d H:i:s');
}
$new_data = array_merge($new_data, $insert_arr);
CommunityGroupAdmin::insert($new_data);
\DB::commit();
return $this->success('ok', $group);
} catch (\Exception $e) {
//\DB::rollback();
\Log::info($e->getMessage());
return $this->failure('添加失败');
}
}
public function updateCommunityGroup(Request $request, CommunityGroup $group)
{
if ($request->has('title') && $request->input('title') != $group->title) {
$group->title = $request->title;
}
if ($request->has('logo') && $request->input('logo') != $group->logo) {
$group->logo = $request->logo;
}
if ($request->has('back_logo') && $request->input('back_logo') != $group->back_logo) {
$group->back_logo = $request->back_logo;
}
if ($request->has('intro') && $request->input('intro') != $group->intro) {
$group->intro = $request->intro;
}
try {
\DB::beginTransaction();
$group->save();
if($request->has('is_show') && is_numeric($request->is_show)){
$community_ids = CommunityGroupLink::where('group_id', $group->id)->pluck('community_id')->toArray();
if($request->is_show == 0){
Community::whereIn('id', $community_ids)->where('is_hided', 0)->update(['is_hided'=> 1]);
CommunityMoment::whereIn('community_id', $community_ids)->where('is_show', 1)->update(['is_show'=> 0]);
}else{
Community::whereIn('id', $community_ids)->where('is_hided', 1)->update(['is_hided'=> 0]);
CommunityMoment::whereIn('community_id', $community_ids)->where('is_show', 0)->update(['is_show'=> 1]);
}
$group->is_show = $request->is_show;
$group->save();
}
//添加社群管理员
$id_arr = [];
if($request->has('user_id')){
$user_id = $request->user_id;
$admin_ids = CommunityGroupAdmin::where('group_id', $group->id)->pluck('user_id')->toArray();
$insert_id = array_diff($user_id, $admin_ids);
$del_id = array_diff($admin_ids, $user_id);
if(!empty($del_id)){
CommunityGroupAdmin::where('group_id', $group->id)->whereIn('user_id', $del_id)->delete();
}
if(!empty($insert_id)){
$insert_arr = [];
$new_arr = [];
foreach ($insert_id as $val){
$new_arr['group_id'] = $group->id;
$new_arr['user_id'] = $val;
$new_arr['id'] = Viewer::where('user_id', $val)->value('id');
$new_arr['created_at'] = date('Y-m-d H:i:s');
$new_arr['updated_at'] = date('Y-m-d H:i:s');
$insert_arr[] = $new_arr;
}
CommunityGroupAdmin::insert($insert_arr);
}
}
\DB::commit();
return $this->success('ok', $group);
} catch (\Exception $e) {
\DB::rollback();
\Log::error($e->getMessage());
return $this->failure('修改失败');
}
}
public function communityGroup(Request $request, CommunityGroup $group)
{
try {
$communities = $group->groupCommunities();
$group->admin = $group->admin()->orderBy('created_at', 'desc')->paginate();
return $this->success('ok', compact('group', 'communities'));
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('信息获取失败,请稍后再试');
}
}
//设置为所有社群管理员
public function setGroupAdmin(Request $request, $viewer_id){
$is_admin = CommunityGroupAdmin::where('viewer_id', $viewer_id)->where('group_id', 0)->count();
if($is_admin){
return $this->failure('已是所有群组管理员');
}
$group_id = CommunityGroup::where('is_show', 1)->pluck('id')->toArray();
$isadmin_group_id = CommunityGroupAdmin::where('viewer_id', $viewer_id)->pluck('group_id')->toArray();
$insert_ids = array_diff($group_id, $isadmin_group_id);
$insert = [];
foreach ($insert_ids as $k => $insert_id){
$insert[$k]['viewer_id'] = $viewer_id;
$insert[$k]['group_id'] = $insert_id;
$insert[$k]['created_at'] = date('Y-m-d H:i:s');
$insert[$k]['updated_at'] = date('Y-m-d H:i:s');
}
$insert[] = [
'viewer_id' => $viewer_id,
//group_id为0代表所有群管理员
'group_id' => 0,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
];
CommunityGroupAdmin::insert($insert);
return $this->success('ok');
}
//所有群管理员列表
public function allCommunityAdmins(Request $request){
$group_admin = CommunityGroupAdmin::with('viewer');
if($request->has('keyword') && $request->keyword){
$keyword = $request->keyword;
$group_admin = $group_admin->whereHas('viewer' , function($query) use ($keyword){
$query->where('nickname', 'like', '%'.$keyword.'%');
});
}
$group_admin = $group_admin->where('group_id', 0)->orderBy('created_at', 'desc')->paginate();
return $this->success('ok', $group_admin);
}
//取消所有社群分类管理权限
public function delAllGroupAdmin(Request $request, $viewer_id){
$is_admin = CommunityGroupAdmin::where('viewer_id', $viewer_id)->where('group_id', 0)->count();
if(empty($is_admin)){
return $this->failure('该用户不是超级管理员');
}
CommunityGroupAdmin::where('viewer_id', $viewer_id)->delete();
return $this->success('ok');
}
public function deleteCommunityGroup(Request $request, CommunityGroup $group)
{
$group->delete();
return $this->success('ok');
}
//设置为所有群管理员
/**
* 修改社群所属分类
* @param Request $request [description]
* @param CommunityGroupLink $link [description]
* @return [type] [description]
*/
public function updateCommunityGroupLink(Request $request, Community $community, CommunityGroup $group, CommunityGroupLink $link)
{
$link->where(['community_id'=> $community->id, 'group_id'=>$group->id])->delete();
return $this->success('ok', $link);
}
/**
* 群主群列表
* @param Request $request [description]
* @param User $user [description]
* @param Community $community [description]
* @return [type] [description]
*/
public function groupOwnerCommunities(Request $request, User $user, Community $community)
{
$communities = $community->where('user_id', $user->id)->orderBy('id', 'desc')->paginate();
return $this->success('ok', compact('user', 'communities'));
}
/**
* 社群举报列表
* @param Request $request [description]
* @param Community $community [description]
* @return [type] [description]
*/
public function communityComplaints(Request $request, CommunityComplaintHistory $complaint)
{
$complaints = $complaint->with('user', 'community');
$keyword = $request->input('keyword');
if ($keyword) {
$keyword = trim($keyword);
$complaints = $complaints->whereHas('user', function($sql) use($keyword){
$sql->where('name', 'like', '%'.$keyword.'%');
});
}
$status = $request->input('status', 0);
$complaints = $complaints->where('status', $status)->orderBy('id', 'desc')->paginate();
return $this->success('ok', $complaints);
}
/**
* 标记审核
* @param Request $request [description]
* @param CommunityComplaintHistory $complaint [description]
* @return [type] [description]
*/
public function checkCommunityComplaint(Request $request, CommunityComplaintHistory $complaint)
{
$status = 1;
$complaint->status = $status;
$complaint->save();
return $this->success('ok');
}
/**
* 隐藏/显示
* @param Request $request [description]
* @param Community $community [description]
* @return [type] [description]
*/
public function hideCommunity(Request $request, Community $community)
{
if ($community->is_hided) {
$community->is_hided = 0;
}else{
$community->is_hided = 1;
}
$community->save();
return $this->success('ok');
}
/**
* 所有社群动态
* @param Request $request [description]
* @param CommunityMoment $community_moment [description]
* @return [type] [description]
*/
public function communitiesMoments(Request $request, CommunityMoment $community_moment)
{
$moments = $community_moment->with('user', 'community')->orderBy('id', 'desc')->paginate();
return $this->success('ok', $moments);
}
/**
* 社群动态
* @param request $request [description]
* @param CommunityMoment $community_moment [description]
* @return [type] [description]
*/
public function communityMoments(Request $request, Community $community, CommunityMoment $community_moment)
{
try {
$moments = $community_moment->with('user:id,nickname,photo,circle_avatar', 'community', 'topic')->where('community_id', $community->id);
$topic_id = $request->input('topic_id');
if ($topic_id) {
$moments = $moments->where('topic_id', $topic_id);
}
$keyword = $request->input('keyword');
if (trim($keyword)) {
$moments = $moments->where('content', 'like', '%'.trim($keyword).'%');
}
$moments = $moments->orderBy('id', 'desc')->paginate();
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('信息获取失败,请稍后再试');
}
return $this->success('ok', $moments);
}
/**
* 社群动态详情
* @param Request $request [description]
* @param CommunityMoment $community_moment [description]
* @return [type] [description]
*/
public function communityMoment(Request $request, CommunityMoment $community_moment)
{
try {
$community_moment->photos = json_decode($community_moment->photos, true);
$community_moment->topic;
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('信息获取失败,请稍后再试');
}
return $this->success('ok', $community_moment);
}
/**
* 删除社群动态
* @param Request $request [description]
* @param CommunityMoment $community_moment [description]
* @return [type] [description]
*/
public function deleteCommunityMoment(Request $request, CommunityMoment $community_moment)
{
$community_moment->delete();
return $this->success('ok');
}
/**
* 社群动态举报列表
* @param Request $request [description]
* @param CommunityMomentComplaint $community_moment_complaint [description]
* @return [type] [description]
*/
public function communityMomentComplaints(Request $request, CommunityMomentComplaint $community_moment_complaint)
{
$complaints = $community_moment_complaint->with('user', 'communityMoment.user')->whereHas('communityMoment', function($sql){
$sql->where('id', '>', 0);
})->orderBY('id', 'desc')->paginate();
return $this->success('ok', $complaints);
}
public function communityMomentComplaint(Request $request, CommunityMomentComplaint $community_moment_complaint)
{
$community_moment_complaint->pics = json_decode($community_moment_complaint->pics, true);
return $this->success('ok', $community_moment_complaint);
}
/**
* 社群话题列表
* @param Request $request 请求参数
* @param Community $community 社群
* @return json 话题列表
*/
public function communityTopics(Request $request, Community $community)
{
try {
$topics = $community->topic()->withCount('moment');
$keyword = $request->input('keyword');
if (trim($keyword)) {
$topics = $topics->where('name', 'like', '%'.$keyword.'%');
}
$nopage = $request->input('nopage', 0);
if ($nopage) {
$topics = $topics->get();
}else{
$topics = $topics->with('creater:id,nickname,name,photo,circle_avatar')->orderBy('id', 'desc')->paginate();
}
return $this->success('ok', compact('community', 'topics'));
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('信息获取失败,请稍后再试');
}
}
/**
* 话题列表
* @param Request $request 请求参数
* @param Community $community 社群
* @return json 话题列表
*/
public function Topics(Request $request)
{
try {
$topics =CommunityTopic::with('community')->withCount('moment');
$keyword = $request->input('keyword');
if (trim($keyword)) {
$topics = $topics->where('name', 'like', '%'.$keyword.'%');
}
$nopage = $request->input('nopage', 0);
if ($nopage) {
$topics = $topics->get();
}else{
$topics = $topics->with('creater:id,nickname,name,photo,circle_avatar')->orderBy('id', 'desc')->paginate();
}
return $this->success('ok', $topics);
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('信息获取失败,请稍后再试');
}
}
/**
* 删除社群话题
* @param Request $request 请求参数
* @param CommunityTopic $community_topic 话题对象
* @return [type]
*/
public function deleteCommunityTopic(Request $request, CommunityTopic $community_topic)
{
try {
DB::beginTransaction();
$community_topic->delete();
CommunityMoment::where('topic_id', $community_topic->id)->delete();
DB::commit();
return $this->success('ok');
} catch (\Exception $e) {
DB::rollback();
$this->getError($e);
return $this->failure('操作失败,请稍后再试');
}
}
//创建社群
public function stroeCommunity(Request $request){
$group_id = $request->input('group_id');
if (empty($group_id)) {
return $this->failure('请选择社群分类');
}
$wechatUser = session('wechat.oauth_user.new');
if(empty($wechatUser)){
$openId = $request->openid;
}else{
$openId = $wechatUser->getId();
}
$viewer_id = Viewer::where('openid', $openId)->value('id');
$group_admin_id = CommunityGroupAdmin::where('group_id', $group_id)->pluck('viewer_id')->toArray();
if(!in_array($viewer_id, $group_admin_id)){
return $this->failure('您没有权限创建社群,请联系社群管理员');
}
$data['user_id'] = $request->user->id;
$data['logo'] = $request->input('logo');
if (empty($data['logo'])) {
return $this->failure('请上传社群logo');
}
$data['title'] = $request->input('title');
if (empty($data['title'])) {
return $this->failure('请输入社群名称');
}
// $data['qrcode'] = $request->input('qrcode');
// if (empty($data['qrcode'])) {
// // return $this->failure("请上传群二维码");
// }
$data['wechat_qrcode'] = $request->input('wechat_qrcode');
if (empty($data['wechat_qrcode'])) {
// return $this->failure('请上传群主微信二维码');
}
$data['poster'] = $request->input('poster');
// if (empty($poster)) {
// return $this->failure('请上传社群海报');
// }
$data['poster_path'] = $request->input('poster_path');
$data['intro'] = $request->input('intro');
if (empty($data['intro'])) {
return $this->failure('请输入社群描述');
}
if(empty($request->price)){
$data['is_free'] = 0;
$data['price'] = $request->price;
}
$community = New Community();
$community_member = new CommunityMember();
$link = New CommunityGroupLink();
$community_obj = $community->create($data);
$link_obj = $link->create(['community_id'=>$community_obj->id, 'group_id'=>$group_id]);
//自动入群
$community_member->create([
'user_id'=>$data['user_id'],
'community_id'=>$community_obj->id,
'status'=>1,
]);
return $this->success('ok', $community_obj);
}
//申请热门推荐列表
public function communityStars(Request $request){
$stars = CommunityStar::select('id', 'is_audit', 'is_show', 'created_at', 'user_id', 'is_home', 'sign_marriage_id', 'audited_at')->with(['user', 'profile']);
if($request->has('keyword') && $request->keyword){
$keyword = $request->keyword;
$stars = $stars->whereHas('user', function($query) use($keyword){
$query->where('name', 'like', '%'.$keyword.'%')->orWhere('mobile', 'like', '%'.$keyword.'%');
});
}
if($request->has('is_audit') && is_numeric($request->is_audit)){
$stars = $stars->where('is_audit', $request->is_audit);
}
if($request->has('user_id') && is_numeric($request->user_id)){
$stars = $stars->where('user_id', $request->user_id);
}
//热门推荐?
if($request->has('is_show') && is_numeric($request->is_show)){
$stars = $stars->where('is_show', $request->is_show);
}
//征婚交友
if($request->has('is_home') && is_numeric($request->is_home)){
$stars = $stars->where('is_home', $request->is_home);
}
//是否是福恋使者
// if($request->has('is_messenger') && $request->is_messenger){
//
// }
$stars = $stars->orderBy('id', 'desc')->paginate();
foreach ($stars as $star){
if(!empty($star) && !empty($star->user)){
$viewer_id = Viewer::where('user_id', $star->user_id)->orWhere('mobile', $star->user->mobile)->value('id');
if(!empty($viewer_id)){
$star->is_messenger = Messenger::where('viewer_id', $viewer_id)->where('is_audit', 1)->count();
}
}
}
return $this->success('ok', $stars);
}
//审核热门推荐列表
public function updateCommunityStars(Request $request){
if(!$request->has('id') || !$request->id){
return $this->failure('请输入ID');
}
// try {
// DB::beginTransaction();
// $id_arr = explode(',', $request->id);
$id = $request->id;
$update = [];
if($request->has('is_audit') && is_numeric($request->is_audit)) {
$update['is_audit'] = $request->is_audit;
if ($request->is_audit == 1) {
$update['audited_at'] = date('Y-m-d H:i:s');
}
}
if($request->has('is_show') && is_numeric($request->is_show)) {
$update['is_show'] = $request->is_show;
}
if($request->has('is_home') && is_numeric($request->is_home)) {
$update['is_home'] = $request->is_home;
}
if($request->has('sort') && is_numeric($request->sort)) {
$update['sort'] = $request->sort;
}
CommunityStar::where('id', $id)->update($update);
return $this->success('ok');
// DB::commit();
// } catch (\Exception $e) {
// DB::rollback();
// $this->getError($e);
// return $this->failure('操作失败,请稍后再试');
// }
}
//征婚数据
public function starData(Request $request){
$allCount = CommunityStar::where('is_audit', 1);
if($request->has('start_time') && $request->start_time && $request->has('end_time') && $request->end_time){
$allCount = $allCount->where('created_at', 'between', [$request->start_time, $request->end_time]);
}
$allCount = $allCount->count();
$beginYesterday=date("Y-m-d 00:00:00");
$endYesterday=date("Y-m-d 00:00:00",strtotime("-1 day"));
$yesterdayCount = CommunityStar::where('is_audit', 1)->whereBetween('created_at', [$beginYesterday, $endYesterday])->count();
return $this->success('ok', compact('allCount', 'yesterdayCount'));
}
}