领域划分开发规范

一、按照领域划分URL请求规范
url命名和参数顺序表达请求含义
1.基本请求:
● /workbench/bidding-orders 作为招标单为划分的领域主体
● 分页 GET: /workbench/bidding-orders/findPage
● 详情:GET: /workbench/bidding-orders/{orderId}
● 新增: POST:/workbench/bidding-orders/add
● 更新:PUT:/workbench/bidding-orders/{orderId}
● 发布:POST:/workbench/bidding-orders/release
2.招标
● 供应商列表:/workbench/bidding-orders/{orderId}/suppliers/listing
● 报名审核通过 /workbench/bidding-orders/{orderId}/apply/{applyId}/through
● (云采购接口)供应商报名审核通过 /workbench/bidding-orders/{orderId}/supplier-applies/suppliers/{supplierId}/through
3.交易
● 1.查询供应商的保证金信息 (交易trade 下的 采购单下{orderId}的供应商{supplierId}):
url:/workbench/purchase-trades /{orderId}/suppliers/{supplierId}/deposit
查询要按照采购类型 purchaseType确定保证金则参数顺序是
@PathVariable Long orderId, @PathVariable Long supplierId, @RequestParam Integer purchaseType

2.查看报名供应商详情(交易trade下的采购单 {orderId} 下的某个供应商响应 /supplier-applies/{applyId}/listing )
url:/workbench/purchase-trades /{orderId}/supplier-applies/{applyId}/listing
还需要采购类型参数则参数顺序为 @PathVariable Long orderId, @PathVariable Long applyId, @RequestParam Integer purchaseType

二、开发代码规范
● 1.对分页方法在此controller和service下查询
分页方法统一命名:findXXPage 如:findOrderPage, findApplyPage, findOfferPage
查询一个对象方法为findXX 如:findApply ,findOffer
● 2.对 mapper的po 查询方法 获取list用selectXXList, 如 selectApplyList, selectInviteList , selectOfferList
● 3.获取一个则用selectXXOne,如,用指定的poMapper用selectOne,如: applyPoMapper.selectOne
● 4.对于Repository 持久化层不要 一个po对应一个持久化,一个Repository可以有多个po
如,BiddingCandidateRepositoryImpl 候选领域持久化包含 候选,候选详情,招标单,公告等poMapper
2.1 代码参数和顺序规范
● 1.查询某个采购类型下的招标单的供应商的保证金
findDeposit(Integer purchaseType, Long orderId, JczhSupplier supplier);
2.对数据组装的assemble(a,b),表达含义是把b的数据组装给a
如 assembleAddress(form, info) 表达含义为 把info对象中的地址组装到form对象里面
3.对新增,更新,发布接口 参数顺序为 form->assemble(form) 成为bo->root->repository.saveRoot(root);
4.在service中的bo转为root持久化过程为

standar()->assembleBo->bo.check()->bo.release()->bo.assembleRoot()->root.release()->root.save()
分别表示 初始化->组装->校验->构建聚合根->发布->数据持久化
三、对象的构建规范
3.1 值对象info:为属性中一般不变的值或者只变化一次的属性,
比如,不变的属性地址 address,招标方式 biddingType,
只变一次的属性如:ordeeCode,release_time,等

实体对象entity: entity是由 info对象和的属性值组合而成
比如 order 的 orderEntity :主键招标单id(orderId), 发布状态(release_status) 为会随着操作变化的属性值
info包含 orderCode 采购单号,地址 addressInfo,其中主键id比较特殊为实体的唯一标识映射数据库表的id,数据属性值不是值对象

聚合根root: TODO 各个实体需要持久化的entity组成

业务对象bo: TODO 单独属性和各个info对象组合成
pk对象: 作为所有对象主键id集成的属性,
用于区分查询查询主键,而不是 findById(Long companyId) 而是 findById(CompanyId companyId)

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值