cabloy 5.1.115 → 5.1.117
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cabloy-version +1 -1
- package/.claude/skills/cabloy-contract-loop/SKILL.md +8 -2
- package/.claude/skills/cabloy-contract-loop/evals/evals.json +6 -0
- package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +13 -0
- package/.claude/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +16 -3
- package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +12 -0
- package/.github/workflows/vona-test-mysql.yml +6 -10
- package/.github/workflows/vona-test-pg.yml +9 -10
- package/.github/workflows/vona-test-sqlite3.yml +3 -0
- package/CHANGELOG.md +35 -0
- package/CLAUDE.md +2 -0
- package/cabloy-docs/.vitepress/config.mjs +6 -0
- package/cabloy-docs/ai/docs-skills-rules-mapping.md +7 -0
- package/cabloy-docs/backend/aop-overview.md +16 -24
- package/cabloy-docs/backend/backend-source-reading-roadmap.md +26 -2
- package/cabloy-docs/backend/controller-aop-guide.md +38 -14
- package/cabloy-docs/backend/logger-guide.md +1 -0
- package/cabloy-docs/backend/menu-guide.md +1 -1
- package/cabloy-docs/backend/orm-mutation-guide.md +36 -10
- package/cabloy-docs/backend/orm-select-guide.md +15 -10
- package/cabloy-docs/backend/rate-limit-guide.md +97 -0
- package/cabloy-docs/backend/telemetry-guide.md +93 -0
- package/cabloy-docs/backend/vona-source-reading-map.md +44 -1
- package/cabloy-docs/frontend/model-resource-owner-pattern.md +2 -0
- package/cabloy-docs/frontend/ssr-overview.md +2 -0
- package/cabloy-docs/fullstack/admin-resource-and-web-self-service.md +329 -0
- package/cabloy-docs/fullstack/contract-loop-playbook.md +1 -1
- package/cabloy-docs/fullstack/introduction.md +1 -0
- package/e2e/specs/a-commerce/commerce.spec.ts +479 -1
- package/package.json +1 -1
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoBaseName%>.tsx_ +1 -1
- package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoMutateName%>.tsx_ +2 -2
- package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoResItemName%>.tsx_ +10 -10
- package/vona/packages-cli/cli-set-api/cli/templates/tools/masterDetail/boilerplate/dto/<%=argv.detailDtoViewName%>.tsx_ +2 -2
- package/vona/packages-cli/cli-set-api/package.json +1 -1
- package/vona/packages-cli/cli-set-api/src/lib/bean/cli.tools.masterDetail.ts +13 -4
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/packages-vona/vona-core/package.json +1 -1
- package/vona/packages-vona/vona-core/src/lib/core/logger/utils.ts +12 -3
- package/vona/packages-vona/vona-mock/package.json +1 -1
- package/vona/pnpm-lock.yaml +237 -164
- package/vona/src/backend/config/config/config.ts +1 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/test/sku.test.ts +1 -1
- package/vona/src/suite/a-commerce/modules/commerce-member/src/.metadata/index.ts +81 -25
- package/vona/src/suite/a-commerce/modules/commerce-member/src/bean/ssrMenu.address.ts +30 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/src/controller/address.ts +42 -20
- package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineCreate.tsx +35 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineItem.tsx +39 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineReq.tsx +11 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineRes.tsx +11 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineUpdate.tsx +10 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressMineView.tsx +10 -0
- package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressSelectResItem.tsx +1 -7
- package/vona/src/suite/a-commerce/modules/commerce-member/src/service/address.ts +43 -42
- package/vona/src/suite/a-commerce/modules/commerce-member/test/addressOwnership.test.ts +168 -127
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/.metadata/index.ts +76 -3
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/meta.index.ts +3 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/meta.version.ts +37 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/dto/paymentAttemptView.tsx +2 -2
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/entity/paymentAttempt.tsx +5 -2
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/entity/paymentAudit.tsx +54 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/model/paymentAudit.ts +10 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/service/mockPaymentAdapter.ts +18 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/service/paymentAttempt.ts +22 -7
- package/vona/src/suite/a-commerce/modules/commerce-promotion/src/dto/couponIssue.tsx +1 -1
- package/vona/src/suite/a-commerce/modules/commerce-promotion/src/service/coupon.ts +6 -1
- package/vona/src/suite/a-commerce/modules/commerce-promotion/test/couponReservation.test.ts +480 -8
- package/vona/src/suite/a-commerce/modules/commerce-siteadmin/test/ssrMenu.test.ts +14 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +309 -3
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.index.ts +2 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.version.ts +16 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/ssrMenu.order.ts +30 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/controller/order.ts +69 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/controller/payment.ts +23 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/checkoutResult.tsx +4 -4
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderDetail.tsx +72 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderMineReq.tsx +21 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderMineRes.tsx +11 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSelectReq.tsx +25 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSelectRes.tsx +11 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSelectResItem.tsx +38 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderShip.tsx +15 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/orderSummary.tsx +26 -0
- package/vona/src/suite/a-commerce/modules/{commerce-member/src/dto/addressCreate.tsx → commerce-trade/src/dto/orderView.tsx} +5 -17
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/paymentOutcomeCreate.tsx +16 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/paymentOutcomeResult.tsx +29 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/shipmentView.tsx +22 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/orderAudit.tsx +13 -7
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/entity/shipment.tsx +28 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/model/order.ts +1 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/model/shipment.ts +10 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/cart.ts +14 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/order.ts +436 -34
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/stockBalance.ts +4 -3
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/cartOwnership.test.ts +160 -80
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/checkoutReservation.test.ts +773 -2
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/checkoutTransaction.test.ts +212 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/order.test.ts +37 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/orderSnapshot.test.ts +29 -5
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/paymentOutcome.test.ts +714 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/reservationExpiry.test.ts +282 -9
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/shipment.test.ts +260 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/stockBalance.test.ts +15 -1
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/stockReservation.test.ts +20 -2
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/testLock.ts +11 -0
- package/vona/src/suite/a-home/modules/home-user/src/.metadata/index.ts +21 -0
- package/vona/src/suite/a-home/modules/home-user/src/controller/passportTest.ts +21 -0
- package/vona/src/suite/a-home/modules/home-user/test/passportTest.test.ts +77 -0
- package/vona/src/suite-vendor/a-vona/modules/a-broadcast/package.json +2 -1
- package/vona/src/suite-vendor/a-vona/modules/a-broadcast/src/service/broadcast.ts +84 -23
- package/vona/src/suite-vendor/a-vona/modules/a-broadcast/src/types/broadcast.ts +7 -1
- package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-core/src/lib/core.ts +8 -0
- package/vona/src/suite-vendor/a-vona/modules/a-executor/package.json +4 -2
- package/vona/src/suite-vendor/a-vona/modules/a-executor/src/service/executor.ts +68 -53
- package/vona/src/suite-vendor/a-vona/modules/a-orm/cli/model/metadata/generate.ts +10 -0
- package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/bean.model/bean.model_cache.ts +12 -0
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/bean.model/bean.model_crud_inner.ts +3 -0
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/bean.model/bean.model_utils.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-queue/package.json +4 -2
- package/vona/src/suite-vendor/a-vona/modules/a-queue/src/service/queue.ts +103 -54
- package/vona/src/suite-vendor/a-vona/modules/a-queue/src/types/queue.ts +5 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/package.json +48 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/.metadata/index.ts +100 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/.metadata/this.ts +2 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/bean/interceptor.rateLimit.ts +72 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/index.ts +2 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/main.ts +28 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/service/rateLimit.ts +75 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/types/index.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/types/rateLimit.ts +19 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/tsconfig.build.json +11 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/tsconfig.json +7 -0
- package/vona/src/suite-vendor/a-vona/modules/a-redis/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-redis/src/service/redis.ts +1 -2
- package/vona/src/suite-vendor/a-vona/modules/a-redis/src/types/redis.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/package.json +63 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/.metadata/index.ts +132 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/.metadata/this.ts +2 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/bean/bean.telemetry.ts +71 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/bean/middlewareSystem.trace.ts +73 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/config/config.ts +83 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/index.ts +2 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/lib/ingress.ts +34 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/monkey.ts +22 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/service/telemetry.ts +201 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/types/index.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/src/types/telemetry.ts +22 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/test/telemetry.test.ts +339 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/tsconfig.build.json +11 -0
- package/vona/src/suite-vendor/a-vona/modules/a-telemetry/tsconfig.json +7 -0
- package/vona/src/suite-vendor/a-vona/package.json +3 -1
- package/vona/src/suite-vendor/a-vona/tsconfig.json +3 -0
- package/zova/package.original.json +1 -1
- package/zova/packages-cli/cli/package.json +2 -2
- package/zova/packages-cli/cli-set-front/package.json +1 -1
- package/zova/packages-cli/cli-set-front/src/lib/bean/cli.bin.buildRest.ts +3 -2
- package/zova/packages-zova/zova/package.json +2 -2
- package/zova/pnpm-lock.yaml +87 -127
- package/zova/src/front/config/config/config.cabloyCommerce.ts +4 -0
- package/zova/src/suite/a-commerce/modules/commerce-member/cli/openapi.config.ts +9 -1
- package/zova/src/suite/a-commerce/modules/commerce-member/src/.metadata/index.ts +16 -0
- package/zova/src/suite/a-commerce/modules/commerce-member/src/api/commerceMemberAddress.ts +94 -50
- package/zova/src/suite/a-commerce/modules/commerce-member/src/api/openapi/schemas.ts +162 -52
- package/zova/src/suite/a-commerce/modules/commerce-member/src/api/openapi/types.ts +2656 -1298
- package/zova/src/suite/a-commerce/modules/commerce-member/src/apiSchema/commerceMemberAddress.ts +23 -13
- package/zova/src/suite/a-commerce/modules/commerce-member/src/model/addressMine.ts +67 -0
- package/zova/src/suite/a-commerce/modules/commerce-member/src/page/address/controller.tsx +21 -11
- package/zova/src/suite/a-commerce/modules/commerce-promotion/src/api/openapi/schemas.ts +40 -32
- package/zova/src/suite/a-commerce/modules/commerce-promotion/src/api/openapi/types.ts +638 -633
- package/zova/src/suite/a-commerce/modules/commerce-trade/cli/openapi.config.ts +6 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/component/tableCellActionShip.ts +31 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +248 -1
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/checkout.ts +19 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/order.ts +19 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/orders.ts +19 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/page/payment.ts +19 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/commerceTradeOrder.ts +114 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/commerceTradePayment.ts +36 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/schemas.ts +75 -8
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/types.ts +762 -46
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/apiSchema/commerceTradeOrder.ts +35 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/apiSchema/commerceTradePayment.ts +13 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/bean/tableCell.actionShip.tsx +41 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/component/tableCellActionShip/controller.tsx +66 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/config/locale/en-us.ts +2 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/config/locale/zh-cn.ts +2 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/order.ts +38 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/orderMine.ts +31 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/payment.ts +25 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/cart/controller.tsx +14 -3
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/checkout/controller.tsx +124 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/order/controller.tsx +105 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/orders/controller.tsx +95 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/payment/controller.tsx +88 -0
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/routes.ts +28 -0
- package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/command.delete.tsx +3 -2
- package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionUpdate.tsx +2 -1
- package/zova/src/suite/cabloy-basic/modules/basic-details/src/bean/tableCell.actionView.tsx +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-details/src/config/locale/en-us.ts +1 -0
- package/zova/src/suite/cabloy-basic/modules/basic-details/src/config/locale/zh-cn.ts +1 -0
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +4 -0
- package/zova/src/suite-vendor/a-zova/package.json +2 -2
- package/vona/src/suite/a-commerce/modules/commerce-member/src/dto/addressUpdate.tsx +0 -39
|
@@ -111,10 +111,6 @@ declare module 'vona-module-commerce-member' {
|
|
|
111
111
|
getById<T extends IModelGetOptions<EntityAddress,ModelAddress>>(id: TableIdentity, options?: T): Promise<TypeModelRelationResult<EntityAddress, ModelAddress, T> | undefined>;
|
|
112
112
|
updateById<T extends IModelUpdateOptions<EntityAddress,ModelAddress>>(id: TableIdentity, data: TypeModelMutateRelationData<EntityAddress,ModelAddress, T>, options?: T): Promise<TypeModelMutateRelationData<EntityAddress,ModelAddress, T>>;
|
|
113
113
|
deleteById<T extends IModelDeleteOptions<EntityAddress,ModelAddress>>(id: TableIdentity, options?: T): Promise<void>;
|
|
114
|
-
getByName<T extends IModelGetOptions<EntityAddress,ModelAddress>>(name?: string, options?: T): Promise<TypeModelRelationResult<EntityAddress, ModelAddress, T> | undefined>;
|
|
115
|
-
getByNameEqI<T extends IModelGetOptions<EntityAddress,ModelAddress>>(name?: string, options?: T): Promise<TypeModelRelationResult<EntityAddress, ModelAddress, T> | undefined>;
|
|
116
|
-
selectByName<T extends IModelSelectParams<EntityAddress,ModelAddress,ModelJoins>, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined>(name?: string, params?: T, options?: IModelMethodOptions, modelJoins?: ModelJoins): Promise<TypeModelRelationResult<EntityAddress, ModelAddress, T>[]>;
|
|
117
|
-
selectByNameEqI<T extends IModelSelectParams<EntityAddress,ModelAddress,ModelJoins>, ModelJoins extends TypeModelsClassLikeGeneral | undefined = undefined>(name?: string, params?: T, options?: IModelMethodOptions, modelJoins?: ModelJoins): Promise<TypeModelRelationResult<EntityAddress, ModelAddress, T>[]>;
|
|
118
114
|
}
|
|
119
115
|
}
|
|
120
116
|
declare module 'vona-module-a-orm' {
|
|
@@ -204,27 +200,39 @@ declare module 'vona-module-commerce-member' {
|
|
|
204
200
|
}
|
|
205
201
|
/** meta: end */
|
|
206
202
|
/** dto: begin */
|
|
207
|
-
export * from '../dto/
|
|
203
|
+
export * from '../dto/addressMineCreate.tsx';
|
|
204
|
+
export * from '../dto/addressMineItem.tsx';
|
|
205
|
+
export * from '../dto/addressMineReq.tsx';
|
|
206
|
+
export * from '../dto/addressMineRes.tsx';
|
|
207
|
+
export * from '../dto/addressMineUpdate.tsx';
|
|
208
|
+
export * from '../dto/addressMineView.tsx';
|
|
208
209
|
export * from '../dto/addressSelectReq.tsx';
|
|
209
210
|
export * from '../dto/addressSelectRes.tsx';
|
|
210
211
|
export * from '../dto/addressSelectResItem.tsx';
|
|
211
|
-
export * from '../dto/addressUpdate.tsx';
|
|
212
212
|
export * from '../dto/addressView.tsx';
|
|
213
|
-
import type {
|
|
213
|
+
import type { IDtoOptionsAddressMineCreate } from '../dto/addressMineCreate.tsx';
|
|
214
|
+
import type { IDtoOptionsAddressMineItem } from '../dto/addressMineItem.tsx';
|
|
215
|
+
import type { IDtoOptionsAddressMineReq } from '../dto/addressMineReq.tsx';
|
|
216
|
+
import type { IDtoOptionsAddressMineRes } from '../dto/addressMineRes.tsx';
|
|
217
|
+
import type { IDtoOptionsAddressMineUpdate } from '../dto/addressMineUpdate.tsx';
|
|
218
|
+
import type { IDtoOptionsAddressMineView } from '../dto/addressMineView.tsx';
|
|
214
219
|
import type { IDtoOptionsAddressSelectReq } from '../dto/addressSelectReq.tsx';
|
|
215
220
|
import type { IDtoOptionsAddressSelectRes } from '../dto/addressSelectRes.tsx';
|
|
216
221
|
import type { IDtoOptionsAddressSelectResItem } from '../dto/addressSelectResItem.tsx';
|
|
217
|
-
import type { IDtoOptionsAddressUpdate } from '../dto/addressUpdate.tsx';
|
|
218
222
|
import type { IDtoOptionsAddressView } from '../dto/addressView.tsx';
|
|
219
223
|
import 'vona-module-a-web';
|
|
220
224
|
declare module 'vona-module-a-web' {
|
|
221
225
|
|
|
222
226
|
export interface IDtoRecord {
|
|
223
|
-
'commerce-member:
|
|
227
|
+
'commerce-member:addressMineCreate': IDtoOptionsAddressMineCreate;
|
|
228
|
+
'commerce-member:addressMineItem': IDtoOptionsAddressMineItem;
|
|
229
|
+
'commerce-member:addressMineReq': IDtoOptionsAddressMineReq;
|
|
230
|
+
'commerce-member:addressMineRes': IDtoOptionsAddressMineRes;
|
|
231
|
+
'commerce-member:addressMineUpdate': IDtoOptionsAddressMineUpdate;
|
|
232
|
+
'commerce-member:addressMineView': IDtoOptionsAddressMineView;
|
|
224
233
|
'commerce-member:addressSelectReq': IDtoOptionsAddressSelectReq;
|
|
225
234
|
'commerce-member:addressSelectRes': IDtoOptionsAddressSelectRes;
|
|
226
235
|
'commerce-member:addressSelectResItem': IDtoOptionsAddressSelectResItem;
|
|
227
|
-
'commerce-member:addressUpdate': IDtoOptionsAddressUpdate;
|
|
228
236
|
'commerce-member:addressView': IDtoOptionsAddressView;
|
|
229
237
|
}
|
|
230
238
|
|
|
@@ -235,16 +243,40 @@ declare module 'vona-module-commerce-member' {
|
|
|
235
243
|
}
|
|
236
244
|
/** dto: end */
|
|
237
245
|
/** dto: begin */
|
|
238
|
-
import type {
|
|
246
|
+
import type { DtoAddressMineCreate } from '../dto/addressMineCreate.tsx';
|
|
247
|
+
import type { DtoAddressMineItem } from '../dto/addressMineItem.tsx';
|
|
248
|
+
import type { DtoAddressMineReq } from '../dto/addressMineReq.tsx';
|
|
249
|
+
import type { DtoAddressMineRes } from '../dto/addressMineRes.tsx';
|
|
250
|
+
import type { DtoAddressMineUpdate } from '../dto/addressMineUpdate.tsx';
|
|
251
|
+
import type { DtoAddressMineView } from '../dto/addressMineView.tsx';
|
|
239
252
|
import type { DtoAddressSelectReq } from '../dto/addressSelectReq.tsx';
|
|
240
253
|
import type { DtoAddressSelectRes } from '../dto/addressSelectRes.tsx';
|
|
241
254
|
import type { DtoAddressSelectResItem } from '../dto/addressSelectResItem.tsx';
|
|
242
|
-
import type { DtoAddressUpdate } from '../dto/addressUpdate.tsx';
|
|
243
255
|
import type { DtoAddressView } from '../dto/addressView.tsx';
|
|
244
256
|
declare module 'vona-module-commerce-member' {
|
|
245
257
|
|
|
246
|
-
export interface
|
|
247
|
-
fields?: TypeEntityOptionsFields<
|
|
258
|
+
export interface IDtoOptionsAddressMineCreate {
|
|
259
|
+
fields?: TypeEntityOptionsFields<DtoAddressMineCreate, IDtoOptionsAddressMineCreate[TypeSymbolKeyFieldsMore]>;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export interface IDtoOptionsAddressMineItem {
|
|
263
|
+
fields?: TypeEntityOptionsFields<DtoAddressMineItem, IDtoOptionsAddressMineItem[TypeSymbolKeyFieldsMore]>;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export interface IDtoOptionsAddressMineReq {
|
|
267
|
+
fields?: TypeEntityOptionsFields<DtoAddressMineReq, IDtoOptionsAddressMineReq[TypeSymbolKeyFieldsMore]>;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export interface IDtoOptionsAddressMineRes {
|
|
271
|
+
fields?: TypeEntityOptionsFields<DtoAddressMineRes, IDtoOptionsAddressMineRes[TypeSymbolKeyFieldsMore]>;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
export interface IDtoOptionsAddressMineUpdate {
|
|
275
|
+
fields?: TypeEntityOptionsFields<DtoAddressMineUpdate, IDtoOptionsAddressMineUpdate[TypeSymbolKeyFieldsMore]>;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
export interface IDtoOptionsAddressMineView {
|
|
279
|
+
fields?: TypeEntityOptionsFields<DtoAddressMineView, IDtoOptionsAddressMineView[TypeSymbolKeyFieldsMore]>;
|
|
248
280
|
}
|
|
249
281
|
|
|
250
282
|
export interface IDtoOptionsAddressSelectReq {
|
|
@@ -259,10 +291,6 @@ declare module 'vona-module-commerce-member' {
|
|
|
259
291
|
fields?: TypeEntityOptionsFields<DtoAddressSelectResItem, IDtoOptionsAddressSelectResItem[TypeSymbolKeyFieldsMore]>;
|
|
260
292
|
}
|
|
261
293
|
|
|
262
|
-
export interface IDtoOptionsAddressUpdate {
|
|
263
|
-
fields?: TypeEntityOptionsFields<DtoAddressUpdate, IDtoOptionsAddressUpdate[TypeSymbolKeyFieldsMore]>;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
294
|
export interface IDtoOptionsAddressView {
|
|
267
295
|
fields?: TypeEntityOptionsFields<DtoAddressView, IDtoOptionsAddressView[TypeSymbolKeyFieldsMore]>;
|
|
268
296
|
}
|
|
@@ -304,18 +332,20 @@ declare module 'vona-module-commerce-member' {
|
|
|
304
332
|
}
|
|
305
333
|
}
|
|
306
334
|
declare module 'vona-module-a-web' {
|
|
307
|
-
export interface
|
|
308
|
-
'/commerce/member/address': undefined;
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
'/commerce/member/address': undefined;
|
|
335
|
+
export interface IApiPathGetRecord{
|
|
336
|
+
'/commerce/member/address/mine': undefined;
|
|
337
|
+
'/commerce/member/address/viewMine/:id': undefined;
|
|
338
|
+
'/commerce/member/address': undefined;
|
|
312
339
|
'/commerce/member/address/:id': undefined;
|
|
313
340
|
}
|
|
341
|
+
export interface IApiPathPostRecord{
|
|
342
|
+
'/commerce/member/address/createMine': undefined;
|
|
343
|
+
}
|
|
314
344
|
export interface IApiPathPatchRecord{
|
|
315
|
-
'/commerce/member/address/:id': undefined;
|
|
345
|
+
'/commerce/member/address/updateMine/:id': undefined;
|
|
316
346
|
}
|
|
317
347
|
export interface IApiPathDeleteRecord{
|
|
318
|
-
'/commerce/member/address/:id': undefined;
|
|
348
|
+
'/commerce/member/address/deleteMine/:id': undefined;
|
|
319
349
|
}
|
|
320
350
|
|
|
321
351
|
}
|
|
@@ -327,6 +357,32 @@ import 'vona-module-a-openapi';
|
|
|
327
357
|
}
|
|
328
358
|
|
|
329
359
|
/** controller: end */
|
|
360
|
+
/** ssrMenu: begin */
|
|
361
|
+
export * from '../bean/ssrMenu.address.ts';
|
|
362
|
+
import type { ISsrMenuOptionsAddress } from '../bean/ssrMenu.address.ts';
|
|
363
|
+
import 'vona-module-a-ssr';
|
|
364
|
+
declare module 'vona-module-a-ssr' {
|
|
365
|
+
|
|
366
|
+
export interface ISsrMenuRecord {
|
|
367
|
+
'commerce-member:address': ISsrMenuOptionsAddress;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
}
|
|
372
|
+
declare module 'vona-module-commerce-member' {
|
|
373
|
+
|
|
374
|
+
export interface SsrMenuAddress {
|
|
375
|
+
/** @internal */
|
|
376
|
+
get scope(): ScopeModuleCommerceMember;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
export interface SsrMenuAddress {
|
|
380
|
+
get $beanFullName(): 'commerce-member.ssrMenu.address';
|
|
381
|
+
get $onionName(): 'commerce-member:address';
|
|
382
|
+
get $onionOptions(): ISsrMenuOptionsAddress;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/** ssrMenu: end */
|
|
330
386
|
/** locale: begin */
|
|
331
387
|
import { locales } from './locales.ts';
|
|
332
388
|
/** locale: end */
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { IDecoratorSsrMenuOptions } from 'vona-module-a-ssr';
|
|
2
|
+
import type { ISsrSiteOptionsCommerceAdmin } from 'vona-module-commerce-siteadmin';
|
|
3
|
+
|
|
4
|
+
import { BeanBase } from 'vona';
|
|
5
|
+
import { $order } from 'vona-module-a-openapiutils';
|
|
6
|
+
import { SsrMenu } from 'vona-module-a-ssr';
|
|
7
|
+
|
|
8
|
+
import { $locale } from '../.metadata/locales.ts';
|
|
9
|
+
|
|
10
|
+
export interface ISsrMenuOptionsAddress extends IDecoratorSsrMenuOptions<ISsrSiteOptionsCommerceAdmin> {}
|
|
11
|
+
|
|
12
|
+
@SsrMenu<ISsrMenuOptionsAddress>({
|
|
13
|
+
items: {
|
|
14
|
+
address: {
|
|
15
|
+
title: $locale('Address'),
|
|
16
|
+
order: $order(3),
|
|
17
|
+
icon: undefined,
|
|
18
|
+
link: 'presetResource',
|
|
19
|
+
meta: {
|
|
20
|
+
params: {
|
|
21
|
+
resource: 'commerce-member:address',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
group: 'commerce-siteadmin:catalog',
|
|
25
|
+
roles: ['systemAdmin'],
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
site: ['commerce-siteadmin:commerceAdmin'],
|
|
29
|
+
})
|
|
30
|
+
export class SsrMenuAddress extends BeanBase {}
|
|
@@ -4,15 +4,19 @@ import type { IDecoratorControllerOptions } from 'vona-module-a-web';
|
|
|
4
4
|
|
|
5
5
|
import { BeanBase } from 'vona';
|
|
6
6
|
import { Api, Resource, v } from 'vona-module-a-openapiutils';
|
|
7
|
+
import { Passport } from 'vona-module-a-user';
|
|
7
8
|
import { Arg, Controller, Web } from 'vona-module-a-web';
|
|
8
9
|
import { z } from 'zod';
|
|
9
10
|
|
|
10
11
|
import type { ModelAddress } from '../model/address.ts';
|
|
11
12
|
|
|
12
|
-
import {
|
|
13
|
+
import { DtoAddressMineCreate } from '../dto/addressMineCreate.tsx';
|
|
14
|
+
import { DtoAddressMineReq } from '../dto/addressMineReq.tsx';
|
|
15
|
+
import { DtoAddressMineRes } from '../dto/addressMineRes.tsx';
|
|
16
|
+
import { DtoAddressMineUpdate } from '../dto/addressMineUpdate.tsx';
|
|
17
|
+
import { DtoAddressMineView } from '../dto/addressMineView.tsx';
|
|
13
18
|
import { DtoAddressSelectReq } from '../dto/addressSelectReq.tsx';
|
|
14
19
|
import { DtoAddressSelectRes } from '../dto/addressSelectRes.tsx';
|
|
15
|
-
import { DtoAddressUpdate } from '../dto/addressUpdate.tsx';
|
|
16
20
|
import { DtoAddressView } from '../dto/addressView.tsx';
|
|
17
21
|
|
|
18
22
|
export interface IControllerOptionsAddress extends IDecoratorControllerOptions {}
|
|
@@ -20,14 +24,46 @@ export interface IControllerOptionsAddress extends IDecoratorControllerOptions {
|
|
|
20
24
|
@Controller<IControllerOptionsAddress>('address')
|
|
21
25
|
@Resource()
|
|
22
26
|
export class ControllerAddress extends BeanBase {
|
|
23
|
-
@Web.
|
|
27
|
+
@Web.get('mine')
|
|
28
|
+
@Api.body(DtoAddressMineRes)
|
|
29
|
+
async mine(
|
|
30
|
+
@Arg.filter(DtoAddressMineReq) params: IQueryParams<ModelAddress>,
|
|
31
|
+
): Promise<DtoAddressMineRes> {
|
|
32
|
+
return await this.scope.service.address.mine(params);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@Web.get('viewMine/:id')
|
|
36
|
+
@Api.body(v.optional(), v.object(DtoAddressMineView))
|
|
37
|
+
async viewMine(
|
|
38
|
+
@Arg.param('id', v.tableIdentity()) id: TableIdentity,
|
|
39
|
+
): Promise<DtoAddressMineView | undefined> {
|
|
40
|
+
return await this.scope.service.address.viewMine(id);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@Web.post('createMine')
|
|
24
44
|
@Api.body(v.tableIdentity())
|
|
25
|
-
async
|
|
26
|
-
return (await this.scope.service.address.
|
|
45
|
+
async createMine(@Arg.body() address: DtoAddressMineCreate): Promise<TableIdentity> {
|
|
46
|
+
return (await this.scope.service.address.createMine(address)).id;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@Web.patch('updateMine/:id')
|
|
50
|
+
@Api.body(z.null())
|
|
51
|
+
async updateMine(
|
|
52
|
+
@Arg.param('id', v.tableIdentity()) id: TableIdentity,
|
|
53
|
+
@Arg.body() address: DtoAddressMineUpdate,
|
|
54
|
+
): Promise<void> {
|
|
55
|
+
await this.scope.service.address.updateMine(id, address);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@Web.delete('deleteMine/:id')
|
|
59
|
+
@Api.body(z.null())
|
|
60
|
+
async deleteMine(@Arg.param('id', v.tableIdentity()) id: TableIdentity): Promise<void> {
|
|
61
|
+
await this.scope.service.address.deleteMine(id);
|
|
27
62
|
}
|
|
28
63
|
|
|
29
64
|
@Web.get()
|
|
30
65
|
@Api.body(DtoAddressSelectRes)
|
|
66
|
+
@Passport.systemAdmin()
|
|
31
67
|
async select(
|
|
32
68
|
@Arg.filter(DtoAddressSelectReq) params: IQueryParams<ModelAddress>,
|
|
33
69
|
): Promise<DtoAddressSelectRes> {
|
|
@@ -36,24 +72,10 @@ export class ControllerAddress extends BeanBase {
|
|
|
36
72
|
|
|
37
73
|
@Web.get(':id')
|
|
38
74
|
@Api.body(v.optional(), v.object(DtoAddressView))
|
|
75
|
+
@Passport.systemAdmin()
|
|
39
76
|
async view(
|
|
40
77
|
@Arg.param('id', v.tableIdentity()) id: TableIdentity,
|
|
41
78
|
): Promise<DtoAddressView | undefined> {
|
|
42
79
|
return await this.scope.service.address.view(id);
|
|
43
80
|
}
|
|
44
|
-
|
|
45
|
-
@Web.patch(':id')
|
|
46
|
-
@Api.body(z.null())
|
|
47
|
-
async update(
|
|
48
|
-
@Arg.param('id', v.tableIdentity()) id: TableIdentity,
|
|
49
|
-
@Arg.body() address: DtoAddressUpdate,
|
|
50
|
-
): Promise<void> {
|
|
51
|
-
await this.scope.service.address.update(id, address);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
@Web.delete(':id')
|
|
55
|
-
@Api.body(z.null())
|
|
56
|
-
async delete(@Arg.param('id', v.tableIdentity()) id: TableIdentity): Promise<void> {
|
|
57
|
-
await this.scope.service.address.delete(id);
|
|
58
|
-
}
|
|
59
81
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { IDecoratorDtoOptions } from 'vona-module-a-web';
|
|
2
|
+
|
|
3
|
+
import { Api, v } from 'vona-module-a-openapiutils';
|
|
4
|
+
import { Dto } from 'vona-module-a-web';
|
|
5
|
+
|
|
6
|
+
import { $locale } from '../.metadata/locales.ts';
|
|
7
|
+
|
|
8
|
+
export interface IDtoOptionsAddressMineCreate extends IDecoratorDtoOptions {}
|
|
9
|
+
|
|
10
|
+
@Dto<IDtoOptionsAddressMineCreate>()
|
|
11
|
+
export class DtoAddressMineCreate {
|
|
12
|
+
@Api.field(v.title($locale('RecipientName')), v.required(), v.min(2), v.max(100))
|
|
13
|
+
recipientName: string;
|
|
14
|
+
|
|
15
|
+
@Api.field(v.title($locale('Phone')), v.required(), v.min(1), v.max(50))
|
|
16
|
+
phone: string;
|
|
17
|
+
|
|
18
|
+
@Api.field(v.title($locale('CountryCode')), v.required(), v.min(2), v.max(10))
|
|
19
|
+
countryCode: string;
|
|
20
|
+
|
|
21
|
+
@Api.field(v.title($locale('Region')), v.required(), v.min(1), v.max(100))
|
|
22
|
+
region: string;
|
|
23
|
+
|
|
24
|
+
@Api.field(v.title($locale('City')), v.required(), v.min(1), v.max(100))
|
|
25
|
+
city: string;
|
|
26
|
+
|
|
27
|
+
@Api.field(v.title($locale('PostalCode')), v.required(), v.min(1), v.max(30))
|
|
28
|
+
postalCode: string;
|
|
29
|
+
|
|
30
|
+
@Api.field(v.title($locale('AddressLine1')), v.required(), v.min(1), v.max(255))
|
|
31
|
+
addressLine1: string;
|
|
32
|
+
|
|
33
|
+
@Api.field(v.title($locale('AddressLine2')), v.optional(), v.max(255))
|
|
34
|
+
addressLine2?: string;
|
|
35
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { TableIdentity } from 'table-identity';
|
|
2
|
+
import type { IDecoratorDtoOptions } from 'vona-module-a-web';
|
|
3
|
+
|
|
4
|
+
import { Api, v } from 'vona-module-a-openapiutils';
|
|
5
|
+
import { Dto } from 'vona-module-a-web';
|
|
6
|
+
|
|
7
|
+
import { $locale } from '../.metadata/locales.ts';
|
|
8
|
+
|
|
9
|
+
export interface IDtoOptionsAddressMineItem extends IDecoratorDtoOptions {}
|
|
10
|
+
|
|
11
|
+
@Dto<IDtoOptionsAddressMineItem>()
|
|
12
|
+
export class DtoAddressMineItem {
|
|
13
|
+
@Api.field(v.tableIdentity())
|
|
14
|
+
id: TableIdentity;
|
|
15
|
+
|
|
16
|
+
@Api.field(v.title($locale('RecipientName')), v.required(), v.min(2), v.max(100))
|
|
17
|
+
recipientName: string;
|
|
18
|
+
|
|
19
|
+
@Api.field(v.title($locale('Phone')), v.required(), v.min(1), v.max(50))
|
|
20
|
+
phone: string;
|
|
21
|
+
|
|
22
|
+
@Api.field(v.title($locale('CountryCode')), v.required(), v.min(2), v.max(10))
|
|
23
|
+
countryCode: string;
|
|
24
|
+
|
|
25
|
+
@Api.field(v.title($locale('Region')), v.required(), v.min(1), v.max(100))
|
|
26
|
+
region: string;
|
|
27
|
+
|
|
28
|
+
@Api.field(v.title($locale('City')), v.required(), v.min(1), v.max(100))
|
|
29
|
+
city: string;
|
|
30
|
+
|
|
31
|
+
@Api.field(v.title($locale('PostalCode')), v.required(), v.min(1), v.max(30))
|
|
32
|
+
postalCode: string;
|
|
33
|
+
|
|
34
|
+
@Api.field(v.title($locale('AddressLine1')), v.required(), v.min(1), v.max(255))
|
|
35
|
+
addressLine1: string;
|
|
36
|
+
|
|
37
|
+
@Api.field(v.title($locale('AddressLine2')), v.optional(), v.max(255))
|
|
38
|
+
addressLine2?: string;
|
|
39
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IDecoratorDtoOptions } from 'vona-module-a-web';
|
|
2
|
+
|
|
3
|
+
import { $Dto } from 'vona-module-a-orm';
|
|
4
|
+
import { Dto } from 'vona-module-a-web';
|
|
5
|
+
|
|
6
|
+
import { EntityAddress } from '../entity/address.tsx';
|
|
7
|
+
|
|
8
|
+
export interface IDtoOptionsAddressMineReq extends IDecoratorDtoOptions {}
|
|
9
|
+
|
|
10
|
+
@Dto<IDtoOptionsAddressMineReq>()
|
|
11
|
+
export class DtoAddressMineReq extends $Dto.queryPage(EntityAddress, []) {}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IDecoratorDtoOptions } from 'vona-module-a-web';
|
|
2
|
+
|
|
3
|
+
import { $Dto } from 'vona-module-a-orm';
|
|
4
|
+
import { Dto } from 'vona-module-a-web';
|
|
5
|
+
|
|
6
|
+
import { DtoAddressMineItem } from './addressMineItem.tsx';
|
|
7
|
+
|
|
8
|
+
export interface IDtoOptionsAddressMineRes extends IDecoratorDtoOptions {}
|
|
9
|
+
|
|
10
|
+
@Dto<IDtoOptionsAddressMineRes>()
|
|
11
|
+
export class DtoAddressMineRes extends $Dto.listAndCount(DtoAddressMineItem) {}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IDecoratorDtoOptions } from 'vona-module-a-web';
|
|
2
|
+
|
|
3
|
+
import { Dto } from 'vona-module-a-web';
|
|
4
|
+
|
|
5
|
+
import { DtoAddressMineCreate } from './addressMineCreate.tsx';
|
|
6
|
+
|
|
7
|
+
export interface IDtoOptionsAddressMineUpdate extends IDecoratorDtoOptions {}
|
|
8
|
+
|
|
9
|
+
@Dto<IDtoOptionsAddressMineUpdate>()
|
|
10
|
+
export class DtoAddressMineUpdate extends DtoAddressMineCreate {}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IDecoratorDtoOptions } from 'vona-module-a-web';
|
|
2
|
+
|
|
3
|
+
import { Dto } from 'vona-module-a-web';
|
|
4
|
+
|
|
5
|
+
import { DtoAddressMineItem } from './addressMineItem.tsx';
|
|
6
|
+
|
|
7
|
+
export interface IDtoOptionsAddressMineView extends IDecoratorDtoOptions {}
|
|
8
|
+
|
|
9
|
+
@Dto<IDtoOptionsAddressMineView>()
|
|
10
|
+
export class DtoAddressMineView extends DtoAddressMineItem {}
|
|
@@ -15,9 +15,6 @@ export interface IDtoOptionsAddressSelectResItem extends IDecoratorDtoOptions {}
|
|
|
15
15
|
ZovaRender.block('basic-page:blockPage', {
|
|
16
16
|
blocks: [
|
|
17
17
|
ZovaRender.block('basic-page:blockFilter'),
|
|
18
|
-
ZovaRender.block('basic-page:blockToolbarBulk', {
|
|
19
|
-
actions: [ZovaRender.tableActionBulk('basic-table:actionCreate')],
|
|
20
|
-
}),
|
|
21
18
|
ZovaRender.block('basic-page:blockTable'),
|
|
22
19
|
ZovaRender.block('basic-page:blockPager'),
|
|
23
20
|
],
|
|
@@ -43,10 +40,7 @@ export class DtoAddressSelectResItem extends $Dto.get(() => ModelAddress, {
|
|
|
43
40
|
v.title($locale('Operations')),
|
|
44
41
|
ZovaRender.order(1, 'max'),
|
|
45
42
|
ZovaRender.cell('basic-table:actionOperationsRow', {
|
|
46
|
-
actions: [
|
|
47
|
-
ZovaRender.tableActionRow('basic-table:actionUpdate'),
|
|
48
|
-
ZovaRender.tableActionRow('basic-table:actionDelete'),
|
|
49
|
-
],
|
|
43
|
+
actions: [ZovaRender.tableActionRow('basic-table:actionView')],
|
|
50
44
|
}),
|
|
51
45
|
)
|
|
52
46
|
_operationsRow?: unknown;
|
|
@@ -1,57 +1,72 @@
|
|
|
1
1
|
import type { TableIdentity } from 'table-identity';
|
|
2
|
-
import type { IQueryParams } from 'vona-module-a-orm';
|
|
2
|
+
import type { IQueryParams, TypeModelColumns } from 'vona-module-a-orm';
|
|
3
3
|
|
|
4
4
|
import { BeanBase } from 'vona';
|
|
5
5
|
import { Service } from 'vona-module-a-bean';
|
|
6
6
|
|
|
7
|
-
import type {
|
|
7
|
+
import type { DtoAddressMineCreate } from '../dto/addressMineCreate.tsx';
|
|
8
|
+
import type { DtoAddressMineRes } from '../dto/addressMineRes.tsx';
|
|
9
|
+
import type { DtoAddressMineUpdate } from '../dto/addressMineUpdate.tsx';
|
|
10
|
+
import type { DtoAddressMineView } from '../dto/addressMineView.tsx';
|
|
8
11
|
import type { DtoAddressSelectRes } from '../dto/addressSelectRes.tsx';
|
|
9
|
-
import type { DtoAddressUpdate } from '../dto/addressUpdate.tsx';
|
|
10
12
|
import type { DtoAddressView } from '../dto/addressView.tsx';
|
|
13
|
+
import type { EntityAddress } from '../entity/address.tsx';
|
|
11
14
|
import type { ModelAddress } from '../model/address.ts';
|
|
12
15
|
|
|
16
|
+
const addressColumns: TypeModelColumns<EntityAddress> = [
|
|
17
|
+
'id',
|
|
18
|
+
'recipientName',
|
|
19
|
+
'phone',
|
|
20
|
+
'countryCode',
|
|
21
|
+
'region',
|
|
22
|
+
'city',
|
|
23
|
+
'postalCode',
|
|
24
|
+
'addressLine1',
|
|
25
|
+
'addressLine2',
|
|
26
|
+
'createdAt',
|
|
27
|
+
'updatedAt',
|
|
28
|
+
];
|
|
29
|
+
|
|
13
30
|
@Service()
|
|
14
31
|
export class ServiceAddress extends BeanBase {
|
|
15
|
-
async
|
|
16
|
-
return await this.scope.model.address.
|
|
17
|
-
...
|
|
18
|
-
|
|
32
|
+
async select(params?: IQueryParams<ModelAddress>): Promise<DtoAddressSelectRes> {
|
|
33
|
+
return await this.scope.model.address.selectAndCount({
|
|
34
|
+
...params,
|
|
35
|
+
orders: params?.orders ?? [['id', 'asc']],
|
|
19
36
|
});
|
|
20
37
|
}
|
|
21
38
|
|
|
22
|
-
async
|
|
39
|
+
async view(id: TableIdentity): Promise<DtoAddressView | undefined> {
|
|
40
|
+
return await this.scope.model.address.getById(id);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async mine(params?: IQueryParams<ModelAddress>): Promise<DtoAddressMineRes> {
|
|
23
44
|
return await this.scope.model.address.selectAndCount({
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
'recipientName',
|
|
27
|
-
'phone',
|
|
28
|
-
'countryCode',
|
|
29
|
-
'region',
|
|
30
|
-
'city',
|
|
31
|
-
'postalCode',
|
|
32
|
-
'addressLine1',
|
|
33
|
-
'addressLine2',
|
|
34
|
-
'createdAt',
|
|
35
|
-
'updatedAt',
|
|
36
|
-
],
|
|
45
|
+
...params,
|
|
46
|
+
columns: addressColumns,
|
|
37
47
|
where: { ...params?.where, userId: this._getCurrentUserId() },
|
|
38
|
-
orders: [['id', 'asc']],
|
|
39
|
-
limit: params?.limit ?? 20,
|
|
40
|
-
offset: params?.offset ?? 0,
|
|
48
|
+
orders: params?.orders ?? [['id', 'asc']],
|
|
41
49
|
});
|
|
42
50
|
}
|
|
43
51
|
|
|
44
|
-
async
|
|
52
|
+
async viewMine(id: TableIdentity): Promise<DtoAddressMineView | undefined> {
|
|
45
53
|
return await this._getOwnedAddress(id);
|
|
46
54
|
}
|
|
47
55
|
|
|
48
|
-
async
|
|
56
|
+
async createMine(address: DtoAddressMineCreate) {
|
|
57
|
+
return await this.scope.model.address.insert({
|
|
58
|
+
...address,
|
|
59
|
+
userId: this._getCurrentUserId(),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async updateMine(id: TableIdentity, address: DtoAddressMineUpdate) {
|
|
49
64
|
const ownedAddress = await this._getOwnedAddress(id);
|
|
50
65
|
if (!ownedAddress) return;
|
|
51
66
|
await this.scope.model.address.updateById(ownedAddress.id, address);
|
|
52
67
|
}
|
|
53
68
|
|
|
54
|
-
async
|
|
69
|
+
async deleteMine(id: TableIdentity) {
|
|
55
70
|
const ownedAddress = await this._getOwnedAddress(id);
|
|
56
71
|
if (!ownedAddress) return;
|
|
57
72
|
await this.scope.model.address.deleteById(ownedAddress.id);
|
|
@@ -64,21 +79,7 @@ export class ServiceAddress extends BeanBase {
|
|
|
64
79
|
private async _getOwnedAddress(id: TableIdentity) {
|
|
65
80
|
return await this.scope.model.address.get(
|
|
66
81
|
{ id, userId: this._getCurrentUserId() },
|
|
67
|
-
{
|
|
68
|
-
columns: [
|
|
69
|
-
'id',
|
|
70
|
-
'recipientName',
|
|
71
|
-
'phone',
|
|
72
|
-
'countryCode',
|
|
73
|
-
'region',
|
|
74
|
-
'city',
|
|
75
|
-
'postalCode',
|
|
76
|
-
'addressLine1',
|
|
77
|
-
'addressLine2',
|
|
78
|
-
'createdAt',
|
|
79
|
-
'updatedAt',
|
|
80
|
-
],
|
|
81
|
-
},
|
|
82
|
+
{ columns: addressColumns },
|
|
82
83
|
);
|
|
83
84
|
}
|
|
84
85
|
}
|