收货地址表结构 以及创建修改流程
2015-06-11 14:18
429 查看
创建收货地址的过程中, 一共涉及到三张表
一张为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),因为创建了两个新的收货地址相关的对象,如果原来这个收货地址已经被设置为默认收货地址,如果在进行过修改,那么原来的默认收货地址将会消失,所以可以在相应的部分添加判断,如果添加了两个新的对象的话,调用一下设置默认地址的服务,传一些必要的参数,这样就能保证修改之后,在用户体验上,让用户看到的是默认地址没有发生变化。
在updatePartyContactMech 服务中,根据partyId查询出存在的对象列表,然后取出第一个进行克隆,将原来的party的有效时间设置为当前时间,也就是将原来的数据设置为无效,然后重新创建一个partyContactMech对象。
一张为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对象。
相关文章推荐
- 关于keil单片机编程中的data,idata,xdata,pdata,code数据类型
- leetcode:Rectangle Area
- [转] 美股评论:远离波动的噪音
- React.js 基础入门三 ---组件状态state
- Initialization failed for block pool Block pool <registering> (Datanode Uuid unassigned) service
- UIViewController的生命周期及iOS程序执行顺序
- Android网络框架技术
- Windows10升级预约可以取消吗?
- java生成密码,包含大小写和数字
- Android中layout_weight属性设置规则
- 什么时候面向文档NoSQL数据库可以代替SQL数据库
- cp,rm,mv,mkdir, cd
- 【HTML+CSS】(2)CSS Sprite雪碧图
- ffmpeg源码跟踪笔记之av_read_frame
- Tomcat5启动流程与配置详解
- javascript 实现页面加载完再显示页面
- 关于oracle LISTAGG函数的用法(以某个字段相同情况下,将对应的另一个字段连接起来)
- LeetCode 之 Search for a Range — C++ 实现
- 线程函数 pthread_detach()
- Cocoa Touch事件处理流程--响应者链