APP转盘抽奖Java服务端接口详解
应公司需求开发一个微信公众号中抽奖活动
功能:奖品及中奖概率可在后台配置,滚动刷新中奖名单,控制用户每日抽奖次数等。
规则:在活动期间,每日可抽奖一次,中奖后填写个人信息以便奖品的配送。
1.获取抽奖页面数据
/**
*获取抽奖页面数据
*@paramrequest
*@paramresponse
*@return
*@throwsServletException
*@throwsIOException
*/
@RequestMapping(value="/queryLotteryActivity")
@ResponseBody
publicAppIntReturnqueryLotteryActivity(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
AppIntReturnres=newAppIntReturn();
//用户同意授权后,能获取到code
Stringcode=request.getParameter("code");
//用户同意授权
if(!"authdeny".equals(code)){
//获取网页授权access_token
WeixinOauth2TokenweixinOauth2Token=CommonUtil
.getOauth2AccessToken(ConfigUtil.APPID,ConfigUtil.APP_SECRECT,code);
//用户标识
StringopenId=weixinOauth2Token.getOpenId();
if(!StringUtil.isEmpty(openId)){
//查询用户信息
ListmemberList=appLotteryService.getMemberList(openId);
//操作次数
intoperNum=1;//可写成后台可配置的
if(memberList!=null&&memberList.size()>0){
operNum=operNum-memberList.size();
/*//获取用户信息
StringaccessToken=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("参数错误");
returnres;
}
//查询活动信息
CxhVoteActivitycxhVoteActivity=appLotteryService.getActivityInfo(request.getParameter("activityId"));
if(null==cxhVoteActivity){
res.setResult("-3");
res.setMsg("暂无该类活动");
returnres;
}
CxhVoteAwardcxhVoteAward=newCxhVoteAward();
cxhVoteAward.setCxhVoteActivity(cxhVoteActivity);
//查询奖品列表
ListawardList=appLotteryService.findAwardList(cxhVoteAward);
//返回Map
MaprtnMap=newHashMap();
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("授权失败");
}
returnres;
}
    
2.中奖名单接口
/**
*中奖名单接口
*@authorlee
*@return
*/
@ResponseBody
@RequestMapping(value="/winningMemberList")
publicObjectqueryWinningMemberList(HttpServletRequestrequest,HttpServletResponseresponse){
AppListReturnappResult=newAppListReturn();
try{
CxhWechatMembercxhWechatMember=newCxhWechatMember();
cxhWechatMember.setIswinning("1");//中奖
//查询中奖用户名单(分页)
PagepageList=appLotteryService.findPage(newPage(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(Exceptione){
appResult.setResult(-9);
appResult.setMsg("系统异常");
logger.info(e.toString(),e);
}
returnappResult;
}
  
3.抽奖接口
/**
*抽奖接口
*@authorlee
*@return
*/
@ResponseBody
@RequestMapping(value="/doLottery")
publicObjectdoLottery(HttpServletRequestrequest,HttpServletResponseresponse){
AppListReturnappResult=newAppListReturn();
//返回Map
MaprtnMap=newHashMap();
StringactivityId=request.getParameter("activityId");
StringopenId=request.getParameter("openId");
try{
if(null==activityId||"".equals(activityId)||null==openId||"".equals(openId)){
appResult.setResult(-2);
appResult.setMsg("参数错误");
returnappResult;
}
//查询活动信息
CxhVoteActivitycxhVoteActivity=appLotteryService.getActivityInfo(request.getParameter("activityId"));
if(null==cxhVoteActivity){
appResult.setResult(-3);
appResult.setMsg("暂无该类活动");
returnappResult;
}
CxhVoteAwardcxhVoteAward=newCxhVoteAward();
cxhVoteAward.setCxhVoteActivity(cxhVoteActivity);
//查询奖品列表
ListawardList=appLotteryService.findAwardList(cxhVoteAward);
Randomrd=newRandom();
doubledd=rd.nextDouble();
doublebefore=0;
doubleend=0;
cxhVoteAward.setLevel("5");//5-未中奖
//计算中奖概率
for(inti=0;i0){
before+=awardList.get(i-1).getRate().doubleValue();
}
end+=awardList.get(i).getRate().doubleValue();
if(dd>=before&&dd0){
//中奖奖品
cxhVoteAward=awardList.get(i);
//修改奖品剩余数量
cxhVoteAward.setLeftnum(cxhVoteAward.getLeftnum()-1);
appLotteryService.updateAwardNumber(cxhVoteAward);
}
break;
}
}
//新增用户操作记录
StringaccessToken=CommonUtil.getAccessToken(ConfigUtil.APPID,ConfigUtil.APP_SECRECT).getToken();
CxhWechatMembercxhWechatMember=CommonUtil.getWeChatMemberInfo(accessToken,openId);
cxhWechatMember.setId(IdGen.uuid());
cxhWechatMember.setJoindate(newDate());
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(Exceptione){
appResult.setResult(-9);
appResult.setMsg("系统异常");
logger.info(e.toString(),e);
}
returnappResult;
}     
4.保存中奖用户信息的接口
/**
*保存中奖用户信息的接口
*@authorlee
*@return
*/
@ResponseBody
@RequestMapping(value="/saveMemberInfo")
publicObjectsaveMemberInfo(HttpServletRequestrequest,HttpServletResponseresponse){
AppListReturnappResult=newAppListReturn();
try{
//用户同意授权后,能获取到code
StringopenId=request.getParameter("openId");
Stringusername=request.getParameter("username");
Stringphone=request.getParameter("phone");
Stringaddress=request.getParameter("address");
StringawardLevel=request.getParameter("awardLevel");
StringawardId=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("参数错误");
returnappResult;
}
//查询用户信息
ListmemberList=appLotteryService.getMemberList(openId);
CxhWechatMembercxhWechatMember=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(Exceptione){
appResult.setResult(-9);
appResult.setMsg("系统异常");
logger.info(e.toString(),e);
}
returnappResult;
}
 
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
