平台内部配送费的逻辑新增。增加日志打印
This commit is contained in:
parent
b1f95f4ecf
commit
1637c1bf92
@ -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());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user