我发誓,这真不是我写的
1 #!/bin/sh 2 3 echo "$0 start at `date +"%F %k:%M:%S"`" 1>&2 4 5 cd /www/scripts/stat/ 6 . stat_date.sh 7 . dblist.sh 8 9 . public_func 10 11 stat_date=`riqi $1` 12 instime=`date -d"$stat_date" +'%F'` 13 last_date=`date -d"$stat_date 1 day ago" +'%Y%m%d'` 14 15 channel_id="/tmp/channel_reader.tmp" 16 17 echo "select userid,ch_name from ppoem_user_channel_bak;"|statdb -s > $channel_id 18 19 #此文件对应合作方ID和合作方名称见关系 20 user_list="/tmp/ppoem_user" 21 22 echo "select userid,username from ppoem_user;"|statdb -s >$user_list 23 24 ppoem_table="ppoem_payable_data" 25 26 stat_table="channel_book_reader_kyd" 27 28 data_user="data/reader/reader.userid.$stat_date" 29 30 data_file="data/reader/reader.imei.$stat_date" 31 32 #KYD推广位和合作方ID对应关系 33 channel_id="/tmp/channel_reader.tmp" 34 35 echo "select userid,ch_name from ppoem_user_channel_bak;"|statdb -s > $channel_id 36 37 #在数据库中获取USERID与IMEI对应关系 38 39 echo "select userid,imei from attr_reg_imei2userid where insert_time like '$instime%' and reg_time like '$instime%';" |accountdb -s >/tmp/newuser2imei 40 #echo "select userid from attr_mobile2userid;" |accountdb -s >/tmp/attr_mobile2userid 41 42 #判定访问的imei对应的userid是否是真的是注册会员,不能是准会员 43 #attr_userid2imei 这个表里的userid,不一定是注册会员的ID 44 #all_user_id这个表里的数据是注册会员ID。 45 46 47 #if [ 0 -eq 1 ] 48 #then 49 50 #cat /tmp/attr_mobile2userid|awk ' 51 #BEGIN{ 52 # while(getline<"/tmp/newuser2imei"==1) 53 # { 54 # imei2userid[$1]=$2 55 # } 56 #} 57 #($1 in imei2userid){ 58 # 59 # print $1,imei2userid[$1] 60 # 61 #}' >/tmp/newuser2imei_reg 62 63 #fi 64 65 echo "select userid,paytype from ppoem_user_payable_mapping;"|statdb -s >/tmp/ppoem_user_payable_mapping 66 67 ./kcat.sh $data_file|awk ' 68 BEGIN{ 69 while(getline<"/www/scripts/stat/config/kyd_limit_day"==1) 70 { 71 lkyd_chname[$1]=$2 72 } 73 74 while(getline<"'$channel_id'"==1) 75 { 76 userid[$2]=$1 77 } 78 79 while(getline<"'$user_list'"==1) 80 { 81 user_id_name[$1]=$2 82 } 83 84 while(getline<"/tmp/newuser2imei"==1) 85 { 86 luser2imei[$2]=$1 87 #print luser2imei[$2] 88 } 89 90 while(getline<"'$channel_id'"==1) 91 { 92 userid[$2]=$1 93 } 94 95 while(getline<"/www/scripts/stat/app_open"==1) 96 { 97 appopen[$1" "$2] 98 } 99 100 while(getline<"/www/scripts/stat/app_close"==1) 101 { 102 appclose[$1" "$2] 103 } 104 105 while(getline<"/www/scripts/stat/app_close_channel"==1) 106 { 107 appclose_channel[$1] 108 } 109 110 while(getline<"/www/scripts/stat/app_open_channel"==1) 111 { 112 app_open_channel[$1" "$2] 113 } 114 115 while(getline<"/tmp/ppoem_user_payable_mapping"==1) 116 { 117 pab_user[$1]=$2 118 } 119 120 } 121 { 122 if($2~/kyd_/) 123 { 124 fr=$2 125 imei=$1 126 } 127 else if($2=="-"&&$3~/9000%26fr/) 128 { 129 fr=gensub(/.*%3D(.+)/,"\\1","g",$3) 130 imei=$1 131 } 132 else 133 next 134 135 #print fr":"imei 136 137 all[fr":"imei]+=$5 138 139 if($7=="true") 140 { 141 j_all[fr":"imei]+=$5 142 } 143 144 #if($1 in lbu5_imei) 145 #new_bu5[fr":"imei]+=$5 146 147 if($6=="0") 148 { 149 new_imei[fr":"imei]+=$5 150 151 if($7=="true") 152 { 153 j_newimei[fr":"imei] 154 } 155 156 if($1 in luser2imei) 157 { 158 lfr_newuser[$2":"luser2imei[$1]] 159 if($7=="true") 160 lj_fr_newuser[$2":"luser2imei[$1]] 161 } 162 163 if($5>3) 164 { 165 bu3[fr":"imei]+=$5 166 167 if($7=="true") 168 { 169 j_bu3[fr":"imei] 170 } 171 } 172 if($5>4) 173 { 174 bu4[fr":"imei]+=$5 175 176 if($7=="true") 177 { 178 j_bu4[fr":"imei] 179 } 180 } 181 if($5>5) 182 { 183 bu5[fr":"imei]+=$5 184 185 if($7=="true") 186 { 187 j_bu5[fr":"imei] 188 } 189 } 190 if($5>7) 191 { 192 bu7[fr":"imei]+=$5 193 194 if($7=="true") 195 { 196 j_bu7[fr":"imei] 197 } 198 } 199 if($5>10) 200 { 201 bu10[fr":"imei]+=$5 202 203 if($7=="true") 204 { 205 j_bu10[fr":"imei] 206 } 207 } 208 if($5>15) 209 { 210 bu15[fr":"imei]+=$5 211 212 if($7=="true") 213 { 214 j_bu15[fr":"imei] 215 } 216 } 217 if($5>20) 218 { 219 bu20[fr":"imei]+=$5 220 221 if($7=="true") 222 { 223 j_bu20[fr":"imei] 224 } 225 } 226 if($5>30) 227 { 228 bu30[fr":"imei]+=$5 229 230 if($7=="true") 231 { 232 j_bu30[fr":"imei] 233 } 234 } 235 if($5>50) 236 { 237 bu50[fr":"imei]+=$5 238 239 if($7=="true") 240 { 241 j_bu50[fr":"imei] 242 } 243 } 244 if($5>70) 245 { 246 bu70[fr":"imei]+=$5 247 248 if($7=="true") 249 { 250 j_bu70[fr":"imei] 251 } 252 } 253 if($5>100) 254 { 255 bu100[fr":"imei]+=$5 256 257 if($7=="true") 258 { 259 j_bu100[fr":"imei] 260 } 261 } 262 } 263 } 264 END{ 265 for(i in all) 266 { 267 split(i,key,":") 268 all_u[key[1]]++ 269 all_p[key[1]]+=all[i] 270 } 271 272 for(i in j_all) 273 { 274 split(i,key,":") 275 j_all_u[key[1]]++ 276 } 277 278 for(i in new_imei) 279 { 280 split(i,key,":") 281 new_imei_u[key[1]]++ 282 new_imei_p[key[1]]+=new_imei[i] 283 } 284 285 for(i in j_newimei) 286 { 287 split(i,key,":") 288 j_newimei_u[key[1]]++ 289 } 290 291 for(i in bu3) 292 { 293 split(i,key,":") 294 bu3_u[key[1]]++ 295 bu3_p[key[1]]+=bu3[i] 296 } 297 298 for(i in j_bu3) 299 { 300 split(i,key,":") 301 j_bu3_u[key[1]]++ 302 } 303 304 for(i in bu4) 305 { 306 split(i,key,":") 307 bu4_u[key[1]]++ 308 bu4_p[key[1]]+=bu4[i] 309 } 310 311 312 for(i in j_bu4) 313 { 314 split(i,key,":") 315 j_bu4_u[key[1]]++ 316 } 317 318 for(i in bu5) 319 { 320 split(i,key,":") 321 bu5_u[key[1]]++ 322 bu5_p[key[1]]+=bu5[i] 323 } 324 325 for(i in j_bu5) 326 { 327 split(i,key,":") 328 j_bu5_u[key[1]]++ 329 } 330 331 for(i in bu7) 332 { 333 split(i,key,":") 334 bu7_u[key[1]]++ 335 bu7_p[key[1]]+=bu7[i] 336 } 337 338 for(i in j_bu7) 339 { 340 split(i,key,":") 341 j_bu7_u[key[1]]++ 342 } 343 344 for(i in bu10) 345 { 346 split(i,key,":") 347 bu10_u[key[1]]++ 348 bu10_p[key[1]]+=bu10[i] 349 } 350 351 for(i in j_bu10) 352 { 353 split(i,key,":") 354 j_bu10_u[key[1]]++ 355 } 356 357 for(i in bu15) 358 { 359 split(i,key,":") 360 bu15_u[key[1]]++ 361 bu15_p[key[1]]+=bu15[i] 362 } 363 364 for(i in j_bu15) 365 { 366 split(i,key,":") 367 j_bu15_u[key[1]]++ 368 } 369 370 for(i in bu20) 371 { 372 split(i,key,":") 373 bu20_u[key[1]]++ 374 bu20_p[key[1]]+=bu20[i] 375 } 376 377 378 for(i in j_bu20) 379 { 380 split(i,key,":") 381 j_bu20_u[key[1]]++ 382 } 383 384 for(i in bu30) 385 { 386 split(i,key,":") 387 bu30_u[key[1]]++ 388 bu30_p[key[1]]+=bu30[i] 389 } 390 391 for(i in j_bu30) 392 { 393 split(i,key,":") 394 j_bu30_u[key[1]]++ 395 } 396 397 for(i in bu50) 398 { 399 split(i,key,":") 400 bu50_u[key[1]]++ 401 bu50_p[key[1]]+=bu50[i] 402 } 403 404 for(i in j_bu50) 405 { 406 split(i,key,":") 407 j_bu50_u[key[1]]++ 408 } 409 410 for(i in bu70) 411 { 412 split(i,key,":") 413 bu70_u[key[1]]++ 414 bu70_p[key[1]]+=bu70[i] 415 } 416 417 for(i in j_bu70) 418 { 419 split(i,key,":") 420 j_bu70_u[key[1]]++ 421 } 422 423 for(i in bu100) 424 { 425 split(i,key,":") 426 bu100_u[key[1]]++ 427 bu100_p[key[1]]+=bu100[i] 428 } 429 430 for(i in j_bu100) 431 { 432 split(i,key,":") 433 j_bu100_u[key[1]]++ 434 } 435 436 for(i in lfr_newuser) 437 { 438 split(i,key,":") 439 lfr_user[key[1]]++ 440 } 441 442 for(i in lj_fr_newuser) 443 { 444 split(i,key,":") 445 lj_fr_user[key[1]]++ 446 } 447 448 for(i in all_u) 449 { 450 split(i,key," ") 451 452 #MOD guojiadong 2012-11-12 453 454 #pab=int(bu5_u[i]) 455 456 #MOD guojiadong 2012-11-20 457 #pab=int(bu7_u[i]) 458 459 #MOD guojiadong 2012-12-04 460 #pab=int(bu15_u[i]) 461 462 #if(int(lfr_user[i])<int(bu7_u[i])) 463 # pab1=int(lfr_user[i]) 464 #else 465 466 pab1=int(new_imei_u[i]*0.8/1.3) 467 if(int(new_imei_u[i])!=0){ 468 if(bu7_u[i]*1.3/new_imei_u[i]>0.8){ 469 pab=pab1 470 } 471 else{ 472 pab=int(bu7_u[i]) 473 } 474 } 475 else{ 476 pab=0 477 } 478 479 #MOD OVER 480 #MOD OVER 481 #MOD OVER 482 483 #lfr_user 484 #print "update '$stat_table' set imei="int(all_u[i])",new_imei="int(new_imei_u[i])",newuser="int(lfr_user[i])",j_newuser="int(lj_fr_user[i])",Bu3="int(bu3_u[i])",Bp3="int(bu3_p[i])",Bu4="int(bu4_u[i])",Bp4="int(bu4_p[i])",Bu5="int(bu5_u[i])",Bp5="int(bu5_p[i])",Bu7="int(bu7_u[i])",Bp7="int(bu7_p[i])",Bu10="int(bu10_u[i])",Bp10="int(bu10_p[i])",Bu15="int(bu15_u[i])",Bp15="int(bu15_p[i])",Bu20="int(bu20_u[i])",Bu30="int(bu30_u[i])",Bp30="int(bu30_p[i])",Bu50="int(bu50_u[i])",Bp50="int(bu50_p[i])",Bu70="int(bu70_u[i])",Bp70="int(bu70_p[i])",Bu100="int(bu100_u[i])",Bp100="int(bu100_p[i])",pab="pab",j_imei="int(j_all_u[i])",j_newimei="int(j_new_imei_u[i])",j_Bu3="int(j_bu3_u[i])",j_Bu4="int(j_bu4_u[i])",j_Bu5="int(j_bu5_u[i])",j_Bu7="int(j_bu7_u[i])",j_Bu10="int(j_bu10_u[i])",j_Bu15="int(j_bu15_u[i])",j_Bu30="int(j_bu30_u[i])",j_Bu50="int(j_bu50_u[i])",j_Bu70="int(j_bu70_u[i])",j_Bu100="int(j_bu100_u[i])" where stat_date=\"'$instime'\" and ch_name=\""key[1]"\";" 485 486 #print i,int(lfr_user[i]) 487 #lishujun edit 2013-4-1 488 #if(user_id_name[userid[i]]" "i in app_open_channel) 489 if(user_id_name[userid[i]]=="UCshuqi" || user_id_name[userid[i]]" "i in app_open_channel) 490 { 491 #print '$stat_date',i,lkyd_chname[i],userid[i] 492 if(i=="kyd_32886"){ 493 if(i in lkyd_chname) 494 { 495 if('$stat_date'<=lkyd_chname[i]) 496 { 497 print "delete from '$ppoem_table' where stat_date=\"'$instime'\" and ch_name=\""i"\" and userid="int(userid[i])" and ch_type=21 and sv_type=3;" 498 print"insert into '$ppoem_table' set stat_date=\"'$instime'\",ch_name=\""i"\",userid="int(userid[i])",payable="int(pab)",ch_type=21,sv_type=3;" 499 } 500 } 501 else 502 { 503 print "delete from '$ppoem_table' where stat_date=\"'$instime'\" and ch_name=\""i"\" and userid="int(userid[i])" and ch_type=21 and sv_type=3;" 504 print"insert into '$ppoem_table' set stat_date=\"'$instime'\",ch_name=\""i"\",userid="int(userid[i])",payable="int(pab)",ch_type=21,sv_type=3;" 505 } 506 } 507 } 508 } 509 }' 510 # |statdb -f 511 512 echo "$0 end at `date +"%F %k:%M:%S"`" 1>&2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述