* @version : HUOSDK 8.0 */ namespace huoAgentSwitch\model; use huo\model\data\DayAgentModel; use huo\model\data\DayBaseModel; use huo\model\user\UserModel; class DayAgentSwitchModel extends DayBaseModel { protected $name = 'day_agent_switch'; public $map = []; public function agent() { return $this->belongsTo('huo\model\user\UserModel', 'agent_id', 'id') ->field('id,user_login,role_id,parent_id'); } public function mpagent() { return $this->belongsTo(UserModel::className(), 'agent_id', 'id')->setEagerlyType(0); } public function getByDate($field, $start_date, $end_date, $alias = null) { $_map = $this->map; $alias or $alias = $field; $_rows = $this->where($_map)->whereBetween('date', [$start_date, $end_date]) ->field("date, $field") ->select()->toArray(); $_switch_data = []; foreach ($_rows as $_row) { $_switch_data[$_row['date']] = $_row[$alias]; } /* 获取真实数据 */ $_rows = (new DayAgentModel())->where($_map)->whereBetween('date', [$start_date, $end_date]) ->field("date, $field") ->select()->toArray(); $_data = []; foreach ($_rows as $_row) { $_data[$_row['date']] = empty($_switch_data[$_row['date']]) ? $_row[$alias] : $_row[$alias] - $_switch_data[$_row['date']]; } $result = []; for ($_i = strtotime($start_date); $_i <= strtotime($end_date); $_i += 24 * 3600) { $_key = date('Y-m-d', $_i); $result[date('m-d', $_i)] = isset($_data[$_key]) ? doubleval($_data[$_key]) : 0; } return $result; } }