package cc.mrbird.febs.mall.service.impl;
|
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
import cc.mrbird.febs.common.entity.QueryRequest;
|
import cc.mrbird.febs.mall.dto.CountryDeliveryDto;
|
import cc.mrbird.febs.mall.entity.MallCountryDelivery;
|
import cc.mrbird.febs.mall.mapper.MallCountryDeliveryMapper;
|
import cc.mrbird.febs.mall.service.IMallCountryDeliveryService;
|
import cc.mrbird.febs.mall.vo.AdminMallNewsInfoVo;
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
/**
|
* 国家运费配置 Service 实现
|
*
|
* @author auto-generated
|
*/
|
@Slf4j
|
@Service
|
@RequiredArgsConstructor
|
public class MallCountryDeliveryServiceImpl implements IMallCountryDeliveryService {
|
|
private final MallCountryDeliveryMapper mallCountryDeliveryMapper;
|
|
@Override
|
public FebsResponse list() {
|
List<MallCountryDelivery> list = mallCountryDeliveryMapper.selectList(
|
Wrappers.lambdaQuery(MallCountryDelivery.class)
|
.orderByAsc(MallCountryDelivery::getCountryCode)
|
);
|
return new FebsResponse().success().data(list);
|
}
|
|
@Override
|
public IPage<MallCountryDelivery> countryDeliveryList(MallCountryDelivery dto, QueryRequest request) {
|
Page<MallCountryDelivery> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<MallCountryDelivery> pages = mallCountryDeliveryMapper.getCountryDeliveryListInPage(page, dto);
|
return pages;
|
}
|
|
@Override
|
public FebsResponse saveOrUpdate(CountryDeliveryDto dto) {
|
MallCountryDelivery entity = new MallCountryDelivery();
|
entity.setCountryCode(dto.getCountryCode().toUpperCase());
|
entity.setCountryName(dto.getCountryName());
|
entity.setShippingFee(dto.getShippingFee());
|
entity.setStatus(dto.getStatus() != null ? dto.getStatus() : 1);
|
entity.setRemark(dto.getRemark());
|
|
if (dto.getId() != null) {
|
// 更新
|
entity.setId(dto.getId());
|
mallCountryDeliveryMapper.updateById(entity);
|
log.info("更新国家运费配置: countryCode={}, fee={}", entity.getCountryCode(), entity.getShippingFee());
|
} else {
|
// 新增前检查编码是否重复
|
MallCountryDelivery exist = mallCountryDeliveryMapper.selectOne(
|
Wrappers.lambdaQuery(MallCountryDelivery.class)
|
.eq(MallCountryDelivery::getCountryCode, entity.getCountryCode())
|
);
|
if (exist != null) {
|
return new FebsResponse().fail().message("国家编码 " + entity.getCountryCode() + " 已存在");
|
}
|
mallCountryDeliveryMapper.insert(entity);
|
log.info("新增国家运费配置: countryCode={}, fee={}", entity.getCountryCode(), entity.getShippingFee());
|
}
|
return new FebsResponse().success().message("保存成功");
|
}
|
|
@Override
|
public FebsResponse delete(Long id) {
|
mallCountryDeliveryMapper.deleteById(id);
|
return new FebsResponse().success().message("删除成功");
|
}
|
|
@Override
|
public FebsResponse getShippingFeeByCountryCode(String countryCode) {
|
if (StrUtil.isBlank(countryCode)) {
|
return new FebsResponse().fail().message("国家编码不能为空");
|
}
|
|
MallCountryDelivery delivery = mallCountryDeliveryMapper.selectOne(
|
Wrappers.lambdaQuery(MallCountryDelivery.class)
|
.eq(MallCountryDelivery::getCountryCode, countryCode.toUpperCase())
|
.eq(MallCountryDelivery::getStatus, 1)
|
);
|
|
if (delivery == null) {
|
// 没有配置则返回默认运费 0(可根据业务调整)
|
return new FebsResponse().success().data(BigDecimal.ZERO);
|
}
|
|
return new FebsResponse().success().data(delivery.getShippingFee());
|
}
|
}
|