平台内部配送费的逻辑新增。增加日志打印

This commit is contained in:
Jack 2025-12-12 09:23:13 +08:00
parent b1f95f4ecf
commit 1637c1bf92

View File

@ -79,94 +79,123 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
/**
* 获取同城配送设置详情信息
*
* @param storeId
* @return
* @param storeId 店铺ID平台操作时必传
* @return 同城配送设置详情
*/
@Override
public CommonResult ShopStoreSameCityTransportBaseDetail(Long storeId) {
// 判断有没有权限
// 权限校验
UserDto user = getCurrentUser();
if (user == null) {
logger.warn("用户未登录,无法获取同城配送设置详情");
return CommonResult.failed(ResultCode.FORBIDDEN.getMessage());
}
// 平台用户必须传入店铺ID商户用户自动获取自己的店铺ID
Integer isPlatform = CommonConstant.Disable2;
if (user.isPlatform()) {
if (CheckUtil.isEmpty(storeId)) {
logger.warn("平台用户操作时未传入店铺ID");
return CommonResult.failed("平台操作请传入店铺Id");
}
isPlatform = CommonConstant.Enable;
} else {
storeId = Convert.toLong(user.getStore_id());
if (storeId == null || storeId <= 0) {
logger.error("商户用户店铺ID无效: {}", user.getStore_id());
return CommonResult.failed("用户店铺信息异常");
}
}
// 获取同城配送设置详情
ShopStoreSameCityTransportBaseDTO retDTO = getShopStoreSameCityTransportBaseDTOById(storeId, isPlatform);
if (retDTO == null) {
logger.warn("店铺 {} 未设置店铺地址及经纬度相关信息", storeId);
return CommonResult.failed("商家未设置店铺地址及经纬度相关信息,请先设置再试!");
}
logger.debug("成功获取店铺 {} 的同城配送设置详情", storeId);
return CommonResult.success(retDTO);
}
/**
* 保存或更新同城配送各项设置
*
* @param shopStoreSameCityTransportBaseDTO
* @return
* @param shopStoreSameCityTransportBaseDTO 同城配送设置数据传输对象
* @return 操作结果
*/
@Override
public CommonResult saveOrUpdateSameCityTransport(ShopStoreSameCityTransportBaseDTO shopStoreSameCityTransportBaseDTO) {
// 参数校验
if (shopStoreSameCityTransportBaseDTO == null || shopStoreSameCityTransportBaseDTO.getTransportBase() == null) {
logger.warn("保存或更新同城配送设置参数校验失败: DTO为空或基础设置为空");
return CommonResult.failed("参数有误");
}
// 判断有没有权限
// 权限校验
UserDto user = getCurrentUser();
if (user == null) {
logger.warn("用户未登录,无法保存或更新同城配送设置");
return CommonResult.failed("无权限操作!");
}
Long storeId = 0L;
// 获取店铺ID并校验用户权限
Long storeId;
int isPlatform = user.isPlatform() ? CommonConstant.Enable : CommonConstant.Disable2;
if (isPlatform == CommonConstant.Enable) {
// 平台用户必须传入店铺ID
if (CheckUtil.isEmpty(shopStoreSameCityTransportBaseDTO.getTransportBase().getStore_id())) {
logger.warn("平台用户操作时未传入店铺ID");
return CommonResult.failed("平台管理请传入店铺Id");
}
storeId = Convert.toLong(shopStoreSameCityTransportBaseDTO.getTransportBase().getStore_id());
} else {
// 商户用户使用自己的店铺ID
storeId = Convert.toLong(user.getStore_id());
shopStoreSameCityTransportBaseDTO.getTransportBase().setStore_id(Convert.toLong(user.getStore_id()));
if (storeId == null || storeId <= 0) {
logger.error("商户用户店铺ID无效: {}", user.getStore_id());
return CommonResult.failed("用户店铺信息异常");
}
shopStoreSameCityTransportBaseDTO.getTransportBase().setStore_id(storeId);
}
Integer userId = user.getId();
// 获取店铺基本信息并校验
ShopStoreBase store = shopStoreBaseService.getById(storeId);
if (store == null || StrUtil.isBlank(store.getStore_longitude()) || StrUtil.isBlank(store.getStore_latitude())) {
CommonResult.failed("无法获取店铺信息!");
logger.warn("无法获取店铺 {} 的位置信息", storeId);
return CommonResult.failed("无法获取店铺信息!");
}
// 设置基础信息
ShopStoreSameCityTransportBase transportBase = shopStoreSameCityTransportBaseDTO.getTransportBase();
transportBase.setUpdated_by(userId);
transportBase.setUpdated_by(user.getId());
transportBase.setStore_longitude(store.getStore_longitude());
transportBase.setStore_latitude(store.getStore_latitude());
transportBase.setStore_address(store.getStore_address());
transportBase.setIs_platform(isPlatform);
// 新增或更新同城配送基础设置
Pair<Long, String> pair = saveOrUpdateShopStoreSameCityTransportBase(transportBase);
// 新增或更新同城配送扩展设置列表
shopStoreSameCityTransportBaseDTO.setTransportBase(transportBase);
shopStoreSameCityTransportBaseDTO.rebuildTransportList();
shopStoreSameCityTransportService.saveOrUpdateShopStoreSameCityTransportList(shopStoreSameCityTransportBaseDTO.getTransportList());
if (pair.getFirst() > 0) {
return CommonResult.success(null, pair.getSecond());
// 保存或更新同城配送基础设置
Pair<Long, String> saveResult = saveOrUpdateShopStoreSameCityTransportBase(transportBase);
if (saveResult.getFirst() <= 0) {
logger.error("保存或更新同城配送基础设置失败, storeId={}, errorMsg={}", storeId, saveResult.getSecond());
return CommonResult.failed(saveResult.getSecond());
}
return CommonResult.failed(pair.getSecond());
// 更新DTO中的基础设置和运输列表
shopStoreSameCityTransportBaseDTO.setTransportBase(transportBase);
shopStoreSameCityTransportBaseDTO.rebuildTransportList();
// 保存或更新同城配送扩展设置列表
int updateCount = shopStoreSameCityTransportService.saveOrUpdateShopStoreSameCityTransportList(shopStoreSameCityTransportBaseDTO.getTransportList());
logger.debug("保存或更新同城配送扩展设置列表完成, storeId={}, 更新条数={}", storeId, updateCount);
logger.info("成功保存或更新店铺 {} 的同城配送设置", storeId);
return CommonResult.success(shopStoreSameCityTransportBaseDTO, saveResult.getSecond());
}
/**
* 店铺主营商品类型
*
@ -331,6 +360,13 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
return getOne(queryWrapper);
}
/**
* 保存或更新同城配送基础设置
* 注意同一个 store_id + is_platform + status=Enable 的组合只能存在一条记录
*
* @param transportBase 同城配送基础设置实体
* @return 操作结果 Pair<记录ID, 操作消息>
*/
public Pair<Long, String> saveOrUpdateShopStoreSameCityTransportBase(ShopStoreSameCityTransportBase transportBase) {
try {
// 参数校验
@ -339,13 +375,14 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
return Pair.of(0L, "缺少店铺Id必要参数");
}
// 校验并设置平台标识默认值
Integer isPlatform = transportBase.getIs_platform();
if (isPlatform == null || isPlatform < 0 || isPlatform > 2) {
isPlatform = 2;
isPlatform = CommonConstant.Disable2; // 默认为商户级别
transportBase.setIs_platform(isPlatform);
}
// 设置默认值 - 使用更清晰的条件判断
// 设置默认值 - 确保数值合理性
if (transportBase.getDistance_base() == null || transportBase.getDistance_base() < 0) {
transportBase.setDistance_base(0);
}
@ -368,25 +405,29 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
transportBase.setWeight_increase_fee(BigDecimal.ZERO);
}
// 构建查询条件确保同一店铺同一平台标识下只有一条启用记录
QueryWrapper<ShopStoreSameCityTransportBase> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("store_id", transportBase.getStore_id());
queryWrapper.eq("is_platform", transportBase.getIs_platform());
queryWrapper.eq("status", CommonConstant.Enable);
// 先尝试查找已存在的记录
ShopStoreSameCityTransportBase exist = getOne(queryWrapper);
Date now = new Date();
if (exist == null) {
// 新增操作
log.debug("开始新增同城配送基础信息, storeId={}", transportBase.getStore_id());
log.debug("开始新增同城配送基础信息, storeId={}, isPlatform={}", transportBase.getStore_id(), transportBase.getIs_platform());
transportBase.setCreated_by(transportBase.getUpdated_by());
transportBase.setCreated_at(now);
transportBase.setUpdated_at(now);
transportBase.setStatus(CommonConstant.Enable); // 确保状态为启用
if (add(transportBase)) {
// 确保获取到ID
Long transportBaseId = transportBase.getTransport_base_id();
if (transportBaseId == null || transportBaseId <= 0) {
// 补偿机制transportBase.getTransport_base_id()==null重新查询数据
// 补偿机制新增后ID仍为空重新查询获取ID
log.debug("新增后ID为空重新查询获取ID, storeId={}", transportBase.getStore_id());
exist = getOne(queryWrapper);
if (exist != null) {
@ -400,10 +441,11 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
return Pair.of(0L, "添加失败!");
}
} else {
// 更新操作
// 更新操作 - 确保唯一性约束
log.debug("开始更新同城配送基础信息, transportBaseId={}, storeId={}", exist.getTransport_base_id(), transportBase.getStore_id());
transportBase.setTransport_base_id(exist.getTransport_base_id());
transportBase.setUpdated_at(now);
transportBase.setStatus(CommonConstant.Enable); // 确保状态为启用
if (updateById(transportBase)) {
log.info("更新同城配送基础信息成功, transportBaseId={}, storeId={}", transportBase.getTransport_base_id(), transportBase.getStore_id());