diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java b/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java index 80e8645..95cdf07 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java @@ -1,7 +1,7 @@ package com.aircraft.modules.order.biz; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.aircraft.exception.BadRequestException; @@ -22,21 +22,24 @@ import com.aircraft.modules.order.domain.vo.OrderMainPageQueryVO; import com.aircraft.modules.order.service.IOrderDetailService; import com.aircraft.modules.order.service.IOrderMainService; import com.aircraft.modules.order.service.IOrderOperatorService; +import com.aircraft.modules.route.domain.CpRoute; +import com.aircraft.modules.route.service.CpRouteService; import com.aircraft.modules.system.domain.AttachmentMaterial; import com.aircraft.modules.system.domain.EmEmployees; import com.aircraft.modules.system.domain.EmScenic; import com.aircraft.modules.system.domain.dto.LocalAttachmentMaterialDTO; import com.aircraft.modules.system.domain.enums.AttachmentMaterialBusinessTypeEnum; +import com.aircraft.modules.system.service.EmEmployeesService; import com.aircraft.modules.system.service.EmScenicService; import com.aircraft.modules.system.service.IAttachmentMaterialService; import com.aircraft.utils.PageResult; import com.aircraft.utils.RedisUtils; import com.aircraft.utils.SecurityUtils; +import com.aircraft.utils.enums.UserTypeEnum; import com.alibaba.fastjson.JSON; -import org.jetbrains.annotations.NotNull; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -46,6 +49,8 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 工单业务处理类 @@ -56,6 +61,7 @@ import java.util.List; */ @Component +@Slf4j public class OrderBiz { @Resource @@ -70,22 +76,110 @@ public class OrderBiz { private EmScenicService emScenicService; @Resource private RedisUtils redisUtils; + @Resource + private EmEmployeesService emEmployeesService; + @Resource + private CpRouteService cpRouteService; public List queryAll(OrderMainPageQueryDTO pageQueryDTO) { - UserDetails currentUser = SecurityUtils.getCurrentUser(); - // TODO 根据不同的用户角色获取不同的订单数据 - List list = orderMainService.queryAll(pageQueryDTO); - if (CollectionUtil.isEmpty(list)) { + // 根据不同的客户端获取数据 + UserTypeEnum currentUserType = SecurityUtils.getCurrentUserType(); + // 暂时使用用 switch方式, 可结合工厂+策略获取不同的执行方法(也可通过反射代理的方式去实现,暂时使用最简单的方式) + List orderMainList = new ArrayList<>(); + switch (currentUserType) { + case ADMIN: + orderMainList = adminAllOrderQueryList(pageQueryDTO); + log.info("当前用户是后台管理员用户"); + break; + case EMPLOYEES: + orderMainList = employeeAllOrderQueryList(pageQueryDTO); + log.info("当前用户是飞行员用户"); + break; + case CUSTOMER: + orderMainList = customerAllOrderQueryList(pageQueryDTO); + log.info("当前用户是B端客户"); + break; + default: + break; + } + if (CollectionUtil.isEmpty(orderMainList)) { return new ArrayList<>(); } - // TODO 多表操作转成单表操作,归并数据集 - List orderIds = list.stream().map(OrderMain::getId).toList(); - List orderOperatorList = orderOperatorService.queryAllByOrderIds(orderIds); - // TODO 数据转移处理 - List orderMainList = new ArrayList<>(); - return orderMainList; + // 查询发起人信息 + List orderInitiatorIds = orderMainList.stream().map(OrderMain::getOrderInitiatorId).toList(); + List employeesList = emEmployeesService.obtainEmployeesByIds(orderInitiatorIds); + Map operatorMap = employeesList.stream() + .collect(Collectors.toMap(EmEmployees::getId, item -> item, (o1, o2) -> o1)); + + // 获取所有的路线信息 + List routes = cpRouteService.obtainAllRoutes(); + Map routeMap = routes.stream() + .collect(Collectors.toMap(CpRoute::getId, route -> route)); + + // 构建查询结果集 + List orderMainPageList = new ArrayList<>(); + for (OrderMain orderMain : orderMainList) { + OrderMainPageQueryVO pageQueryVO = BeanUtil.copyProperties(orderMain, OrderMainPageQueryVO.class); + String routeIds = orderMain.getRouteIds(); + // 转换成数组 + String[] routeIdArray = routeIds.split(StrUtil.COMMA); + StringBuilder routeNameBuilder = new StringBuilder(); + for (String routeIdStr : routeIdArray) { + CpRoute cpRoute = routeMap.get(Long.valueOf(routeIdStr)); + String name = cpRoute.getName(); + routeNameBuilder.append(name).append(StrUtil.COMMA); + } + // 去掉最后一个逗号 + routeNameBuilder.deleteCharAt(routeNameBuilder.length() - 1); + pageQueryVO.setRouteName(routeNameBuilder.toString()); + EmEmployees emEmployees = operatorMap.get(orderMain.getOrderInitiatorId()); + if (ObjectUtil.isNotNull(emEmployees)) { + pageQueryVO.setInitiatorPhone(emEmployees.getPhone()); + } + pageQueryVO.setCustomerPhone(orderMain.getPhone()); + orderMainPageList.add(pageQueryVO); + } + return orderMainPageList; + } + + /** + * 查询所有订单<客户端> + * + * @param pageQueryDTO {@link OrderMainPageQueryDTO} + * @return {@link List} + */ + private List customerAllOrderQueryList(OrderMainPageQueryDTO pageQueryDTO) { + return null; + } + + /** + * 查询所有订单<飞行员端> + * + * @param pageQueryDTO 分页参数 + * @return {@link List} + */ + private List employeeAllOrderQueryList(OrderMainPageQueryDTO pageQueryDTO) { + // 获取当前登录人的ID + Long orderInitiatorId = SecurityUtils.getCurrentUserId(); + pageQueryDTO.setOrderInitiatorId(orderInitiatorId); + pageQueryDTO.setPhone(null); + pageQueryDTO.setCustomerId(null); + pageQueryDTO.setAttractionId(null); + return orderMainService.obtainOrderList(pageQueryDTO); + } + + /** + * 查询所有订单 + * + * @param pageQueryDTO {@link OrderMainPageQueryDTO} + * @return {@link List} + */ + private List adminAllOrderQueryList(OrderMainPageQueryDTO pageQueryDTO) { + // 需要考虑用户角色获取对应的数据 + List list = orderMainService.queryAll(pageQueryDTO); + return null; } public ResponseEntity> relevanceOrder() { diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/controller/OrderMainController.java b/aircraft-system/src/main/java/com/aircraft/modules/order/controller/OrderMainController.java index 103469b..473675f 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/controller/OrderMainController.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/controller/OrderMainController.java @@ -40,7 +40,6 @@ public class OrderMainController { @ApiOperation("查询订单列表") @GetMapping("/allOrder") public ResponseEntity> queryOrderList(OrderMainPageQueryDTO pageQueryDTO) { - // TODO 待完善<考虑根据不同的登录获取不同的分页查询> List orderList = orderBiz.queryAll(pageQueryDTO); return new ResponseEntity<>(PageUtil.toPage(orderList),HttpStatus.OK); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/OrderMainPageQueryDTO.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/OrderMainPageQueryDTO.java index e6908ef..f02351b 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/OrderMainPageQueryDTO.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/dto/OrderMainPageQueryDTO.java @@ -29,7 +29,13 @@ public class OrderMainPageQueryDTO { /** * 客户手机号 */ - @ApiModelProperty(value = "下单时间", example = "13788888888") + @ApiModelProperty(value = "客户手机号", example = "13788888888") private String phone; + /** + * 发起人ID + */ + private Long orderInitiatorId; + + } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java index 9e450d9..688df6a 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java @@ -1,8 +1,12 @@ package com.aircraft.modules.order.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; +import java.util.Date; + /** * * 订单主单分页查询 VO @@ -25,27 +29,69 @@ public class OrderMainPageQueryVO { @ApiModelProperty(value = "订单类型") private Integer orderType; + /** + * 订单状态 + */ + @ApiModelProperty(value = "订单状态") + private Integer mainOrderStatus; + /** * 客户ID */ @ApiModelProperty(value = "客户ID") private Long customerId; + /** + * 手机号 + */ + @ApiModelProperty(value = "客户手机号") + private String customerPhone; + + /** + * 订单发起人ID + */ + private Long orderInitiatorId; + /** + * 手机号 + */ + @ApiModelProperty(value = "发起人手机号") + private String initiatorPhone; + /** * 景区ID */ @ApiModelProperty(value = "景区ID") private Long attractionId; - /** - * 手机号 - */ - @ApiModelProperty(value = "手机号") - private String phone; - /** * 路线名称,拼接返回 */ - @ApiModelProperty(value = "路线") + @ApiModelProperty(value = "路线名称") private String routeName; + + /** + * 下单时间 + */ + @ApiModelProperty(value = "下单时间") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date orderCreateTime; + + /** + * 订单完成时间 + */ + @ApiModelProperty(value = "订单完成时间") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date orderFinishTime; + + /** + * 结算状态 + */ + @ApiModelProperty(value = "结算状态: 0=未结算, 1=已结算") + private Integer settlementStatus; + + /** + * 订单金额 + */ + @ApiModelProperty(value = "订单金额") + private BigDecimal amount; } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/mapper/OrderMainMapper.java b/aircraft-system/src/main/java/com/aircraft/modules/order/mapper/OrderMainMapper.java index 1fa8123..1d4944f 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/mapper/OrderMainMapper.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/mapper/OrderMainMapper.java @@ -1,6 +1,7 @@ package com.aircraft.modules.order.mapper; import com.aircraft.modules.order.domain.OrderMain; +import com.aircraft.modules.order.domain.dto.OrderMainPageQueryDTO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.springframework.stereotype.Repository; @@ -16,4 +17,11 @@ import java.util.List; */ @Repository public interface OrderMainMapper extends BaseMapper { + /** + * 根据查询条件获取订单列表 + * + * @param pageQueryDTO {@link OrderMainPageQueryDTO} + * @return {@link List} + */ + List obtainOrderList(OrderMainPageQueryDTO pageQueryDTO); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/service/IOrderMainService.java b/aircraft-system/src/main/java/com/aircraft/modules/order/service/IOrderMainService.java index a09e809..706eddd 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/service/IOrderMainService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/service/IOrderMainService.java @@ -64,4 +64,12 @@ public interface IOrderMainService extends IService { * @param orderStatus 订单状态 */ void updateOrderStatus(Long orderId, Integer orderStatus); + + /** + * 查询订单列表 + * + * @param pageQueryDTO {@link OrderMainPageQueryDTO} + * @return {@link List} + */ + List obtainOrderList(OrderMainPageQueryDTO pageQueryDTO); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java index 2ebba6a..a9c41db 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/OrderMainServiceImpl.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; @@ -26,6 +27,8 @@ import java.util.stream.Collectors; @Service public class OrderMainServiceImpl extends ServiceImpl implements IOrderMainService { + @Resource + private OrderMainMapper orderMainMapper; @Override public List queryAll(OrderMainPageQueryDTO pageQueryDTO) { @@ -84,4 +87,9 @@ public class OrderMainServiceImpl extends ServiceImpl obtainOrderList(OrderMainPageQueryDTO pageQueryDTO) { + return orderMainMapper.obtainOrderList(pageQueryDTO); + } } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/route/service/CpRouteService.java b/aircraft-system/src/main/java/com/aircraft/modules/route/service/CpRouteService.java index fbb9115..d454925 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/route/service/CpRouteService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/route/service/CpRouteService.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 路线表 服务类 @@ -19,4 +21,11 @@ public interface CpRouteService extends IService { void updateDelFlagById(Long id, Integer delFlag); IPage findByPage(Page page, String routeName); + + /** + * 获取所有路线信息 + * + * @return List + */ + List obtainAllRoutes(); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/route/service/impl/CpRouteServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/route/service/impl/CpRouteServiceImpl.java index e9bef6f..95539eb 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/route/service/impl/CpRouteServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/route/service/impl/CpRouteServiceImpl.java @@ -10,6 +10,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 路线表 服务实现类 @@ -32,4 +34,9 @@ public class CpRouteServiceImpl extends ServiceImpl impl public IPage findByPage(Page page, String routeName) { return cpRouteMapper.selectVoPage(page, routeName); } + + @Override + public List obtainAllRoutes() { + return this.list(); + } } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmEmployeesService.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmEmployeesService.java index ec5d2b7..a2f5e65 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmEmployeesService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/EmEmployeesService.java @@ -100,4 +100,12 @@ public interface EmEmployeesService extends IService { EmEmployeesDetailVo findById(Integer id); EmEmployees findByUsername(String username); + + /** + * 批量查询用户信息 + * + * @param orderInitiatorIds 订单发起人ID列表 + * @return List + */ + List obtainEmployeesByIds(List orderInitiatorIds); } \ No newline at end of file diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmEmployeesServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmEmployeesServiceImpl.java index 391a5ea..fd49615 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmEmployeesServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/EmEmployeesServiceImpl.java @@ -23,6 +23,7 @@ import com.aircraft.modules.system.service.EmAreaService; import com.aircraft.modules.system.service.EmScenicService; import com.aircraft.utils.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -86,6 +87,11 @@ public class EmEmployeesServiceImpl extends ServiceImpl obtainEmployeesByIds(List orderInitiatorIds) { + return this.list(Wrappers.lambdaQuery(EmEmployees.class).in(EmEmployees::getId,orderInitiatorIds)); + } + @Override @Transactional(rollbackFor = Exception.class) public void update(EmEmployees resources) { diff --git a/aircraft-system/src/main/resources/mapper/order/OrderMainMapper.xml b/aircraft-system/src/main/resources/mapper/order/OrderMainMapper.xml index 524387a..267a6df 100644 --- a/aircraft-system/src/main/resources/mapper/order/OrderMainMapper.xml +++ b/aircraft-system/src/main/resources/mapper/order/OrderMainMapper.xml @@ -2,4 +2,32 @@ + + + id, order_no, order_type, order_initiator_id, phone, attraction_id, customer_id, + customer_name, route_ids, cargo_weight, amount, surcharge_amount, open_id, + settlement_status, main_order_status, relevance_status, order_create_time, + order_finish_time, create_time, create_by, update_time, update_by, del_flag + + +