bindings;
$rawSql = preg_replace_callback('/\?/', function ($matches) use ($bindings, &$i) {
$item = isset($bindings[$i]) ? $bindings[$i] : $matches[0];
$i++;
return gettype($item) == 'string' ? "'$item'" : $item;
}, $sql->sql);
//记录sql
LoggerFactoryUtil::addSqlMessage($rawSql);
// echo $rawSql, "\n
\n";
});
}
/**
* 获取应用编号
*/
public static function getAppCodeByQuery()
{
return request()->input("wechat_app_code");
}
/**
* 从redis中获取数据
* @param $key string 键
*/
public static function getCacheFromRedis($key)
{
/**
* @var \Redis $redis
*/
$redis = app("redis");
return $redis->get($key);
}
/**
* 设置redis数据的过期时间
* @param $key string 键
* @param $val string 值
* @param $ttl int 过期时间
*/
public static function setRedisCache($key, $val, $ttl)
{
/**
* @var \Redis $redis
*/
$redis = app("redis");
if($ttl==0){
$redis->set($key,$val);
}else{
$redis->setex($key,$ttl,$val);
}
}
/**
* 获取redis锁
* @param $lokKey string 键
* @param $ttl int 过期时间
*/
public static function setRedisLock($lokKey, $ttl)
{
/**
* @var \Redis $redis
*/
$redis = app("redis");
$flag = $redis->set($lokKey,1,["nx","ex"=>$ttl]);
if(!$flag){
throw new CommonException(ErrorEnum::ERROR_REDIS_LOCK);
}
}
/**
* 生成美团推广位
* @param $userId int 用户ID
*/
public static function generateMeiTuanSid($userId)
{
return "meituanSpread:".$userId;
}
/**
* 获取用户的平台推广位
* @param $platformType int 平台
* @param $userId int 用户ID
*/
public static function getPlatformUserSpreadId($platformType,$userId,$userSpreadId="")
{
//获取平台推广位
$platformSid = PlatformSidModel::query()
->where("user_id",$userId)
->where("platform_type",$platformType)
->first();
if($platformSid){
//存在则直接返回
return $platformSid->platform_sid;
}else{
switch ($platformType){
case PlatformTypeEnum::PLATFORM_TAOBAO:
//淘宝
break;
case PlatformTypeEnum::PLATFORM_PINGDUODUO:
//拼多多
break;
case PlatformTypeEnum::PLATFORM_JINGDONG:
//京东
break;
case PlatformTypeEnum::PLATFORM_MEITUAN:
//美团
$sid = self::generateMeiTuanSid($userId);
break;
case PlatformTypeEnum::PLATFORM_FANBUTING:
//平台
break;
default:
throw new CommonException(ErrorEnum::ERROR_EXIST_PLATFORM);
}
if(!$userSpreadId){
//不存在用户自传的推广位,则默认和平台的推广位相等
$userSpreadId = $sid;
}
//写入用户的推广位
PlatformSidModel::query()->insert(
[
"user_id"=>$userId,
"user_sid"=>$userSpreadId,
"platform_type"=>$platformType,
"platform_sid"=>$sid,
"created_at"=>date("Y-m-d H:i:s"),
"updated_at"=>date("Y-m-d H:i:s")
]
);
return $sid;
}
}
}