From ba11b8586b1f3a6b072d787719083a792e1d1671 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 03 Jul 2025 16:04:03 +0800
Subject: [PATCH] feat(mall): 添加衣速达订单相关功能
---
src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderListVoDto.java | 29 +++
src/main/java/cc/mrbird/febs/mall/mapper/ClothesOrderMapper.java | 7
src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderItemInfoVo.java | 25 +++
src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderListVo.java | 34 ++++
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java | 23 ++
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 12 +
src/main/java/cc/mrbird/febs/mall/entity/ClothesOrder.java | 2
src/main/resources/mapper/modules/ClothesOrderMapper.xml | 29 +++
src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesOrderController.java | 29 +++
src/main/java/cc/mrbird/febs/mall/controller/order/ViewMallOrderController.java | 13 +
src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderListInfoVo.java | 104 +++++++++++++
src/main/java/cc/mrbird/febs/mall/entity/MallExpressInfo.java | 2
src/main/java/cc/mrbird/febs/mall/service/ApiClothesOrderService.java | 11
src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java | 153 +++++++++++++++++-
14 files changed, 448 insertions(+), 25 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesOrderController.java
index f68f950..0ff92f2 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesOrderController.java
@@ -6,6 +6,7 @@
import cc.mrbird.febs.mall.dto.clothes.*;
import cc.mrbird.febs.mall.service.ApiClothesOrderService;
import cc.mrbird.febs.mall.service.ApiClothesService;
+import cc.mrbird.febs.mall.vo.OrderDetailVo;
import cc.mrbird.febs.mall.vo.OrderListVo;
import cc.mrbird.febs.mall.vo.clothes.*;
import io.swagger.annotations.Api;
@@ -86,10 +87,36 @@
@ApiResponse(code = 200, message = "success", response = ApiClothesOrderPayVo.class)
})
@PostMapping(value = "/payOrder")
- public FebsResponse payOrder(@RequestBody ApiClothesOrderPayDto dto) {
+ public FebsResponse payOrder(@RequestBody @Validated ApiClothesOrderPayDto dto) {
return apiClothesOrderService.payOrder(dto);
}
+ @ApiOperation(value = "订单列表", notes = "订单列表")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = ApiClothesOrderListVo.class)
+ })
+ @PostMapping(value = "/orderList")
+ public FebsResponse orderList(@RequestBody @Validated ApiClothesOrderListVoDto dto) {
+
+ return apiClothesOrderService.findOrderList(dto);
+ }
+
+ @ApiOperation(value = "订单详情", notes = "订单详情")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = ApiClothesOrderListInfoVo.class)
+ })
+ @GetMapping(value = "/orderDetails/{id}")
+ public FebsResponse orderDetails(@PathVariable("id") Long id) {
+
+ return apiClothesOrderService.orderDetails(id);
+ }
+
+ @ApiOperation(value = "确认收货", notes = "确认收货")
+ @PostMapping(value = "/confirm/{id}")
+ public FebsResponse confirm(@PathVariable("id") Long id) {
+ return apiClothesOrderService.confirmOrder(id);
+ }
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/order/ViewMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/order/ViewMallOrderController.java
index f1417d8..a868dc7 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/order/ViewMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/order/ViewMallOrderController.java
@@ -6,6 +6,7 @@
import cc.mrbird.febs.common.utils.FebsUtil;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.mall.entity.MallExpressInfo;
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
import cc.mrbird.febs.mall.entity.MallOrderRefund;
import cc.mrbird.febs.mall.mapper.MallExpressInfoMapper;
import cc.mrbird.febs.mall.mapper.MallInvoiceMapper;
@@ -17,6 +18,7 @@
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
@@ -82,9 +84,16 @@
@RequiresPermissions("deliverGoods:update")
public String deliverGoods(@PathVariable long id, Model model) {
AdminMallOrderVo data = adminMallOrderService.getMallOrderInfoById(id);
+ MallOrderInfo mallOrderInfo = adminMallOrderService.getBaseMapper().selectById(id);
data.setExpressCom("极兔快递");
- MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(id);
- if(ObjectUtil.isNotEmpty(mallExpressInfo)){
+ MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectOne(
+ Wrappers.lambdaQuery(MallExpressInfo.class)
+ .eq(MallExpressInfo::getOrderId, id)
+ .eq(MallExpressInfo::getOrderNo, mallOrderInfo.getOrderNo())
+ .last("limit 1")
+ );
+// MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(id);
+ if(ObjectUtil.isNotNull(mallExpressInfo)){
data.setExpressNo(mallExpressInfo.getExpressNo());
data.setExpressCom(mallExpressInfo.getExpressCom());
}else{
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderListVoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderListVoDto.java
new file mode 100644
index 0000000..ff147fb
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderListVoDto.java
@@ -0,0 +1,29 @@
+package cc.mrbird.febs.mall.dto.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "ApiClothesOrderListVoDto", description = "参数")
+public class ApiClothesOrderListVoDto {
+
+ @NotNull(message = "页码不能为空")
+ @ApiModelProperty(value = "页码", example = "1")
+ private Integer pageNow;
+
+ @NotNull(message = "每页数量不能为空")
+ @ApiModelProperty(value = "每页数量", example = "10")
+ private Integer pageSize;
+
+ @ApiModelProperty(value = "搜索参数", example = "1")
+ private String query;
+
+ @ApiModelProperty(value = "订单状态", example = "状态 1-待支付 2-待发货 3-待收货 4-已完成 5-已取消")
+ private Integer status;
+
+ @ApiModelProperty(hidden = true)
+ private Long memberId;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/ClothesOrder.java b/src/main/java/cc/mrbird/febs/mall/entity/ClothesOrder.java
index 6b56495..0d0e73a 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/ClothesOrder.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/ClothesOrder.java
@@ -8,7 +8,7 @@
import java.util.Date;
@Data
-@TableName("clothes_order_graft")
+@TableName("clothes_order")
public class ClothesOrder extends BaseEntity {
/**
*
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallExpressInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/MallExpressInfo.java
index b632a13..09fe17a 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallExpressInfo.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallExpressInfo.java
@@ -17,6 +17,8 @@
private Long memberId;
+ private String orderNo;
+
private String expressNo;
private String expressCom;
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesOrderMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesOrderMapper.java
index 1219d6f..5a4d2bd 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesOrderMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesOrderMapper.java
@@ -1,7 +1,14 @@
package cc.mrbird.febs.mall.mapper;
+import cc.mrbird.febs.mall.dto.clothes.ApiClothesOrderListVoDto;
import cc.mrbird.febs.mall.entity.ClothesOrder;
+import cc.mrbird.febs.mall.vo.clothes.ApiClothesOrderListVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
public interface ClothesOrderMapper extends BaseMapper<ClothesOrder> {
+
+ Page<ApiClothesOrderListVo> selectPageInOrder(Page<ApiClothesOrderListVo> page, @Param("record")ApiClothesOrderListVoDto dto);
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/ApiClothesOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/ApiClothesOrderService.java
index dc4bb2c..77d2fbe 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/ApiClothesOrderService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/ApiClothesOrderService.java
@@ -1,10 +1,7 @@
package cc.mrbird.febs.mall.service;
import cc.mrbird.febs.common.entity.FebsResponse;
-import cc.mrbird.febs.mall.dto.clothes.ApiClothesOrderDraftDto;
-import cc.mrbird.febs.mall.dto.clothes.ApiClothesOrderInfoDto;
-import cc.mrbird.febs.mall.dto.clothes.ApiClothesOrderPayDto;
-import cc.mrbird.febs.mall.dto.clothes.ApiMyDraftPageDto;
+import cc.mrbird.febs.mall.dto.clothes.*;
import cc.mrbird.febs.mall.entity.ClothesOrder;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -25,4 +22,10 @@
FebsResponse delOrder(Long id);
FebsResponse payOrder(ApiClothesOrderPayDto dto);
+
+ FebsResponse findOrderList(ApiClothesOrderListVoDto dto);
+
+ FebsResponse orderDetails(Long id);
+
+ FebsResponse confirmOrder(Long id);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
index 030d529..7ace13c 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
@@ -17,6 +17,7 @@
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
@@ -140,8 +141,15 @@
@Override
public AdminOrderDetailVo getMallOrderDetailById(long id) {
AdminOrderDetailVo adminOrderDetailVo = mallOrderInfoMapper.getMallOrderDetailById(id);
- MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(id);
- if(ObjectUtil.isNotEmpty(mallExpressInfo)){
+ MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectOne(
+ Wrappers.lambdaQuery(MallExpressInfo.class)
+ .eq(MallExpressInfo::getOrderId, id)
+ .eq(MallExpressInfo::getOrderNo, adminOrderDetailVo.getOrderNo())
+ .last("limit 1")
+ );
+
+// MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(id);
+ if(ObjectUtil.isNotNull(mallExpressInfo)){
adminOrderDetailVo.setExpressNo(mallExpressInfo.getExpressNo());
adminOrderDetailVo.setExpressCom(mallExpressInfo.getExpressCom());
}
@@ -496,9 +504,15 @@
if(StrUtil.isEmpty(expressCom)){
return new FebsResponse().fail().message("请输入物流公司");
}
- MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(mallOrderInfo.getId());
+ MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectOne(
+ Wrappers.lambdaQuery(MallExpressInfo.class)
+ .eq(MallExpressInfo::getOrderId, mallOrderInfo.getId())
+ .eq(MallExpressInfo::getOrderNo, mallOrderInfo.getOrderNo())
+ .last("limit 1")
+ );
+// MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(mallOrderInfo.getId());
- if(ObjectUtil.isEmpty(mallExpressInfo)){
+ if(ObjectUtil.isNull(mallExpressInfo)){
return new FebsResponse().fail().message("请先发货");
}
mallExpressInfo.setExpressNo(expressNo);
@@ -584,6 +598,7 @@
MallExpressInfo mallExpressInfo = new MallExpressInfo();
mallExpressInfo.setMemberId(mallOrderInfo.getMemberId());
mallExpressInfo.setOrderId(mallOrderInfo.getId());
+ mallExpressInfo.setOrderNo(deliverGoodsDto.getOrderNo());
mallExpressInfo.setExpressNo(deliverGoodsDto.getExpressNo());
mallExpressInfo.setExpressCom(deliverGoodsDto.getExpressCom());
mallExpressInfo.setExpressCode(deliverGoodsDto.getExpressCode());
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java
index 59d82e7..e0a46d9 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java
@@ -14,14 +14,14 @@
import cc.mrbird.febs.mall.service.ApiClothesOrderService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
-import cc.mrbird.febs.mall.vo.clothes.ApiClothesOrderInfoVo;
-import cc.mrbird.febs.mall.vo.clothes.ApiClothesOrderPayVo;
-import cc.mrbird.febs.mall.vo.clothes.ApiMyDraftVo;
+import cc.mrbird.febs.mall.vo.clothes.*;
import cc.mrbird.febs.pay.model.BrandWCPayRequestData;
import cc.mrbird.febs.pay.service.IPayService;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
@@ -65,6 +65,7 @@
private final MallAddressInfoMapper mallAddressInfoMapper;
private final MallMemberCouponMapper mallMemberCouponMapper;
private final MallGoodsCouponMapper mallGoodsCouponMapper;
+ private final MallExpressInfoMapper mallExpressInfoMapper;
private final AgentProducer agentProducer;
private final IXcxPayService iXcxPayService;
@@ -460,9 +461,13 @@
throw new FebsException("详情参数错误");
}
}
- /**
- * 计算优惠金额、运费和实际支付金额
- */
+
+ total = total.multiply(new BigDecimal(orderInfo.getGoodsCnt())).setScale(2, RoundingMode.DOWN);
+ orderInfo.setAmount(total);
+
+ /**
+ * 计算优惠金额、运费和实际支付金额
+ */
BigDecimal discountAmount = BigDecimal.ZERO;
MallMemberCoupon mallMemberCoupon = new MallMemberCoupon();
if(ObjectUtil.isNotEmpty(dto.getMemberCouponId())){
@@ -484,13 +489,12 @@
orderInfo.setMemberCouponId(memberCouponId);
}
}
- BigDecimal deliveryAmount = dto.getDeliveryAmount() == null ? BigDecimal.ZERO : dto.getDeliveryAmount();
-
- orderInfo.setAmount(total);
orderInfo.setDiscountAmount(discountAmount);
+
+ BigDecimal deliveryAmount = dto.getDeliveryAmount() == null ? BigDecimal.ZERO : dto.getDeliveryAmount();
orderInfo.setCarriage(deliveryAmount);
- BigDecimal realAmount = total.subtract(discountAmount).add(deliveryAmount);
+ BigDecimal realAmount = total.subtract(discountAmount).add(deliveryAmount).setScale(2, RoundingMode.DOWN);
orderInfo.setRealAmount(realAmount);
clothesOrderMapper.updateById(orderInfo);
@@ -550,6 +554,7 @@
if(
ObjectUtil.isNotNull(clothesOrder)
&& ClothesEnum.DOWN.getCode() == clothesOrder.getDelFlag()
+ && ClothesOrderStatusEnum.CANCEL.getValue() == clothesOrder.getStatus()
){
clothesOrderMapper.update(null,
Wrappers.lambdaUpdate(ClothesOrder.class)
@@ -677,4 +682,132 @@
return new FebsResponse().success().data(apiClothesOrderPayVo).message("支付成功");
}
+ @Override
+ public FebsResponse findOrderList(ApiClothesOrderListVoDto dto) {
+
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ dto.setMemberId(memberId);
+
+
+ // 创建分页对象,传入当前页和每页大小
+ Page<ApiClothesOrderListVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+ // 调用Mapper方法获取活动分页数据
+ Page<ApiClothesOrderListVo> voPage = clothesOrderMapper.selectPageInOrder(page, dto);
+
+ return new FebsResponse().success().data(voPage);
+ }
+
+
+
+ private List<ApiClothesOrderItemInfoVo> buildOrderItemInfo(Long id) {
+ List<ApiClothesOrderItemInfoVo> vos = new ArrayList<>();
+ List<ClothesOrderItem> clothesOrderItems = clothesOrderItemMapper.selectList(
+ Wrappers.lambdaQuery(ClothesOrderItem.class)
+ .eq(ClothesOrderItem::getOrderId, id)
+ );
+ if(CollUtil.isNotEmpty(clothesOrderItems)){
+ for (ClothesOrderItem item : clothesOrderItems) {
+ ApiClothesOrderItemInfoVo vo = new ApiClothesOrderItemInfoVo();
+ vo.setName(item.getName());
+ vo.setPrice(item.getPrice());
+ vo.setType(item.getType());
+ vo.setRemark(item.getRemark());
+
+
+ vos.add( vo);
+ }
+ }
+ return vos;
+
+ }
+
+ @Override
+ public FebsResponse orderDetails(Long id) {
+
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+
+ ApiClothesOrderListInfoVo apiClothesOrderListInfoVo = new ApiClothesOrderListInfoVo();
+
+ ClothesOrder clothesOrder = clothesOrderMapper.selectById(id);
+ if(ObjectUtil.isNull(clothesOrder)){
+ throw new FebsException("订单不存在");
+ }
+ apiClothesOrderListInfoVo.setId(clothesOrder.getId());
+ apiClothesOrderListInfoVo.setOrderNo(clothesOrder.getOrderNo());
+ apiClothesOrderListInfoVo.setOrderTime(clothesOrder.getOrderTime());
+ apiClothesOrderListInfoVo.setAmount(clothesOrder.getAmount());
+ apiClothesOrderListInfoVo.setRealAmount(clothesOrder.getRealAmount());
+
+ ClothesType clothesType = clothesTypeMapper.selectById(clothesOrder.getTypeId());
+ if(ObjectUtil.isNotNull(clothesType)){
+ apiClothesOrderListInfoVo.setTypeName(clothesType.getName());
+ apiClothesOrderListInfoVo.setTypeImage(clothesType.getImage());
+ }
+
+ apiClothesOrderListInfoVo.setGoodsCnt(clothesOrder.getGoodsCnt());
+ apiClothesOrderListInfoVo.setPayMethod(clothesOrder.getPayMethod());
+ apiClothesOrderListInfoVo.setStatus(clothesOrder.getStatus());
+
+ apiClothesOrderListInfoVo.setLongitude(clothesOrder.getLongitude());
+ apiClothesOrderListInfoVo.setLatitude(clothesOrder.getLatitude());
+ apiClothesOrderListInfoVo.setName(clothesOrder.getName());
+ apiClothesOrderListInfoVo.setPhone(clothesOrder.getPhone());
+ apiClothesOrderListInfoVo.setAddress(clothesOrder.getAddress());
+
+ MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectOne(
+ Wrappers.lambdaQuery(MallExpressInfo.class)
+ .eq(MallExpressInfo::getOrderId, clothesOrder.getId())
+ .eq(MallExpressInfo::getOrderNo, clothesOrder.getOrderNo())
+ .last("limit 1")
+ );
+ if(ObjectUtil.isNotNull(mallExpressInfo)){
+ apiClothesOrderListInfoVo.setExpressNo(mallExpressInfo.getExpressNo());
+ apiClothesOrderListInfoVo.setExpressCom(mallExpressInfo.getExpressCom());
+ }
+
+ List<ApiClothesOrderItemInfoVo> items = buildOrderItemInfo(clothesOrder.getId());
+ apiClothesOrderListInfoVo.setItems(items);
+
+ if (OrderStatusEnum.WAIT_PAY.getValue() == clothesOrder.getStatus()) {
+ Date endTime = DateUtil.offsetMinute(clothesOrder.getOrderTime(), 1440);
+
+ long remainTime = DateUtil.between(new Date(), endTime, DateUnit.SECOND, false);
+ apiClothesOrderListInfoVo.setRemainTime(remainTime);
+ }
+ apiClothesOrderListInfoVo.setCarriage(clothesOrder.getCarriage());
+ apiClothesOrderListInfoVo.setRemark(clothesOrder.getRemark());
+ apiClothesOrderListInfoVo.setCommentState(clothesOrder.getCommentState());
+
+ return new FebsResponse().success().data(apiClothesOrderListInfoVo);
+ }
+
+ @Override
+ public FebsResponse confirmOrder(Long id) {
+ MallMember member = LoginUserUtil.getLoginUser();
+
+ ClothesOrder orderInfo =clothesOrderMapper.selectById(id);
+ if(ObjectUtil.isNull(orderInfo)){
+ throw new FebsException("订单不存在");
+ }
+ if (member.getId() != orderInfo.getMemberId()) {
+ throw new FebsException("无权限操作");
+ }
+ if (ClothesEnum.UP.getCode() == orderInfo.getDelFlag()) {
+ throw new FebsException("订单不存在");
+ }
+
+ if (orderInfo.getStatus() != ClothesOrderStatusEnum.WAIT_FINISH.getValue()) {
+ throw new FebsException("订单不是待收货状态");
+ }
+
+ clothesOrderMapper.update(null,
+ Wrappers.lambdaUpdate(ClothesOrder.class)
+ .set(ClothesOrder::getStatus, OrderStatusEnum.FINISH.getValue())
+ .set(ClothesOrder::getUpdatedTime, new Date())
+ .eq(ClothesOrder::getId, id)
+ .eq(ClothesOrder::getMemberId, member.getId())
+ );
+ return new FebsResponse().success().message("操作成功");
+ }
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 031f3a6..e7e5c42 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -34,6 +34,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
@@ -871,8 +872,15 @@
}
}
- MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
- if(ObjectUtil.isNotEmpty(expressInfo)){
+ MallExpressInfo expressInfo = expressInfoMapper.selectOne(
+ Wrappers.lambdaQuery(MallExpressInfo.class)
+ .eq(MallExpressInfo::getOrderId, orderInfo.getId())
+ .eq(MallExpressInfo::getOrderNo, orderInfo.getOrderNo())
+ .last("limit 1")
+ );
+
+// MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
+ if(ObjectUtil.isNotNull(expressInfo)){
orderDetailVo.setExpressNo(expressInfo.getExpressNo());
orderDetailVo.setExpressCom(expressInfo.getExpressCom());
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderItemInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderItemInfoVo.java
new file mode 100644
index 0000000..f8f5a05
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderItemInfoVo.java
@@ -0,0 +1,25 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiClothesOrderItemInfoVo", description = "参数")
+public class ApiClothesOrderItemInfoVo {
+
+
+ @ApiModelProperty(value = "名称")
+ private String name;
+
+ @ApiModelProperty(value = "单价")
+ private BigDecimal price;
+
+ @ApiModelProperty(value = "类型 1图案 2图案位置 3工艺 4布料 5尺码 6尺码自定义")
+ private Integer type;
+
+ @ApiModelProperty(value = "订单编号")
+ private String remark;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderListInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderListInfoVo.java
new file mode 100644
index 0000000..4bd0569
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderListInfoVo.java
@@ -0,0 +1,104 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import cc.mrbird.febs.mall.vo.OrderItemVo;
+import cc.mrbird.febs.mall.vo.OrderRefundVo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@ApiModel(value = "ApiClothesOrderListInfoVo", description = "参数")
+public class ApiClothesOrderListInfoVo {
+
+
+ @ApiModelProperty(value = "订单ID")
+ private Long id;
+
+ @ApiModelProperty(value = "订单编号")
+ private String orderNo;
+
+ @ApiModelProperty(value = "下单时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date orderTime;
+
+ @ApiModelProperty(value = "总价")
+ private BigDecimal amount;
+
+ @ApiModelProperty(value = "实付款")
+ private BigDecimal realAmount;
+
+ @ApiModelProperty(value = "类型名称")
+ private String typeName;
+
+ @ApiModelProperty(value = "类型图片")
+ private String typeImage;
+
+ @ApiModelProperty(value = "数量")
+ private Integer goodsCnt;
+
+ @ApiModelProperty(value = "支付方式")
+ private String payMethod;
+
+ public Integer getPayMethodType() {
+ if (this.payMethod == null) {
+ return 0;
+ }
+ switch (this.payMethod) {
+ case "微信支付" :
+ return 1;
+ case "支付宝支付" :
+ return 2;
+ case "余额支付" :
+ return 3;
+ default:
+ return 3;
+ }
+ }
+
+ @ApiModelProperty(value = "支付方式类型")
+ private Integer payMethodType;
+
+ @ApiModelProperty(value = "状态")
+ private Integer status;
+
+ @ApiModelProperty(value = "送货上门经度")
+ private String longitude;
+
+ @ApiModelProperty(value = "送货上门纬度")
+ private String latitude;
+
+ @ApiModelProperty(value = "收货人姓名")
+ private String name;
+
+ @ApiModelProperty(value = "收货人电话")
+ private String phone;
+
+ @ApiModelProperty(value = "收货人地址")
+ private String address;
+
+ @ApiModelProperty(value = "物流单号")
+ private String expressNo;
+
+ @ApiModelProperty(value = "物流公司")
+ private String expressCom;
+
+ @ApiModelProperty(value = "订单明细")
+ private List<ApiClothesOrderItemInfoVo> items;
+
+ @ApiModelProperty(value = "剩余时间")
+ private Long remainTime;
+
+ @ApiModelProperty(value = "运费")
+ private BigDecimal carriage;
+
+ @ApiModelProperty(value = "备注")
+ private String remark;
+
+ @ApiModelProperty(value = "分享社区 1:待分享 2:已分享")
+ private Integer commentState;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderListVo.java
new file mode 100644
index 0000000..57e967c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/clothes/ApiClothesOrderListVo.java
@@ -0,0 +1,34 @@
+package cc.mrbird.febs.mall.vo.clothes;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "ApiClothesOrderListVo", description = "参数")
+public class ApiClothesOrderListVo {
+
+ @ApiModelProperty(value = "订单ID")
+ private Long id;
+
+ @ApiModelProperty(value = "总价")
+ private BigDecimal amount;
+
+ @ApiModelProperty(value = "实付款")
+ private BigDecimal realAmount;
+
+ @ApiModelProperty(value = "类型名称")
+ private String typeName;
+
+ @ApiModelProperty(value = "类型图片")
+ private String typeImage;
+
+ @ApiModelProperty(value = "数量")
+ private Integer goodsCnt;
+
+ @ApiModelProperty(value = "订单状态", example = "状态 1-待支付 2-待发货 3-待收货 4-已完成 5-已取消")
+ private Integer status;
+
+}
diff --git a/src/main/resources/mapper/modules/ClothesOrderMapper.xml b/src/main/resources/mapper/modules/ClothesOrderMapper.xml
index 4edd12c..7e48374 100644
--- a/src/main/resources/mapper/modules/ClothesOrderMapper.xml
+++ b/src/main/resources/mapper/modules/ClothesOrderMapper.xml
@@ -2,6 +2,33 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cc.mrbird.febs.mall.mapper.ClothesOrderMapper">
-
+ <select id="selectPageInOrder" resultType="cc.mrbird.febs.mall.vo.clothes.ApiClothesOrderListVo">
+ select
+ a.id as id,
+ a.amount as amount,
+ a.real_amount as realAmount,
+ a.status as status,
+ b.name as typeName,
+ b.image as typeImage,
+ a.goods_cnt as goodsCnt
+ from clothes_order_graft a
+ left join clothes_type b on a.type_id = b.id
+ <where>
+ and a.member_id = #{record.memberId}
+ <if test="record != null">
+ <if test="record.query != null and record.query != ''">
+ and (
+ b.name like CONCAT('%', CONCAT(#{record.query}, '%')) or
+ )
+ </if>
+ <if test="record.status != null">
+ and (
+ a.status = #{record.status}
+ )
+ </if>
+ </if>
+ </where>
+ order by a.CREATED_TIME desc
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1