12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- namespace App\Services;
- use App\Models\JxAdPlacementLog;
- use App\Support\Log;
- use App\Support\RedisModel;
- class UserActionsReportService
- {
- const ACCOUNT_REPORT_RULES_CONF = 'accountReportRulesConf';
- const ACCOUNT_REPORT_MISS_INCR_NUM = 'accountReportMissIncrNum';
- const ACCOUNT_ACTION_REPORT_LIST = 'accountActionReportList';
- # 获取投放账户回传规则配置信息,并判断是否开启
- public static function accountReportRule($accountId, $transformType, $advertiserSpaceId) {
- $response['enable'] = 0;// 回传状态 1开启 0关闭
- $response['miss_status'] = 0;//漏单状态 1开启 0关闭
- $response['miss_setvale'] = 1;// 传几
- $response['miss_value'] = 1;// 漏几
- switch ($transformType) {
- case 64:
- $response['enable'] = 1;// 仅对64类型的做回传
- // if(54284957 == $accountId) {// 对账户54284957进行传1漏1配置
- // $response['miss_status'] = 1;
- // $response['miss_setvale'] = 1;
- // $response['miss_value'] = 1;
- // }
- if('1941326' == $advertiserSpaceId) {// 对广告位1941326进行传9漏1配置
- $response['miss_status'] = 1;
- $response['miss_setvale'] = 9;
- $response['miss_value'] = 1;
- }
- break;
- }
- return $response;
- }
- public static function shouldMiss($currentValue, $missSetValue, $missValue) {
- for($i=0; $i<$missValue; $i++) {
- $remainder = ($missSetValue + $missValue - $i) % ($missSetValue + $missValue);
- if( $currentValue >1 && ($currentValue % ($missSetValue + $missValue)) == $remainder) {
- return true;
- }
- }
- return false;
- }
- # 获取投放账户漏单记录值,以此来判断是否符合漏单条件
- public static function accountMissValue($accountId, $advertiserSpaceId, $missConfig) {
- if(0 == $missConfig['miss_status']) {
- return false;// 漏单规则关闭,全部回传
- }
- $hashKey = $accountId;
- if(!empty($advertiserSpaceId)) {
- $hashKey = $hashKey.'-'.$advertiserSpaceId;
- }
- $num = RedisModel::hIncrby(self::ACCOUNT_REPORT_MISS_INCR_NUM, $hashKey, 1);
- if (self::shouldMiss($num, $missConfig['miss_setvale'], $missConfig['miss_value'])) {
- return true;// 漏单
- } else {
- return false;// 回传
- }
- }
- }
|