package com.hongqiang.shop.website.web.admin;
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.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.hongqiang.shop.common.utils.Message;
import com.hongqiang.shop.common.utils.Pageable;
import com.hongqiang.shop.common.web.BaseController;
import com.hongqiang.shop.website.entity.Ad;
import com.hongqiang.shop.website.entity.AdPosition;
import com.hongqiang.shop.website.service.AdPositionService;
import com.hongqiang.shop.website.service.AdService;
@Controller("adminAdController")
@RequestMapping({"${adminPath}/ad"})
public class AdController extends BaseController
{
@Autowired
private AdService adService;
@Autowired
private AdPositionService adPositionService;
@RequestMapping(value={"/add"}, method=RequestMethod.GET)
public String add(ModelMap model)
{
model.addAttribute("types", Ad.Type.values());
model.addAttribute("adPositions", this.adPositionService.findAll());
return "/admin/ad/add";
}
@RequestMapping(value={"/save"}, method=RequestMethod.POST)
public String save(Ad ad, Long adPositionId, RedirectAttributes redirectAttributes)
{
ad.setAdPosition((AdPosition)this.adPositionService.find(adPositionId));
if (!beanValidator(redirectAttributes,ad, new Class[0]))
return ERROR_PAGE;
if ((ad.getBeginDate() != null) && (ad.getEndDate() != null) && (ad.getBeginDate().after(ad.getEndDate())))
return ERROR_PAGE;
if (ad.getType() == Ad.Type.text)
ad.setPath(null);
else
ad.setContent(null);
this.adService.save(ad);
addMessage(redirectAttributes, ADMIN_SUCCESS);
return "redirect:list.jhtml";
}
@RequestMapping(value={"/edit"}, method=RequestMethod.GET)
public String edit(Long id, ModelMap model)
{
model.addAttribute("types", Ad.Type.values());
model.addAttribute("ad", this.adService.find(id));
model.addAttribute("adPositions", this.adPositionService.findAll());
return "/admin/ad/edit";
}
@RequestMapping(value={"/update"}, method=RequestMethod.POST)
public String update(Ad ad, Long adPositionId, RedirectAttributes redirectAttributes)
{
ad.setAdPosition((AdPosition)this.adPositionService.find(adPositionId));
if (!beanValidator(redirectAttributes,ad, new Class[0]))
return ERROR_PAGE;
if ((ad.getBeginDate() != null) && (ad.getEndDate() != null) && (ad.getBeginDate().after(ad.getEndDate())))
return ERROR_PAGE;
if (ad.getType() == Ad.Type.text)
ad.setPath(null);
else
ad.setContent(null);
this.adService.update(ad);
addMessage(redirectAttributes, ADMIN_SUCCESS);
return "redirect:list.jhtml";
}
@RequestMapping(value={"/list"}, method=RequestMethod.GET)
public String list(Pageable pageable, ModelMap model)
{
model.addAttribute("page", this.adService.findPage(pageable));
return "/admin/ad/list";
}
@RequestMapping(value={"/delete"}, method=RequestMethod.POST)
@ResponseBody
public Message delete(Long[] ids)
{
this.adService.delete(ids);
return ADMIN_SUCCESS;
}
}