| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- <?php
- namespace addons\BusinessActivity\common\service;
- use addons\BusinessActivity\common\models\AddonsBusinessActivityCommissionModel;
- use common\enums\StatusEnum;
- use common\models\mall\MallAddons;
- use common\models\user\User;
- class CommissionService
- {
- public function page(int $mall_id, array $params)
- {
- $where = [];
- $where[]['mall_id'] = $mall_id;
- $where[]['status'] = StatusEnum::ENABLED;
- if (!empty($params['member'])) {
- $user_or[] = 'or';
- $user_or[] = ['like', 'id', $params['member']];
- $user_or[] = ['like', 'nickname', $params['member']];
- $u_ids = User::find()->where(['mall_id' => $mall_id])->andWhere($user_or)->column();
- if (!empty($u_ids)) {
- $where[] = ['in', 'user_id', $u_ids];
- } else {
- $where[] = ['user_id' => 0];
- }
- }
- if (!empty($params['date_start']) && !empty($params['date_end'])) {
- $s = strtotime($params['date_start']);
- $e = strtotime($params['date_end']);
- $where[] = ['between', 'created_at', $s, $e];
- } elseif (!empty($params['date_start'])) {
- $s = strtotime($params['date_start']);
- $where[] = ['<=', 'created_at', $s];
- } elseif (!empty($params['date_end'])) {
- $e = strtotime($params['date_end']);
- $where[] = ['>=', 'created_at', $e];
- }
- $ret = AddonsBusinessActivityCommissionModel::listPage([
- 'where' => $where,
- 'with' => ['user'],
- 'order' => 'id desc'
- ]);
- $ret['total_commission'] = 0; // 总提成
- $ret['today_commission'] = 0; // 今日提成
- if (!empty($ret['list'])) {
- $total = AddonsBusinessActivityCommissionModel::find()->where(['mall_id' => $mall_id])
- ->select('sum(commission) as commission')->one();
- $today = AddonsBusinessActivityCommissionModel::find()->where(['mall_id' => $mall_id])
- ->andWhere(['between', 'created_at', strtotime(date('Y-m-d')), strtotime(date('Y-m-d')) + 86400])
- ->select('sum(commission) as commission')->one();
- $ret['total_commission'] = $total['commission'];
- $ret['today_commission'] = $today['commission'];
- }
- return $ret;
- }
- /**
- * 佣金统计
- * @param array $params
- * @return array
- */
- public function commissionStatistics(array $params): array
- {
- $is_install = MallAddons::isInstall($params['mall_id'], $params['addons_name']);
- $data['total_commission'] = 0;
- $data['is_install'] = 0;
- $basic = \Yii::$app->services->setting->addons->get($params['mall_id'], $params['addons_name'], 'basic');
- $data['is_show_at_center'] = 1;
- if(isset($basic['is_show_at_center'])) $data['is_show_at_center'] = $basic['is_show_at_center'];
- if(!empty($basic['name'])) $data['rename'] = $basic['name'];
- if ($is_install) {
- // 这里进行统计
- $data['total_commission'] = bcdiv($this->statisticsByUserId($params['mall_id'], $params['user_id']), 100, 2);
- $data['is_install'] = $is_install;
- }
- return $data;
- }
- /**
- * 获取指定用户所获得的佣金
- * @param int $mall_id
- * @param int $user_id
- * @return int|mixed
- */
- public function statisticsByUserId(int $mall_id, int $user_id)
- {
- $total = AddonsBusinessActivityCommissionModel::find()->where(['mall_id' => $mall_id])
- ->andWhere(['user_id' => $user_id])
- ->andWhere(['status' => StatusEnum::ENABLED])
- ->select('sum(commission) as commission')->one();
- return $total['commission'] ?? 0;
- }
- /**
- * 获取用户所获得的佣金
- * @param int $mall_id
- * @param int $user_id
- * @param array $params
- * @return array|false|mixed|string|null
- */
- public function frontPage(int $mall_id, int $user_id, array $params)
- {
- $where = [
- ['mall_id' => $mall_id],
- ['status' => StatusEnum::ENABLED],
- ['user_id' => $user_id]
- ];
- // 活动筛选
- if (!empty($params['activity_id'])) {
- $where[] = ['activity_id' => $params['activity_id']];
- }
- // 时间筛选
- if (!empty($params['start_date'])) {
- $where[] = ['>=', 'created_at', strtotime($params['start_date'])];
- }
- if (!empty($params['end_date'])) {
- $where[] = ['<=', 'created_at', strtotime($params['end_date'])];
- }
- $ret = AddonsBusinessActivityCommissionModel::listPage([
- 'where' => $where,
- 'order' => 'id desc',
- 'select'=> 'id, created_at, commission, activity_id, intro',
- 'with' => ['activity' => function($query) {
- $query->select('id, name');
- }]
- ]);
- if (!empty(AddonsBusinessActivityCommissionModel::getStaticError())) return AddonsBusinessActivityCommissionModel::getStaticError();
- if (!empty($ret['list'])) {
- foreach ($ret['list'] as &$item) {
- $item['created_at'] = date("Y-m-d H:i:s", $item['created_at']);
- $item['commission'] = bcdiv($item['commission'], 100 , 2);
- }
- }
- return $ret;
- }
- }
|