|
|
@@ -8,6 +8,8 @@
|
|
|
*/
|
|
|
namespace console\controllers;
|
|
|
|
|
|
+use common\helpers\bonus\BonusSend;
|
|
|
+use common\helpers\bonus\CalcCache;
|
|
|
use common\helpers\Cache;
|
|
|
use common\helpers\DataBak;
|
|
|
use common\helpers\Date;
|
|
|
@@ -18,23 +20,31 @@ use common\helpers\Tool;
|
|
|
use common\libs\api\sms\SmsApi;
|
|
|
use common\libs\swoole\RPCApi;
|
|
|
use common\models\CalcBonus;
|
|
|
+use common\models\CalcBonusBS;
|
|
|
use common\models\CalcBonusFX;
|
|
|
use common\models\CalcBonusQY;
|
|
|
use common\models\CalcBonusYC;
|
|
|
+use common\models\EmployLevel;
|
|
|
use common\models\FlowBonus;
|
|
|
+use common\models\FlowRemainPv;
|
|
|
use common\models\forms\ClearDataForm;
|
|
|
use common\models\forms\DeclarationLoopForm;
|
|
|
use common\models\forms\UserForm;
|
|
|
+use common\models\Order;
|
|
|
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\RemainPv;
|
|
|
+use common\models\StarCrownLevel;
|
|
|
use common\models\User;
|
|
|
use common\models\UserInfo;
|
|
|
use common\models\UserNetwork;
|
|
|
use common\models\UserRelation;
|
|
|
+use Yii;
|
|
|
use yii\base\Exception;
|
|
|
use yii\db\Expression;
|
|
|
use yii\db\Query;
|
|
|
@@ -214,4 +224,142 @@ class ToolController extends BaseController
|
|
|
curl_close($curl);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public function actionUpdatePercent() {
|
|
|
+ $percent = 100;
|
|
|
+ $periodNum = 134;
|
|
|
+ $period = Period::findOneAsArray('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $periodNum]);
|
|
|
+
|
|
|
+ // 把数据写入数据库中
|
|
|
+ Period::updateAll(['SENT_PERCENT' => $percent], 'PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $periodNum]);
|
|
|
+ \Yii::$app->swooleAsyncTimer->pushAsyncPercentToAdmin($percent, ['MODEL' => 'PERIOD', 'ID' => $period['ID'], 'FIELD' => 'SENT_PERCENT']);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function actionUpdateEmpLevel()
|
|
|
+ {
|
|
|
+ $periodNum = 134;
|
|
|
+ $period = Period::findOneAsArray('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $periodNum]);
|
|
|
+
|
|
|
+ $empLv = EmployLevel::getIdConvertLevelSortCache();
|
|
|
+ $allData = CalcBonusBS::find()
|
|
|
+ ->where('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $periodNum])
|
|
|
+ ->orderBy('CREATED_AT DESC')
|
|
|
+ ->limit(10000)
|
|
|
+ ->all();
|
|
|
+
|
|
|
+ $defaultEmpLv = EmployLevel::getDefaultLevelId();
|
|
|
+ if ($allData) {
|
|
|
+ $transaction = Yii::$app->db->beginTransaction();
|
|
|
+ try {
|
|
|
+ foreach ($allData as $data) {
|
|
|
+ // 蓝星奖计算的最新聘级
|
|
|
+ $latestEmpLv = $data['LEVEL_ID']; // 本期计算最新管理级别
|
|
|
+ $latestEmpLvSort = $empLv[$latestEmpLv]; // 当前蓝星计算的聘级 级别值
|
|
|
+ if ($defaultEmpLv == $latestEmpLv) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 用户存储的最高聘级
|
|
|
+ $user = CalcCache::getUserInfo($data['USER_ID'], $periodNum);
|
|
|
+ $highestEmpLv = $user['EMP_LV']; // 用户的历史最高聘级
|
|
|
+ $highestEmpLvSort = $empLv[$highestEmpLv]; // 历史最高聘级的 级别值
|
|
|
+ // 如果当前期的聘级高于用户表的最高聘级,则进行更新
|
|
|
+ if ($latestEmpLvSort > $highestEmpLvSort) {
|
|
|
+ User::updateAll(['EMP_LV' => $latestEmpLv], 'ID=:USER_ID', [':USER_ID' => $data['USER_ID']]);
|
|
|
+ User::deleteBaseInfoFromRedis($data['USER_ID']);
|
|
|
+ }
|
|
|
+ // 更新最新用户表级别
|
|
|
+ User::updateAll([
|
|
|
+ 'LAST_EMP_LV' => $latestEmpLv,
|
|
|
+ 'LAST_EMP_LV_UPDATED_AT' => time(),
|
|
|
+ 'LAST_EMP_LV_UPDATED_PERIOD' => $periodNum
|
|
|
+ ], 'ID=:USER_ID', [':USER_ID' => $data['USER_ID']]);
|
|
|
+
|
|
|
+ User::deleteBaseInfoFromRedis($data['USER_ID']);
|
|
|
+ unset($data);
|
|
|
+ }
|
|
|
+ $transaction->commit();
|
|
|
+ } catch (Exception $e) {
|
|
|
+ $transaction->rollBack();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ unset($transaction, $allData, $defaultEmpLv);
|
|
|
+ }
|
|
|
+
|
|
|
+ unset($allData);
|
|
|
+
|
|
|
+ // 刷新会员EmpLv为0
|
|
|
+ User::updateAll([
|
|
|
+ 'LAST_EMP_LV' => '',
|
|
|
+ 'LAST_EMP_LV_UPDATED_AT' => time(),
|
|
|
+ 'LAST_EMP_LV_UPDATED_PERIOD' => $periodNum,
|
|
|
+ ], 'LAST_EMP_LV_UPDATED_PERIOD < :PERIOD_NUM AND LAST_EMP_LV <> ""', [':PERIOD_NUM' => $periodNum]);
|
|
|
+
|
|
|
+ User::deleteAllBaseInfoFromRedis();
|
|
|
+ }
|
|
|
+
|
|
|
+ public function actionUpdateCrownLevel()
|
|
|
+ {
|
|
|
+ $periodNum = 134;
|
|
|
+ $period = Period::findOneAsArray('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $periodNum]);
|
|
|
+
|
|
|
+ $starCrownLv = StarCrownLevel::getIdConvertLevelSortCache();
|
|
|
+ $allData = CalcBonusQY::find()
|
|
|
+ ->where('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $periodNum])
|
|
|
+ ->orderBy('CREATED_AT DESC')
|
|
|
+ ->groupBy('USER_ID')
|
|
|
+ ->limit(10000)
|
|
|
+ ->all();
|
|
|
+
|
|
|
+ $defaultCrownLv = StarCrownLevel::getDefaultLevelId();
|
|
|
+ if ($allData) {
|
|
|
+ $transaction = Yii::$app->db->beginTransaction();
|
|
|
+ try {
|
|
|
+ foreach ($allData as $data) {
|
|
|
+ // 默认级别不更新
|
|
|
+ if( $data['LAST_CROWN_LV'] === $defaultCrownLv ) continue;
|
|
|
+
|
|
|
+ $modernCrownLv = $data['LAST_CROWN_LV']; // 本期计算出的最新级别
|
|
|
+
|
|
|
+ $user = CalcCache::getUserInfo($data['USER_ID'], $periodNum);
|
|
|
+ $originCrownLv = $user['CROWN_LV']; // 用户的历史最高crown级别
|
|
|
+ $originCrownLvSort = $starCrownLv[$originCrownLv]; // 历史最高crown级别值
|
|
|
+ $modernCrownLvSort = $starCrownLv[$modernCrownLv]; // 当前计算的crown级别值
|
|
|
+ if ($modernCrownLvSort > $originCrownLvSort) {
|
|
|
+ $columns = [
|
|
|
+ 'CROWN_LV' => $data['LAST_CROWN_LV'],
|
|
|
+ 'LAST_CROWN_LV' => $data['LAST_CROWN_LV'],
|
|
|
+ 'LAST_CROWN_LV_UPDATED_AT' => time(),
|
|
|
+ 'LAST_CROWN_LV_UPDATED_PERIOD' => $periodNum,
|
|
|
+ ];
|
|
|
+ } else {
|
|
|
+ $columns = [
|
|
|
+ 'LAST_CROWN_LV' => $data['LAST_CROWN_LV'],
|
|
|
+ 'LAST_CROWN_LV_UPDATED_AT' => time(),
|
|
|
+ 'LAST_CROWN_LV_UPDATED_PERIOD' => $periodNum,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ User::updateAll($columns, 'ID = :USER_ID', [':USER_ID' => $data['USER_ID']]);
|
|
|
+ User::deleteBaseInfoFromRedis($data['USER_ID']);
|
|
|
+ unset($data);
|
|
|
+ }
|
|
|
+ $transaction->commit();
|
|
|
+ } catch (Exception $e) {
|
|
|
+ $transaction->rollBack();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ unset($transaction, $allData);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 刷新会员CrownLv为0
|
|
|
+ User::updateAll([
|
|
|
+ 'LAST_CROWN_LV' => '',
|
|
|
+ 'LAST_CROWN_LV_UPDATED_AT' => time(),
|
|
|
+ 'LAST_CROWN_LV_UPDATED_PERIOD' => $periodNum,
|
|
|
+ ], 'LAST_CROWN_LV_UPDATED_PERIOD < :PERIOD_NUM AND LAST_CROWN_LV <> ""' , [':PERIOD_NUM' => $periodNum]);
|
|
|
+
|
|
|
+ User::deleteAllBaseInfoFromRedis();
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|