收货地址表结构 以及创建修改流程

创建收货地址的过程中, 一共涉及到三张表
 
一张为PostalAddress  contact_mech    party_contact_mech  
创建的流程  调用createPartyPostalAddress 这个服务,在这个服务里面的simple_method 的分别先后调用了两个service服务,
第一个为createPostalAddress   第二个服务为createPartyContactMech
createPostalAddress服务中调用的simple_method的方法,调用了createContactMech这个服务,固定参数为contactMechTypeId 这个参数的值为POSTAL_ADDRESS,当创建完这个联系方式之后返回的contactMechId 保存postalAdress这个对象,根据返回的这个contactMechId回参,在调用createPartyContactMech这个服务,创建partyId对应的联系方式的数据、创建PartyContactMech这个对象。
 
 
设置默认收货地址
针对的是PartyProfileDefault这个对象,这个对象是专门来记录默认收回地址数据的。
大体的流程是判断当前登录的partyId是否设置了默认收货地址,如果设置了默认收货地址,则进行保存操作,如果从来没有设置过这个默认收货地址,则进行创建操作。
 
 
修改收货地址的过程
updatePartyPostalAddress这个服务是用来修改收货地址的,该服务调用的updatePartyPostalAddress simpleMethod方法里面分别前后调用了两个updatePostalAddress,updatePartyContactMech 这两个服务,在updatePostalAddress服务里面,根据参数对应出一个新的PostalAdress实体对象newValue,通过主键查询到原来存在数据库里面的数据 封装成对象oldValue,判断两个实体对象是否相等,如果不相等,则调用createContactMech这个服务,去创建一个新的收货地址(在这个服务里面,都会新增两个实体对象,分别为contactMech跟postalAddress),因为创建了两个新的收货地址相关的对象,如果原来这个收货地址已经被设置为默认收货地址,如果在进行过修改,那么原来的默认收货地址将会消失,所以可以在相应的部分添加判断,如果添加了两个新的对象的话,调用一下设置默认地址的服务,传一些必要的参数,这样就能保证修改之后,在用户体验上,让用户看到的是默认地址没有发生变化。
     
<!-- wqc 修改的时候  会新增一条记录,并且将标识设为1其余的设为空,需要将party的默认地址重新设置一下   -->
            <if-compare-field to-field="parameters.defaultShipAddr" field="oldValue.contactMechId" operator="equals">
                 <set-service-fields service-name="setPartyProfileDefaults" map="parameters" to-map="partyProfileDefaultsCtx"/>
                 <set field="partyProfileDefaultsCtx.defaultShipAddr" from-field="newValue.contactMechId"/>
                 <set field="partyProfileDefaultsCtx.partyId" from-field="userLogin.partyId"/>
                 <set field="partyProfileDefaultsCtx.productStoreId" from-field="parameters.productStoreId"/>
                 <set field="partyProfileDefaultsCtx.companyId" from-field="parameters.companyId"/>
                 <call-service service-name="setPartyProfileDefaults" in-map-name="partyProfileDefaultsCtx"/>
            </if-compare-field>

 

在updatePartyContactMech  服务中,根据partyId查询出存在的对象列表,然后取出第一个进行克隆,将原来的party的有效时间设置为当前时间,也就是将原来的数据设置为无效,然后重新创建一个partyContactMech对象。

转载于:https://www.cnblogs.com/wangqc/p/ofbiz_postalAddress.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 功能: 1. 用户可以创建订单,包括选择商品、填写收货地址和付款方式等信息。 2. 用户可以查看订单列,包括订单号、日期、金额、订单数量、订单状态等信息。 3. 用户可以查看订单详情,包括具体图书信息和确认收货等功能。 4. 用户可以进行订单分页,便于查看。 接口: 1. 创建订单接口:createOrder(orderInfo) 2. 查看订单列接口:getOrderList(pageNum, pageSize) 3. 查看订单详情接口:getOrderDetail(orderId) 4. 确认收货接口:confirmDelivery(orderId) 5. 订单分页接口:pagingOrder(pageNum, pageSize) 输入项: 1. orderInfo:订单信息,包括商品信息、收货地址和付款方式等。 2. pageNum:需要查看的页码。 3. pageSize:每页展示的订单数量。 4. orderId:需要查看的订单号。 输出项: 1. createOrder:返回订单号。 2. getOrderList:返回订单列,包括订单号、日期、金额、订单数量、订单状态等信息。 3. getOrderDetail:返回订单详情,包括具体图书信息和确认收货等功能。 4. confirmDelivery:返回确认收货成功或失败的信息。 5. pagingOrder:返回分页后的订单列。 算法: 1. 分页算法:根据总订单数和每页展示的订单数量,计算总页数和每页展示的订单列。 性能: 1. 数据库查询性能:订单数量较大时,需要优化数据库查询性能。 2. 分页算法性能:需要考虑分页算法的性能,避免影响用户体验。 逻辑流程: 1. 用户创建订单,选择商品、填写收货地址和付款方式等信息。 2. 创建订单接口将订单信息保存到数据库,并返回订单号。 3. 用户可以查看订单列,包括订单号、日期、金额、订单数量、订单状态等信息。 4. 用户可以点击订单号查看订单详情,包括具体图书信息和确认收货等功能。 5. 用户可以确认收货,确认收货接口将订单状态更新为已完成。 6. 用户可以进行订单分页操作,分页算法根据总订单数和每页展示的订单数量,计算总页数和每页展示的订单列。 ### 回答2: 软件名称:订单管理系统 功能: 1. 订单信息:显示订单列,包括订单号、日期、金额、订单数量、订单状态等信息。 2. 订单详情:点击订单列中的订单号,查看订单的具体图书信息,并可以确认收货。 3. 订单分页:如果订单数量过多,可以进行分页查看,方便用户浏览。 接口: 1. 获取订单信息接口:根据接口参数,返回订单列的订单号、日期、金额、订单数量、订单状态等信息。 2. 查看订单详情接口:根据订单号,返回该订单的具体图书信息。 3. 确认收货接口:根据订单号,将订单状态修改为已收货。 输入项: 1. 订单号:用于获取订单详情和确认收货时的标识。 2. 订单详情页码:分页查看订单详情时,输入页码进行跳转。 输出项: 1. 订单列:包含订单号、日期、金额、订单数量、订单状态等信息。 2. 订单详情:具体图书信息。 3. 确认收货成功/失败提示信息。 算法: 1. 分页算法:根据每页显示的订单数量和总订单数量,计算总页数并进行分页处理。 性能: 1. 响应时间:订单信息和订单详情的查询需保证快速响应,不超过2秒。 2. 并发处理:能够同时处理多个用户的订单信息查询、详情查看和确认收货请求。 3. 数据存储和读取:订单数据应以合理的方式存储,读取时能够高效地获取。 逻辑流程: 1. 用户登录系统。 2. 进入订单管理界面,显示订单列。 3. 用户可以选择不同的分页,查看更多订单信息。 4. 点击订单列中的订单号,进入订单详情页面,查看图书信息。 5. 在订单详情页面,用户可以进行确认收货操作。 6. 确认收货成功后,更新订单状态。 7. 用户可以随时退出系统。 ### 回答3: 软件详细设计: 功能: 1. 订单信息:显示订单的基本信息,包括订单号、日期、金额、订单数量、订单状态、订单详情。 2. 订单详情:查看订单详细信息,包括具体图书信息,并提供确认收货功能。 3. 订单分页:为用户方便查看,对订单进行分页展示。 接口: 1. 用户界面接口:提供订单信息、订单详情、订单分页的展示和交互功能。 2. 数据库接口:用于查询和更新订单信息。 输入项: 1. 订单号:用户输入需要查看的订单号。 2. 分页参数:指定当前显示的页码和每页显示的订单数量。 输出项: 1. 订单信息:展示具体的订单信息,包括订单号、日期、金额、订单数量、订单状态、订单详情。 2. 订单详情:展示具体图书的信息,如书名、作者、价格等。 3. 分页信息:展示当前页码和总页数。 算法: 1. 分页算法:根据用户指定的分页参数,计算当前应该显示的订单范围。 2. 数据库查询算法:根据订单号从数据库中查询相关订单信息,并根据分页算法进行限制。 性能: 1. 数据库性能:合理设计数据库结构和索引,以提高订单查询和更新的性能。 2. 界面响应性能:通过合理的界面设计和优化,保证用户在浏览订单信息时的操作流畅度。 逻辑流程: 1. 用户输入订单号,系统根据订单号查询订单信息,并展示在界面上。 2. 用户可以选择查看订单详情,系统根据订单号查询具体图书信息并展示在界面上。 3. 用户在订单详情界面可以选择确认收货操作。 4. 用户可以选择分页参数,系统根据分页参数查询并展示订单分页信息。 5. 用户可以通过点击不同的页码或使用向前/向后翻页功能浏览订单的不同页码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值