初始化仓库
This commit is contained in:
376
common/helpers/FuncHelper.php
Normal file
376
common/helpers/FuncHelper.php
Normal file
@@ -0,0 +1,376 @@
|
||||
<?php
|
||||
|
||||
namespace common\helpers;
|
||||
|
||||
use Yii;
|
||||
|
||||
/**
|
||||
* 自定义辅助函数,处理其他杂项
|
||||
*/
|
||||
class FuncHelper
|
||||
{
|
||||
/**
|
||||
* ---------------------------------------
|
||||
* ajax标准返回格式
|
||||
* @param $code integer 错误码
|
||||
* @param $msg string 提示信息
|
||||
* @param $obj mixed 返回数据
|
||||
* @return void
|
||||
* ---------------------------------------
|
||||
*/
|
||||
public static function ajaxReturn($code = 0, $msg = 'success', $obj = '')
|
||||
{
|
||||
/* api标准返回格式 */
|
||||
$json = array(
|
||||
'code' => $code,
|
||||
'msg' => $msg,
|
||||
'obj' => $obj,
|
||||
);
|
||||
header('Content-Type:application/json; charset=utf-8');
|
||||
exit(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
* ---------------------------------------
|
||||
* 分析枚举类型字段值 格式 a:名称1,b:名称2
|
||||
* @param $string string 字符串
|
||||
* @return mixed
|
||||
* ---------------------------------------
|
||||
*/
|
||||
public static function parse_field_attr($string)
|
||||
{
|
||||
if (0 === strpos($string, ':')) {
|
||||
// 采用函数定义
|
||||
return eval(substr($string, 1) . ';');
|
||||
}
|
||||
$array = preg_split('/[,;\r\n]+/', trim($string, ",;\r\n"));
|
||||
if (strpos($string, ':')) {
|
||||
$value = array();
|
||||
foreach ($array as $val) {
|
||||
[$k, $v] = explode(':', $val);
|
||||
$value[$k] = $v;
|
||||
}
|
||||
} else {
|
||||
$value = $array;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the directory by pathname
|
||||
* @param string $pathname The directory path.
|
||||
* @param int $mode
|
||||
* @return bool
|
||||
*/
|
||||
public static function make_dir($pathname, $mode = 0777)
|
||||
{
|
||||
if (is_dir($pathname)) {
|
||||
return true;
|
||||
}
|
||||
if (is_dir(dirname($pathname))) {
|
||||
return mkdir($pathname, $mode);
|
||||
}
|
||||
self::make_dir(dirname($pathname));
|
||||
return mkdir($pathname, $mode);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $words
|
||||
* @param string $separator
|
||||
* @return string
|
||||
* 下划线转驼峰或者字符串第一个字母大写
|
||||
*/
|
||||
function hump($words, $separator = '_')
|
||||
{
|
||||
if (strpos($words, $separator) !== false) {
|
||||
$newWords = str_replace($separator, " ", strtolower($words));
|
||||
return ltrim(str_replace(" ", "", ucwords($newWords)), $separator);
|
||||
} else {
|
||||
return ucfirst($words);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成 前缀+24位数字的订单号
|
||||
* @param string $prefix 前缀
|
||||
* @return string
|
||||
*/
|
||||
public static function generate_order_no($prefix = '', $length = 6)
|
||||
{
|
||||
$randLen = $length;
|
||||
$id = base_convert(substr(uniqid(), 0 - $randLen), 16, $length);
|
||||
if (strlen($id) > $length) {
|
||||
$id = substr($id, -$length);
|
||||
} elseif (strlen($id) < $length) {
|
||||
$rLen = $length - strlen($id);
|
||||
$id = $id . rand(pow($length, $rLen - 1), pow($length, $rLen) - 1);
|
||||
}
|
||||
$dateTimeStr = date('YmdHis');
|
||||
return $prefix . $dateTimeStr . $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据身份证获取年龄
|
||||
* @param string $idno
|
||||
* @return false|int|string
|
||||
*/
|
||||
public static function getAgeFromIdNo($idno = '')
|
||||
{
|
||||
$btime = strtotime(substr($idno, 6, 8));//idno是身份证号 截取日期并转为时间戳
|
||||
$byear = date('Y', $btime);
|
||||
$bmonth = date('m', $btime);
|
||||
$bday = date('d', $btime);
|
||||
$curYear = date('Y');
|
||||
$curMoth = date('m');
|
||||
$curDay = date('d');
|
||||
$age = $curYear - $byear;
|
||||
if ($curMoth < $bmonth || ($curMoth == $bmonth && $curDay < $bday)) {
|
||||
$age--;
|
||||
}
|
||||
return $age;
|
||||
}
|
||||
|
||||
//获取工作年限
|
||||
public static function getYears($btime)
|
||||
{
|
||||
$byear = date('Y', $btime);
|
||||
$bmonth = date('m', $btime);
|
||||
$bday = date('d', $btime);
|
||||
$curYear = date('Y');
|
||||
$curMoth = date('m');
|
||||
$curDay = date('d');
|
||||
$age = $curYear - $byear;
|
||||
if ($curMoth < $bmonth || ($curMoth == $bmonth && $curDay < $bday)) {
|
||||
$age--;
|
||||
}
|
||||
return $age;
|
||||
}
|
||||
|
||||
//获取前
|
||||
public static function time_tran($the_time)
|
||||
{
|
||||
$now_time = time();
|
||||
$show_time = $the_time;
|
||||
$dur = $now_time - $show_time;
|
||||
if ($dur < 0) {
|
||||
return $the_time;
|
||||
} else {
|
||||
if ($dur < 60) {
|
||||
return $dur . '秒前';
|
||||
} else {
|
||||
if ($dur < 3600) {
|
||||
return floor($dur / 60) . '分钟前';
|
||||
} else {
|
||||
if ($dur < 86400) {
|
||||
return floor($dur / 3600) . '小时前';
|
||||
} else {
|
||||
if ($dur < 259200) {//3天内
|
||||
return floor($dur / 86400) . '天前';
|
||||
} else {
|
||||
return $the_time;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//获取还剩多少天多少小时多少分多少秒
|
||||
//$diff两个数之差
|
||||
public static function time_left($diff)
|
||||
{
|
||||
$str = '';
|
||||
$date = floor($diff / 86400);
|
||||
if ($date) {
|
||||
$str .= $date . '天';
|
||||
}
|
||||
|
||||
$hour = floor($diff % 86400 / 3600);
|
||||
if ($hour) {
|
||||
$str .= $hour . '小时';
|
||||
}
|
||||
$minute = floor($diff % 86400 % 3600 / 60);
|
||||
if ($minute) {
|
||||
$str .= $minute . '分';
|
||||
}
|
||||
$second = floor($diff % 86400 % 3600 % 60);
|
||||
if ($second) {
|
||||
$str .= $second . '秒';
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件真实路径
|
||||
*
|
||||
* @param string $type 模块
|
||||
* @param string $path 路径
|
||||
* @return string
|
||||
*/
|
||||
public static function getRealFilepath(string $type, string $path): string
|
||||
{
|
||||
return __DIR__ . '/../../web/' . $type . '/' . trim($path, '/');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成随机字符串
|
||||
*/
|
||||
public static function uuid()
|
||||
{
|
||||
if (function_exists('com_create_guid')) {
|
||||
return com_create_guid();
|
||||
} else {
|
||||
$charid = md5(uniqid(rand(), true));
|
||||
$hyphen = chr(45);// "-"
|
||||
$uuid = substr($charid, 0, 8) . $hyphen
|
||||
. substr($charid, 8, 4) . $hyphen
|
||||
. substr($charid, 12, 4) . $hyphen
|
||||
. substr($charid, 16, 4) . $hyphen
|
||||
. substr($charid, 20, 12);
|
||||
|
||||
return $uuid;
|
||||
}
|
||||
}
|
||||
|
||||
//生成推广码
|
||||
public static function create_invite_code()
|
||||
{
|
||||
$num = rand(1111, 9999);
|
||||
$str = range('A', 'Z');
|
||||
unset($str[array_search('O', $str)]);
|
||||
shuffle($str);
|
||||
$inviteCode = '';
|
||||
$arr_len = count($str);
|
||||
for ($i = 0; $i < 4; $i++) {
|
||||
$rand = mt_rand(0, $arr_len - 1);
|
||||
$inviteCode .= $str[$rand];
|
||||
}
|
||||
$inviteCode=str_shuffle($num.$inviteCode);
|
||||
return $inviteCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当天时间戳
|
||||
*/
|
||||
public static function getDayTime(){
|
||||
$year = date("Y");
|
||||
$month = date("m");
|
||||
$day = date("d");
|
||||
$start_time = mktime(0,0,0,$month,$day,$year);//当天开始时间戳
|
||||
$end_time= mktime(23,59,59,$month,$day,$year);//当天结束时间戳
|
||||
|
||||
return [
|
||||
'start_time'=>$start_time,
|
||||
'end_time'=>$end_time,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
//返回今天的开始时间和结束时间
|
||||
public static function day_now()
|
||||
{
|
||||
$arr = [
|
||||
mktime(0, 0, 0, date('m'), date('d'), date('Y')),
|
||||
mktime(23, 59, 59, date('m'), date('d'), date('Y')),
|
||||
];
|
||||
return $arr;
|
||||
}
|
||||
|
||||
//返回昨天开始结束时间 改造上边的方法
|
||||
public static function day_yesterday()
|
||||
{
|
||||
$yesterday = date('d') - 1;
|
||||
$arr = [
|
||||
mktime(0, 0, 0, date('m'), $yesterday, date('Y')),
|
||||
mktime(23, 59, 59, date('m'), $yesterday, date('Y')),
|
||||
];
|
||||
return $arr;
|
||||
}
|
||||
|
||||
//获取当前时间的本周开始结束时间
|
||||
public static function week_now()
|
||||
{
|
||||
$arr = [
|
||||
strtotime(date('Y-m-d', strtotime("-1 week Monday", time()))),
|
||||
strtotime(date('Y-m-d', strtotime("+0 week Sunday", time()))) - 1
|
||||
];
|
||||
|
||||
return $arr;
|
||||
}
|
||||
|
||||
//返回上周开始和结束的时间戳
|
||||
public static function last_week()
|
||||
{
|
||||
// 1520179200 1520783999
|
||||
$arr = [
|
||||
// date('Y-m-d',strtotime('last week Monday',time())),
|
||||
// date('Y-m-d',strtotime('last week Sunday',time()))
|
||||
strtotime('last week Monday', time()),
|
||||
strtotime('last week Sunday +1 days -1 seconds', time())
|
||||
];
|
||||
return $arr;
|
||||
}
|
||||
|
||||
// 返回本月开始和结束的时间戳
|
||||
public static function now_month()
|
||||
{
|
||||
$arr = [
|
||||
mktime(0, 0, 0, date('m'), 1, date('Y')),
|
||||
mktime(23, 59, 59, date('m'), date('t'), date('Y'))
|
||||
];
|
||||
return $arr;
|
||||
}
|
||||
|
||||
// 返回某一年某一月的开始和结束的时间戳
|
||||
public static function month_year($year, $month)
|
||||
{
|
||||
return [
|
||||
$begin = mktime(0, 0, 0, $month, 1, $year),
|
||||
$end = mktime(23, 59, 59, $month, date('t', $begin), $year)
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
// 返回当前季度的开始时间和结束时间
|
||||
public static function now_quarter($month = 0)
|
||||
{
|
||||
$month = $month != 0 ? $month : date('n');
|
||||
$season = ceil($month / 3);
|
||||
return [
|
||||
mktime(0, 0, 0, ($season - 1) * 3 + 1, 1, date('Y')),
|
||||
mktime(0, 0, 0, $season * 3, date('t'), date('Y')) - 1
|
||||
];
|
||||
}
|
||||
|
||||
// 返回上个月开始和结束的时间戳
|
||||
public static function lastMonth()
|
||||
{
|
||||
$begin = mktime(0, 0, 0, date('m') - 1, 1, date('Y'));
|
||||
$end = mktime(23, 59, 59, date('m') - 1, date('t', $begin), date('Y'));
|
||||
|
||||
return [$begin, $end];
|
||||
}
|
||||
|
||||
// 返回某天的结束时间戳
|
||||
public static function getDayBE($day) {
|
||||
|
||||
return array(strtotime($day), strtotime($day)+24*3600-1);
|
||||
|
||||
}
|
||||
|
||||
public static function is_not_null($str){
|
||||
//json_encode返回的是字符串, 而json_decode返回的是对象.
|
||||
return is_null(json_decode($str));
|
||||
}
|
||||
|
||||
//是否药性相畏
|
||||
public static function is_drug_wei(){
|
||||
|
||||
}
|
||||
|
||||
//是否药性相反
|
||||
public static function is_drug_opposite(){
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user