操作员扫码的时候是有user_id的,并且操作的时候是有当前的时间的。怎么在那第一次来的时候,把user_id和当前的时间存入到session里面key是user_id值是当前时间。下次来的时候如果是相同的user_id则取出session里对应user_id的值也就是上次的时间值,如果间隔小于1秒那么就是重复访问,就直接return。怎么在代码里实现,帮忙修改一下controller层的代码谢谢
controller层
@RequestMapping(value="/adduserproductmap",method=RequestMethod.GET)
privateStringaddUserProductMap(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{
//获取微信授权信息
WechatIdeniden=getOperatorInfo(request);
if(iden!=null){
PersonInfooperator=iden.getPersonInfo();
request.getSession().setAttribute("user",operator);
//获取二维码里state携带的content信息并解码
StringqrCodeinfo=newString(
URLDecoder.decode(HttpServletRequestUtil.getString(request,"state"),"UTF-8"));
ObjectMappermapper=newObjectMapper();
WechatInfowechatInfo=null;
try{
//将解码后的内容用aaa去替换掉之前生成二维码的时候加入的aaa前缀,转换成WechatInfo实体类
wechatInfo=mapper.readValue(qrCodeinfo.replace("aaa","\""),WechatInfo.class);
}catch(Exceptione){
return"shop/operationfail";
}
//校验二维码是否已经过期
if(!checkQRCodeInfo(wechatInfo)){
return"shop/operationfail";
}
//获取添加消费记录所需要的参数并组建成userproductmap实例
LongproductId=wechatInfo.getProductId();
LongcustomerId=wechatInfo.getCustomerId();
UserProductMapuserProductMap=compactUserProductMap4Add(customerId,productId,iden.getPersonInfo());
if(userProductMap!=null&&customerId!=-1){
try{
if(!checkShopIden(operator.getUserId(),userProductMap)){
return"shop/operationfail";
}
UserProductMapExecutionse=service_UserProductMap.addUserProductMap(userProductMap);
if(se.getState()==UserProductMapStateEnum.SUCCESS.getState()){
return"shop/operationsuccess";
}
}catch(RuntimeExceptione){
return"shop/operationfail";
}
}
}
return"shop/operationfail";
}
//根据code获取UserAccessToken,进而通过token里的openId获取微信用户信息
privateWechatIdengetOperatorInfo(HttpServletRequestrequest){
Stringcode=request.getParameter("code");
WechatIdeniden=null;
if(null!=code){
UserAccessTokentoken;
try{
token=WechatUtil.getUserAccessToken(code);
StringopenId=token.getOpenId();
request.getSession().setAttribute("openId",openId);
iden=service_WeChatIden.getWechatIdenByOpenId(openId);
}catch(IOExceptione){
e.printStackTrace();
}
}
returniden;
}
//超过5分钟则认为过期
privatebooleancheckQRCodeInfo(WechatInfowechatInfo){
if(wechatInfo!=null&&wechatInfo.getProductId()!=null&&wechatInfo.getCustomerId()!=null
&&wechatInfo.getCreateTime()!=null){
longnowTime=System.currentTimeMillis();
if((nowTime-wechatInfo.getCreateTime())
分 -->
|