Browse Source

随机图片

master
wanghongjun 2 years ago
parent
commit
0f82bfe8be
  1. 55
      app/common.php
  2. 2
      app/controller/AdminZoneManage.php
  3. 14
      app/logic/Zone.php

55
app/common.php

@ -136,11 +136,62 @@ function format_phone_number($phoneNumber):string
*/
function rand_avatar()
{
$avatarArr = config('custom.avatar') ?: [];
$rand = rand(0,count($avatarArr));
$avatarArr = return_image_name('avatar') ?: config('custom.avatar');
$rand = rand(0,count($avatarArr)-1);
return $avatarArr[$rand] ?: '';
}
/**
* 获取目录下面的图片文件
* @param string $path
* @return array
*/
function return_image_name(string $path = 'icon'):array
{
$public_path = public_path();
$imageDir = $public_path . '/storage/'.$path;
$files = scandir($imageDir); // 获取目标文件夹下的文件名
// 过滤掉当前目录('.')和上级目录('..')
$files = array_diff($files, ['.', '..']);
$imageExtensions = ['jpg', 'jpeg', 'png', 'gif'];
foreach ($files as $key => $imageName) {
# 获取文件后缀
$extension = pathinfo($imageName, PATHINFO_EXTENSION);
# 过滤不是图片的文件或目录
if (!in_array(strtolower($extension),$imageExtensions)) {
unset($files[$key]);
continue;
}
# 组合路径
$files[$key] = $path . '/' . $imageName;
}
# 排序覆盖数组索引
sort($files);
return $files;
}
/**
* 返回图片链接
* @param string $path // 获取目录下面的图片文件
* @param bool $is_http // true = 图片完整访问路径
* @return string
*/
function rand_icon(string $path = 'icon',bool $is_http = false):string
{
$files = return_image_name($path);
if (empty($files)) return '';
$rand = rand(0,count($files)-1);
$imageUrl = $files[$rand] ?: '';
if ($is_http) {
$domain = \think\facade\Request::instance()->domain();
$url = config('filesystem.disks.public.url');
return $domain . $url . '/' . $imageUrl;
}
return $imageUrl;
}
/**
* 返回金额
* @param $number

2
app/controller/AdminZoneManage.php

@ -143,7 +143,7 @@ class AdminZoneManage extends BaseController
$ZoneGoodsParam->save([
'zone_goods_id' => $zone_goods_id,
'amount' => $param['amount'],
'image' => rand_avatar(),
'image' => $param['amount'] > 0 ? rand_icon('awards_icon') : rand_icon(),
'probability' => $param['probability'] / 100,
'create_time' => date("Y-m-d H:i:s",time())
]);

14
app/logic/Zone.php

@ -184,9 +184,12 @@ class Zone
/**
* 获取刮刮乐信息(概率算法)
* @return array
* @param array $patterns // 数据 和 占比
* @param int $direction // 纵向数量
* @param int $transverse // 横向数量
* @return array[]
*/
public static function getWinningPrize($patterns)
public static function getWinningPrize(array $patterns,int $direction = 3,int $transverse = 4)
{
// $patterns = [
// ['image' => 'prize1.png', 'probability' => 0.3], // 奖项图案,概率为30%
@ -215,14 +218,11 @@ class Zone
}
unset($pattern);
$numberOfGroups = 3; // 要生成的图案组数
$groupNum = 4; // 要生成的图案组数
$data = [];
$save_data = [];
for ($i = 0; $i < $numberOfGroups; $i++) {
for ($i = 0; $i < $direction; $i++) {
for ($j = 0; $j < $groupNum; $j++) { // 每组生成 3 个图案
for ($j = 0; $j < $transverse; $j++) { // 每组生成 3 个图案
$selectedPattern = null;
$randomNumber = mt_rand() / mt_getrandmax(); // 生成 0 到 1 之间的随机数

Loading…
Cancel
Save