package com.github.ouyangbob.wechat.controller;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.github.ouyangbob.wechat.WechatConstants;
import com.github.ouyangbob.wechat.service.IAwardService;
import com.github.ouyangbob.wechat.token.WechatAccessTokenUtil;
import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;
@Controller
@RequestMapping("/active/lottery")
public class ActiveLotteryController {
@Autowired
private IAwardService awardService;
@RequestMapping("index")
public String index(String code,HttpServletRequest request,ModelMap modelMap){
modelMap.put("code", code);
String noncestr=RandomStringUtils.randomAlphanumeric(5);
long timestamp=System.currentTimeMillis()/1000;
String jsapiTicket=WechatAccessTokenUtil.getJsapiTicket();
String url=request.getRequestURL().toString();
StringBuilder sb=new StringBuilder();
sb.append("jsapi_ticket=");
sb.append(jsapiTicket);
sb.append("&noncestr=");
sb.append(noncestr);
sb.append("×tamp=");
sb.append(timestamp);
sb.append("&url=");
sb.append(url);
String signature = Hashing.sha1().hashString(sb.toString(), Charsets.UTF_8).toString();
modelMap.put("noncestr", noncestr);
modelMap.put("timestamp", timestamp);
modelMap.put("jsapiTicket", jsapiTicket);
modelMap.put("appId", WechatConstants.APPID);
modelMap.put("signature", signature);
return "wechat/award";
}
/**
* 随机一个奖品
* @param code
* @param request
* @return
*/
@ResponseBody
@RequestMapping("randomaward")
public String random(String code){
if(StringUtils.isBlank(code)){
return "0";
}
int award=awardService.randomGenerateAward(code);
return Integer.toString(award);
}
/**
* 获取奖品,保存奖品到数据库
* @param code
* @param mobile
* @return
*/
@ResponseBody
@RequestMapping("getaward")
public String getaward(String code,String mobile){
if(StringUtils.isBlank(code) || StringUtils.isBlank(mobile) || !checkPhoneNo(mobile)){
return "false";
}
boolean bool=awardService.saveGenerateAward(code, mobile);
return Boolean.toString(bool);
}
private boolean checkPhoneNo(String phoneNo){
if (StringUtils.isBlank(phoneNo)) {
return false;
} else if (!Pattern
.matches(
"^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0-9]|17[0-9])\\d{8}$",
phoneNo)) {
return false;
} else{
return true;
}
}
}