更新
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
use think\Cache;
|
||||
use think\Db;
|
||||
use think\exception\HttpResponseException;
|
||||
use think\Log;
|
||||
use think\Response;
|
||||
|
||||
if (!function_exists('__')) {
|
||||
@@ -625,7 +626,7 @@ function nickname_filter($username) {
|
||||
// 定义敏感词数组(包含常见变体)
|
||||
$sensitiveWords = [
|
||||
// 核心敏感词
|
||||
'系统管理员', '管理员', '系统管理', '系统', '管理',
|
||||
'系统管理员', '管理员', '系统管理', '系统', '管理','官方',
|
||||
|
||||
// 繁体中文
|
||||
'系統管理員', '管理員', '系統管理', '系統',
|
||||
@@ -804,7 +805,7 @@ function redis_lock_exit($key, $value = 1, $time = 5)
|
||||
$redis = \think\Cache::store('redis')->handler();
|
||||
$is_lock = $redis->setnx($key, $value);
|
||||
if (!$is_lock) {
|
||||
return V(0, '访问频繁,请稍后重试');
|
||||
return V(0, '您的手速太快了!');
|
||||
} else {
|
||||
$redis->setex($key, $time, $value);
|
||||
return true;
|
||||
@@ -826,7 +827,7 @@ function redis_lock_exits($key, $value = 1, $time = 5)
|
||||
// 尝试加锁(设置一个带过期时间的 key,仅当 key 不存在时才设置成功)
|
||||
$is_lock = Cache::has($key);
|
||||
if ($is_lock) {
|
||||
return V(0, '访问频繁,请稍后重试');
|
||||
return V(0, '您的手速太快了!');
|
||||
} else {
|
||||
Cache::set($key, $value, $time);
|
||||
return true;
|
||||
@@ -879,7 +880,7 @@ function generateRandom($num = 0)
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
function generateRandoms($length = 4)
|
||||
function generateRandoms($length = 6)
|
||||
{
|
||||
$min = pow(10, $length - 1);
|
||||
$max = pow(10, $length) - 1;
|
||||
@@ -940,12 +941,130 @@ function get_user_constellation($birthday)
|
||||
}
|
||||
|
||||
//数字格式话
|
||||
function numberFormat($number) {
|
||||
$num = round($number / 10000, 2);
|
||||
if ($num > 1) {
|
||||
$number = $num . 'w';
|
||||
//function numberFormat($number) {
|
||||
// $num = round($number / 10000, 2);
|
||||
// if ($num > 1) {
|
||||
// $number = $num . 'w';
|
||||
// }
|
||||
// return $number;
|
||||
//}
|
||||
|
||||
/**
|
||||
* 数字格式化方法
|
||||
* @param int|float $number 需要格式化的数字
|
||||
* @param string $format 格式类型: 'short'(默认简写), 'thousand'(千分位), 'custom'(自定义)
|
||||
* @param int $decimals 小数位数
|
||||
* @param array $options 其他选项
|
||||
* @return string 格式化后的数字字符串
|
||||
*/
|
||||
function numberFormat($number, $format = 'short', $decimals = 2, $options = []) {
|
||||
|
||||
// 确保输入是数字
|
||||
if (!is_numeric($number)) {
|
||||
return '0';
|
||||
}
|
||||
return $number;
|
||||
|
||||
switch ($format) {
|
||||
case 'short':
|
||||
return formatShortNumber($number, $decimals);
|
||||
|
||||
case 'thousand':
|
||||
return formatThousandNumber($number, $decimals);
|
||||
|
||||
case 'custom':
|
||||
return formatCustomNumber($number, $options);
|
||||
|
||||
default:
|
||||
return formatShortNumber($number, $decimals);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 简写格式化数字 (如: 1.23w, 2.56亿)
|
||||
*/
|
||||
function formatShortNumber($number, $decimals = 2) {
|
||||
$units = ['', 'w', '亿', '万亿'];
|
||||
$unit_index = 0;
|
||||
|
||||
// 处理负数
|
||||
$is_negative = $number < 0;
|
||||
$number = abs($number);
|
||||
|
||||
// 根据数值大小选择合适的单位
|
||||
while ($number >= 10000 && $unit_index < count($units) - 1) {
|
||||
$number /= 10000;
|
||||
$unit_index++;
|
||||
}
|
||||
|
||||
// 格式化数字
|
||||
$formatted = round($number, $decimals);
|
||||
|
||||
// 如果是整数且小数部分为0,则不显示小数
|
||||
if ($decimals > 0 && floor($formatted) == $formatted) {
|
||||
$formatted = number_format($formatted, 0);
|
||||
} else {
|
||||
$formatted = number_format($formatted, $decimals, '.', '');
|
||||
}
|
||||
|
||||
return ($is_negative ? '-' : '') . $formatted . $units[$unit_index];
|
||||
}
|
||||
|
||||
/**
|
||||
* 千分位格式化数字 (如: 1,234,567.89)
|
||||
*/
|
||||
function formatThousandNumber($number, $decimals = 2) {
|
||||
return number_format($number, $decimals, '.', ',');
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义格式化数字
|
||||
*/
|
||||
function formatCustomNumber($number, $options = []) {
|
||||
$defaults = [
|
||||
'decimals' => 2,
|
||||
'decimal_point' => '.',
|
||||
'thousands_sep' => ',',
|
||||
'suffix' => '',
|
||||
'prefix' => ''
|
||||
];
|
||||
|
||||
$options = array_merge($defaults, $options);
|
||||
|
||||
$formatted = number_format($number, $options['decimals'], $options['decimal_point'], $options['thousands_sep']);
|
||||
|
||||
return $options['prefix'] . $formatted . $options['suffix'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 简化版本的数字格式化 (改进原方法)
|
||||
* @param int|float $number 需要格式化的数字
|
||||
* @param int $decimals 小数位数
|
||||
* @return string 格式化后的数字字符串
|
||||
*/
|
||||
function simpleNumberFormat($number, $decimals = 2) {
|
||||
if (!is_numeric($number)) {
|
||||
return '0';
|
||||
}
|
||||
|
||||
// 处理负数
|
||||
$is_negative = $number < 0;
|
||||
$number = abs($number);
|
||||
|
||||
if ($number >= 100000000) { // 1亿以上
|
||||
$result = round($number / 100000000, $decimals) . '亿';
|
||||
} elseif ($number >= 10000) { // 1万以上
|
||||
$result = round($number / 10000, $decimals) . 'w';
|
||||
} elseif ($number >= 1000) { // 1千以上
|
||||
$result = round($number / 1000, $decimals) . 'k';
|
||||
} else {
|
||||
$result = round($number, $decimals);
|
||||
// 如果是整数且小数部分为0,则不显示小数
|
||||
if (floor($result) == $result) {
|
||||
$result = (int)$result;
|
||||
}
|
||||
}
|
||||
|
||||
return ($is_negative ? '-' : '') . $result;
|
||||
}
|
||||
|
||||
function generateRandomRoomName() {
|
||||
@@ -1051,7 +1170,7 @@ function handelCharge($where,$data){
|
||||
return 0;
|
||||
}
|
||||
//查询是否首充
|
||||
$is_first_charge = db::name('vs_user_money_log')->where('user_id',$orderModel['user_id'])->where('change_type',2)->where('money_type',1)->count();
|
||||
$is_first_charge = db::name('vs_user_money_log')->where('user_id',$orderModel['user_id'])->where('change_type',2)->where('money_type',1)->where(['createtime'=>['>=',"1760666400"]])->count();
|
||||
//添加充值记录
|
||||
$res2 = db::name('vs_user_money_log')->insert([
|
||||
'user_id' => $orderModel['user_id'],
|
||||
@@ -1066,14 +1185,6 @@ function handelCharge($where,$data){
|
||||
db::rollback();
|
||||
return 0;
|
||||
}
|
||||
//首充
|
||||
if($is_first_charge == 0){
|
||||
$first_recharge = model('Activities')->first_charge_gift_send($orderModel['user_id'],$orderModel['money']);
|
||||
// if($first_recharge['code'] != 1){
|
||||
// db::rollback();
|
||||
// return 0;
|
||||
// }
|
||||
}
|
||||
|
||||
//给上级返佣
|
||||
//获取上级
|
||||
@@ -1085,9 +1196,29 @@ function handelCharge($where,$data){
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
db::commit();
|
||||
|
||||
//活动
|
||||
//首充
|
||||
if($is_first_charge == 0){
|
||||
model('Activities')->first_charge_gift_send($orderModel['user_id'],$orderModel['money']);
|
||||
}
|
||||
//活动
|
||||
if($orderModel['type_id'] == 6){
|
||||
$orderModel['type_params'] = 2;
|
||||
}elseif(in_array($orderModel['type_id'],[14,15,16])){
|
||||
$orderModel['type_params'] = 3;
|
||||
}
|
||||
switch ($orderModel['type_params']){
|
||||
case 2:
|
||||
//天降好礼
|
||||
model('Activities')->drop_gift_send($orderModel['user_id'],$orderModel['money']);
|
||||
break;
|
||||
case 3:
|
||||
//新人好礼
|
||||
model('Activities')->new_charge_gift_send($orderModel['user_id'],$orderModel['money']);
|
||||
}
|
||||
|
||||
return 1;
|
||||
} catch (\Exception $e){
|
||||
db::rollback();
|
||||
@@ -1102,7 +1233,9 @@ function handelCharge($where,$data){
|
||||
function coin_earning($all_gift_price,$ratio){
|
||||
//rmb_coin_ratio 人民币转换金币的比例
|
||||
//金币转换人民币
|
||||
return $all_gift_price * $ratio / 100 / get_system_config_value('rmb_coin_ratio');
|
||||
//小数点保留4位
|
||||
$result = $all_gift_price * $ratio / 100 / get_system_config_value('rmb_coin_ratio');
|
||||
return round($result, 4);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1160,6 +1293,22 @@ function getMillisecond() {
|
||||
return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
|
||||
}
|
||||
|
||||
/*
|
||||
* 写入日志到redis
|
||||
* @param string $key 日志key
|
||||
* @param array $logData 日志数据
|
||||
*/
|
||||
function write_log_redis($key = 'log',$logData = [],$time = 7){
|
||||
$redis = new \Redis();
|
||||
// 连接到Redis服务器
|
||||
$redis->connect(config('redis.host'), config('redis.port')); // 根据实际配置调整主机和端口
|
||||
// 选择数据库2
|
||||
$redis->select(2);
|
||||
$key = $key.'_'.date('Y-m-d-H-i-s');
|
||||
$expire = 86400 * $time;
|
||||
$redis->setex($key, $expire, json_encode($logData));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user