function.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  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. {
  20. $curTime = get_millisecond();
  21. $oldTime = LARAVEL_START;
  22. $numTime = $curTime - (intval($oldTime) * 1000);
  23. if ($return) {
  24. return array('curTime' => $curTime, 'numTime' => $numTime, 'runName' => $runName);
  25. } else {
  26. echo "<pre>执行{$runName} 功能,当前时间为:{$curTime},累积用时: {$numTime}</pre>";
  27. return;
  28. }
  29. }
  30. function get_millisecond()
  31. {
  32. list($usec, $sec) = explode(" ", microtime());
  33. $msec = round($usec * 1000);
  34. return $sec . $msec;
  35. }
  36. //获取当日或指定日期年、月、日、周、季
  37. function GetpartTime($date = '')
  38. {
  39. $date = empty($date) ? date('Y-m-d', time()) : $date;
  40. $tstr = strtotime($date);
  41. $t = array();
  42. $t['year'] = date('Y', $tstr);
  43. $t['month'] = date('m', $tstr);
  44. $t['day'] = date('d', $tstr);
  45. $t['season'] = ceil($t['month'] / 3);
  46. /*$time = $t['year'] . '-' . $t['month'];
  47. $weekday = date('w', strtotime($time)); //获取1号是周几
  48. if ($weekday == 1) { //1号是周一
  49. $firstWeekDay = 7;
  50. } elseif ($weekday == 0) { //1号是周日
  51. $firstWeekDay = 1;
  52. } else {
  53. $firstWeekDay = 8 - $weekday;
  54. }
  55. $t['week'] = 1 + ceil(($t['day'] - $firstWeekDay) / 7);*/
  56. $t['week'] = date('W', $tstr);
  57. $t['wyear'] = ($t['month'] == 12 && $t['week'] == 1) ? ($t['year'] + 1) : $t['year'];
  58. return $t;
  59. }
  60. //检测是否有权限,有权限返回True,没有权限false
  61. function checkRriv($code)
  62. {
  63. if (($re = \App\Models\Role::hasRoot($code)) == 1) {
  64. return true;
  65. }
  66. return false;
  67. }
  68. function arrayToOptions($data, $key, $val)
  69. {
  70. $options = array();
  71. if (is_array($data) && count($data)) {
  72. foreach ($data as $k => $value) {
  73. $options[$value[$key]] = $value[$val];
  74. }
  75. }
  76. return $options;
  77. }
  78. function arrayToNumber($data, $field = array())
  79. {
  80. if (is_array($data) && count($data)) {
  81. foreach ($data as $k => $value) {
  82. foreach ($value as $key => $v) {
  83. if (in_array($key, $field)) {
  84. $data[$k][$key] = intval(round(floatval($v) * 100)) / 100;
  85. }
  86. }
  87. }
  88. }
  89. return $data;
  90. }
  91. function responseToJson($status, $msg = '', $data = '')
  92. {
  93. $return = array(); //返回数组
  94. //组装状态码和返回数据
  95. if ($status < 0) {
  96. $return['status'] = $status;
  97. $return['data'] = $data;
  98. } else {
  99. if (!is_numeric($status)) {
  100. $return['data'] = $status;
  101. $return['status'] = 1;
  102. } else {
  103. $return['status'] = $status;
  104. $return['data'] = $data;
  105. }
  106. }
  107. //组装返回信息
  108. if (empty($msg)) {
  109. $return['msg'] = trans('error.' . $return['status']);
  110. } else {
  111. $return['msg'] = $msg;
  112. }
  113. //返回json数据
  114. return response()->json($return);
  115. }
  116. /**
  117. *密码加密码
  118. */
  119. function GenEncryption()
  120. {
  121. srand((double)microtime() * 1000000); //create a random number feed.
  122. $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";
  123. $list = explode(",", $ychar);
  124. $authnum = "";
  125. for ($i = 0; $i < 6; $i++) {
  126. $randnum = rand(0, 61); // 10+26;
  127. $authnum .= $list[$randnum];
  128. }
  129. return $authnum;
  130. }
  131. //密码加密
  132. function GenPassword($password)
  133. {
  134. $Enc = GenEncryption();
  135. $Pwd = md5(md5($Enc . $password));
  136. return array("encryption" => $Enc, "password" => $Pwd);
  137. }
  138. //密码验证
  139. function VerPassword($checkpwd, $enc, $ypwd)
  140. {
  141. $VerPwd = md5(md5($enc . $checkpwd));
  142. if ($VerPwd == $ypwd) {
  143. unset($VerPwd);
  144. return true;
  145. } else {
  146. unset($VerPwd);
  147. return false;
  148. }
  149. }
  150. //订单号
  151. function OrderID($prefix = '')
  152. {
  153. $num = mt_rand(100, 999);
  154. list($s, $m) = explode(' ', microtime());
  155. $order = date("YmdHis") . ($s * 1000000) . $num;
  156. return $prefix . $order;
  157. }
  158. //identity生产
  159. function UUID()
  160. {
  161. $prefix = '';
  162. $uuid = '';
  163. $str = md5(uniqid(mt_rand(), true));
  164. $uuid = substr($str, 0, 8) . '-';
  165. $uuid .= substr($str, 8, 4) . '-';
  166. $uuid .= substr($str, 12, 4) . '-';
  167. $uuid .= substr($str, 16, 4) . '-';
  168. $uuid .= substr($str, 20, 12);
  169. return $prefix . $uuid;
  170. }
  171. function S($key, $value = '')
  172. {
  173. if (!isset($GLOBALS[$key]) && empty($value)) {
  174. return -1;
  175. }
  176. if (isset($GLOBALS[$key]) && empty($value)) {
  177. return $GLOBALS[$key];
  178. }
  179. return $GLOBALS[$key] = $value;
  180. }
  181. /**
  182. * 获取客户端真实IP
  183. */
  184. function GETIP()
  185. {
  186. global $ip;
  187. if (getenv("HTTP_CLIENT_IP")) {
  188. $ip = getenv("HTTP_CLIENT_IP");
  189. } else if (getenv("HTTP_X_FORWARDED_FOR")) {
  190. $ip = getenv("HTTP_X_FORWARDED_FOR");
  191. } else if (getenv("REMOTE_ADDR")) {
  192. $ip = getenv("REMOTE_ADDR");
  193. } else {
  194. $ip = "Unknow";
  195. }
  196. return $ip;
  197. }
  198. function OperationLog($id, $opt, $data)
  199. {
  200. $data = array(
  201. 'identity' => UUID(),
  202. 'status' => 1,
  203. 'ip' => GETIP(),
  204. 'operation_time' => date('Y-m-d H:i:s', time()),
  205. 'system_identity' => $id,
  206. 'operation' => vsprintf(trans('operation.' . $opt), $data),
  207. );
  208. $db = new \App\Models\System_log;
  209. return $db->insertData($data);
  210. }
  211. function arrayToNum($data, $field = array())
  212. {
  213. if (is_array($data) && count($data)) {
  214. foreach ($data as $k => $value) {
  215. if (in_array($k, $field)) {
  216. $data[$k] = intval(floatval($value) * 100) / 100;
  217. }
  218. }
  219. }
  220. return $data;
  221. }
  222. //邮箱中间星号
  223. function emailHide($email)
  224. {
  225. if (!empty($email)) {
  226. $arr = explode('@', $email);
  227. if (is_array($arr)) {
  228. $rest = substr($arr[0], 2, -2);
  229. $arr[0] = str_replace($rest, str_repeat('*', strlen($rest)), $arr[0]);
  230. $email = implode('@', $arr);
  231. }
  232. }
  233. return $email;
  234. }
  235. //手机中间星号
  236. function phoneHide($phone)
  237. {
  238. if (!empty($phone)) {
  239. $phone = substr_replace($phone, '****', 3, 4);
  240. }
  241. return $phone;
  242. }
  243. //用户名中间星号
  244. function userHide($user_name)
  245. {
  246. $len = strlen($user_name) / 2;
  247. return substr_replace($user_name, str_repeat('*', $len), ceil(($len) / 2), $len);
  248. }
  249. //银行卡号中间星号
  250. function bankHide($bank)
  251. {
  252. //截取银行卡号前4位
  253. $prefix = substr($bank, 0, 4);
  254. //截取银行卡号后4位
  255. $suffix = substr($bank, -4, 4);
  256. $maskBankCardNo = $prefix . " ************ " . $suffix;
  257. return $maskBankCardNo;
  258. }
  259. function toLog($data)
  260. {
  261. file_put_contents();
  262. }
  263. //生成token
  264. function createToken()
  265. {
  266. $enc = GenEncryption();
  267. $time = time();
  268. $token = substr(uniqid($enc . $time), 0, 35);
  269. return $token;
  270. }
  271. //更新token
  272. function refreshToken($admin_id)
  273. {
  274. $db = new \App\Models\System_user;
  275. $token = createToken();
  276. $res = $db->refreshToken($admin_id, $token);
  277. if ($res > 0) {
  278. return $token;
  279. }
  280. return $res;
  281. }
  282. //检测token
  283. function checkToken($admin_id, $token)
  284. {
  285. $db = new \App\Models\System_user;
  286. return $db->checkToken($admin_id, $token);
  287. }
  288. //保留小数位数
  289. function floatPointDigit($data, $long = 2)
  290. {
  291. $long = intval($long);
  292. $for1 = "%." . $long . "f";
  293. $for2 = "%." . ($long + 1) . "f";
  294. return sprintf($for1, substr(sprintf($for2, $data), 0, -1));
  295. }
  296. //构造请求
  297. function request_post($url = '', $param = '')
  298. {
  299. if (empty($url) || empty($param)) {
  300. return false;
  301. }
  302. $postUrl = $url;
  303. $curlPost = $param;
  304. $ch = curl_init();//初始化curl
  305. curl_setopt($ch, CURLOPT_URL, $postUrl);//抓取指定网页
  306. curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
  307. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
  308. curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
  309. curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
  310. $data = curl_exec($ch);//运行curl
  311. curl_close($ch);
  312. return $data;
  313. }