@RestController
@RequestMapping("/seckill")
public class SecKillController {
Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
SecKillService secKillService;
@RequestMapping(name = "/list",method = RequestMethod.GET)
public String list(Model model){
List<SecKill> list = secKillService.getSecKillList();
model.addAttribute("list",list);
return "list";
}
@RequestMapping(value = "/{seckillId}/detail",method = RequestMethod.GET)
public String detail(@PathVariable("seckillId") Long seckillId,Model model){
if(seckillId == null){
return "redirect:/seckill/list";
}
SecKill secKill = secKillService.getById(seckillId);
if(secKill==null){
return "redirect:/seckill/list";
}
model.addAttribute("secKill",secKill);
return "detail";
}
@RequestMapping(value = "/{seckillId}/exposer"
,method = RequestMethod.POST
,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public SecKillResult<Exposer> exposer(Long seckillId){
SecKillResult<Exposer> result;
try {
Exposer exposer = secKillService.exportSecKillUrl(seckillId);
result = new SecKillResult<Exposer>(true,exposer);
}catch (Exception e){
logger.error(e.getMessage(),e);
result = new SecKillResult<Exposer>(false,e.getMessage());
}
return result;
}
@RequestMapping(value = "/{seckillId}/{md5}/execution"
,method = RequestMethod.POST
,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public SecKillResult<SecKillExecution> execute(@PathVariable("seckillId") Long seckillId
,@PathVariable("md5") String md5
,@CookieValue(value = "killPhone",required = false) Long phone){
if(null==phone){
return new SecKillResult<SecKillExecution>(false,"未注册");
}
//SecKillResult<SecKillExecution> result;
try{
SecKillExecution secKillExecution = secKillService.executesSecKill(seckillId,phone,md5);
return new SecKillResult<SecKillExecution>(true,secKillExecution);
}catch(SecKillCloseException e){
SecKillExecution secKillExecution = new SecKillExecution(seckillId, SecKillStatEnum.END);
return new SecKillResult<SecKillExecution>(false,secKillExecution);
}catch (RepeatKillException e){
SecKillExecution secKillExecution = new SecKillExecution(seckillId, SecKillStatEnum.REPEAT_KILL);
return new SecKillResult<SecKillExecution>(false,secKillExecution);
}
catch (Exception e){
logger.error(e.getMessage(),e);
SecKillExecution secKillExecution = new SecKillExecution(seckillId, SecKillStatEnum.INNER_ERROR);
return new SecKillResult<SecKillExecution>(false,secKillExecution);
}
}
@RequestMapping(value = "/time/now",method = RequestMethod.GET,produces = {"application/json;charset=UTF-8"})
@ResponseBody
public SecKillResult<Long> time(){
Date now = new Date();
return new SecKillResult<>(true,now.getTime());
}
}
service中产生的异常catch住后抛出异常e1,e2后controller需要处理异常
秒杀controller接口
restful其实在弄的是dto
result=new....意思是初始化result
restful的url:
url:/模块/资源/{id}/细分
注解驱动 包扫描 视图解析器(前后缀配置)
produces={"application/json;charset=UTF-8"}
各种异常抛出的写法,很棒,多学习学习