|
|
@@ -18,6 +18,7 @@ use common\helpers\user\Info;
|
|
|
use common\helpers\user\Reconsume;
|
|
|
use common\libs\api\sms\SmsApi;
|
|
|
use common\models\DealType;
|
|
|
+use common\models\EliteLevel;
|
|
|
use common\models\FlowRemainPv;
|
|
|
use common\models\PerfPeriod;
|
|
|
use common\models\EmployLevel;
|
|
|
@@ -194,7 +195,7 @@ class BonusSend extends BaseObject {
|
|
|
$this->setSendStatus('start');
|
|
|
|
|
|
// 发放荣衔级别(Honor/Emp)、Elite级别
|
|
|
- $this->sendMemberLevel();
|
|
|
+ $this->sentMemberLevel();
|
|
|
$this->_updatePercent(30);
|
|
|
$t2 = microtime(true);
|
|
|
echo('更新会员级别完成,耗时:' . round($t2 - $t1, 3) . ',内存使用:' . (round(memory_get_usage() / 1024 / 1024, 3)) . 'MB' . PHP_EOL);
|
|
|
@@ -440,25 +441,42 @@ class BonusSend extends BaseObject {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- public function sendMemberLevel()
|
|
|
+ public function sentMemberLevel()
|
|
|
{
|
|
|
$transaction = Yii::$app->db->beginTransaction();
|
|
|
try {
|
|
|
$db = Yii::$app->db;
|
|
|
|
|
|
+ // 刷新所有会员最新EliteLevel和最新EmpLevel为默认等级
|
|
|
+ User::updateAll(
|
|
|
+ [
|
|
|
+ 'LAST_EMP_LV' => EmployLevel::getDefaultLevelId(),
|
|
|
+ 'LAST_EMP_LV_UPDATED_AT' => time(),
|
|
|
+ 'LAST_EMP_LV_UPDATED_PERIOD' => $this->_periodNum,
|
|
|
+ 'LAST_ELITE_LV' => EliteLevel::getDefaultLevelId(),
|
|
|
+ 'LAST_ELITE_LV_UPDATED_AT' => time(),
|
|
|
+ 'LAST_ELITE_LV_UPDATED_PERIOD' => $this->_periodNum,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ // 刷新会员最高EliteLevel和最高EmpLevel(统一数据,更新为默认Elite级别)
|
|
|
+ User::updateAll(['EMP_LV' => EmployLevel::getDefaultLevelId()], "EMP_LV = '' OR EMP_LV IS NULL");
|
|
|
+ User::updateAll(['ELITE_LV' => EliteLevel::getDefaultLevelId()], "ELITE_LV = '' OR ELITE_LV IS NULL");
|
|
|
+
|
|
|
$sql =<<<SQL
|
|
|
UPDATE `AR_USER` `user`
|
|
|
INNER JOIN `AR_CALC_BONUS` `bonus` ON `user`.`ID` = `bonus`.`USER_ID` AND `bonus`.`CALC_MONTH` = :CALC_MONTH AND `bonus`.`PERIOD_NUM` = :PERIOD_NUM
|
|
|
SET
|
|
|
- `user`.`EMP_LV` = `bonus`.`EMP_LV`,
|
|
|
+ `user`.`EMP_LV` = `bonus`.`HIGHEST_HONOR_LV`,
|
|
|
`user`.`LAST_EMP_LV` = `bonus`.`LAST_EMP_LV`,
|
|
|
`user`.`LAST_EMP_LV_UPDATED_AT` = :UPDATED_AT,
|
|
|
`user`.`LAST_EMP_LV_UPDATED_PERIOD` = :PERIOD_NUM,
|
|
|
|
|
|
- `user`.`ELITE_LV` = `bonus`.`ELITE_LV`,
|
|
|
+ `user`.`ELITE_LV` = `bonus`.`HIGHEST_ELITE_LV`,
|
|
|
`user`.`LAST_ELITE_LV` = `bonus`.`LAST_ELITE_LV`,
|
|
|
`user`.`LAST_ELITE_LV_UPDATED_AT` = :UPDATED_AT,
|
|
|
`user`.`LAST_ELITE_LV_UPDATED_PERIOD` = :PERIOD_NUM
|
|
|
+ WHERE
|
|
|
+ `bonus`.`PERIOD_NUM` = :PERIOD_NUM
|
|
|
SQL;
|
|
|
|
|
|
$db->createCommand($sql)
|
|
|
@@ -472,6 +490,8 @@ SQL;
|
|
|
|
|
|
$transaction->commit();
|
|
|
|
|
|
+ // 刷新本期无Elite的用户级别
|
|
|
+
|
|
|
// 删除缓存中的会员信息
|
|
|
User::deleteAllBaseInfoFromRedis();
|
|
|
|