DayAgentSwitchModel.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. /**
  3. * DayAgentSwitchModel.php UTF-8
  4. * 切量渠道每日
  5. *
  6. * @date : 2017/12/18 11:41
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : chenbingling <cbl@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huoAgentSwitch\model;
  13. use huo\model\data\DayAgentModel;
  14. use huo\model\data\DayBaseModel;
  15. use huo\model\user\UserModel;
  16. class DayAgentSwitchModel extends DayBaseModel {
  17. protected $name = 'day_agent_switch';
  18. public $map = [];
  19. public function agent() {
  20. return $this->belongsTo('huo\model\user\UserModel', 'agent_id', 'id')
  21. ->field('id,user_login,role_id,parent_id');
  22. }
  23. public function mpagent() {
  24. return $this->belongsTo(UserModel::className(), 'agent_id', 'id')->setEagerlyType(0);
  25. }
  26. public function getByDate($field, $start_date, $end_date, $alias = null) {
  27. $_map = $this->map;
  28. $alias or $alias = $field;
  29. $_rows = $this->where($_map)->whereBetween('date', [$start_date, $end_date])
  30. ->field("date, $field")
  31. ->select()->toArray();
  32. $_switch_data = [];
  33. foreach ($_rows as $_row) {
  34. $_switch_data[$_row['date']] = $_row[$alias];
  35. }
  36. /* 获取真实数据 */
  37. $_rows = (new DayAgentModel())->where($_map)->whereBetween('date', [$start_date, $end_date])
  38. ->field("date, $field")
  39. ->select()->toArray();
  40. $_data = [];
  41. foreach ($_rows as $_row) {
  42. $_data[$_row['date']] = empty($_switch_data[$_row['date']]) ? $_row[$alias]
  43. : $_row[$alias] - $_switch_data[$_row['date']];
  44. }
  45. $result = [];
  46. for ($_i = strtotime($start_date); $_i <= strtotime($end_date); $_i += 24 * 3600) {
  47. $_key = date('Y-m-d', $_i);
  48. $result[date('m-d', $_i)] = isset($_data[$_key]) ? doubleval($_data[$_key]) : 0;
  49. }
  50. return $result;
  51. }
  52. }