應公司需求開發一個微信公眾號中抽獎活動
功能:獎品及中獎概率可在后臺配置,滾動刷新中獎名單,控制用戶每日抽獎次數等。
規則:在活動期間,每日可抽獎一次,中獎后填寫個人信息以便獎品的配送。
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