| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655 |
- <?php
- /**
- * 测试专用控制器
- * Created by PhpStorm.
- * User: leo
- * Date: 2018/3/9
- * Time: 上午11:56
- */
- namespace console\controllers;
- use common\helpers\bonus\BonusCalc;
- use common\helpers\bonus\BonusSend;
- use common\helpers\bonus\CalcCache;
- use common\helpers\bonus\PerfCalc;
- use common\helpers\Cache;
- use common\helpers\DataBak;
- use common\helpers\Date;
- use common\helpers\Form;
- use common\helpers\ocr\OcrApi;
- use common\helpers\snowflake\SnowFake;
- use common\helpers\Tool;
- use common\helpers\user\Balance;
- use common\helpers\user\Info;
- use common\helpers\user\Reconsume;
- use common\libs\api\sms\SmsApi;
- use common\libs\swoole\RPCApi;
- use common\libs\taskQueue\Queue;
- use common\libs\taskQueue\TaskFunc;
- use common\models\CalcBonus;
- use common\models\CalcBonusBD;
- use common\models\CalcBonusFX;
- use common\models\CalcBonusGL;
- use common\models\CalcBonusGX;
- use common\models\CalcBonusQY;
- use common\models\CalcBonusTG;
- use common\models\CalcBonusYC;
- use common\models\CalcBonusYJ;
- use common\models\CalcMonthBonusUser;
- use common\models\DealType;
- use common\models\EmployLevel;
- use common\models\FlowBonus;
- use common\models\FlowReconsumePoints;
- use common\models\forms\ClearDataForm;
- use common\models\forms\DeclarationForm;
- use common\models\forms\DeclarationLoopForm;
- use common\models\forms\HistoryBonusForm;
- use common\models\forms\UserForm;
- use common\models\Order;
- use common\models\OrderShop;
- use common\models\PerfMonth;
- use common\models\PerfOrder;
- use common\models\PerfPeriod;
- use common\models\Period;
- use common\models\ReconsumePool;
- use common\models\ReconsumePoolFlow;
- use common\models\DecOrder;
- use common\models\ScoreMonth;
- use common\models\TaskQueue;
- use common\models\TmpOldNetwork;
- use common\models\User;
- use common\models\UserBind;
- use common\models\UserBonus;
- use common\models\UserInfo;
- use common\models\UserMove;
- use common\models\UserNetwork;
- use common\models\UserPerf;
- use common\models\UserRelation;
- use yii\base\Exception;
- use yii\db\Expression;
- use yii\db\Query;
- use yii\helpers\Json;
- class TestController extends BaseController
- {
- public function actionPut(){
- file_put_contents(\Yii::getAlias('@common/runtime/logs/asyncLog.log'), var_export(['asdasd'=>'中午'], true));
- }
- /**
- * 测试异步任务
- * ./yii test/async-task calcBonus
- * @param null $routeAndParamsMethod 想要测试的方法名
- * @throws \yii\base\Exception
- * @throws \yii\base\InvalidConfigException
- */
- public function actionAsyncTask($routeAndParamsMethod = null){
- if($routeAndParamsMethod !== null){
- $routeAndParams = call_user_func(self::class.'::_'.$routeAndParamsMethod);
- $route = $routeAndParams['route'];
- $params = $routeAndParams['params'];
- } else {
- $moveInfo = UserMove::find()->select('UM.ID,UM.LOCATION,UM.TYPE,MU.USER_NAME AS moveUserName,TU.USER_NAME AS toConUserName,TU.REAL_NAME AS toConRealName')
- ->from(UserMove::tableName().' AS UM')
- ->leftJoin(User::tableName().' AS MU', 'UM.USER_ID=MU.ID')
- ->leftJoin(User::tableName() . ' AS TU', 'UM.TO_UID=TU.ID')
- ->where('AUDIT_STATUS=0')->asArray()->all();
- foreach($moveInfo as $k=>$moves){
- // route换成要测试的路由路径
- if($moves['TYPE']=='relation'){
- $route = 'user/move-relation';
- }else{
- $route = 'user/move-network';
- }
- // params的数组内容替换为要传的值
- $params = [
- 'moveId' => $moves['ID'],
- 'moveUserName' => $moves['moveUserName'],
- 'toConUserName' => $moves['toConUserName'],
- 'toConRealName' => $moves['toConRealName'],
- 'location' => $moves['LOCATION'],
- 'type' => $moves['TYPE'],
- ];
- echo sprintf("任务【%s】开始执行".PHP_EOL, $k);
- $params['handleUserId'] = null;
- $taskKey = Cache::setAsyncParams($params);
- $parts = \Yii::$app->createController($route);
- if(is_array($parts)){
- $res = \Yii::$app->runAction($route,[$taskKey]);
- var_dump($res);
- unset($res);
- } else {
- echo('失败'.PHP_EOL);
- }
- unset($k,$moves,$route,$params,$taskKey,$parts);
- }
- }
- // $params['handleUserId'] = null;
- // $taskKey = Cache::setAsyncParams($params);
- // $parts = \Yii::$app->createController($route);
- // if(is_array($parts)){
- // $res = \Yii::$app->runAction($route,[$taskKey]);
- // var_dump($res);
- // } else {
- // echo('失败'.PHP_EOL);
- // }
- }
- /**
- * 异步发奖
- * @param string $router
- * @param int $periodNum
- * @return void
- */
- public function actionBonusAsyncTask($router='bonus/perf', $periodNum=105) {
- // 异步处理添加任务
- $taskKey = Cache::setAsyncParams([
- 'handleUserId' => null,
- 'handleUserName' => null,
- 'periodNum' => $periodNum,
- ]);
- $data = [
- 'data' => [
- [
- 'a' => $router,
- 'p' => [$taskKey],
- ]
- ],
- ];
- if(\Yii::$app->swooleAsyncTimer->async(Json::encode($data))){
- echo 'ok' . PHP_EOL;
- } else {
- echo 'fail' . PHP_EOL;
- }
- }
- private static function _calcPerf(){
- return [
- 'route' => 'bonus/perf',
- 'params' => [
- 'periodNum' => 105,
- ],
- ];
- }
- /**
- * 测试结算
- * @return array
- */
- private static function _calcBonus(){
- return [
- 'route' => 'bonus/calc',
- 'params' => [
- 'periodNum' => 105,
- ],
- ];
- }
- /**
- * 测试结算
- * @return array
- */
- private static function _sendBonus(){
- return [
- 'route' => 'bonus/send',
- 'params' => [
- 'periodNum' => 118,
- ],
- ];
- }
- /**
- * 测试移网
- * @return array
- */
- private static function _moveRouteAndParams(){
- return [
- 'route' => 'user/move-network',
- 'params' => [
- 'moveId' => 'A090B24973524443BE8BA95A40EE2148',
- 'moveUserName' => 'b30746926',
- 'toConUserName' => 'tester004',
- 'toConRealName' => 'hhhjhjj',
- 'location' => 1,
- 'type' => 'network',
- ],
- ];
- }
- /**
- * 添加体系
- * @return array
- */
- private static function _addSystem(){
- return [
- 'route' => 'user/system-add',
- 'params' => [
- 'systemName' => '测试',
- 'leaderUserName' => 'tester001',
- 'remark' => '测试',
- ],
- ];
- }
- private $_addUserNum = 1;
- private $_md5UserId = 2;
- private $_userNameNum = 2;
- public function actionAddUserTable(){
- $notDelUserId = "'670B84FD7C216D4EE055736AECE8644D','B322C18F7E274A9D9FC5DADC3B385E8B','638A5A3B617F46C999C5E4D072EED369','3C313C66D1724D658BF10B08194022BB'";
- User::deleteAll("ID NOT IN (".$notDelUserId.")");
- DecOrder::deleteAll("TO_USER_ID NOT IN (".$notDelUserId.")");
- $offset = 100;
- $allCount = UserInfo::find()->where("USER_ID NOT IN (".$notDelUserId.")")->orderBy('NETWORK_DEEP ASC')->asArray()->count("USER_ID");
- $pageCount = ceil($allCount/$offset);
- for($page=1;$page<=$pageCount;$page++) {
- $allUser = UserInfo::find()->where("USER_ID NOT IN (".$notDelUserId.")")->offset(($page-1)*$offset)->limit($offset)->orderBy('NETWORK_DEEP ASC')->asArray()->all();
- $insertData = [];
- $userInsertData=[];
- $decSn = 190310000000;
- foreach($allUser as $key=>$user){
- $decSn += 1;
- $decPv = rand(1, 100) * 1000;
- $insertData[] = [
- 'DEC_SN' => 'D'.$decSn.'0000',
- 'ORDER_SN' => $decSn,
- 'USER_ID' => $user['USER_ID'],
- 'TYPE' => 'ZC',
- 'TO_USER_ID' => $user['USER_ID'],
- 'DEC_AMOUNT' => $decPv,
- 'DEC_PV' => $decPv,
- 'PAID_WALLET' => 'bill',
- 'PERIOD_NUM' => 102,
- 'IS_DEL' => 0,
- 'P_CALC_MONTH' => Date::ociToDate(202001, Date::OCI_TIME_FORMAT_SHORT_MONTH),
- 'CREATED_AT' => strtotime('2020-01-20'),
- 'DEC_ID' => $user['REC_UID'],
- ];
- $userInsertData[] = [
- 'ID' => $user['USER_ID'],
- 'USER_NAME' => $user['USER_NAME'],
- 'AVATAR' => 'http://abc.anran.ming/cdn/avatar/1.png',
- 'PASSWORD_HASH' => password_hash('111111', PASSWORD_DEFAULT),
- 'PAY_PASSWORD' => password_hash('111111', PASSWORD_DEFAULT),
- 'NATION' => 1,
- 'REAL_NAME' => $user['USER_NAME'],
- 'ID_CARD' => '130322111111111113',
- 'ID_TYPE' => 0,
- 'MOBILE' => '13333333339',
- 'ADDRESS' => '广东省 / 广州市荔湾区三号五弄',
- 'IS_DEC' => 1,
- 'DEC_ID' => '670B84FD7C216D4EE055736AECE8644D',
- 'PERIOD_AT' => 102,
- 'CREATED_AT' => strtotime('2020-02-12'),
- 'LAST_DEC_LV' => '67ABCE0ECE705575E055736AECE8644D',
- 'DEC_LV' => '67ABCB8C1F7D5519E055736AECE8644D',
- 'EMP_LV' => '67BE1C6C21F81B32E055736AECE8644D'
- ];
- }
- User::batchInsert($userInsertData);
- DecOrder::batchInsert($insertData);
- echo('第'.$page.'页数据'.PHP_EOL);
- }
- echo('全部完成'.PHP_EOL);
- }
- /**
- * 模拟添加会员
- * @param $num
- * @param string $conUid
- * @param string $recUid
- * @param int $location
- * @return bool
- * @throws Exception
- * @throws \yii\db\Exception
- */
- public function actionAddUser($num, $conUid = 'B322C18F7E274A9D9FC5DADC3B385E8B', $recUid = 'B322C18F7E274A9D9FC5DADC3B385E8B', $location = 1){
- if($num <= $this->_addUserNum) {
- echo('模拟加入完成'.PHP_EOL);
- return true;
- }
- $this->_md5UserId += 1;
- $this->_userNameNum += 1;
- $form = new UserForm();
- $form->scenario = 'addWithUid';
- $form->userId = md5($this->_md5UserId);
- $form->userName = 'simulate'.($this->_userNameNum);
- $form->zcPv = 1000;
- $form->zcAmount = 1000;
- $form->conUid = $conUid;
- $form->recUid = $recUid;
- $form->location = $location;
- if($form->add()){
- echo('添加了'.$this->_addUserNum.'名会员'.PHP_EOL);
- $this->_addUserNum += 1;
- // 获取全网深度最浅还没满的会员ID 作为节点人ID
- $conUser = UserInfo::find()->select('USER_ID, CON_NUM')->where('CON_NUM < 3')->orderBy('NETWORK_DEEP ASC')->asArray()->one();
- if($conUser['CON_NUM'] == 0){
- $newLocation = 1;
- } elseif($conUser['CON_NUM'] == 1){
- $newLocation = 2;
- } elseif($conUser['CON_NUM'] == 2) {
- $newLocation = 3;
- } else {
- throw new Exception('添加失败,原因:加入会员的点位区位错误');
- }
- return $this->actionAddUser($num, $conUser['USER_ID'], $conUser['USER_ID'], $newLocation);
- } else {
- throw new Exception('添加失败,原因:'.Form::formatErrorsForApi($form->getErrors()));
- }
- return true;
- }
- /**
- * 清空已增加的会员
- */
- public function actionClearAddUser(){
- $notDelUserId = "'670B84FD7C216D4EE055736AECE8644D','B322C18F7E274A9D9FC5DADC3B385E8B','638A5A3B617F46C999C5E4D072EED369','3C313C66D1724D658BF10B08194022BB'";
- $netChangeUserId = "'B322C18F7E274A9D9FC5DADC3B385E8B','638A5A3B617F46C999C5E4D072EED369','3C313C66D1724D658BF10B08194022BB'";
- UserInfo::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- UserNetwork::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- UserRelation::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- UserInfo::updateAll(['CON_NUM' => 0, 'REC_NUM' => 0], "USER_ID IN (".$netChangeUserId.")");
- User::deleteAll("ID NOT IN (".$notDelUserId.")");
- CalcBonus::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- CalcBonusBD::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- CalcBonusTG::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- CalcBonusYJ::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- CalcBonusGX::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- CalcBonusGL::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- CalcBonusQY::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- CalcBonusYC::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- FlowBonus::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- FlowReconsumePoints::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- PerfPeriod::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- PerfMonth::deleteAll("USER_ID NOT IN (".$notDelUserId.")");
- DecOrder::deleteAll("TO_USER_ID NOT IN (".$notDelUserId.")");
- UserBonus::deleteAll();
- echo '删除完成'.PHP_EOL;
- }
- /**
- * 清空所有会员
- */
- public function actionClearAllUser(){
- UserInfo::deleteAll();
- UserNetwork::deleteAll();
- UserRelation::deleteAll();
- User::deleteAll();
- CalcBonus::deleteAll();
- CalcBonusBD::deleteAll();
- CalcBonusTG::deleteAll();
- CalcBonusYJ::deleteAll();
- CalcBonusGX::deleteAll();
- CalcBonusGL::deleteAll();
- CalcBonusQY::deleteAll();
- CalcBonusYC::deleteAll();
- FlowBonus::deleteAll();
- FlowReconsumePoints::deleteAll();
- PerfPeriod::deleteAll();
- PerfMonth::deleteAll();
- DecOrder::deleteAll();
- UserBonus::deleteAll();
- echo '删除完成'.PHP_EOL;
- }
- /**
- * 清空结算的奖金
- */
- public function actionClearBonus(){
- CalcBonus::deleteAll();
- CalcBonusBD::deleteAll();
- CalcBonusTG::deleteAll();
- CalcBonusYJ::deleteAll();
- CalcBonusGX::deleteAll();
- CalcBonusGL::deleteAll();
- CalcBonusQY::deleteAll();
- CalcBonusYC::deleteAll();
- FlowBonus::deleteAll();
- FlowReconsumePoints::deleteAll();
- PerfPeriod::deleteAll();
- PerfMonth::deleteAll();
- echo '删除完成'.PHP_EOL;
- }
- /**
- * 清空会员的网络
- */
- public function actionClearNetRedis(){
- \Yii::$app->redis->del(Cache::USER_NETWORK_PARENTS);
- \Yii::$app->redis->del(Cache::USER_RELATION_PARENTS);
- echo '全部完成'.PHP_EOL;
- }
- public function actionLoopUser($offset = 0){
- $query = UserInfo::findUseDbCalc()->select('USER_ID,USER_NAME,ZC_PV,CON_UID,REC_UID,CON_NUM,REC_NUM,NETWORK_DEEP,RELATION_DEEP,STORE_TYPE,PERIOD_NUM,CREATED_AT,UPDATED_AT')->where('1=1')->orderBy('NETWORK_DEEP DESC')->offset($offset)->limit(100)->asArray()->all();
- if($query){
- foreach($query as $data){
- echo($data['USER_NAME'].PHP_EOL);
- }
- $this->actionLoopUser($offset + 100);
- }
- exit();
- }
- public function actionLoopUserTwo(){
- // $query = UserInfo::findUseDbCalc()->select('USER_ID,USER_NAME,ZC_PV,CON_UID,REC_UID,CON_NUM,REC_NUM,NETWORK_DEEP,RELATION_DEEP,STORE_TYPE,PERIOD_NUM,CREATED_AT,UPDATED_AT')->where('1=1')->orderBy('NETWORK_DEEP DESC')->asArray();
- //
- // foreach($query->batch() as $allData){
- // foreach($allData as $data){
- // echo($data['USER_NAME'].PHP_EOL);
- // }
- // }
- //
- // exit();
- // $test=(new \yii\db\Query());
- // $test->from('AR_USER_INFO');
- // $reader=$test->prepare(\Yii::$app->db->queryBuilder)->createCommand()->query();
- // while ($row = $reader->read()) {
- // print_r($row);
- // }
- $query = (new Query())->from('{{%USER_INFO}}')->prepare(\Yii::$app->db->queryBuilder)->where('1=1');
- // while ($row = $query->read()) {
- // print_r($row['USER_NAME'].PHP_EOL);
- // }
- try {
- foreach($query->batch() as $allData){
- foreach($allData as $data){
- echo($data['USER_NAME'].PHP_EOL);
- }
- }
- } catch (\PDOException $e){
- print_r($e->getMessage());
- }
- }
- /**
- * 循环加入报单
- * @throws \yii\db\Exception
- */
- public function actionLoopAddDec(){
- // 获取最底层的100名会员
- $allUser = UserInfo::find()->where('1=1')->limit(100)->orderBy('NETWORK_DEEP DESC')->asArray()->all();
- $insertData = [];
- $decSn = 190310000000;
- foreach($allUser as $key=>$user){
- $decSn += 1;
- $decPv = rand(1, 100) * 1000;
- $insertData[] = [
- 'DEC_SN' => 'D'.$decSn.'0000',
- 'ORDER_SN' => $decSn,
- 'USER_ID' => $user['USER_ID'],
- 'TYPE' => 'ZC',
- 'TO_USER_ID' => $user['USER_ID'],
- 'DEC_AMOUNT' => $decPv,
- 'DEC_PV' => $decPv,
- 'PAID_WALLET' => 'bill',
- 'PERIOD_NUM' => 121,
- 'IS_DEL' => 0,
- 'P_CALC_MONTH' => Date::ociToDate(202001, Date::OCI_TIME_FORMAT_SHORT_MONTH),
- 'CREATED_AT' => strtotime('2020-01-20'),
- 'DEC_ID' => $user['REC_UID'],
- ];
- }
- DecOrder::batchInsert($insertData);
- echo('全部完成'.PHP_EOL);
- }
- /**
- * 清空报单
- */
- public function actionClearDec(){
- DecOrder::deleteAll('PERIOD_NUM = 100');
- echo('删除完成'.PHP_EOL);
- }
- /**
- * 测试rpc接口
- * @throws Exception
- */
- public function actionRpcCli(){
- // $data = [
- // ['type' => 'ZC', 'userId' => '670B84FD7C216D4EE055736AECE8644D', 'toUserId'=>'dec001', 'decPv' => '5000', 'insertUserName' => 'dec001', 'conUserName' => 'tester005', 'recUserName' => 'tester003', 'location' => 1],
- // ['type' => 'ZC', 'userId' => '670B84FD7C216D4EE055736AECE8644D', 'toUserId'=>'dec002', 'decPv' => '5000', 'insertUserName' => 'dec002', 'conUserName' => 'tester003', 'recUserName' => 'tester003', 'location' => 2],
- // ['type' => 'ZC', 'userId' => '670B84FD7C216D4EE055736AECE8644D', 'toUserId'=>'dec003', 'decPv' => '5000', 'insertUserName' => 'dec003', 'conUserName' => 'tester003', 'recUserName' => 'tester003', 'location' => 3],
- // ['type' => 'ZC', 'userId' => '670B84FD7C216D4EE055736AECE8644D', 'toUserId'=>'dec004', 'decPv' => '5000', 'insertUserName' => 'dec004', 'conUserName' => 'dec001', 'recUserName' => 'tester003', 'location' => 1],
- // ['type' => 'ZC', 'userId' => '670B84FD7C216D4EE055736AECE8644D', 'toUserId'=>'dec005', 'decPv' => '5000', 'insertUserName' => 'dec005', 'conUserName' => 'dec001', 'recUserName' => 'tester003', 'location' => 2],
- // ['type' => 'ZC', 'userId' => '670B84FD7C216D4EE055736AECE8644D', 'toUserId'=>'dec006', 'decPv' => '5000', 'insertUserName' => 'dec006', 'conUserName' => 'dec001', 'recUserName' => 'tester003', 'location' => 3],
- // ];
- // $data = array (
- // 0 =>
- // array (
- // 'type' => 'ZC',
- // 'userId' => 'B322C18F7E274A9D9FC5DADC3B385E8B',
- // 'toUserId' => '6B2869C5958446CAB479CF1A5D9E3763',
- // 'decPv' => '705',
- // 'insertUserName' => 'b80346267',
- // 'insertUserIdCard' => '130302199905051113',
- // 'conUserName' => 'b90556236',
- // 'recUserName' => 'tester002',
- // 'location' => '1',
- // ),
- // 1 =>
- // array (
- // 'type' => 'ZC',
- // 'userId' => 'B322C18F7E274A9D9FC5DADC3B385E8B',
- // 'toUserId' => '940644BC1C2D41F392EA0EDCB4354F55',
- // 'decPv' => '875',
- // 'insertUserName' => 'b27486502',
- // 'insertUserIdCard' => '130302199905051113',
- // 'conUserName' => 'b80346267',
- // 'recUserName' => 'tester002',
- // 'location' => '1',
- // ),
- // 2 =>
- // array (
- // 'type' => 'ZC',
- // 'userId' => 'B322C18F7E274A9D9FC5DADC3B385E8B',
- // 'toUserId' => '854E59FE17494633A853872C878B93D7',
- // 'decPv' => '1405',
- // 'insertUserName' => 'b76328656',
- // 'insertUserIdCard' => '130302199905051113',
- // 'conUserName' => 'b80346267',
- // 'recUserName' => 'b27486502',
- // 'location' => '2',
- // ),
- // );
- $data = [
- [
- 'type' => 'ZC',
- 'userId' => '3C313C66D1724D658BF10B08194022BB',
- 'toUserId' => '',
- 'decPv' => '3000',
- 'insertUserName' => 'b27251926',
- 'conUserName' => 'b83825142',
- 'recUserName' => 'b92223569',
- 'location' => '1',
- 'insertUserIdCard' => '110227196504215915',
- ],
- [
- 'type' => 'ZC',
- 'userId' => '3C313C66D1724D658BF10B08194022BB',
- 'toUserId' => '',
- 'decPv' => 12000.0,
- 'insertUserName' => 'b86268542',
- 'conUserName' => 'b92223569',
- 'recUserName' => 'b27251926',
- 'location' => '2',
- 'insertUserIdCard' => '110227196504215915',
- ],
- ];
- $condition = [
- 'namespace' => '\\'.RPCApi::class.'::api',
- 'param' => [
- 'class'=> '\\'.DeclarationLoopForm::class,
- 'fields'=>[
- 'scenario' => 'canDec',
- 'data' => $data,
- ],
- 'action'=>'validate',
- 'param'=>[],
- ],
- ];
- $rpcApi = new RPCApi();
- if($result = $rpcApi->request($condition)){
- var_dump($result);
- } else {
- var_dump($rpcApi->getError());
- }
- }
- /**
- * 发票识别
- */
- public function actionOcr(){
- $result = OcrApi::instance()->vatInvoice('/Volumes/HDD/Downloads/vatInvoice.jpg');
- print_r($result);
- }
- /**
- * 备份数据库测试
- * @throws \yii\db\Exception
- */
- public function actionBakData(){
- DataBak::backup(142);
- }
- /**
- * 测试短信发送(可协程发送)
- */
- public function actionSendSms(){
- $params = [
- 'mobiles' => '19933643193',
- 'content' => '测试短息,您好',
- ];
- SmsApi::instance()->clearError();
- for($i=0;$i<10;$i++){
- SmsApi::instance()->goSend($params);
- }
- print_r(SmsApi::instance()->getError());
- }
- /**
- * 测试绑定
- * @throws \yii\db\Exception
- */
- public function actionBind(){
- UserBind::autoBind('9AC80FF809B04EED96321D34CBA0EAA9','32132419900307929X');
- }
- /**
- * 测试任务队列
- */
- public function actionTaskQueue(){
- if(Queue::instance()->addTask(Queue::TYPE_FUNC, TaskFunc::class.'::testTaskQueue', [], Queue::LOOP_TYPE_DAY, '16:39:00', 2)){
- echo('任务添加成功'.PHP_EOL);
- } else {
- echo('任务添加失败'.PHP_EOL);
- }
- }
- public function actionMsg(){
- $r=Reconsume::getUserReconsumePool("8C5E7DEB93767021E053693418ACB2B6");
- }
- public function actionGenerateId() {
- for($i=1;$i<=10;$i++) {
- echo SnowFake::instance()->generateId() . PHP_EOL;
- }
- }
- public function actionShow() {
- $a4Uid = '76202856516030464';
- $data = CalcCache::bonus($a4Uid, 104);
- print_r($data);die;
- }
- public function actionLoopAllUsers($findUid='76193630875947008', $periodNum=105, $offset = 0)
- {
- // 从缓存列表里面从底层往上倒序获取会员
- $allData = CalcCache::getUsers($periodNum, $offset, 100);
- if($allData) {
- foreach($allData as $userId){
- // echo sprintf("userId:%s", $userId) . PHP_EOL;
- if( $userId === $findUid ) {
- echo "find user" . $findUid . PHP_EOL;
- // $data = CalcCache::bonus($findUid, 104);
- // var_dump($data);die;
- }
- unset($userId);
- }
- unset($allData);
- return $this->actionLoopAllUsers($findUid, $periodNum, $offset + 100);
- }
- return true;
- }
- public function actionLoopAllPerfUser($offset=0, $periodNum=103, $limit=1000) {
- $allData = CalcCache::getHasPerfUsers($periodNum, $offset, $limit);
- if ($allData) {
- foreach ($allData as $userId) {
- $user = User::find()->select(["USER_NAME"])->where('ID=:ID', ['ID'=>$userId])->asArray()->all();
- if( !$user ) {
- echo $userId . PHP_EOL;
- }
- }
- $this->actionLoopAllPerfUser($offset+$limit, $periodNum, $limit);
- }
- }
- public function actionLoopAllGxUser($offset=0, $periodNum=105, $limit=1000) {
- return false;
- $allData = CalcBonus::find()->select(["ID", "USER_ID", "ORI_BONUS_GX"])->where("PERIOD_NUM=:PERIOD_NUM", ["PERIOD_NUM"=>$periodNum])->offset($offset)->limit($limit)->asArray()->all();
- if ($allData) {
- foreach ($allData as $everyData) {
- if( $everyData['ORI_BONUS_GX'] <= 0 ) continue;
- $list = CalcBonusGX::find()->select(['ID', 'USER_ID', 'ORI_BONUS'])->where('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', [
- 'USER_ID' => $everyData['USER_ID'],
- 'PERIOD_NUM' => $periodNum,
- ])->asArray()->all();
- if( count($list) <= 1) {
- unset($list);
- continue;
- }
- //删除一条
- $firstData = array_shift($list);
- if( $firstData['ORI_BONUS'] != $everyData['ORI_BONUS_GX'] ) {
- //修改奖金
- echo 'ID:' . $everyData['ID'] . '奖金:' . $everyData['ORI_BONUS_GX'] . '修改为:' . $firstData['ORI_BONUS'] . PHP_EOL;
- CalcBonus::updateAll(['ORI_BONUS_GX'=>$firstData['ORI_BONUS']], 'ID=:ID', [
- 'ID' => $everyData['ID'],
- ]);
- }
- //删除其它记录
- foreach ($list as $deleteData) {
- echo '删除记录为:' . $deleteData['ID'] . PHP_EOL;
- CalcBonusGX::deleteAll('ID=:ID', ['ID'=>$deleteData['ID']]);
- unset($deleteData);
- }
- unset($everyData, $list, $firstData);
- }
- unset($allData);
- $this->actionLoopAllGxUser($offset+$limit, $periodNum, $limit);
- }
- }
- public function actionLoopAllGxUserTwo($offset=0, $periodNum=105, $limit=1000) {
- return false;
- $allData = CalcBonusGX::find()->select(['ID', 'USER_ID', 'ORI_BONUS', 'AMOUNT', 'RECONSUME_POINTS', 'MANAGE_TAX'])->where('PERIOD_NUM=:PERIOD_NUM', [
- 'PERIOD_NUM' => $periodNum,
- ])->offset($offset)->limit($limit)->asArray()->all();
- if ($allData) {
- foreach ($allData as $everyData) {
- $oneData = CalcBonus::find()->select(["ID", "USER_ID", "BONUS_GX", "RECONSUME_POINTS", "MANAGE_TAX", "BONUS_TOTAL"])->where('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', [
- 'USER_ID' => $everyData['USER_ID'],
- 'PERIOD_NUM' => $periodNum,
- ])->asArray()->one();
- if( $oneData['BONUS_GX'] != $everyData['AMOUNT'] ) {
- //修改奖金
- echo 'ID:' . $oneData['ID'] . '奖金:' . $oneData['BONUS_GX'] . '修改为:' . $everyData['AMOUNT'] . PHP_EOL;
- // echo 'RECONSUME_POINTS:' . ($oneData['RECONSUME_POINTS']-$everyData['RECONSUME_POINTS']) . 'MANAGE_TAX:' . ($oneData['MANAGE_TAX']-$everyData['MANAGE_TAX']) . PHP_EOL;
- CalcBonus::updateAll([
- 'BONUS_GX'=>$everyData['AMOUNT'],
- 'RECONSUME_POINTS'=>$oneData['RECONSUME_POINTS']-$everyData['RECONSUME_POINTS'],
- 'MANAGE_TAX'=>$oneData['MANAGE_TAX']-$everyData['MANAGE_TAX'],
- 'BONUS_TOTAL'=>$oneData['BONUS_TOTAL']-$everyData['ORI_BONUS'],
- ], 'ID=:ID', [
- 'ID' => $oneData['ID'],
- ]);
- }
- unset($everyData, $oneData);
- }
- unset($allData);
- $this->actionLoopAllGxUserTwo($offset+$limit, $periodNum, $limit);
- }
- }
- /**
- * 导入结余业绩
- * @param int $periodNum
- */
- public function actionAddSurplusData($periodNum=107) {
- $allCount = PerfPeriod::find()->where('PERIOD_NUM=:PERIOD_NUM', ['PERIOD_NUM'=>$periodNum])->count('ID');
- $pageSize = 1000;
- $pageCount = ceil($allCount/$pageSize);
- unset($allCount);
- for($page=1;$page<=$pageCount;$page++){
- echo sprintf('导入【%d】期结余业绩,总页数为【%d】,当前页数为【%d】' . PHP_EOL, $periodNum, $pageCount, $page);
- $perfPeriodData = PerfPeriod::find()->select(['USER_ID', 'SURPLUS_1L', 'SURPLUS_2L', 'SURPLUS_3L', 'SURPLUS_4L', 'SURPLUS_5L'])->where('PERIOD_NUM=:PERIOD_NUM', ['PERIOD_NUM'=>$periodNum])->orderBy('ID ASC')->offset(($page-1)*$pageSize)->limit($pageSize)->asArray()->all();
- foreach ($perfPeriodData as $data) {
- UserPerf::updateAll([
- 'SURPLUS_1L' => $data['SURPLUS_1L'],
- 'SURPLUS_2L' => $data['SURPLUS_2L'],
- 'SURPLUS_3L' => $data['SURPLUS_3L'],
- 'SURPLUS_4L' => $data['SURPLUS_4L'],
- 'SURPLUS_5L' => $data['SURPLUS_5L'],
- ], 'USER_ID=:USER_ID', [':USER_ID' => $data['USER_ID']]);
- unset($data);
- }
- unset($perfPeriodData);
- }
- }
- public function actionAddLastSurplus()
- {
- $data = [
- 'A10505648'=>360,
- 'D86714213'=>120,
- 'F10401034'=>120,
- 'A16768918'=>360,
- 'H72700605'=>720,
- 'H19166726'=>550,
- 'H38585848'=>360,
- 'A18950413'=>1560,
- 'H87620691'=>120,
- 'E10242995'=>426,
- 'Eh78786514'=>124,
- 'E14356640'=>120,
- 'E12757473'=>360,
- 'A19273920'=>240,
- 'H10164357'=>120,
- ];
- foreach ($data as $username=>$perf) {
- $user = User::find()->select(['ID'])->where('USER_NAME=:USER_NAME', [
- 'USER_NAME' => $username
- ])->asArray()->one();
- UserPerf::updateAll([
- 'SURPLUS_2L' => $perf,
- ], 'USER_ID=:USER_ID', [':USER_ID' => $user['ID']]);
- unset($username, $perf);
- }
- echo 'OK' . PHP_EOL;
- }
- public function actionBackup() {
- DataBak::backup(105);
- }
- /**
- * 结算最后一步写数据
- * @param int $periodNum
- * @throws \yii\db\Exception
- */
- public function actionCalcWriteDb($periodNum=108) {
- // 周业绩
- // PerfPeriod::pageDeleteAll('PERIOD_NUM='.$periodNum);
- // // 奖金表
- // CalcBonus::pageDeleteAll('PERIOD_NUM='.$periodNum);
- //
- // $calcWrite = new CalcWrite();
- // $calcWrite->start($periodNum);
- Period::updateAll(['IS_CALCING' => 0, 'IS_CALCULATED' => Period::CALCULATE_FINISH, 'CALCULATED_AT' => Date::nowTime(), 'CALC_PERCENT' => 100], 'PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $periodNum]);
- }
- /**
- * 计算某一期的聘级
- * @param $periodNum
- * @return string
- * @throws Exception
- * @throws \yii\db\Exception
- */
- public function actionCalcEmpLevel($periodNum) {
- $bonusCalc = PerfCalc::instance();
- $bonusCalc->setPeriodNum($periodNum);
- $bonusCalc->initCalcTask();
- $bonusCalc->loopCalcEmpLevel();
- return 'ok' . PHP_EOL;
- }
- /**
- * 计算某一期的聘级
- * @param $periodNum
- * @return string
- * @throws Exception
- * @throws \yii\db\Exception
- */
- public function actionCheckVipBonus($periodNum) {
- $bonusCalc = BonusCalc::instance();
- $bonusCalc->setPeriodNum($periodNum);
- $bonusCalc->initCalcTask();
- $bonusCalc->calcBonusVIP();
- return 'ok' . PHP_EOL;
- }
- /**
- * 检测共享奖
- * @param $periodNum
- * @return string
- * @throws \yii\db\Exception
- */
- public function actionCheckShareBonus($periodNum) {
- $bonusCalc = BonusCalc::instance();
- $bonusCalc->setPeriodNum($periodNum);
- $bonusCalc->initCalcTask();
- $bonusCalc->calcBonusGXBefore();
- return 'ok' . PHP_EOL;
- }
- /**
- * 修正导入数据的报单中心ID
- * @param int $startPage
- * @param int $limit
- * @return bool
- */
- public function actionFixImportDecId($startPage=1, $limit = 1000) {
- $numCount = TmpOldNetwork::find()->where("1=1")->orderBy("ID ASC")->count("ID");
- $pageCount = ceil($numCount/$limit);
- for ($page=$startPage;$page<=$pageCount;$page++) {
- $pageList = TmpOldNetwork::find()->where("1=1")->orderBy("ID ASC")->limit($limit)->offset(($page - 1) * $limit)->asArray()->all();
- foreach ($pageList as $pageData) {
- User::updateAll(['DEC_ID'=>'670B84FD7C216D4EE055736AECE8644D'], 'USER_NAME=:USER_NAME', ['USER_NAME'=>$pageData['USER_NAME']]);
- unset($pageData);
- }
- unset($pageList);
- echo sprintf("修改所属报单中心,总页数【%s】,当前页数:【%s】写入成功".PHP_EOL, $pageCount, $page);
- }
- unset($numCount, $pageCount, $page, $startPage, $limit);
- return true;
- }
- /**
- *
- * 环循所有会员找到错误的数据
- * @param int $periodNum
- * @param int $offset
- * @return bool
- */
- public function actionLoopAllUsersForError($periodNum=115, $offset = 0)
- {
- echo '当前offset:' . $offset . PHP_EOL;
- // 从缓存列表里面从底层往上倒序获取会员
- $allData = CalcCache::getUsers($periodNum, $offset, 1000);
- if($allData) {
- foreach($allData as $userId){
- // 获取到级别以后,给上级的相应人数中追加数量
- $parentRecUserId = $userId;
- $this->loopRelationParentDo($userId, function ($parent) use ($periodNum, &$parentRecUserId) {
- //判断$parentRecUserId是否为$parent['PARENT_UID']的直推
- $parentUid = $parent['PARENT_UID'];
- $toInfo = CalcCache::getUserInfo($parentRecUserId, $periodNum);
- if( !isset($toInfo['REC_UID']) ) {
- echo '错误数据:' . $parentRecUserId . PHP_EOL;
- }
- if( isset($toInfo['REC_UID']) && $parentUid !== $toInfo['REC_UID'] ) {
- $parentUid = $toInfo['REC_UID'];
- }
- unset($toInfo);
- if( !$parentUid ) return 1;
- //每次记录上次的USER_ID
- $parentRecUserId = $parentUid;
- });
- unset($userId);
- }
- unset($allData);
- return $this->actionLoopAllUsersForError($periodNum, $offset + 1000);
- }
- return true;
- }
- /**
- * 循环推荐网络的父级
- * @param $userId
- * @param callable $callbackFunc
- * @param int $offset
- * @return bool
- */
- public function loopRelationParentDo($userId, callable $callbackFunc, int $offset = 0) {
- $allParents = Cache::getAllRelationParents($userId);
- $allData = array_slice($allParents, $offset, 1000);
- unset($allParents);
- if ($allData) {
- foreach ($allData as $data) {
- $funcResult = $callbackFunc($data);
- if ($funcResult === 1) {
- return true;
- } elseif ($funcResult === 2) {
- continue;
- }
- unset($data, $funcResult);
- }
- unset($allData);
- return $this->loopRelationParentDo($userId, $callbackFunc, $offset + 1000);
- }
- return true;
- }
- /**
- * 循环父级并执行回调函数
- * @param $userId
- * @param callable $callbackFunc
- * @param int $offset
- * @return bool
- */
- public function loopNetworkParentDo($userId, callable $callbackFunc, int $offset = 0) {
- $allParents = Cache::getAllNetworkParents($userId);
- $allData = array_slice($allParents, $offset, 1000);
- unset($allParents);
- if ($allData) {
- foreach ($allData as $data) {
- $funcResult = $callbackFunc($data);
- if ($funcResult === 1) {
- return true;
- } elseif ($funcResult === 2) {
- continue;
- }
- unset($data, $funcResult);
- }
- unset($allData);
- return $this->loopNetworkParentDo($userId, $callbackFunc, $offset + 1000);
- }
- return true;
- }
- /**
- * 计算某人某一期的聘级
- * @param $userId
- * @param $periodNum
- * @return string
- * @throws Exception
- * @throws \yii\db\Exception
- */
- public function actionCheckUserEmpLevel($userId, $periodNum) {
- $bonusCalc = PerfCalc::instance();
- $bonusCalc->setPeriodNum($periodNum);
- $bonusCalc->initCalcTask();
- $nowMonthPerf = CalcCache::nowMonthPerf($userId, $periodNum);
- var_dump($nowMonthPerf);
- $empLevelData = $bonusCalc->isEmpLevel1($userId, $nowMonthPerf);
- var_dump($empLevelData);
- return 'ok' . PHP_EOL;
- }
- public function actionCheckYcBonus($userId, $periodNum) {
- $empLevelConfig = Cache::getEmpLevelConfig();
- $nowMonthPerf = CalcCache::nowMonthPerf($userId, $periodNum);
- // $monthPvPss = $nowMonthPerf['PV_PCS'] + $nowMonthPerf['PV_PSS'];
- $empLevelId = $nowMonthPerf['EMP_LEVEL'];
- $empLevel = $empLevelConfig[$empLevelId];
- $rxPercent = $empLevel['RX_PERCENT'] ?? 0;
- if( $rxPercent <= 0 ) {
- echo 'rxPercent error' . PHP_EOL;
- return false;
- }
- //个人业绩的奖金
- $empBonus = $nowMonthPerf['PV_PCS'] * $rxPercent / 100;
- //2020-06-05修改荣衔奖的计算方式、不由自己的业绩决定、由直推会员的业绩决定
- $childList = CalcCache::getChildrenOneDeepFromRedis($userId, $periodNum);
- foreach ($childList as $child) {
- $childMaxPercent = CalcCache::ycMaxBonusPercent($child['USER_ID'], $periodNum);
- $percentDiff = $rxPercent - $childMaxPercent;
- if( $percentDiff <= 0 ) continue;
- $childNowMonthPerf = CalcCache::nowMonthPerf($child['USER_ID'], $periodNum);
- $childBonus = $childNowMonthPerf['PV_PSS_TOTAL'] * $percentDiff / 100;
- $empBonus += $childBonus;
- echo sprintf('childUserId:%s,childMaxPercent:%s,childBonus:%s' . PHP_EOL, $child['USER_ID'], $childMaxPercent, $childBonus);
- unset($child, $childMaxPercent, $percentDiff, $childNowMonthPerf, $childBonus);
- }
- unset($childList);
- echo sprintf('userId:%s,rxPercent:%s,empBonus:%s' . PHP_EOL, $userId, $rxPercent, $empBonus);
- }
- /**
- * 修正移网业绩错误的问题
- * @return bool
- */
- public function actionFixMoveNetPerf() {
- //获取未结算的月份
- $noSentPeriod = Period::find()->where('IS_SENT=0')->orderBy('PERIOD_NUM ASC')->asArray()->one();
- if( !$noSentPeriod ) return false;
- $thisYearMonth = $noSentPeriod['CALC_YEAR'].Tool::numFix($noSentPeriod['CALC_MONTH'], 2);
- $lastYearMonth = Date::lastMonth($noSentPeriod['CALC_YEAR'].'-'.$noSentPeriod['CALC_MONTH'], 'Ym');
- // $lastYearMonth = '202003';
- echo sprintf("当前期数为:%s,当前结算年月为:%s,上一个结算年月为:%s" . PHP_EOL, $noSentPeriod['PERIOD_NUM'], $thisYearMonth, $lastYearMonth);
- unset($noSentPeriod);
- //找到所有的relation的移网
- $allRelationList = UserMove::find()->where('TYPE=:TYPE', ['TYPE'=>'relation'])->asArray()->all();
- //根据原来的父级、找到所有的原父级
- $lastYearMonthPerf = [
- '86821386802302976'=>960.000,
- '76193537884033024'=>1053.000,
- '76200969452523520'=>1098.000,
- '76193583539032064'=>360.000,
- '76220073806794752'=>4678.400,
- '76218844456292352'=>17825.000,
- '76219777546326016'=>12316.000,
- '76220534563672064'=>6844.000,
- '76220988731297792'=>2680.000,
- '86805887292936192'=>508.000,
- '86803242738126848'=>6688.200,
- '76193502618324992'=>28590.000,
- '86804998209540096'=>0.000,
- '86802876130791424'=>8938.000,
- '76196752000159744'=>436.000,
- '76189559771238400'=>90423.400,
- ];
- foreach ($allRelationList as $moveData) {
- echo sprintf("当前用户ID:%s,原看接点人ID:%s,新接点人ID:%s" . PHP_EOL, $moveData['USER_ID'], $moveData['FROM_UID'], $moveData['TO_UID']);
- if( !isset($lastYearMonthPerf[$moveData['USER_ID']]) || $lastYearMonthPerf[$moveData['USER_ID']] == 0 ) continue;
- //查找移动点位这个人的上个月的累计业绩
- // $lastYearMonthPerf = PerfMonth::find()->where('USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', ['USER_ID'=>$moveData['USER_ID'], 'CALC_MONTH'=>$lastYearMonth])->asArray()->one();
- // echo sprintf("'%s'=>%s," . PHP_EOL, $moveData['USER_ID'], $lastYearMonthPerf['PV_PSS_TOTAL']);
- //本月的已结算业绩
- // $thisPerfPeriodList = PerfPeriod::find()->select(['PV_PCS', 'PERIOD_NUM'])->where('USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', ['USER_ID'=>$moveData['USER_ID'], 'CALC_MONTH'=>$thisYearMonth])->asArray()->all();
- $oldParentList = UserRelation::find()->where('USER_ID=:USER_ID', ['USER_ID'=>$moveData['FROM_UID']])->asArray()->all();
- $oldParentUids = [$moveData['FROM_UID']];
- foreach ($oldParentList as $oldData) {
- $oldParentUids[] = $oldData['PARENT_UID'];
- unset($oldData);
- }
- unset($oldParentList);
- $newParentList = UserRelation::find()->where('USER_ID=:USER_ID', ['USER_ID'=>$moveData['TO_UID']])->asArray()->all();
- $newParentUids = [$moveData['TO_UID']];
- foreach ($newParentList as $newData) {
- $newParentUids[] = $newData['PARENT_UID'];
- unset($newData);
- }
- unset($newParentList);
- //修改上个月的累计业绩
- foreach ($oldParentUids as $oldParentUid) {//减
- PerfMonth::updateAllCounters(['PV_PSS_TOTAL'=>(-1)*$lastYearMonthPerf[$moveData['USER_ID']]], 'USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', ['USER_ID'=>$oldParentUid, 'CALC_MONTH'=>$lastYearMonth]);
- unset($oldParentUid);
- }
- foreach ($newParentUids as $newParentUid) {//加
- PerfMonth::updateAllCounters(['PV_PSS_TOTAL'=>$lastYearMonthPerf[$moveData['USER_ID']]], 'USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', ['USER_ID'=>$newParentUid, 'CALC_MONTH'=>$lastYearMonth]);
- unset($newParentUid);
- }
- //修改本月的已结算业绩
- // foreach ($thisPerfPeriodList as $periodPerf) {
- // if( $periodPerf['PV_PCS'] <= 0 ) continue;
- //
- // foreach ($oldParentUids as $oldParentUid) {//减
- // PerfPeriod::updateAllCounters(['PV_PSS'=>(-1)*$periodPerf['PV_PCS']], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', ['USER_ID'=>$oldParentUid, 'PERIOD_NUM'=>$periodPerf['PERIOD_NUM']]);
- // unset($oldParentUid);
- // }
- // foreach ($newParentUids as $newParentUid) {//加
- // PerfPeriod::updateAllCounters(['PV_PSS'=>$periodPerf['PV_PCS']], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', ['USER_ID'=>$newParentUid, 'PERIOD_NUM'=>$periodPerf['PERIOD_NUM']]);
- // unset($newParentUid);
- // }
- //
- // unset($periodPerf);
- // }
- unset($moveData);
- }
- unset($allRelationList, $thisYearMonth, $lastYearMonth, $lastYearMonthPerf);
- }
- /**
- * 检测聘级
- * @param $userId
- * @param int $periodNum
- * @throws \yii\db\Exception
- */
- public function actionCheckEmpLevel($userId, $periodNum=115)
- {
- $bonusCalc = PerfCalc::instance();
- $bonusCalc->setPeriodNum($periodNum);
- $bonusCalc->initCalcTask();
- $userInfo = CalcCache::getUserInfo($userId, $periodNum);
- $nowMonthPerf = CalcCache::nowMonthPerf($userId, $periodNum);
- $empLevel = $bonusCalc->checkEmpLevel($userId, $nowMonthPerf, $userInfo['EMP_LV']);
- var_dump($empLevel);
- die;
- }
- /*
- * 清空所有会员的剩余业绩
- */
- public function actionClearSurplusPerf() {
- $allCount = UserPerf::find()->where('1=1')->orderBy('ID ASC')->count('ID');
- $pageSize = 1000;
- $pageCount = ceil($allCount/$pageSize);
- for( $page=1;$page<=$pageCount;$page++ ) {
- echo sprintf('清空所有会员的剩余业绩,总页数为【%d】,当前页数为【%d】' . PHP_EOL, $pageCount, $page);
- $list = UserPerf::find()->where('1=1')->orderBy('ID ASC')->offset(($page-1)*$pageSize)->limit($pageSize)->asArray()->all();
- foreach ($list as $every) {
- UserPerf::updateAll([
- 'SURPLUS_1L' => 0,
- 'SURPLUS_2L' => 0,
- 'SURPLUS_3L' => 0,
- 'SURPLUS_4L' => 0,
- 'SURPLUS_5L' => 0], 'ID=:ID', ['ID'=>$every['ID']]);
- unset($every);
- }
- unset($list);
- }
- }
- /**
- * 手动清空RepairCache
- */
- public function actionClearRepairCache() {
- CalcCache::clearRepairAllCache();
- }
- /**
- * 修正剩余业绩没有记录的错误
- */
- public function actionFixSurplusPerf() {
- $bigPercentPeriod = 116;
- $pageSize = 1000;
- for ($periodNum=111;$periodNum<=118;$periodNum++) {
- $allCount = PerfPeriod::find()->from(PerfPeriod::tableName() . 'AS PP')->select('PP.ID,PP.USER_ID, PP.PV_1L,PP.PV_2L,PP.PV_3L,CBQ.LOGS')->leftJoin(CalcBonusQY::tableName() . ' AS CBQ', 'CBQ.USER_ID=PP.USER_ID AND CBQ.PERIOD_NUM=PP.PERIOD_NUM')->where('PP.PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $periodNum])->orderBy('PP.ID ASC')->count();
- $pageCount = ceil($allCount/$pageSize);
- for ($page=1;$page<=$pageCount;$page++) {
- $allData = PerfPeriod::find()->from(PerfPeriod::tableName() . 'AS PP')->select('PP.ID,PP.USER_ID, PP.PV_1L,PP.PV_2L,PP.PV_3L,CBQ.LOGS')->leftJoin(CalcBonusQY::tableName() . ' AS CBQ', 'CBQ.USER_ID=PP.USER_ID AND CBQ.PERIOD_NUM=PP.PERIOD_NUM')->where('PP.PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $periodNum])->orderBy('PP.ID ASC')->offset(($page-1)*$pageSize)->limit($pageSize)->asArray()->all();
- if( !$allData ) continue;
- foreach ($allData as $everyData) {
- if( $everyData['LOGS'] ) {
- $logData = json_decode($everyData['LOGS'], true);
- $surplusData = $logData['touchPerfArr'];
- unset($logData);
- }else {
- $surplusData = [
- 'SURPLUS_1L' => $everyData['PV_1L'],
- 'SURPLUS_2L' => $everyData['PV_2L'],
- 'SURPLUS_3L' => $everyData['PV_3L'],
- 'SURPLUS_4L' => 0,
- 'SURPLUS_5L' => 0,
- ];
- }
- //更新当前记录
- PerfPeriod::updateAll($surplusData, 'ID=:ID', ['ID'=>$everyData['ID']]);
- //更新userPerf
- if( $periodNum >= $bigPercentPeriod ) {
- UserPerf::updateAllCounters($surplusData, 'USER_ID=:USER_ID', ['USER_ID'=>$everyData['USER_ID']]);
- }else {
- //@todo 存储到缓存中或新字段里
- CalcCache::setRepairSurplusPerf($everyData['USER_ID'], $surplusData);
- }
- $baseUser = Info::getBaseUserById($everyData['USER_ID']);
- echo sprintf('当前期数:%s,当前用户ID为:%s,用户名为:%s,更新的数为,一区剩余:%s,二区剩余:%s,三区剩余:%s' . PHP_EOL, $periodNum, $everyData['USER_ID'], $baseUser['USER_NAME'], $surplusData['SURPLUS_1L'], $surplusData['SURPLUS_2L'], $surplusData['SURPLUS_3L']);
- unset($everyData, $surplusData, $baseUser);
- }
- unset($allData);
- }
- }
- }
- public function actionTestUpdateEmpLevel()
- {
- $allCount = PerfMonth::find()->where('CALC_MONTH=:CALC_MONTH', ['CALC_MONTH' => '202005'])->count('ID');
- $periodNum = 115;
- $pageSize = 1000;
- $pageCount = ceil($allCount / $pageSize);
- for ($page = 1; $page <= $pageCount; $page++) {
- $list = PerfMonth::find()->where('CALC_MONTH=:CALC_MONTH', ['CALC_MONTH' => '202005'])->offset(($page - 1) * $pageSize)->limit($pageSize)->asArray()->all();
- foreach ($list as $every) {
- $userInfo = CalcCache::getUserInfo($every['USER_ID'], $periodNum);
- //更新月业绩的聘级和用户信息中的聘级
- CalcCache::nowMonthPerf($every['USER_ID'], $periodNum, [
- 'EMP_LEVEL' => $every['LAST_EMP_LV']
- ]);
- if ($userInfo['EMP_LV'] != $every['LAST_EMP_LV']) {
- $userInfo['EMP_LV'] = $every['LAST_EMP_LV'];
- CalcCache::setUserInfo($every['USER_ID'], $periodNum, $userInfo);
- }
- CalcBonus::updateAll(['LAST_EMP_LV' => $every['LAST_EMP_LV']], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', ['USER_ID' => $every['USER_ID'], 'PERIOD_NUM' => $periodNum]);
- unset($every, $userInfo);
- }
- unset($list);
- echo sprintf("更新【聘级】数据,总页数【%s】,当前页数:【%s】导入成功" . PHP_EOL, $pageCount, $page);
- }
- }
- /**
- * 修正PSS_TOTAL
- */
- public function actionFixPssTotal() {
- $db = \Yii::$app->db;
- $sql = "SELECT COUNT(ID) as allCount FROM AR_USER_PERF_NEW WHERE 1=1 ORDER BY ID ASC";
- $allCountOne = $db->createCommand($sql)->queryOne();
- $pageSize = 1000;
- $pageCount = ceil($allCountOne['allCount']/$pageSize);
- for($page=1;$page<=$pageCount;$page++) {
- echo sprintf('修正PSS_TOTAL,总页数为【%d】,当前页数为【%d】' . PHP_EOL, $pageCount, $page);
- $offset = ($page-1)*$pageSize;
- $listSql = "SELECT * FROM AR_USER_PERF_NEW WHERE 1=1 ORDER BY ID ASC LIMIT {$pageSize} OFFSET {$offset}";
- $list = $db->createCommand($listSql)->queryAll();
- foreach ($list as $every) {
- //更新pss_total
- UserPerf::updateAll(['PV_PSS'=>$every['PV_PSS_TOTAL'], 'PV_PSS_TOTAL'=>$every['PV_PSS_TOTAL']], 'USER_ID=:USER_ID', ['USER_ID'=>$every['USER_ID']]);
- //更新perf_month
- PerfMonth::updateAll(['PV_PSS_TOTAL'=>$every['PV_PSS_TOTAL']], 'USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', ['USER_ID'=>$every['USER_ID'], 'CALC_MONTH'=>'202006']);
- unset($every);
- }
- }
- }
- public function actionCheckRepairUser($offset, $limit=1000) {
- $allData = CalcCache::getHasRepairPerfUsers($offset, $limit);
- if ($allData) {
- foreach ($allData as $userId) {
- if( $userId === '102239880700104704' ) {
- echo 'OK' . PHP_EOL;
- }
- }
- $this->actionCheckRepairUser($offset+$limit);
- }
- echo 'END' . PHP_EOL;
- }
- /**
- * 在数据库查询注册的前7人
- * @param int $limit
- */
- public function actionCheckGxCreateAt($limit=7)
- {
- $userId = '110188471594913792';
- $list = UserInfo::findUseDbCalc()->select('USER_ID')->where('USER_ID>:USER_ID', [
- 'USER_ID' => $userId,
- ])->orderBy('USER_ID ASC')->limit($limit)->asArray()->all();
- foreach ($list as $every) {
- echo $every['USER_ID'] . PHP_EOL;
- }
- }
- public function actionRelationList($userId) {
- $this->loopRelationParentDo($userId, function ($parent) {
- $parentUid = $parent['PARENT_UID'];
- echo $parentUid . PHP_EOL;
- });
- }
- /**
- * 检测用户服务奖金
- * @param string $userId
- * @param int $periodNum
- * @throws \yii\db\Exception
- */
- public function actionCheckUserBdQyBonus($userId='', $periodNum=125) {
- // 从缓存中获取会员的业绩信息
- $perfData = CalcCache::nowPeriodPerf($userId, $periodNum);
- // 从缓存中获取会员的上期结余业绩信息
- $pervSurplusPerf = CalcCache::surplusPerf($userId, $periodNum);
- // 本期 + 上期结余
- $perfArr = [
- 'SURPLUS_1L_ZC' => $perfData['PV_1L_ZC'] + $pervSurplusPerf['SURPLUS_1L_ZC'],
- 'SURPLUS_2L_ZC' => $perfData['PV_2L_ZC'] + $pervSurplusPerf['SURPLUS_2L_ZC'],
- 'SURPLUS_3L_ZC' => $perfData['PV_3L_ZC'] + $pervSurplusPerf['SURPLUS_3L_ZC'],
- 'SURPLUS_4L_ZC' => $perfData['PV_4L_ZC'] + $pervSurplusPerf['SURPLUS_4L_ZC'],
- 'SURPLUS_5L_ZC' => $perfData['PV_5L_ZC'] + $pervSurplusPerf['SURPLUS_5L_ZC'],
- ];
- $oriPerfArr = [
- 'perfArr' => $perfArr,
- 'touchBonus' => 0,
- ];
- // 获取会员的报单级别
- $userBaseInfo = CalcCache::getUserInfo($userId, $periodNum);
- $decLevelConfig = Cache::getDecLevelConfig();
- // 对碰
- $touchBonusArr = $this->touchPerf($oriPerfArr, $perfArr, $userBaseInfo['DEC_LV'], $decLevelConfig);
- // $nowDecLevelConfig = $decLevelConfig[$userBaseInfo['DEC_LV']];
- $touchPerfArr = [];
- foreach ($touchBonusArr['perfArr'] as $keyR => $perfR) {
- $touchPerfArr[$keyR] = $perfR;
- }
- var_dump($touchBonusArr);die;
- // 对碰完成后把结余的业绩存入本期业绩缓存中
- if ($touchBonusArr['touchBonus'] <= 0) return;
- $teamBonus = $touchBonusArr['touchBonus'];
- // 把对碰后的奖金存入缓存中
- // CalcCache::bonus($userId, $periodNum, 'BONUS_QY_BD', $teamBonus, [
- // 'reConsumePoints' => 0,
- // 'manageTax' => 0,
- // 'surplus' => $teamBonus,
- // ]);
- unset($perfData, $pervSurplusPerf, $perfArr, $oriPerfArr, $touchPerfArr, $userBaseInfo, $decLevelConfig, $touchBonusArr, $userId, $nowDecLevelConfig, $teamBonus, $deductData);
- }
- /**
- * 对碰
- * @param array $oriPerfArr
- * @param array $perfArr
- * @param $decLevel
- * @param $decLevelConfig
- * @param $loopTimes
- * @return array
- */
- public function touchPerf(array $oriPerfArr, array $perfArr, $decLevel, $decLevelConfig, $loopTimes=1) {
- $resultArr = $oriPerfArr;
- foreach ($perfArr as $keyT => $perfT) {
- if ($perfT <= 0) {
- unset($perfArr[$keyT]);
- }
- }
- if (count($perfArr) >= 2 && $loopTimes < 6) {
- $nowDecLevelConfig = $decLevelConfig[$decLevel];
- arsort($perfArr, SORT_NUMERIC);
- $onePerf = null;
- $oneKey = null;
- // $touchSurplusAmount = 0;
- $touchAmount = 0;
- // 前两个进行对碰
- foreach ($perfArr as $key => $perf) {
- if ($onePerf === null) {
- $oneKey = $key;
- $onePerf = $perf;
- } else {
- $touchSurplusAmount = $perf - $onePerf;
- if ($touchSurplusAmount > 0) {
- unset($perfArr[$oneKey]);
- $resultArr['perfArr'][$oneKey] = 0;
- $perfArr[$key] = $touchSurplusAmount;
- $touchAmount = $onePerf;
- } elseif ($touchSurplusAmount < 0) {
- unset($perfArr[$key]);
- $resultArr['perfArr'][$key] = 0;
- $perfArr[$oneKey] = abs($touchSurplusAmount);
- $touchAmount = $perf;
- } else {
- unset($perfArr[$oneKey], $perfArr[$key]);
- $resultArr['perfArr'][$oneKey] = 0;
- $resultArr['perfArr'][$key] = 0;
- $touchAmount = $perf;
- }
- break;
- }
- }
- /*if ($touchAmount > $nowDecLevelConfig['QY_TOUCH_CAP']) {
- $touchAmount = $nowDecLevelConfig['QY_TOUCH_CAP'];
- }*/
- $touchBonus = Tool::formatPrice($touchAmount * $nowDecLevelConfig['QY_PERCENT'] / 100);
- // if ($touchBonus > $nowDecLevelConfig['QY_TOUCH_CAP']) {
- // $resultArr['touchBonus'] += $nowDecLevelConfig['QY_TOUCH_CAP'];
- // } else {
- // $resultArr['touchBonus'] += $touchBonus;
- // }
- $resultArr['touchBonus'] += $touchBonus;
- foreach ($perfArr as $keyR => $perfR) {
- $resultArr['perfArr'][$keyR] = $perfR;
- }
- return $this->touchPerf($resultArr, $perfArr, $decLevel, $decLevelConfig, $loopTimes+1);
- }
- return $resultArr;
- }
- /**
- * 检测用户报单管理奖奖金
- * @param string $userId
- * @param string $parentUid
- * @param int $periodNum
- * @throws \yii\db\Exception
- */
- public function actionCheckUserBdGlBonus($userId='', $parentUid='', $periodNum=125) {
- //会员信息
- $decLevelConfig = Cache::getDecLevelConfig();
- $netWorkParents = Cache::getAllRelationParents($userId);
- $userBaseInfo = CalcCache::getUserInfo($userId, $periodNum);
- $userEmpLevel = $userBaseInfo['EMP_LV'];
- foreach ($netWorkParents as $netWorkParent) {
- echo '父级ID:' . $netWorkParent['PARENT_UID'] . PHP_EOL;
- //自已距顶端的深度减去父级距顶端的深度
- $diffLayer = $netWorkParent['TOP_DEEP'] - $netWorkParent['PARENT_DEEP'];
- if( $diffLayer <= 0) continue;
- //@todo 超过最大代数就跳出本次循环
- //偶数代跳过
- if( $diffLayer % 2 == 0 ) continue;
- // 获取会员的报单级别
- $bonusUserId = $netWorkParent['PARENT_UID'];
- if( !$bonusUserId ) continue;
- if( $bonusUserId != $parentUid ) continue;
- $bonusUserBaseInfo = CalcCache::getUserInfo($bonusUserId, $periodNum);
- $nowDecLevelConfig = $decLevelConfig[$bonusUserBaseInfo['DEC_LV']];
- if( !$nowDecLevelConfig ) continue;
- //推荐人数
- $recNum = $bonusUserBaseInfo['REC_NUM'];
- if( $recNum <= 0 ) continue;
- if( $recNum == 1 ) {
- $maxOddLayer = $nowDecLevelConfig['GL_ODD_DEEP_ONE'];
- }else if( $recNum == 2 ) {
- $maxOddLayer = $nowDecLevelConfig['GL_ODD_DEEP_TWO'];
- }else {
- $maxOddLayer = $nowDecLevelConfig['GL_ODD_DEEP_THREE'];
- }
- //超过代数上限也跳过
- if( $diffLayer >= 2 * $maxOddLayer ) continue;
- $everyLayer = floor(2 * $nowDecLevelConfig['GL_ODD_DEEP_THREE'] / $nowDecLevelConfig['SORT']);
- //多少代
- // $theLayer = $diffLayer % $everyLayer;
- $theLayerLevel = floor($diffLayer/$everyLayer);
- $parentOddPercentName = sprintf('parentOddPercent_%s', $theLayerLevel);
- if( !isset($this->_sysConfig[$parentOddPercentName]) ) continue;
- $bonusPercent = $this->_sysConfig[$parentOddPercentName]['VALUE'];
- // 从缓存中获取会员的收入信息
- $incomeBonus = CalcCache::bonus($userId, $periodNum);
- $parentOddIncomeFromName = sprintf('parentOddIncomeFrom_%s', $theLayerLevel);
- $parentOddIncomeFrom = explode(',', $this->_sysConfig[$parentOddIncomeFromName]['VALUE']);
- $parentOddIncome = 0;
- foreach ($parentOddIncomeFrom as $incomeType) {
- if( $incomeType === 'TG' ) {
- $incomeTypeName = sprintf('ORI_BONUS_%s', $incomeType);
- }else {
- $incomeTypeName = sprintf('ORI_BONUS_%s_BD', $incomeType);
- }
- $incomeTypeValue = $incomeBonus[$incomeTypeName] ?? 0;
- $parentOddIncome += $incomeTypeValue;
- unset($incomeType, $incomeTypeName, $incomeTypeValue);
- }
- unset($parentOddIncomeFrom);
- $manageBonus = Tool::formatPrice($parentOddIncome * $bonusPercent / 100);
- var_dump($manageBonus);die;
- if ($manageBonus <= 0) continue;
- //总金额限制
- // $manageBonus = $this->bonusTotalLimit($manageBonus, $bonusUserId, $recNum, $bonusUserBaseInfo['ZC_AMOUNT']);
- // if( $manageBonus <= 0 ) continue;
- //扣除相应的复消积分和管理费
- // $deductData = $this->deduct($bonusUserId, $manageBonus);
- // CalcCache::bonus($bonusUserId, $periodNum, 'BONUS_GL', $manageBonus, $deductData, CalcCache::FROM_MEANS_BD);
- //管理奖流水
- unset($netWorkParent, $diffLayer, $bonusUserId, $bonusUserBaseInfo, $bonusPercent, $nowDecLevelConfig, $manageBonus, $incomeBonus, $maxOddLayer, $theLayerLevel, $recNum, $parentOddPercentName, $parentOddIncomeFromName, $deductData);
- }
- unset($userId, $userBaseInfo, $userEmpLevel, $netWorkParents, $decLevelConfig);
- }
- /**
- * 修改总业绩
- */
- public function actionModifyPssTotal() {
- $modifyData = [
- 'Q08186744' => 600.01,
- 'Q62088906' => 150,
- 'Q08480433' => 150,
- 'Q43506253' => 48.75,
- 'Q12863038' => 600.01,
- 'Q78680727' => 41.25,
- 'Q94839185' => 308265.61,
- 'A14938155' => 11206.89,
- 'H779051HD' => 162.5,
- 'D75201679' => 150,
- 'H49297159' => 481.25,
- 'H17118288' => 481.25,
- 'A12336641' => -160,
- 'D18233466' => 157.5,
- 'H19657853' => -1320,
- 'H17219628' => -120,
- 'H10821466' => -1320,
- 'H11050788' => -4920,
- 'H15532405' => -1320,
- 'H65057238' => -360,
- 'H49978401' => -720,
- 'H17767474' => -1260,
- 'F17628577' => -4008,
- 'F17072646' => -359.99,
- 'F59854958' => -240,
- 'F10634375' => -1440,
- 'F17425461' => -120,
- 'F18852157' => -593,
- 'F68846358' => -2301.99,
- 'Q14703000' => -120,
- 'D17865446' => -112,
- 'D16104173' => -119.99,
- 'D19426525' => -360,
- 'D13146869' => -420,
- 'D13336250' => -845,
- 'Q16475055' => -120,
- 'E19911439' => -159,
- 'E17429791' => -166,
- 'E14226349' => -240,
- 'E16315856' => -480,
- 'E18363352' => -240,
- 'E18322188' => -120,
- 'A19477210' => -120,
- 'A13628496791' => -240,
- 'A14488417' => -120,
- 'A15836950' => -120,
- 'E69809425' => -480,
- 'D14193606' => -360,
- 'D13663861' => -120,
- 'D10776466' => -240,
- 'D11736447' => -120,
- 'D13128139' => -725,
- 'D15308257' => -360,
- 'D19443335' => -855,
- 'H16408887' => -960,
- 'H15328699' => -120,
- 'H18951571' => -480,
- 'H15167279' => -480,
- 'H15382316' => -360,
- 'H12129027' => -240,
- 'H15359261' => -840,
- 'H16004849' => -120,
- 'H14711148' => -120,
- 'H14276238' => -240,
- 'H69162532' => -240,
- 'H93297042' => -4680,
- 'H88875817' => -120,
- 'H11847679' => -120,
- 'F90795660' => -3768,
- 'F17797628' => -840,
- 'F17546019' => -473,
- 'F15803008' => -2062,
- 'H10394296' => -960,
- 'E17839915' => -166,
- 'E13466446' => -240,
- 'A16594718' => -240,
- 'A19671826' => -120,
- 'A15198548' => -120,
- 'A51726927' => -2635.98,
- 'H11036379' => -240,
- 'H12907432' => -817.99,
- 'H17973140' => -960,
- 'H12666892' => -600,
- 'H11866173' => -2460,
- 'E10658077' => -120,
- 'E17573755' => -480,
- 'E45944014' => -1184,
- 'E15960537' => -240,
- 'E12683263' => -592,
- 'E11002878' => -360,
- 'E10602731' => -120,
- 'A17081891' => -120,
- 'A18717229' => -835.98,
- 'H11097065' => -1200,
- 'H19578891' => -1080,
- 'H12505489' => -120,
- 'H10746043' => -960,
- 'E12569967' => -120,
- 'H11295941' => -1666,
- 'H59287202' => -120,
- 'H18132610' => -120,
- 'H18113300' => -240,
- 'H19096880' => -120,
- 'H12050104' => -480,
- 'H10655472' => -3000,
- 'H12439274' => -720,
- 'F31467862' => -3528,
- 'F29042730' => -360,
- 'F10062708' => -982,
- 'F60226072' => -120,
- 'E13291482' => -120,
- 'D13390146' => -360,
- 'D15369301' => -376,
- 'D10058595' => -240,
- 'H17368844' => -120,
- 'H17673492' => -360,
- 'H40420622' => -120,
- 'H37612456' => -240,
- 'H16239634' => -720,
- 'H19200443' => -2760,
- 'F10693156' => -3407.99,
- 'F15664716' => -360,
- 'F14542850' => -120,
- 'F15821274' => -600,
- 'A14314525' => -120,
- 'A16968827' => -480,
- 'D19551159' => -240,
- 'D17359769' => -120,
- 'D17464140' => -240,
- 'D12103432' => -128,
- 'H11158785' => -578,
- 'H11304078' => -120,
- 'H38384841' => -120,
- 'H15263058' => -120,
- 'H44636655' => -240,
- 'H13540567' => -720,
- 'H11372262' => -2160,
- 'H95402009' => -1260,
- 'H59876727' => -960,
- 'F16723562' => -819.99,
- 'F14010022' => -2468,
- 'F16485738' => -360,
- 'F17398416' => -360,
- 'F11668609' => -120,
- 'E14666737' => -120,
- 'E18812880' => -213,
- 'D13299101' => -240,
- 'D18768019' => -120,
- 'D18898064' => -128,
- 'D16748142' => -240,
- 'H19464479' => -1080,
- 'H11879978' => -240,
- 'H18864434' => -840,
- 'H15868186' => -120,
- 'H68332692' => -720,
- 'H50691564' => -2160,
- 'F17368654' => -2348,
- 'F17121859' => -699.99,
- 'H93093611' => -600,
- 'A17962339' => -120,
- 'A18358406' => -480,
- 'D15539120' => -240,
- 'D19181661' => -240,
- 'H17928312' => -960,
- 'H14358188' => -840,
- 'H10699566' => -1666,
- 'H15912596' => -240,
- 'H31173575' => -480,
- 'H19433676' => -240,
- 'H17288092' => -360,
- 'A17816239' => -120,
- 'A10678307' => -360,
- 'H23275366' => -720,
- 'H12591081' => -240,
- 'H16504568' => -840,
- 'H16531555' => -480,
- 'H38486089' => -600,
- 'H83574838' => -1320,
- 'H18357186' => -120,
- 'H16049391' => -120,
- 'H16379925' => -240,
- 'F13307818' => -120,
- 'F11580708' => -1868,
- 'F11108484' => -120,
- 'H13915722' => -360,
- 'D15805087' => -120,
- 'D15467159' => -240,
- 'H10366600' => -720,
- 'H63372506' => -120,
- 'H14710441' => -840,
- 'H10090408' => -1666,
- 'H33154162' => -360,
- 'H15358396' => -480,
- 'H72700605' => -840,
- 'H12827073' => -480,
- 'F15846968' => -1748,
- 'H16660022' => -360,
- 'D11624328' => -240,
- 'H11552847' => -1666,
- 'H19166726' => -240,
- 'H14364498' => -480,
- 'H17797668' => -600,
- 'H12452235' => -480,
- 'H18592203' => -120,
- 'F14890926' => -1628,
- 'D13778545' => -240,
- 'H11066019' => -600,
- 'H11306623' => -120,
- 'H16157527' => -840,
- 'H13701187' => -240,
- 'H18248205' => -600,
- 'H17907648' => -840,
- 'H13779328' => -1666,
- 'H19450811' => -240,
- 'H17008421' => -480,
- 'H16387500' => -840,
- 'H91950177' => -1666,
- 'H18592565' => -240,
- 'H77879934' => -1666,
- 'H13711477' => -120,
- 'H13833502' => -240,
- 'H12286615' => -240,
- 'F17783334' => -1148,
- 'D11204865' => -240,
- 'H17393209' => -480,
- 'H17832251' => -840,
- 'H10164361' => -240,
- 'H19291917' => -120,
- 'H16253624' => -720,
- 'H15216330' => -120,
- 'F12562440' => -680,
- 'D15177935' => -240,
- 'H17439829' => -840,
- 'H19424150' => -480,
- 'H13125893' => -840,
- 'H24399895' => -840,
- 'H10159130' => -840,
- 'H11682345' => -840,
- 'H17826076' => -840,
- 'H10656939' => -840,
- 'H17396420' => -840,
- 'H10514419' => -840,
- 'H16934767' => -840,
- 'H14181865' => -840,
- 'H16130940' => -840,
- 'H17608191' => -840,
- 'H11569007' => -840,
- 'H14576782' => -840,
- 'H15577686' => -840,
- 'H11753266' => -840,
- 'H12284905' => -720,
- 'H15872474' => -720,
- 'H13200796' => -600,
- 'H15478592' => -480,
- 'H19659132' => -480,
- 'D12199046' => 503.75,
- 'D19795156' => 155,
- 'D15436866' => 155,
- 'H49758932' => -360,
- 'H16852727' => -360,
- 'H15064959' => -360,
- 'H15043547' => -360,
- 'H14896153' => -360,
- 'H12062745' => -360,
- 'H11705904' => -360,
- 'H44310375' => -360,
- 'H17570490' => -360,
- 'H15866731' => -360,
- 'H10082397' => -360,
- 'H17197020' => -360,
- 'H96244925' => -360,
- 'H18278522' => -360,
- 'H16921167' => -360,
- 'H11746826' => -360,
- 'H14231961' => -360,
- 'H17528587' => -360,
- 'H19118260' => -360,
- 'H12448611' => -360,
- 'H16502115' => -360,
- 'H66096080' => -360,
- 'H13333591' => -360,
- 'H12704168' => -360,
- 'H10822555' => -360,
- 'H27825190' => -360,
- 'H62054512' => -360,
- 'H18450323' => -360,
- 'H16863190' => -360,
- 'H11241039' => -360,
- 'H15641979' => -360,
- 'H15453609' => -360,
- 'H88069590' => -360,
- 'H17085313' => -360,
- 'H13018948' => -360,
- 'H12503677' => -360,
- 'H46274824' => -360,
- 'H50970678' => -360,
- 'H15757860' => -360,
- 'H65559852' => -360,
- 'H15888980' => -360,
- 'H18669651' => -240,
- 'H12966470' => -240,
- 'H15605405' => -240,
- 'H13302229' => -240,
- 'H19988098' => -240,
- 'H19139717' => -240,
- 'H17419145' => -240,
- 'H15179291' => -240,
- 'H15024184' => -240,
- 'H13577736' => -240,
- 'D13347854' => 200,
- 'H16105967' => -240,
- 'H10292657' => -240,
- 'H14109018' => -240,
- 'H15892232' => -240,
- 'H10659498' => -240,
- 'H18383896' => -240,
- 'H14304440' => -240,
- 'H97331452' => -240,
- 'H12055085' => -240,
- 'H87950486' => -240,
- 'H13902912' => -240,
- 'H14311006' => -240,
- 'H89043517' => -240,
- 'H20947501' => -240,
- 'H10466894' => -240,
- 'H19591200' => -240,
- 'H19920650' => -240,
- 'H10809534' => -240,
- 'H13081445' => -240,
- 'H19304638' => -240,
- 'H17167739' => -240,
- 'H13575379' => -240,
- 'H19106582' => -240,
- 'H17782450' => -240,
- 'H11446432' => -240,
- 'H15058672' => -240,
- 'H10535417' => -240,
- 'H92052401' => -240,
- 'H11517133' => -240,
- 'H80093994' => -240,
- 'H11956092' => -240,
- 'H17165790' => -240,
- 'H11424567' => -240,
- 'H19560581' => -240,
- 'H19423232' => -240,
- 'H16184781' => -240,
- 'H10780996' => -240,
- 'H12168567' => -240,
- 'H69093228' => -240,
- 'H10849787' => -240,
- 'D18829108' => 200,
- 'D18507164' => 347.5,
- 'Q73338908' => 150,
- 'Q69472907' => 150
- ];
- foreach ($modifyData as $username => $modifyValue) {
- $oneUser = User::find()->select(['ID', 'USER_NAME'])->where('USER_NAME=:USER_NAME', ['USER_NAME'=>$username])->asArray()->one();
- if( !$oneUser ) {
- echo sprintf('用户%s不存在' . PHP_EOL, $username);
- continue;
- }
- $realModifyValue = (-1) * $modifyValue;
- UserPerf::updateAllCounters(['PV_PSS_TOTAL'=>$realModifyValue], 'USER_ID=:USER_ID', ['USER_ID'=>$oneUser['ID']]);
- echo sprintf('用户%s变化业绩为:%s' . PHP_EOL, $username, $realModifyValue);
- unset($username, $modifyValue, $oneUser, $realModifyValue);
- }
- }
- public function actionGetYcData($userId, $periodNum=132) {
- $ycBonusData = CalcCache::getYCBonusList($userId, $periodNum);
- if( $ycBonusData ) {
- if( $ycBonusData['fromData'] ) {
- foreach ($ycBonusData['fromData'] as $every) {
- //fromPvPcs fromUid
- $fromBaseInfo = CalcCache::getUserInfo($every['fromUid'], $periodNum);
- echo sprintf("来源用户名:%s,来源用户pv:%s" . PHP_EOL, $fromBaseInfo['USER_NAME'], $every['fromPvPcs']);
- }
- }
- }
- }
- /**
- * 计算某期复消现金金额
- */
- public function actionCalcPeriodFxCash() {
- $periodNumList = [146];
- foreach ($periodNumList as $periodNum) {
- $this->_calcPeriodFxCash($periodNum);
- }
- }
- private function _calcPeriodFxCash($periodNum) {
- //复消订单
- $pageSize = 1000;
- $allCount = Order::findUseDbCalc()->where("PERIOD_NUM=:PERIOD_NUM AND IS_DELETE=0 AND ORDER_TYPE=:ORDER_TYPE", [':PERIOD_NUM' => $periodNum, ':ORDER_TYPE'=>DeclarationForm::TYPE_FX])->count('ID');
- $pageCount = ceil($allCount/$pageSize);
- for ($page=1;$page<=$pageCount;$page++) {
- echo sprintf('期数:%s,复消订单:当前页数%s,总页数:%s' . PHP_EOL, $periodNum, $page, $pageCount);
- $allData = Order::findUseDbCalc()->select('ID,SN,DEC_SN,USER_ID,ORDER_TYPE,ORDER_AMOUNT,PAY_AMOUNT,PAY_PV,PAY_TYPE,PERIOD_NUM,STATUS,IS_DELETE,P_CALC_MONTH,CREATED_AT')->where("PERIOD_NUM=:PERIOD_NUM AND IS_DELETE=0 AND ORDER_TYPE=:ORDER_TYPE", [':PERIOD_NUM' => $periodNum, ':ORDER_TYPE'=>DeclarationForm::TYPE_FX])->orderBy('CREATED_AT DESC,ID DESC')->offset(($page-1)*$pageSize)->limit($pageSize)->asArray()->all();
- if( $allData ) {
- foreach ($allData as $data) {
- //如果支付方式是现金,那么实际业绩是支付PV的50%
- if ($data['PAY_TYPE'] === 'cash') {
- PerfPeriod::updateAll([
- 'FX_AMOUNT_CASH'=>new Expression('FX_AMOUNT_CASH+' . $data['ORDER_AMOUNT'])
- ], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', ['USER_ID'=>$data['USER_ID'], 'PERIOD_NUM'=>$periodNum]);
- }
- unset($data);
- }
- }
- unset($allData);
- }
- unset($allCount, $pageCount, $page);
- //导入的复消订单
- $allCount = OrderShop::findUseDbCalc()->where("PERIOD_NUM=:PERIOD_NUM AND IS_DELETE=0 AND ORDER_TYPE=:ORDER_TYPE", [':PERIOD_NUM' => $periodNum, ':ORDER_TYPE'=>DeclarationForm::TYPE_FX])->count('ID');
- $pageCount = ceil($allCount/$pageSize);
- for ($page=1;$page<=$pageCount;$page++) {
- echo sprintf('期数:%s,导入订单:当前页数%s,总页数:%s' . PHP_EOL, $periodNum, $page, $pageCount);
- $allData = OrderShop::findUseDbCalc()->select('ID,SN,DEC_SN,USER_ID,ORDER_TYPE,ORDER_AMOUNT,PAY_AMOUNT,PAY_PV,PAY_TYPE,PERIOD_NUM,STATUS,IS_DELETE,P_CALC_MONTH,CREATED_AT')->where("PERIOD_NUM=:PERIOD_NUM AND IS_DELETE=0 AND ORDER_TYPE=:ORDER_TYPE", [':PERIOD_NUM' => $periodNum, ':ORDER_TYPE'=>DeclarationForm::TYPE_FX])->orderBy('CREATED_AT DESC,ID DESC')->offset(($page-1)*$pageSize)->limit($pageSize)->asArray()->all();
- if( $allData ) {
- foreach ($allData as $data) {
- //如果支付方式是现金,那么实际业绩是支付PV的50%
- if ($data['PAY_TYPE'] === 'cash') {
- PerfPeriod::updateAll([
- 'FX_AMOUNT_CASH'=>new Expression('FX_AMOUNT_CASH+' . $data['ORDER_AMOUNT'])
- ], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', ['USER_ID'=>$data['USER_ID'], 'PERIOD_NUM'=>$periodNum]);
- }
- unset($data);
- }
- }
- unset($allData);
- }
- unset($allCount, $pageCount, $page);
- }
- public function actionCheckGxNextFive() {
- $userId = '76190398896279552';
- $periodNum = 160;
- $bonusUserData = [];
- $sysConfig = Cache::getSystemConfig();
- $bonusPercentTwo = $sysConfig['sharePercent']['VALUE'] / 100;
- // 从缓存中获取会员的收入信息
- $incomeBonus = CalcCache::bonus($userId, $periodNum);
- $lastTwoIncome = $incomeBonus['ORI_BONUS_QY_BD'] ?? 0;
- unset($lastTwoIncome);
- $nextFiveIncome = $incomeBonus['ORI_BONUS_QY_BD'] ?? 0;
- $shareBonusTwo = $nextFiveIncome * $bonusPercentTwo;
- unset($nextFiveIncome);
- //找到下5代(安置网) 紧缩 相对偶数层2、4、6、8、10层
- if( $shareBonusTwo > 0 ) {
- $validDeep = 1;
- $this->loopNetworkParentDo($userId, function ($parent) use ($userId, $shareBonusTwo,$periodNum, &$validDeep, &$bonusUserData) {
- if ( $validDeep % 2 === 0 ) {
- $bonusUserData[] = [
- 'bonusUid' => $parent['PARENT_UID'],
- 'bonus' => $shareBonusTwo
- ];
- }
- //判断$parent是否有首单团队奖
- $parentBonus = CalcCache::bonus($parent['PARENT_UID'], $periodNum);
- if( $parentBonus['ORI_BONUS_QY_BD'] > 0 ) {//有效层
- $validDeep += 1;
- }
- unset($parent, $parentBonus);
- if ( $validDeep >= 11 ) {
- return 1;
- }
- });
- unset($validDeep);
- }
- // if ( !$bonusUserData ) return;
- var_dump($bonusUserData);die;
- }
- public function actionCheckGxLastTwo() {
- $userId = '76189391281852416';
- $periodNum = 160;
- $bonusUserData = [];
- $bonusPercentOne = 5 / 100;
- // 从缓存中获取会员的收入信息
- $incomeBonus = CalcCache::bonus($userId, $periodNum);
- $lastTwoIncome = $incomeBonus['ORI_BONUS_QY_BD'] ?? 0;
- $shareBonusOne = $lastTwoIncome * $bonusPercentOne;
- unset($lastTwoIncome);
- //找到上2代 新增个人+推荐团队业绩 加权平均分配 这个奖
- if( $shareBonusOne > 0) {
- $bonusUserList = CalcCache::getShareBonusOneRelation($userId, $periodNum);
- if( $bonusUserList ) {
- $bonusUserTotalPerf = 0;
- $bonusUserRealList = [];
- foreach ($bonusUserList as $bonusUserId) {
- //查看该用户的个人业绩和团队新增业绩总和
- $nowPeriodData = CalcCache::nowPeriodPerf($bonusUserId, $periodNum);
- //本期新增业绩
- $bonusUserPerf = $nowPeriodData['PV_PCS'] + $nowPeriodData['PV_PSS'];
- if ($bonusUserPerf <= 0) {
- unset($bonusUserId, $nowPeriodData, $bonusUserPerf);
- continue;
- }
- $bonusUserTotalPerf += $bonusUserPerf;
- $bonusUserRealList[] = [
- 'bonusUserId' => $bonusUserId,
- 'bonusUserPerf' => $bonusUserPerf
- ];
- unset($bonusUserId, $nowPeriodData, $bonusUserPerf);
- }
- unset($bonusUserList);
- foreach ($bonusUserRealList as $everyData) {
- $bonusUserData[] = [
- 'bonusUid' => $everyData['bonusUserId'],
- 'bonus' => $shareBonusOne * $everyData['bonusUserPerf'] / $bonusUserTotalPerf
- ];
- unset($everyData);
- }
- unset($bonusUserRealList);
- }
- }
- var_dump($bonusUserData);die;
- }
- public function actionCheckGxMonthData() {
- //查看是否复消300
- $userId = '76189026280935424';
- $periodNum = 162;
- $sysConfig = Cache::getSystemConfig();
- $monthPerfData = CalcCache::nowMonthPerf($userId, $periodNum);
- $fxPvStatus = $monthPerfData['PV_PCS_FX'] >= $sysConfig['monthPcsPvFxCondition']['VALUE'];
- if ( $fxPvStatus ) {//加上本期和往期的共享和管理奖
- $monthSumData = CalcBonus::findUseSlaves()->select('SUM(BONUS_GX) AS BONUS_GX_SUM, SUM(BONUS_GL) AS BONUS_GL_SUM')->where('USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', ['USER_ID'=>$userId, 'CALC_MONTH'=>'202104'])->asArray()->one();
- $bonus = CalcCache::bonus($userId, $periodNum);
- $bonusGxSum = $monthSumData['BONUS_GX_SUM'] ?? 0;
- $bonusGlSum = $monthSumData['BONUS_GL_SUM'] ?? 0;
- $realBonusGx = $bonusGxSum + $bonus['BONUS_GX'];
- $realBonusGl = $bonusGlSum + $bonus['BONUS_GL'];
- var_dump($realBonusGx, $realBonusGl);die;
- }
- echo "..OK" . PHP_EOL;
- }
- /**
- * 根据奖金表中的记录
- */
- public function actionAddMonthBonusUser($calcMonth) {
- // $calcMonth = '202104';
- $pageSize = 1000;
- $allCount = CalcBonus::find()->where('CALC_MONTH=:CALC_MONTH', [
- 'CALC_MONTH' => $calcMonth
- ])->asArray()->count();
- $pageCount = ceil($allCount/$pageSize);
- for($page=1;$page<=$pageCount;$page++) {
- echo sprintf('【%d】月奖金用户,总页数为【%d】,当前页数为【%d】' . PHP_EOL, $calcMonth, $pageCount, $page);
- $insertDataBonusUser = [];
- $offset = ($page-1)*$pageSize;
- $listData = CalcBonus::find()->select('USER_ID,CALC_MONTH,PERIOD_NUM,ORI_BONUS_GX,ORI_BONUS_GL')->where('CALC_MONTH=:CALC_MONTH', [
- 'CALC_MONTH' => $calcMonth
- ])->offset($offset)->limit($pageSize)->asArray()->all();
- foreach ($listData as $everyData) {
- if( $everyData['ORI_BONUS_GX'] == 0 && $everyData['ORI_BONUS_GL'] == 0 ) continue;
- $insertDataBonusUser[] = [
- 'ID' => SnowFake::instance()->generateId(),
- 'USER_ID' => $everyData['USER_ID'],
- 'CALC_MONTH' => $everyData['CALC_MONTH'],
- 'PERIOD_NUM' => $everyData['PERIOD_NUM'],
- 'CREATED_AT' => Date::nowTime()
- ];
- }
- if( $insertDataBonusUser ) CalcMonthBonusUser::batchInsert($insertDataBonusUser);
- unset($listData, $insertDataBonusUser);
- }
- }
- /**
- * 后续计算共享和管理奖
- * @param $tableName
- * @param $toPeriod
- * @throws \yii\db\Exception
- */
- public function actionAfterCalcBonusGxAndGl($tableName, $toPeriod) {
- $db = \Yii::$app->db;
- $fromTableName = sprintf("AR_CALC_BONUS_%s", $tableName);
- $sql = "SELECT COUNT(ID) as allCount FROM {$fromTableName} WHERE PERIOD_NUM={$toPeriod} ORDER BY ID ASC";
- $allCountOne = $db->createCommand($sql)->queryOne();
- $pageSize = 1000;
- $pageCount = ceil($allCountOne['allCount']/$pageSize);
- for($page=1;$page<=$pageCount;$page++) {
- echo sprintf('同步【%d】期的数据,总页数为【%d】,当前页数为【%d】' . PHP_EOL, $toPeriod, $pageCount, $page);
- $offset = ($page-1)*$pageSize;
- $listSql = "SELECT * FROM {$fromTableName} WHERE PERIOD_NUM={$toPeriod} ORDER BY ID ASC LIMIT {$pageSize} OFFSET {$offset}";
- $list = $db->createCommand($listSql)->queryAll();
- foreach ($list as $every) {
- //判断该会员在AR_CALC_BONUS 表中 对应期数是否有相应的数据,有就更新,没有就插入。
- $one = CalcBonus::find()->where('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', ['USER_ID'=>$every['USER_ID'], 'PERIOD_NUM'=>$toPeriod])->asArray()->one();
- if( $one ) {
- CalcBonus::updateAll([
- 'BONUS_GX' => $every['BONUS_GX'],
- 'ORI_BONUS_GX' => $every['ORI_BONUS_GX'],
- 'REAL_BONUS_GX' => $every['REAL_BONUS_GX'],
- 'BONUS_GL' => $every['BONUS_GL'],
- 'ORI_BONUS_GL' => $every['ORI_BONUS_GL'],
- 'REAL_BONUS_GL' => $every['REAL_BONUS_GL'],
- ], 'ID=:ID', ['ID'=>$one['ID']]);
- }else {
- $insertData = $every;
- $insertData['ID'] = SnowFake::instance()->generateId();
- $insertData['IS_SENT'] = 1;
- $insertData['SENT_AT'] = Date::nowTime();
- CalcBonus::insertOne($insertData);
- unset($insertData);
- }
- unset($every, $one);
- }
- }
- }
- /**
- * 补发$fromPeriod 共享和管理实发奖金
- * @param $fromPeriod
- * @throws Exception
- * @throws \yii\db\Exception
- */
- public function actionSendBonusGxAndGl($fromPeriod)
- {
- $allCount = CalcBonus::find()->where('PERIOD_NUM=:PERIOD_NUM', ['PERIOD_NUM'=>$fromPeriod])->asArray()->count(1);
- $pageSize = 1000;
- $pageCount = ceil($allCount/$pageSize);
- for($page=1;$page<=$pageCount;$page++) {
- echo sprintf('补发【%d】期共享奖金和管理奖金,总页数为【%d】,当前页数为【%d】' . PHP_EOL, $fromPeriod, $pageCount, $page);
- $offset = ($page-1)*$pageSize;
- $pageList = CalcBonus::find()->select(['USER_ID', 'REAL_BONUS_GX', 'REAL_BONUS_GL'])->where('PERIOD_NUM=:PERIOD_NUM', ['PERIOD_NUM'=>$fromPeriod])->offset($offset)->limit($pageSize)->asArray()->all();
- foreach ($pageList as $everyData) {
- $sendBonus = $everyData['REAL_BONUS_GX'] + $everyData['REAL_BONUS_GL'];
- if( $sendBonus <= 0 ) {
- unset($everyData, $sendBonus);
- continue;
- }
- Balance::changeUserBonus($everyData['USER_ID'], 'bonus', $sendBonus, [
- 'REMARK' => 'From ' . $fromPeriod . '期补发共享和管理奖',
- 'PERIOD_NUM' => $fromPeriod,
- 'DEAL_TYPE_ID' => DealType::BONUS_SEND,
- ]);
- unset($everyData, $sendBonus);
- }
- }
- }
- public function actionCheckGxMinPv() {
- $userId = '76190155484041216';
- $periodNum = 160;
- $bonusCalc = BonusCalc::instance();
- $bonusCalc->setPeriodNum($periodNum);
- $rt = $bonusCalc->checkSmallMarketPerf($userId);
- var_dump($rt);
- return 'ok' . PHP_EOL;
- }
- /**
- * 同步VIP奖
- * @param $tableName
- * @param $toPeriod
- * @throws \yii\db\Exception
- */
- public function actionAfterCalcBonusVip($tableName, $toPeriod) {
- $db = \Yii::$app->db;
- $fromTableName = sprintf("AR_CALC_BONUS_%s", $tableName);
- $sql = "SELECT COUNT(ID) as allCount FROM {$fromTableName} WHERE PERIOD_NUM={$toPeriod} ORDER BY ID ASC";
- $allCountOne = $db->createCommand($sql)->queryOne();
- $pageSize = 1000;
- $pageCount = ceil($allCountOne['allCount']/$pageSize);
- for($page=1;$page<=$pageCount;$page++) {
- echo sprintf('同步【%d】期的VIP数据,总页数为【%d】,当前页数为【%d】' . PHP_EOL, $toPeriod, $pageCount, $page);
- $offset = ($page-1)*$pageSize;
- $listSql = "SELECT * FROM {$fromTableName} WHERE PERIOD_NUM={$toPeriod} ORDER BY ID ASC LIMIT {$pageSize} OFFSET {$offset}";
- $list = $db->createCommand($listSql)->queryAll();
- foreach ($list as $every) {
- //判断该会员在AR_CALC_BONUS 表中 对应期数是否有相应的数据,有就更新,没有就插入。
- $one = CalcBonus::find()->where('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', ['USER_ID'=>$every['USER_ID'], 'PERIOD_NUM'=>$toPeriod])->asArray()->one();
- if( $one ) {
- CalcBonus::updateAll([
- 'BONUS_VIP' => $every['BONUS_VIP'],
- 'ORI_BONUS_VIP' => $every['ORI_BONUS_VIP'],
- ], 'ID=:ID', ['ID'=>$one['ID']]);
- }else {
- $insertData = $every;
- $insertData['ID'] = SnowFake::instance()->generateId();
- $insertData['IS_SENT'] = 1;
- $insertData['SENT_AT'] = Date::nowTime();
- CalcBonus::insertOne($insertData);
- unset($insertData);
- }
- unset($every, $one);
- }
- }
- }
- /**
- * 补发VIP奖
- * @param $fromPeriod
- * @throws Exception
- * @throws \yii\db\Exception
- */
- public function actionSendBonusVip($fromPeriod)
- {
- $allCount = CalcBonus::find()->where('PERIOD_NUM=:PERIOD_NUM', ['PERIOD_NUM'=>$fromPeriod])->asArray()->count(1);
- $pageSize = 1000;
- $pageCount = ceil($allCount/$pageSize);
- for($page=1;$page<=$pageCount;$page++) {
- echo sprintf('补发【%d】期VIP奖金,总页数为【%d】,当前页数为【%d】' . PHP_EOL, $fromPeriod, $pageCount, $page);
- $offset = ($page-1)*$pageSize;
- $pageList = CalcBonus::find()->select(['USER_ID', 'BONUS_VIP', 'ORI_BONUS_VIP'])->where('PERIOD_NUM=:PERIOD_NUM', ['PERIOD_NUM'=>$fromPeriod])->offset($offset)->limit($pageSize)->asArray()->all();
- foreach ($pageList as $everyData) {
- $sendBonus = $everyData['BONUS_VIP'];
- if( $sendBonus <= 0 ) {
- unset($everyData, $sendBonus);
- continue;
- }
- Balance::changeUserBonus($everyData['USER_ID'], 'bonus', $sendBonus, [
- 'REMARK' => 'From ' . $fromPeriod . '期补发VIP奖',
- 'PERIOD_NUM' => $fromPeriod,
- 'DEAL_TYPE_ID' => DealType::BONUS_SEND,
- ]);
- unset($everyData, $sendBonus);
- }
- }
- }
- /**
- * 补发复消积分对应的奖金
- * @param $calcMonth
- * @throws Exception
- * @throws \yii\db\Exception
- */
- public function actionSendReConsumePoints($calcMonth) {
- $pageSize = 1000;
- $allCount = CalcBonus::find()->where('CALC_MONTH=:CALC_MONTH', [
- 'CALC_MONTH' => $calcMonth
- ])->groupBy('USER_ID')->orderBy('USER_ID DESC')->count();
- $pageCount = ceil($allCount/$pageSize);
- for($page=1;$page<=$pageCount;$page++) {
- echo sprintf('【%d】补发复消积分,总页数为【%d】,当前页数为【%d】' . PHP_EOL, $calcMonth, $pageCount, $page);
- $offset = ($page-1)*$pageSize;
- $list = CalcBonus::find()->select('USER_ID,SUM(ORI_BONUS_GX) AS ORI_BONUS_GX_SUM,SUM(ORI_BONUS_GL) AS ORI_BONUS_GL_SUM,SUM(REAL_BONUS_GX) AS REAL_BONUS_GX_SUM,SUM(REAL_BONUS_GL) AS REAL_BONUS_GL_SUM')->where('CALC_MONTH=:CALC_MONTH', [
- 'CALC_MONTH' => $calcMonth
- ])->groupBy('USER_ID')->orderBy('USER_ID DESC')->offset($offset)->limit($pageSize)->asArray()->all();
- foreach ($list as $everyData) {
- //计算出实发共享奖扣除的积分和管理奖扣除的积分
- $userReconsumePoints = 0;
- if( $everyData['ORI_BONUS_GX_SUM'] > 0 ) {
- $manageGx = $everyData['ORI_BONUS_GX_SUM'] * 5 / 100;
- $gxReconsumePoints = $everyData['ORI_BONUS_GX_SUM'] - $manageGx - $everyData['REAL_BONUS_GX_SUM'];
- if( $gxReconsumePoints > 0 ) $userReconsumePoints += $gxReconsumePoints;
- unset($manageGx, $gxReconsumePoints);
- }
- if( $everyData['ORI_BONUS_GL_SUM'] > 0 ) {
- $manageGL = $everyData['ORI_BONUS_GL_SUM'] * 5 / 100;
- $glReconsumePoints = $everyData['ORI_BONUS_GL_SUM'] - $manageGL - $everyData['REAL_BONUS_GL_SUM'];
- if( $glReconsumePoints > 0 ) $userReconsumePoints += $glReconsumePoints;
- unset($manageGL, $glReconsumePoints);
- }
- if( $userReconsumePoints <= 0 ) continue;
- $all = FlowBonus::find()->where('USER_ID=:USER_ID AND REMARK=:REMARK', ['USER_ID'=>$everyData['USER_ID'], 'REMARK' => 'From162期补发复消积分对应的奖金'])->asArray()->all();
- if( $all ) {
- $countAll = count($all);
- if( $countAll > 1 ) {
- array_pop($all);
- foreach ($all as $one) {
- $oneBonus = (-1) * Tool::formatPrice($one['AMOUNT']);
- Balance::changeUserBonus($one['USER_ID'], 'bonus', $oneBonus, [
- 'REMARK' => 'From162期撤消重复补发复消积分对应的奖金',
- 'PERIOD_NUM' => 162,
- 'DEAL_TYPE_ID' => DealType::BONUS_SEND,
- ]);
- unset($one, $oneBonus);
- }
- }
- }else {
- //发放复消积分金额的奖金
- Balance::changeUserBonus($everyData['USER_ID'], 'bonus', $userReconsumePoints, [
- 'REMARK' => 'From162期补发复消积分对应的奖金',
- 'PERIOD_NUM' => 162,
- 'DEAL_TYPE_ID' => DealType::BONUS_SEND,
- ]);
- }
- unset($everyData, $userReconsumePoints, $all);
- }
- }
- }
- /**
- * 清除某一期结算缓存
- * @param $periodNum
- */
- public function actionClearPeriodCalcCache($periodNum) {
- CalcCache::clearAll($periodNum);
- }
- public function actionDeleteSendPoints() {
- $pageSize = 1000;
- $allCount = FlowBonus::find()->where('PERIOD_NUM=162 AND REMARK=:REMARK', ['REMARK' => 'From162期补发复消积分对应的奖金'])->count(1);
- $pageCount = ceil($allCount/$pageSize);
- for($page=1;$page<=$pageCount;$page++) {
- echo sprintf('【%d】撤消补发复消积分,总页数为【%d】,当前页数为【%d】' . PHP_EOL, 162, $pageCount, $page);
- $offset = ($page-1)*$pageSize;
- $list = FlowBonus::find()->where('PERIOD_NUM=162 AND REMARK=:REMARK', ['REMARK' => 'From162期补发复消积分对应的奖金'])->offset($offset)->limit($pageSize)->asArray()->all();
- foreach ($list as $everyData) {
- //查询金额是否足够
- $bonus = Tool::formatPrice($everyData['AMOUNT']);
- $useBonus = UserBonus::find()->where('USER_ID=:USER_ID', ['USER_ID'=>$everyData['USER_ID']])->asArray()->one();
- if( $useBonus['BONUS'] < $bonus ) {
- echo $everyData['USER_ID'] . PHP_EOL;
- }
- // $bonus = (-1) * $everyData['AMOUNT'];
- // Balance::changeUserBonus($everyData['USER_ID'], 'bonus', $bonus, [
- // 'REMARK' => 'From162期撤消重复补发复消积分对应的奖金',
- // 'PERIOD_NUM' => 162,
- // 'DEAL_TYPE_ID' => DealType::BONUS_SEND,
- // ]);
- unset($bonus);
- }
- }
- }
- /**
- * 补发其它期奖金不正确的脚本
- * @param $tableName
- * @param $toPeriod
- * @throws Exception
- * @throws \yii\db\Exception
- */
- public function actionAddOtherPeriodGXAndGl($tableName, $toPeriod) {
- $db = \Yii::$app->db;
- $fromTableName = sprintf("AR_CALC_BONUS_%s", $tableName);
- $sql = "SELECT COUNT(ID) as allCount FROM {$fromTableName} WHERE PERIOD_NUM={$toPeriod} ORDER BY ID ASC";
- $allCountOne = $db->createCommand($sql)->queryOne();
- $pageSize = 1000;
- $pageCount = ceil($allCountOne['allCount']/$pageSize);
- for($page=1;$page<=$pageCount;$page++) {
- echo sprintf('同步【%d】期的数据,总页数为【%d】,当前页数为【%d】' . PHP_EOL, $toPeriod, $pageCount, $page);
- $offset = ($page-1)*$pageSize;
- $listSql = "SELECT * FROM {$fromTableName} WHERE PERIOD_NUM={$toPeriod} ORDER BY ID ASC LIMIT {$pageSize} OFFSET {$offset}";
- $list = $db->createCommand($listSql)->queryAll();
- foreach ($list as $every) {
- //判断该会员在AR_CALC_BONUS 表中 对应期数是否有相应的数据,有就更新,没有就插入。
- $one = CalcBonus::find()->where('USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM', ['USER_ID'=>$every['USER_ID'], 'PERIOD_NUM'=>$toPeriod])->asArray()->one();
- if( !$one ) {
- $insertData = $every;
- $insertData['ID'] = SnowFake::instance()->generateId();
- $insertData['IS_SENT'] = 1;
- $insertData['SENT_AT'] = Date::nowTime();
- CalcBonus::insertOne($insertData);
- unset($insertData);
- //发对应的奖金
- $sendBonus = $every['REAL_BONUS_GX'] + $every['REAL_BONUS_GL'];
- if( $sendBonus <= 0 ) {
- unset($sendBonus);
- continue;
- }
- //计算复消积分
- $oldOne = CalcBonus::find()->select('USER_ID,SUM(ORI_BONUS_GX) AS ORI_BONUS_GX_SUM,SUM(ORI_BONUS_GL) AS ORI_BONUS_GL_SUM,SUM(REAL_BONUS_GX) AS REAL_BONUS_GX_SUM,SUM(REAL_BONUS_GL) AS REAL_BONUS_GL_SUM')->where('USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH', ['USER_ID'=>$every['USER_ID'], 'CALC_MONTH'=>202104])->asArray()->one();
- //计算出实发共享奖扣除的积分和管理奖扣除的积分
- $userReconsumePoints = 0;
- if( $oldOne['ORI_BONUS_GX_SUM'] > 0 ) {
- $manageGx = $oldOne['ORI_BONUS_GX_SUM'] * 5 / 100;
- $gxReconsumePoints = $oldOne['ORI_BONUS_GX_SUM'] - $manageGx - $oldOne['REAL_BONUS_GX_SUM'];
- if( $gxReconsumePoints > 0 ) $userReconsumePoints += $gxReconsumePoints;
- unset($manageGx, $gxReconsumePoints);
- }
- if( $oldOne['ORI_BONUS_GL_SUM'] > 0 ) {
- $manageGL = $oldOne['ORI_BONUS_GL_SUM'] * 5 / 100;
- $glReconsumePoints = $oldOne['ORI_BONUS_GL_SUM'] - $manageGL - $oldOne['REAL_BONUS_GL_SUM'];
- if( $glReconsumePoints > 0 ) $userReconsumePoints += $glReconsumePoints;
- unset($manageGL, $glReconsumePoints);
- }
- $sendBonus += $userReconsumePoints;
- Balance::changeUserBonus($every['USER_ID'], 'bonus', $sendBonus, [
- 'REMARK' => 'From ' . $toPeriod . '期补发共享和管理奖',
- 'PERIOD_NUM' => $toPeriod,
- 'DEAL_TYPE_ID' => DealType::RESEND,
- ]);
- unset($sendBonus, $oldOne, $userReconsumePoints);
- }
- unset($every, $one);
- }
- }
- }
- /**
- * 修正某一期bonusTotal
- * @param $periodNum
- */
- public function actionFixBonusTotal($periodNum) {
- $allCount = CalcBonus::find()->where('PERIOD_NUM=:PERIOD_NUM', ['PERIOD_NUM'=>$periodNum])->count('ID');
- $pageSize = 1000;
- $pageCount = ceil($allCount/$pageSize);
- for($page=1;$page<=$pageCount;$page++) {
- echo sprintf('修正【%d】期的数据,总页数为【%d】,当前页数为【%d】' . PHP_EOL, $periodNum, $pageCount, $page);
- $offset = ($page-1)*$pageSize;
- $list = CalcBonus::find()->where('PERIOD_NUM=:PERIOD_NUM', ['PERIOD_NUM'=>$periodNum])->offset($offset)->limit($pageSize)->asArray()->all();
- foreach ($list as $everyData) {
- $bonusTotal = $everyData['ORI_BONUS_BD'] + $everyData['ORI_BONUS_TG'] + $everyData['ORI_BONUS_XF'] + $everyData['ORI_BONUS_YJ'] + $everyData['ORI_BONUS_QY'] + $everyData['ORI_BONUS_YC'] + $everyData['ORI_BONUS_VIP'] + $everyData['ORI_BONUS_GX'] + $everyData['ORI_BONUS_GL'] + $everyData['ORI_BONUS_STANDARD'];
- $bonusTotalStr = strval($bonusTotal);
- if( $bonusTotalStr != $everyData['BONUS_TOTAL'] ) {
- echo sprintf('当前期数【%d】BONUS_TOTAL:%s, 计算结果:%s' . PHP_EOL, $periodNum, $everyData['BONUS_TOTAL'], $bonusTotalStr);
- CalcBonus::updateAll([
- 'BONUS_TOTAL' => $bonusTotalStr
- ], 'ID=:ID', ['ID'=>$everyData['ID']]);
- }
- }
- }
- }
- function actionCalcPoints($offset = 0) {
- echo sprintf("时间:[%s]基础积分,当前offset为:【%s】" . PHP_EOL, date('Y-m-d H:i:s', time()) , $offset);
- //查询本月的,每人的累计总收入
- $limit = 1000;
- $empLevelConfig = Cache::getEmpLevelConfig();
- $allData = CalcBonus::findUseDbCalc()->select('USER_ID, SUM(BONUS_TOTAL) AS TOTAL_SUM, SUM(ORI_BONUS_BD) AS BD_TOTAL_SUM')->where('CALC_MONTH=:CALC_MONTH', [':CALC_MONTH' => '202104'])->groupBy('USER_ID')->orderBy('USER_ID DESC')->offset($offset)->limit($limit)->asArray()->all();
- if ($allData) {
- $insertData = [];
- foreach ($allData as $everyData) {
- $validTotalSum = $everyData['TOTAL_SUM'] - $everyData['BD_TOTAL_SUM'];
- if( $validTotalSum <=0 ) continue;
- //达不到 见习主任级别,不产生基础积分
- $userBaseInfo = User::findOneAsArray('ID=:ID', [':ID' => $everyData['USER_ID']]);
- $userEmpLevel = $empLevelConfig[$userBaseInfo['EMP_LV']];
- $userEmpLevelSort = $userEmpLevel['SORT'] ?? EmployLevel::EMP_LEVEL_SORT['NO_LEVEL'];
- unset($userBaseInfo, $userEmpLevel);
- if( $userEmpLevelSort < EmployLevel::EMP_LEVEL_SORT['JX_ZR_LEVEL'] ) {
- unset($userEmpLevelSort);
- continue;
- }
- unset($userEmpLevelSort);
- //根据总收入获取积分
- $baseScore = $this->_getBaseScoreByTotalBonus($validTotalSum);
- //根据用户的级别判断 能否得到级别积分
- if( $baseScore > 0 ) {
- //有记录就更新,没有记录就插入
- $one = ScoreMonth::find()->where("USER_ID=:USER_ID AND CALC_MONTH=:CALC_MONTH", [
- "USER_ID" => $everyData['USER_ID'],
- "CALC_MONTH" => 202104
- ])->asArray()->one();
- if ( $one ) {
- $totalScore = $baseScore + $one["LEVEL_SCORE"] + $one["UPGRADE_SCORE"];
- ScoreMonth::updateAll(["BASE_SCORE"=>$baseScore, "TOTAL_SCORE"=>$totalScore], "ID=:ID", ["ID"=>$one["ID"]]);
- }else {
- $insertData[] = [
- 'ID' => SnowFake::instance()->generateId(),
- 'USER_ID' => $everyData['USER_ID'],
- 'BASE_SCORE' => $baseScore,
- 'TOTAL_SCORE' => $baseScore,
- 'PERIOD_NUM' => 162,
- 'CALC_MONTH' => 202104,
- 'CREATED_AT' => time(),
- ];
- }
- }
- unset($everyData, $validTotalSum, $baseScore);
- }
- if($insertData) ScoreMonth::batchInsert($insertData);
- unset($insertData, $allData);
- return $this->actionCalcPoints($offset + $limit);
- }
- unset($allData);
- return true;
- }
- /**
- * 根据总收入获取相应的基础积分
- * @param $totalBonus
- * @return int|mixed
- */
- private function _getBaseScoreByTotalBonus($totalBonus) {
- $sysConfig = cache::getSystemConfig();
- $baseScoreConfig = Json::decode($sysConfig['baseScore']['VALUE']);
- $baseScore = 0;
- foreach ($baseScoreConfig as $everyScoreData) {
- if( $totalBonus < $everyScoreData['monthTotalPvMin'] ) continue;
- if( $everyScoreData['monthTotalPvMax'] != 0 && $totalBonus >= $everyScoreData['monthTotalPvMax'] ) continue;
- $baseScore = $everyScoreData['score'];
- unset($everyScoreData);
- break;
- }
- unset($baseScoreConfig, $totalBonus);
- return $baseScore;
- }
- }
|