ufutx.dma/app/Http/Controllers/H5/PartnerController.php
2026-03-04 14:42:40 +08:00

224 lines
7.8 KiB
PHP

<?php
namespace App\Http\Controllers\H5;
use App\Facades\WechatService;
use App\Http\Controllers\Controller;
use App\Http\Controllers\LoginController;
use App\Http\Response\ResponseJson;
use App\Models\Coach;
use App\Models\Partner;
use App\Models\User;
use EasyWeChat\Kernel\Exceptions\Exception;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Route;
class PartnerController extends Controller
{
use ResponseJson;
public function partner(Request $request)
{
$wechat_user = session('wechat_user');
$openid = $wechat_user['id']??null;
// if (config('app.env') == 'production') {
$auth_url = route('partner.official.auth');
if (empty($openid)) return $this->success("微信授权失败", ['has_auth'=>false, 'auth_url'=>$auth_url]);
// }else {
// $openid = 'ojvHq5kvZai3mvwc18wx066uUjqk';
// }
//根据openid获取用户
$user = app('App\Http\Controllers\H5\AuthController')->openidToUser(['openid'=>$openid]);
$partner = Partner::where('openid', $openid)
->select(['openid', 'user_id', 'name','mobile','pic','intro','specialty','attach','status'])
->first();
if (empty($partner)) {
$partner = new Partner([
'openid'=>$openid,
'name'=>null,
'mobile'=>null,
'pic'=>null,
'intro'=>null,
'specialty'=>null,
'attach'=>null,
'status' => 3,
'user_id'=>$user->id
]);
}
$partner->has_auth = true;
return $this->success("ok", $partner);
}
/**
* 合作伙伴申请
* @param Request $request
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse
*/
public function storePartner(Request $request)
{
try {
$wechat_user = session('wechat_user');
$openid = $wechat_user['id']??null;
// if (config('app.env') == 'production') {
if (empty($openid)) return $this->failure("微信授权失败");
// }else {
// $openid = 'ojvHq5kvZai3mvwc18wx066uUjqk';
// }
$pic = $request->input('pic');
if (empty($pic)) return $this->failure("请输入头像");
$name = $request->input('name');
if (empty($name)) return $this->failure("请输入姓名");
$mobile = $request->input("mobile");
if (empty($mobile)) return $this->failure("请输入手机号");
$intro = $request->input('intro');
// if (empty($intro)) return $this->failure("请输入个人简介");
$specialty = $request->input('specialty',[]);
$attach = $request->input('attach');
// $exist = Partner::where('mobile', $mobile)->exists();
// if ($exist) return $this->failure("手机号已存在");
$data = [
'name'=>$name,
'mobile'=>$mobile,
'pic'=>$pic,
'intro'=>$intro,
'specialty'=>json_encode($specialty),
'attach'=>$attach
];
//获取用户角色
$user = $this->checkUserRoles($openid);
if (!$user->is_partner){
$data['status'] = 0;
//根据openid获取用户
$user = app('App\Http\Controllers\H5\AuthController')->openidToUser(['openid'=>$openid]);
$data['user_id'] = $user->id;
}
Partner::updateOrCreate(['openid'=>$openid],$data);
return $this->success('ok');
}catch (ModelNotFoundException ){
return $this->jsonResponse(1,'未找到用户信息');
}catch (\Exception $e){
return $this->jsonResponse(1,$e->getMessage());
}
}
public function coach(Request $request)
{
try {
$wechat_user = session('wechat_user');
$openid = $wechat_user['id']??null;
// if (config('app.env') == 'production') {
$auth_url = route('coach.official.auth');
if (empty($openid)) return $this->success("微信授权失败", ['has_auth'=>false, 'auth_url'=>$auth_url]);
// }else {
// $openid = 'ojvHq5kvZai3mvwc18wx066uUjqk';
// }
//获取用户角色
$user = $this->checkUserRoles($openid);
if ($user->is_coaches == 0 && $user->is_partner == 0){
throw new \Exception('请先申请合作伙伴');
}
$coach = $user->coach;
if (!$coach) {
$coach = new Coach([
'partner_id'=>$user->partner->id,
'openid'=>$openid,
'outlook'=>null,
'reason'=>null,
'think'=>null,
'status'=>$user->is_coaches?1:3
]);
}
$coach->has_auth = true;
$coach->has_partner = true;
return $this->success('ok', $coach);
}catch (ModelNotFoundException ){
return $this->jsonResponse(1,'未找到用户信息');
}catch (\Exception $e){
return $this->jsonResponse(1,$e->getMessage());
}
}
public function storeCoach(Request $request)
{
$wechat_user = session('wechat_user');
$openid = $wechat_user['id']??null;
// if (config('app.env') == 'production') {
if (empty($openid)) return $this->success("微信授权失败", ['has_auth'=>false]);
// }else {
// $openid = 'ojvHq5kvZai3mvwc18wx066uUjqk';
// }
$outlook = $request->input('outlook');
if (empty($outlook)) return $this->failure("请输入你对副教练这个角色有什么看法");
$reason = $request->input('reason');
if (empty($reason)) return $this->failure("请输入申请副教练的原因");
$think = $request->input("think");
if (empty($think)) return $this->failure("请输入你认为副教练需要做什么工作");
// $partner = Partner::where('openid', $openid)->where('status',1)->first();
try {
//获取用户角色
$user = $this->checkUserRoles($openid);
Coach::updateOrCreate(
['openid'=>$openid],
[
'partner_id'=>$user->partner->id,
'outlook'=>$outlook,
'reason'=>$reason,
'think'=>$think,
'status'=>$user->is_coaches
]);
return $this->success('ok');
}catch (ModelNotFoundException ){
return $this->jsonResponse(3,'未找到用户信息');
}catch (Exception $e){
return $this->jsonResponse(2,$e->getMessage());
}
}
private function checkUserRoles($openid)
{
//获取用户角色
$user = User::with(['service_roles','partner','coach'])
->whereHas('officialWechat', function ($query) use ($openid) {
$query->where('openid', $openid);
})
->firstOrFail();
$user->is_partner = 0;
$user->is_coaches = 0;
$user->service_roles()->each(function ($service_role) use ($user) {
switch ($service_role->pivot->role_id){
case 1://主教练
break;
case 2://副教练
$user->is_coaches = 1;
break;
case 3://客服
break;
case 4://小伙伴
$user->is_partner = 1;
break;
}
});
return $user;
}
}