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; } } }