|
|
@@ -3625,21 +3625,45 @@ class BonusCalc extends BaseObject {
|
|
|
|
|
|
// 奖金入库完成,将各个奖金计算流水会员聘级,更新成蓝星奖当时计算的聘级
|
|
|
public function loopCalcBlueEmpLv($offset = 0) {
|
|
|
- if( !$this->_isCalcMonth ) {
|
|
|
- // 不是结算月,则不需要进行聘级调整
|
|
|
- return false;
|
|
|
- }
|
|
|
// 从缓存获取分页有收入的会员信息
|
|
|
- $allData = CalcBonusBS::findUseDbCalc()
|
|
|
+ $allData = CalcBonus::findUseDbCalc()
|
|
|
->where('PERIOD_NUM=:PERIOD_NUM', [':PERIOD_NUM' => $this->_periodNum])
|
|
|
- ->groupBy('USER_ID')
|
|
|
->offset($offset)
|
|
|
->limit($this->_limit)
|
|
|
->asArray()
|
|
|
->all();
|
|
|
if ($allData) {
|
|
|
foreach ($allData as $data) {
|
|
|
- $nowBsEmpLv = $data['LEVEL_ID']; // 当前蓝星奖计算(即管理奖) 的等级
|
|
|
+ // 会员的最新级别,查看上一期,如果无数据,则就是无级别。 上一期到下一期结算月之间,都显示上一期的最新级别。
|
|
|
+ if ($this->_isCalcMonth) {
|
|
|
+ // 如果是结算月,则直接获取当期结算结果
|
|
|
+ $blueBsInfo = CalcBonusBS::findOneAsArray(
|
|
|
+ 'PERIOD_NUM=:PERIOD_NUM AND USER_ID=:USER_ID',
|
|
|
+ [':PERIOD_NUM'=>$this->_periodNum, ':USER_ID'=>$data['USER_ID']]
|
|
|
+ );
|
|
|
+ if (!empty($blueBsInfo)) {
|
|
|
+ $nowBsEmpLv = $blueBsInfo['LEVEL_ID']; // 当前蓝星奖计算(即管理奖) 的等级
|
|
|
+ } else {
|
|
|
+ $nowBsEmpLv = EmployLevel::NO_LEVEL_ID;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 如果不是结算月,则找上一期的结算月数据
|
|
|
+ $forwardMonthPeriod = Period::find()
|
|
|
+ ->where('IS_MONTH=1 AND PERIOD_NUM<:PERIOD_NUM', [':PERIOD_NUM'=>$this->_periodNum])
|
|
|
+ ->orderBy('PERIOD_NUM DESC')
|
|
|
+ ->asArray()
|
|
|
+ ->one();
|
|
|
+ $forwardPeriodNum = $forwardMonthPeriod['PERIOD_NUM'];
|
|
|
+ $blueBsInfo = CalcBonusBS::findOneAsArray(
|
|
|
+ 'PERIOD_NUM=:PERIOD_NUM AND USER_ID=:USER_ID',
|
|
|
+ [':PERIOD_NUM'=>$forwardPeriodNum, ':USER_ID'=>$data['USER_ID']]
|
|
|
+ );
|
|
|
+ if (!empty($blueBsInfo)) {
|
|
|
+ $nowBsEmpLv = $blueBsInfo['LEVEL_ID']; // 当前蓝星奖计算(即管理奖) 的等级
|
|
|
+ } else {
|
|
|
+ $nowBsEmpLv = EmployLevel::NO_LEVEL_ID;
|
|
|
+ }
|
|
|
+ }
|
|
|
// 修改AR_CALC_BONUS的LAST_EMP_LV聘级,修改奖金流水的聘级AR_FLOW_BONUS表的LAST_EMP_LV
|
|
|
// 期结算结果
|
|
|
CalcBonus::updateAll(['LAST_EMP_LV' => $nowBsEmpLv], 'USER_ID=:USER_ID AND PERIOD_NUM=:PERIOD_NUM',
|