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); //查询奖品列表 List awardList=appLotteryService.findAwardList(cxhVoteAward); //返回Map Map rtnMap=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); //查询奖品列表 List awardList=appLotteryService.findAwardList(cxhVoteAward); Randomrd=newRandom(); doubledd=rd.nextDouble(); doublebefore=0; doubleend=0; cxhVoteAward.setLevel("5");//5-未中奖 //计算中奖概率 for(inti=0;i 0){ before+=awardList.get(i-1).getRate().doubleValue(); } end+=awardList.get(i).getRate().doubleValue(); if(dd>=before&&dd 0){ //中奖奖品 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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。