391 lines
17 KiB
PHP
391 lines
17 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Server\Admin;
|
|
|
|
use App\Models\Live\Anchor;
|
|
use App\Models\MerchantAccount;
|
|
use App\Models\Server\AllianceMerchant;
|
|
use App\Models\Server\MarketService;
|
|
use App\Models\Server\MerchantMembers;
|
|
use App\Models\Server\MerchantService;
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Redis;
|
|
|
|
|
|
class AllianceController extends Controller
|
|
{
|
|
/**
|
|
* 检查商户状态是不是联盟
|
|
* @param $merchant_id
|
|
*/
|
|
private function checkAlliance($merchant_id){
|
|
$anchor = Anchor::where('m_id',$merchant_id)->where('service_nature','alliance')
|
|
->first();
|
|
if($anchor){
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
*获取联盟商家列表
|
|
* @param Request $request
|
|
*/
|
|
public function getAllianceMerchantList(Request $request){
|
|
try {
|
|
$keyword = $request->keyword;
|
|
$merchant_id = $request->account_id;
|
|
$audit_type = $request->audit_type;
|
|
$is_alliance = $this->checkAlliance($merchant_id);
|
|
if (!$is_alliance) {
|
|
return $this->failure('该商家目前不是联盟状态或你没有权限');
|
|
}
|
|
$alliance_merchant = AllianceMerchant::where('alliance_id', $merchant_id)
|
|
->leftJoin('live_anchors', function ($join) use ($merchant_id){
|
|
$join->on('alliance_merchants.mch_id', '=', 'live_anchors.m_id');
|
|
})
|
|
->when(isset($audit_type), function ($query) use ($audit_type) {
|
|
$query->where('audit_type', $audit_type);
|
|
})
|
|
->select('live_anchors.*','alliance_merchants.audit_type','alliance_merchants.updated_at')
|
|
->when($keyword,function ($query) use($keyword){
|
|
$query->where('live_anchors.name','like',"%$keyword%");
|
|
})
|
|
->orderBy('alliance_merchants.updated_at','desc')
|
|
->paginate();
|
|
return $this->success('ok', $alliance_merchant);
|
|
}catch (\Exception $e){
|
|
$this->getError($e);
|
|
return $this->failure('服务器休息中,请稍后再试');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取联盟商家详情
|
|
* @param Request $request
|
|
* @return \Illuminate\Http\JsonResponse|string
|
|
*/
|
|
public function getAllianceMerchantInfo(Request $request){
|
|
try {
|
|
$alliance_merchant_id = $request->alliance_merchant_id;
|
|
$serve_tab = $request->serve_tab;
|
|
$account = MerchantAccount::select('id', 'qr_code', 'share_icon', 'share_subtitle', 'share_title', 'openid', 'choose_tarbar', 'template_position', 'member_info', 'mobile', 'email')
|
|
->where('id', $alliance_merchant_id)
|
|
->first();
|
|
$type = $request->type;
|
|
if ($type == 'simple') {
|
|
$anchor = Anchor::where('m_id', $alliance_merchant_id)->select('id', 'm_id', 'pic', 'name', 'mobile')->first();
|
|
} else {
|
|
$anchor = Anchor::where('m_id', $alliance_merchant_id)->select('id', 'm_id', 'service_nature', 'pic', 'name', 'designation', 'introduction')->first();
|
|
}
|
|
if ($anchor->service_nature == 'team' && $account->member_info) {
|
|
$account->member_info = json_decode($account->member_info, true);
|
|
}
|
|
$jump_url = urlencode(env('APP_URL') . '/pu/#/');
|
|
$share_url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . $alliance_merchant_id . '&anchor_openid=' . $anchor->openid .'&serve_tab='.$serve_tab. '&url=' . $jump_url;
|
|
$qr_codes = Redis::get('HomePage_S' . $alliance_merchant_id);
|
|
if (!$qr_codes) {
|
|
$qr_codes = $this->getPreviewQrcode($share_url);
|
|
Redis::setex('HomePage_S' . $alliance_merchant_id, 60 * 60 * 24 * 30, $qr_codes);
|
|
$qr_codes = Redis::get('HomePage_S' . $alliance_merchant_id);
|
|
}
|
|
if ($account->choose_tarbar) {
|
|
$account->choose_tarbar = json_decode($account->choose_tarbar, true);
|
|
} else {
|
|
$account->choose_tarbar = null;
|
|
}
|
|
if ($account->template_position) {
|
|
$account->template_position = json_decode($account->template_position, true);
|
|
} else {
|
|
$account->template_position = null;
|
|
}
|
|
$location_latitude = $account->info ? $account->info->location_latitude : null;
|
|
$location_longitude = $account->info ? $account->info->location_longitude : null;
|
|
$address = $account->info ? $account->info->address : null;
|
|
//$account['sign_code'] = $this->getSignInQrCode($alliance_merchant_id,null,null);
|
|
//$account->admin_name = null;
|
|
return $this->success('ok', compact('anchor', 'account', 'qr_codes', 'share_url', 'location_longitude', 'location_latitude', 'address'));
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
$this->getError($e);
|
|
return $this->failure('获取个人资料失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 删除联盟成员,同时删除成员的服务
|
|
* @param Request $request
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function deleteAllianceMerchant(Request $request){
|
|
try {
|
|
$merchant_id = $request->account_id;
|
|
$alliance_merchant_id = $request->alliance_merchant_id;
|
|
$admin_id = $request->merchant_admin_id;
|
|
if(!$alliance_merchant_id){
|
|
return $this->failure('参数不全');
|
|
}
|
|
$is_alliance = $this->checkAlliance($merchant_id);
|
|
if (!$is_alliance) {
|
|
return $this->failure('该商家目前不是联盟状态或你没有权限');
|
|
}
|
|
DB::beginTransaction();
|
|
$allianceMerchant = AllianceMerchant::where('alliance_id', $merchant_id)->where('mch_id', $alliance_merchant_id)
|
|
->first();
|
|
if (!$allianceMerchant) {
|
|
return $this->failure('联盟商家不存在');
|
|
}
|
|
if($allianceMerchant->alliance_id == $alliance_merchant_id){
|
|
return $this->failure('您是联盟创建者,不能删除自己');
|
|
}
|
|
$allianceMerchant->delete();
|
|
MarketService::where('merchant_id', $merchant_id)
|
|
->where('market_type',2)
|
|
->delete();
|
|
MerchantService::where('merchant_id', $merchant_id)
|
|
->where('service_type',2)
|
|
->delete();
|
|
DB::commit();
|
|
$alliance_anchor = Anchor::where('m_id',$merchant_id)->first();
|
|
$alliance_member = Anchor::where('m_id',$alliance_merchant_id)->first();
|
|
if($alliance_anchor && $alliance_anchor->mobile && $alliance_member && $alliance_member->mobile){
|
|
$this->sentMessage($alliance_member->mobile, '联盟'.$alliance_anchor->name.'已将你除名');
|
|
}
|
|
return $this->success('ok');
|
|
}catch (\Exception $e){
|
|
DB::rollBack();
|
|
$this->getError($e);
|
|
return $this->failure('服务器休息中,请稍后再试');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 联盟商家审核
|
|
* @param Request $request
|
|
* @return \Illuminate\Http\JsonResponse|string
|
|
*/
|
|
public function auditAllianceMerchant(Request $request){
|
|
try {
|
|
$merchant_id = $request->account_id;
|
|
$admin_id = $request->merchant_admin_id;
|
|
$alliance_merchant_id = $request->alliance_merchant_id;
|
|
$err_msg = $request->err_msg;
|
|
$audit_type = $request->audit_type;
|
|
if(!$alliance_merchant_id || !$audit_type){
|
|
return $this->failure('参数不全');
|
|
}
|
|
$is_alliance = $this->checkAlliance($merchant_id);
|
|
if (!$is_alliance) {
|
|
return $this->failure('该商家目前不是联盟状态');
|
|
}
|
|
$alliance_merchant = AllianceMerchant::where('alliance_id', $merchant_id)->where('mch_id', $alliance_merchant_id)
|
|
->first();
|
|
if (!$alliance_merchant) {
|
|
return $this->failure('商家不存在');
|
|
}
|
|
if ($audit_type == 3 && empty($err_msg)) {
|
|
return $this->failure('审核不能过时须要提供理由');
|
|
}
|
|
if($audit_type == 2){ //以前审核不通过,现在审核通过,清除不通过原因
|
|
$alliance_merchant->err_msg = null;
|
|
}
|
|
if($alliance_merchant->audit_info){
|
|
$audit_info = json_decode($alliance_merchant->audit_info);
|
|
}
|
|
$audit_info[] = [
|
|
'audited_at' => date('Y-m-d H:i:s'),
|
|
'audit_admin_id' => $admin_id ?? 0,
|
|
'audit_type' => $audit_type,
|
|
'err_msg' => $err_msg,
|
|
];
|
|
|
|
$alliance_merchant->audit_type = $audit_type;
|
|
$alliance_merchant->err_msg = $err_msg;
|
|
$alliance_merchant->audit_info = json_encode($audit_info);
|
|
$alliance_merchant->save();
|
|
$alliance_anchor = Anchor::where('m_id',$merchant_id)->first();
|
|
$alliance_member = Anchor::where('m_id',$alliance_merchant_id)->first();
|
|
if($alliance_anchor && $alliance_anchor->mobile && $alliance_member && $alliance_member->mobile){
|
|
if($audit_type ==2){
|
|
$status = '已通过.';
|
|
}elseif($audit_type ==3){
|
|
$status = '被拒绝.';
|
|
}else{
|
|
$status = '正在审核';
|
|
}
|
|
$this->sentMessage($alliance_member->mobile, '您申请加入的'.$alliance_anchor->name.'联盟'.$status);
|
|
}
|
|
return $this->success('ok');
|
|
}catch (\Exception $e){
|
|
$this->getError($e);
|
|
return $this->failure('服务器休息中,请稍后再试');
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* 申请加入联盟
|
|
* @param Request $request
|
|
* @return \Illuminate\Http\JsonResponse|string
|
|
*/
|
|
public function joinAlliance(Request $request){
|
|
try {
|
|
$merchant_id = $request->account_id;
|
|
$admin_id = $request->merchant_admin_id;
|
|
$alliance_id = $request->alliance_id;
|
|
if(!$alliance_id){
|
|
return $this->failure('参数不全');
|
|
}
|
|
$is_alliance = $this->checkAlliance($alliance_id);
|
|
if (!$is_alliance) {
|
|
return $this->failure('该商家目前不是联盟状态');
|
|
}
|
|
if($alliance_id == $merchant_id){
|
|
return $this->failure('你不能加入自己创建的联盟');
|
|
}
|
|
$alliance_merchant = AllianceMerchant::where('alliance_id', $alliance_id)->where('mch_id', $merchant_id)
|
|
->first();
|
|
if($alliance_merchant) {
|
|
if ($alliance_merchant->audit_type == 1 || $alliance_merchant->audit_type == 2) {
|
|
return $this->failure('您已经加盟或已经提交了申请');
|
|
} elseif ($alliance_merchant->audit_type == 3) {
|
|
$alliance_merchant->audit_type = 1;
|
|
$alliance_merchant->save();
|
|
return $this->success('ok');
|
|
}
|
|
}
|
|
$alliance_merchant = new AllianceMerchant();
|
|
$alliance_merchant->alliance_id = $alliance_id;
|
|
$alliance_merchant->mch_id = $merchant_id;
|
|
$alliance_merchant->audit_type = 1;
|
|
$alliance_merchant->save();
|
|
$alliance_anchor = Anchor::where('m_id',$alliance_id)->first();
|
|
$alliance_member = Anchor::where('m_id',$merchant_id)->first();
|
|
if($alliance_anchor && $alliance_anchor->mobile && $alliance_member && $alliance_member->mobile){
|
|
$this->sentMessage($alliance_anchor->mobile, '用户: '.$alliance_member->name.
|
|
', 手机号: '.$alliance_member->mobile.' 申请加入您的联盟,请及时审核');
|
|
}
|
|
return $this->success('ok');
|
|
}catch (\Exception $e){
|
|
$this->getError($e);
|
|
return $this->failure('服务器休息中,请稍后再试');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 退出联盟
|
|
* @param Request $request
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function quitAlliance(Request $request){
|
|
try {
|
|
$merchant_id = $request->account_id;
|
|
$admin_id = $request->merchant_admin_id;
|
|
$alliance_id = $request->alliance_id;
|
|
$alliance_merchant = AllianceMerchant::where('alliance_id', $alliance_id)->where('mch_id', $merchant_id)
|
|
->first();
|
|
if (!$alliance_merchant) {
|
|
return $this->failure('您没有加入过此联盟或已经通出了联盟');
|
|
}
|
|
if($alliance_merchant->alliance_id == $merchant_id){
|
|
return $this->failure('您是联盟的创建者,不能退出联盟');
|
|
}
|
|
DB::beginTransaction();
|
|
$alliance_merchant->delete();
|
|
MarketService::where('merchant_id', $alliance_id)
|
|
->where('market_type',2)
|
|
->delete();
|
|
MerchantService::where('merchant_id', $alliance_id)
|
|
->where('service_type',2)
|
|
->delete();
|
|
DB::commit();
|
|
$alliance_anchor = Anchor::where('m_id',$alliance_id)->first();
|
|
$alliance_member = Anchor::where('m_id',$merchant_id)->first();
|
|
if($alliance_anchor && $alliance_anchor->mobile && $alliance_member && $alliance_member->mobile){
|
|
$this->sentMessage($alliance_anchor->mobile, '商家: '.$alliance_member->name.' 已退出您的联盟');
|
|
}
|
|
return $this->success('ok');
|
|
}catch (\Exception $e){
|
|
DB::rollBack();
|
|
$this->getError($e);
|
|
return $this->failure('服务器休息中,请稍后再试');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取所有联盟列表
|
|
* @param Request $request
|
|
*/
|
|
public function getAllianceList(Request $request){
|
|
try {
|
|
$merchant_id = $request->account_id;
|
|
$keyword = $request->keyword;
|
|
$alliance_ids = Anchor::where('service_nature', 'alliance')
|
|
->when($keyword,function ($query) use($keyword){
|
|
$query->where('live_anchors.name','like',"%$keyword%");
|
|
})
|
|
->orderBy('created_at','desc')
|
|
->paginate();
|
|
foreach ($alliance_ids as $alliance){
|
|
$alliance_merchant = AllianceMerchant::where('alliance_id',$alliance->m_id)
|
|
->where('mch_id',$merchant_id)
|
|
->first();
|
|
if($alliance_merchant){
|
|
if($alliance_merchant->audit_type == 3){
|
|
$alliance->is_join = 0;
|
|
}else{
|
|
$alliance->is_join = 1;
|
|
}
|
|
}else{
|
|
$alliance->is_join = 0;
|
|
}
|
|
}
|
|
return $this->success('ok', $alliance_ids);
|
|
}catch (\Exception $e){
|
|
$this->getError($e);
|
|
return $this->failure('服务器休息中,请稍后再试');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取我加入的联盟列表
|
|
* @param Request $request
|
|
* @return \Illuminate\Http\JsonResponse|string
|
|
*/
|
|
public function getMyAllianceList(Request $request){
|
|
try {
|
|
$merchant_id = $request->account_id;
|
|
$no_page = $request->no_page;
|
|
$keyword = $request->keyword;
|
|
$audit_type = $request->audit_type;
|
|
$alliance_list = AllianceMerchant::where('alliance_merchants.mch_id', $merchant_id)
|
|
->leftJoin('live_anchors', 'alliance_merchants.alliance_id', 'live_anchors.m_id')
|
|
->where('alliance_merchants.alliance_id','!=',$merchant_id)
|
|
->when($audit_type,function ($query) use($audit_type){
|
|
$query->where('alliance_merchants.audit_type',$audit_type);
|
|
})
|
|
->when($keyword,function ($query) use($keyword){
|
|
$query->where('live_anchors.name','like',"%$keyword%");
|
|
})
|
|
->select('live_anchors.m_id','live_anchors.name','live_anchors.pic','live_anchors.designation',
|
|
'alliance_merchants.created_at');
|
|
if($no_page){
|
|
$alliance_list = $alliance_list->orderBy('alliance_merchants.created_at','desc')
|
|
->get();
|
|
}else {
|
|
$alliance_list = $alliance_list->orderBy('alliance_merchants.created_at','desc')
|
|
->paginate();
|
|
}
|
|
return $this->success('ok', $alliance_list);
|
|
}catch (\Exception $e){
|
|
$this->getError($e);
|
|
return $this->failure('服务器休息中,请稍后再试');
|
|
}
|
|
}
|
|
|
|
}
|