微信开发一笔记2

微信菜单:

Button类:

		private String type;
		private String name;
		private String key;
		private String url;
		private String media_id;
		private List<Button2> sub_button =new ArrayList<Button2>();
		
		public void addSubButton(Button2 bt) {
			sub_button.add(bt);
		}
		
		public String getType() {
			return type;
		}
		public void setType(String type) {
			this.type = type;
		}
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public String getKey() {
			return key;
		}
		public void setKey(String key) {
			this.key = key;
		}
		public String getUrl() {
			return url;
		}
		public void setUrl(String url) {
			this.url = url;
		}
		public String getMedia_id() {
			return media_id;
		}
		public void setMedia_id(String media_id) {
			this.media_id = media_id;
		}
		public List<Button2> getSub_button() {
			return sub_button;
		}
		public void setSub_button(List<Button2> sub_button) {
			this.sub_button = sub_button;
		}

Menu类

	private	List< Button2> button =new ArrayList<Button2>();

	public void addButton(Button2 btn) {
		button.add(btn);
	}
		
	public List<Button2> getButton() {
		return button;
	}

	public void setButton(List<Button2> button) {
		this.button = button;
	}

设置按钮时  要设置好type、key、name

imageUtil:用于图像获取和图像合成

	    public static  BufferedImage getImage(File file) throws IOException {
			return ImageIO.read(file);
		}
	    	
	    public static  BufferedImage getImage(String url) throws IOException {
			return ImageIO.read(new URL(url));
		}
	    
	    
	    public static BufferedImage merge(BufferedImage bgimage,BufferedImage hdimage,int x,int y,int width,int height) {
	    	Graphics2D gh=bgimage.createGraphics();
	    	gh.drawImage(hdimage, x, y,width,height,null);
	    	gh.dispose();
			return bgimage;
		}
	    
	    public static void saveImage(BufferedImage image,String formate,String savePath) throws Exception {
	    	FileOutputStream output=new FileOutputStream(savePath);
			ImageIO.write(image, formate, output);
		}

Weixinapi类  用于操作微信提供的接口  如:获取用户信息,上传素材生成二维码等

		private static final String GET_TOKEN ="https://api.weixin.qq.com/cgi-bin/token?"
				+ "grant_type=client_credential&appid=%s&secret=%s";
		private static final String GET="GET";
		private static final String POST="POST";
		private static final String CHARSET=ConfigUtil.getValue("charset"); 
		private static final String APPID=ConfigUtil.getValue("appID");
		private static final String SECRET=ConfigUtil.getValue("appsecret");
		private static Token token;
		private static final String CreateMenu="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=%s";
		public static Token getToken() throws Exception {
			if (token!=null&&!token.isExpires()) {
				return token;
			}
			String jsonstr=HttpUtil.sendHttpReq(String.format(GET_TOKEN, APPID,SECRET), GET, null,CHARSET);
			Token token=JSONObject.parseObject(jsonstr,Token.class);
			return token;
		}
		//创建菜单
		public static Result createMenu(String menujson) throws Exception {
			Token token=getToken();
			String resultjson=HttpUtil.sendHttpReq(String.format(CreateMenu,token.getAccess_token()), POST, menujson, CHARSET);	
			return (Result) JSONObject.parseObject(resultjson,Result.class);
		}
		
		
		private static final String GETUSERINFO="https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN";
		
		public static UserInfo getUserInfo(String openid) throws Exception{
			System.out.println("getUserInfo openid"+openid);
			Token tk=getToken();
			String jsonstr=HttpUtil.sendHttpReq(String.format(GETUSERINFO, tk.getAccess_token(),openid), GET, null, CHARSET);
			System.out.println(jsonstr);
			UserInfo user=JSONObject.parseObject(jsonstr,UserInfo.class);
			return user;
		}
		
		private static final String GET_QRTK="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=%s";	
		public static QRticket  getQRticket(int sceneid) throws Exception{
			Token tk=getToken();
			QRcode qr=new QRcode();
			qr.setSceneId(sceneid);
		  String jsonstr=HttpUtil.sendHttpReq(String.format(GET_QRTK, tk.getAccess_token()), POST, JSONObject.toJSONString(qr), CHARSET);
			System.out.println(jsonstr);
			QRticket qrtk=JSONObject.parseObject(jsonstr,QRticket.class);
			System.out.println(qrtk.getTicket());
			return qrtk;
		}
		
		private static final String UPLOAD="https://api.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=%s";
		public static MediaResult uploadMedia(String path,String type) throws Exception {
				Token kt=getToken();
				System.out.println(kt.getAccess_token());
			 String jsonstr=HttpUtil.upload(String.format(UPLOAD, kt.getAccess_token(),type),path, CHARSET);		
			System.out.println(jsonstr);
			MediaResult result=JSONObject.parseObject(jsonstr,MediaResult.class);
			return result;
		}
		
		private static final String SEND_MSG="https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s";
		public static void sendCustomMessage(String msg) throws Exception {
			Token tk=getToken();
			String jsonstr=HttpUtil.sendHttpReq(String.format(SEND_MSG, tk.getAccess_token()), POST,msg, CHARSET);
			System.out.println(jsonstr);
		}
		

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值