import { DataModel, transformArrayDataModel } from '@imengyu/js-request-transform'; import { AppServerRequestModule } from '../RequestModules'; import { transformSomeToArray } from '../Utils'; export class VillageListItem extends DataModel { constructor() { super(VillageListItem, "活动列表"); this.setNameMapperCase('Camel', 'Snake'); this._convertTable = { id: { clientSide: 'number', serverSide: 'number', clientSideRequired: true }, isLight: { clientSide: 'boolean' }, } this._convertKeyType = (key, direction) => { if (key.endsWith('At')) return { clientSide: 'date', serverSide: 'string', }; return undefined; }; this._afterSolveServer = () => { this.address = (this.province || '') + (this.city || '') + (this.district || '') + (this.township || ''); if (this.images && this.images && this.images.length > 0 ) { this.image = this.images[0] } this.thumbnail = this.image; } } id !: number; province = '' as string|null; city = '' as string|null; district = '' as string|null; township = '' as string|null; address = ''; isLight = false; isLightText = ''; lightValue = Math.random(); villageVolunteerId = null as number|null; villageId !:number; claimReason = ''; status = ''; statusText = ''; createdAt = null as Date|null; updatedAt = null as Date|null; deleteAt = null as Date|null; image = ''; thumbnail = ''; images = [] as string[]; name = ''; title = ''; volunteerName = ''; } export class LightVillageApi extends AppServerRequestModule { constructor() { super(); } /** * 志愿者排行榜 * POST /village/volunteer/getRanklist */ async getVolunteerRankList(params?: { /** 地区(区域内所有村社) */ region_id?: number; /** 数量:显示前几名(默认10) */ num?: number; /** 村社ID */ village_id?: number; }) { const res = await this.post<{ id: number; name: string; mobile: string; points: number; level: number; type: string; type_text?: string; sex_text?: string; status_text?: string; image?: string; }[]>('/village/volunteer/getRanklist', '志愿者排行榜', params); return res.requireData(); } /** * 村社排行榜 * POST /village/village/getRanklist */ async getVillageRankList(params?: { /** 地区(区域内所有村社) */ region_id?: number; /** 数量:显示前几名(默认10) */ num?: number; /** 点亮状态:0=未点亮,1=已点亮 */ is_light?: number; }) { const res = await this.post<{ id: number; name: string; points: number; region: number; status?: string; is_light: number | string; status_text?: string; region_text?: string; is_light_text?: string; image?: string; }[]>('/village/village/getRanklist', '村社排行榜', params); return res.requireData(); } async getVillageList(level?: number, region?: number, status?: number, page?: number, pageSize?: number) { const res = await this.get<{ data: any[], total: number, }>('/village/village/list', '乡源村落列表', { history_level: level, status, region: region, page: page, pageSize: pageSize, }); return transformArrayDataModel(VillageListItem, transformSomeToArray(res.requireData().data), `村落`, true); } async getVillageDetails(id: number) { const res = await this.get('/village/village/getInfo', '村社详情', { id: id, }, VillageListItem); return res.requireData(); } async getIpAddress() { const res = await this.get<{ address: string, address_detail:{ adcode: string, city: string, city_code: number, district: string, province: string, street: string, street_number: string, }, point: { x: string, y: string, }, }>('/village/volunteer/getIpArea', '获取IP地址'); return res.requireData(); } async getMessages(page: number, pageSize: number, keywords?: string) { const res = await this.get<{ data: { id: number; user_id: number; village_id: number; title: string; content: string | null; images: string; image: string; msgid: string; jump_url: string; send_time: string; like_count: number; village_name: string | null; username: string | null; nick_name: string | null; }[], total: number, }>('/village/collect/wechatContentList', '获取微信贴图列表', { page, pageSize, keywords, }); return res.requireData(); } } export default new LightVillageApi();