You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

207 lines
8.6 KiB

package com.example.demo.controller;
import com.example.demo.Constants;
import com.example.demo.model.*;
import com.example.demo.repository.DiancanDetailRespository;
import com.example.demo.repository.DiancanRespository;
import com.example.demo.repository.MenuRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletResponse;
import javax.transaction.Transactional;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Controller
@RequestMapping("/api")
public class WebController {
@Autowired
private MenuRepository menuRepository;
@Autowired
private DiancanRespository diancanRespository;
@Autowired
private DiancanDetailRespository diancanDetailRespository;
private Logger logger= LoggerFactory.getLogger(WebController.class);
@RequestMapping("/index")
public String index(Model model,Diancan diancan){
List<Diancan> diancans= diancanRespository.findAll((root,query,cb)->{
List<Predicate> predicates = new ArrayList<>();
if(!StringUtils.isEmpty(diancan.getZhuohao())){
predicates.add(cb.like(root.get("zhuohao"),"%"+diancan.getZhuohao()+"%"));
}
if(!StringUtils.isEmpty(diancan.getXingming())){
predicates.add(cb.like(root.get("xingming"),"%"+diancan.getXingming()+"%"));
}
if(!StringUtils.isEmpty(diancan.getTel())){
predicates.add(cb.equal(root.get("tel"),diancan.getTel()));
}
if(diancan.getYuding()!=null){
predicates.add(cb.equal(root.get("yuding"),diancan.getYuding()));
}
return query.where(predicates.toArray(new Predicate[0])).getRestriction();
});
model.addAttribute(Constants.LIST,diancans);
if(diancan.getYuding()==null){
diancan.setYuding(true);
}
model.addAttribute(Constants.QUERY,diancan);
return "index";
}
@RequestMapping("/order/del/{id}")
@Transactional
public void del(Model model, @PathVariable String id, HttpServletResponse response) throws IOException {
diancanRespository.deleteById(id);
diancanDetailRespository.deleteByZhuohao(id);
response.sendRedirect("/api/index");
}
@GetMapping("/order")
public String getOrder(Model model){
model.addAttribute(Constants.SPAN_NAME,"点餐画面");
model.addAttribute(Constants.ACTION_NAME,"/api/order");
model.addAttribute(Constants.FENLEI,menuRepository.getFenlei());
Diancan diancan= new Diancan();
diancan.setRenshu(1);
model.addAttribute(Constants.QUERY,diancan);
return "order";
}
@PostMapping("/order")
@Transactional
public void postOrder(Model model, HttpServletResponse response, DiancanForm diancanForm) throws IOException, ParseException {
Diancan diancan=new Diancan();
diancan.setZhuohao(diancanForm.getZhuohao());
diancan.setXingming(diancanForm.getXingming());
diancan.setYuding(true);
if("2".equals(diancanForm.getBirthday())&&!StringUtils.isEmpty(diancanForm.getShijian())) {
Date date= new SimpleDateFormat("yyyyMMdd HHmm").parse(diancanForm.getShijian());
diancan.setBirthday(date);
}
diancan.setRenshu(diancanForm.getRenshu());
diancan.setTel(diancanForm.getTel());
diancan.setJine(diancanForm.getJine());
diancan.setBeizhu(diancanForm.getBeizhu());
diancanRespository.save(diancan);
for (CaiDan caiDan:diancanForm.getDiancans()){
DiancanDetail diancanDetail=new DiancanDetail();
diancanDetail.setZhuohao(diancan.getZhuohao());
diancanDetail.setSum(caiDan.getSum());
diancanDetail.setMenuId(caiDan.getCailiao());
diancanDetailRespository.save(diancanDetail);
}
response.sendRedirect("/api/index");
}
@GetMapping("/order/{id}")
public String getEditOrder(Model model,@PathVariable String id){
model.addAttribute(Constants.SPAN_NAME,"修改画面");
model.addAttribute(Constants.ACTION_NAME,"/api/order/"+id);
Diancan diancan=diancanRespository.getOne(id);
model.addAttribute(Constants.QUERY,diancan);
List<DiancanDetail> diancanDetails=diancanDetailRespository.findByZhuohao(diancan.getZhuohao());
model.addAttribute(Constants.QUERYDETAIL,diancanDetails);
model.addAttribute(Constants.FENLEI,menuRepository.getFenlei());
return "order";
}
@PostMapping("/order/{id}")
@Transactional
public void postEditOrder(Model model,@PathVariable String id,HttpServletResponse response, DiancanForm diancanForm) throws IOException, ParseException {
Diancan diancan=diancanRespository.getOne(diancanForm.getZhuohao());
diancan.setZhuohao(diancanForm.getZhuohao());
diancan.setXingming(diancanForm.getXingming());
diancan.setYuding(true);
if("2".equals(diancanForm.getBirthday())&&!StringUtils.isEmpty(diancanForm.getShijian())) {
Date date= new SimpleDateFormat("yyyyMMdd HHmm").parse(diancanForm.getShijian());
diancan.setBirthday(date);
}
diancan.setRenshu(diancanForm.getRenshu());
diancan.setTel(diancanForm.getTel());
diancan.setJine(diancanForm.getJine());
diancan.setBeizhu(diancanForm.getBeizhu());
diancanRespository.save(diancan);
diancanDetailRespository.deleteByZhuohao(diancan.getZhuohao());
for (CaiDan caiDan:diancanForm.getDiancans()){
DiancanDetail diancanDetail=new DiancanDetail();
diancanDetail.setZhuohao(diancan.getZhuohao());
diancanDetail.setSum(caiDan.getSum());
diancanDetail.setMenuId(caiDan.getCailiao());
diancanDetailRespository.save(diancanDetail);
}
response.sendRedirect("/api/index");
}
@GetMapping("/order/detail/{id}")
public String getDetailOrder(Model model,@PathVariable String id){
model.addAttribute(Constants.SPAN_NAME,"详细画面");
Diancan diancan=diancanRespository.getOne(id);
model.addAttribute(Constants.QUERY,diancan);
List<DiancanDetail> diancanDetails=diancanDetailRespository.findByZhuohao(diancan.getZhuohao());
model.addAttribute(Constants.QUERYDETAIL,diancanDetails);
model.addAttribute(Constants.FENLEI,menuRepository.getFenlei());
return "order";
}
@GetMapping("/order/pay/{id}")
public String getPayOrder(Model model,@PathVariable String id){
model.addAttribute(Constants.SPAN_NAME,"支付画面");
Diancan diancan=diancanRespository.getOne(id);
model.addAttribute(Constants.QUERY,diancan);
List<DiancanDetail> diancanDetails=diancanDetailRespository.findByZhuohao(diancan.getZhuohao());
model.addAttribute(Constants.QUERYDETAIL,diancanDetails);
model.addAttribute(Constants.FENLEI,menuRepository.getFenlei());
return "order";
}
@GetMapping(path = "/getPinMu",produces = {"application/json;charset=UTF-8"})
@ResponseBody
public List<String> getPinMu(Menu menu){
logger.info("根据分类:"+menu.getFenlei()+"查询品目信息");
if( !StringUtils.isEmpty(menu.getFenlei())){
List<String> result= menuRepository.getPinmuByFenlei(menu.getFenlei());
logger.info("根据分类:"+menu.getFenlei()+"查询出"+result.size()+"个品目信息");
return result;
}else{
return new ArrayList<>();
}
}
@GetMapping(path = "/getMenu",produces = {"application/json;charset=UTF-8"})
@ResponseBody
public List<Menu> getMenu(Menu menu){
if( !StringUtils.isEmpty(menu.getFenlei())&&!StringUtils.isEmpty(menu.getPinmu())){
return menuRepository.findByFenleiAndPinmu(menu.getFenlei(),menu.getPinmu());
}else{
return new ArrayList<>();
}
}
@GetMapping(path = "/hasYuding",produces = {"application/json;charset=UTF-8"})
@ResponseBody
public Boolean hasYuding(Diancan diancan){
if(!StringUtils.isEmpty(diancan.getZhuohao())){
return diancanRespository.countByZhuohao(diancan.getZhuohao())==1;
}else{
return false;
}
}
}