APP Turntable Draw Java Service side Interface Details
- 2021-06-28 09:14:14
- OfStack
Develop a WeChat Public Number lottery in response to company needs
Functions: The prize and winning probability can be configured in the background, scroll to refresh the winning list, control the number of lottery draw per day, etc.
Rule: During the activity, you can draw a lottery once a day. Fill in personal information after winning to facilitate the distribution of prizes.
1. Get data from the lottery page
/**
* Get lottery page data
* @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();
// Once the user agrees to authorize, he or she can obtain code
String code = request.getParameter("code");
// User agrees to authorize
if (!"authdeny".equals(code)) {
// Obtain Web Page Authorization access_token
WeixinOauth2Token weixinOauth2Token = CommonUtil
.getOauth2AccessToken(ConfigUtil.APPID, ConfigUtil.APP_SECRECT, code);
// User ID
String openId = weixinOauth2Token.getOpenId();
if(!StringUtil.isEmpty(openId)){
// Query user information
List<CxhWechatMember> memberList = appLotteryService.getMemberList(openId);
// Number of operations
int operNum = 1; // Writable as background configurable
if(memberList != null && memberList.size() > 0){
operNum = operNum - memberList.size();
/*// Get user information
String accessToken = CommonUtil.getAccessToken(ConfigUtil.APPID, ConfigUtil.APP_SECRECT).getToken();
cxhWechatMember = CommonUtil.getWeChatMemberInfo(accessToken, openId);
// Save user information
appLotteryService.saveMemberInfo(cxhWechatMember);*/
}
if (null == request.getParameter("activityId") || "".equals(request.getParameter("activityId"))){
res.setResult("-2");
res.setMsg(" Parameter error ");
return res;
}
// Query activity information
CxhVoteActivity cxhVoteActivity = appLotteryService.getActivityInfo(request.getParameter("activityId"));
if (null == cxhVoteActivity){
res.setResult("-3");
res.setMsg(" This type of activity is temporarily unavailable ");
return res;
}
CxhVoteAward cxhVoteAward = new CxhVoteAward();
cxhVoteAward.setCxhVoteActivity(cxhVoteActivity);
// Query prize list
List<CxhVoteAward> awardList = appLotteryService.findAwardList(cxhVoteAward);
// Return 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(" Request succeeded ");
res.setData(rtnMap);
}else{
res.setResult("-1");
res.setMsg(" privilege grant failed ");
}
}else{
res.setResult("-1");
res.setMsg(" privilege grant failed ");
}
return res;
}
2. Winner List Interface
/**
* Winner List Interface
* @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"); // Win the prize
// Query winner list (paging)
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(" Success ");
} catch (Exception e) {
appResult.setResult(-9);
appResult.setMsg(" System exception ");
logger.info(e.toString(), e);
}
return appResult;
}
3. Draw Interface
/**
* Draw Interface
* @author lee
* @return
*/
@ResponseBody
@RequestMapping(value = "/doLottery")
public Object doLottery(HttpServletRequest request, HttpServletResponse response) {
AppListReturn appResult = new AppListReturn();
// Return 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(" Parameter error ");
return appResult;
}
// Query activity information
CxhVoteActivity cxhVoteActivity = appLotteryService.getActivityInfo(request.getParameter("activityId"));
if (null == cxhVoteActivity){
appResult.setResult(-3);
appResult.setMsg(" This type of activity is temporarily unavailable ");
return appResult;
}
CxhVoteAward cxhVoteAward = new CxhVoteAward();
cxhVoteAward.setCxhVoteActivity(cxhVoteActivity);
// Query prize list
List<CxhVoteAward> awardList = appLotteryService.findAwardList(cxhVoteAward);
Random rd = new Random();
double dd = rd.nextDouble();
double before = 0;
double end = 0;
cxhVoteAward.setLevel("5"); // 5- Not winning
// Calculate the winning probability
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){
// Winning Prize
cxhVoteAward = awardList.get(i);
// Modify Remaining Prize Quantity
cxhVoteAward.setLeftnum(cxhVoteAward.getLeftnum() - 1);
appLotteryService.updateAwardNumber(cxhVoteAward);
}
break;
}
}
// Add User Action Record
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");
// Save user information
appLotteryService.saveMemberInfo(cxhWechatMember);
rtnMap.put("awardLevel", cxhVoteAward.getLevel());
rtnMap.put("awardId", cxhVoteAward.getId());
appResult.setData(rtnMap);
appResult.setResult(0);
appResult.setMsg(" Success ");
} catch (Exception e) {
appResult.setResult(-9);
appResult.setMsg(" System exception ");
logger.info(e.toString(), e);
}
return appResult;
}
4. Interface for saving winner user information
/**
* Interface for saving winner user information
* @author lee
* @return
*/
@ResponseBody
@RequestMapping(value = "/saveMemberInfo")
public Object saveMemberInfo(HttpServletRequest request, HttpServletResponse response) {
AppListReturn appResult = new AppListReturn();
try {
// Once the user agrees to authorize, he or she can obtain 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(" Parameter error ");
return appResult;
}
// Query user information
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(" Success ");
} catch (Exception e) {
appResult.setResult(-9);
appResult.setMsg(" System exception ");
logger.info(e.toString(), e);
}
return appResult;
}