|
@@ -1,28 +1,24 @@
|
|
|
package com.ruoyi.app.order;
|
|
package com.ruoyi.app.order;
|
|
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.ruoyi.app.order.dto.OrderCreateInput;
|
|
import com.ruoyi.app.order.dto.OrderCreateInput;
|
|
|
import com.ruoyi.app.order.dto.OrderCreatItem;
|
|
import com.ruoyi.app.order.dto.OrderCreatItem;
|
|
|
|
|
+import com.ruoyi.app.utils.DateUtil;
|
|
|
import com.ruoyi.common.annotation.Anonymous;
|
|
import com.ruoyi.common.annotation.Anonymous;
|
|
|
import com.ruoyi.common.core.controller.BaseController;
|
|
import com.ruoyi.common.core.controller.BaseController;
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.MessageUtils;
|
|
import com.ruoyi.common.utils.MessageUtils;
|
|
|
-import com.ruoyi.system.domain.OrderParent;
|
|
|
|
|
-import com.ruoyi.system.domain.PosOrder;
|
|
|
|
|
-import com.ruoyi.system.domain.PosStore;
|
|
|
|
|
-import com.ruoyi.system.service.IOrderParentService;
|
|
|
|
|
-import com.ruoyi.system.service.IPosOrderService;
|
|
|
|
|
-import com.ruoyi.system.service.IPosStoreService;
|
|
|
|
|
|
|
+import com.ruoyi.system.domain.*;
|
|
|
|
|
+import com.ruoyi.system.service.*;
|
|
|
import com.ruoyi.system.utils.Auth;
|
|
import com.ruoyi.system.utils.Auth;
|
|
|
import com.ruoyi.system.utils.JwtUtil;
|
|
import com.ruoyi.system.utils.JwtUtil;
|
|
|
-import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
-import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
|
-import org.springframework.web.bind.annotation.RequestHeader;
|
|
|
|
|
-import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
-import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
|
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -43,6 +39,10 @@ public class UserOrderController extends BaseController {
|
|
|
private IPosOrderService posOrderService;
|
|
private IPosOrderService posOrderService;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private IPosStoreService posStoreService;
|
|
private IPosStoreService posStoreService;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IInfoAddressService infoAddressService;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IOperatingHoursService operatingHoursService;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 创建订单
|
|
* 创建订单
|
|
@@ -55,27 +55,41 @@ public class UserOrderController extends BaseController {
|
|
|
{
|
|
{
|
|
|
JwtUtil jwtUtil = new JwtUtil();
|
|
JwtUtil jwtUtil = new JwtUtil();
|
|
|
String id = jwtUtil.getusid(token);
|
|
String id = jwtUtil.getusid(token);
|
|
|
- createOrderParent(input,Long.valueOf(id));
|
|
|
|
|
- createOrderChild(input,Long.valueOf(id));
|
|
|
|
|
- return super.success();
|
|
|
|
|
|
|
+ String shdz=null;
|
|
|
|
|
+ if(input.getType()==0){
|
|
|
|
|
+ InfoAddress usadd = infoAddressService.getById(input.getShdzId());
|
|
|
|
|
+ if (usadd == null) {
|
|
|
|
|
+ throw new ServiceException(MessageUtils.message("no.address.not.exist"));
|
|
|
|
|
+ }
|
|
|
|
|
+ shdz= JSON.toJSONString(usadd);
|
|
|
|
|
+ }
|
|
|
|
|
+ createOrderParent(input,Long.valueOf(id),shdz);
|
|
|
|
|
+ createOrderChild(input,Long.valueOf(id),Long.valueOf(id),shdz);
|
|
|
|
|
+
|
|
|
|
|
+ OrderParent result = orderParentService.getOne(new LambdaQueryWrapper<OrderParent>().eq(OrderParent::getDdId, input.getDdId().toString()));
|
|
|
|
|
+ return super.success(result);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//创建父订单
|
|
//创建父订单
|
|
|
- private void createOrderParent(OrderCreateInput input,Long UserId){
|
|
|
|
|
|
|
+ private void createOrderParent(OrderCreateInput input,Long UserId,String shdz){
|
|
|
OrderParent orderParent = new OrderParent();
|
|
OrderParent orderParent = new OrderParent();
|
|
|
orderParent.setUserId(UserId);
|
|
orderParent.setUserId(UserId);
|
|
|
orderParent.setOrderStatus(0L);
|
|
orderParent.setOrderStatus(0L);
|
|
|
orderParent.setTotalAmount(input.getTotalAmount());
|
|
orderParent.setTotalAmount(input.getTotalAmount());
|
|
|
orderParent.setActualPayAmount(input.getActualPayAmount());
|
|
orderParent.setActualPayAmount(input.getActualPayAmount());
|
|
|
orderParent.setPaymentMethod(input.getPaymentMethod());
|
|
orderParent.setPaymentMethod(input.getPaymentMethod());
|
|
|
- orderParent.setPaymentTime(new Date());
|
|
|
|
|
|
|
+// orderParent.setPaymentTime(new Date());
|
|
|
orderParent.setCreateTime(new Date());
|
|
orderParent.setCreateTime(new Date());
|
|
|
- orderParent.setUpdateTime(new Date());
|
|
|
|
|
|
|
+// orderParent.setUpdateTime(new Date());
|
|
|
orderParent.setDdId(input.getDdId().toString());
|
|
orderParent.setDdId(input.getDdId().toString());
|
|
|
|
|
+ orderParent.setTableNum(input.getTableNum());
|
|
|
|
|
+ orderParent.setShdzId(input.getShdzId());
|
|
|
|
|
+ orderParent.setShAddress(shdz);
|
|
|
|
|
+ orderParent.setType(input.getType());
|
|
|
orderParentService.save(orderParent);
|
|
orderParentService.save(orderParent);
|
|
|
}
|
|
}
|
|
|
//创建子订单
|
|
//创建子订单
|
|
|
- private void createOrderChild(OrderCreateInput input,Long orderParentId){
|
|
|
|
|
|
|
+ private void createOrderChild(OrderCreateInput input,Long orderParentId,Long userId,String shdz){
|
|
|
// 检查items是否为空
|
|
// 检查items是否为空
|
|
|
if (input.getItems() == null || input.getItems().isEmpty()) {
|
|
if (input.getItems() == null || input.getItems().isEmpty()) {
|
|
|
throw new ServiceException(MessageUtils.message("订单商品不能为空"));
|
|
throw new ServiceException(MessageUtils.message("订单商品不能为空"));
|
|
@@ -83,11 +97,18 @@ public class UserOrderController extends BaseController {
|
|
|
String ddId = input.getDdId().toString();
|
|
String ddId = input.getDdId().toString();
|
|
|
List<Long> mdIdList = input.getItems().stream().map(OrderCreatItem::getMdId).collect(Collectors.toList());
|
|
List<Long> mdIdList = input.getItems().stream().map(OrderCreatItem::getMdId).collect(Collectors.toList());
|
|
|
List<PosStore> storeList = posStoreService.list(new LambdaQueryWrapper<PosStore>().in(PosStore::getId, mdIdList));
|
|
List<PosStore> storeList = posStoreService.list(new LambdaQueryWrapper<PosStore>().in(PosStore::getId, mdIdList));
|
|
|
|
|
+ LambdaQueryWrapper<OperatingHours> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ wrapper.in(OperatingHours::getMdId, mdIdList);
|
|
|
|
|
+ List<OperatingHours> hourslist = operatingHoursService.list(wrapper);
|
|
|
|
|
+ DateUtil dateUtil = new DateUtil();
|
|
|
// 循环items,为每个item创建一条PosOrder
|
|
// 循环items,为每个item创建一条PosOrder
|
|
|
for (OrderCreatItem item : input.getItems()) {
|
|
for (OrderCreatItem item : input.getItems()) {
|
|
|
|
|
+ // 检查门店是否开放
|
|
|
|
|
+ checkStoreOpen(storeList,hourslist,item,dateUtil);
|
|
|
int index = input.getItems().indexOf(item) + 1;
|
|
int index = input.getItems().indexOf(item) + 1;
|
|
|
String subddId = ddId+ index;
|
|
String subddId = ddId+ index;
|
|
|
PosOrder posOrder = new PosOrder();
|
|
PosOrder posOrder = new PosOrder();
|
|
|
|
|
+ posOrder.setShdzId(input.getShdzId());
|
|
|
// 设置子订单的基本信息
|
|
// 设置子订单的基本信息
|
|
|
posOrder.setDdId(Long.parseLong(subddId));
|
|
posOrder.setDdId(Long.parseLong(subddId));
|
|
|
posOrder.setParentDdId(input.getDdId().toString()); // 设置父订单ID
|
|
posOrder.setParentDdId(input.getDdId().toString()); // 设置父订单ID
|
|
@@ -97,22 +118,69 @@ public class UserOrderController extends BaseController {
|
|
|
posOrder.setShId(item.getShId());
|
|
posOrder.setShId(item.getShId());
|
|
|
posOrder.setMdId(item.getMdId());
|
|
posOrder.setMdId(item.getMdId());
|
|
|
posOrder.setShdzId(input.getShdzId());
|
|
posOrder.setShdzId(input.getShdzId());
|
|
|
- posOrder.setUserId(orderParentId); // 使用父订单的用户ID
|
|
|
|
|
|
|
+ posOrder.setUserId(userId);
|
|
|
posOrder.setAmount(item.getAmount());
|
|
posOrder.setAmount(item.getAmount());
|
|
|
posOrder.setRemarks(item.getRemarks());
|
|
posOrder.setRemarks(item.getRemarks());
|
|
|
posOrder.setType(item.getType());
|
|
posOrder.setType(item.getType());
|
|
|
posOrder.setDelryTime(item.getDelryTime());
|
|
posOrder.setDelryTime(item.getDelryTime());
|
|
|
- posOrder.setFood(item.getFood());
|
|
|
|
|
|
|
+ posOrder.setFood(JSON.toJSONString(item.getFood()));
|
|
|
|
|
+ if("1".equals(input.getPaymentMethod())){
|
|
|
|
|
+ posOrder.setCollectPayment("1");
|
|
|
|
|
+ }
|
|
|
// 设置支付相关信息(从父订单继承)
|
|
// 设置支付相关信息(从父订单继承)
|
|
|
posOrder.setPayType(input.getPaymentMethod());
|
|
posOrder.setPayType(input.getPaymentMethod());
|
|
|
|
|
+ //设置桌号(从父订单继承)
|
|
|
|
|
+ posOrder.setTableNum(input.getTableNum());
|
|
|
|
|
+ posOrder.setLogo(item.getLogo());
|
|
|
|
|
+ posOrder.setPosName(item.getPosName());
|
|
|
|
|
+ posOrder.setJvli(item.getJvli());
|
|
|
|
|
+ posOrder.setFreight(item.getFreight());
|
|
|
|
|
+ posOrder.setShdzId(input.getShdzId());
|
|
|
|
|
+ posOrder.setShAddress(shdz);
|
|
|
//设置订单分类
|
|
//设置订单分类
|
|
|
- storeList.stream().filter(store -> Long.valueOf(store.getId()).equals(item.getMdId())).findFirst().ifPresent(st -> {
|
|
|
|
|
|
|
+ storeList.stream().filter(s -> Long.valueOf(s.getId()).equals(item.getMdId())).findFirst().ifPresent(st -> {
|
|
|
posOrder.setOrderCategory(String.valueOf(st.getType()));
|
|
posOrder.setOrderCategory(String.valueOf(st.getType()));
|
|
|
});
|
|
});
|
|
|
// 保存子订单
|
|
// 保存子订单
|
|
|
posOrderService.save(posOrder);
|
|
posOrderService.save(posOrder);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 检查门店是否开放
|
|
|
|
|
+ */
|
|
|
|
|
+ private void checkStoreOpen( List<PosStore> storeList,List<OperatingHours> hourslist, OrderCreatItem item, DateUtil dateUtil) {
|
|
|
|
|
+ List<OperatingHours> storeHourslist = hourslist.stream().filter(x-> x.getMdId().equals(item.getMdId())).collect(Collectors.toList());
|
|
|
|
|
+ PosStore store = storeList.stream().filter(x-> Long.valueOf(x.getId()).equals(item.getMdId())).findFirst().get();
|
|
|
|
|
+ if (storeHourslist.isEmpty()) {
|
|
|
|
|
+ throw new ServiceException(store.getPosName()+MessageUtils.message("no.mendian.not.set.business.hours"));
|
|
|
|
|
+ }
|
|
|
|
|
+ if (store.getState() == 1) {
|
|
|
|
|
+ throw new ServiceException(store.getPosName()+MessageUtils.message("no.mendian.is.closed"));
|
|
|
|
|
+ }
|
|
|
|
|
+ Boolean dayang = false;
|
|
|
|
|
+ for (int i = 0; i < hourslist.size(); i++) {
|
|
|
|
|
+ Boolean sbsj = dateUtil.isLegalTime(hourslist.get(i).getStartTime(), hourslist.get(i).getEndTime());
|
|
|
|
|
+ if (sbsj == true) {
|
|
|
|
|
+ dayang = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (dayang == false) {
|
|
|
|
|
+ throw new ServiceException(store.getPosName()+MessageUtils.message("no.mendian.is.closed"));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取父订单详情
|
|
|
|
|
+ */
|
|
|
|
|
+ @GetMapping("/getParentOrderDetail")
|
|
|
|
|
+ @Auth
|
|
|
|
|
+ @Anonymous
|
|
|
|
|
+ public AjaxResult getParentOrderDetail(@RequestHeader String token, @RequestParam String ddId){
|
|
|
|
|
+ OrderParent result = orderParentService.getOne(new LambdaQueryWrapper<OrderParent>().eq(OrderParent::getDdId,ddId));
|
|
|
|
|
+ List<PosOrder> posOrders = posOrderService.list(new LambdaQueryWrapper<PosOrder>().eq(PosOrder::getParentDdId,ddId).orderBy(true,true,PosOrder::getCretim));
|
|
|
|
|
+ result.setItems(posOrders);
|
|
|
|
|
+ return super.success(result);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|