| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?php
- namespace api\modules\v1\controllers\user;
- use api\controllers\OnAuthController;
- use addons\GroupData\api\services\GroupDataService;
- use common\services\mall\user\UserAchievementService;
- use common\enums\StatusEnum;
- use common\helpers\DateHelper;
- use common\models\common\MallSetting;
- use common\models\statistics\UserAchievementStatistics;
- use common\models\statistics\UserAchievementStatisticsTotal;
- use common\models\statistics\UserTeamAchievementStatistics;
- use common\models\statistics\UserTeamStatistics;
- use common\models\user\User;
- use common\models\user\UserLevel;
- use common\models\user\UserPartitionRelationship;
- use Yii;
- class UserAchievementController extends OnAuthController
- {
- public $modelClass = '';
- /**
- *
- * 不用进行登录验证的方法
- *
- * 例如: ['index', 'update', 'create', 'view', 'delete']
- * 默认全部需要验证
- *
- * @var array
- */
- protected $authOptional = ['login', 'mobile-login', 'sms-code', 'register', 'up-pwd','user-agree','visit', 'is-subscribe', 'address-info'];
- /**
- * 汇总数据
- *
- * @return void
- */
- public function actionIndex()
- {
- // 头部汇总数据
- $userTeamStatisticsField = 'user_indirect_total, user_direct_total, user_team_total';
- $userTeamStatisticsData = UserTeamStatistics::getOne(
- [['user_id' => $this->user_id]],
- true,
- [],
- false,
- $userTeamStatisticsField
- );
- $userTeamAchievementStatisticsField = 'team_order_num, team_goods_price_total, team_pay_selling_price';
- $userTeamAchievementStatisticsData = UserTeamAchievementStatistics::getOne(
- [['user_id' => $this->user_id]],
- true,
- [],
- false,
- $userTeamAchievementStatisticsField
- );
- $userStatisticsTotalData = UserAchievementStatisticsTotal::getOne(
- [['user_id' => $this->user_id]],
- true,
- [],
- false,
- 'pay_selling_price, user_goods_price_total, user_order_num'
- );
- // 上级用户
- $pUser = User::getUser([['id' => $this->user->parent_id]], 'id, nickname, mobile, level, avatar_url', [], true);
- $user = [
- 'id' => $this->user->id,
- 'mobile' => $this->user->mobile,
- 'nickname' => $this->user->nickname,
- 'avatar_url' => $this->user->avatar_url,
- 'level' => $this->user->level,
- ];
- $this->success(
- 'success',
- [
- 'total_data' => [
- 'user_indirect_total' => $userTeamStatisticsData['user_indirect_total'] ?? 0,
- 'user_direct_total' => $userTeamStatisticsData['user_direct_total'] ?? 0,
- 'user_team_total' => ($userTeamStatisticsData['user_team_total'] ?? 0) + 1, // 包含自己
- 'user_team_order_total' => bcadd(
- ($userTeamAchievementStatisticsData['team_order_num'] ?? 0),
- ($userStatisticsTotalData['user_order_num'] ?? 0),
- 2
- ),
- 'team_goods_price_total' => bcadd(
- ($userTeamAchievementStatisticsData['team_goods_price_total'] ?? 0),
- ($userStatisticsTotalData['user_goods_price_total'] ?? 0),
- 2
- ),
- 'team_pay_selling_price' => bcadd(
- ($userTeamAchievementStatisticsData['team_pay_selling_price'] ?? 0),
- ($userStatisticsTotalData['pay_selling_price'] ?? 0),
- 2
- ),
- ],
- 'p_user' => $pUser,
- 'user' => $user
- ]
- );
- }
- /**
- * 团队统计
- *
- * @return void
- */
- public function actionGetTeamStatistics()
- {
- $params = $this->request->get();
- $params['user_id'] = $this->user_id;
- $params['date'] = [];
- !empty($params['startDate']) && !empty($params['endDate']) && $params['date'] = [$params['startDate'], $params['endDate']];
- $params['limit'] = $params['limit'] ?? 10;
- $params['mall_id'] = $this->mall_id;
- $userAchievementService = new UserAchievementService;
- $this->success('success', $userAchievementService->getListByUserId($params));
- }
- /**
- * 明细统计
- *
- * @return void
- */
- public function actionGetTeamDetail()
- {
- $userAchievementService = new UserAchievementService;
- $params = $this->request->get();
- !empty($params['startDate']) && !empty($params['endDate']) && $params['date'] = [$params['startDate'], $params['endDate']]; // 订单会变化,所以需要到当前的23:59:59
- $params['user_id'] = $this->user_id;
- $params['mall_id'] = $this->mall_id;
- $this->success('success', $userAchievementService->getGroupDetail($params));
- }
- }
|