'ID', 'mall_id' => '商城ID', 'user_id' => '用户ID', 'total_seed_num' => '种子金总数量', 'total_seed_cost' => '种子金总价值,单位:元', 'collect_seed_num' => '已收取种子金总数量', 'refund_seed_num' => '退款种子金总数量', 'total_change_money' => '累计转换金额,单位:元', 'status' => '状态[-1:删除;0:禁用;1启用]', 'created_at' => '创建时间', 'updated_at' => '修改时间', ]; } /** * 关联用户表 * @Author: lun * @DateTime: 2022/7/28 0028 10:07 * @Copyright: copyright (c) 2021 广东七件事集团 * @return \yii\db\ActiveQuery */ public function getUser() { return $this->hasOne(User::class, ['id' => 'user_id'])->select('id,mobile,nickname,username,avatar_url'); } /** * 保存数据 * @Author: lun * @DateTime: 2022/7/27 0027 11:44 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $mall_id * @param $user_id * @param $params * @return array|bool */ public static function setData($mall_id, $user_id, $params) { try { $model = self::findOne(['user_id' => $user_id, 'status' => StatusEnum::ENABLED]); if (empty($model)) { $model = new self(); $model->mall_id = $mall_id; $model->user_id = $user_id; $model->loadDefaultValues(); } // 循环赋值 foreach ($model as $key => $value) { if (isset($params[$key]) && !empty($params[$key])) $model->$key += $params[$key]; } if (!$model->save()) throw new Exception($model->getErrorMessage()); return $model->toArray(); } catch (\Exception $e) { self::setStaticError('用户种子金:'.$e->getMessage()); return false; } } /** * 导出字段 * @Author: lun * @DateTime: 2022/8/5 0005 11:23 * @Copyright: copyright (c) 2021 广东七件事集团 * @return [] */ public static function fieldsList() { $fields = [ 'user_id' => '用户ID', 'nickname' => '用户昵称', 'mobile' => '用户手机', 'seed_num' => '现有种子金总数量', 'total_seed_num' => '累计种子金总数量', 'total_seed_cost' => '种子金总价值', 'collect_seed_num' => '已收取种子金', 'refund_seed_num' => '退款种子金数量', 'total_change_money' => '累计转换金额', 'created_at' => '创建时间', ]; return $fields; } /** * 导出处理 * @Author: lun * @DateTime: 2022/8/5 0005 11:23 * @Copyright: copyright (c) 2021 广东七件事集团 * @param array $data * @return string */ public static function exportHandle(array $data) { $download_id = $data['download_id'] ?? 0; $download = Download::findOne(['id' => $download_id]); if ($download) { try { $params = json_decode($download->params,true); $filename = $download->name; $type = $download->type; $seel_user_model = self::find(); $seel_user_model->where(['mall_id' => $params['mall_id']]); !empty($params['user_id']) && $seel_user_model->where(['user_id' => $params['user_id']]); if (!empty($params['mobile'])){ $user = User::find()->where(['like','mobile',$params['mobile'].'%',false])->all(); $where[] = ['in', 'user_id', array_column($user,'id')]; $seel_user_model->andWhere(['in', 'user_id', array_column($user,'id')]); } $seel_user_model->andWhere(['=','status',StatusEnum::ENABLED]); $seel_user_model->with(['user' => function($query){ $query->select('id,nickname,username,mobile'); }]); $fields = $params['fields']; $fields_arr = self::fieldsList(); $have_select_field_arr = []; 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; foreach ($seel_user_model->batch() as $seel_users) { $csv->data = array_map(function($seel_user)use($fields){ $row = []; foreach ($fields as $field){ switch (true){ case ($field == 'nickname'): $row[] = !empty($seel_user[$field])?date('Y-m-d H:i:s',$seel_user[$field]):''; break; case ($field == 'mobile'): $row[] = !empty($seel_user['order'][$field])?date('Y-m-d H:i:s',$seel_user['order'][$field]):''; break; case ($field == 'seed_num'): $row[] = $seel_user['total_seed_num'] - $seel_user['collect_seed_num'] - $seel_user['refund_seed_num']; break; default: $row[] = !empty($seel_user[$field])?$seel_user[$field]:''; break; } } return $row; }, $seel_users); $csv->export(); } $csv->updateDown($download,$params['mall_id']); return true; } catch (\Exception $e) {echo $e->getMessage(); $download->status = 3; $download->save(); self::setStaticError($e->getMessage()); return $e->getMessage(); } } } /** * 修改统计数据 * @Author: lun * @DateTime: 2022/8/30 0030 10:37 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $user_id * @param $params * @throws Exception */ public static function saveStatistics($user_id, $params) { $update_data['updated_at'] = time(); foreach ($params as $key => $value) { $symbol = $value >= 0 ? '+' : '-'; $update_data[$key] = new Expression($key.$symbol.abs($value)); } $res = self::updateAll($update_data, ['user_id' => $user_id, 'status' => StatusEnum::ENABLED]); if (!$res) throw new Exception('修改统计数据失败'); } public static function getAddons(array $params){ $addons_name = $params['addons_name']; $is_install = MallAddons::isInstall($params['mall_id'], $addons_name); if($is_install){ $detail = Addons::getOne([['name' =>$addons_name], ['is_online' => 1]], true,); return [ 'addons_name'=>$addons_name, 'title'=>$detail['title'], ]; } return []; } }