Merge remote-tracking branch 'origin/master'

pull/1/head
sjm 2 years ago
commit 21ccf9adab

@ -1,13 +1,11 @@
package com.cyl.h5.controller; package com.cyl.h5.controller;
import com.cyl.h5.pojo.dto.OrderCreateDTO; 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.H5OrderVO;
import com.cyl.h5.pojo.vo.OrderCalcVO; import com.cyl.h5.pojo.vo.OrderCalcVO;
import com.cyl.h5.pojo.vo.form.OrderSubmitForm; 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.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.cyl.manager.ums.domain.Member;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.redis.RedisService; import com.ruoyi.common.core.redis.RedisService;
@ -15,7 +13,6 @@ import com.ruoyi.framework.config.LocalDataUtil;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -30,6 +27,7 @@ public class H5OrderController {
@Autowired @Autowired
private H5OrderService service; private H5OrderService service;
@ApiOperation("下单")
@PostMapping("/add") @PostMapping("/add")
public ResponseEntity<Long> submit(@RequestBody OrderSubmitForm form) { public ResponseEntity<Long> submit(@RequestBody OrderSubmitForm form) {
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
@ -76,4 +74,33 @@ public class H5OrderController {
} }
return ResponseEntity.ok(service.orderDetail(orderId)); return ResponseEntity.ok(service.orderDetail(orderId));
} }
@ApiOperation("确认收货")
@GetMapping("/orderComplete")
public ResponseEntity<String> 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<CountOrderVO> orderNumCount(){
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
Long memberId = member.getId();
return ResponseEntity.ok(service.orderNumCount(memberId));
}
} }

@ -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;
}

@ -3,9 +3,11 @@ package com.cyl.h5.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 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.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cyl.h5.pojo.dto.OrderCreateDTO; import com.cyl.h5.pojo.dto.OrderCreateDTO;
import com.cyl.h5.pojo.dto.OrderProductListDTO; 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.H5OrderVO;
import com.cyl.h5.pojo.vo.OrderCalcVO; import com.cyl.h5.pojo.vo.OrderCalcVO;
import com.cyl.h5.pojo.vo.SkuViewDTO; import com.cyl.h5.pojo.vo.SkuViewDTO;
@ -298,4 +300,53 @@ public class H5OrderService {
} }
return order; 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<OrderItem> orderItemList = orderItemMapper.selectByEntity(queryOrderItem);
if(order == null || CollectionUtil.isEmpty(orderItemList)){
throw new RuntimeException("未查询到订单信息");
}
// 只有【待收货】状态才能确认
if(!order.getStatus().equals(Constants.H5OrderStatus.DELIVERED)){
throw new RuntimeException("订单状态已改变,请刷新");
}
//更新订单
UpdateWrapper<Order> 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);
}
} }

@ -2,6 +2,7 @@ package com.cyl.manager.oms.mapper;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cyl.h5.pojo.vo.CountOrderVO;
import com.cyl.h5.pojo.vo.H5OrderVO; import com.cyl.h5.pojo.vo.H5OrderVO;
import com.cyl.manager.oms.domain.Order; import com.cyl.manager.oms.domain.Order;
import com.cyl.manager.oms.pojo.request.ManagerOrderQueryRequest; import com.cyl.manager.oms.pojo.request.ManagerOrderQueryRequest;
@ -27,4 +28,6 @@ public interface OrderMapper extends BaseMapper<Order> {
List<H5OrderVO> orderPage(@Param("status") Integer status, @Param("memberId")Long memberId); List<H5OrderVO> orderPage(@Param("status") Integer status, @Param("memberId")Long memberId);
H5OrderVO selectOrderDetail(Long orderId); H5OrderVO selectOrderDetail(Long orderId);
CountOrderVO countByStatusAndMemberId(Long memberId);
} }

@ -204,4 +204,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
delete_status=0 delete_status=0
and id=#{orderId} and id=#{orderId}
</select> </select>
<select id="countByStatusAndMemberId" resultType="com.cyl.h5.pojo.vo.CountOrderVO">
select
IFNULL(sum(case when status=0 and aftersale_status=1 then 1 else 0 end),0) unpaid,
IFNULL(sum(case when status=1 and aftersale_status=1 then 1 else 0 end),0) nosend,
IFNULL(sum(case when status=2 and aftersale_status=1 then 1 else 0 end),0) noget,
IFNULL(sum(case when aftersale_status in (2,3) then 1 else 0 end),0) aftersale
from oms_order
where member_id=#{memberId} and delete_status=0
</select>
</mapper> </mapper>

Loading…
Cancel
Save