From 5d934acaa19edb9f0b43972f991cc1d1e2b6ffce Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 15 Jul 2021 11:03:47 +0800 Subject: [PATCH] fix --- gc-order/src/main/java/com/xzx/gc/order/service/JhyOrderService.java | 52 ++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 40 insertions(+), 12 deletions(-) diff --git a/gc-order/src/main/java/com/xzx/gc/order/service/JhyOrderService.java b/gc-order/src/main/java/com/xzx/gc/order/service/JhyOrderService.java index 1ae3967..27e1bf8 100644 --- a/gc-order/src/main/java/com/xzx/gc/order/service/JhyOrderService.java +++ b/gc-order/src/main/java/com/xzx/gc/order/service/JhyOrderService.java @@ -1,12 +1,15 @@ package com.xzx.gc.order.service; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.xzx.gc.common.constant.Constants; import com.xzx.gc.common.exception.RestException; import com.xzx.gc.common.utils.IdUtils; +import com.xzx.gc.common.utils.LocationUtils; import com.xzx.gc.entity.*; import com.xzx.gc.order.dto.AddJhyOrderDto; import com.xzx.gc.order.dto.JhyOrderConfirmDto; @@ -55,17 +58,25 @@ @Autowired private IdUtils idUtils; + @Autowired + private DistribService distribService; + public void addJhyOrder(AddJhyOrderDto orderDto) { JhyInfo jhyInfo = jhyInfoMapper.selectJhyInfoByUserId(orderDto.getUserId()); if (jhyInfo != null && JhyInfo.CHECK_PASS.equals(jhyInfo.getStatus())) { throw new RestException(-3, "集货员不能下单"); } - // TODO 判断地址附近500米是否有集物员 + AddressInfo addressInfo = addressMapper.selectByPrimaryKey(orderDto.getAddressId()); + + List<JhyInfo> jhyInfos = jhyInfoMapper.selectJhyInfoListInAddressRange(addressInfo.getAddressId()); + if (CollUtil.isEmpty(jhyInfos)) { + throw new RestException(-3, "该区域暂无集物员"); + } + String orderNo = idUtils.generate("JW", 10); JhyOrder jhyOrder = new JhyOrder(); - AddressInfo addressInfo = addressMapper.selectByPrimaryKey(orderDto.getAddressId()); jhyOrder.setOrderNo(orderNo); jhyOrder.setArea(addressInfo.getAddressArea()); @@ -155,7 +166,12 @@ throw new RestException(-3, "无权限操作"); } - order.setStatus(JhyOrder.ORDER_STATUS_CANCEL); + if (userId.equals(order.getJhyId())) { + order.setStatus(JhyOrder.ORDER_STATUS_WAITING); + } else { + order.setStatus(JhyOrder.ORDER_STATUS_CANCEL); + } + jhyOrderMapper.updateByPrimaryKey(order); } @@ -168,9 +184,10 @@ BigDecimal totalScore = BigDecimal.ZERO; for (JhyOrderConfirmItemsDto item : confirmDto.getItems()) { JhyOrderItems orderItem = jhyOrderItemsMapper.selectByPrimaryKey(item.getId()); - BigDecimal total = orderItem.getPrice().multiply(BigDecimal.valueOf(40)).multiply(new BigDecimal(item.getWeight())); + BigDecimal weight = StrUtil.isNotBlank(item.getWeight()) ? new BigDecimal(item.getWeight()) : BigDecimal.ZERO; + BigDecimal total = orderItem.getPrice().multiply(BigDecimal.valueOf(40)).multiply(weight); orderItem.setScore(total.setScale(0, BigDecimal.ROUND_DOWN).toString()); - orderItem.setWeight(StrUtil.isNotBlank(item.getWeight()) ? new BigDecimal(item.getWeight()) : BigDecimal.ZERO); + orderItem.setWeight(weight); jhyOrderItemsMapper.updateByPrimaryKey(orderItem); totalScore = totalScore.add(total); @@ -192,20 +209,31 @@ jhyScoreDetail.setOrderNo(order.getOrderNo()); jhyScoreDetail.setUserId(order.getJhyId()); jhyScoreDetail.setType(ScoreDetails.SCORE_TYPE_PAY); - jhyScoreDetail.setChangeScore(totalScore.negate()); - jhyScoreDetail.setOriginalScore(jhyScore); - jhyScoreDetail.setCurrentScore(jhyScore.subtract(totalScore)); + jhyScoreDetail.setChangeScore(totalScore.negate().setScale( 0, BigDecimal.ROUND_DOWN )); + jhyScoreDetail.setOriginalScore(jhyScore.setScale( 0, BigDecimal.ROUND_DOWN )); + jhyScoreDetail.setCurrentScore(jhyScore.subtract(totalScore).setScale( 0, BigDecimal.ROUND_DOWN )); + jhyScoreDetail.setCreatedTime(new Date()); scoreDetailsMapper.insert(jhyScoreDetail); + + jhyAccount.setCollectScore(jhyScore.subtract(totalScore).setScale( 0, BigDecimal.ROUND_DOWN ).toString()); + accountMapper.updateByPrimaryKey(jhyAccount); AccountInfo userAccount = accountMapper.selectAccountInfoByUserId(order.getUserId()); BigDecimal userScore = StrUtil.isBlank(userAccount.getCollectScore()) ? BigDecimal.ZERO : new BigDecimal(userAccount.getCollectScore()); ScoreDetails userScoreDetail = new ScoreDetails(); userScoreDetail.setOrderNo(order.getOrderNo()); - userScoreDetail.setUserId(order.getJhyId()); +// userScoreDetail.setUserId(order.getJhyId()); + userScoreDetail.setUserId(order.getUserId()); userScoreDetail.setType(ScoreDetails.SCORE_TYPE_EXCHANGE); - userScoreDetail.setChangeScore(totalScore); - userScoreDetail.setOriginalScore(userScore); - userScoreDetail.setCurrentScore(userScore.add(totalScore)); + userScoreDetail.setChangeScore(totalScore.setScale( 0, BigDecimal.ROUND_DOWN )); + userScoreDetail.setOriginalScore(userScore.setScale( 0, BigDecimal.ROUND_DOWN )); + userScoreDetail.setCurrentScore(userScore.add(totalScore).setScale( 0, BigDecimal.ROUND_DOWN )); + userScoreDetail.setCreatedTime(new Date()); scoreDetailsMapper.insert(userScoreDetail); + + userAccount.setCollectScore(userScore.add(totalScore).setScale( 0, BigDecimal.ROUND_DOWN ).toString()); + accountMapper.updateByPrimaryKey(userAccount); + + distribService.distribRecord(order.getId(), confirmDto.getUserId()); } } -- Gitblit v1.9.1