183 lines
6.1 KiB
PHP
183 lines
6.1 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Jobs;
|
||
|
|
|
||
|
|
use App\Models\Live\Viewer;
|
||
|
|
use App\Models\Server\MerchantUser;
|
||
|
|
use App\Models\TouristOrder;
|
||
|
|
use App\Models\User;
|
||
|
|
use App\Models\Wechat;
|
||
|
|
use Illuminate\Bus\Queueable;
|
||
|
|
use Illuminate\Queue\SerializesModels;
|
||
|
|
use Illuminate\Queue\InteractsWithQueue;
|
||
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||
|
|
|
||
|
|
class SignActitityMember implements ShouldQueue
|
||
|
|
{
|
||
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||
|
|
protected $user_id;
|
||
|
|
public $tries = 1;
|
||
|
|
/**
|
||
|
|
* Create a new job instance.
|
||
|
|
* 参与活动用户完善性别 编号
|
||
|
|
*
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function __construct($user_id)
|
||
|
|
{
|
||
|
|
$this->user_id = $user_id;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Execute the job.
|
||
|
|
*
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function handle()
|
||
|
|
{
|
||
|
|
//检测该用户是否参与saas端活动
|
||
|
|
$user_id = $this->user_id;
|
||
|
|
$user = User::find($user_id);
|
||
|
|
if(!$user) return ;
|
||
|
|
$m_user_id = $this->matchMerchantUser($user_id);
|
||
|
|
if(!$m_user_id) return ;
|
||
|
|
//参与 但是未编号 订单
|
||
|
|
$orders = TouristOrder::where('type','community')->whereIn('pay_status',[1,4])->where('account_id',$m_user_id)->whereNull('remark')->get();
|
||
|
|
foreach ($orders as $key => $value) {
|
||
|
|
$remark = $this->numMember($value);
|
||
|
|
if(!$remark) continue;
|
||
|
|
$value->update(['remark'=>$remark]);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//给嘉宾编号
|
||
|
|
public function numMember($tourist_order){
|
||
|
|
if($tourist_order->channel == 3 || $tourist_order->channel == '福恋小程序'){
|
||
|
|
$buy_channel = 2;
|
||
|
|
}else{
|
||
|
|
$buy_channel = 0;
|
||
|
|
}
|
||
|
|
//获取当前报名用户的性别
|
||
|
|
if($tourist_order->open_id){
|
||
|
|
$openid = $tourist_order->open_id;
|
||
|
|
}else{
|
||
|
|
$openid = MerchantUser::where('id',$tourist_order->account_id)->value('openid');
|
||
|
|
}
|
||
|
|
$sex = $this->getUserSexByOpenid($openid,$buy_channel);
|
||
|
|
if($sex == 0){
|
||
|
|
$sex = User::where('mobile',$tourist_order->mobile)->value('sex');
|
||
|
|
}
|
||
|
|
if($sex && $sex == 1){
|
||
|
|
//现有男嘉宾数量
|
||
|
|
$male_count = TouristOrder::where('type','community')->where('type_id',$tourist_order->type_id)->where('remark','like',"%男%")->count();
|
||
|
|
//当前男嘉宾数量加1
|
||
|
|
$male_count = $male_count + 1;
|
||
|
|
$remark = $male_count.'男';
|
||
|
|
}elseif($sex && $sex == 2){
|
||
|
|
//现有女嘉宾数量
|
||
|
|
$female_count = TouristOrder::where('type','community')->where('type_id',$tourist_order->type_id)->where('remark','like',"%女%")->count();
|
||
|
|
//当前女嘉宾数量加1
|
||
|
|
$female_count = $female_count + 1;
|
||
|
|
$remark = $female_count.'女';
|
||
|
|
}else{
|
||
|
|
$remark = null;
|
||
|
|
}
|
||
|
|
return $remark;
|
||
|
|
}
|
||
|
|
|
||
|
|
//根据福恋用户id 匹配saas用户id
|
||
|
|
public function matchMerchantUser($user_id){
|
||
|
|
$m_user = MerchantUser::where('user_id',$user_id)->first();
|
||
|
|
if($m_user){
|
||
|
|
return $m_user->id;
|
||
|
|
}
|
||
|
|
$openid = Wechat::where('user_id',$user_id)->value('official_openid');
|
||
|
|
if($openid){
|
||
|
|
$m_user = MerchantUser::where('openid',$openid)->first();
|
||
|
|
if($m_user){
|
||
|
|
return $m_user->id;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
$openid = Viewer::where('user_id',$user_id)->value('openid');
|
||
|
|
if($openid){
|
||
|
|
$m_user = MerchantUser::where('openid',$openid)->first();
|
||
|
|
if($m_user){
|
||
|
|
return $m_user->id;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
$user = User::find($user_id);
|
||
|
|
$m_user = MerchantUser::where('uuid',$user->uuid)->first();
|
||
|
|
if($m_user){
|
||
|
|
return $m_user->id;
|
||
|
|
}
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
//根据openid获取用户性别
|
||
|
|
public function getUserSexByOpenid($openid,$channel=0){
|
||
|
|
$m_user = MerchantUser::where('openid',$openid)->first();
|
||
|
|
if($m_user && $m_user->sex && $m_user->sex != 0){
|
||
|
|
return $m_user->sex;
|
||
|
|
}
|
||
|
|
$viewer = Viewer::where('openid',$openid)->first();
|
||
|
|
if($viewer && $viewer->sex && $viewer->sex != 0){
|
||
|
|
return $viewer->sex;
|
||
|
|
}
|
||
|
|
$user_id = $this->getUseridByOpenid($openid,$channel);
|
||
|
|
if($user_id){
|
||
|
|
$user = User::withTrashed()->find($user_id);
|
||
|
|
if($user && $user->sex){
|
||
|
|
return $user->sex;
|
||
|
|
}
|
||
|
|
$wechat = Wechat::where('user_id',$user_id)->first();
|
||
|
|
if($wechat && $wechat->gender){
|
||
|
|
return $wechat->gender;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
//根据openid 获取用户id
|
||
|
|
//channel 0 saasH5 1福恋h5 2小程序
|
||
|
|
public function getUseridByOpenid($openid,$channel = 0){
|
||
|
|
if(empty($openid) || $openid == 'null') return 0;
|
||
|
|
if($channel == 2){
|
||
|
|
$wechat = Wechat::where('openid',$openid)->first();
|
||
|
|
if($wechat && $wechat->user_id){
|
||
|
|
$user_id = $wechat->user_id;
|
||
|
|
return $user_id;
|
||
|
|
}
|
||
|
|
return 0;
|
||
|
|
}else{
|
||
|
|
$merchant_user = MerchantUser::where('openid',$openid)->first();
|
||
|
|
if($merchant_user && $merchant_user->user_id){
|
||
|
|
$user_id = $merchant_user->user_id;
|
||
|
|
return $user_id;
|
||
|
|
}
|
||
|
|
if(!isset($user_id)){
|
||
|
|
$wechat = Wechat::where('official_openid',$openid)->first();
|
||
|
|
if($wechat && $wechat->user_id){
|
||
|
|
$user_id = $wechat->user_id;
|
||
|
|
return $user_id;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if(!isset($user_id)){
|
||
|
|
$viewer = Viewer::where('openid',$openid)->first();
|
||
|
|
if($viewer && $viewer->user_id){
|
||
|
|
$user_id = $viewer->user_id;
|
||
|
|
return $user_id;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if(!isset($user_id) && $merchant_user){
|
||
|
|
$wechat = Wechat::where('unionid',$merchant_user->unionid)->first();
|
||
|
|
if($wechat){
|
||
|
|
$user_id = $wechat->user_id;
|
||
|
|
return $user_id;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|