现在开放平台下有多个应用,小程序,APP,公众号,目前只存储了 unionid(在user表中) ,对应 openID 和 access_token并未存储, 现在需要用到公众号下的openID(做模板信息推送),现在该如何存这个 openID ?
想法:新建 wx_user表 ,对应 user_id ,xiao_openid,gong_openid,app_openid,access_token,access_token_time ,把对应的openid全部存到用户的关了信息表中 ,access_token 计划任务刷新
这样的话,如果新加个公众号2,又需要改数据库了,各位大佬给指点下该如何操作?谢谢了

CREATETABLE`xxx_app` (`aid`int(10) unsignedNOTNULLAUTO_INCREMENT COMMENT'app自增id',`appid`varchar(64)NOTNULLDEFAULT''COMMENT'应用appid',`type` tinyint(1) unsignedNOTNULLDEFAULT'0'COMMENT'应用类型,1小程序,2公众号,3App',`name`varchar(150)NOTNULLDEFAULT''COMMENT'应用名称',PRIMARYKEY(`aid`),UNIQUEKEY`a_t` (`appid`,`type`) USING BTREE COMMENT'appid和type唯一索引') ENGINE=InnoDBDEFAULTCHARSET=utf8 COMMENT='app - 应用信息表';CREATETABLE`xxx_user_appinfo` (`uid`int(10) unsignedNOTNULLDEFAULT'0'COMMENT'用户uid',`aid`int(10) unsignedNOTNULLDEFAULT'0'COMMENT'所属应用aid',`openid`varchar(64)NOTNULLDEFAULT''COMMENT'用户openid',`unionid`varchar(64)NOTNULLDEFAULT''COMMENT'用户unionid',`access_token`varchar(500)NOTNULLDEFAULT''COMMENT'access_token',`expire_in`int(10)NOTNULLDEFAULT'0'COMMENT'有效期,expire_in',`dateline`int(10) unsignedNOTNULLDEFAULT'0'COMMENT'记录时间戳',PRIMARYKEY(`uid`),UNIQUEKEY`u_a` (`uid`,`aid`) USING BTREE COMMENT'用户uid和应用aid唯一索引',KEY`o_u` (`unionid`,`openid`) COMMENT'unionid和openid常规索引') ENGINE=InnoDBDEFAULTCHARSET=utf8 COMMENT='用户 - app相关信息表';收藏
存json嘛
{
"wxappid1": "wx1openid",
"wxappid2": "wx2openid"
}
还有个问题就是,老用户是不是获取不到公众号的openID了,已关注授权后,没有用户交互,是不是就获取不到信息了
在原表上整加一个类型字段用来区分是APP还是公众号或小程序的,然后openid和unionid做为独立字段,获取用户唯一标识的时候以unionid为准,不是就可以了?
老用户的信息肯定只能重新访问的时候获取
嗯,这样应该改动比较小
不过理解有点问题,应该是一个openid和unionid外加类型是同一条数据