TeamService.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace api\services;
  3. use common\enums\OrderStatusEnum;
  4. use common\models\order\Order;
  5. use common\models\user\UserPartitionRelationship;
  6. use common\models\user\UserTeamAchievementOrder;
  7. /**
  8. * 团队服务类
  9. * Class BaseService
  10. * @package api\services
  11. */
  12. class TeamService extends BaseService
  13. {
  14. /**
  15. * 个人团队下面的业绩
  16. *
  17. * @param integer $uid
  18. * @param array $params
  19. * @return array
  20. */
  21. public function getTeamAchievementPageList(int $uid, array $params = [])
  22. {
  23. $total_order_num = 0;
  24. $total_pay_money = 0;
  25. $total_pay_achievement = 0;
  26. $list = UserTeamAchievementOrder::getPaginationListByUid($uid, $this->getLimit($params), function($query) use (
  27. $params, &$total_order_num, &$total_pay_money, &$total_pay_achievement, $uid
  28. ) {
  29. $query->where(['superior_user_id' => $uid, 'status' => 2]);
  30. $query->with(['order' => function($query) {
  31. $query->select([
  32. 'id', 'user_id', 'order_no', 'goods_price', 'pay_money',
  33. 'IFNULL(shipping_money, 0) as shipping_money',
  34. '(pay_money - IFNULL(shipping_money, 0)) as achievement', 'pay_time', 'created_at'
  35. ]);
  36. }, 'user' => function($query) {
  37. $query->select('id, nickname, mobile, avatar_url');
  38. }]);
  39. // 时间查询
  40. if (!empty($params['start_date']) && !empty($params['end_date'])) {
  41. $query->andWhere([
  42. 'between',
  43. 'created_at',
  44. strtotime($params['start_date']), (strtotime($params['end_date']) + 86399)
  45. ]);
  46. }
  47. // 统计
  48. $query2 = clone $query;
  49. $total_pay_money = Order::find()->where(['id' => $query2->select('order_id')])->sum('pay_money');
  50. $total_pay_achievement = Order::find()->where(['id' => $query2->select('order_id')])->sum('(pay_money - IFNULL(shipping_money, 0))');
  51. $total_order_num = $query->count();
  52. }, 'id desc');
  53. // 统计 总金额,订单数
  54. $list['total_pay_money'] = $total_pay_money;
  55. $list['total_order_num'] = $total_order_num;
  56. $list['total_pay_achievement'] = $total_pay_achievement;
  57. return $list;
  58. }
  59. }