'用户ID', 'nickname' => '用户', 'commission' => '结算金额', 'score' => '结算持有积分', 'total_score' => '结算周期总积分', 'status' => '结算状态', 'created_at' => '结算时间', 'bonus_circle' => '结算周期' ]; if ($field === null) return $fields; $temp = []; foreach ($field as $val) { if (isset($fields[$val])) $temp[$val] = $fields[$val]; } return $temp; } /** * 保存数据 * @Author: lun * @DateTime: 2023/6/2 0002 15:53 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $params * @return bool */ public static function setData(array $params) { try { $model = new self(); $model->loadDefaultValues(); if (!$model->load($params, '') || !$model->save()) throw new Exception($model->getErrorMessage()); return $model; } catch (Exception $e) { self::$static_error = $e->getMessage(); return false; } } public function getUser() { return $this->hasOne(User::class, ['id' => 'user_id'])->select('id, avatar_url, nickname, username, mobile'); } public function getScoreBonus() { return $this->hasOne(ScoreBonusModel::class, ['id' => 'bid']); } public static function getAllData($params = [], $orderBy = 'id desc') { return self::find()->where($params)->orderBy($orderBy)->asArray()->all(); } public static function getfieldSum($params = [], $field = 'commission') { return self::find()->where($params)->sum($field); } public static function getOneData($params = [], $orderBy = 'id desc') { return self::find()->where($params)->orderBy($orderBy)->asArray()->one(); } /** * @desc:推广中心-调用 * @Author: hua * @Date: 2021/11/12 * @Time: 9:31 * @Copyright: copyright (c) 2021 广东七件事集团 * @param array $params ['user_id' => 1, 'mall_id' => 5, 'addons_name' => 'Agent'] * @return array */ public static function getIncomeInfo(array $params){ $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($is_install){ $total_commission = self::getfieldSum(['user_id' => $params['user_id'], 'mall_id' => $params['mall_id'], 'status' => StatusEnum::ENABLED], 'commission'); $data['total_commission'] = $total_commission??0.00; $data['is_install'] = $is_install; } return $data; } public static function exportHandle(array $data) { date_default_timezone_set('PRC'); $download_id = $data['download_id'] ?? 0; $download = Download::findOne(['id' => $download_id]); if($download){ try{ $params = json_decode($download->params,true); // print_r($params);exit; $filename = $download->name; $type = $download->type; $mall_id = $params['mall_id']; $fields = $params['fields']; $fields_arr = self::fieldsList(); $have_select_field_arr = []; // print_r($params);exit; foreach ($fields as $value){ $have_select_field_arr[]=$fields_arr[$value]; } $csv = new CsvTool(); $csv->filename = $filename; $csv->file_dirname = DownloadEnum::getTypeStorageDirMap($type); $csv->export_mode = CsvTool::EXPORT_MODE_ASYNC; $csv->header = $have_select_field_arr; $backend_contents_model = self::find(); $backend_contents_model->where(['mall_id' => $params['mall_id'], 'bid' => $params['bid']]); if (!empty($params['user_id'])) $backend_contents_model->andWhere(['user_id' => $params['user_id']]); if (!empty($params['id_str'])) { $id_arr = explode(',', $params['id_str']); $backend_contents_model->andWhere(['in', 'id', $id_arr]); } //设置排序 $order = 'id desc'; if (!empty($params['orderBy'])) $order = $params['orderBy']; $backend_contents_model->orderBy($order); $backend_contents_model->with(['user']); $bonus_circle = ScoreBonusEnums::getSettleCircleMap(); $data_list = []; foreach($backend_contents_model->batch() as $contents){ foreach ($contents as $key => $value) { $row = []; foreach ($fields as $field){ switch ($field) { case 'user_id': $row[] = $value['user_id']??''; break; case 'nickname': $row[] = $value['user']['nickname']??''; break; case 'commission': $row[] = $value['commission']??'0.00'; break; case 'score': $row[] = $value['score']??'0.00'; break; case 'total_score': $row[] = $value['total_score']??'0.00'; break; case 'status': if ($value['status'] == 1) { $row[] = '成功'; } else { $row[] = '失败'; } break; case 'bonus_circle': $row[] = $bonus_circle[$value['bonus_circle']]; break; case 'created_at': $row[] = date('Y-m-d H:i:s',$value['created_at'])??''; break; } } $data_list[]=$row; } } $csv->data = $data_list; $csv->export(); $url = $csv->upload($params['mall_id'],$csv->relative_filename); $download->status = 2; $download->url = $url; $download->num = $csv->line_num; $download->size = $csv->file_size; $res = $download->save(); return true; }catch(Exception $e){ $download->status = 3; self::setStaticError($e->getMessage()); return false; } } } }