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