| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365 |
- import { DataModel, transformArrayDataModel, transformDataModel, type KeyValue } from '@imengyu/js-request-transform';
- import { AppServerRequestModule } from '../RequestModules';
- import CommonContent from '../CommonContent';
- export class CategoryListItem extends DataModel<CategoryListItem> {
- constructor() {
- super(CategoryListItem, "分类列表");
- this.setNameMapperCase('Camel', 'Snake');
- this._convertTable = {
- id: { clientSide: 'number', serverSide: 'number', clientSideRequired: true },
- pid: { clientSide: 'number', serverSide: 'number' },
- haschild: { clientSide: 'boolean', serverSide: 'number' },
- }
- }
- id !: number;
- pid !: number;
- title = '';
- status = 'normal';
- weight = 0;
- spacer = '';
- haschild = false;
- children?: CategoryListItem[];
- }
- export class CommonInfoModel extends DataModel<CommonInfoModel> {
- constructor() {
- super(CommonInfoModel, "信息详情");
- this.setNameMapperCase('Camel', 'Snake');
- this._convertTable = {
- id: { clientSide: 'number', serverSide: 'number', clientSideRequired: true },
- keywords: { clientSide: 'splitCommaArray', serverSide: 'commaArrayMerge' },
- culturalType: { clientSide: 'number', serverSide: 'number' },
- productType: { clientSide: 'number', serverSide: 'number' },
- type: { clientSide: 'number', serverSide: 'number' },
- nature: { clientSide: 'number', serverSide: 'number' },
- folkCultureType: { clientSide: 'number', serverSide: 'number' },
- landforms: [
- { clientSide: 'splitCommaArray', serverSide: 'commaArrayMerge' },
- { clientSide: 'arrayInt', serverSide: 'original' },
- ],
- villageType: { clientSide: 'number', serverSide: 'number' },
- entityType: { clientSide: 'splitCommaArray', serverSide: 'commaArrayMerge' },
- honorType: { clientSide: 'number', serverSide: 'number' },
- },
- this._blackList.toServer.push(
- 'updatedAt', 'createdAt', 'deletedAt',
- );
- this._convertKeyType = (key, direction) => {
- if (key.endsWith('At'))
- return {
- clientSide: 'date',
- serverSide: 'string',
- };
- return undefined;
- };
- this._afterSolveServer = () => {
- if (this.province && this.city && this.district) {
- this.cityAddress = [this.province as string, this.city as string, this.district as string];
- }
- if (!this.title && this.name)
- this.title = this.name;
- if (this.longitude && this.latitude) {
- this.lonlat = [this.longitude as number, this.latitude as number];
- }
- };
- this._afterSolveClient = (data) => {
- if (this.cityAddress) {
- data.province = this.cityAddress[0];
- data.city = this.cityAddress[1];
- data.district = this.cityAddress[2];
- }
- if (this.lonlat) {
- data.longitude = this.lonlat[0];
- data.latitude = this.lonlat[1];
- }
- };
- }
- /**
- * 审核不通过
- */
- static STATUS_REJECT = -1;
- /**
- * 草稿
- */
- static STATUS_DRAFT = 0;
- /**
- * 待审核
- */
- static STATUS_AUDIT = 1;
- /**
- * 审核通过
- */
- static STATUS_PASS = 2;
- /**
- * 专家评估
- */
- static STATUS_EXPERT = 3;
- /**
- * 终审
- */
- static STATUS_FINAL = 4;
- id !: number;
- cityAddress?: string[];
- title = '';
- desc = '';
- image = '';
- images = [] as string[];
- content = '';
- catalogId = 0;
- collectModuleId = 0;
- villageId = 0;
- villageVolunteerId = 0;
- villageName = '';
- villageVolunteerAvatar = '';
- villageVolunteerName = '';
- contentId = 0;
- name = '';
- type = 1;
- audio = '';
- video = '';
- archives = '';
- annex = [] as string[];
- keywords = [] as string[];
- createdAt = new Date();
- updatedAt = new Date();
- publishAt = new Date();
- /**
- * 不喜欢数
- */
- dislikeNum = 0;
- /**
- * 点赞数
- */
- likeNum = 0;
- /**
- * 点赞状态
- * * 1=已点赞
- * * 2=踩
- * * null=未操作
- */
- likeType = null as 1|2|null;
- lonlat?: number[];
- landforms = [] as string[];
- /** 类型:1=个人,2=团队,3=企业,4=匿名(多选,提交为逗号分隔) */
- entityType = [] as string[];
- /** 荣誉类型:1=捐赠,2=志愿服务,3=公益帮扶,4=其他 */
- honorType = null as number | null;
- customName = '';
- occurrenceDate = '';
- address = '';
- statusText = '';
- }
- export class VillageListItem extends DataModel<VillageListItem> {
- constructor() {
- super(VillageListItem, "村社信息");
- this.setNameMapperCase('Camel', 'Snake');
- this._convertTable = {
- id: { clientSide: 'number', serverSide: 'number', clientSideRequired: true },
- },
- this._blackList.toServer.push(
- 'updatedAt', 'createdAt', 'deletedAt',
- );
- this._convertKeyType = (key, direction) => {
- if (key.endsWith('At'))
- return {
- clientSide: 'date',
- serverSide: 'string',
- };
- return undefined;
- };
- this._afterSolveServer = () => {
- if (!this.title) {
- if (this.name) this.title = this.name as string;
- if (typeof this.content === 'object' && (this.content as any)?.title) this.title = (this.content as any).title as string;
- if (this.content) this.title = this.content as string;
- if (this.structure) this.title = this.structure as string;
- if (this.wisdom) this.title = this.wisdom as string;
- }
- if (!this.image) {
- if (this.distribution) this.image = this.distribution as string;
- }
- };
- }
- id !: number;
- createdAt = new Date();
- updatedAt = new Date();
- title = '';
- desc = '';
- image = '';
- }
- export class VillageBulidingInfo extends DataModel<VillageBulidingInfo> {
- constructor() {
- super(VillageBulidingInfo, "历史建筑信息");
- this.setNameMapperCase('Camel', 'Snake');
- this._convertTable = {
- id: { clientSide: 'number', serverSide: 'number', clientSideRequired: true },
- }
- this._blackList.toServer.push(
- 'updatedAt', 'createdAt', 'deletedAt',
- );
- const commaArrayKeys = [
- 'purpose','floorType','wallType','roofForm','bearingType',
- ]
- this._convertKeyType = (key, direction) => {
- if (commaArrayKeys.includes(key))
- return [
- { clientSide: 'splitCommaArray', serverSide: 'commaArrayMerge' },
- { clientSide: 'arrayInt', serverSide: 'original' },
- ];
- return undefined;
- };
- }
- id !: number;
- }
- export class VillageInfoApi extends AppServerRequestModule<DataModel> {
- constructor() {
- super();
- }
- /**
- * 用于获取某一个分类需要用的子级
- * @param pid 父级
- * @returns
- */
- getCategoryChildList(pid?: number) {
- return CommonContent.getCategoryChildList(pid);
- }
- getOverview(
- villageId: number,
- villageVolunteerId: number,
- ) {
- return (this.post<KeyValue>(`/village/overview/getInfo`, '获取村社概览', {
- village_id: villageId,
- village_volunteer_id: villageVolunteerId,
- }))
- .then(res => transformDataModel(CommonInfoModel, res.requireData()))
- .catch(e => { throw e });
- }
- async getInfo<T extends DataModel>(
- collectModuleId: number|undefined,
- subId: number|undefined,
- subKey: string|undefined,
- villageId: number,
- villageVolunteerId: number,
- catalogId?: number|undefined,
- id?: number,
- modelClassCreator: (new () => T) = CommonInfoModel as any
- ) {
- return (await this.post(`/village/collect/info`, '通用获取信息详情', {
- collect_module_id: collectModuleId,
- id,
- }, undefined, modelClassCreator)).data as T
- }
- async getList<T extends DataModel = CommonInfoModel>(data: {
- collectModuleId?: number|undefined,
- subId?: number|undefined,
- subKey?: string|undefined,
- villageId?: number|undefined,
- villageVolunteerId?: number|undefined,
- catalogId?: number|undefined,
- page?: number,
- pageSize?: number,
- status?: number|undefined,
- keywords?: string|undefined,
- modelClassCreator?: (new () => T),
- }) {
- return (this.post<{
- total: number,
- data: any[],
- }>(`/village/collect/list`, '获取信息详情', {
- collect_module_id: data.collectModuleId,
- [data.subKey ? data.subKey : 'type']: data.subId && data.subId >= 0 ? data.subId : undefined,
- village_id: data.villageId,
- village_volunteer_id: data.villageVolunteerId,
- catalog_id: data.catalogId || undefined,
- page: data.page,
- pageSize: data.pageSize,
- status: data.status,
- keywords: data.keywords,
- }))
- .then(res => {
- return {
- total: res.data?.total as number ?? 0,
- list: transformArrayDataModel<T>(data.modelClassCreator ?? CommonInfoModel, res.data?.data ?? [], `获取分类列表`, true)
- }
- })
- .catch(e => { throw e });
- }
- async getListForDiscover(page: number, pageSize: number, keywords?: string) {
- return (this.post<{
- total: number,
- data: any[],
- }>(`/village/collect/list`, '获取信息详情', {
- page,
- page_size: pageSize,
- keywords,
- status: 4,
- }))
- .then(res => ({
- total: res.data?.total as number ?? 0,
- list: transformArrayDataModel<CommonInfoModel>(CommonInfoModel, res.data?.data ?? [], `获取分类列表`, true)
- }))
- .catch(e => { throw e });
- }
- async getInfoForDiscover(id: number) {
- return (await this.post(`/village/collect/info`, '通用获取信息详情', {
- id,
- status: 4,
- }, undefined, CommonInfoModel)).data as CommonInfoModel
- }
- /**
- * 点赞/不感兴趣/取消
- * @param id 采集记录ID
- * @param likeType 类型: 1=点赞, 2=不感兴趣
- */
- async collectLike(id: number, likeType: 1 | 2) {
- return (await this.post<string>(`/village/collect/collectLike`, '点赞/不感兴趣', {
- id,
- like_type: likeType,
- }));
- }
- async deleteInfo(id: number) {
- return (await this.post(`/village/collect/del`, '删除信息详情', {
- id,
- }, undefined, CommonInfoModel)).data as CommonInfoModel
- }
- async updateInfo<T extends DataModel>(
- collectModuleId: number|undefined,
- subKey: string,
- subId: number,
- villageId: number,
- villageVolunteerId: number,
- catalogId: number|undefined,
- data: T,
- ) {
- const res : Record<string, any> = {
- ...data.toServerSide(),
- collect_module_id: collectModuleId,
- village_id: villageId,
- village_volunteer_id: villageVolunteerId,
- catalog_id: catalogId ? catalogId : undefined,
- };
- if (subKey && subId && subId > 0)
- res[subKey] = subId;
- return (await this.post(`/village/collect/save`, '通用更新信息详情', res));
- }
- async getInfoByVillageId(id: number) {
- return (await this.post(`/village/village/getInfo`, '获取村社信息', {
- id,
- }, undefined, VillageListItem)).data as VillageListItem
- }
- }
- export default new VillageInfoApi();
|