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

创建收货地址的过程中, 一共涉及到三张表

一张为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对象。

时间: 2024-10-10 21:33:12

收货地址表结构 以及创建修改流程的相关文章

阶段一-03.地址,订单,支付,定时任务开发-第1章 收货地址功能开发-1-1 收货地址 - 需求分析与表设计

结算页面让用户确认信息,选择收货地址 还需要开发的是整理的收货地址 生产环境上的效果 默认选中的地址 新增一个测试的地址 这就是新增的地址 用户初次进入到订单结算页面,默认选中的是默认地址 和地址相关的数据库 省市区,都是在js里面进行维护的 其实就是一个json的数组,包含了很多的内容. 创建conroller AddressController 结束 原文地址:https://www.cnblogs.com/wangjunwei/p/12359446.html

【地图API】收货地址详解2

上次讲解的方法是: 在地图中心点添加一个标注,每次拖动地图就获取地图中心点,再把标注的位置设置为地图中心点.可参考教程:http://www.cnblogs.com/milkmap/p/6126424.html 可能有开发者觉得,这个算法会有“延时”,这次提供一个新的方法: 将一张标注图片始终固定在地图中央,不在地图上添加标注. 使用CSS将一张标注样子的图片,固定在地图中央. <style> #mapBox{height:400px;width:600px;position:absolute

谈一谈用户的默认收货地址

如题,今天要谈一谈用户的默认收货地址 为什么要谈这个问题,感觉这是一个非常成熟的设计和解决方案了,为什么还要谈.谈这个的导火索是产品妹妹过来跟我说咱们的用户地址是不是用问题,为什么我的地址不是上一次的收货地址了.然后我balabalabala说了一堆,我想我们是想要做一好的产品,还是要做一个产品,是为了解决问题,还是为了更好的解决问题,现成的京东淘宝当当可以参考的模式,我们为什么不学习一下.然后我balabalabal说了一堆之后,让产品妹妹看了设计,看了数据库,让她再次看了自己的收货地址,然后

wex5实战之管理收货地址(二)

接着上一张管理收货地址,这章主要讲解新增,编辑,选择省市区功能,主要有windowReceiver.windowDialog.tree组件的使用. 1.新增.编辑地址,页面. 在页面中放入windowReceiver.windowDialog组件 windowReceiver:用于接收地址参数,判断是否为新增或编辑. windowDialog:用于打开选择省市区弹窗,返回选择数据. Model.prototype.windowReceiver1Receive = function(event){

微信共享收货地址 edit_address:fail 吐白沫级解决方案

又被微信坑了一整天,看完官方文档怎么测试都不通过,我一直怀疑是新版本微信支付我没有设置“共享收货地址”开关造成的. 后来经过验证,新版本不需要做这件事了. 那么,我没错,是微信的文档没及时更新... 查了几个技术博客得知,这个接口在2016年的年中已经升级了,旧版的那个接口不能使了. 于是那个什么Addrsign就去见鬼了. 真的无力吐槽微信团队的文档水平和工作态度,这一家独大的优越感.. 好了好了,说正事儿: 首先,你得开通微信支付,其次,要在微信公众后台配置个安全域名的URL,设置下微信支付

微信收货地址开发分享

微信支付做了有一定时间了,现在就来做一些知识的总结,总体来说微信支付的文档不是非常的完美,其中存在一些问题.虽然坑很多,但是还是把问题解决了. 微信支付的收货地址共享功能,主要是统一的管理微信用户个人的收货地址,其收货地址可以被应用于所有可以调用的开发者.用户的收货地址包含了很多个人信息,因此该接口必须要通过申请,申请的方式可以在mp平台上查看到. 申请开通 包含微信支付功能时,则需要配置微信的支付目录(支付目录为绝对路径,例如支付接口为wxpay.php,而该文件在wxpay目录下,那么支付目

(转)微信收货地址开发分享

微信支付做了有一定时间了,现在就来做一些知识的总结,总体来说微信支付的文档不是非常的完美,其中存在一些问题.虽然坑很多,但是还是把问题解决了. 微信支付的收货地址共享功能,主要是统一的管理微信用户个人的收货地址,其收货地址可以被应用于所有可以调用的开发者.用户的收货地址包含了很多个人信息,因此该接口必须要通过申请,申请的方式可以在mp平台上查看到. 申请开通 包含微信支付功能时,则需要配置微信的支付目录(支付目录为绝对路径,例如支付接口为wxpay.php,而该文件在wxpay目录下,那么支付目

【小程序】获取微信 自带的 收货地址获取和整理

1.wx.chooseAddress(OBJECT) if(wx.chooseAddress){ wx.chooseAddress({ success: function (res) { console.log(JSON.stringify(res)) }, fail: function(err){ console.log(JSON.stringify(err)) } }) }else{ console.log('当前微信版本不支持chooseAddress'); } 2.数据处理,仅供参考 /

wex5实战之管理收货地址(一)

今天要与大家分享的是实战项目之管理收货地址,现在各种电商app管理收货地址样式越来越多,效果也越来越好.本次项目步骤有这么几个: 1.list迭代json数据,初始化默认收货地址. 2.list数据增.删.改.查. 首先展示效果图,如下: 图一为管理地址页 图二为新增收货地址页 图三为选择城市地区 下面进行详细代码讲解: 1.初始化list数据 Model.prototype.addressDataCustomRefresh = function(event){ var addressData