需求
多公众号下扫描带参数二维码实现信息绑定
解决方案
因后端唯一,故采用带参数二维码携带场景值id为字符串,通过解析id字符串绑定信息
id字符串为:appid+需绑定信息在数据库中的唯一id(根据实际需要自行调整)
设计WeiXinController,继承DreamMsgControllerAdapter(根据需要自行设计bangding方法,demo将参数原路发回公众号对应微信用户)
package cn.kudesoft.duo.controller;
import com.jfinal.weixin.sdk.msg.in.InTextMsg;
import com.jfinal.weixin.sdk.msg.in.event.InFollowEvent;
import com.jfinal.weixin.sdk.msg.in.event.InMenuEvent;
import com.jfinal.weixin.sdk.msg.in.event.InQrCodeEvent;
import com.jfinal.weixin.sdk.msg.out.OutTextMsg;
import net.dreamlu.weixin.annotation.WxMsgController;
import net.dreamlu.weixin.properties.DreamWeixinProperties;
import net.dreamlu.weixin.spring.DreamMsgControllerAdapter;
import org.springframework.beans.factory.annotation.Autowired;
@WxMsgController("/weixin/wx")
public class WeixinController extends DreamMsgControllerAdapter {
@Autowired
private DreamWeixinProperties weixinProperties;
@Override
protected void processInFollowEvent(InFollowEvent inFollowEvent) {
OutTextMsg outMsg = new OutTextMsg(inFollowEvent);
outMsg.setContent("关注消息~");
render(outMsg);
}
@Override
protected void processInTextMsg(InTextMsg inTextMsg) {
System.out.println(weixinProperties.getWxaConfig().getAppId());
OutTextMsg outMsg = new OutTextMsg(inTextMsg);
outMsg.setContent(inTextMsg.getContent());
render(outMsg);
}
@Override
protected void processInMenuEvent(InMenuEvent inMenuEvent) {
OutTextMsg outMsg = new OutTextMsg(inMenuEvent);
outMsg.setContent("菜单消息~");
render(outMsg);
}
@Override
protected void processInQrCodeEvent(InQrCodeEvent inQrCodeEvent) {
if(inQrCodeEvent.getEvent().equals("subscribe")){
bangding(inQrCodeEvent.getEventKey().substring(8),inQrCodeEvent);
}else {
bangding(inQrCodeEvent.getEventKey(),inQrCodeEvent);
}
}
private void bangding(String i,InQrCodeEvent inQrCodeEvent){
OutTextMsg outMsg = new OutTextMsg(inQrCodeEvent);
outMsg.setContent(i);
render(outMsg);
}
}