|  |  |  | 
|---|
|  |  |  | import com.ruoyi.common.core.domain.R; | 
|---|
|  |  |  | import com.ruoyi.common.core.exception.ServiceException; | 
|---|
|  |  |  | import com.ruoyi.common.core.utils.StringUtils; | 
|---|
|  |  |  | import com.ruoyi.common.core.utils.uuid.QRCodeGenerator; | 
|---|
|  |  |  | import com.ruoyi.common.core.web.page.PageInfo; | 
|---|
|  |  |  | import com.ruoyi.common.security.service.TokenService; | 
|---|
|  |  |  | import com.ruoyi.order.enums.OrderStatus; | 
|---|
|  |  |  | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import java.io.IOException; | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | import java.math.RoundingMode; | 
|---|
|  |  |  | import java.time.LocalDateTime; | 
|---|
|  |  |  | 
|---|
|  |  |  | orderActivityInfo = JSONObject.parseObject(activityJson, OrderActivityInfo.class); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | OrderDetailVO orderDetailVO = new OrderDetailVO(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (CollectionUtil.isNotEmpty(orderGoods)){ | 
|---|
|  |  |  | String goodJson = orderGoods.get(0).getGoodJson(); | 
|---|
|  |  |  | Goods goods = JSONObject.parseObject(goodJson, Goods.class); | 
|---|
|  |  |  | orderDetailVO.setDistributionMode(goods.getDistributionMode()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Technician technician = new Technician(); | 
|---|
|  |  |  | if (order.getTechnicianId() != null){ | 
|---|
|  |  |  | R<Technician> shopdetail = technicianClient.shopdetail(order.getTechnicianId()); | 
|---|
|  |  |  | if (shopdetail.getCode() != R.SUCCESS){ | 
|---|
|  |  |  | throw new ServiceException("获取技师信息失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | technician = shopdetail.getData(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | orderDetailVO.setDistributionMode(order.getDistributionMode()); | 
|---|
|  |  |  | Shop shop = shopR.getData(); | 
|---|
|  |  |  | orderDetailVO.setId(order.getId()); | 
|---|
|  |  |  | orderDetailVO.setOrderStatus(order.getOrderStatus()); | 
|---|
|  |  |  | 
|---|
|  |  |  | orderDetailVO.setLongitude(shop.getLongitude()); | 
|---|
|  |  |  | orderDetailVO.setLatitude(shop.getLatitude()); | 
|---|
|  |  |  | orderDetailVO.setShopId(shop.getId()); | 
|---|
|  |  |  | orderDetailVO.setTechnicianName(technician.getName()); | 
|---|
|  |  |  | orderDetailVO.setTechnicianId(technician.getId()); | 
|---|
|  |  |  | if(order.getOrderType() == 1){ | 
|---|
|  |  |  | List<TechnicianSubscribe> data = technicianSubscribeClient.getTechnicianSubscribeList(order.getId()).getData(); | 
|---|
|  |  |  | if(data.size() > 0){ | 
|---|
|  |  |  | Long id = data.get(0).getId(); | 
|---|
|  |  |  | orderDetailVO.setTechnicianSubscribeId(id.toString()); | 
|---|
|  |  |  | Technician technician = technicianClient.shopdetail(order.getTechnicianId()).getData(); | 
|---|
|  |  |  | orderDetailVO.setTechnicianName(technician.getName()); | 
|---|
|  |  |  | orderDetailVO.setTechnicianId(technician.getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 生成核销码BASE64 | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | String base64 = QRCodeGenerator.generateQRCodeBase64(String.valueOf(order.getId()), 124, 124); | 
|---|
|  |  |  | orderDetailVO.setWriteOffCode(base64); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | throw new ServiceException("生成核销码失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return orderDetailVO; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional(rollbackFor = Exception.class) | 
|---|
|  |  |  | public void writeOff(String id,Integer shopId) { | 
|---|
|  |  |  | public void writeOff(String id, Integer shopId, String technicianId) { | 
|---|
|  |  |  | LoginUser loginUserApplet = tokenService.getLoginUserApplet(); | 
|---|
|  |  |  | Order order = orderMapper.selectById(id); | 
|---|
|  |  |  | boolean check = check(order, shopId, loginUserApplet.getUserid()); | 
|---|
|  |  |  | 
|---|
|  |  |  | order.setAfterSaleTime(LocalDateTime.now().plusDays(days)); | 
|---|
|  |  |  | order.setEndTime(LocalDateTime.now()); | 
|---|
|  |  |  | order.setCancellerAppUserId(loginUserApplet.getUserid()); | 
|---|
|  |  |  | if(StringUtils.isNotEmpty(technicianId) && !"null".equals(technicianId)){ | 
|---|
|  |  |  | order.setTechnicianId(Integer.valueOf(technicianId)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | orderMapper.updateById(order); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | orderPageListVo.setUserName(appUser.getName()); | 
|---|
|  |  |  | orderPageListVo.setPhone(appUser.getPhone()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | RefundPass one = refundPassService.getOne(new LambdaQueryWrapper<RefundPass>().eq(RefundPass::getOrderId, orderPageListVo.getId()).eq(RefundPass::getDelFlag, 0).last(" order by create_time desc limit 0, 1")); | 
|---|
|  |  |  | //            RefundPass one = refundPassService.getOne(new LambdaQueryWrapper<RefundPass>().eq(RefundPass::getOrderId, orderPageListVo.getId()).eq(RefundPass::getDelFlag, 0).last(" order by create_time desc limit 0,1")); | 
|---|
|  |  |  | RefundPass one = refundPassService.lambdaQuery().eq(RefundPass::getOrderId, orderPageListVo.getId()).one(); | 
|---|
|  |  |  | orderPageListVo.setRefundPassId(null != one ? one.getId().toString() : null); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 平台分佣 | 
|---|
|  |  |  | List<ShopBalanceStatement> data = shopBalanceStatementClient.getShopBalanceStatementList(Arrays.asList(1, 2, 3), Long.valueOf(orderPageListVo.getId())).getData(); | 
|---|
|  |  |  | BigDecimal reduce = data.stream().map(ShopBalanceStatement::getVariableAmount).reduce(BigDecimal.ZERO, BigDecimal::add); | 
|---|
|  |  |  | orderPageListVo.setGetCommission(reduce); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return pageInfo.setRecords(list); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 确认发货操作 | 
|---|
|  |  |  | * @param orderId | 
|---|
|  |  |  | * @param code | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public R confirmDelivery(Long orderId, String code) { | 
|---|
|  |  |  | Order order = this.getById(orderId); | 
|---|
|  |  |  | public R confirmDelivery(ConfirmDelivery confirmDelivery) { | 
|---|
|  |  |  | Order order = this.getById(confirmDelivery.getOrderId()); | 
|---|
|  |  |  | if(1 == order.getPayStatus()){ | 
|---|
|  |  |  | return R.fail("订单还未完成支付"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | return R.fail("无效的操作"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //添加快递号和修改订单状态 | 
|---|
|  |  |  | order.setExpressJson(code); | 
|---|
|  |  |  | order.setExpressJson(confirmDelivery.getCode()); | 
|---|
|  |  |  | order.setDeliverProvince(confirmDelivery.getDeliverProvince()); | 
|---|
|  |  |  | order.setDeliverProvinceCode(confirmDelivery.getDeliverProvinceCode()); | 
|---|
|  |  |  | order.setDeliverCity(confirmDelivery.getDeliverCity()); | 
|---|
|  |  |  | order.setDeliverCityCode(confirmDelivery.getDeliverCityCode()); | 
|---|
|  |  |  | order.setDeliverDistrict(confirmDelivery.getDeliverDistrict()); | 
|---|
|  |  |  | order.setDeliverDistrictCode(confirmDelivery.getDeliverDistrictCode()); | 
|---|
|  |  |  | order.setOrderStatus(2); | 
|---|
|  |  |  | //添加查询快递信息队列 | 
|---|
|  |  |  | //一小时后定时查询快递信息 | 
|---|
|  |  |  | SystemConfig systemConfig = systemConfigClient.getSystemConfig(3).getData(); | 
|---|
|  |  |  | JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); | 
|---|
|  |  |  | Integer waitTime = jsonObject.getInteger("waitTime"); | 
|---|
|  |  |  | redisTemplate.opsForZSet().add("order_express", order.getId(), LocalDateTime.now().plusHours(waitTime).toEpochSecond(ZoneOffset.UTC)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JSONObject jsonObject1 = JSON.parseObject(confirmDelivery.getCode()); | 
|---|
|  |  |  | String com = jsonObject1.getString("com"); | 
|---|
|  |  |  | String num = jsonObject1.getString("num"); | 
|---|
|  |  |  | UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class); | 
|---|
|  |  |  | MapTrackKD100Vo mapTrackKD100Vo = ExpressDeliveryUtil.kd100MapTrack(com, num, order.getDeliverProvince() + order.getDeliverCity(), | 
|---|
|  |  |  | userAddress.getProvince() + userAddress.getCity()); | 
|---|
|  |  |  | order.setExpressResult(JSON.toJSONString(mapTrackKD100Vo)); | 
|---|
|  |  |  | this.updateById(order); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | appUser.setBalance(balance.add(paymentAmount).setScale(2, RoundingMode.HALF_EVEN)); | 
|---|
|  |  |  | appUser.setShopAmount(appUser.getShopAmount().subtract(paymentAmount).setScale(2, RoundingMode.HALF_EVEN)); | 
|---|
|  |  |  | //查询最后一次的消费订单 | 
|---|
|  |  |  | Order order1 = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, order.getAppUserId()).eq(Order::getPayStatus, 2).eq(Order::getDelFlag, 0).in(Order::getOrderStatus, Arrays.asList(2, 3, 4, 8)).ne(Order::getId, order.getId()).last(" order by create_time desc limit 0, 1")); | 
|---|
|  |  |  | Order order1 = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getAppUserId, order.getAppUserId()).eq(Order::getPayStatus, 2) | 
|---|
|  |  |  | .eq(Order::getDelFlag, 0).in(Order::getOrderStatus, Arrays.asList(1, 2, 3, 4, 8)).ne(Order::getId, order.getId()).last(" order by create_time desc limit 0, 1")); | 
|---|
|  |  |  | if(null != order1){ | 
|---|
|  |  |  | appUser.setLastShopTime(order1.getCreateTime()); | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | appUser.setLastShopTime(LocalDateTime.MIN); | 
|---|
|  |  |  | appUser.setLastShopTime(null); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //构建账户余额流水明细 | 
|---|
|  |  |  | 
|---|
|  |  |  | userPoint.setAppUserId(order.getAppUserId()); | 
|---|
|  |  |  | userPoint.setObjectId(order.getId()); | 
|---|
|  |  |  | userPointClient.saveUserPoint(userPoint); | 
|---|
|  |  |  | appUserClient.editAppUserById(appUser); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | order.setRefundStatus(2); | 
|---|