应公司需求开发一个微信公众号中抽奖活动
功能:奖品及中奖概率可在后台配置,滚动刷新中奖名单,控制用户每日抽奖次数等。
规则:在活动期间,每日可抽奖一次,中奖后填写个人信息以便奖品的配送。
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