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; } }