package com.ruoyi.applet.contoller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.h5.service.H5OrderService; import com.cyl.h5.service.H5PetCareService; import com.cyl.h5.service.H5PetService; import com.cyl.manager.oms.domain.OmsOrderService; import com.cyl.manager.oms.domain.OrderItem; import com.cyl.manager.oms.mapper.OmsOrderServiceMapper; import com.cyl.manager.oms.mapper.OrderItemMapper; import com.cyl.manager.oms.mapper.OrderMapper; import com.cyl.manager.oms.service.OrderService; import com.cyl.manager.ums.domain.Pet; import com.cyl.manager.ums.domain.PetCare; import com.cyl.manager.ums.mapper.PetMapper; import com.cyl.manager.ums.pojo.vo.PetVO; import com.ruoyi.applet.pojo.dto.AppletOrderDateVo; import com.ruoyi.applet.pojo.vo.AppletOrderDateAddressReturn; import com.ruoyi.applet.pojo.vo.AppletOrderDateVoReturn; import com.ruoyi.applet.service.IMallOrderService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.model.domain.*; import com.ruoyi.model.service.*; import com.ruoyi.model.service.impl.AppletOrderItemServiceImpl; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.Synchronized; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @Api(description = "订单模块 - 接单大厅流程") @RestController @RequestMapping("/applet/order") public class ApiAppletOrderController extends BaseController { @Autowired private IAppletOrderService appletOrderService; @Autowired private IAppletOrderItemService appletOrderItemService; @Autowired private IAppUsersService appUsersService; @Autowired private IAppletUsersTeacherService appletUsersTeacherService; @Autowired private IAppletConfigService configService; @Autowired private IMallOrderService mallOrderService; @Autowired private IAppletOrderItemDateService appletOrderItemDateService; //下单小程序:那边来的订单信息 @Autowired private H5OrderService h5OrderService; @Autowired private OrderService service; @Autowired private AppletOrderItemServiceImpl appletOrderItemServiceImpl; @Autowired private H5PetService h5PetService; @Autowired private H5PetCareService petCareService; @Autowired private PetMapper petMapper; @Autowired private OrderMapper orderMapper; @Autowired private OrderItemMapper orderItemMapper; @Autowired private OmsOrderServiceMapper omsOrderServiceMapper; @Autowired private IAppletOrderDateFrequencyService appletOrderDateFrequencyService; @ApiOperation("接单大厅列表-带分页") @GetMapping("/list") public AjaxResult outDateList(AppletOrder appletOrder){ if(appletOrder.getType()==null){ return AjaxResult.error("type状态不能为空"); } if(appletOrder.getUserIdJson() == null){ return AjaxResult.error("userIdJson用户信息标识不能为空"); } //根据用户标识得到用户信息 AppUsers appUsers = appUsersService.selectAppUsersByUserId(appletOrder.getUserId()); BigDecimal petPayment = new BigDecimal(0); //得到当前用户角色 if(appUsers.getUserBcs()!=0){ //根据当前等级得到当前的返点比例 AppletConfig petPaymentBcs = configService.selectAppletConfigByClassAndNum("pet_payment_bcs", appUsers.getUserBcs()); petPayment = petPaymentBcs.getParamValueNo(); } startPage(); List list = null; List itemList = null; if(appletOrder.getType().equals("0")){ // TODO 这里需要加上伴宠师等级的筛选 list = appletOrderService.selectAppletOrderListLikeUserIdJson(appletOrder); for (AppletOrder order : list) { H5OrderVO h5OrderVO = h5OrderService.orderDetail(order.getOrderId()); // 得到服务信息 List service = h5OrderVO.getOrderServiceList(); // 使用一个 Set 来跟踪已经添加的 PetVO 的 id Set addedPetIds = new HashSet<>(); List petVOList = new ArrayList<>(); for (OmsOrderService service1 : service) { // 宠物标识不为空的时候查询数据 if (service1.getPetId() != null) { PetVO petVO = h5PetService.selectPetById(service1.getPetId()); // 检查 petVO 的 id 是否已经添加过 if (petVO != null && !addedPetIds.contains(petVO.getId())) { service1.setPetVo(petVO); petVOList.add(petVO); addedPetIds.add(petVO.getId()); // 标记该 id 已添加 } } } //得到当前用户角色 if(appUsers.getUserBcs()!=0){ //保留两位小数点 BigDecimal multiply = order.getPrice().multiply(petPayment).setScale(2, RoundingMode.HALF_UP); order.setOrderGive(multiply); }else{ order.setOrderGive(new BigDecimal(0)); } h5OrderVO.setPetVOList(petVOList); order.setH5OrderVO(h5OrderVO); } TableDataInfo dataTable = getDataTable(list); return AjaxResult.success(dataTable); } if (appletOrder.getType().equals("1")){ AppletOrder orderQ = new AppletOrder(); orderQ.setUserIdJson(appletOrder.getUserIdJson()); orderQ.setType("1"); orderQ.setStatus(0); list = appletOrderService.selectAppletOrderList(orderQ); for (AppletOrder order : list) { H5OrderVO h5OrderVO = h5OrderService.orderDetail(order.getOrderId()); // 得到服务信息 List service = h5OrderVO.getOrderServiceList(); // 使用一个 Set 来跟踪已经添加的 PetVO 的 id Set addedPetIds = new HashSet<>(); List petVOList = new ArrayList<>(); for (OmsOrderService service1 : service) { // 宠物标识不为空的时候查询数据 if (service1.getPetId() != null) { PetVO petVO = h5PetService.selectPetById(service1.getPetId()); // 检查 petVO 的 id 是否已经添加过 if (petVO != null && !addedPetIds.contains(petVO.getId())) { service1.setPetVo(petVO); petVOList.add(petVO); addedPetIds.add(petVO.getId()); // 标记该 id 已添加 } } } //得到当前用户角色 if(appUsers.getUserBcs()!=0){ //保留两位小数点 BigDecimal multiply = order.getPrice().multiply(petPayment).setScale(2, RoundingMode.HALF_UP); order.setOrderGive(multiply); }else{ order.setOrderGive(new BigDecimal(0)); } h5OrderVO.setPetVOList(petVOList); order.setH5OrderVO(h5OrderVO); } TableDataInfo dataTable = getDataTable(list); return AjaxResult.success(dataTable); } if (appletOrder.getType().equals("2")){ AppletOrderItem appletOrderItem = new AppletOrderItem(); appletOrderItem.setStatus(2); appletOrderItem.setUserId(appletOrder.getUserId()); itemList = appletOrderItemService.selectAppletOrderItemList(appletOrderItem); for (AppletOrderItem orderItem:itemList){ H5OrderVO h5OrderVO = h5OrderService.orderDetail(orderItem.getOrderId()); // 得到服务信息 List service = h5OrderVO.getOrderServiceList(); // 使用一个 Set 来跟踪已经添加的 PetVO 的 id Set addedPetIds = new HashSet<>(); List petVOList = new ArrayList<>(); for (OmsOrderService service1 : service) { // 宠物标识不为空的时候查询数据 if (service1.getPetId() != null) { PetVO petVO = h5PetService.selectPetById(service1.getPetId()); // 检查 petVO 的 id 是否已经添加过 if (petVO != null && !addedPetIds.contains(petVO.getId())) { service1.setPetVo(petVO); petVOList.add(petVO); addedPetIds.add(petVO.getId()); // 标记该 id 已添加 } } } orderItem.setOrderGive(orderItem.getOrderGivePrice()); h5OrderVO.setPetVOList(petVOList); orderItem.setH5OrderVO(h5OrderVO); } TableDataInfo dataTable = getDataTable(itemList); return AjaxResult.success(dataTable); } return AjaxResult.success(); } //接单大厅 - 根据订单标识查询订单详情的接口 @ApiOperation("接单大厅 - 根据订单标识查询订单详情的接口") @GetMapping("/getByOrderId") public AjaxResult getByOrderId(AppletOrder appletOrder){ if(appletOrder.getId() == null){ return AjaxResult.error("订单标识不能为空"); } if(appletOrder.getUserId() == null){ return AjaxResult.error("用户标识不能为空"); } //根据用户标识得到用户信息 AppUsers appUsers = appUsersService.selectAppUsersByUserId(appletOrder.getUserId()); BigDecimal petPayment = new BigDecimal(0); //得到当前用户角色 if(appUsers.getUserBcs()!=0){ //根据当前等级得到当前的返点比例 AppletConfig petPaymentBcs = configService.selectAppletConfigByClassAndNum("pet_payment_bcs", appUsers.getUserBcs()); petPayment = petPaymentBcs.getParamValueNo(); } AppletOrder order = appletOrderService.selectAppletOrderById(appletOrder.getId()); //如果是流失订单 if (order==null){ // AppletOrderItem orderQ = new AppletOrderItem(); // orderQ.setUserId(appletOrder.getUserId()); // orderQ.setOrderId(appletOrder.getOrderId()); AppletOrderItem orderItem = appletOrderItemService.selectAppletOrderItemById(appletOrder.getId()); H5OrderVO h5OrderVO = h5OrderService.orderDetail(orderItem.getOrderId()); // 得到服务信息 List service = h5OrderVO.getOrderServiceList(); // 使用一个 Set 来跟踪已经添加的 PetVO 的 id Set addedPetIds = new HashSet<>(); List petVOList = new ArrayList<>(); for (OmsOrderService service1 : service) { // 宠物标识不为空的时候查询数据 if (service1.getPetId() != null) { PetVO petVO = h5PetService.selectPetById(service1.getPetId()); // 检查 petVO 的 id 是否已经添加过 if (petVO != null && !addedPetIds.contains(petVO.getId())) { service1.setPetVo(petVO); petVOList.add(petVO); addedPetIds.add(petVO.getId()); // 标记该 id 已添加 } } } //得到当前用户角色 if(appUsers.getUserBcs()!=0){ //保留两位小数点 BigDecimal multiply = orderItem.getPrice().multiply(petPayment).setScale(2, RoundingMode.HALF_UP); orderItem.setOrderGive(multiply); }else{ orderItem.setOrderGive(new BigDecimal(0)); } h5OrderVO.setPetVOList(petVOList); orderItem.setH5OrderVO(h5OrderVO); // order.setManagerOrderDetailVO(service.selectById(order.getOrderId())); Map map = new HashMap(); map.put("order",orderItem); AppletConfig config = new AppletConfig(); config.setParamClass("pet_payment_bcs"); List appletConfigs = configService.selectAppletConfigList(config); map.put("pet_payment_bcs",appletConfigs); return AjaxResult.success("接单大厅查看详情",map); } H5OrderVO h5OrderVO = h5OrderService.orderDetail(order.getOrderId()); // 得到服务信息 List service = h5OrderVO.getOrderServiceList(); // 使用一个 Set 来跟踪已经添加的 PetVO 的 id Set addedPetIds = new HashSet<>(); List petVOList = new ArrayList<>(); for (OmsOrderService service1 : service) { // 宠物标识不为空的时候查询数据 if (service1.getPetId() != null) { PetVO petVO = h5PetService.selectPetById(service1.getPetId()); // 检查 petVO 的 id 是否已经添加过 if (petVO != null && !addedPetIds.contains(petVO.getId())) { service1.setPetVo(petVO); petVOList.add(petVO); addedPetIds.add(petVO.getId()); // 标记该 id 已添加 } } } //得到当前用户角色 if(appUsers.getUserBcs()!=0){ //保留两位小数点 BigDecimal multiply = order.getPrice().multiply(petPayment).setScale(2, RoundingMode.HALF_UP); order.setOrderGive(multiply); }else{ order.setOrderGive(new BigDecimal(0)); } h5OrderVO.setPetVOList(petVOList); order.setH5OrderVO(h5OrderVO); // order.setManagerOrderDetailVO(service.selectById(order.getOrderId())); Map map = new HashMap(); map.put("order",order); AppletConfig config = new AppletConfig(); config.setParamClass("pet_payment_bcs"); List appletConfigs = configService.selectAppletConfigList(config); map.put("pet_payment_bcs",appletConfigs); return AjaxResult.success("接单大厅查看详情",map); } //接单大厅 - 拒绝、无法接单 @ApiOperation("接单大厅 - 拒绝、无法接单") @PostMapping("/endByOrderId") public AjaxResult endByOrderId(@RequestBody AppletOrder appletOrder){ if(appletOrder.getId() == null){ return AjaxResult.error("订单标识不能为空"); } if(appletOrder.getUserId() == null){ return AjaxResult.error("userId用户信息标识不能为空"); } if(appletOrder.getReason() == null){ return AjaxResult.error("无法接单原因不能为空"); } AppletOrder order = appletOrderService.selectAppletOrderById(appletOrder.getId()); //生成我的订单信息 AppletOrderItem appletOrderItem = new AppletOrderItem(); appletOrderItem.setCreateTime(order.getCreateTime()); appletOrderItem.setType(order.getType()); appletOrderItem.setStatus(2); appletOrderItem.setReason(appletOrder.getReason()); // appletOrderItem.setStartTime(LocalDateTime.now()); appletOrderItem.setUserId(appletOrder.getUserId()); //根据用户标识查询用户认证信息 AppUsers appUsers = appUsersService.selectAppUsersByUserId(appletOrder.getUserId()); AppletUsersTeacher appletUsersTeacher = appletUsersTeacherService.selectAppletUsersTeacherByUserId(appletOrder.getUserId()); appletOrderItem.setName(appletUsersTeacher.getName()); appletOrderItem.setPhone(appletUsersTeacher.getPhone()); appletOrderItem.setOrderStatus(3); //相当于已经取消 //得到当前用户的伴宠师等级 Integer userBcs = appUsers.getUserBcs(); //查询用户的当前分配比例 AppletConfig petPaymentBcs = configService.selectAppletConfigByClassAndNum("pet_payment_bcs", userBcs); //得到配置百分比 BigDecimal percent = petPaymentBcs.getParamValueNo(); //得到订单支付金额 BigDecimal orderPrice = order.getPrice(); //计算订单佣金 = 支付金额 * 百分比 BigDecimal orderGivePrice = orderPrice.multiply(percent); appletOrderItem.setPrice(orderPrice); appletOrderItem.setOrderGiveProportion(percent); appletOrderItem.setOrderGivePrice(orderGivePrice); appletOrderItem.setAddress(order.getAddress()); appletOrderItem.setOrderSn(order.getOrderSn()); appletOrderItem.setOrderId(order.getOrderId()); appletOrderItem.setIsPet(0); appletOrderItem.setIsDate(0); appletOrderItem.setIsAddress(0); appletOrderItem.setPayTime(order.getPayTime()); appletOrderItemService.insertAppletOrderItem(appletOrderItem); appletOrder.setType("0");//派单归为派单中 appletOrder.setStatus(0); appletOrder.setNum(order.getNum()+1); appletOrder.setUpdateTime(LocalDateTime.now()); //根据系统派单规则给到所有的接单者 、、还需要修改现在给所有人 //appletUserId 用json形式储存 == 》这个地方还需要调优 AppUsers usersGo = new AppUsers(); usersGo.setUserBcs(1); List appUsersList = appUsersService.selectAppUsersList(usersGo); //得到所有的伴宠师id String appletUserId = ""; for (AppUsers users : appUsersList) { if(!appletOrder.getUserId().equals(users.getUserId())){ appletUserId += users.getUserId()+","; } } appletOrder.setUserIdJson(appletUserId); //清空接单人字段 appletOrder.setUserIdJson(""); appletOrderService.updateAppletOrder(appletOrder); return AjaxResult.success("拒单成功",appletOrder); } //接单大厅 - 立即接单 @ApiOperation("接单大厅 - 立即接单") @PostMapping("/startByOrderId") @Synchronized @Transactional public AjaxResult startByOrderId(@RequestBody AppletOrder appletOrder){ if(appletOrder.getId() == null){ return AjaxResult.error("订单标识不能为空"); } if(appletOrder.getUserId() == null){ return AjaxResult.error("userId用户信息标识不能为空"); } AppletOrder order = appletOrderService.selectAppletOrderById(appletOrder.getId()); if(order.getStatus() == 1){ return AjaxResult.error("该订单已被接单"); } //生成我的订单信息 AppletOrderItem appletOrderItem = new AppletOrderItem(); long id = System.currentTimeMillis(); appletOrderItem.setId(id); appletOrderItem.setCreateTime(order.getCreateTime()); appletOrderItem.setType(order.getType()); appletOrderItem.setStatus(1); // appletOrderItem.setReason(appletOrder.getReason()); appletOrderItem.setStartTime(LocalDateTime.now()); appletOrderItem.setUserId(appletOrder.getUserId()); //根据用户标识查询用户认证信息 AppUsers appUsers = appUsersService.selectAppUsersByUserId(appletOrder.getUserId()); AppletUsersTeacher appletUsersTeacher = appletUsersTeacherService.selectAppletUsersTeacherByUserId(appletOrder.getUserId()); appletOrderItem.setName(appletUsersTeacher.getName()); appletOrderItem.setPhone(appletUsersTeacher.getPhone()); appletOrderItem.setOrderStatus(0); //得到当前用户的伴宠师等级 Integer userBcs = appUsers.getUserBcs(); //查询用户的当前分配比例 AppletConfig petPaymentBcs = configService.selectAppletConfigByClassAndNum("pet_payment_bcs", userBcs); //得到配置百分比 BigDecimal percent = petPaymentBcs.getParamValueNo(); //得到订单支付金额 BigDecimal orderPrice = order.getPrice(); //计算订单佣金 = 支付金额 * 百分比 BigDecimal orderGivePrice = orderPrice.multiply(percent); appletOrderItem.setPrice(orderPrice); appletOrderItem.setOrderGiveProportion(percent); appletOrderItem.setOrderGivePrice(orderGivePrice); appletOrderItem.setAddress(order.getAddress()); appletOrderItem.setOrderSn(order.getOrderSn()); appletOrderItem.setOrderId(order.getOrderId()); appletOrderItem.setIsPet(1); appletOrderItem.setIsDate(1); appletOrderItem.setIsAddress(1); appletOrderItemService.insertAppletOrderItem(appletOrderItem); appletOrder.setStatus(1); appletOrderService.updateAppletOrder(appletOrder); H5OrderVO h5OrderVO = h5OrderService.orderDetail(order.getOrderId()); //根据服务频率 服务日期 生成日订单 for (OmsOrderService service : h5OrderVO.getOrderServiceList()) { AppletOrderItemDate appletOrderItemDate = new AppletOrderItemDate(); appletOrderItemDate.setUserId(appletOrder.getUserId()); appletOrderItemDate.setOrderId(id); appletOrderItemDate.setStatus(0); appletOrderItemDate.setOrderServiceId(service.getId()); appletOrderItemDate.setServiceDate(service.getServiceDate()); appletOrderItemDate.setCityAddress(h5OrderVO.getReceiverProvince() + h5OrderVO.getReceiverCity() + h5OrderVO.getReceiverDistrict()); appletOrderItemDate.setAddress(h5OrderVO.getReceiverDetailAddress()); appletOrderItemDateService.insertAppletOrderItemDate(appletOrderItemDate); } //生成其他人的流失订单 String[] split = order.getUserIdJson().split(","); for (String s : split) { if (Long.parseLong(s) != appletOrder.getUserId()) { AppletOrderItem appletOrderItemOther = new AppletOrderItem(); appletOrderItemOther.setCreateTime(order.getCreateTime()); appletOrderItemOther.setType(order.getType()); appletOrderItemOther.setStatus(2); appletOrderItemOther.setReason("被其他伴宠师接单"); appletOrderItemOther.setUserId(Long.valueOf(s)); //根据用户标识查询用户认证信息 AppUsers appUsersOther = appUsersService.selectAppUsersByUserId(Long.valueOf(s)); AppletUsersTeacher appletUsersTeacherOther = appletUsersTeacherService.selectAppletUsersTeacherByUserId(Long.valueOf(s)); appletOrderItemOther.setName(appletUsersTeacherOther.getName()); appletOrderItemOther.setPhone(appletUsersTeacherOther.getPhone()); appletOrderItemOther.setOrderStatus(3); //相当于已经取消 //得到当前用户的伴宠师等级 Integer userBcsOther = appUsersOther.getUserBcs(); //查询用户的当前分配比例 AppletConfig petPaymentBcsOther = configService.selectAppletConfigByClassAndNum("pet_payment_bcs", userBcsOther); //得到配置百分比 BigDecimal percentOther = petPaymentBcsOther.getParamValueNo(); //得到订单支付金额 BigDecimal orderPriceOther = order.getPrice(); //计算订单佣金 = 支付金额 * 百分比 BigDecimal orderGivePriceOther = orderPriceOther.multiply(percentOther); appletOrderItemOther.setPrice(orderPrice); appletOrderItemOther.setOrderGiveProportion(percent); appletOrderItemOther.setOrderGivePrice(orderGivePriceOther); appletOrderItemOther.setAddress(order.getAddress()); appletOrderItemOther.setOrderSn(order.getOrderSn()); appletOrderItemOther.setOrderId(order.getOrderId()); appletOrderItemOther.setIsPet(0); appletOrderItemOther.setIsDate(0); appletOrderItemOther.setIsAddress(0); appletOrderItemOther.setPayTime(order.getPayTime()); appletOrderItemService.insertAppletOrderItem(appletOrderItemOther); } } appletOrderDateFrequencyService.aceptOrdersGenerateDayOrdersByOrderVO(h5OrderVO, appletOrder.getUserId()); return AjaxResult.success("接单成功",appletOrder); } //我的订单流程 @ApiOperation("小程序-我的订单流程-总订单") @GetMapping("/myList") public AjaxResult myList(AppletOrderItem orderItem){ if(orderItem.getOrderStatus()==null){ return AjaxResult.error("orderStatus状态不能为空"); } if(orderItem.getUserId() == null){ return AjaxResult.error("userId用户信息标识不能为空"); } List itemList = appletOrderItemService.selectAppletOrderItemList(orderItem); // for (AppletOrderItem item:itemList){ // H5OrderVO h5OrderVO = h5OrderService.orderDetail(item.getOrderId()); // //得到服务信息 // List service = h5OrderVO.getOrderServiceList(); // List petVOList = new ArrayList<>(); // for (OmsOrderService service1:service){ // //宠物标识不为空的时候查询数据 // if(service1.getPetId()!=null){ // PetVO petVO = h5PetService.selectPetById(service1.getPetId()); // service1.setPetVo(petVO); // petVOList.add(petVO); // } // } // h5OrderVO.setPetVOList(petVOList); // item.setH5OrderVO(h5OrderVO); // } for (AppletOrderItem item:itemList){ H5OrderVO h5OrderVO = h5OrderService.orderDetail(item.getOrderId()); // 得到服务信息 List service = h5OrderVO.getOrderServiceList(); // 使用一个 Set 来跟踪已经添加的 PetVO 的 id Set addedPetIds = new HashSet<>(); List petVOList = new ArrayList<>(); for (OmsOrderService service1 : service) { // 宠物标识不为空的时候查询数据 if (service1.getPetId() != null) { PetVO petVO = h5PetService.selectPetById(service1.getPetId()); // 检查 petVO 的 id 是否已经添加过 if (petVO != null && !addedPetIds.contains(petVO.getId())) { service1.setPetVo(petVO); petVOList.add(petVO); addedPetIds.add(petVO.getId()); // 标记该 id 已添加 } } } h5OrderVO.setPetVOList(petVOList); item.setH5OrderVO(h5OrderVO); } TableDataInfo dataTable = getDataTable(itemList); return AjaxResult.success("我的订单数据列表",dataTable); } // // //我的订单流程 // @ApiOperation("小程序-我的订单流程-日订单") // @GetMapping("/myDateList") // public AjaxResult myDateList(AppletOrderDateVo dateVo){ // if(dateVo.getUserId() == null){ // return AjaxResult.error("userId用户标识不能为空"); // } // if(dateVo.getStatus() == null){ // return AjaxResult.error("status当前状态不能为空"); // } // // //查询我所有的日订单数据 // AppletOrderItemDate date = new AppletOrderItemDate(); // date.setUserId(dateVo.getUserId()); // date.setStatus(dateVo.getStatus()); // List addressList = appletOrderItemDateService.selectAppletOrderItemDateList(date); // // Set uniqueDates = new HashSet<>(); // List dateVoReturnList = new ArrayList<>(); // // for (AppletOrderItemDate date1 : addressList) { // if (uniqueDates.add(date1.getServiceDate())) { // AppletOrderDateVoReturn dateVoReturn = new AppletOrderDateVoReturn(); // dateVoReturn.setServiceDate(date1.getServiceDate()); // // if(dateVo.getStatus() == 1){ // AppletOrderItem orders = appletOrderItemService.selectAppletOrderItemById(date1.getOrderId()); // if(orders.getOrderStatus()==2){ // dateVoReturnList.add(dateVoReturn); // } // }else{ // dateVoReturnList.add(dateVoReturn); // } // // } // } // // // //得到日订单集合 // for (AppletOrderDateVoReturn dateVoReturn : dateVoReturnList) { // //得到日订单日期 // String serviceDate = dateVoReturn.getServiceDate(); // // //订单下订单集合 // AppletOrderItemDate service = new AppletOrderItemDate(); // service.setServiceDate(serviceDate); // // List serviceList = appletOrderItemDateService.selectAppletOrderItemDateList(service); // List uniqueOrderDetails = serviceList.stream() // .collect(Collectors.toMap( // AppletOrderItemDate::getOrderId, // 使用orderId作为键 // item -> new AppletOrderDateAddressReturn(item.getOrderId(), item.getCityAddress(), item.getAddress()), // 创建OrderDetails对象作为值 // (existing, replacement) -> existing // 如果有重复的orderId,保留现有的(可以根据需要修改合并逻辑) // )) // .values() // .stream() // .collect(Collectors.toList()); // // 假设dateVoReturn有一个setOrderList方法 // // dateVoReturn.setOrderList(uniqueOrderDetails); // dateVoReturn.setNum(uniqueOrderDetails.size()); // // for (AppletOrderDateAddressReturn uniqueOrderDetail : uniqueOrderDetails) { // AppletOrderItemDate appletOrderItemDate = new AppletOrderItemDate(); // appletOrderItemDate.setOrderId(uniqueOrderDetail.getOrderId()); // appletOrderItemDate.setServiceDate(serviceDate); // // // List appletOrderItemDates = appletOrderItemDateService.selectAppletOrderItemDateList(appletOrderItemDate); // for (AppletOrderItemDate appletOrderItemDate1 : appletOrderItemDates) { // // 组装item // QueryWrapper orderItemQw = new QueryWrapper<>(); // orderItemQw.eq("order_service_id", appletOrderItemDate1.getOrderServiceId()); // List orderItemList = orderItemMapper.selectList(orderItemQw); // appletOrderItemDate1.setOrderItemList(orderItemList); // // // OmsOrderService omsOrderService = omsOrderServiceMapper.selectById(appletOrderItemDate1.getOrderServiceId()); // omsOrderService.setPetVo(h5PetService.selectPetById(omsOrderService.getPetId())); // appletOrderItemDate1.setOrderServiceList(omsOrderService); // } // // uniqueOrderDetail.setAppletOrderItemDate(appletOrderItemDates); // // // // } // // // } // // // // // // // // return AjaxResult.success("日订单数据",dateVoReturnList); // } @ApiOperation("小程序-我的订单流程-日订单") @GetMapping("/myDateList") public AjaxResult myDateList(AppletOrderDateVo dateVo) { if (dateVo.getUserId() == null) { return AjaxResult.error("userId用户标识不能为空"); } if (dateVo.getStatus() == null) { return AjaxResult.error("status当前状态不能为空"); } // 查询我所有的日订单数据 AppletOrderItemDate date = new AppletOrderItemDate(); date.setUserId(dateVo.getUserId()); date.setStatus(dateVo.getStatus()); List addressList = appletOrderItemDateService.selectAppletOrderItemDateList(date); // 用于存储按日期分组的订单 Map> dateToOrdersMap = new HashMap<>(); for (AppletOrderItemDate dateItem : addressList) { String serviceDate = dateItem.getServiceDate(); dateToOrdersMap.computeIfAbsent(serviceDate, k -> new ArrayList<>()).add(dateItem); } List dateVoReturnList = new ArrayList<>(); // 遍历每个日期 for (Map.Entry> entry : dateToOrdersMap.entrySet()) { String serviceDate = entry.getKey(); List ordersForDate = entry.getValue(); // 遍历该日期的所有订单 for (AppletOrderItemDate orderItemDate : ordersForDate) { AppletOrderDateVoReturn dateVoReturn = new AppletOrderDateVoReturn(); dateVoReturn.setServiceDate(serviceDate); if (dateVo.getStatus() == 1) { AppletOrderItem orders = appletOrderItemService.selectAppletOrderItemById(orderItemDate.getOrderId()); if (orders.getOrderStatus() == 2) { // 直接添加,不进行过滤 dateVoReturnList.add(dateVoReturn); } } else { dateVoReturnList.add(dateVoReturn); } // 设置订单详情 List orderDetailsList = new ArrayList<>(); AppletOrderDateAddressReturn orderDetails = new AppletOrderDateAddressReturn( orderItemDate.getOrderId(), orderItemDate.getCityAddress(), orderItemDate.getAddress() ); orderDetailsList.add(orderDetails); dateVoReturn.setOrderList(orderDetailsList); dateVoReturn.setNum(orderDetailsList.size()); // 设置订单项 AppletOrderItemDate appletOrderItemDate = new AppletOrderItemDate(); appletOrderItemDate.setOrderId(orderItemDate.getOrderId()); appletOrderItemDate.setServiceDate(serviceDate); List appletOrderItemDates = appletOrderItemDateService.selectAppletOrderItemDateList(appletOrderItemDate); for (AppletOrderItemDate itemDate : appletOrderItemDates) { QueryWrapper orderItemQw = new QueryWrapper<>(); orderItemQw.eq("order_service_id", itemDate.getOrderServiceId()); List orderItemList = orderItemMapper.selectList(orderItemQw); itemDate.setOrderItemList(orderItemList); OmsOrderService omsOrderService = omsOrderServiceMapper.selectById(itemDate.getOrderServiceId()); omsOrderService.setPetVo(h5PetService.selectPetById(omsOrderService.getPetId())); itemDate.setOrderServiceList(omsOrderService); } orderDetails.setAppletOrderItemDate(appletOrderItemDates); } } return AjaxResult.success("日订单数据", dateVoReturnList); } // // @ApiOperation("小程序-我的订单流程-日订单") // @GetMapping("/myDateList") // public AjaxResult myDateList(AppletOrderDateVo dateVo) { // if (dateVo.getUserId() == null) { // return AjaxResult.error("userId用户标识不能为空"); // } // if (dateVo.getStatus() == null) { // return AjaxResult.error("status当前状态不能为空"); // } // // // 查询我所有的日订单数据 // AppletOrderItemDate date = new AppletOrderItemDate(); // date.setUserId(dateVo.getUserId()); // date.setStatus(dateVo.getStatus()); // List addressList = appletOrderItemDateService.selectAppletOrderItemDateList(date); // // // 用于存储按日期分组的订单 // Map> dateToOrdersMap = new HashMap<>(); // // for (AppletOrderItemDate dateItem : addressList) { // String serviceDate = dateItem.getServiceDate(); // dateToOrdersMap.computeIfAbsent(serviceDate, k -> new ArrayList<>()).add(dateItem); // } // // List dateVoReturnList = new ArrayList<>(); // // // 遍历每个日期 // for (Map.Entry> entry : dateToOrdersMap.entrySet()) { // String serviceDate = entry.getKey(); // List ordersForDate = entry.getValue(); // // // 创建一个合并的订单对象 // AppletOrderDateVoReturn dateVoReturn = new AppletOrderDateVoReturn(); // dateVoReturn.setServiceDate(serviceDate); // // // 合并订单的地址信息(假设所有订单地址相同,或者选择第一个订单的地址) // if (!ordersForDate.isEmpty()) { // AppletOrderItemDate firstOrder = ordersForDate.get(0); // AppletOrderDateAddressReturn orderDetails = new AppletOrderDateAddressReturn( // firstOrder.getOrderId(), // firstOrder.getCityAddress(), // firstOrder.getAddress() // ); // // List orderDetailsList = new ArrayList<>(); // orderDetailsList.add(orderDetails); // // dateVoReturn.setOrderList(orderDetailsList); // dateVoReturn.setNum(ordersForDate.size()); // 设置订单数量 // // // 设置订单项 // List appletOrderItemDates = new ArrayList<>(); // for (AppletOrderItemDate orderItemDate : ordersForDate) { // AppletOrderItemDate itemDate = new AppletOrderItemDate(); // itemDate.setOrderId(orderItemDate.getOrderId()); // itemDate.setServiceDate(serviceDate); // // // 查询订单项信息 // QueryWrapper orderItemQw = new QueryWrapper<>(); // orderItemQw.eq("order_service_id", itemDate.getOrderServiceId()); // List orderItemList = orderItemMapper.selectList(orderItemQw); // itemDate.setOrderItemList(orderItemList); // // OmsOrderService omsOrderService = omsOrderServiceMapper.selectById(itemDate.getOrderServiceId()); // omsOrderService.setPetVo(h5PetService.selectPetById(omsOrderService.getPetId())); // itemDate.setOrderServiceList(omsOrderService); // // appletOrderItemDates.add(itemDate); // } // // orderDetails.setAppletOrderItemDate(appletOrderItemDates); // } // // // 添加合并后的订单到结果列表 // dateVoReturnList.add(dateVoReturn); // } // // return AjaxResult.success("日订单数据", dateVoReturnList); // } //我的订单流程 @ApiOperation("小程序-我的订单流程订单详情") @GetMapping("/getOrderItemById") public AjaxResult getOrderItemById(AppletOrderItem orderItem){ if(orderItem.getId() == null){ return AjaxResult.error("订单标识不能为空"); } if(orderItem.getUserId() == null){ return AjaxResult.error("用户标识不能为空"); } AppletOrderItem order = appletOrderItemService.selectAppletOrderItemById(orderItem.getId()); // H5OrderVO h5OrderVO1 = h5OrderService.orderDetail(order.getOrderId()); H5OrderVO h5OrderVO = h5OrderService.orderDetail(order.getOrderId()); //得到服务信息 List service = h5OrderVO.getOrderServiceList(); List petVOList = new ArrayList<>(); for (OmsOrderService service1:service){ //宠物标识不为空的时候查询数据 if(service1.getPetId()!=null){ PetVO petVO = h5PetService.selectPetById(service1.getPetId()); service1.setPetVo(petVO); petVOList.add(petVO); } h5OrderVO.setPetVOList(petVOList); } order.setH5OrderVO(h5OrderVO); // order.setManagerOrderDetailVO(service.selectById(order.getOrderId())); Map map = new HashMap(); map.put("order",order); AppletConfig config = new AppletConfig(); config.setParamClass("pet_payment_bcs"); List appletConfigs = configService.selectAppletConfigList(config); map.put("pet_payment_bcs",appletConfigs); return AjaxResult.success("我的订单流程订单详情",map); } //订单里面的宠物档案里面数据 @ApiOperation("订单里面的宠物档案里面数据") @GetMapping("/getOrderPetById/{orderId}") public AjaxResult getOrderPetById(@PathVariable("orderId") Long orderId){ H5OrderVO h5OrderVO = h5OrderService.orderDetail(orderId); // 得到服务信息 List service = h5OrderVO.getOrderServiceList(); // 使用一个 Set 来跟踪已经添加的 PetVO 的 id Set addedPetIds = new HashSet<>(); List petList = new ArrayList<>(); for (OmsOrderService service1 : service) { // 宠物标识不为空的时候查询数据 if (service1.getPetId() != null) { Pet pet = petMapper.selectById(service1.getPetId()); // 检查 petVO 的 id 是否已经添加过 if (pet != null && !addedPetIds.contains(pet.getId())) { service1.setPets(pet); petList.add(pet); addedPetIds.add(pet.getId()); // 标记该 id 已添加 } } } // List pets = new ArrayList<>(); // for (OmsOrderService service1 : service) { // // 宠物标识不为空的时候查询数据 // if (service1.getPetId() != null) { // PetVO petVO = h5PetService.selectPetById(service1.getPetId()); // // 检查 petVO 的 id 是否已经添加过 // if (petVO != null && !addedPetIds.contains(petVO.getId())) { // service1.setPetVo(petVO); // pets.add(petVO); // addedPetIds.add(petVO.getId()); // 标记该 id 已添加 // } // } // // } return AjaxResult.success("订单里面的宠物档案里面数据",petList); } //根据宠物标识查询重新宠物信息 @ApiOperation("根据宠物标识查询重新宠物信息") @GetMapping("/getPetById/{petId}") public AjaxResult getPetById(@PathVariable("petId") Integer petId){ PetVO petVO = h5PetService.selectPetById(petId); return AjaxResult.success("根据宠物标识查询重新宠物信息",petVO); } //根据宠物信息标识查询宠物档案信息列表带分页 @ApiOperation("根据宠物信息标识查询宠物档案信息列表带分页") @GetMapping("/petList") public TableDataInfo petList(PetCare petCare) { startPage(); List list = petCareService.selectPetCareList(petCare); return getDataTable(list); } //根据宠物信息查询宠物档案信息 @ApiOperation("根据宠物信息标识查询宠物档案信息列表带分页") @GetMapping("/getPetCareByPetId/{petId}") public AjaxResult petCareList(@PathVariable("petId") Integer petId) { PetCare petCare1 = petCareService.selectPetCareByPetId(petId); return AjaxResult.success("服务档案信息查询成功",petCare1); } //测试派单 @ApiOperation("派单") @GetMapping("/dispatch/{orderId}") public AjaxResult dispatch(@PathVariable("orderId")Long orderId){ mallOrderService.dispatch(orderId); return AjaxResult.success("派单成功"); } }