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

100 lines
4.8 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Models\FruitHistory;
use App\Models\Participant;
use App\Utils\Messenger;
use App\Utils\Http;
use App\Events\NoticeServer;
use Illuminate\Http\Request;
use App\Repositories\Eloquent\SmsRepository as Sms;
use App\Http\Controllers\Controller;
use App\Contracts\UserContract;
use App\Exports\ParticipantExport;
class ParticipantController extends Controller
{
protected $sms;
protected $userCon;
public function __construct(Sms $sms, UserContract $userCon){
$this->sms = $sms;
$this->userCon = $userCon;
}
public function ParticipantList(Request $request){
$participant = Participant::select('id', 'mobile', 'nickname', 'subscribe','avatar', 'sex', 'fruit_num', 'chance', 'is_helper', 'is_pick_up', 'is_final_pick_up', 'updated_at');
if($request->has('fruit_num') && !empty($request->fruit_num)){
if($request->fruit_num > 9) {
$participant = $participant->where('fruit_num', '>=', 9);
}else{
$participant = $participant->where('fruit_num', $request->fruit_num);
}
}
if($request->has('keyword') && !empty($request->keyword)){
$participant = $participant->where('nickname', 'like', '%'.$request->keyword.'%')->orWhere('mobile', 'like', '%'.$request->keyword.'%');
}
if($request->has('subscribe') && is_numeric($request->subscribe)){
$participant = $participant->where('subscribe',$request->subscribe);
}
if($request->has('is_pick_up') && is_numeric($request->is_pick_up)){
$participant = $participant->where('is_pick_up',$request->is_pick_up);
}
if($request->has('start_time') && !empty($request->start_time) & $request->has('end_time') && !empty($request->end_time)){
$participant = $participant->whereBetween('updated_at', [$request->start_time, $request->end_time]);
}
$list = $participant->orderBy('fruit_num', 'desc')->orderBy('updated_at', 'desc')->paginate();
return $this->success('ok', $list);
}
public function ParticipantListExcel(Request $request){
$participant = Participant::select('mobile', 'nickname', 'subscribe','avatar', 'sex', 'fruit_num', 'chance', 'is_pick_up', 'is_final_pick_up');
if($request->has('fruit_num') && !empty($request->fruit_num)){
if($request->fruit_num > 9) {
$participant = $participant->where('fruit_num', '>=', 9);
}else{
$participant = $participant->where('fruit_num', 9);
}
}
if($request->has('keyword') && !empty($request->keyword)){
$participant = $participant->where('nickname', 'like', '%'.$request->keyword.'%');
}
if($request->has('subscribe') && is_numeric($request->subscribe)){
$participant = $participant->where('subscribe',$request->subscribe);
}
if($request->has('is_pick_up') && is_numeric($request->is_pick_up)){
$participant = $participant->where('is_pick_up',$request->is_pick_up);
}
if($request->has('start_time') && !empty($request->start_time) & $request->has('end_time') && !empty($request->end_time)){
$participant = $participant->whereBetween('updated_at', [$request->start_time, $request->end_time]);
}
$list = $participant->orderBy('updated_at', 'desc')->orderBy('fruit_num', 'desc')->get();
$new_data = [];
foreach ($list as $item) {
$data['nickname'] = $item->nickname;
$data['sex'] = $item->sex == 1 ? '男' : '女';
$data['fruit_num'] = $item->fruit_num;
$data['chance'] = $item->chance;
$data['subscribe'] = $item->subscribe ? '已关注' : '未关注';
$data['is_pick_up'] = $item->is_pick_up ? '已领取' : '未领取';
$data['is_final_pick_up'] = $item->is_final_pick_up ? '已领取' : '未领取';
$data['mobile'] = $item->mobile;
}
$new_data[] = $data;
return \Excel::download(new ParticipantExport($new_data), 'participant.xlsx');
}
public function ShareList(Request $request){
if(!$request->has('id') || empty($request->id)){
return $this->failure('请输入id');
}
$participant = Participant::withCount('participant_share')->find($request->id);
if(empty($participant)){
return $this->failure('用户信息不存在');
}
$list = FruitHistory::has('participant_helper')->has('participant_share')->with('participant_helper:id,nickname,avatar,sex,subscribe')->with('participant_share:id,nickname,sex')->where('participant_id', $request->id)->paginate();
return $this->success('ok', ['participant'=>$participant, 'list'=>$list]);
}
}