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