Compare commits

...

11 Commits

Author SHA1 Message Date
杨旭
7d65a5d640 CueOrder 2025-04-18 18:29:07 +08:00
杨旭
66190dd55d Merge branch 'refs/heads/master' into frank 2025-04-18 10:26:09 +08:00
liubozhi
1da65447da 修改 group 2025-04-18 10:21:10 +08:00
liubozhi
b9e67e7c43 Merge remote-tracking branch 'origin/master' 2025-04-18 10:10:14 +08:00
wzgaoyn
6b3834f16b 修改 2025-04-18 10:05:37 +08:00
liubozhi
fcd917c201 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	tmerclub-search/src/main/resources/bootstrap.yml
2025-04-18 10:01:58 +08:00
wzgaoyn
f78118572f 修改 2025-04-18 09:57:52 +08:00
wzgaoyn
2b8394e88c 修改 2025-04-18 09:46:57 +08:00
wzgaoyn
92e7053f94 修改 2025-04-18 09:41:49 +08:00
liubozhi
fc46f21a27 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	tmerclub-search/src/main/resources/bootstrap.yml
2025-04-18 09:23:54 +08:00
liubozhi
71d852724d 修改 group 2025-04-18 09:23:12 +08:00
34 changed files with 344 additions and 47 deletions

View File

@ -27,6 +27,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${tmerclub_DUBBO_PORT:11112} port: ${tmerclub_DUBBO_PORT:11112}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13112} qos-port: ${tmerclub_DUBBOQOS_PORT:13112}

View File

@ -16,4 +16,7 @@ public interface OrderAddrFeignClient {
* @return * @return
*/ */
ServerResponseEntity<OrderAddrVO> getOrderAddrByOrderId(Long orderId); ServerResponseEntity<OrderAddrVO> getOrderAddrByOrderId(Long orderId);
// 增加cue退货地址
ServerResponseEntity<Long> addCueAddr(OrderAddrVO orderAddrVO);
} }

View File

@ -27,6 +27,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${TMERCLUB_DUBBO_PORT:11101} port: ${TMERCLUB_DUBBO_PORT:11101}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13101} qos-port: ${tmerclub_DUBBOQOS_PORT:13101}

View File

@ -28,6 +28,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${TMERCLUB_DUBBO_PORT:11118} port: ${TMERCLUB_DUBBO_PORT:11118}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13118} qos-port: ${tmerclub_DUBBOQOS_PORT:13118}

View File

@ -17,7 +17,8 @@ public enum CueOrderStatus {
EVALUATION_SUCCESS(6, "评估成功(给出价格)"), EVALUATION_SUCCESS(6, "评估成功(给出价格)"),
EVALUATION_FAIL(7, "价格不满意(退回)"), EVALUATION_FAIL(7, "价格不满意(退回)"),
EVALUATION_SUCCESS_AND_PAY(8, "价格满意(结束)"), EVALUATION_SUCCESS_AND_PAY(8, "价格满意(结束)"),
EVALUATION_FAIL_AND_BACK(9, "价格不满意(已退回)"); EVALUATION_FAIL_AND_BACK(9, "价格不满意(已退回)"),
RECEIPT_EVALUATION_AND_BACK(10, "评估失败(已退回)");
private final Integer num; private final Integer num;

View File

@ -27,6 +27,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${TMERCLUB_DUBBO_PORT:11116} port: ${TMERCLUB_DUBBO_PORT:11116}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13116} qos-port: ${tmerclub_DUBBOQOS_PORT:13116}

View File

@ -27,6 +27,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${tmerclub_DUBBO_PORT:11114} port: ${tmerclub_DUBBO_PORT:11114}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13114} qos-port: ${tmerclub_DUBBOQOS_PORT:13114}

View File

@ -27,6 +27,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${tmerclub_DUBBO_PORT:11120} port: ${tmerclub_DUBBO_PORT:11120}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13120} qos-port: ${tmerclub_DUBBOQOS_PORT:13120}

View File

@ -4,6 +4,7 @@ import com.tmerclub.cloud.common.response.ServerResponseEntity;
import com.tmerclub.cloud.cuerecycle.manager.CreateOrderManager; import com.tmerclub.cloud.cuerecycle.manager.CreateOrderManager;
import com.tmerclub.cloud.cuerecycle.model.dto.CreateOrderDTO; import com.tmerclub.cloud.cuerecycle.model.dto.CreateOrderDTO;
import com.tmerclub.cloud.cuerecycle.model.dto.CueRefuseOrderDTO; import com.tmerclub.cloud.cuerecycle.model.dto.CueRefuseOrderDTO;
import com.tmerclub.cloud.cuerecycle.model.dto.CueSaveMailingDTO;
import com.tmerclub.cloud.cuerecycle.model.vo.AppCueOrderVO; import com.tmerclub.cloud.cuerecycle.model.vo.AppCueOrderVO;
import com.tmerclub.cloud.cuerecycle.service.CueOrderService; import com.tmerclub.cloud.cuerecycle.service.CueOrderService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -64,17 +65,18 @@ public class CueOrderController {
} }
/** /**
* 同意预计价格 * 邮寄填写订单
* *
* @param createOrderDTO 入参 * @param cueSaveMailingDTO 提交参数
* @return 结果 * @return 结果
*/ */
@PostMapping("/agreePrice") @PostMapping("/saveMailing")
public ServerResponseEntity<Void> agreePrice(@RequestBody CreateOrderDTO createOrderDTO) { public ServerResponseEntity<Void> saveMailing(@Valid @RequestBody CueSaveMailingDTO cueSaveMailingDTO) {
createOrderManager.agreePrice(); int update = cueOrderService.saveMailing(cueSaveMailingDTO);
return ServerResponseEntity.success(); return update > 0 ? ServerResponseEntity.success() : ServerResponseEntity.showFailMsg("提交失败");
} }
// 同意回收 // 同意回收
@PostMapping("/agreeOrder") @PostMapping("/agreeOrder")
public ServerResponseEntity<Void> agreeOrder(@RequestBody CreateOrderDTO createOrderDTO) { public ServerResponseEntity<Void> agreeOrder(@RequestBody CreateOrderDTO createOrderDTO) {

View File

@ -5,11 +5,13 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.tmerclub.cloud.api.coupon.feign.CouponFeignClient; import com.tmerclub.cloud.api.coupon.feign.CouponFeignClient;
import com.tmerclub.cloud.api.delivery.feign.DeliveryFeignClient; import com.tmerclub.cloud.api.delivery.feign.DeliveryFeignClient;
import com.tmerclub.cloud.api.order.feign.OrderAddrFeignClient;
import com.tmerclub.cloud.api.order.feign.OrderFeignClient; import com.tmerclub.cloud.api.order.feign.OrderFeignClient;
import com.tmerclub.cloud.api.user.feign.UserAddrFeignClient; import com.tmerclub.cloud.api.user.feign.UserAddrFeignClient;
import com.tmerclub.cloud.common.exception.LuckException; import com.tmerclub.cloud.common.exception.LuckException;
import com.tmerclub.cloud.common.local.constant.CueOrderStatus; import com.tmerclub.cloud.common.local.constant.CueOrderStatus;
import com.tmerclub.cloud.common.local.dto.SaveOrderToMallDTO; import com.tmerclub.cloud.common.local.dto.SaveOrderToMallDTO;
import com.tmerclub.cloud.common.order.vo.OrderAddrVO;
import com.tmerclub.cloud.common.order.vo.UserAddrVO; import com.tmerclub.cloud.common.order.vo.UserAddrVO;
import com.tmerclub.cloud.common.response.ServerResponseEntity; import com.tmerclub.cloud.common.response.ServerResponseEntity;
import com.tmerclub.cloud.cuerecycle.mapper.CueOrderFlawMapper; import com.tmerclub.cloud.cuerecycle.mapper.CueOrderFlawMapper;
@ -53,6 +55,8 @@ public class CreateOrderManager {
DeliveryFeignClient deliveryFeignClient; DeliveryFeignClient deliveryFeignClient;
@DubboReference @DubboReference
UserAddrFeignClient userAddrFeignClient; UserAddrFeignClient userAddrFeignClient;
@DubboReference
OrderAddrFeignClient orderAddrFeignClient;
/** /**
* 保存订单信息 * 保存订单信息
@ -115,9 +119,6 @@ public class CreateOrderManager {
public void updateOrderMall(Long mallOrderId, Integer orderStatus) { public void updateOrderMall(Long mallOrderId, Integer orderStatus) {
orderFeignClient.updateOrderMall(mallOrderId, orderStatus); orderFeignClient.updateOrderMall(mallOrderId, orderStatus);
} }
public void agreePrice(){
deliveryFeignClient.curOderReturns();
}
public void agreeOrder(CreateOrderDTO createOrderDTO) { public void agreeOrder(CreateOrderDTO createOrderDTO) {
// 查询订单信息 // 查询订单信息
@ -177,18 +178,31 @@ public class CreateOrderManager {
if (ObjectUtil.isNull(cueOrderVO)) { if (ObjectUtil.isNull(cueOrderVO)) {
throw new LuckException("订单不存在,请检查!"); throw new LuckException("订单不存在,请检查!");
} }
// 判断状态是否允许修改 // 两种情况会导致退款 5不合格退款 6价格不满意退款
if (!Objects.equals(cueOrderVO.getOrderStatus(), CueOrderStatus.EVALUATION_SUCCESS.value())) { // 检查当前状态
if (!Objects.equals(cueOrderVO.getOrderStatus(), CueOrderStatus.EVALUATION_SUCCESS.value()) || !Objects.equals(cueOrderVO.getOrderStatus(), CueOrderStatus.RECEIPT_EVALUATION.value())) {
throw new LuckException("状态已变更,请检查!"); throw new LuckException("状态已变更,请检查!");
} }
// 需要向order_addr插入一条数据
ServerResponseEntity<UserAddrVO> userAddrVOServerResponseEntity = userAddrFeignClient.cueGetUserAddrByAddrId(orderId, cueOrderVO.getUserId());
if (userAddrVOServerResponseEntity.isSuccess()) {
}
CueOrder cueOrder = new CueOrder(); CueOrder cueOrder = new CueOrder();
cueOrder.setOrderId(orderId); cueOrder.setOrderId(orderId);
cueOrder.setOrderStatus(CueOrderStatus.EVALUATION_FAIL.value()); // 需要向order_addr插入一条数据
ServerResponseEntity<UserAddrVO> userAddrVO = userAddrFeignClient.cueGetUserAddrByAddrId(cueRefuseOrderDTO.getAddrId(), cueOrderVO.getUserId());
if (userAddrVO.isSuccess()) {
// 将地址信息插入到order_addr中
OrderAddrVO orderAddrVO = BeanUtil.toBean(userAddrVO, OrderAddrVO.class);
orderAddrVO.setUserId(cueOrderVO.getUserId());
ServerResponseEntity<Long> longServerResponseEntity = orderAddrFeignClient.addCueAddr(orderAddrVO);
if (longServerResponseEntity.isSuccess()) {
cueOrder.setOrderAddrId(longServerResponseEntity.getData());
}
}
if(Objects.equals(cueOrderVO.getOrderStatus(), CueOrderStatus.EVALUATION_SUCCESS.value())){
cueOrder.setOrderStatus(CueOrderStatus.EVALUATION_FAIL.value());
}else{
cueOrder.setOrderStatus(CueOrderStatus.EVALUATION_FAIL.value());
}
cueOrder.setUpdateTime(DateUtil.date()); cueOrder.setUpdateTime(DateUtil.date());
cueOrderMapper.update(cueOrder); cueOrderMapper.update(cueOrder);
this.updateOrderMall(cueOrderVO.getMallOrderId(), CueOrderStatus.EVALUATION_FAIL.value()); this.updateOrderMall(cueOrderVO.getMallOrderId(), CueOrderStatus.EVALUATION_FAIL.value());

View File

@ -122,4 +122,26 @@ public class CueOrder extends BaseModel implements Serializable {
* 服务费 * 服务费
*/ */
private Long serviceCharge; private Long serviceCharge;
/**
* 寄出单号
*/
private String sendNumber;
/**
* 寄出时候选定的仓库id
*/
private Long warehouseId;
/**
* 用户退款地址id
*/
private Long orderAddrId;
/**
* 用户退货网点id
*/
private Long outletConfigId;
/**
* 用户退货打印机id
*/
private Long printerId;
} }

View File

@ -0,0 +1,41 @@
package com.tmerclub.cloud.cuerecycle.model.dto;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 上传订单号业务对象
*
* @author: frank
* @create: 2025-04-15
**/
@Data
public class CueSaveMailingDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 订单ID
*/
@NotNull(message = "订单ID不能为空")
private Long orderId;
/**
* 商城订单id
*/
@NotNull(message = "商城订单ID不能为空")
private Long mallOrderId;
/**
* 寄出单号
*/
@NotEmpty(message = "寄出单号不能为空")
private String sendNumber;
/**
* 订单状态
*/
@NotNull(message = "订单状态不能为空")
private Integer orderStatus;
}

View File

@ -8,7 +8,6 @@ import lombok.EqualsAndHashCode;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 回收订单视图对象 * 回收订单视图对象
@ -112,4 +111,14 @@ public class AppCueOrderVO extends BaseVO implements Serializable {
*/ */
@Schema(description = "服务费") @Schema(description = "服务费")
private Long serviceCharge; private Long serviceCharge;
/**
* 寄出时快递单号
*/
@Schema(description = "寄出时快递单号")
private String sendNumber;
/**
* 寄出时候选定的仓库id
*/
@Schema(description = "寄出时候选定的仓库id")
private Long warehouseId;
} }

View File

@ -132,4 +132,9 @@ public class CueOrderVO extends BaseVO implements Serializable {
*/ */
@Schema(description = "商城订单ID") @Schema(description = "商城订单ID")
private Long mallOrderId; private Long mallOrderId;
/**
* 寄出单号
*/
private String sendNumber;
} }

View File

@ -3,6 +3,7 @@ package com.tmerclub.cloud.cuerecycle.service;
import com.tmerclub.cloud.common.database.dto.PageDTO; import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO; import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.cuerecycle.model.dto.CueOrderDTO; import com.tmerclub.cloud.cuerecycle.model.dto.CueOrderDTO;
import com.tmerclub.cloud.cuerecycle.model.dto.CueSaveMailingDTO;
import com.tmerclub.cloud.cuerecycle.model.vo.AppCueOrderVO; import com.tmerclub.cloud.cuerecycle.model.vo.AppCueOrderVO;
import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO; import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO;
@ -70,4 +71,12 @@ public interface CueOrderService {
* @return 回收订单详情 * @return 回收订单详情
*/ */
AppCueOrderVO getByAppCueOrderId(Long orderId); AppCueOrderVO getByAppCueOrderId(Long orderId);
/**
* 邮寄填写订单
*
* @param cueSaveMailingDTO 提交参数
* @return 结果
*/
int saveMailing(CueSaveMailingDTO cueSaveMailingDTO);
} }

View File

@ -16,6 +16,7 @@ import com.tmerclub.cloud.cuerecycle.manager.CreateOrderManager;
import com.tmerclub.cloud.cuerecycle.mapper.CueOrderMapper; import com.tmerclub.cloud.cuerecycle.mapper.CueOrderMapper;
import com.tmerclub.cloud.cuerecycle.model.CueOrder; import com.tmerclub.cloud.cuerecycle.model.CueOrder;
import com.tmerclub.cloud.cuerecycle.model.dto.CueOrderDTO; import com.tmerclub.cloud.cuerecycle.model.dto.CueOrderDTO;
import com.tmerclub.cloud.cuerecycle.model.dto.CueSaveMailingDTO;
import com.tmerclub.cloud.cuerecycle.model.vo.AppCueOrderVO; import com.tmerclub.cloud.cuerecycle.model.vo.AppCueOrderVO;
import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO; import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO;
import com.tmerclub.cloud.cuerecycle.service.CueOrderService; import com.tmerclub.cloud.cuerecycle.service.CueOrderService;
@ -69,6 +70,9 @@ public class CueOrderServiceImpl implements CueOrderService {
CueOrder cueOrder = new CueOrder(); CueOrder cueOrder = new CueOrder();
cueOrder.setOrderId(cueOrderDTO.getOrderId()); cueOrder.setOrderId(cueOrderDTO.getOrderId());
cueOrder.setOrderStatus(cueOrderDTO.getOrderStatus()); cueOrder.setOrderStatus(cueOrderDTO.getOrderStatus());
if (Objects.equals(cueOrderDTO.getOrderStatus(), CueOrderStatus.AUDIT_PASS.value())) {
cueOrder.setEstimatedAmount(cueOrderDTO.getEstimatedAmount());
}
cueOrder.setUpdateTime(DateUtil.date()); cueOrder.setUpdateTime(DateUtil.date());
// 发送消息 // 发送消息
syncSend(cueOrderDTO); syncSend(cueOrderDTO);
@ -126,4 +130,15 @@ public class CueOrderServiceImpl implements CueOrderService {
CueOrderVO cueOrderVO = cueOrderMapper.getById(orderId); CueOrderVO cueOrderVO = cueOrderMapper.getById(orderId);
return BeanUtil.toBean(cueOrderVO, AppCueOrderVO.class); return BeanUtil.toBean(cueOrderVO, AppCueOrderVO.class);
} }
@Override
public int saveMailing(CueSaveMailingDTO cueSaveMailingDTO) {
// 修改系统订单的状态
createOrderManager.updateOrderMall(cueSaveMailingDTO.getMallOrderId(), CueOrderStatus.PENDING_DELIVERY.value());
// 修改回收单状态
CueOrder cueOrder = BeanUtil.toBean(cueSaveMailingDTO, CueOrder.class);
cueOrder.setOrderStatus(CueOrderStatus.PENDING_DELIVERY.value());
cueOrder.setDeliveryTime(DateUtil.date());
return cueOrderMapper.update(cueOrder);
}
} }

View File

@ -1,4 +1,4 @@
package com.tmerclub.cloud.warehouse.controller; package com.tmerclub.cloud.warehouse.controller.admin;
import com.tmerclub.cloud.common.database.dto.PageDTO; import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO; import com.tmerclub.cloud.common.database.vo.PageVO;

View File

@ -0,0 +1,58 @@
package com.tmerclub.cloud.warehouse.controller.app;
import cn.hutool.core.util.ObjectUtil;
import com.tmerclub.cloud.common.response.ServerResponseEntity;
import com.tmerclub.cloud.warehouse.model.vo.WarehouseVO;
import com.tmerclub.cloud.warehouse.service.WarehouseService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
/**
* app-仓库
*
* @author : frank
* @create : 2025-04-14
*/
@Tag(name = "app-仓库")
@RestController("appWarehouseController")
@RequestMapping("/app/warehouse")
public class WarehouseController {
@Resource
WarehouseService warehouseService;
/**
* 根据经纬度获取最近的仓库信息
*
* @param lat 纬度
* @param lng 经度
* @return 最近的仓库信息
*/
@GetMapping("/getNearbyWarehouse")
public ServerResponseEntity<WarehouseVO> getNearbyWarehouse(@RequestParam("orderId") Long orderId, @RequestParam("lat") BigDecimal lat, @RequestParam("lng") BigDecimal lng) {
WarehouseVO nearbyWarehouse = warehouseService.getNearbyWarehouse(orderId, lat, lng);
return ServerResponseEntity.success(nearbyWarehouse);
}
/**
* 根据id查询仓库信息
*
* @param warehouseId 仓库id
* @return 仓库信息
*/
@GetMapping("/getWarehouseById")
@Operation(summary = "根据id查询仓库信息", description = "根据id查询仓库信息")
public ServerResponseEntity<WarehouseVO> getById(@RequestParam("warehouseId") Long warehouseId) {
WarehouseVO warehouseVO = warehouseService.getById(warehouseId);
if (ObjectUtil.isNull(warehouseVO)) {
return ServerResponseEntity.showFailMsg("暂无仓库信息");
}
return ServerResponseEntity.success(warehouseVO);
}
}

View File

@ -5,6 +5,7 @@ import com.tmerclub.cloud.warehouse.model.dto.WarehouseDTO;
import com.tmerclub.cloud.warehouse.model.vo.WarehouseVO; import com.tmerclub.cloud.warehouse.model.vo.WarehouseVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
@ -46,4 +47,12 @@ public interface WarehouseMapper {
* @return 修改结果 * @return 修改结果
*/ */
int update(Warehouse warehouse); int update(Warehouse warehouse);
/**
* 根据经纬度获取最近的仓库信息
*
* @param lat 纬度
* @param lng 经度
* @return 最近的仓库信息
*/
WarehouseVO getNearbyWarehouse(@Param("lat")BigDecimal lat, @Param("lng")BigDecimal lng);
} }

View File

@ -5,6 +5,8 @@ import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.warehouse.model.dto.WarehouseDTO; import com.tmerclub.cloud.warehouse.model.dto.WarehouseDTO;
import com.tmerclub.cloud.warehouse.model.vo.WarehouseVO; import com.tmerclub.cloud.warehouse.model.vo.WarehouseVO;
import java.math.BigDecimal;
/** /**
* 仓库Service接口 * 仓库Service接口
* *
@ -53,4 +55,13 @@ public interface WarehouseService {
* @return 删除结果 * @return 删除结果
*/ */
int delete(Long id); int delete(Long id);
/**
* 根据经纬度获取最近的仓库信息
*
* @param lat 纬度
* @param lng 经度
* @return 最近的仓库信息
*/
WarehouseVO getNearbyWarehouse(Long orderId, BigDecimal lat, BigDecimal lng);
} }

View File

@ -2,9 +2,14 @@ package com.tmerclub.cloud.warehouse.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.tmerclub.cloud.common.database.dto.PageDTO; import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.util.PageUtil; import com.tmerclub.cloud.common.database.util.PageUtil;
import com.tmerclub.cloud.common.database.vo.PageVO; import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.common.exception.LuckException;
import com.tmerclub.cloud.cuerecycle.mapper.CueOrderMapper;
import com.tmerclub.cloud.cuerecycle.model.CueOrder;
import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO;
import com.tmerclub.cloud.warehouse.mapper.WarehouseMapper; import com.tmerclub.cloud.warehouse.mapper.WarehouseMapper;
import com.tmerclub.cloud.warehouse.model.Warehouse; import com.tmerclub.cloud.warehouse.model.Warehouse;
import com.tmerclub.cloud.warehouse.model.dto.WarehouseDTO; import com.tmerclub.cloud.warehouse.model.dto.WarehouseDTO;
@ -13,6 +18,8 @@ import com.tmerclub.cloud.warehouse.service.WarehouseService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
/** /**
* 仓库Service实现类 * 仓库Service实现类
* *
@ -24,6 +31,8 @@ public class WarehouseServiceImpl implements WarehouseService {
@Resource @Resource
WarehouseMapper warehouseMapper; WarehouseMapper warehouseMapper;
@Resource
CueOrderMapper cueOrderMapper;
@Override @Override
public PageVO<WarehouseVO> page(PageDTO pageDTO, WarehouseDTO warehouseDTO) { public PageVO<WarehouseVO> page(PageDTO pageDTO, WarehouseDTO warehouseDTO) {
@ -57,4 +66,27 @@ public class WarehouseServiceImpl implements WarehouseService {
warehouse.setDeleted(1); warehouse.setDeleted(1);
return warehouseMapper.update(warehouse); return warehouseMapper.update(warehouse);
} }
@Override
public WarehouseVO getNearbyWarehouse(Long orderId, BigDecimal lat, BigDecimal lng) {
CueOrderVO orderVO = cueOrderMapper.getById(orderId);
if (ObjectUtil.isNull(orderVO)) {
throw new LuckException("暂无订单信息");
}
if (ObjectUtil.isNull(orderVO.getMallOrderId())) {
WarehouseVO nearbyWarehouse = warehouseMapper.getNearbyWarehouse(lat, lng);
if (ObjectUtil.isNull(nearbyWarehouse)) {
throw new LuckException("暂无仓库信息");
}
// 将仓库id与订单绑定
CueOrder cueOrder = new CueOrder();
cueOrder.setOrderId(orderId);
cueOrder.setMallOrderId(nearbyWarehouse.getWarehouseId());
cueOrderMapper.update(cueOrder);
return nearbyWarehouse;
} else {
return warehouseMapper.getById(orderVO.getMallOrderId());
}
}
} }

View File

@ -27,6 +27,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${tmerclub_DUBBO_PORT:11109} port: ${tmerclub_DUBBO_PORT:11109}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13109} qos-port: ${tmerclub_DUBBOQOS_PORT:13109}

View File

@ -29,10 +29,13 @@
<result property="finallyTime" column="finally_time"/> <result property="finallyTime" column="finally_time"/>
<result property="finallyTime" column="finally_time"/> <result property="finallyTime" column="finally_time"/>
<result property="mallOrderId" column="mall_order_id"/> <result property="mallOrderId" column="mall_order_id"/>
<result property="sendNumber" column="send_number"/>
</resultMap> </resultMap>
<sql id="Vo_Column_List"> <sql id="Vo_Column_List">
order_id,product_id,product_name,product_images,product_price,user_id,user_name,user_phone,order_type,order_status,flaw_img_url,evidence_of_payment,order_remark,estimated_amount,actual_amount,voucher_amount,deleted,create_time,update_time,is_payed,pay_type,pay_time,delivery_time,finally_time,mall_order_id order_id,product_id,product_name,product_images,product_price,user_id,user_name,user_phone,order_type,
order_status,flaw_img_url,evidence_of_payment,order_remark,estimated_amount,actual_amount,voucher_amount,deleted,
create_time,update_time,is_payed,pay_type,pay_time,delivery_time,finally_time,mall_order_id,send_number
</sql> </sql>
<select id="list" resultMap="cueOrderVOMap"> <select id="list" resultMap="cueOrderVOMap">
@ -187,6 +190,21 @@
<if test="brokerage != null"> <if test="brokerage != null">
brokerage = #{brokerage}, brokerage = #{brokerage},
</if> </if>
<if test="sendNumber != null and sendNumber != ''">
send_number = #{sendNumber},
</if>
<if test="warehouse_id != null">
warehouse_id = #{warehouseId},
</if>
<if test="orderAddrId != null">
order_addr_id = #{orderAddrId},
</if>
<if test="outletConfigId != null">
outlet_config_id = #{outletConfigId},
</if>
<if test="printerId != null">
printer_id = #{printerId},
</if>
</set> </set>
where where
order_id = #{orderId} order_id = #{orderId}

View File

@ -75,6 +75,37 @@
WHERE WHERE
warehouse_id = #{warehouseId} warehouse_id = #{warehouseId}
</select> </select>
<select id="getNearbyWarehouse" resultType="com.tmerclub.cloud.warehouse.model.vo.WarehouseVO">
SELECT
warehouse_id,
warehouse_name,
warehouse_status,
principal_name,
principal_phone,
province_id,
province,
city_id,
city,
area_id,
area,
post_code,
addr,
lng,
lat,
deleted,
update_time,
create_time,
(6371 * ACOS(
COS(RADIANS(#{lat})) * COS(RADIANS(lat)) *
COS(RADIANS(lng) - RADIANS(#{lng})) +
SIN(RADIANS(#{lat})) * SIN(RADIANS(lat))
)) AS distance
FROM
warehouse
ORDER BY
distance
LIMIT 1;
</select>
<insert id="save" useGeneratedKeys="true" keyProperty="warehouseId"> <insert id="save" useGeneratedKeys="true" keyProperty="warehouseId">
INSERT INTO warehouse INSERT INTO warehouse

View File

@ -27,6 +27,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${tmerclub_DUBBO_PORT:11109} port: ${tmerclub_DUBBO_PORT:11109}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13109} qos-port: ${tmerclub_DUBBOQOS_PORT:13109}

View File

@ -142,7 +142,7 @@ public class DeliveryFeignController implements DeliveryFeignClient {
// 收件人手机号 // 收件人手机号
deliveryOrderDTO.setMobile("13144611867"); deliveryOrderDTO.setMobile("13144611867");
// 订单地址id // 订单地址id
deliveryOrderDTO.setOrderAddrId(1L); deliveryOrderDTO.setOrderAddrId(2504170000012003L);//-;
// 物流订单项 // 物流订单项
List<DeliveryOrderItemDTO> deliveryOrderItemDTOList = new ArrayList<>(); List<DeliveryOrderItemDTO> deliveryOrderItemDTOList = new ArrayList<>();
DeliveryOrderItemDTO deliveryOrderItemDTO = new DeliveryOrderItemDTO(); DeliveryOrderItemDTO deliveryOrderItemDTO = new DeliveryOrderItemDTO();

View File

@ -74,9 +74,10 @@ public class OutletConfigServiceImpl implements OutletConfigService {
throw new LuckException("暂无权限查看该配置"); throw new LuckException("暂无权限查看该配置");
} }
} else { } else {
if (!Objects.equals(outletConfig.getShopId(), AuthUserContext.get().getTenantId())) { // TODO : 本地开发先注释掉
throw new LuckException("暂无权限查看该配置"); // if (!Objects.equals(outletConfig.getShopId(), AuthUserContext.get().getTenantId())) {
} // throw new LuckException("暂无权限查看该配置");
// }
} }
return outletConfig; return outletConfig;
} }

View File

@ -40,20 +40,21 @@ public class PrinterServiceImpl implements PrinterService {
@Override @Override
public Printer getByPrinterId(Long printerId) { public Printer getByPrinterId(Long printerId) {
Integer sysType = AuthUserContext.get().getSysType(); // TODO : 本地暂时注释
// Integer sysType = AuthUserContext.get().getSysType();
Printer printer = printerMapper.getByPrinterId(printerId); Printer printer = printerMapper.getByPrinterId(printerId);
if (Objects.isNull(printer)) { if (Objects.isNull(printer)) {
throw new LuckException("打印机信息为空"); throw new LuckException("打印机信息为空");
} }
if (Objects.equals(sysType, SysTypeEnum.SUPPLIER.value())) { // if (Objects.equals(sysType, SysTypeEnum.SUPPLIER.value())) {
if (!Objects.equals(printer.getSupplierId(), AuthUserContext.get().getTenantId())) { // if (!Objects.equals(printer.getSupplierId(), AuthUserContext.get().getTenantId())) {
throw new LuckException("暂无权限查看该配置"); // throw new LuckException("暂无权限查看该配置");
} // }
} else { // } else {
if (!Objects.equals(printer.getShopId(), AuthUserContext.get().getTenantId())) { // if (!Objects.equals(printer.getShopId(), AuthUserContext.get().getTenantId())) {
throw new LuckException("暂无权限查看该配置"); // throw new LuckException("暂无权限查看该配置");
} // }
} // }
return printer; return printer;
} }

View File

@ -1,9 +1,13 @@
package com.tmerclub.cloud.order.feign; package com.tmerclub.cloud.order.feign;
import cn.hutool.core.bean.BeanUtil;
import com.tmerclub.cloud.api.order.feign.OrderAddrFeignClient; import com.tmerclub.cloud.api.order.feign.OrderAddrFeignClient;
import com.tmerclub.cloud.common.leaf.manager.SegmentManager;
import com.tmerclub.cloud.common.order.vo.OrderAddrVO; import com.tmerclub.cloud.common.order.vo.OrderAddrVO;
import com.tmerclub.cloud.common.response.ServerResponseEntity; import com.tmerclub.cloud.common.response.ServerResponseEntity;
import com.tmerclub.cloud.constant.DistributedIdKey;
import com.tmerclub.cloud.order.model.OrderAddr;
import com.tmerclub.cloud.order.service.OrderAddrService; import com.tmerclub.cloud.order.service.OrderAddrService;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -17,10 +21,21 @@ public class OrderAddrFeignController implements OrderAddrFeignClient {
@Autowired @Autowired
private OrderAddrService orderAddrService; private OrderAddrService orderAddrService;
@Autowired
private SegmentManager segmentManager;
@Override @Override
public ServerResponseEntity<OrderAddrVO> getOrderAddrByOrderId(Long orderId) { public ServerResponseEntity<OrderAddrVO> getOrderAddrByOrderId(Long orderId) {
OrderAddrVO orderAddrVO = orderAddrService.getByOrderId(orderId); OrderAddrVO orderAddrVO = orderAddrService.getByOrderId(orderId);
return ServerResponseEntity.success(orderAddrVO); return ServerResponseEntity.success(orderAddrVO);
} }
@Override
public ServerResponseEntity<Long> addCueAddr(OrderAddrVO orderAddrVO) {
OrderAddr orderAddr = BeanUtil.toBean(orderAddrVO, OrderAddr.class);
Long addrId = segmentManager.getSegmentIdWithDateTime(DistributedIdKey.tmerclub_ORDER_ADDR, orderAddr.getUserId());
orderAddr.setOrderAddrId(addrId);
orderAddrService.save(orderAddr);
return ServerResponseEntity.success(addrId);
}
} }

View File

@ -27,6 +27,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${tmerclub_DUBBO_PORT:11106} port: ${tmerclub_DUBBO_PORT:11106}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13106} qos-port: ${tmerclub_DUBBOQOS_PORT:13106}

View File

@ -27,6 +27,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${tmerclub_DUBBO_PORT:11113} port: ${tmerclub_DUBBO_PORT:11113}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13113} qos-port: ${tmerclub_DUBBOQOS_PORT:13113}

View File

@ -33,6 +33,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${tmerclub_DUBBO_PORT:11104} port: ${tmerclub_DUBBO_PORT:11104}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13104} qos-port: ${tmerclub_DUBBOQOS_PORT:13104}

View File

@ -27,6 +27,6 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${tmerclub_DUBBO_PORT:11115} port: ${tmerclub_DUBBO_PORT:11115}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13115} qos-port: ${tmerclub_DUBBOQOS_PORT:13115}

View File

@ -34,7 +34,7 @@ logging:
dubbo: dubbo:
protocol: protocol:
port: ${tmerclub_DUBBO_PORT:11105} port: ${tmerclub_DUBBO_PORT:11105}
host: ${spring.cloud.nacos.discovery.ip} host: 172.23.112.124
application: application:
qos-port: ${tmerclub_DUBBOQOS_PORT:13105} qos-port: ${tmerclub_DUBBOQOS_PORT:13105}