Jelajahi Sumber

修改地区设置

zs 9 bulan lalu
induk
melakukan
aa50423c27

+ 13 - 1
src/controller/system/region.controller.ts

@@ -6,14 +6,18 @@ import { omit, pick } from 'lodash';
 import { ErrorCode, ServiceError } from '../../error/service.error';
 import { CVO_region, FVO_region, QVO_region, UVAO_region } from '../../interface/system/region.interface';
 import { RegionService } from '../../service/system/region.service';
+import { Context } from '@midwayjs/koa';
 const namePrefix = '地区';
 @ApiTags(['地区'])
 @Controller('/region', { tagName: namePrefix })
 export class RegionController implements BaseController {
-  controllerCode = 'system_dict';
+  controllerCode = 'system_region';
   @Inject()
   service: RegionService;
 
+  @Inject()
+  ctx: Context;
+
   @Get('/')
   @ApiTags('列表查询')
   @ApiQuery({ name: 'query' })
@@ -64,4 +68,12 @@ export class RegionController implements BaseController {
     const result = await this.service.delete({ id });
     return result;
   }
+
+  @Get('/list')
+  async list() {
+    const list = await this.service.list(this.ctx.query);
+    const data = list.data;
+    const total = list.total;
+    return { data, total };
+  }
 }

+ 23 - 1
src/service/system/region.service.ts

@@ -1,10 +1,32 @@
 import { Provide } from '@midwayjs/core';
 import { InjectEntityModel } from '@midwayjs/typeorm';
-import { Repository } from 'typeorm';
 import { BaseService } from '../../frame/BaseService';
 import { Region } from '../../entity/system/region.entity';
+import { get, pick } from 'lodash';
+import { Equal, Repository } from 'typeorm';
 @Provide()
 export class RegionService extends BaseService<Region> {
   @InjectEntityModel(Region)
   model: Repository<Region>;
+
+  // 地区列表
+  async list(query) {
+    const { skip = 0, limit = 0, level, code, parent_code, ...info } = pick(query, ['skip', 'limit', 'level', 'code', 'parent_code']);
+    const whereObject: any = { level, code, parent_code };
+    const builder = this.model.createQueryBuilder().setFindOptions({ where: whereObject, skip, take: limit });
+    const data = await builder.getMany();
+    const total = await builder.getCount();
+    for (const val of data) {
+      if (get(val, 'code')) {
+        let level = get(val, 'level');
+        if (get(val, 'level') === 'province') level = 'city';
+        else if (get(val, 'level') === 'city') level = 'area';
+        else if (get(val, 'level') === 'area') level = 'street';
+        // 查询下一级
+        const region = await this.model.findOne({ where: { parent_code: Equal(val.code), level: Equal(level) } });
+        if (region) Object.assign(val, { hasChildren: true });
+      }
+    }
+    return { data, total };
+  }
 }