function.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. <?php
  2. function appExec($module, $class, $action)
  3. {
  4. S('MODULE', $module);
  5. S("CONTROLLER", $class);
  6. S("ACTION", $action);
  7. S('URL_PATH', "/{$module}/{$class}/{$action}");
  8. $ctrl = \App::make("\\App\\Http\\Controllers\\" . ucfirst($module) . "\\" . ucfirst($class) . "Controller");
  9. return \App::call([$ctrl, $action]);
  10. }
  11. /**
  12. * 计算当前用时
  13. *
  14. * @param string $runName
  15. * @param integer $return
  16. * @return void
  17. */
  18. function computeTime($runName='',$return=0,$start=1){
  19. $curTime= get_millisecond();
  20. $oldTime=LARAVEL_START;
  21. $numTime=$curTime-(intval($oldTime)*1000);
  22. if($return){
  23. return array('curTime'=>$curTime,'numTime'=>$numTime,'runName'=>$runName);
  24. }else{
  25. echo "<pre>执行{$runName} 功能,当前时间为:{$curTime},累积用时: {$numTime}</pre>";
  26. return;
  27. }
  28. }
  29. function get_millisecond()
  30. {
  31. list($usec, $sec) = explode(" ", microtime());
  32. $msec = round($usec * 1000);
  33. return $sec . $msec;
  34. }
  35. //获取当日或指定日期年、月、日、周、季
  36. function GetpartTime($date=''){
  37. $date = empty($date)?date('Y-m-d',time()):$date;
  38. $tstr = strtotime($date);
  39. $t = array();
  40. $t['year'] = date('Y',$tstr);
  41. $t['month'] = date('m',$tstr);
  42. $t['day'] = date('d',$tstr);
  43. $t['season'] = ceil($t['month']/3);
  44. /*$time = $t['year'] . '-' . $t['month'];
  45. $weekday = date('w', strtotime($time)); //获取1号是周几
  46. if ($weekday == 1) { //1号是周一
  47. $firstWeekDay = 7;
  48. } elseif ($weekday == 0) { //1号是周日
  49. $firstWeekDay = 1;
  50. } else {
  51. $firstWeekDay = 8 - $weekday;
  52. }
  53. $t['week'] = 1 + ceil(($t['day'] - $firstWeekDay) / 7);*/
  54. $t['week'] = date('W', $tstr);
  55. $t['wyear'] = ($t['month']==12 && $t['week']==1)?($t['year']+1):$t['year'];
  56. return $t;
  57. }
  58. //检测是否有权限,有权限返回True,没有权限false
  59. function checkRriv($code)
  60. {
  61. if (($re=\App\Models\Role::hasRoot($code)) == 1) {
  62. return true;
  63. }
  64. return false;
  65. }
  66. function arrayToOptions($data, $key, $val)
  67. {
  68. $options = array();
  69. if (is_array($data) && count($data)) {
  70. foreach ($data as $k => $value) {
  71. $options[$value[$key]] = $value[$val];
  72. }
  73. }
  74. return $options;
  75. }
  76. function arrayToNumber($data, $field = array())
  77. {
  78. if (is_array($data) && count($data)) {
  79. foreach ($data as $k => $value) {
  80. foreach ($value as $key => $v) {
  81. if (in_array($key, $field)) {
  82. $data[$k][$key] = intval(round(floatval($v) * 100)) / 100;
  83. }
  84. }
  85. }
  86. }
  87. return $data;
  88. }
  89. function responseToJson($status, $msg = '', $data = '')
  90. {
  91. $return = array(); //返回数组
  92. //组装状态码和返回数据
  93. if ($status < 0) {
  94. $return['status'] = $status;
  95. $return['data'] = $data;
  96. } else {
  97. if (!is_numeric($status)) {
  98. $return['data'] = $status;
  99. $return['status'] = 1;
  100. } else {
  101. $return['status'] = $status;
  102. $return['data'] = $data;
  103. }
  104. }
  105. //组装返回信息
  106. if (empty($msg)) {
  107. $return['msg'] = trans('error.' . $return['status']);
  108. } else {
  109. $return['msg'] = $msg;
  110. }
  111. //返回json数据
  112. return response()->json($return);
  113. }
  114. /**
  115. *密码加密码
  116. */
  117. function GenEncryption()
  118. {
  119. srand((double) microtime() * 1000000); //create a random number feed.
  120. $ychar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
  121. $list = explode(",", $ychar);
  122. $authnum = "";
  123. for ($i = 0; $i < 6; $i++) {
  124. $randnum = rand(0, 61); // 10+26;
  125. $authnum .= $list[$randnum];
  126. }
  127. return $authnum;
  128. }
  129. //密码加密
  130. function GenPassword($password)
  131. {
  132. $Enc = GenEncryption();
  133. $Pwd = md5(md5($Enc . $password));
  134. return array("encryption" => $Enc, "password" => $Pwd);
  135. }
  136. //密码验证
  137. function VerPassword($checkpwd, $enc, $ypwd)
  138. {
  139. $VerPwd = md5(md5($enc . $checkpwd));
  140. if ($VerPwd == $ypwd) {
  141. unset($VerPwd);
  142. return true;
  143. } else {
  144. unset($VerPwd);
  145. return false;
  146. }
  147. }
  148. //订单号
  149. function OrderID($prefix = '')
  150. {
  151. $num = mt_rand(100, 999);
  152. list($s, $m) = explode(' ', microtime());
  153. $order = date("YmdHis") . ($s * 1000000) . $num;
  154. return $prefix . $order;
  155. }
  156. //identity生产
  157. function UUID()
  158. {
  159. $prefix = '';
  160. $uuid = '';
  161. $str = md5(uniqid(mt_rand(), true));
  162. $uuid = substr($str, 0, 8) . '-';
  163. $uuid .= substr($str, 8, 4) . '-';
  164. $uuid .= substr($str, 12, 4) . '-';
  165. $uuid .= substr($str, 16, 4) . '-';
  166. $uuid .= substr($str, 20, 12);
  167. return $prefix . $uuid;
  168. }
  169. function S($key, $value = '')
  170. {
  171. if (!isset($GLOBALS[$key]) && empty($value)) {
  172. return -1;
  173. }
  174. if (isset($GLOBALS[$key]) && empty($value)) {
  175. return $GLOBALS[$key];
  176. }
  177. return $GLOBALS[$key] = $value;
  178. }
  179. /**
  180. * 获取客户端真实IP
  181. */
  182. function GETIP()
  183. {
  184. global $ip;
  185. if (getenv("HTTP_CLIENT_IP")) {
  186. $ip = getenv("HTTP_CLIENT_IP");
  187. } else if (getenv("HTTP_X_FORWARDED_FOR")) {
  188. $ip = getenv("HTTP_X_FORWARDED_FOR");
  189. } else if (getenv("REMOTE_ADDR")) {
  190. $ip = getenv("REMOTE_ADDR");
  191. } else {
  192. $ip = "Unknow";
  193. }
  194. return $ip;
  195. }
  196. function OperationLog($id, $opt, $data)
  197. {
  198. $data = array(
  199. 'identity' => UUID(),
  200. 'status' => 1,
  201. 'ip' => GETIP(),
  202. 'operation_time' => date('Y-m-d H:i:s', time()),
  203. 'system_identity' => $id,
  204. 'operation' => vsprintf(trans('operation.' . $opt), $data),
  205. );
  206. $db = new \App\Models\System_log;
  207. return $db->insertData($data);
  208. }
  209. function arrayToNum($data, $field = array())
  210. {
  211. if (is_array($data) && count($data)) {
  212. foreach ($data as $k => $value) {
  213. if (in_array($k, $field)) {
  214. $data[$k] = intval(floatval($value) * 100) / 100;
  215. }
  216. }
  217. }
  218. return $data;
  219. }
  220. //邮箱中间星号
  221. function emailHide($email)
  222. {
  223. if (!empty($email)) {
  224. $arr = explode('@', $email);
  225. if (is_array($arr)) {
  226. $rest = substr($arr[0], 2, -2);
  227. $arr[0] = str_replace($rest, str_repeat('*', strlen($rest)), $arr[0]);
  228. $email = implode('@', $arr);
  229. }
  230. }
  231. return $email;
  232. }
  233. //手机中间星号
  234. function phoneHide($phone)
  235. {
  236. if (!empty($phone)) {
  237. $phone = substr_replace($phone, '****', 3, 4);
  238. }
  239. return $phone;
  240. }
  241. //用户名中间星号
  242. function userHide($user_name)
  243. {
  244. $len = strlen($user_name) / 2;
  245. return substr_replace($user_name, str_repeat('*', $len), ceil(($len) / 2), $len);
  246. }
  247. //银行卡号中间星号
  248. function bankHide($bank)
  249. {
  250. //截取银行卡号前4位
  251. $prefix = substr($bank, 0, 4);
  252. //截取银行卡号后4位
  253. $suffix = substr($bank, -4, 4);
  254. $maskBankCardNo = $prefix . " ************ " . $suffix;
  255. return $maskBankCardNo;
  256. }
  257. function toLog($data){
  258. file_put_contents();
  259. }
  260. //生成token
  261. function createToken(){
  262. $enc = GenEncryption();
  263. $time = time();
  264. $token = substr(uniqid($enc . $time), 0, 35);
  265. return $token;
  266. }
  267. //更新token
  268. function refreshToken($admin_id){
  269. $db=new \App\Models\System_user;
  270. $token=createToken();
  271. $res=$db->refreshToken($admin_id,$token);
  272. if($res>0){
  273. return $token;
  274. }
  275. return $res;
  276. }
  277. //检测token
  278. function checkToken($admin_id,$token){
  279. $db=new \App\Models\System_user;
  280. return $db->checkToken($admin_id,$token);
  281. }
  282. //保留小数位数
  283. function floatPointDigit($data,$long=2){
  284. $long = intval($long) ;
  285. $for1 = "%.".$long."f" ;
  286. $for2 = "%.".($long+1)."f" ;
  287. return sprintf($for1,substr(sprintf($for2, $data), 0, -1));
  288. }