From 5a02b62b3b2b3663b89a1fb8be0c3f6ac1eb1d3f Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Tue, 29 Jun 2021 17:54:48 +0800 Subject: [PATCH] fix --- gc-shop/src/main/java/com/xzx/gc/shop/service/OrderService.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 47 insertions(+), 2 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 b63101c..b9d4ab1 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 @@ -61,7 +61,7 @@ private IdUtils idUtils; public Map<String, Object> queryOrderList(QueryOrderListDto model) { - String name = 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(); Date createdTimeStart = model.getCreatedTimeStart(); @@ -176,6 +176,10 @@ } } + if (addGoodsOrderDto.getCnt() > sku.getStock()) { + throw new RestException(-3, "库存不足"); + } + AccountInfo accountInfo = accountInfoMapper.selectAccountInfoByUserId(addGoodsOrderDto.getUserId()); if (accountInfo.getCollectScore() == null) { @@ -242,6 +246,7 @@ scoreDetails.setOriginalScore(score); scoreDetails.setCurrentScore(remianScore); scoreDetails.setChangeScore(totalPrice); + scoreDetails.setCreatedTime(new Date()); scoreDetailsMapper.insert(scoreDetails); sku.setStock(sku.getStock() - addGoodsOrderDto.getCnt()); @@ -251,12 +256,51 @@ public Long cancelOrder(CancelOrderDto model) { /** - * todo 只更新了订单状态,后续操作待增加 + * 更新订单状态 + * 增加一条取消订单积分退回的记录 + * 查询所有的订单详情,依次库存增加,销量减少 */ ScoreOrder scoreOrder = new ScoreOrder(); scoreOrder.setId(model.getId()); scoreOrder.setStatus(ScoreOrder.STATUS_CANCEL); scoreOrderMapper.updateByPrimaryKeySelective(scoreOrder); + + ScoreOrder order = scoreOrderMapper.selectByPrimaryKey(model.getId()); + Example exampleDetails = new Example(ScoreDetails.class); + Example.Criteria criteriaDetails = exampleDetails.createCriteria(); + criteriaDetails.andEqualTo("orderNo",order.getOrderNo()); + criteriaDetails.andEqualTo("userId",order.getUserId()); + criteriaDetails.andEqualTo("type",ScoreDetails.SCORE_TYPE_SHOPPING); + ScoreDetails scoreDetails = scoreDetailsMapper.selectOneByExample(exampleDetails); + if(ObjectUtil.isNotEmpty(scoreDetails)){ + AccountInfo accountInfo = accountInfoMapper.selectAccountInfoByUserId(order.getUserId()); + BigDecimal score = new BigDecimal(accountInfo.getCollectScore()); + BigDecimal remianScore = score.add(scoreDetails.getChangeScore()).setScale(0, BigDecimal.ROUND_DOWN); + ScoreDetails scoreDetailsRet = new ScoreDetails(); + scoreDetailsRet.setOrderNo(scoreDetails.getOrderNo()); + scoreDetailsRet.setUserId(scoreDetails.getUserId()); + scoreDetailsRet.setType(ScoreDetails.SCORE_TYPE_SHOPPING_RETURN); + scoreDetailsRet.setOriginalScore(score); + scoreDetailsRet.setCurrentScore(remianScore); + scoreDetailsRet.setChangeScore(scoreDetails.getChangeScore()); + scoreDetailsRet.setCreatedTime(new Date()); + scoreDetailsMapper.insert(scoreDetailsRet); + } + + Example exampleScoreOrderDetails = new Example(ScoreOrderDetails.class); + Example.Criteria criteriaScoreOrderDetails = exampleScoreOrderDetails.createCriteria(); + criteriaScoreOrderDetails.andEqualTo("orderId",order.getId()); + List<ScoreOrderDetails> scoreOrderDetails = scoreOrderDetailsMapper.selectByExample(exampleScoreOrderDetails); + if(CollUtil.isNotEmpty(scoreOrderDetails)){ + for(ScoreOrderDetails scoreOrderDetail : scoreOrderDetails){ + ScoreGoodsSku scoreGoodsSku = scoreGoodsSkuMapper.selectByPrimaryKey(scoreOrderDetail.getSkuId()); + if(ObjectUtil.isNotEmpty(scoreGoodsSku)){ + scoreGoodsSku.setStock(scoreGoodsSku.getStock() + scoreOrderDetail.getCnt()); + scoreGoodsSku.setQuantity(scoreGoodsSku.getQuantity() - scoreOrderDetail.getCnt()); + scoreGoodsSkuMapper.updateByPrimaryKey(scoreGoodsSku); + } + } + } return scoreOrder.getId(); } @@ -315,6 +359,7 @@ scoreDetails.setOrderNo(order.getOrderNo()); scoreDetails.setType(ScoreDetails.SCORE_TYPE_SHOPPING_RETURN); scoreDetails.setCreatedTime(new Date()); + scoreDetails.setUserId(userId); scoreDetailsMapper.insert(scoreDetails); accountInfo.setCollectScore(score.toString()); -- Gitblit v1.9.1