CommissionController.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. namespace addons\ReservationService\api\modules\v1\controllers;
  3. use addons\ReservationService\common\enums\ReservationServiceEnum;
  4. use addons\ReservationService\common\models\ReservationServiceUser;
  5. use addons\ReservationService\common\services\CommissionService;
  6. use addons\ReservationService\common\services\UserService;
  7. use api\controllers\OnAuthController;
  8. use common\enums\StatusEnum;
  9. use common\models\common\CapitalLog;
  10. use common\models\user\User;
  11. use common\models\user\UserPartitionRelationship;
  12. class CommissionController extends OnAuthController
  13. {
  14. public $modelClass = '';
  15. /**
  16. * 不用进行登录验证的方法
  17. *
  18. * 例如: ['index', 'update', 'create', 'view', 'delete']
  19. * 默认全部需要验证
  20. *
  21. * @var array
  22. */
  23. protected $authOptional = [];
  24. public function actionIndex()
  25. {
  26. $params = \Yii::$app->request->get();
  27. $res = \Yii::$app->services->validate->validate($params, [
  28. [['page', 'limit', 'status'],'integer'],
  29. ]);
  30. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  31. // $ret = (new CommissionService())->page($this->mall_id, $params, $this->user_id);
  32. $ret = (new CommissionService())->list($this->mall_id, $this->user_id, $params);
  33. return is_string($ret) ? $this->error($ret) : $this->success('获取成功', $ret);
  34. }
  35. public function actionHead()
  36. {
  37. // 用户信息
  38. $data['user_id'] = empty($this->user_id) ? 0 : $this->user_id;
  39. $data['nickname'] = empty($this->user->nickname) ? '' : $this->user->nickname;
  40. $data['avatar_url'] = empty($this->user->avatar_url) ? '' : $this->user->avatar_url;
  41. $data['mobile'] = empty($this->user->mobile) ? '' : $this->user->mobile;
  42. $data['level_name'] = empty($user_level_arr[$this->user->level]) ? '普通会员' : $user_level_arr[$this->user->level];
  43. $data['level'] = empty($this->user->level) ? '' : $this->user->level;
  44. $data['tag'] = [];
  45. $service = new UserService();
  46. try {
  47. $user = $service->customByUserId($this->mall_id, $this->user_id);
  48. $data['staff_level_name'] = empty($user['level']) ? '默认等级' : $user['level']['name'];
  49. // 佣金
  50. $wallet_type = 'commission';
  51. CapitalLog::$capitalType = "{$wallet_type}_frozen";
  52. $where = ['user_id' => $this->user_id, 'from_type' => ReservationServiceEnum::ADDONS_NAME, 'status' => CapitalLog::STATUS_WAIT_SEND];
  53. $query = CapitalLog::find();
  54. $frozen_price = $query->where($where)->sum('change_num');
  55. CapitalLog::$capitalType = "{$wallet_type}";
  56. $where = ['user_id' => $this->user_id, 'from_type' => ReservationServiceEnum::ADDONS_NAME];
  57. $query = CapitalLog::find();
  58. $total_price = $query->where($where)->sum('change_num');
  59. $data['statistics'] = [
  60. 'unsettlement' => bcmul(empty($frozen_price) ? 0 : $frozen_price, 1, 2),
  61. 'settled' => bcmul(empty($total_price) ? 0 : $total_price, 1, 2),
  62. 'total' => bcmul((empty($total_price) ? 0 : $total_price) + (empty($frozen_price) ? 0 : $frozen_price), 1, 2),
  63. ];
  64. } catch (\Exception $e) {
  65. return $this->error($e->getMessage());
  66. }
  67. return $this->success('获取成功', $data);
  68. }
  69. /**
  70. * 我的团队
  71. * @return mixed|null
  72. */
  73. public function actionTeam()
  74. {
  75. $child = User::find()->select('id')->where(['mall_id' => $this->mall_id])
  76. ->andWhere(['parent_id' => $this->user_id])->select('id')->column();
  77. $list = [
  78. 'first' => [],
  79. 'second'=> []
  80. ];
  81. if (!empty($child)) {
  82. $s_child = User::find()->select('id')->where(['mall_id' => $this->mall_id])
  83. ->andWhere(['parent_id' => $child])->select('id')->column();
  84. if (!empty($s_child)) {
  85. $list['second'] = ReservationServiceUser::lists([
  86. 'where' => [
  87. ['mall_id' => $this->mall_id],
  88. ['status' => StatusEnum::ENABLED],
  89. ['check_status' => ReservationServiceEnum::CHECK_ADOPT],
  90. ['user_id' => $s_child]
  91. ],
  92. 'select'=> 'user_id',
  93. 'order' => 'id desc',
  94. 'with' => ['user' => function($query) {
  95. $query->select('id, nickname, avatar_url, mobile');
  96. }]
  97. ]);
  98. if (!empty($list['second'])) {
  99. foreach ($list['second'] as &$item) {
  100. $item = $item['user'];
  101. }
  102. }
  103. }
  104. $list['first'] = ReservationServiceUser::lists([
  105. 'where' => [
  106. ['mall_id' => $this->mall_id],
  107. ['status' => StatusEnum::ENABLED],
  108. ['check_status' => ReservationServiceEnum::CHECK_ADOPT],
  109. ['user_id' => $child]
  110. ],
  111. 'select'=> 'user_id',
  112. 'order' => 'id desc',
  113. 'with' => ['user' => function($query) {
  114. $query->select('id, nickname, avatar_url, mobile');
  115. }]
  116. ]);
  117. if (!empty($list['first'])) {
  118. foreach ($list['first'] as &$item) {
  119. $item = $item['user'];
  120. }
  121. }
  122. }
  123. return $this->success('获取成功', $list);
  124. }
  125. }