csSven.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. <?php
  2. ini_set("display_errors", "On");//打开错误提示
  3. ini_set("error_reporting",E_ALL);//显示所有错误
  4. header('Access-Control-Allow-Origin:*');
  5. defined('IN_WEB') or define('IN_WEB', true);
  6. $_REQUEST['sid'] =$sid =1;
  7. $_REQUEST['lid'] = $lid =1;
  8. // include (dirname(__FILE__)."/api/protocols.php");//解码
  9. include_once dirname(__FILE__)."/com.php";
  10. require_once __DIR__ . '/vendor/autoload.php';
  11. defined('PRODUCTION_SERVER') or define('PRODUCTION_SERVER', true);//是否产品
  12. ini_set('max_execution_time', 3600);
  13. if(strpos(php_sapi_name(), 'cli') !== false){
  14. define("IS_CLI",true);
  15. }else{
  16. define("IS_CLI",false);
  17. }
  18. class Test {
  19. public function expPlus(){
  20. $aid=6106;
  21. $list = oo::commonOprRedis('common')->hGetAll(okeys::TrafficPermitCurNum($aid));
  22. $i=0;
  23. foreach ($list as $uid=>$exp){
  24. $exp = intval($exp);
  25. if(intval($uid)==0) continue;
  26. $newExp = intval(oo::commonOprRedis('activity')->hGet(okeys::TrafficPermitUser($aid, $uid),'exp'));
  27. if($exp>$newExp){
  28. oo::commonOprRedis('activity')->hIncrBy(okeys::TrafficPermitUser($aid, $uid),'exp',$exp);
  29. $i++;
  30. }
  31. }
  32. echo $i;
  33. }
  34. public function t1(){
  35. $bool = true;
  36. var_dump(json_encode($bool));
  37. $str = 'true';
  38. var_dump(json_decode($str, true));
  39. return [1,2];
  40. }
  41. public function checkGoogleOrder(){
  42. $ret = oo::commonOprModel('paymentgoogle')->getGoogleOrderInfo('com.gworld.cc.gift01', 'pagjncigjclbkgokolgnkngo.AO-J1OxIne7Bn7kgaxkKPUwXSr0TX5dt6A5FLAB51JUCsd4qvw1ZeNcgSS6IrrLuTfMiOqLre0R25QQrptqq7iHIBXoFoTiJAA');
  43. var_dump($ret);
  44. }
  45. public function getfoxonline(){
  46. $timestamp = time();
  47. $onlineNum = oo::commonOprModel('recordonline')->getAliMonitor();
  48. oo::commonOprModel('recordonline')->saveFoxRealTimeOnline($timestamp, $onlineNum);
  49. }
  50. public function summaryCard($params = []){
  51. ini_set('memory_limit', -1);
  52. $beginTime = strtotime('2021-11-04');
  53. $endTime = strtotime('2021-11-05');
  54. $res = [];
  55. for($timestamp = $beginTime;$timestamp<$endTime;$timestamp+=86400){
  56. $date = date('Ymd', $timestamp);
  57. echo $date.PHP_EOL;
  58. // continue;
  59. $cardInfoTbl = otable::cardinfo_config();
  60. $cardInfo = oo::commonOprDb('common')->getAll("select * from {$cardInfoTbl}",1);
  61. $cardInfo = array_column($cardInfo, null, 'ciid');
  62. $sql = "select * from ( ";
  63. for ($i = 0;$i<10;$i++){
  64. $table = otable::AssetslogNew($date, $i);
  65. $sql .= "select * from {$table} where type='card' union all ";
  66. }
  67. $sql = rtrim($sql, 'union all ');
  68. $sql .= " ) t1 ";
  69. // $sql .= " ) t1 limit 1000";
  70. $result = oo::commonOprDb('statistics')->getAll($sql,1);
  71. $cardSummary = [
  72. '木质宝箱' => [
  73. 'count' => 0,
  74. 'total' => 0,
  75. 'rank1' => 0,
  76. 'rank2' => 0,
  77. 'rank3' => 0,
  78. 'rank4' => 0,
  79. 'rank5' => 0,
  80. 'golden' => 0,
  81. ],
  82. '白银宝箱' => [
  83. 'count' => 0,
  84. 'total' => 0,
  85. 'rank1' => 0,
  86. 'rank2' => 0,
  87. 'rank3' => 0,
  88. 'rank4' => 0,
  89. 'rank5' => 0,
  90. 'golden' => 0,
  91. ],
  92. '黄金宝箱' => [
  93. 'count' => 0,
  94. 'total' => 0,
  95. 'rank1' => 0,
  96. 'rank2' => 0,
  97. 'rank3' => 0,
  98. 'rank4' => 0,
  99. 'rank5' => 0,
  100. 'golden' => 0,
  101. ],
  102. ];
  103. foreach ($result as $k => $item){
  104. if(!strpos($item['reason'], ':'))continue;
  105. list($chest, $cardStrs) = explode(':', $item['reason']);
  106. if(empty($cardSummary[$chest]))continue;
  107. $cardsIds = explode(',', $cardStrs);
  108. $cardSummary[$chest]['count']++;
  109. foreach ($cardsIds as $ciid){
  110. if(empty($cardInfo[$ciid]))continue;
  111. $cardSummary[$chest]['total']++;
  112. $cardSummary[$chest]['rank'.$cardInfo[$ciid]['ci_star_rank']]++;
  113. if($cardInfo[$ciid]['grade'] == 2)$cardSummary[$chest]['golden']++;
  114. }
  115. }
  116. $data = json_encode($cardSummary, JSON_UNESCAPED_UNICODE);
  117. $tb = otable::cardAssertSummary();
  118. $type = 1;
  119. $sql = "INSERT INTO {$tb} (`date`, `game_version`, `data`) VALUES('{$date}', '{$type}' ,'{$data}')";
  120. $res[$date] = oo::commonOprDb('statistics')->query($sql);
  121. }
  122. return [$res];
  123. }
  124. public function crontabT(){
  125. $beginTime = strtotime('2021-11-09');
  126. $endTime = strtotime('2021-11-10');
  127. $res = [];
  128. for($timestamp = $beginTime;$timestamp<=$endTime;$timestamp+=86400) {
  129. $types = [1, 2];
  130. foreach ($types as $type){
  131. $res[date('Ymd', $timestamp). '-'.$type] = oo::commonOprModel('recordonline')->cardAssertSummary($timestamp, $type);
  132. }
  133. }
  134. return $res;
  135. }
  136. public function iniGet(){
  137. $memory_limit = ini_get('memory_limit');
  138. return $memory_limit;
  139. }
  140. public function queryReloginUsers(){
  141. $file = './txts/t3';
  142. $f = fopen($file, 'r+');
  143. $uids = [];
  144. while(!feof($f)){
  145. $line = fgets($f);
  146. $uid = trim($line, "\r\n");
  147. $uid = trim($uid, "\n");
  148. $uids[] = $uid;
  149. }
  150. $uids = array_filter($uids);
  151. fclose($f);
  152. echo 'all users cnt:'.count($uids) . PHP_EOL;
  153. $userTbl = otable::userinfo();
  154. // $uidsArr = array_chunk($uids, 6000);
  155. $loginCnt = 0;
  156. // foreach ($uidsArr as $uids){
  157. $uidStr = implode(',', $uids);
  158. $sql = "select uid from {$userTbl} where lasttime >=1635379200 and uid in ({$uidStr}) ";
  159. $users = oo::commonOprDb('userinfo')->getAll($sql, 1);
  160. $loginCnt += count($users);
  161. // }
  162. echo 'login users cnt:' . $loginCnt . PHP_EOL;
  163. echo $sql . PHP_EOL;
  164. }
  165. public function getSigninConf()
  166. {
  167. $conf = [
  168. 'daily' => array_values(oo::commonOprModel('config')->signInConfByUserGroup(533896, 0, true)),
  169. 'progress' => array_values(oo::commonOprModel('config')->userSignInProgressConf(533896))
  170. ];
  171. return $conf;
  172. }
  173. public function getFriends(){
  174. $uid = 2535914;
  175. $friends = oo::commonOprModel('friend')->getUserAllFriend($uid);
  176. return $friends;
  177. }
  178. public function ggorder(){
  179. $table = otable::vipPaymentLog();
  180. $sql = "select * from {$table} where datetime > 1636574400 and datetime<1636581600";
  181. $records = oo::commonOprDb('api_log')->getAll($sql, 1);
  182. foreach ($records as $record){
  183. $json = json_decode($record['data'], true);
  184. }
  185. }
  186. public function getPro(){
  187. $arr = [
  188. '打' =>60,
  189. '偷' =>25,
  190. '体力' =>1,
  191. '盾' =>40,
  192. '钱1' =>183,
  193. '钱2' =>120,
  194. '钱3' =>80,
  195. '钱4' =>161,
  196. '钱5' =>100,
  197. '钱6' =>60,
  198. '空' =>30,
  199. '收集1' =>240,
  200. '收集2' =>120,
  201. '收集3' =>30,
  202. ];
  203. $proArr = [];
  204. $sum = array_sum($arr);
  205. foreach ($arr as $k => $item){
  206. $proArr[$k] = number_format($item/$sum*100, 2).'%';
  207. }
  208. echo json_encode($proArr);
  209. }
  210. public function getLang(){
  211. $uid = 2595564;
  212. $lang = oo::commonOprModel('member')->getUserLang($uid);
  213. return $lang;
  214. }
  215. public function getMsg(){
  216. $uid = 2595564;
  217. $sid = 1;
  218. if(empty($uid)){
  219. return oo::response(-1);
  220. }
  221. $ret = oo::commonOprModel('message')->getSysMailMsgByUid($uid, $sid);
  222. return $ret;
  223. }
  224. public function onlineFox(){
  225. $timestamp = empty($timestamp) ? time() : $timestamp ;
  226. $start = $timestamp - 5400;
  227. $onlineCntArr = oo::commonOprRedis('common')->zRangeByScore(okeys::foxRealTimeOnlineKey(),$start, $timestamp,['withscores'=>true]);
  228. $onlineData = [];
  229. foreach ($onlineCntArr as $uid => $timestamp){
  230. $dateHi = date('YmdHi', $timestamp);
  231. $onlineData[$dateHi] = $onlineData[$dateHi] ?? 0;
  232. $onlineData[$dateHi]++;
  233. }
  234. return json_encode($onlineData);
  235. }
  236. public function onlineFoxTopday(){
  237. $timestamp = empty($timestamp) ? time() : $timestamp ;
  238. // $ret = oo::commonOprRedis('statistics')->hGetAll(okeys::onlineCountLog(date('Ymd', $timestamp)));
  239. $ret = oo::commonOprRedis('statistics')->hGetAll(okeys::onlineCountLog());
  240. ksort($ret);
  241. $onlineArr = [];
  242. foreach ($ret as $time => $item){
  243. $hi = date('H:i', $time);
  244. $onlineArr[$hi] = $item;
  245. }
  246. return $onlineArr;
  247. }
  248. public function getAliMonitor(){
  249. return oo::commonOprModel('recordonline')->getAliMonitor();//每分钟在线用户统计
  250. }
  251. public function exportPayedUsers($argvs = []){
  252. $time = time();
  253. $datetime = date('YmdHis');
  254. $year = $argvs[0] ?? date('Y', $time);
  255. $begin = strtotime($year.'-01-01');
  256. $year++;
  257. $end = strtotime($year.'-01-01');
  258. $summaryTbl = otable::summarylist();
  259. $userTbl = otable::userinfo();
  260. $userAddressTbl = otable::useraddress();
  261. $sql = "select sl_uid, sum(sl_pusd) as payedTotal, count(1) as payedCnt from {$summaryTbl} where sl_pay_time>={$begin} and sl_pay_time <={$end} and sl_status=2 group by sl_uid";
  262. echo $sql . PHP_EOL;
  263. $userPayedResult = oo::commonOprDb('slave')->getAll($sql, 1);
  264. $userArrs = array_chunk($userPayedResult, 2000);
  265. $results = [];
  266. $file = __DIR__ . "/deBUG/csvs/{$year}PayedUsers.csv";
  267. if(is_file($file))unlink($file);
  268. $f = fopen($file, 'w');
  269. $header = [
  270. 'uid', '昵称', 'FN', 'LN', 'Email', '性别', '国家', '注册时间', '最后登陆时间',"付费金额({$year})","付费次数({$year})"
  271. ];
  272. fputcsv($f, $header);
  273. $cnt = 0;
  274. foreach ($userArrs as $userArr){
  275. $uids = array_map(function($v){return $v['sl_uid'];}, $userArr);
  276. $uids[] = 0;
  277. $uidStr = implode(',',$uids);
  278. $sql = "select * from {$userTbl} tu inner join {$userAddressTbl} ta on ta.uid=tu.uid where tu.uid in ({$uidStr})";
  279. $userInfos = oo::commonOprDb('slave')->getAll($sql, 1);
  280. $userInfos = array_column($userInfos, null, 'uid');
  281. foreach ($userArr as $user){
  282. $user = array_merge($user, (array)$userInfos[$user['sl_uid']]);
  283. list($fn, $ln) = $this->divideName($user['nick']);
  284. $lineData = [
  285. $user['uid'], $user['nick'], $fn, $ln, $user['email'], $user['sex'], $user['country_code'], date('Y-m-d H:i:s', $user['createtime']), $user['payedTotal'], $user['payedCnt']
  286. ];
  287. fputcsv($f, $lineData);
  288. $cnt++;
  289. }
  290. }
  291. return [count($results), $cnt];
  292. }
  293. private function divideName($name){
  294. $nameArr = explode(' ', $name);
  295. $firstName = array_shift($nameArr);
  296. return [$firstName, implode(' ', $nameArr)];
  297. }
  298. public function sendRank2(){
  299. $aid = 8496;
  300. $res = oo::commonOprModel('activitynew')->checkRankRewardRobotNoPro($aid);
  301. var_dump($res);
  302. }
  303. }
  304. echo 'config path:'.PATH_CFG . PHP_EOL;
  305. echo 'begin:'.microtime() . PHP_EOL;
  306. if(IS_CLI){
  307. if(empty($argv[1])){
  308. exit('params error!' . PHP_EOL);
  309. }
  310. $method = $argv[1];
  311. $obj = new Test();
  312. if(!method_exists($obj, $method))exit('method not found:'.$method);
  313. unset($argv[0],$argv[1]);
  314. $response = $obj->$method(array_values($argv));
  315. if(!is_scalar($response))$response = json_encode($response) ;
  316. echo $response . PHP_EOL;
  317. }else{
  318. echo json_encode($_REQUEST) . PHP_EOL;
  319. }
  320. echo 'end:'.microtime() . PHP_EOL;
  321. //=====================================
  322. //$etime = microtime();
  323. //echo "<hr>";
  324. //echo "耗时:".($etime-$stime)."<br>";
  325. //echo "<hr>";
  326. //echo '长度:'.(is_array($list)?count($list):strlen($list))."<br>";
  327. //echo "<pre>";
  328. //print_r($list);
  329. //=====================================