项目功能简介
该项目是一个微信积分活动推广的好友助力活动,当好友助力的助力值达到要求后就可以获得为粉丝准备的礼品。
流程是这样的:公众号粉丝在公众号内回复“报名”,获取活动参与链接,参与活动后可以获取本人参与活动的海报,海报中有用户的头像,和公众号的二维码,用户将该海报分享给好友或者发布朋友圈,其他人扫描了该活动的二维码并且也回复报名参与了该活动,则代表助力成功,为分享该海报的用户助力值加1,并且推送模板消息给分享者告知xxx为您助力,目前助力值是xxx,助力的用户也可以循环分享海报让好友进行助力。活动期间可以输入“排行榜”查看自己的助力值和排名,活动结束后,统计助力值排行榜进行该活动礼品的发放。
主要有一下的功能:
- 活动报名
- 活动推广海报
- 活动积分排行榜
- 好友助力
功能实现逻辑
输入报名
1、后台收到消息判断后,返回参与活动报名链接文本消息
该链接是微信js网页授权链接
2、点击参与活动链接,向微信服务器发送请求,获取授权code
3、然后携带code重定向到/getSignUpUserInfo
获取报名用户的信息接口,后台根据code换取openid
4、然后拿到access-token,用openid和access-token拉取用户的基本信息,解析获得微信号、昵称、头像
5、最后将这些信息存入对应sql表
6、返回给用户一个H5报名成功的页面
输入海报
1、后台收到消息判断后,进行对应的海报逻辑处理
2、生成关注公众号二维码,携带场景值用户openid,将最后换取的二维码命名为openid + 后缀保存在本地
3、从数据库获取报名后获取的用户头像,从本地根据openid文件名获取公众号二维码,使用java图片合成工具ImageCombiner对上述两张图片和一张海报背景图进行合并,生成最终海报图片,根据openid + _full.png命名海报图片保存本地
4、将合成海报图片上传到微信服务器
5、返回微信图片消息
输入排行榜
1、后台收到消息判断后,进行对应的排行榜逻辑处理,返回排行榜链接文本消息
2、点击排行榜链接,请求后台接口,查询数据库信息、生成排行榜,返回排行榜的html
3、最后客户端显示后台处理好的排行榜的html页面
好友助力
1、当将海报分享给好友后,别人扫面海报上的二维码,后台根据关注消息类型做出相应的逻辑
2、获取扫描关注信息的场景值,海报生成用户的openid
3、将分享者信息和被关注者存入数据库的关注量表和关注记录表 t_follow_info
4、给海报分享者推送消息,发送模版消息,通知 xx好友帮你助力,你目前的助力值为xx
5、回复扫码用户活动详情、点击链接参与活动
6、后续活动参与和上述报名参加类似
好友助力后活得了助力值:
项目源码
数据库sql
create database db_wx;
use db_wx;
-- ----------------------------
-- Table structure for t_assist_level
-- ----------------------------
DROP TABLE IF EXISTS `t_assist_level`;
CREATE TABLE `t_assist_level` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`assist_level` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`assist_count` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of t_assist_level
-- ----------------------------
INSERT INTO `t_assist_level` VALUES (1, '第一档', 200);
INSERT INTO `t_assist_level` VALUES (2, '第二档', 100);
INSERT INTO `t_assist_level` VALUES (3, '第三档', 50);
INSERT INTO `t_assist_level` VALUES (4, '第四档', 30);
-- ----------------------------
-- Table structure for t_follow_info
-- ----------------------------
DROP TABLE IF EXISTS `t_follow_info`;
CREATE TABLE `t_follow_info` (
`openid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分享海报用户的微信号',
`follow_openid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '关注用户的微信号',
`follow_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '关注时间',
PRIMARY KEY (`openid`, `follow_openid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of t_follow_info
-- ----------------------------
INSERT INTO `t_follow_info` VALUES ('oJ4VY61KtF_VJL2Zwm_S-4cJnYCw', 'oJ4VY61KtF_VJL2Zwm_S-4cJnYCw', '2023-04-20 15:50:20');
INSERT INTO `t_follow_info` VALUES ('oRQ325lwAb_WyRR222WsY3g3i6RME', 'oRQ34444s0WsY3g3i6RME', '2022-12-07 14:37:03');
INSERT INTO `t_follow_info` VALUES ('oRQ325lwAb_WyRRs0WsY3g3i6RME', 'oRQ325lwAb_WyRRs0WsY3g3i6RME', '2022-12-08 11:12:45');
INSERT INTO `t_follow_info` VALUES ('oRQ325lwAb_WyRRs0WsY3g3i6RME', 'oRQ325sFld6FDejf9XIpV0X-Ufjs', '2022-12-07 13:02:44');
INSERT INTO `t_follow_info` VALUES ('oRQ325sFld6FDejf9XIpV0X-Ufjs', 'oRQ325lwAb_WyRRs0WsY3g3i6RME', '2022-12-07 16:45:32');
INSERT INTO `t_follow_info` VALUES ('oRQ325sFld6FDejf9XIpV0X-Ufjs', 'oRQ325sFld6FDejf9XIpV0X-Ufjs', '2022-12-07 16:40:30');
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`openid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`headimgurl` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`create_time` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0),
PRIMARY KEY (`openid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES ('oJ4VY61KtF_VJL2Zwm_S-4cJnYCw', '一木呈广予口贝', 'https://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83erSyeYlW2P6lEMicq5gQ7OnBicYas4n5BbCQicEkyEjibliaQ3jAFpEB4jCMn13G6Oo66ROvrnFvjMtCvw/132', '2023-04-20 15:52:47');
INSERT INTO `t_user` VALUES ('oRQ325lwAb_WyRR222WsY3g3i6RME', 'h111', NULL, '2022-12-07 14:46:37');
INSERT INTO `t_user` VALUES ('oRQ325lwAb_WyRRs0WsY3g3i6RME', '181cm', 'https://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eroR2wsW9U0O4TUlS7DCqud0G05icH6OTRDB3osV2rLZk28Efl6sL4yWKQlF25wV5NH4qB0vZ2JFYA/132', '2022-12-08 11:27:20');
INSERT INTO `t_user` VALUES ('oRQ325sFld6FDejf9XIpV0X-Ufjs', '马剑威', 'https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLV0GybMULcVwlcRmxqiaibM6nMQvG5sdMb6eKIeT7xc4SwAHTKbe8BtibicKR31Ciaib4FeltXnEc5iciaUw/132', '2022-12-07 16:54:07');
源码下载
https://gitee.com/qkongtao/my-wx-demo/tree/master/my-wx-project