应公司需求开发一个微信公众号中抽奖活动
功能:奖品及中奖概率可在后台配置,滚动刷新中奖名单,控制用户每日抽奖次数等。
规则:在活动期间,每日可抽奖一次,中奖后填写个人信息以便奖品的配送。
1.获取抽奖页面数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
/** * 获取抽奖页面数据 * @param request * @param response * @return * @throws servletexception * @throws ioexception */ @requestmapping (value= "/querylotteryactivity" ) @responsebody public appintreturn querylotteryactivity(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { appintreturn res = new appintreturn(); // 用户同意授权后,能获取到code string code = request.getparameter( "code" ); // 用户同意授权 if (! "authdeny" .equals(code)) { // 获取网页授权access_token weixinoauth2token weixinoauth2token = commonutil .getoauth2accesstoken(configutil.appid, configutil.app_secrect, code); // 用户标识 string openid = weixinoauth2token.getopenid(); if (!stringutil.isempty(openid)){ // 查询用户信息 list<cxhwechatmember> memberlist = applotteryservice.getmemberlist(openid); // 操作次数 int opernum = 1 ; // 可写成后台可配置的 if (memberlist != null && memberlist.size() > 0 ){ opernum = opernum - memberlist.size(); /*// 获取用户信息 string accesstoken = commonutil.getaccesstoken(configutil.appid, configutil.app_secrect).gettoken(); cxhwechatmember = commonutil.getwechatmemberinfo(accesstoken, openid); // 保存用户信息 applotteryservice.savememberinfo(cxhwechatmember);*/ } if ( null == request.getparameter( "activityid" ) || "" .equals(request.getparameter( "activityid" ))){ res.setresult( "-2" ); res.setmsg( "参数错误" ); return res; } // 查询活动信息 cxhvoteactivity cxhvoteactivity = applotteryservice.getactivityinfo(request.getparameter( "activityid" )); if ( null == cxhvoteactivity){ res.setresult( "-3" ); res.setmsg( "暂无该类活动" ); return res; } cxhvoteaward cxhvoteaward = new cxhvoteaward(); cxhvoteaward.setcxhvoteactivity(cxhvoteactivity); // 查询奖品列表 list<cxhvoteaward> awardlist = applotteryservice.findawardlist(cxhvoteaward); // 返回map map<string, object> rtnmap = new hashmap<string, object>(); rtnmap.put( "activity" , cxhvoteactivity); rtnmap.put( "awardlist" , awardlist); rtnmap.put( "opernum" , opernum); rtnmap.put( "openid" , openid); res.setresult( "0" ); res.setmsg( "请求成功" ); res.setdata(rtnmap); } else { res.setresult( "-1" ); res.setmsg( "授权失败" ); } } else { res.setresult( "-1" ); res.setmsg( "授权失败" ); } return res; } |
2.中奖名单接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
/** * 中奖名单接口 * @author lee * @return */ @responsebody @requestmapping (value = "/winningmemberlist" ) public object querywinningmemberlist(httpservletrequest request, httpservletresponse response) { applistreturn appresult = new applistreturn(); try { cxhwechatmember cxhwechatmember = new cxhwechatmember(); cxhwechatmember.setiswinning( "1" ); // 中奖 // 查询中奖用户名单(分页) page<cxhwechatmember> pagelist = applotteryservice.findpage( new page<cxhwechatmember>(request, response), cxhwechatmember); appresult.setdata(pagelist.getlist()); appresult.setpagenumber(pagelist.getpageno()); appresult.setpagesize(pagelist.getpagesize()); appresult.settotal(( int ) pagelist.getcount()); appresult.settotalpages(pagelist.gettotalpage()); appresult.setresult( 0 ); appresult.setmsg( "成功" ); } catch (exception e) { appresult.setresult(- 9 ); appresult.setmsg( "系统异常" ); logger.info(e.tostring(), e); } return appresult; } |
3.抽奖接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
/** * 抽奖接口 * @author lee * @return */ @responsebody @requestmapping (value = "/dolottery" ) public object dolottery(httpservletrequest request, httpservletresponse response) { applistreturn appresult = new applistreturn(); // 返回map map<string, object> rtnmap = new hashmap<string, object>(); string activityid = request.getparameter( "activityid" ); string openid = request.getparameter( "openid" ); try { if ( null == activityid || "" .equals(activityid) || null == openid || "" .equals(openid)){ appresult.setresult(- 2 ); appresult.setmsg( "参数错误" ); return appresult; } // 查询活动信息 cxhvoteactivity cxhvoteactivity = applotteryservice.getactivityinfo(request.getparameter( "activityid" )); if ( null == cxhvoteactivity){ appresult.setresult(- 3 ); appresult.setmsg( "暂无该类活动" ); return appresult; } cxhvoteaward cxhvoteaward = new cxhvoteaward(); cxhvoteaward.setcxhvoteactivity(cxhvoteactivity); // 查询奖品列表 list<cxhvoteaward> awardlist = applotteryservice.findawardlist(cxhvoteaward); random rd = new random(); double dd = rd.nextdouble(); double before = 0 ; double end = 0 ; cxhvoteaward.setlevel( "5" ); // 5-未中奖 // 计算中奖概率 for ( int i = 0 ; i < awardlist.size(); i++) { if (i > 0 ){ before += awardlist.get(i- 1 ).getrate().doublevalue(); } end += awardlist.get(i).getrate().doublevalue(); if (dd >= before && dd < end){ if (awardlist.get(i).getleftnum() > 0 ){ // 中奖奖品 cxhvoteaward = awardlist.get(i); // 修改奖品剩余数量 cxhvoteaward.setleftnum(cxhvoteaward.getleftnum() - 1 ); applotteryservice.updateawardnumber(cxhvoteaward); } break ; } } // 新增用户操作记录 string accesstoken = commonutil.getaccesstoken(configutil.appid, configutil.app_secrect).gettoken(); cxhwechatmember cxhwechatmember = commonutil.getwechatmemberinfo(accesstoken, openid); cxhwechatmember.setid(idgen.uuid()); cxhwechatmember.setjoindate( new date()); cxhwechatmember.setdelflag( "0" ); // 保存用户信息 applotteryservice.savememberinfo(cxhwechatmember); rtnmap.put( "awardlevel" , cxhvoteaward.getlevel()); rtnmap.put( "awardid" , cxhvoteaward.getid()); appresult.setdata(rtnmap); appresult.setresult( 0 ); appresult.setmsg( "成功" ); } catch (exception e) { appresult.setresult(- 9 ); appresult.setmsg( "系统异常" ); logger.info(e.tostring(), e); } return appresult; } |
4.保存中奖用户信息的接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
/** * 保存中奖用户信息的接口 * @author lee * @return */ @responsebody @requestmapping (value = "/savememberinfo" ) public object savememberinfo(httpservletrequest request, httpservletresponse response) { applistreturn appresult = new applistreturn(); try { // 用户同意授权后,能获取到code string openid = request.getparameter( "openid" ); string username = request.getparameter( "username" ); string phone = request.getparameter( "phone" ); string address = request.getparameter( "address" ); string awardlevel = request.getparameter( "awardlevel" ); string awardid = request.getparameter( "awardid" ); if ( null == username || "" .equals(username) || null == phone || "" .equals(phone) || null == address || "" .equals(address) || null == openid || "" .equals(openid) || null == awardlevel || "" .equals(awardlevel) || null == awardid || "" .equals(awardid)){ appresult.setresult(- 2 ); appresult.setmsg( "参数错误" ); return appresult; } // 查询用户信息 list<cxhwechatmember> memberlist = applotteryservice.getmemberlist(openid); cxhwechatmember cxhwechatmember = memberlist.get( 0 ); cxhwechatmember.setusername(username); cxhwechatmember.setphone(phone); cxhwechatmember.setaddress(address); cxhwechatmember.setiswinning(awardlevel == "5" ? "0" : "1" ); cxhwechatmember.setawardid(awardid); applotteryservice.update(cxhwechatmember); appresult.setresult( 0 ); appresult.setmsg( "成功" ); } catch (exception e) { appresult.setresult(- 9 ); appresult.setmsg( "系统异常" ); logger.info(e.tostring(), e); } return appresult; } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/lijie18/article/details/57983918