Compare commits

..

2 Commits

Author SHA1 Message Date
bunny 89cc176e90 feat(新增): 获取订单分页列表
Signed-off-by: bunny <1319900154@qq.com>
2024-03-29 10:03:57 +08:00
bunny a191aa60f2 feat(新增): 立即购买
Signed-off-by: bunny <1319900154@qq.com>
2024-03-29 10:01:41 +08:00
8 changed files with 123 additions and 2 deletions

View File

@ -10,11 +10,9 @@ import java.util.List;
@Data
@Schema(description = "结算实体类")
public class TradeVo {
@Schema(description = "结算总金额")
private BigDecimal totalAmount;
@Schema(description = "结算商品列表")
private List<OrderItem> orderItemList;
}

View File

@ -5,6 +5,7 @@ import com.atguigu.spzx.model.dto.h5.OrderInfoDto;
import com.atguigu.spzx.model.entity.order.OrderInfo;
import com.atguigu.spzx.model.vo.h5.TradeVo;
import com.atguigu.spzx.model.vo.result.Result;
import com.github.pagehelper.PageInfo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -38,4 +39,24 @@ public class OrderInfoController {
OrderInfo orderInfo = orderInfoService.getOrderInfo(orderId);
return Result.success(orderInfo);
}
@Operation(summary = "立即购买")
@GetMapping("auth/buy/{skuId}")
public Result<TradeVo> buy(@Parameter(name = "skuId", description = "商品skuId", required = true) @PathVariable Long skuId) {
TradeVo tradeVo = orderInfoService.buy(skuId);
return Result.success(tradeVo);
}
@Operation(summary = "获取订单分页列表")
@GetMapping("auth/{page}/{limit}")
public Result<PageInfo<OrderInfo>> list(
@Parameter(name = "page", description = "当前页码", required = true)
@PathVariable Integer page,
@Parameter(name = "limit", description = "每页记录数", required = true)
@PathVariable Integer limit,
@Parameter(name = "orderStatus", description = "订单状态", required = false)
@RequestParam(required = false, defaultValue = "") Integer orderStatus) {
PageInfo<OrderInfo> pageInfo = orderInfoService.findUserPage(page, limit, orderStatus);
return Result.success(pageInfo);
}
}

View File

@ -3,6 +3,8 @@ package com.atguigu.order.mapper;
import com.atguigu.spzx.model.entity.order.OrderInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface OrderInfoMapper {
/**
@ -19,4 +21,6 @@ public interface OrderInfoMapper {
* @return OrderInfo
*/
OrderInfo getById(Long orderId);
List<OrderInfo> findUserPage(Long userId, Integer orderStatus);
}

View File

@ -3,6 +3,8 @@ package com.atguigu.order.mapper;
import com.atguigu.spzx.model.entity.order.OrderItem;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface OrderItemMapper {
/**
@ -11,4 +13,6 @@ public interface OrderItemMapper {
* @param orderItem orderItem
*/
void save(OrderItem orderItem);
List<OrderItem> findByOrderId(Long id);
}

View File

@ -3,6 +3,7 @@ package com.atguigu.order.service;
import com.atguigu.spzx.model.dto.h5.OrderInfoDto;
import com.atguigu.spzx.model.entity.order.OrderInfo;
import com.atguigu.spzx.model.vo.h5.TradeVo;
import com.github.pagehelper.PageInfo;
public interface OrderInfoService {
/**
@ -27,4 +28,22 @@ public interface OrderInfoService {
* @return OrderInfo
*/
OrderInfo getOrderInfo(Long orderId);
/**
* 立即购买
*
* @param skuId 商品Id
* @return 结算实体类
*/
TradeVo buy(Long skuId);
/**
* 获取订单分页列表
*
* @param page page
* @param limit limit
* @param orderStatus orderStatus
* @return PageInfo<OrderInfo>
*/
PageInfo<OrderInfo> findUserPage(Integer page, Integer limit, Integer orderStatus);
}

View File

@ -22,6 +22,7 @@ import com.atguigu.spzx.model.entity.user.UserInfo;
import com.atguigu.spzx.model.vo.h5.TradeVo;
import com.atguigu.spzx.model.vo.result.ResultCodeEnum;
import com.atguigu.utils.EmptyUtil;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -160,4 +161,54 @@ public class OrderInfoServiceImpl implements OrderInfoService {
public OrderInfo getOrderInfo(Long orderId) {
return orderInfoMapper.getById(orderId);
}
/**
* 立即购买
*
* @param skuId 商品Id
* @return 结算实体类
*/
@Override
public TradeVo buy(Long skuId) {
// 查询商品
ProductSku productSku = productFeignClient.getBySkuId(skuId).getData();
List<OrderItem> orderItemList = new ArrayList<>();
OrderItem orderItem = new OrderItem();
orderItem.setSkuId(skuId);
orderItem.setSkuName(productSku.getSkuName());
orderItem.setSkuNum(1);
orderItem.setSkuPrice(productSku.getSalePrice());
orderItem.setThumbImg(productSku.getThumbImg());
orderItemList.add(orderItem);
// 计算总金额
BigDecimal totalAmount = productSku.getSalePrice();
TradeVo tradeVo = new TradeVo();
tradeVo.setTotalAmount(totalAmount);
tradeVo.setOrderItemList(orderItemList);
// 返回
return tradeVo;
}
/**
* 获取订单分页列表
*
* @param page page
* @param limit limit
* @param orderStatus orderStatus
* @return PageInfo<OrderInfo>
*/
@Override
public PageInfo<OrderInfo> findUserPage(Integer page, Integer limit, Integer orderStatus) {
Long userId = BaseContext.getUserInfo().getId();
List<OrderInfo> orderInfoList = orderInfoMapper.findUserPage(userId, orderStatus);
orderInfoList.forEach(orderInfo -> {
List<OrderItem> orderItem = orderItemMapper.findByOrderId(orderInfo.getId());
orderInfo.setOrderItemList(orderItem);
});
return new PageInfo<>(orderInfoList);
}
}

View File

@ -66,4 +66,19 @@
where
id = #{id}
</select>
<select id="findUserPage" resultType="com.atguigu.spzx.model.entity.order.OrderInfo">
select
<include refid="columns"/>
from order_info
<where>
<if test="userId != null">
and user_id = #{userId}
</if>
<if test="orderStatus != null">
and order_status = #{orderStatus}
</if>
and is_deleted = 0
</where>
order by id desc
</select>
</mapper>

View File

@ -23,4 +23,13 @@
#{skuPrice},
#{skuNum})
</insert>
<select id="findByOrderId" resultType="com.atguigu.spzx.model.entity.order.OrderItem">
select
<include refid="columns"/>
from order_item
where
order_id = #{orderId}
and is_deleted = 0
order by id desc
</select>
</mapper>