|  |  |  | 
|---|
|  |  |  | public Long createOrder(AddOrderDto addOrderDto) { | 
|---|
|  |  |  | MallMember member = LoginUserUtil.getLoginUser(); | 
|---|
|  |  |  | //验证用户的等级 | 
|---|
|  |  |  | if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){ | 
|---|
|  |  |  | throw new FebsException("请先申请成为代理人"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){ | 
|---|
|  |  |  | //            throw new FebsException("请先申请成为代理人"); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //订单范围内才允许下单 | 
|---|
|  |  |  | MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 (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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|