fix
Hentua
2023-08-24 5eb61b4ee44c9eb2394793d436310edbe917db59
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -86,11 +86,13 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Long createOrder(AddOrderDto addOrderDto) {
        MallMember member = LoginUserUtil.getLoginUser();
        //验证用户的等级
        if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){
            throw new FebsException("请先申请成为代理人");
        }
        Long memberId = LoginUserUtil.getLoginUser().getId();
        MallMember member = mallMemberMapper.selectById(memberId);
                //验证用户的等级
//        if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){
//            throw new FebsException("请先申请成为代理人");
//        }
        //订单范围内才允许下单
        MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
@@ -146,17 +148,17 @@
                        throw new FebsException("购买商品或sku不存在");
                    }
                    if("样品".equals(sku.getSample())){
                        List<MallOrderItem> items = mallOrderItemMapper.selectItemBySkuIdUnCancel(sku.getId(), member.getId());
                        if (CollUtil.isNotEmpty(items)) {
                            throw new FebsException("样品一个用户只能购买一次");
                        }
                        Integer cnt = item.getCnt();
                        if(1 < cnt){
                            throw new FebsException("样品只能购买一件");
                        }
                    }
//                    if("样品".equals(sku.getSample())){
//                        List<MallOrderItem> items = mallOrderItemMapper.selectItemBySkuIdUnCancel(sku.getId(), member.getId());
//                        if (CollUtil.isNotEmpty(items)) {
//                            throw new FebsException("样品一个用户只能购买一次");
//                        }
//                        Integer cnt = item.getCnt();
//                        if(1 < cnt){
//                            throw new FebsException("样品只能购买一件");
//                        }
//
//                    }
                    if (sku.getStock() < item.getCnt()) {
                        throw new FebsException(sku.getSkuName() + "库存不足");
@@ -179,12 +181,34 @@
                    if(1 != goodsResult){
                        throw new FebsException(mallGoods.getGoodsName() + "库存不足");
                    }
                    BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
                    BigDecimal amount = BigDecimal.ZERO;
                    BigDecimal itemPrice = BigDecimal.ZERO;
                    if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){
                        //普通用户使用原价购买
                        amount = sku.getOriginalPrice().multiply(BigDecimal.valueOf(item.getCnt()));
                        itemPrice = sku.getOriginalPrice();
                    }else if(AgentLevelEnum.LEVEL_ONE.name().equals(member.getLevel())){
                        //普通用户使用原价购买
                        amount = sku.getLevelOnePrice().multiply(BigDecimal.valueOf(item.getCnt()));
                        itemPrice = sku.getLevelOnePrice();
                    }else if(AgentLevelEnum.LEVEL_TWO.name().equals(member.getLevel())){
                        //普通用户使用原价购买
                        amount = sku.getLevelTwoPrice().multiply(BigDecimal.valueOf(item.getCnt()));
                        itemPrice = sku.getLevelTwoPrice();
                    }else if(AgentLevelEnum.LEVEL_THREE.name().equals(member.getLevel())){
                        //普通用户使用原价购买
                        amount = sku.getLevelThreePrice().multiply(BigDecimal.valueOf(item.getCnt()));
                        itemPrice = sku.getLevelThreePrice();
                    }else{
                        //合伙人使用折扣价
                        amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
                        itemPrice = sku.getPresentPrice();
                    }
//                    BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
                    orderItem.setAmount(amount);
                    orderItem.setCnt(item.getCnt());
                    orderItem.setOrderId(orderInfo.getId());
                    orderItem.setPrice(sku.getPresentPrice());
                    orderItem.setPrice(itemPrice);
                    orderItem.setGoodsId(sku.getGoodsId());
                    orderItem.setGoodsName(sku.getGoodsName());
                    orderItem.setSkuId(sku.getId());
@@ -221,12 +245,12 @@
        if (StrUtil.isBlank(address.getLatitude())||StrUtil.isBlank(address.getLongitude())) {
            throw new FebsException("请添加地址");
        }
        orderInfo.setAddress(address.getArea() + address.getAddress());
        orderInfo.setAddress(address.getProvince()+address.getCity()+address.getArea() + address.getAddress());
        orderInfo.setLatitude(address.getLatitude());
        orderInfo.setLongitude(address.getLongitude());
        this.baseMapper.updateById(orderInfo);
        agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L);
        //过期时间修改成24小时
        agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(),  24 * 60 * 60 * 1000L);
        return orderInfo.getId();
    }
@@ -363,7 +387,7 @@
                orderInfo.setPayResult("1");
                orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
                mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
                mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2);
                break;
            case "4":
                if (orderInfo.getOrderType() != 2) {
@@ -462,11 +486,11 @@
        OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo);
//        if (orderInfo.getStatus() == OrderStatusEnum.WAIT_FINISH.getValue()) {
//            MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
//            orderDetailVo.setExpressNo(expressInfo.getExpressNo());
//            orderDetailVo.setExpressCom(expressInfo.getExpressCom());
//        }
        MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
        if(ObjectUtil.isNotEmpty(expressInfo)){
            orderDetailVo.setExpressNo(expressInfo.getExpressNo());
            orderDetailVo.setExpressCom(expressInfo.getExpressCom());
        }
        if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue() || orderInfo.getStatus() == OrderStatusEnum.REFUNDED.getValue()) {
            MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId());
@@ -475,7 +499,7 @@
        }
        if (OrderStatusEnum.WAIT_PAY.getValue() == orderInfo.getStatus()) {
            Date endTime = DateUtil.offsetMinute(orderInfo.getOrderTime(), 15);
            Date endTime = DateUtil.offsetMinute(orderInfo.getOrderTime(), 1440);
            long remainTime = DateUtil.between(new Date(), endTime, DateUnit.SECOND, false);
            orderDetailVo.setRemainTime(remainTime);
@@ -839,42 +863,49 @@
    }
    @Override
    public Boolean createOrderVerify(ApiCreateOrderVerifyDto apiCreateOrderVerifyDto) {
        Boolean flag = false;
        Long addressId = apiCreateOrderVerifyDto.getAddressId();
        String takeUniqueCode = apiCreateOrderVerifyDto.getTakeUniqueCode();
    public FebsResponse createOrderVerify(ApiCreateOrderVerifyDto apiCreateOrderVerifyDto) {
        Long memberId = LoginUserUtil.getLoginUser().getId();
        MallMember member = memberMapper.selectById(memberId);
        List<AddOrderItemDto> items = apiCreateOrderVerifyDto.getItems();
        if(CollUtil.isEmpty(items)){
            return new FebsResponse().fail().message("请先挑选商品");
        }
        for (AddOrderItemDto item : apiCreateOrderVerifyDto.getItems()) {
            MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
            if (sku == null) {
                return new FebsResponse().fail().message("购买商品或sku不存在");
            }
//            if("样品".equals(sku.getSample())){
//                List<MallOrderItem> mallOrderItems = mallOrderItemMapper.selectItemBySkuIdUnCancel(sku.getId(), member.getId());
//                if (CollUtil.isNotEmpty(mallOrderItems)) {
//                    return new FebsResponse().fail().message("样品只能购买一次");
//                }
//                Integer cnt = item.getCnt();
//                if(1 < cnt){
//                    return new FebsResponse().fail().message("样品只能购买一件");
//                }
//            }else{
//                //验证用户的等级
//                if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){
//                    return new FebsResponse().fail().message("请先申请成为合伙人");
//                }
//            }
        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;
            if (sku.getStock() < item.getCnt()) {
                return new FebsResponse().fail().message(sku.getSkuName() + "库存不足");
            }
            MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
            if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
                return new FebsResponse().fail().message(mallGoods.getGoodsName() + "已下架");
            }
        }
        return flag;
        return new FebsResponse().success();
    }
    public static void main(String[] args) {
        System.out.print(AgentLevelEnum.ZERO_LEVEL.name());
    }
}