From 8eb3399534ab651cfd254cc07f60fc92c4be84a0 Mon Sep 17 00:00:00 2001 From: czc Date: Mon, 10 Jul 2023 16:47:14 +0800 Subject: [PATCH] =?UTF-8?q?H5=E6=88=91=E7=9A=84=E7=95=8C=E9=9D=A2=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cyl/h5/controller/H5OrderController.java | 35 +++++++++++-- .../java/com/cyl/h5/pojo/vo/CountOrderVO.java | 22 ++++++++ .../com/cyl/h5/service/H5OrderService.java | 51 +++++++++++++++++++ .../cyl/manager/oms/mapper/OrderMapper.java | 3 ++ .../main/resources/mapper/oms/OrderMapper.xml | 9 ++++ 5 files changed, 116 insertions(+), 4 deletions(-) create mode 100644 ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/CountOrderVO.java diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java index 5b6ee1b..50094ab 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5OrderController.java @@ -1,13 +1,11 @@ package com.cyl.h5.controller; import com.cyl.h5.pojo.dto.OrderCreateDTO; +import com.cyl.h5.pojo.vo.CountOrderVO; import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.h5.pojo.vo.OrderCalcVO; import com.cyl.h5.pojo.vo.form.OrderSubmitForm; -import com.cyl.h5.pojo.vo.query.OrderH5Query; import com.cyl.h5.service.H5OrderService; -import com.cyl.manager.oms.pojo.vo.OrderVO; -import com.cyl.manager.oms.service.OrderService; import com.cyl.manager.ums.domain.Member; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.redis.RedisService; @@ -15,7 +13,6 @@ import com.ruoyi.framework.config.LocalDataUtil; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; @@ -30,6 +27,7 @@ public class H5OrderController { @Autowired private H5OrderService service; + @ApiOperation("下单") @PostMapping("/add") public ResponseEntity submit(@RequestBody OrderSubmitForm form) { Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); @@ -76,4 +74,33 @@ public class H5OrderController { } return ResponseEntity.ok(service.orderDetail(orderId)); } + + @ApiOperation("确认收货") + @GetMapping("/orderComplete") + public ResponseEntity orderComplete(Long orderId) { + log.info("确认收货,订单id:"+orderId); + String redisKey = "h5_oms_order_complete_"+orderId; + String redisValue = orderId+"_"+System.currentTimeMillis(); + try{ + redisService.lock(redisKey,redisValue,60); + return ResponseEntity.ok(service.orderComplete(orderId)); + }catch (Exception e){ + log.error("确认收货异常",e); + throw new RuntimeException("确认收货失败"); + }finally { + try{ + redisService.unLock(redisKey,redisValue); + }catch (Exception e){ + log.error("",e); + } + } + } + + @ApiOperation("订单数量统计") + @GetMapping("/countOrder") + public ResponseEntity orderNumCount(){ + Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); + Long memberId = member.getId(); + return ResponseEntity.ok(service.orderNumCount(memberId)); + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/CountOrderVO.java b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/CountOrderVO.java new file mode 100644 index 0000000..65152f7 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/h5/pojo/vo/CountOrderVO.java @@ -0,0 +1,22 @@ +package com.cyl.h5.pojo.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("统计订单数量VO") +public class CountOrderVO { + + @ApiModelProperty(value = "待付款订单数量", dataType = "Integer") + private Integer unpaid; + + @ApiModelProperty(value = "待发货订单数量", dataType = "Integer") + private Integer nosend; + + @ApiModelProperty(value = "待收货订单数量", dataType = "Integer") + private Integer noget; + + @ApiModelProperty(value = "售后订单数量", dataType = "Integer") + private Integer aftersale; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java index 857caf4..d8f0b8e 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java @@ -3,9 +3,11 @@ package com.cyl.h5.service; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.cyl.h5.pojo.dto.OrderCreateDTO; import com.cyl.h5.pojo.dto.OrderProductListDTO; +import com.cyl.h5.pojo.vo.CountOrderVO; import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.h5.pojo.vo.OrderCalcVO; import com.cyl.h5.pojo.vo.SkuViewDTO; @@ -298,4 +300,53 @@ public class H5OrderService { } return order; } + + @Transactional + public String orderComplete(Long orderId) { + LocalDateTime optDate = LocalDateTime.now(); + Order order = orderMapper.selectById(orderId); + OrderItem queryOrderItem = new OrderItem(); + queryOrderItem.setOrderId(orderId); + List orderItemList = orderItemMapper.selectByEntity(queryOrderItem); + if(order == null || CollectionUtil.isEmpty(orderItemList)){ + throw new RuntimeException("未查询到订单信息"); + } + // 只有【待收货】状态才能确认 + if(!order.getStatus().equals(Constants.H5OrderStatus.DELIVERED)){ + throw new RuntimeException("订单状态已改变,请刷新"); + } + //更新订单 + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", order.getId()); + updateWrapper.set("status", Constants.H5OrderStatus.COMPLETED); + updateWrapper.set("confirm_status", 1); + updateWrapper.set("receive_time", optDate); + int rows = orderMapper.update(null, updateWrapper); + if (rows < 1){ + throw new RuntimeException("更新订单状态失败"); + } + //创建订单操作记录 + OrderOperateHistory optHistory = new OrderOperateHistory(); + optHistory.setOrderId(order.getId()); + optHistory.setOperateMan("用户"); + optHistory.setOrderStatus(Constants.H5OrderStatus.COMPLETED); + optHistory.setCreateTime(optDate); + optHistory.setCreateBy(order.getMemberId()); + optHistory.setUpdateBy(order.getMemberId()); + optHistory.setUpdateTime(optDate); + rows = orderOperateHistoryMapper.insert(optHistory); + if (rows < 1){ + throw new RuntimeException("创建订单操作记录失败"); + } + return order.getOrderSn(); + } + + /** + * 统计待付款、待发货、待收货和售后订单数量 + * @param memberId + * @return + */ + public CountOrderVO orderNumCount(Long memberId) { + return orderMapper.countByStatusAndMemberId(memberId); + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java index 5d34415..cf0faaf 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java @@ -2,6 +2,7 @@ package com.cyl.manager.oms.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cyl.h5.pojo.vo.CountOrderVO; import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.manager.oms.domain.Order; import com.cyl.manager.oms.pojo.request.ManagerOrderQueryRequest; @@ -27,4 +28,6 @@ public interface OrderMapper extends BaseMapper { List orderPage(@Param("status") Integer status, @Param("memberId")Long memberId); H5OrderVO selectOrderDetail(Long orderId); + + CountOrderVO countByStatusAndMemberId(Long memberId); } diff --git a/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml index 189a432..9c04574 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml @@ -204,4 +204,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" delete_status=0 and id=#{orderId} +