`
sunny-chance
  • 浏览: 11511 次
  • 性别: Icon_minigender_1
  • 来自: 中山
最近访客 更多访客>>
社区版块
存档分类
最新评论

网络联盟注册送现金活动-online080313

阅读更多
活动规则很简单:前1000位成功注册并审核通过的网络联盟会员,帐户中将自动赠送20元的现金。

这回我要实现的功能是:
  • 将每天审核通过的会员的信息自动同步到活动管理后台数据库
  • 自动给每天审核通过的会员的账户增加20元,直至会员数为1000为止
  • 成功调整费用后,自动发送《注册送20元现金》确认邮件给会员
  • 后台提供查看已同步的注册会员信息、查看现金发送的情况以及邮件发送的情况等
具体实现细节如下:
1,请求getAffiliate.jsp接口,接收每天审核通过的会员信息(返回的是html文本)
<script>	
	document.write('ID:101,姓名:aaaa1,E-mail:aaaa1@gmail.com<br>');	
	document.write('ID:102,姓名:bbbb2,E-mail:bbbb2@hotmail.com<br>');	
	document.write('ID:103,姓名:cccc3,E-mail:cccc3@163.com<br>');
</script>
2,(利用正则表达式)解析html文本,抽取出会员的信息(ID、姓名、E-mail)
		Pattern pattern = Pattern
				.compile("write\\('ID:(.*?),姓名:(.*?),E-mail:(.*?)<br>");
		Matcher match = pattern.matcher(str);
		while (match.find()) {// 循环解析所有会员信息(每行)
			String id = match.group(1);// ID
			String name = match.group(2);// 姓名
			String email = match.group(3);// E-mail
			…………
		}
3,将解析后的会员数据按字段保存到活动管理后台数据库
4,通知adjustPayment.jsp接口调整费用,将现金加入(前1000位)会员账户
网站主ID  :<input type="text" name="affiliateId" value=""><br>
调整类型ID:<input type="text" name="adjustType" value="10"><br>
调整数额  :<input type="text" name="adjustAmount" value="20"><br>
调整说明  :<input type="text" name="adjustDesc" value="注册就送20元活动"><br>
调整日期  :<input type="text" name="adjustDate" value=""><br>
调整操作人:<input type="text" name="createBy" value="system"><br>
5,成功调整费用后,自动发送《注册送20元现金》确认邮件给会员

以上几个功能都无须人工参与,于是我定义了两个定时任务(同步数据和发邮件)让其自动执行。后来康哥说应用上传后,会自动同步到6台服务器上,然后各自运行,要求避免因各服务器时间不一致而重复执行定时任务。因为数据库是单点的,于是我加入了一个表标识任务的执行情况,每次任务执行前都通过访问标识而判断执行或忽略。
-----------------------------------------------------------------
这个应用最主要是用到访问远程URL的方法,实现如下:
	public static String sendPost(String url) {
		String result = "";
		HttpURLConnection httpConn = null;
		try {
			URL httpurl = new URL(url);
			httpConn = (HttpURLConnection) httpurl.openConnection();
			httpConn.setDoOutput(true);// 允许输出流,默认是false
			httpConn.setUseCaches(false);
			httpConn.setRequestMethod("POST");// 设置 URL 请求的方法
			int responseCode = httpConn.getResponseCode();
			if (responseCode == 200) {
				BufferedReader in = new BufferedReader(new InputStreamReader(
						httpConn.getInputStream()));
				String line;
				while ((line = in.readLine()) != null) {
					result += line;
				}
				in.close();
			}
		} catch (Exception e) {
			System.out.println("没有结果!" + e);
		} finally {
			if (httpConn != null)
				httpConn.disconnect();
		}
		return result;
	}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics