新增订单详情列表(接口,返回dto根据用户查询
This commit is contained in:
parent
ceb9dd1809
commit
423acc160e
@ -5,6 +5,7 @@ import com.cdzy.common.model.PageParam;
|
||||
import com.cdzy.orders.model.dto.req.ReqBikeDto;
|
||||
import com.cdzy.orders.model.dto.req.ReqOrderDto;
|
||||
import com.cdzy.orders.model.dto.res.RspOrderDetailsInfo;
|
||||
import com.cdzy.orders.model.dto.res.RspOrderDetailsUserList;
|
||||
import com.ebike.feign.model.res.ResFeignOrderPaymentDto;
|
||||
import com.cdzy.orders.model.dto.res.RspBikeDto;
|
||||
import com.cdzy.orders.model.entity.EbikeUserOrders;
|
||||
@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.cdzy.orders.model.entity.table.EbikeUserOrdersTableDef.EBIKE_USER_ORDERS;
|
||||
|
||||
@ -236,5 +238,15 @@ public class EbikeUserOrdersController {
|
||||
Page<EbikeUserOrders> page = userOrdersService.page(pageParam.getPage(), queryWrapper);
|
||||
return JsonResult.success(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户ID获取订单详情列表(带分页。
|
||||
*
|
||||
* @param params 用户Id 和分页信息
|
||||
* @ 用户订单表详情
|
||||
*/
|
||||
@PostMapping("orderDetailsUserList")
|
||||
public JsonResult<?> orderDetailsUserList(@RequestBody Map<String,Object> params) {
|
||||
List<RspOrderDetailsUserList> info = userOrdersService.orderDetailsUserList(params);
|
||||
return JsonResult.success(info);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,15 @@
|
||||
package com.cdzy.orders.mapper;
|
||||
|
||||
import com.cdzy.orders.model.dto.res.RspOrderDetailsInfo;
|
||||
import com.cdzy.orders.model.dto.res.RspOrderDetailsUserList;
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.cdzy.orders.model.entity.EbikeUserOrders;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Result;
|
||||
import org.apache.ibatis.annotations.Results;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户订单表 映射层。
|
||||
@ -11,4 +19,47 @@ import com.cdzy.orders.model.entity.EbikeUserOrders;
|
||||
*/
|
||||
public interface UserOrdersMapper extends BaseMapper<EbikeUserOrders> {
|
||||
|
||||
/**
|
||||
* 根据用户ID获取订单详情列表(带分页),并根据类型查询(消费或退款)。
|
||||
*
|
||||
* @param userId 用户Id
|
||||
* @param orderType 订单类型(消费或退款)
|
||||
* @return 用户订单表详情
|
||||
*/
|
||||
@Select("<script>" +
|
||||
"SELECT A.order_id, A.user_id, A.status, A.start_time, A.end_time, " +
|
||||
"CASE WHEN A.end_time IS NULL THEN " +
|
||||
"CONCAT('骑行 ', FLOOR(TIMESTAMPDIFF(SECOND, A.start_time, NOW()) / 60), '分钟', " +
|
||||
"TIMESTAMPDIFF(SECOND, A.start_time, NOW()) % 60, '秒') " +
|
||||
"ELSE CONCAT('骑行 ', FLOOR(TIMESTAMPDIFF(SECOND, A.start_time, A.end_time) / 60), '分钟', " +
|
||||
"TIMESTAMPDIFF(SECOND, A.start_time, A.end_time) % 60, '秒') END AS riding_duration, " +
|
||||
"CASE A.status WHEN 0 THEN '进行中' WHEN 1 THEN '已取消' WHEN 2 THEN '待支付' " +
|
||||
"WHEN 3 THEN '已支付' WHEN 4 THEN '退款中' WHEN 5 THEN '已退款' ELSE '无' END AS status_name, " +
|
||||
"created_at, total_amount, bike_code " +
|
||||
"FROM ebike_user_orders AS A " +
|
||||
"WHERE A.user_id = #{userId} " +
|
||||
"<if test='orderType == \"consumption\"'> " +
|
||||
"AND A.status IN (0, 1, 2, 3) " +
|
||||
"</if>" +
|
||||
"<if test='orderType == \"refund\"'> " +
|
||||
"AND A.status IN (4, 5) " +
|
||||
"</if>" +
|
||||
"LIMIT #{pageSize} OFFSET #{offset}" +
|
||||
"</script>")
|
||||
@Results({
|
||||
@Result(property = "orderId", column = "order_id"),
|
||||
@Result(property = "userId", column = "user_id"),
|
||||
@Result(property = "status", column = "status"),
|
||||
@Result(property = "startTime", column = "start_time"),
|
||||
@Result(property = "endTime", column = "end_time"),
|
||||
@Result(property = "ridingDuration", column = "riding_duration"),
|
||||
@Result(property = "statusName", column = "status_name"),
|
||||
@Result(property = "createdAt", column = "created_at"),
|
||||
@Result(property = "totalAmount", column = "total_amount"),
|
||||
@Result(property = "bikeCode", column = "bike_code")
|
||||
})
|
||||
List<RspOrderDetailsUserList> getOrderDetailsUserList(@Param("userId") String userId,
|
||||
@Param("orderType") String orderType,
|
||||
@Param("offset") Integer offset,
|
||||
@Param("pageSize") Integer pageSize);
|
||||
}
|
||||
|
||||
@ -0,0 +1,66 @@
|
||||
package com.cdzy.orders.model.dto.res;
|
||||
|
||||
import lombok.Data;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 用户订单详情响应DTO
|
||||
*/
|
||||
@Data
|
||||
public class RspOrderDetailsUserList {
|
||||
|
||||
/**
|
||||
* 分布式ID(雪花算法或业务前缀+序列)
|
||||
*/
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 用户ID,关联用户表
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 订单状态(进行中、已取消、待支付、已支付、退款中、已退款)
|
||||
*/
|
||||
private String status;
|
||||
/**
|
||||
* 订单状态(进行中、已取消、待支付、已支付、退款中、已退款)
|
||||
*/
|
||||
private String statusName;
|
||||
|
||||
/**
|
||||
* 订单开始时间
|
||||
*/
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 订单结束时间
|
||||
*/
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 订单骑行时长(分钟)
|
||||
*/
|
||||
private String ridingDuration;
|
||||
|
||||
/**
|
||||
* 订单创建时间
|
||||
*/
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 订单总金额
|
||||
*/
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
/**
|
||||
* 订单关联的车辆编码
|
||||
*/
|
||||
private String bikeCode;
|
||||
|
||||
/**
|
||||
* 其他需要返回的字段,可以根据需要添加
|
||||
*/
|
||||
// 可根据需要添加其他字段,如订单类型、支付方式等
|
||||
}
|
||||
@ -3,6 +3,7 @@ package com.cdzy.orders.service;
|
||||
import com.cdzy.orders.model.dto.req.ReqBikeDto;
|
||||
import com.cdzy.orders.model.dto.req.ReqOrderDto;
|
||||
import com.cdzy.orders.model.dto.res.RspOrderDetailsInfo;
|
||||
import com.cdzy.orders.model.dto.res.RspOrderDetailsUserList;
|
||||
import com.ebike.feign.model.res.ResFeignOrderPaymentDto;
|
||||
import com.cdzy.orders.model.dto.res.RspBikeDto;
|
||||
import com.ebike.feign.model.rsp.EbikePaymentDto;
|
||||
@ -11,6 +12,7 @@ import com.cdzy.orders.model.entity.EbikeUserOrders;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 用户订单表 服务层。
|
||||
@ -116,4 +118,12 @@ public interface UserOrdersService extends IService<EbikeUserOrders> {
|
||||
* @return 支付信息
|
||||
*/
|
||||
EbikePaymentDto paymentDetailsInfo(Long orderId);
|
||||
|
||||
/**
|
||||
* 根据用户ID获取订单详情列表(带分页。
|
||||
*
|
||||
* @param params 用户Id
|
||||
* @ 用户订单表详情
|
||||
*/
|
||||
List<RspOrderDetailsUserList> orderDetailsUserList(Map<String,Object> params);
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.cdzy.orders.service.impl;
|
||||
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.cdzy.common.enums.Code;
|
||||
import com.cdzy.common.model.JsonResult;
|
||||
@ -14,6 +15,7 @@ import com.cdzy.orders.model.dto.req.ReqOrderDto;
|
||||
import com.cdzy.orders.model.dto.res.RedisPoint;
|
||||
import com.cdzy.orders.model.dto.res.RspBikeDto;
|
||||
import com.cdzy.orders.model.dto.res.RspOrderDetailsInfo;
|
||||
import com.cdzy.orders.model.dto.res.RspOrderDetailsUserList;
|
||||
import com.cdzy.orders.model.entity.EbikeOrderDetails;
|
||||
import com.cdzy.orders.model.entity.EbikeUser;
|
||||
import com.cdzy.orders.model.entity.EbikeUserOrders;
|
||||
@ -40,6 +42,7 @@ import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import static com.cdzy.orders.enums.TimeDivisionCharging.TIME_SLOT;
|
||||
@ -657,4 +660,22 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, EbikeUs
|
||||
}
|
||||
return decimal;
|
||||
}
|
||||
/**
|
||||
* 根据用户ID获取订单详情列表(带分页。
|
||||
*
|
||||
* @param params 用户Id
|
||||
* @ 用户订单表详情
|
||||
*/
|
||||
@Override
|
||||
public List<RspOrderDetailsUserList> orderDetailsUserList(Map<String,Object> params) {
|
||||
String userId = MapUtil.getStr(params,"userId");
|
||||
Map<String,Object> pageParam = ( Map<String,Object>)params.get("pageParam");
|
||||
Integer pageNum= MapUtil.getInt(pageParam,"pageNum");
|
||||
Integer pageSize= MapUtil.getInt(pageParam,"pageSize");
|
||||
String orderType = ""; //consumption 消费 refund 退款
|
||||
orderType= MapUtil.getStr(pageParam,"orderType");
|
||||
Integer offset = (pageNum - 1) * pageSize; // 计算OFFSET
|
||||
List<RspOrderDetailsUserList> orderDetailsUserList = userOrdersMapper.getOrderDetailsUserList(userId,orderType,offset,pageSize);
|
||||
return orderDetailsUserList;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user