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

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