From 059a96cc2d59d68b6eaec7403c2e9da1bf7b6ab2 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 22 Sep 2022 15:03:08 +0800 Subject: [PATCH] 20220902 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 96 ++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 77 insertions(+), 19 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index c803616..2cde23c 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -8,10 +8,12 @@ import cc.mrbird.febs.mall.conversion.MallGoodsCommentConversion; import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion; import cc.mrbird.febs.mall.conversion.MallOrderRefundConversion; +import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.*; +import cc.mrbird.febs.mall.vo.ApiLeaderListVo; import cc.mrbird.febs.mall.vo.OrderDetailVo; import cc.mrbird.febs.mall.vo.OrderListVo; import cc.mrbird.febs.mall.vo.OrderRefundVo; @@ -27,6 +29,8 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -76,11 +80,13 @@ private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final MallLeaderAchieveMapper mallLeaderAchieveMapper; private final IApiMallTeamLeaderService iApiMallTeamLeaderService; + private final IMallElectronicFenceService iMallElectronicFenceService; + private final MallElectronicFenceMapper mallElectronicFenceMapper; @Override @Transactional(rollbackFor = Exception.class) public Long createOrder(AddOrderDto addOrderDto) { - synchronized(this){ +// synchronized(this){ MallMember member = LoginUserUtil.getLoginUser(); String takeUniqueCode = addOrderDto.getTakeUniqueCode(); if(StrUtil.isEmpty(takeUniqueCode)){ @@ -91,6 +97,17 @@ if(ObjectUtil.isEmpty(mallTeamLeader)){ throw new FebsException("请重新选择团长"); } + + //订单范围内才允许下单 + MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId()); +// MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode()); +// if(ObjectUtil.isNotEmpty(mallElectronicFence)){ +// String inStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFence.getGKey(), +// mallElectronicFence.getServiceId(), address.getLongitude() + "," + address.getLatitude(), mallElectronicFence.getGid()); +// if("1".equals(inStr)){ +// throw new FebsException("不在当前团长的配送范围内"); +// } +// } String orderNo = MallUtils.getOrderNum(); MallOrderInfo orderInfo = new MallOrderInfo(); @@ -207,7 +224,6 @@ } orderInfo.setAmount(total); - MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId()); orderInfo.setName(address.getName()); orderInfo.setPhone(address.getPhone()); orderInfo.setIsHome(addOrderDto.getIsHome()); @@ -224,7 +240,7 @@ agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L); return orderInfo.getId(); - } +// } } @@ -462,6 +478,7 @@ @Override public List<OrderListVo> findOrderList(OrderListDto orderListDto) { + log.info("订单查询"); MallMember member = LoginUserUtil.getLoginUser(); IPage<MallOrderInfo> page = new Page<>(orderListDto.getPageNum(), orderListDto.getPageSize()); @@ -533,23 +550,25 @@ if(CollUtil.isNotEmpty(mallOrderItemList)){ MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(orderInfo.getTakeUniqueCode()); + Integer profitSwitch = mallTeamLeader.getProfitSwitch()==null?2:mallTeamLeader.getProfitSwitch(); BigDecimal bonusPercent =new BigDecimal(mallTeamLeader.getBonusPercent()==null?"0":mallTeamLeader.getBonusPercent()); -// DataDictionaryCustom dicBonusPercent = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_PERCENT.getType(), DataDictionaryEnum.BONUS_PERCENT.getCode()); -// BigDecimal bonusPercent = new BigDecimal(dicBonusPercent.getValue()).setScale(2,BigDecimal.ROUND_DOWN); - for(MallOrderItem mallOrderItem : mallOrderItemList){ - Integer state = mallOrderItem.getState() == null ? 1 : mallOrderItem.getState(); - if(1 == state){ - MallLeaderAchieve mallLeaderAchieve = new MallLeaderAchieve(); - mallLeaderAchieve.setMemberId(orderInfo.getMemberId()); - mallLeaderAchieve.setOrderNo(orderInfo.getOrderNo()); - mallLeaderAchieve.setOrderItemId(mallOrderItem.getId()); - BigDecimal itemAmount = mallOrderItem.getAmount(); - mallLeaderAchieve.setAmount(itemAmount); - BigDecimal bigDecimal = bonusPercent.multiply(itemAmount).setScale(2, BigDecimal.ROUND_DOWN); - mallLeaderAchieve.setProfitAmount(bigDecimal); - mallLeaderAchieve.setUniqueCode(orderInfo.getTakeUniqueCode()); - mallLeaderAchieve.setState(MallLeaderAchieve.STATE_ONE); - mallLeaderAchieveMapper.insert(mallLeaderAchieve); + + if(1 == profitSwitch){ + for(MallOrderItem mallOrderItem : mallOrderItemList){ + Integer state = mallOrderItem.getState() == null ? 1 : mallOrderItem.getState(); + if(1 == state){ + MallLeaderAchieve mallLeaderAchieve = new MallLeaderAchieve(); + mallLeaderAchieve.setMemberId(orderInfo.getMemberId()); + mallLeaderAchieve.setOrderNo(orderInfo.getOrderNo()); + mallLeaderAchieve.setOrderItemId(mallOrderItem.getId()); + BigDecimal itemAmount = mallOrderItem.getAmount(); + mallLeaderAchieve.setAmount(itemAmount); + BigDecimal bigDecimal = bonusPercent.multiply(itemAmount).setScale(2, BigDecimal.ROUND_DOWN); + mallLeaderAchieve.setProfitAmount(bigDecimal); + mallLeaderAchieve.setUniqueCode(orderInfo.getTakeUniqueCode()); + mallLeaderAchieve.setState(MallLeaderAchieve.STATE_ONE); + mallLeaderAchieveMapper.insert(mallLeaderAchieve); + } } } } @@ -829,4 +848,43 @@ return new FebsResponse().success().message("已取消"); } + @Override + public Boolean createOrderVerify(ApiCreateOrderVerifyDto apiCreateOrderVerifyDto) { + Boolean flag = false; + Long addressId = apiCreateOrderVerifyDto.getAddressId(); + String takeUniqueCode = apiCreateOrderVerifyDto.getTakeUniqueCode(); + + MallAddressInfo mallAddressInfo = mallAddressInfoMapper.selectById(addressId); + if(ObjectUtil.isEmpty(mallAddressInfo)){ + return flag; + } + MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(takeUniqueCode); + if(ObjectUtil.isEmpty(mallElectronicFence)){ + return flag; + } + //{"data":{"count":1,"results":[{"gfid":800899,"gfname":"87053658_fence","in":0}]},"errcode":10000,"errdetail":null,"errmsg":"OK"} + String resultsStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFence.getGKey(), + mallElectronicFence.getServiceId(), + mallAddressInfo.getLongitude() + "," + mallAddressInfo.getLatitude(), + mallElectronicFence.getGid()); + if("fail".equals(resultsStr)){ + return flag; + } + JSONArray objects = JSONUtil.parseArray(resultsStr); + for(Object obj : objects){ + //{"gfid":800899,"gfname":"87053658_fence","in":0} + JSONObject jsonObject = JSONUtil.parseObj(obj); + String gfid = jsonObject.get("gfid").toString(); + String in = jsonObject.get("in").toString(); + String gfname = jsonObject.get("gfname").toString(); + //指定坐标是否在围栏中 + //1:在, + //0:不在; + if("1".equals(in)){ + flag = true; + } + } + return flag; + } + } -- Gitblit v1.9.1