feat(health):新增订单查询相关功能
1. 分页查询 2. 查询订单详情
This commit is contained in:
parent
6003aca88e
commit
a0fa46f873
@ -4,6 +4,7 @@ import com.jzo2o.common.model.PageResult;
|
||||
import com.jzo2o.health.model.dto.request.OrdersPageQueryReqDTO;
|
||||
import com.jzo2o.health.model.dto.response.AdminOrdersDetailResDTO;
|
||||
import com.jzo2o.health.model.dto.response.OrdersResDTO;
|
||||
import com.jzo2o.health.service.IOrderManagerService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
@ -13,6 +14,8 @@ import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author itcast
|
||||
*/
|
||||
@ -20,11 +23,13 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RequestMapping("/admin/orders")
|
||||
@Api(tags = "管理端 - 订单查询接口")
|
||||
public class OrdersQueryController {
|
||||
@Resource
|
||||
private IOrderManagerService orderManagerService;
|
||||
|
||||
@ApiOperation("分页查询")
|
||||
@GetMapping("/page")
|
||||
public PageResult<OrdersResDTO> pageQuery(OrdersPageQueryReqDTO ordersPageQueryReqDTO) {
|
||||
return null;
|
||||
return orderManagerService.pageQuery(ordersPageQueryReqDTO);
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@ -33,7 +38,6 @@ public class OrdersQueryController {
|
||||
@ApiImplicitParam(name = "id", value = "订单id", required = true, dataTypeClass = Long.class)
|
||||
})
|
||||
public AdminOrdersDetailResDTO aggregation(@PathVariable("id") Long id) {
|
||||
return null;
|
||||
return orderManagerService.getAggregationInfo(id);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,13 +1,16 @@
|
||||
package com.jzo2o.health.controller.user;
|
||||
|
||||
import com.jzo2o.common.utils.BeanUtils;
|
||||
import com.jzo2o.health.model.dto.response.OrdersDetailResDTO;
|
||||
import com.jzo2o.health.model.dto.response.OrdersResDTO;
|
||||
import com.jzo2o.health.service.IOrderManagerService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -17,16 +20,18 @@ import java.util.List;
|
||||
@RequestMapping("/user/orders")
|
||||
@Api(tags = "用户端 - 订单查询相关接口")
|
||||
public class OrdersQueryController {
|
||||
@Resource
|
||||
private IOrderManagerService orderManagerService;
|
||||
|
||||
@ApiOperation("滚动分页查询")
|
||||
@GetMapping("/page")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "ordersStatus", value = "订单状态,0:未支付,100:待体检,200:已体检,300:已关闭,400:已取消", required = false, dataTypeClass = Integer.class),
|
||||
@ApiImplicitParam(name = "sortBy", value = "排序字段", required = false, dataTypeClass = Long.class)
|
||||
@ApiImplicitParam(name = "ordersStatus", value = "订单状态,0:未支付,100:待体检,200:已体检,300:已关闭,400:已取消", dataTypeClass = Integer.class),
|
||||
@ApiImplicitParam(name = "sortBy", value = "排序字段", dataTypeClass = Long.class)
|
||||
})
|
||||
public List<OrdersResDTO> pageQuery(@RequestParam(value = "ordersStatus", required = false) Integer ordersStatus,
|
||||
@RequestParam(value = "sortBy", required = false) Long sortBy) {
|
||||
return null;
|
||||
return orderManagerService.pageQuery(ordersStatus, sortBy);
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@ -35,7 +40,6 @@ public class OrdersQueryController {
|
||||
@ApiImplicitParam(name = "id", value = "订单id", required = true, dataTypeClass = Long.class)
|
||||
})
|
||||
public OrdersDetailResDTO detail(@PathVariable("id") Long id) {
|
||||
return null;
|
||||
return BeanUtils.toBean(orderManagerService.getById(id), OrdersDetailResDTO.class);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -3,6 +3,7 @@ package com.jzo2o.health.model.dto.response;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -11,7 +12,6 @@ import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 管理端订单详情
|
||||
*
|
||||
* @author itcast
|
||||
* @create 2023/11/6 17:31
|
||||
**/
|
||||
@ -142,6 +142,7 @@ public class AdminOrdersDetailResDTO {
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@ApiModel("退款信息模型")
|
||||
public static class RefundInfo {
|
||||
/**
|
||||
@ -177,6 +178,7 @@ public class AdminOrdersDetailResDTO {
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@ApiModel("订单取消模型")
|
||||
public static class CancelInfo {
|
||||
/**
|
||||
@ -192,4 +194,4 @@ public class AdminOrdersDetailResDTO {
|
||||
@ApiModelProperty("取消理由")
|
||||
private String cancelReason;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package com.jzo2o.health.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jzo2o.health.model.domain.OrdersCancelled;
|
||||
|
||||
/**
|
||||
* 取消订单相关业务层
|
||||
* @author JIAN
|
||||
*/
|
||||
public interface IOrderCancelService extends IService<OrdersCancelled> {
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
package com.jzo2o.health.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jzo2o.common.model.PageResult;
|
||||
import com.jzo2o.health.model.domain.Orders;
|
||||
import com.jzo2o.health.model.dto.request.OrdersPageQueryReqDTO;
|
||||
import com.jzo2o.health.model.dto.response.AdminOrdersDetailResDTO;
|
||||
import com.jzo2o.health.model.dto.response.OrdersResDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单管理相关业务层
|
||||
* @author JIAN
|
||||
*/
|
||||
public interface IOrderManagerService extends IService<Orders> {
|
||||
/**
|
||||
* 管理端订单分页查询
|
||||
*/
|
||||
PageResult<OrdersResDTO> pageQuery(OrdersPageQueryReqDTO ordersPageQueryReqDTO);
|
||||
|
||||
/**
|
||||
* 用户端订单分页查询
|
||||
*/
|
||||
List<OrdersResDTO> pageQuery(Integer orderStatus, Long sortBy);
|
||||
|
||||
/**
|
||||
* 管理端查询订单详情
|
||||
*/
|
||||
AdminOrdersDetailResDTO getAggregationInfo(Long id);
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package com.jzo2o.health.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jzo2o.health.mapper.OrdersCancelledMapper;
|
||||
import com.jzo2o.health.model.domain.OrdersCancelled;
|
||||
import com.jzo2o.health.service.IOrderCancelService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 取消订单相关业务层实现
|
||||
* @author JIAN
|
||||
*/
|
||||
@Service
|
||||
public class OrderCancelServiceImpl extends ServiceImpl<OrdersCancelledMapper, OrdersCancelled> implements IOrderCancelService {
|
||||
}
|
||||
@ -0,0 +1,129 @@
|
||||
package com.jzo2o.health.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jzo2o.common.expcetions.ForbiddenOperationException;
|
||||
import com.jzo2o.common.model.PageResult;
|
||||
import com.jzo2o.common.utils.BeanUtils;
|
||||
import com.jzo2o.common.utils.CollUtils;
|
||||
import com.jzo2o.common.utils.ObjectUtils;
|
||||
import com.jzo2o.health.enums.OrderPayStatusEnum;
|
||||
import com.jzo2o.health.enums.OrderStatusEnum;
|
||||
import com.jzo2o.health.mapper.OrdersMapper;
|
||||
import com.jzo2o.health.model.UserThreadLocal;
|
||||
import com.jzo2o.health.model.domain.Orders;
|
||||
import com.jzo2o.health.model.domain.OrdersCancelled;
|
||||
import com.jzo2o.health.model.dto.request.OrdersPageQueryReqDTO;
|
||||
import com.jzo2o.health.model.dto.response.AdminOrdersDetailResDTO;
|
||||
import com.jzo2o.health.model.dto.response.OrdersResDTO;
|
||||
import com.jzo2o.health.service.IOrderCancelService;
|
||||
import com.jzo2o.health.service.IOrderManagerService;
|
||||
import com.jzo2o.mysql.utils.PageUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 订单管理相关业务层实现
|
||||
* @author JIAN
|
||||
*/
|
||||
@Service
|
||||
public class OrderManagerServiceImpl extends ServiceImpl<OrdersMapper, Orders> implements IOrderManagerService {
|
||||
@Resource
|
||||
private IOrderCancelService orderCancelService;
|
||||
|
||||
@Override
|
||||
public PageResult<OrdersResDTO> pageQuery(OrdersPageQueryReqDTO ordersPageQueryReqDTO) {
|
||||
Page<Orders> ordersPage = PageUtils.parsePageQuery(ordersPageQueryReqDTO, Orders.class);
|
||||
|
||||
Integer orderStatus = ordersPageQueryReqDTO.getOrderStatus();
|
||||
String memberPhone = ordersPageQueryReqDTO.getMemberPhone();
|
||||
|
||||
Page<Orders> page = lambdaQuery()
|
||||
.eq(ObjectUtils.isNotEmpty(orderStatus), Orders::getOrderStatus, orderStatus)
|
||||
.like(ObjectUtils.isNotEmpty(memberPhone), Orders::getMemberPhone, memberPhone)
|
||||
.page(ordersPage);
|
||||
|
||||
return PageUtils.toPage(page, OrdersResDTO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OrdersResDTO> pageQuery(Integer orderStatus, Long sortBy) {
|
||||
Long userId = UserThreadLocal.currentUserId();
|
||||
if (ObjectUtils.isEmpty(userId)) {
|
||||
throw new ForbiddenOperationException("无法获取当前用户");
|
||||
}
|
||||
|
||||
// 默认每页10条数据
|
||||
List<Orders> ordersList = lambdaQuery()
|
||||
.eq(Orders::getMemberId, userId)
|
||||
.eq(ObjectUtils.isNotEmpty(orderStatus), Orders::getOrderStatus, orderStatus)
|
||||
.lt(ObjectUtils.isNotEmpty(sortBy), Orders::getSortBy, sortBy)
|
||||
.last("LIMIT 10")
|
||||
.list();
|
||||
|
||||
if (CollUtils.isEmpty(ordersList)) {
|
||||
return new ArrayList<>();
|
||||
} else {
|
||||
return ordersList.stream()
|
||||
.map(order -> BeanUtils.toBean(order, OrdersResDTO.class))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AdminOrdersDetailResDTO getAggregationInfo(Long id) {
|
||||
AdminOrdersDetailResDTO adminOrdersDetailResDTO = new AdminOrdersDetailResDTO();
|
||||
|
||||
Orders orders = baseMapper.selectById(id);
|
||||
if (ObjectUtils.isEmpty(orders)) {
|
||||
return adminOrdersDetailResDTO;
|
||||
}
|
||||
|
||||
// 订单信息
|
||||
adminOrdersDetailResDTO.setOrderInfo(
|
||||
BeanUtils.toBean(orders, AdminOrdersDetailResDTO.OrderInfo.class));
|
||||
|
||||
// 支付信息
|
||||
AdminOrdersDetailResDTO.PayInfo payInfo = BeanUtils.toBean(orders, AdminOrdersDetailResDTO.PayInfo.class);
|
||||
payInfo.setThirdOrderId(orders.getTransactionId());
|
||||
adminOrdersDetailResDTO.setPayInfo(payInfo);
|
||||
|
||||
Integer orderStatus = orders.getOrderStatus();
|
||||
if (OrderStatusEnum.CANCELLED.getStatus().equals(orderStatus)) {
|
||||
OrdersCancelled cancelInfo = orderCancelService.getById(orders.getId());
|
||||
|
||||
// 取消信息
|
||||
adminOrdersDetailResDTO.setCancelInfo(AdminOrdersDetailResDTO.CancelInfo.builder()
|
||||
.cancelReason(cancelInfo.getCancelReason())
|
||||
.cancelTime(cancelInfo.getCancelTime())
|
||||
.build());
|
||||
|
||||
// 退款信息
|
||||
adminOrdersDetailResDTO.setRefundInfo(AdminOrdersDetailResDTO.RefundInfo.builder()
|
||||
.refundStatus(payInfo.getPayStatus())
|
||||
.cancelTime(cancelInfo.getCancelTime())
|
||||
.cancelReason(cancelInfo.getCancelReason())
|
||||
.tradingChannel(orders.getTradingChannel())
|
||||
.refundId(orders.getRefundId())
|
||||
.build());
|
||||
|
||||
payInfo.setPayStatus(OrderPayStatusEnum.PAY_SUCCESS.getStatus());
|
||||
} else if (OrderStatusEnum.CLOSED.getStatus().equals(orderStatus)) {
|
||||
OrdersCancelled cancelInfo = orderCancelService.getById(orders.getId());
|
||||
|
||||
// 取消信息
|
||||
adminOrdersDetailResDTO.setCancelInfo(AdminOrdersDetailResDTO.CancelInfo.builder()
|
||||
.cancelReason(cancelInfo.getCancelReason())
|
||||
.cancelTime(cancelInfo.getCancelTime())
|
||||
.build());
|
||||
|
||||
payInfo.setPayStatus(OrderPayStatusEnum.PAY_SUCCESS.getStatus());
|
||||
}
|
||||
|
||||
return adminOrdersDetailResDTO;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user