From ae0a1bdde246c8b0231dd07a99ecb9b965b6d0b6 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 18 Nov 2021 11:39:21 +0800 Subject: [PATCH] fix --- gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java | 106 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 92 insertions(+), 14 deletions(-) diff --git a/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java b/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java index 8673f65..05d418a 100644 --- a/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java +++ b/gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java @@ -2,6 +2,8 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -24,6 +26,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; @Service @@ -61,13 +64,27 @@ private IdUtils idUtils; public Map<String, Object> queryOrderList(QueryOrderListDto model) { + String accountName = model.getName(); String name = StrUtil.isEmpty(model.getName())?model.getName():StringUtils.encode(model.getName()); String orderNo = model.getOrderNo(); - Integer status = model.getStatus() == null ? 0 : model.getStatus(); + List<Integer> status = new ArrayList<>(); + if(CollUtil.isNotEmpty(model.getStatus())){ + status = model.getStatus(); + } + if(CollUtil.isEmpty(model.getStatus())){ + status.add(1); + status.add(2); + status.add(3); + status.add(4); + status.add(5); + status.add(6); + } Date createdTimeStart = model.getCreatedTimeStart(); Date createdTimeEnd = model.getCreatedTimeEnd(); PageHelper.startPage(model.getPage(), model.getLimit()); - List<QueryOrderListVo> maps = scoreOrderMapper.queryOrderList(name,orderNo,status,createdTimeStart,createdTimeEnd); + Integer namePx = model.getNamePx() == null ? 2 : model.getNamePx(); + Integer typePx = model.getTypePx() == null ? 2 : model.getTypePx(); + List<QueryOrderListVo> maps = scoreOrderMapper.queryOrderList(name,accountName,orderNo,status,createdTimeStart,createdTimeEnd,namePx,typePx); if(CollUtil.isNotEmpty(maps)){ for(QueryOrderListVo queryOrderListVo : maps){ String decode = StringUtils.decode(queryOrderListVo.getName()); @@ -183,6 +200,7 @@ } // scoreOrder.setStatus(ScoreOrder.STATUS_DONE); scoreOrder.setIsFinish(ScoreOrder.ISFINISH_YES); + scoreOrder.setIsFinishTime(new Date()); scoreOrder.setVoucherImg(CollUtil.join(model.getVoucherImgs(),",")); scoreOrderMapper.updateByPrimaryKeySelective(scoreOrder); return scoreOrder.getId(); @@ -196,15 +214,15 @@ throw new RestException(-3, "商品不存在或已下架"); } - if (ScoreGoods.ISQG_YES.equals(goods.getIsQg())) { - if (new Date().before(goods.getQgStartTime())) { - throw new RestException(-3, "抢购未开始"); - } - - if (new Date().after(goods.getQgEndTime())) { - throw new RestException(-3, "抢购已结束"); - } - } +// if (ScoreGoods.ISQG_YES.equals(goods.getIsQg())) { +// if (new Date().before(goods.getQgStartTime())) { +// throw new RestException(-3, "抢购未开始"); +// } +// +// if (new Date().after(goods.getQgEndTime())) { +// throw new RestException(-3, "抢购已结束"); +// } +// } if (addGoodsOrderDto.getCnt() > sku.getStock()) { throw new RestException(-3, "库存不足"); @@ -215,7 +233,45 @@ throw new RestException(-3, "积分不足"); } - BigDecimal totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt())); + BigDecimal totalPrice = BigDecimal.ZERO; + BigDecimal unitPrice = BigDecimal.ZERO; + if (ScoreGoods.ISQG_YES.equals(goods.getIsQg())) { + //限购数量 + Integer quotaTime = goods.getQuotaTime() == null ? 0:goods.getQuotaTime(); + //不限购 + if(quotaTime == 0){ + totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt())); + unitPrice = sku.getPresentPrice(); + }else{ + //抢购时间内,用户购买该商品的数量 + Integer sumCnt = scoreOrderMapper.selectGoodsQuotaTime(addGoodsOrderDto.getUserId(),goods.getId(),goods.getQgStartTime(),goods.getQgEndTime()); + //剩余限购数量 + quotaTime = quotaTime-sumCnt; + if(goods.getQgStartTime().before(new Date()) && goods.getQgEndTime().after(new Date())){ + if(addGoodsOrderDto.getCnt() <= quotaTime){ + totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt())); + unitPrice = sku.getPresentPrice(); + }else{ + if(quotaTime > 0){ + totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(quotaTime)).add( + sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt()-quotaTime))); + unitPrice = sku.getOriginalPrice(); + }else{ + totalPrice = sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt())); + unitPrice = sku.getOriginalPrice(); + } + } + }else{ + //开启抢购,不再时间内,直接原价* 数量 + totalPrice = sku.getOriginalPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt())); + unitPrice = sku.getOriginalPrice(); + } + } + }else{ + //没有开启抢购,直接现价* 数量 + totalPrice = sku.getPresentPrice().multiply(BigDecimal.valueOf(addGoodsOrderDto.getCnt())); + unitPrice = sku.getPresentPrice(); + } BigDecimal score = new BigDecimal(accountInfo.getCollectScore()); if (score.compareTo(totalPrice) < 0) { throw new RestException(-3, "积分不足"); @@ -239,8 +295,10 @@ orderDetails.setOrderId(order.getId()); orderDetails.setCnt(addGoodsOrderDto.getCnt()); orderDetails.setTotalPrice(totalPrice); - orderDetails.setUnitPrice(sku.getPresentPrice()); +// orderDetails.setUnitPrice(sku.getPresentPrice()); + orderDetails.setUnitPrice(unitPrice); orderDetails.setGoodsId(goods.getId()); + orderDetails.setSkuId(sku.getId()); orderDetails.setThumb(goods.getThumb()); scoreOrderDetailsMapper.insert(orderDetails); @@ -256,8 +314,8 @@ if (StrUtil.isNotBlank(addressInfo.getTagName())) { address.append(StrUtil.isNotBlank(addressInfo.getHouseName()) ? addressInfo.getHouseName() : ""); if (Constants.ADDRESS_TYPE_HOME.equals(addressInfo.getTagName())) { - address.append(StrUtil.isNotBlank(addressInfo.getHouseNumber()) ? addressInfo.getHouseNumber() : ""); address.append(StrUtil.isNotBlank(addressInfo.getUnitName()) ? addressInfo.getUnitName() : ""); + address.append(StrUtil.isNotBlank(addressInfo.getHouseNumber()) ? addressInfo.getHouseNumber() : ""); } } expressInfo.setAddress(address.toString()); @@ -435,4 +493,24 @@ statisticsVo.setTotalBuyCnt(Integer.parseInt(allData.get("totalBuy").toString())); return statisticsVo; } + + public void autoConfirmReceipt() { + //获取七天之前后台点击确认提货的订单 + DateTime dateTime = DateUtil.offsetDay(new Date(), -7); + // + List<ScoreOrder> orders = scoreOrderMapper.selectOrderByIsFinish(dateTime); + if(CollUtil.isNotEmpty(orders)){ + for(ScoreOrder order : orders){ + scoreOrderMapper.updateOrderStatusToDone(order.getId()); + } + } + + } + + +// public static void main(String[] args) { +// DateTime dateTime = DateUtil.offsetDay(new Date(), -7); +// System.out.println(dateTime); +// } + } -- Gitblit v1.9.1