码迷,mamicode.com
首页 > 数据库 > 详细

微擎公众号数据库迁移让之前用户数据不变

时间:2021-07-05 18:23:20      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:公众   完整   另一个   开始   参数   信息   表示   行操作   原因   

使用微擎的时候 之前使用的一个公众号,运营后想更换另一个公众号,但是 更换的话  用户的余额 积分 一些应用的数据 会不存在这让好多运维都会很尴尬,急忙找人在自己的云服务器上一通乱搞。今天给大家分享一个微擎粉丝迁移 数据库用户不变的方法

微信公众平台粉丝迁移使用场景

有两个公众号A和B,微擎绑定公众号A运营一段时间,拥有粉丝和运营数据,因故不能继续使用公众号A运营,在微擎后台中把公众号A的绑定参数缓存公众号B的参数,然后在微信官方提交了粉丝迁移申请并且已经完成了粉丝迁移。这时原公众号A的粉丝自动迁移到了公众号B,但是用户进入系统后发现原来的数据信息都被清空。

粉丝数据清空的原因

微擎系统的数据实际并没有被清空,微信公众平台的官方虽然完成了粉丝迁移,但同一个粉丝关注的是不同的公众号,导致 open ID (被称为微信粉丝的身份证号)发生了变化,虽然是同一个粉丝但是生成了两个 open ID,所有的数据信息都在原open ID ,新生成的 open ID  没有数据。

恢复粉丝数据的方法

方法一、在进行官方粉丝迁移前,申请微信开放平台,同时接入公众号A和公众号B。这样可以在完成粉丝迁移后可以保证粉丝数据完整。此方法的优点是简单省事,缺点是微信开放平台每年需要300元的费用。

方法二、如果舍不得口袋里的银子,可以不用开放平台,通过技术处理。具体处理方案如下:

1、原粉丝数据表增加一个字段记:trans_status  用该字段标记粉丝状态:0表示未迁移,1表示已迁移,2表示新用户, 3表示需要手动处理。粉丝新关注后默认状态为新用户。

2、找到原粉丝数据表的最后一个id号,比如id为10086这个号。 旧粉丝标记为未迁移: update set trans_status=0 from ims_jueqi_knowme_user where id<=10086。

3、 对新关注的用户进行匹配,判断该用户是否是老粉丝迁移过来的,从10087开始向下一条一条的处理 Select id from ims _ jueqi _ knowme _ user where nickname = ( Select nickname from ims _ jueqi _ knowme _ user where id=10087 )。

说明:

  • 这条SQL语句中的 ims _ jueqi _ knowme _ user 是微擎应用的粉丝数据库表名称。
  • 上述举例中采用的匹配条件是微信昵称 nicename 。可以根据自己的情况选择采用手机号或者其他匹配条件。
  • 如果这条SQL语句执行结果为空就是没有同名的,那么认为是新用户,这条记录的 trans_status 标记为状态 2 并且不进行行操作。
  • 如果这条SQL语句执行结果大于 1 条记录,则认为有多人同名,这条记录的 trans_status 标记为状态 3并且打印这个需要手动来处理用户。
  • 如果这条SQL语句执行结果只有 1 条记录。则删除本条id(如10087)的数据,并把找到的那一条的 open ID 替换成新的open ID 。

4、由于粉丝关注新公众号(公众号B)的时间不统一,所以上述方案生成 php 文件,可以反复执行。

微擎公众号数据库迁移让之前用户数据不变

标签:公众   完整   另一个   开始   参数   信息   表示   行操作   原因   

原文地址:https://www.cnblogs.com/yuan9580/p/14966372.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!