select('SUM(BONUS_QY) AS BONUS_QY_SUM, SUM(BONUS_YC) AS BONUS_YC_SUM, SUM(BONUS_FX) AS BONUS_FX_SUM, SUM(BONUS_LS) AS BONUS_LS_SUM, SUM(BONUS_CF) AS BONUS_CF_SUM, SUM(BONUS_LX) AS BONUS_LX_SUM, SUM(BONUS_FL) AS BONUS_FL_SUM, SUM(BONUS_BT) AS BONUS_BT_SUM, SUM(BONUS_FW) AS BONUS_FW_SUM')->where('CALC_YEAR=:CALC_YEAR AND IS_SENT=:IS_SENT', [':CALC_YEAR'=>$nowYear, ':IS_SENT'=>1])->asArray()->one(); if($bonus){ return $bonus['BONUS_QY_SUM'] + $bonus['BONUS_YC_SUM'] + $bonus['BONUS_FX_SUM'] + $bonus['BONUS_LS_SUM'] + $bonus['BONUS_CF_SUM'] + $bonus['BONUS_LX_SUM'] + $bonus['BONUS_FL_SUM'] + $bonus['BONUS_BT_SUM'] + $bonus['BONUS_FW_SUM']; } else { return 0; } } /** * 年度总业绩 * @return int|mixed */ public function totalPerf(){ return 0; $nowYear = Date::nowYear(); $perf = PerfCompany::findUseSlaves()->select('SUM(ZC_PV) AS ZC_PV_SUM, SUM(YH_PV) AS YH_PV_SUM, SUM(ZG_PV) AS ZG_PV_SUM, SUM(LS_PV) AS LS_PV_SUM, SUM(FX_PV) AS FX_PV_SUM')->where('CALC_YEAR=:CALC_YEAR', [':CALC_YEAR'=>$nowYear])->asArray()->one(); if($perf){ return $perf['ZC_PV_SUM'] + $perf['YH_PV_SUM'] + $perf['ZG_PV_SUM'] + $perf['LS_PV_SUM'] + $perf['FX_PV_SUM']; } else { return 0; } } /** * 总提现金额 * @return int|mixed */ public function totalWithdraw(){ $withdraw = Withdraw::findUseSlaves()->select('SUM(AMOUNT) AS AMOUNT_SUM')->where('AUDIT_STATUS=:AUDIT_STATUS AND CREATED_AT > :START_TIME AND CREATED_AT < :END_TIME', [':AUDIT_STATUS' => Withdraw::STATUS_PAID, ':START_TIME' => Date::yearStart(), ':END_TIME' => Date::yearEnd()])->asArray()->one(); if($withdraw){ return $withdraw['AMOUNT_SUM']; } else { return 0; } } /** * 会员总数量 * @return int|string */ public function totalUser(){ return UserInfo::findUseSlaves()->where('1=1')->count(); } /** * 获取会员注册量 * @return array */ public function getUserData(){ $monthAgo = [ [ 'start' => Date::monthStart(Date::nowTime()), 'end' => Date::monthEnd(Date::nowTime()), ], [ 'start' => Date::monthStart(Date::lastNumMonth(1)), 'end' => Date::monthEnd(Date::lastNumMonth(1)), ], [ 'start' => Date::monthStart(Date::lastNumMonth(2)), 'end' => Date::monthEnd(Date::lastNumMonth(2)), ], [ 'start' => Date::monthStart(Date::lastNumMonth(3)), 'end' => Date::monthEnd(Date::lastNumMonth(3)), ], [ 'start' => Date::monthStart(Date::lastNumMonth(4)), 'end' => Date::monthEnd(Date::lastNumMonth(4)), ], ]; $result = []; foreach($monthAgo as $key => $value){ $result[$key]['month'] = date('n月', Date::lastNumMonth($key)); $result[$key]['num'] = $this->_monthUserRegNum($monthAgo[$key]['start'], $monthAgo[$key]['end']); } return array_reverse($result); } /** * 获取奖金统计数据 * @return array */ public function getBonusData(){ $period = Period::instance(); $calcMonth = $period->getNowYearMonth(); $formatCalcMonth = substr($calcMonth, 0, 4).'-'.substr($calcMonth, 4, 2).'-01'; $calcMonths = [ [ 'month' => $calcMonth, ], [ 'month' => Date::lastNumMonth(1, strtotime($formatCalcMonth), 'Ym'), ], [ 'month' => Date::lastNumMonth(2, strtotime($formatCalcMonth), 'Ym'), ], [ 'month' => Date::lastNumMonth(3, strtotime($formatCalcMonth), 'Ym'), ], [ 'month' => Date::lastNumMonth(4, strtotime($formatCalcMonth), 'Ym'), ], ]; foreach($calcMonths as $key => $value){ $calcMonths[$key]['month'] = date('n月', Date::lastNumMonth($key)); $calcMonths[$key]['num'] = $this->_monthBonus($value['month']); } return array_reverse($calcMonths); } /** * 获取提现量 * @return array */ public function getWithdrawData(){ $monthAgo = [ [ 'start' => Date::monthStart(Date::nowTime()), 'end' => Date::monthEnd(Date::nowTime()), ], [ 'start' => Date::monthStart(Date::lastNumMonth(1)), 'end' => Date::monthEnd(Date::lastNumMonth(1)), ], [ 'start' => Date::monthStart(Date::lastNumMonth(2)), 'end' => Date::monthEnd(Date::lastNumMonth(2)), ], [ 'start' => Date::monthStart(Date::lastNumMonth(3)), 'end' => Date::monthEnd(Date::lastNumMonth(3)), ], [ 'start' => Date::monthStart(Date::lastNumMonth(4)), 'end' => Date::monthEnd(Date::lastNumMonth(4)), ], ]; $result = []; foreach($monthAgo as $key => $value){ $result[$key]['month'] = date('n月', Date::lastNumMonth($key)); $result[$key]['num'] = $this->_monthWithdrawNum($monthAgo[$key]['start'], $monthAgo[$key]['end']); } return array_reverse($result); } public function userBonusData($userId){ $period = Period::instance(); $calcMonth = $period->getNowYearMonth(); $formatCalcMonth = substr($calcMonth, 0, 4).'-'.substr($calcMonth, 4, 2).'-01'; $calcMonths = [ [ 'month' => $calcMonth, ], [ 'month' => Date::lastNumMonth(1, strtotime($formatCalcMonth), 'Ym'), ], [ 'month' => Date::lastNumMonth(2, strtotime($formatCalcMonth), 'Ym'), ], [ 'month' => Date::lastNumMonth(3, strtotime($formatCalcMonth), 'Ym'), ], [ 'month' => Date::lastNumMonth(4, strtotime($formatCalcMonth), 'Ym'), ], ]; foreach($calcMonths as $key => $value){ $calcMonths[$key] = array_merge($calcMonths[$key], $this->_userMonthBonus($value['month'], $userId)); } return array_reverse($calcMonths); } /** * 某月会员注册量 * @param $monthStart * @param $monthEnd * @return int|string */ private function _monthUserRegNum($monthStart, $monthEnd){ return UserInfo::findUseSlaves()->where('CREATED_AT>:START_TIME AND CREATED_AT<:END_TIME', [':START_TIME'=>$monthStart, ':END_TIME'=>$monthEnd])->count(); } /** * 月奖金和 * @param $calcMonth * @return int|mixed */ private function _monthBonus($calcMonth){ if($calcMonth){ $bonus = CalcBonus::findUseSlaves()->yearMonth($calcMonth)->select('SUM(BONUS_QY) AS BONUS_QY_SUM, SUM(BONUS_YC) AS BONUS_YC_SUM, SUM(BONUS_FX) AS BONUS_FX_SUM, SUM(BONUS_LS) AS BONUS_LS_SUM, SUM(BONUS_CF) AS BONUS_CF_SUM, SUM(BONUS_LX) AS BONUS_LX_SUM, SUM(BONUS_FL) AS BONUS_FL_SUM, SUM(BONUS_BT) AS BONUS_BT_SUM, SUM(BONUS_FW) AS BONUS_FW_SUM')->where('CALC_MONTH=:CALC_MONTH AND IS_SENT=1', [':CALC_MONTH'=>$calcMonth])->asArray()->one(); if($bonus){ return $bonus['BONUS_QY_SUM'] + $bonus['BONUS_YC_SUM'] + $bonus['BONUS_FX_SUM'] + $bonus['BONUS_LS_SUM'] + $bonus['BONUS_CF_SUM'] + $bonus['BONUS_LX_SUM'] + $bonus['BONUS_FL_SUM'] + $bonus['BONUS_BT_SUM'] + $bonus['BONUS_FW_SUM']; } } return 0; } /** * 月提现 * @param $monthStart * @param $monthEnd * @return string */ private function _monthWithdrawNum($monthStart, $monthEnd){ return Tool::formatPrice(Withdraw::findUseSlaves()->where('CREATED_AT>:START_TIME AND CREATED_AT<:END_TIME AND AUDIT_STATUS=:AUDIT_STATUS', [':START_TIME'=>$monthStart, ':END_TIME'=>$monthEnd, ':AUDIT_STATUS'=>Withdraw::STATUS_PAID])->sum('AMOUNT')); } private function _userMonthBonus($calcMonth, $userId){ $bonus = CalcBonus::findUseSlaves()->yearMonth($calcMonth)->select('BONUS_QY, BONUS_YC, BONUS_FX, BONUS_LS, BONUS_CF, BONUS_LX, BONUS_FL, BONUS_BT, BONUS_FW')->where('CALC_MONTH=:CALC_MONTH AND IS_SENT=1 AND USER_ID=:USER_ID', [':CALC_MONTH'=>$calcMonth, ':USER_ID'=>$userId])->asArray()->one(); if($bonus){ return [ 'BONUS_QY' => $bonus['BONUS_QY'], 'BONUS_YC' => $bonus['BONUS_YC'], 'BONUS_FX' => $bonus['BONUS_FX'], 'BONUS_LS' => $bonus['BONUS_LS'], 'BONUS_CF' => $bonus['BONUS_CF'], 'BONUS_LX' => $bonus['BONUS_LX'], 'BONUS_FL' => $bonus['BONUS_FL'], 'BONUS_BT' => $bonus['BONUS_BT'], 'BONUS_FW' => $bonus['BONUS_FW'], ]; } else { return [ 'BONUS_QY' => 0, 'BONUS_YC' => 0, 'BONUS_FX' => 0, 'BONUS_LS' => 0, 'BONUS_CF' => 0, 'BONUS_LX' => 0, 'BONUS_FL' => 0, 'BONUS_BT' => 0, 'BONUS_FW' => 0, ]; } } }