BUG修复---帐号更换绑定修复bug心得

来源:互联网 发布:mac照片导入lightroom 编辑:程序博客网 时间:2024/06/07 02:28

               最近几天一直在修复关于帐号绑定之后线上线下积分没有同步的bug,先说下造成这个bug的环境吧。情况是这样的,主要是针对拥有实体店,也就是线下的店铺原本是拥有他们自己的数据库统计会员的信息,包括vip会员的个人资料,微信个人信息,积分,会员卡余额等信息记录,现在他们想通过接口打通线上,也就是微信公众号,会员可以通过关注他们的公众号成为粉丝,该公众号可以注册成为会员,或者以前线下店铺是会员的情况下可以通过老会员绑定,把以前线下的积分,余额这些全部转移到新绑定的帐号上,并且也可以在线上购买店铺里的商品,打造线上线下一体化。

现在新注册的会员的卡号我们做了一个配置文件进行管理,配置文件中的值为P也就是phone手机的话,那么会员注册时就会根据该用户的手机号当作卡号传到店铺的数据库里,如果为C也就是cardnum的话,我们线上会生成一个15位不重复的卡号,将这个卡号传到线下店铺的数据库里。

这个时候就会出现问题了,先说下积分这块的情况,我们的线上微信号里积分可以通过签到,购物等情况增加,也可以通过积分商城积分兑换商品,在线商城购物使用积分抵值,大转盘,刮刮乐等活动消耗。那么这些积分的消耗线上和线下都会有中间表来记录这些积分增减的详情,而这些记录积分变动的中间表的ID就是卡号,问题就是出在这里,因为以前的老客户他们的会员卡号是以前就有的,可以通过绑定,也就是输入以前的老会员卡号,进行绑定,而新用户注册的话有2个选项,要么是手机号,要么是线上生成的15位数做卡号。如果在配置文件设置为了P,这样新用户在使用积分的时候,积分是能够正常消耗和增加的,而老用户通过绑定之后,积分是不会改变,因为老会员的卡号不是手机号,相反,如果配置文件中设置为了C,那么就会出现老会员使用积分是正常的,但是新会员则积分不会发送改变。

       所以后来通过分析,我们做了这样的调整,在插入到中间表的时候先进行下判断,如果线上的卡号和线下为一致的话,就根据线下的卡号来做卡号,否则根据用户的手机号,那么条件就是一条根据微信id查询线下的会员表,如果为空的情况,那就是以前线下的老会员,直接把卡号设置为手机号,如果查询出来线上线下一致的话根据线下的卡号,把最后得到的这个值插入到积分中间表中,这样中间表和线下会员的卡号就是一致的了,更新会员表积分也是用同样的道理,在更新前先那微信ID去查询线下的会员卡号,一样的话拿线下的卡号,不一致拿线上的手机号,这样不管是插入中间表还是更新线下会员主表都能有正确的卡号了。

其实吧,这个问题最主要BUG就出在了以前老用户的卡号,和现在新用户注册之后插入到线下的卡号不统一造成的。所以在插入积分记录表和更新线下会员表的关键条件---卡号不明确而产生的问题。解决方法就是在插入记录表和更新会员表先通过线上的微信ID去查询下线下的会员表的卡号,做一个比对,一样的话取线下的卡号,不一样或者不存在则取线上的手机号,以前的老会员没有对接微信,也是没有微信ID的,所以也是用手机号做卡号查询


原创粉丝点击