H5、后台service区分,订单新增orderSn及其相关业务修改

pull/1/head
chuzhichao 2 years ago
parent 87197fc33a
commit fe4e3a9bf7

@ -4,6 +4,7 @@ import com.cyl.h5.pojo.dto.OrderCreateDTO;
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.pojo.vo.query.OrderH5Query;
import com.cyl.h5.service.H5OrderService;
import com.cyl.manager.oms.pojo.vo.OrderVO; import com.cyl.manager.oms.pojo.vo.OrderVO;
import com.cyl.manager.oms.service.OrderService; import com.cyl.manager.oms.service.OrderService;
import com.cyl.manager.ums.domain.Member; import com.cyl.manager.ums.domain.Member;
@ -25,10 +26,10 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/h5/order") @RequestMapping("/h5/order")
@Slf4j @Slf4j
public class H5OrderController { public class H5OrderController {
@Autowired
private OrderService orderService;
@Autowired @Autowired
private RedisService redisService; private RedisService redisService;
@Autowired
private H5OrderService service;
@PostMapping("/add") @PostMapping("/add")
public ResponseEntity<Long> submit(@RequestBody OrderSubmitForm form) { public ResponseEntity<Long> submit(@RequestBody OrderSubmitForm form) {
@ -38,10 +39,10 @@ public class H5OrderController {
String redisValue = memberId + "_" + System.currentTimeMillis(); String redisValue = memberId + "_" + System.currentTimeMillis();
try{ try{
redisService.lock(redisKey, redisValue, 60); redisService.lock(redisKey, redisValue, 60);
return ResponseEntity.ok(orderService.submit(form)); return ResponseEntity.ok(service.submit(form));
}catch (Exception e){ }catch (Exception e){
log.info("创建订单方法异常", e); log.info("创建订单方法异常", e);
return null; throw new RuntimeException("服务繁忙,稍后再试");
}finally { }finally {
try { try {
redisService.unLock(redisKey, redisValue); redisService.unLock(redisKey, redisValue);
@ -50,14 +51,14 @@ public class H5OrderController {
} }
} }
} }
@PostMapping("orders") // @PostMapping("orders")
public ResponseEntity<Page<OrderVO>> queryOrderPage(@RequestBody OrderH5Query query, Pageable pageReq) { // public ResponseEntity<Page<OrderVO>> queryOrderPage(@RequestBody OrderH5Query query, Pageable pageReq) {
return ResponseEntity.ok(orderService.queryOrderPage(query, pageReq)); // return ResponseEntity.ok(service.queryOrderPage(query, pageReq));
} // }
@ApiOperation("下单前校验") @ApiOperation("下单前校验")
@PostMapping("/addOrderCheck") @PostMapping("/addOrderCheck")
public ResponseEntity<OrderCalcVO> addOrderCheck(@RequestBody OrderCreateDTO orderCreateDTO){ public ResponseEntity<OrderCalcVO> addOrderCheck(@RequestBody OrderCreateDTO orderCreateDTO){
return ResponseEntity.ok(orderService.addOrderCheck(orderCreateDTO)); return ResponseEntity.ok(service.addOrderCheck(orderCreateDTO));
} }
} }

@ -0,0 +1,233 @@
package com.cyl.h5.service;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.OrderCalcVO;
import com.cyl.h5.pojo.vo.SkuViewDTO;
import com.cyl.h5.pojo.vo.form.OrderSubmitForm;
import com.cyl.manager.oms.domain.Order;
import com.cyl.manager.oms.domain.OrderOperateHistory;
import com.cyl.manager.oms.mapper.OrderItemMapper;
import com.cyl.manager.oms.mapper.OrderMapper;
import com.cyl.manager.oms.mapper.OrderOperateHistoryMapper;
import com.cyl.manager.oms.service.OrderItemService;
import com.cyl.manager.pms.domain.Product;
import com.cyl.manager.pms.domain.Sku;
import com.cyl.manager.pms.mapper.ProductMapper;
import com.cyl.manager.pms.mapper.SkuMapper;
import com.cyl.manager.ums.domain.Member;
import com.cyl.manager.ums.domain.MemberAddress;
import com.cyl.manager.ums.domain.MemberCart;
import com.cyl.manager.ums.mapper.MemberAddressMapper;
import com.cyl.manager.ums.mapper.MemberCartMapper;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.utils.IDGenerator;
import com.ruoyi.framework.config.LocalDataUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class H5OrderService {
@Autowired
private MemberAddressMapper memberAddressMapper;
@Autowired
private SkuMapper skuMapper;
@Autowired
private ProductMapper productMapper;
@Autowired
private MemberCartMapper memberCartMapper;
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderItemMapper orderItemMapper;
@Autowired
private OrderOperateHistoryMapper orderOperateHistoryMapper;
@Autowired
private OrderItemService orderItemService;
@Transactional
public Long submit(OrderSubmitForm form) {
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
//只支持快递
Long addressId = form.getAddressId();
if (addressId == null){
throw new RuntimeException("收获地址不能为空");
}
MemberAddress memberAddress = memberAddressMapper.selectById(addressId);
if (memberAddress == null){
throw new RuntimeException("收货地址不能为空");
}
//sku不能为空
List<OrderProductListDTO> skuList = form.getSkuList();
if (CollectionUtil.isEmpty(skuList)){
throw new RuntimeException("商品SKU信息不能为空");
}
//将sku信息转换为 keyskuId value购买数量
Map<Long, Integer> skuQuantityMap = skuList.stream().collect(Collectors.toMap(OrderProductListDTO::getSkuId, OrderProductListDTO::getQuantity));
//查询所有sku信息
Map<Long, Sku> querySkuMap = skuMapper
.selectBatchIds(skuList.stream().map(OrderProductListDTO::getSkuId).collect(Collectors.toList()))
.stream().collect(Collectors.toMap(Sku::getId, it -> it));
//计算商品总额、订单总额(订单总金额=商品总金额,因为暂时没有运费等概念)
BigDecimal productTotalAmount = BigDecimal.ZERO;
BigDecimal orderTotalAmount = BigDecimal.ZERO;
for (OrderProductListDTO dto : skuList){
if (!querySkuMap.containsKey(dto.getSkuId())){
throw new RuntimeException("商品SKU不存在");
}
Sku sku = querySkuMap.get(dto.getSkuId());
Product product = productMapper.selectById(sku.getProductId());
if (product == null){
throw new RuntimeException("商品不存在");
}
if (Constants.PublishStatus.UNDERCARRIAGE.equals(product.getPublishStatus())){
throw new RuntimeException("商品" + product.getName() + "已下架");
}
productTotalAmount = productTotalAmount.add(sku.getPrice().multiply(BigDecimal.valueOf(skuQuantityMap.get(sku.getId()))));
orderTotalAmount = orderTotalAmount.add(sku.getPrice().multiply(BigDecimal.valueOf(skuQuantityMap.get(sku.getId()))));
dto.setSku(sku);
dto.setProduct(product);
}
LocalDateTime optTime = LocalDateTime.now();
//生成一个统一的订单号
Long orderId = IDGenerator.generateId();
//创建订单
Order order = new Order();
order.setId(orderId);
order.setOrderSn(this.getOrderIdPrefix() + orderId);
order.setMemberId(member.getId());
order.setMemberUsername(member.getNickname());
order.setPayType(Constants.PayType.WECHAT);
order.setTotalAmount(orderTotalAmount);
order.setPurchasePrice(BigDecimal.ZERO);
order.setFreightAmount(BigDecimal.ZERO);
order.setPayAmount(orderTotalAmount);
//暂时为接入支付,直接设置为待发货
order.setStatus(Constants.OrderStatus.SEND);
order.setAftersaleStatus(1);
order.setReceiverName(memberAddress.getName());
order.setReceiverPhone(memberAddress.getPhoneHidden());
order.setReceiverPostCode(memberAddress.getPostCode());
order.setReceiverProvince(memberAddress.getProvince());
order.setReceiverCity(memberAddress.getCity());
order.setReceiverDistrict(memberAddress.getDistrict());
order.setReceiverProvinceId(memberAddress.getProvinceId());
order.setReceiverCityId(memberAddress.getCityId());
order.setReceiverDistrictId(memberAddress.getDistrictId());
order.setReceiverDetailAddress(memberAddress.getDetailAddress());
order.setNote(form.getNote());
order.setConfirmStatus(0);
order.setDeleteStatus(0);
order.setPaymentTime(optTime);
order.setCreateTime(optTime);
order.setCreateBy(member.getId());
int rows = orderMapper.insert(order);
if (rows < 1){
throw new RuntimeException("订单新增失败");
}
// 保存orderItem
orderItemService.saveOrderItem(member, optTime, orderId, skuList);
// 保存订单操作记录
OrderOperateHistory orderOperateHistory = new OrderOperateHistory();
orderOperateHistory.setOrderId(orderId);
orderOperateHistory.setOperateMan(member.getId() + "");
orderOperateHistory.setOrderStatus(Constants.OrderStatus.SEND);
orderOperateHistory.setCreateTime(optTime);
orderOperateHistory.setCreateBy(member.getId());
rows = orderOperateHistoryMapper.insert(orderOperateHistory);
if (rows < 1){
throw new RuntimeException("保存订单操作记录失败");
}
//若来源为购物车,删除购物车
if (Constants.OrderFrom.CART.equals(form.getFrom())){
List<Long> skuIdList = skuList.stream().map(OrderProductListDTO::getSkuId).collect(Collectors.toList());
LambdaUpdateWrapper<MemberCart> wrapper = Wrappers.lambdaUpdate();
wrapper.eq(MemberCart::getMemberId, member.getId());
wrapper.in(MemberCart::getSkuId, skuIdList);
rows = memberCartMapper.delete(wrapper);
if (rows < 1){
throw new RuntimeException("删除购物车失败");
}
}
//当前返回成功消息接入支付后可返回payId
return orderId;
}
public OrderCalcVO addOrderCheck(OrderCreateDTO orderCreateDTO) {
OrderCalcVO res = new OrderCalcVO();
List<SkuViewDTO> skuList = new ArrayList<>();
List<OrderProductListDTO> list = orderCreateDTO.getSkuList();
if (CollectionUtil.isEmpty(list)){
throw new RuntimeException("商品SKU信息不能为空");
}
//将购买的sku信息转化为keyskuId value数量
Map<Long, Integer> quantityMap = list.stream().
collect(Collectors.toMap(OrderProductListDTO::getSkuId, OrderProductListDTO::getQuantity, (v1, v2) -> v2));
//查询所有sku信息
Set<Long> collect = list.stream().map(OrderProductListDTO::getSkuId).collect(Collectors.toSet());
Map<Long, Sku> querySkuMap = skuMapper.selectBatchIds(collect).stream().collect(Collectors.toMap(Sku::getId, it -> it));
//计算商品总金额、订单总金额
BigDecimal productTotalAmount = BigDecimal.ZERO;
BigDecimal orderTotalAmount = BigDecimal.ZERO;
for (OrderProductListDTO dto : list){
if (!querySkuMap.containsKey(dto.getSkuId())){
throw new RuntimeException("商品SKU不存在");
}
Sku sku = querySkuMap.get(dto.getSkuId());
//查product
Product product = productMapper.selectById(sku.getProductId());
if (product == null){
throw new RuntimeException("商品不存在");
}
if (Constants.PublishStatus.UNDERCARRIAGE.equals(product.getPublishStatus())){
throw new RuntimeException("商品" + product.getName() + "已下架");
}
BigDecimal addAmount = sku.getPrice().multiply(BigDecimal.valueOf(dto.getQuantity()));
//由于目前没有运费等数据,暂时订单总金额=商品总金额了
productTotalAmount = productTotalAmount.add(addAmount);
orderTotalAmount = orderTotalAmount.add(addAmount);
//封装sku信息
SkuViewDTO skuViewDTO = new SkuViewDTO();
skuViewDTO.setPic(product.getPic());
skuViewDTO.setPrice(sku.getPrice());
skuViewDTO.setProductId(product.getId());
skuViewDTO.setProductName(product.getName());
skuViewDTO.setQuantity(quantityMap.get(sku.getId()));
skuViewDTO.setSkuId(sku.getId());
skuViewDTO.setSpData(sku.getSpData());
skuList.add(skuViewDTO);
}
res.setSkuList(skuList);
res.setOrderTotalAmount(orderTotalAmount);
res.setProductTotalAmount(productTotalAmount);
return res;
}
private String getOrderIdPrefix(){
LocalDateTime time = LocalDateTime.now();
return time.format(DateTimeFormatter.ofPattern("yyMMdd")) + "-";
}
}

@ -26,6 +26,10 @@ public class Order extends BaseAudit {
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.ASSIGN_ID)
private Long id; private Long id;
@ApiModelProperty("订单编号")
@Excel(name = "订单编号")
private String orderSn;
@ApiModelProperty("MEMBER_ID") @ApiModelProperty("MEMBER_ID")
@Excel(name = "MEMBER_ID") @Excel(name = "MEMBER_ID")
private Long memberId; private Long memberId;

@ -11,9 +11,13 @@ import java.util.Date;
@Data @Data
@ApiModel("后台订单查询请求体") @ApiModel("后台订单查询请求体")
public class ManagerOrderQueryRequest { public class ManagerOrderQueryRequest {
@ApiModelProperty(name = "orderId", value = "订单id", required = true, dataType = "String") @ApiModelProperty(name = "orderId", value = "订单id", required = true, dataType = "Long")
private Long orderId; private Long orderId;
@ApiModelProperty(name = "orderSn", value = "订单编号", required = true, dataType = "String")
private Long orderSn;
@ApiModelProperty(name = "productId", value = "商品id", required = true, dataType = "Long") @ApiModelProperty(name = "productId", value = "商品id", required = true, dataType = "Long")
private Long productId; private Long productId;

@ -11,8 +11,10 @@ import java.util.List;
@Data @Data
@ApiModel("后台订单详情对象") @ApiModel("后台订单详情对象")
public class ManagerOrderDetailVO { public class ManagerOrderDetailVO {
@ApiModelProperty("订单编号") @ApiModelProperty("订单id")
private Long orderId; private Long orderId;
@ApiModelProperty("订单编号")
private String orderSn;
@ApiModelProperty("用户昵称") @ApiModelProperty("用户昵称")
private String userName; private String userName;
@ApiModelProperty("用户手机号") @ApiModelProperty("用户手机号")

@ -11,9 +11,10 @@ import java.util.List;
@Data @Data
@ApiModel(value = "管理后台订单VO") @ApiModel(value = "管理后台订单VO")
public class ManagerOrderVO { public class ManagerOrderVO {
@ApiModelProperty(name = "id",value = "订单id",required = true,dataType = "String") @ApiModelProperty(name = "id",value = "订单id",required = true,dataType = "Long")
private Long id; private Long id;
@ApiModelProperty(name = "orderSn",value = "订单编号",required = true,dataType = "String")
private String orderSn;
@ApiModelProperty(name = "productId",value = "商品id",required = true,dataType = "Long") @ApiModelProperty(name = "productId",value = "商品id",required = true,dataType = "Long")
private Long productId; private Long productId;

@ -18,6 +18,8 @@ import lombok.Data;
public class OrderVO extends BaseAudit { public class OrderVO extends BaseAudit {
/** 订单id */ /** 订单id */
private Long id; private Long id;
/** 订单编号 */
private String orderSn;
/** MEMBER_ID */ /** MEMBER_ID */
@Excel(name = "MEMBER_ID") @Excel(name = "MEMBER_ID")
private Long memberId; private Long memberId;

@ -2,6 +2,7 @@ package com.cyl.manager.oms.service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -101,6 +102,7 @@ public class OrderService {
ManagerOrderDetailVO managerOrderDetailVO = new ManagerOrderDetailVO(); ManagerOrderDetailVO managerOrderDetailVO = new ManagerOrderDetailVO();
//封装订单信息 //封装订单信息
managerOrderDetailVO.setOrderId(id); managerOrderDetailVO.setOrderId(id);
managerOrderDetailVO.setOrderSn(order.getOrderSn());
managerOrderDetailVO.setOrderStatus(order.getStatus()); managerOrderDetailVO.setOrderStatus(order.getStatus());
managerOrderDetailVO.setCreateTime(order.getCreateTime()); managerOrderDetailVO.setCreateTime(order.getCreateTime());
managerOrderDetailVO.setDeliveryTime(order.getDeliveryTime()); managerOrderDetailVO.setDeliveryTime(order.getDeliveryTime());
@ -219,114 +221,6 @@ public class OrderService {
return orderMapper.deleteById(id); return orderMapper.deleteById(id);
} }
@Transactional
public Long submit(OrderSubmitForm form) {
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
//只支持快递
Long addressId = form.getAddressId();
if (addressId == null){
throw new RuntimeException("收获地址不能为空");
}
MemberAddress memberAddress = memberAddressMapper.selectById(addressId);
if (memberAddress == null){
throw new RuntimeException("收货地址不能为空");
}
//sku不能为空
List<OrderProductListDTO> skuList = form.getSkuList();
if (CollectionUtil.isEmpty(skuList)){
throw new RuntimeException("商品SKU信息不能为空");
}
//将sku信息转换为 keyskuId value购买数量
Map<Long, Integer> skuQuantityMap = skuList.stream().collect(Collectors.toMap(OrderProductListDTO::getSkuId, OrderProductListDTO::getQuantity));
//查询所有sku信息
Map<Long, Sku> querySkuMap = skuMapper
.selectBatchIds(skuList.stream().map(OrderProductListDTO::getSkuId).collect(Collectors.toList()))
.stream().collect(Collectors.toMap(Sku::getId, it -> it));
//计算商品总额、订单总额(订单总金额=商品总金额,因为暂时没有运费等概念)
BigDecimal productTotalAmount = BigDecimal.ZERO;
BigDecimal orderTotalAmount = BigDecimal.ZERO;
for (OrderProductListDTO dto : skuList){
if (!querySkuMap.containsKey(dto.getSkuId())){
throw new RuntimeException("商品SKU不存在");
}
Sku sku = querySkuMap.get(dto.getSkuId());
Product product = productMapper.selectById(sku.getProductId());
if (product == null){
throw new RuntimeException("商品不存在");
}
if (Constants.PublishStatus.UNDERCARRIAGE.equals(product.getPublishStatus())){
throw new RuntimeException("商品" + product.getName() + "已下架");
}
productTotalAmount = productTotalAmount.add(sku.getPrice().multiply(BigDecimal.valueOf(skuQuantityMap.get(sku.getId()))));
orderTotalAmount = orderTotalAmount.add(sku.getPrice().multiply(BigDecimal.valueOf(skuQuantityMap.get(sku.getId()))));
dto.setSku(sku);
dto.setProduct(product);
}
LocalDateTime optTime = LocalDateTime.now();
//生成一个统一的订单号
Long orderId = IDGenerator.generateId();
//创建订单
Order order = new Order();
order.setId(orderId);
order.setMemberId(member.getId());
order.setMemberUsername(member.getNickname());
order.setPayType(Constants.PayType.WECHAT);
order.setTotalAmount(orderTotalAmount);
order.setPurchasePrice(BigDecimal.ZERO);
order.setFreightAmount(BigDecimal.ZERO);
order.setPayAmount(orderTotalAmount);
//暂时为接入支付,直接设置为待发货
order.setStatus(Constants.OrderStatus.SEND);
order.setAftersaleStatus(1);
order.setReceiverName(memberAddress.getName());
order.setReceiverPhone(memberAddress.getPhoneHidden());
order.setReceiverPostCode(memberAddress.getPostCode());
order.setReceiverProvince(memberAddress.getProvince());
order.setReceiverCity(memberAddress.getCity());
order.setReceiverDistrict(memberAddress.getDistrict());
order.setReceiverProvinceId(memberAddress.getProvinceId());
order.setReceiverCityId(memberAddress.getCityId());
order.setReceiverDistrictId(memberAddress.getDistrictId());
order.setReceiverDetailAddress(memberAddress.getDetailAddress());
order.setNote(form.getNote());
order.setConfirmStatus(0);
order.setDeleteStatus(0);
order.setPaymentTime(optTime);
order.setCreateTime(optTime);
order.setCreateBy(member.getId());
int rows = orderMapper.insert(order);
if (rows < 1){
throw new RuntimeException("订单新增失败");
}
// 保存orderItem
orderItemService.saveOrderItem(member, optTime, orderId, skuList);
// 保存订单操作记录
OrderOperateHistory orderOperateHistory = new OrderOperateHistory();
orderOperateHistory.setOrderId(orderId);
orderOperateHistory.setOperateMan(member.getId() + "");
orderOperateHistory.setOrderStatus(Constants.OrderStatus.SEND);
orderOperateHistory.setCreateTime(optTime);
orderOperateHistory.setCreateBy(member.getId());
rows = orderOperateHistoryMapper.insert(orderOperateHistory);
if (rows < 1){
throw new RuntimeException("保存订单操作记录失败");
}
//若来源为购物车,删除购物车
if (Constants.OrderFrom.CART.equals(form.getFrom())){
List<Long> skuIdList = skuList.stream().map(OrderProductListDTO::getSkuId).collect(Collectors.toList());
LambdaUpdateWrapper<MemberCart> wrapper = Wrappers.lambdaUpdate();
wrapper.eq(MemberCart::getMemberId, member.getId());
wrapper.in(MemberCart::getSkuId, skuIdList);
rows = memberCartMapper.delete(wrapper);
if (rows < 1){
throw new RuntimeException("删除购物车失败");
}
}
//当前返回成功消息接入支付后可返回payId
return orderId;
}
public Page<OrderVO> queryOrderPage(OrderH5Query query, Pageable pageReq) { public Page<OrderVO> queryOrderPage(OrderH5Query query, Pageable pageReq) {
QueryWrapper<Order> qw = new QueryWrapper<>(); QueryWrapper<Order> qw = new QueryWrapper<>();
qw.eq("member_id", SecurityUtils.getUserId()); qw.eq("member_id", SecurityUtils.getUserId());
@ -371,54 +265,5 @@ public class OrderService {
return new PageImpl<>(res, pageReq, total); return new PageImpl<>(res, pageReq, total);
} }
public OrderCalcVO addOrderCheck(OrderCreateDTO orderCreateDTO) {
OrderCalcVO res = new OrderCalcVO();
List<SkuViewDTO> skuList = new ArrayList<>();
List<OrderProductListDTO> list = orderCreateDTO.getSkuList();
if (CollectionUtil.isEmpty(list)){
throw new RuntimeException("商品SKU信息不能为空");
}
//将购买的sku信息转化为keyskuId value数量
Map<Long, Integer> quantityMap = list.stream().
collect(Collectors.toMap(OrderProductListDTO::getSkuId, OrderProductListDTO::getQuantity, (v1, v2) -> v2));
//查询所有sku信息
Set<Long> collect = list.stream().map(OrderProductListDTO::getSkuId).collect(Collectors.toSet());
Map<Long, Sku> querySkuMap = skuMapper.selectBatchIds(collect).stream().collect(Collectors.toMap(Sku::getId, it -> it));
//计算商品总金额、订单总金额
BigDecimal productTotalAmount = BigDecimal.ZERO;
BigDecimal orderTotalAmount = BigDecimal.ZERO;
for (OrderProductListDTO dto : list){
if (!querySkuMap.containsKey(dto.getSkuId())){
throw new RuntimeException("商品SKU不存在");
}
Sku sku = querySkuMap.get(dto.getSkuId());
//查product
Product product = productMapper.selectById(sku.getProductId());
if (product == null){
throw new RuntimeException("商品不存在");
}
if (Constants.PublishStatus.UNDERCARRIAGE.equals(product.getPublishStatus())){
throw new RuntimeException("商品" + product.getName() + "已下架");
}
BigDecimal addAmount = sku.getPrice().multiply(BigDecimal.valueOf(dto.getQuantity()));
//由于目前没有运费等数据,暂时订单总金额=商品总金额了
productTotalAmount = productTotalAmount.add(addAmount);
orderTotalAmount = orderTotalAmount.add(addAmount);
//封装sku信息
SkuViewDTO skuViewDTO = new SkuViewDTO();
skuViewDTO.setPic(product.getPic());
skuViewDTO.setPrice(sku.getPrice());
skuViewDTO.setProductId(product.getId());
skuViewDTO.setProductName(product.getName());
skuViewDTO.setQuantity(quantityMap.get(sku.getId()));
skuViewDTO.setSkuId(sku.getId());
skuViewDTO.setSpData(sku.getSpData());
skuList.add(skuViewDTO);
}
res.setSkuList(skuList);
res.setOrderTotalAmount(orderTotalAmount);
res.setProductTotalAmount(productTotalAmount);
return res;
}
} }

@ -84,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectManagerOrderPage" resultType="com.cyl.manager.oms.pojo.vo.ManagerOrderVO"> <select id="selectManagerOrderPage" resultType="com.cyl.manager.oms.pojo.vo.ManagerOrderVO">
select select
a.id, a.id,
a.order_sn orderSn,
a.aftersale_status aftersaleStatus, a.aftersale_status aftersaleStatus,
a.status, a.status,
a.member_username userName, a.member_username userName,
@ -111,8 +112,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-- left join oms_order_item b on a.id = b.order_id -- left join oms_order_item b on a.id = b.order_id
left join ums_member c on a.member_id = c.id left join ums_member c on a.member_id = c.id
where a.aftersale_status = 1 where a.aftersale_status = 1
<if test="orderId != null"> <if test="orderSn != null">
and a.id = #{orderId} and a.order_sn = #{orderSn}
</if> </if>
<!--<if test="productName != null and productName != ''">--> <!--<if test="productName != null and productName != ''">-->
<!--and instr(b.product_name, #{productName}) > 0--> <!--and instr(b.product_name, #{productName}) > 0-->

Loading…
Cancel
Save