快递费配置
parent
bf3e408059
commit
82e3eab857
|
|
@ -18,9 +18,7 @@ import org.springframework.validation.annotation.Validated;
|
|||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
|
@ -110,11 +108,37 @@ public class ExpressController extends XktBaseController {
|
|||
|
||||
@ApiOperation(value = "快递费配置分页查询")
|
||||
@PostMapping("/fee-config/page")
|
||||
public R<PageVO<ExpressFeeConfigListItemVO>> pageExpressFeeConfig(@Validated @RequestBody ExpressFeeConfigQueryVO vo) {
|
||||
public R<PageVO<ExpressFeeConfigListItemVO>> pageExpressFeeConfig(@Validated @RequestBody
|
||||
ExpressFeeConfigQueryVO vo) {
|
||||
ExpressFeeConfigQueryDTO queryDTO = BeanUtil.toBean(vo, ExpressFeeConfigQueryDTO.class);
|
||||
Page<ExpressFeeConfigListItemDTO> pageDTO = PageHelper.startPage(vo.getPageNum(), vo.getPageSize());
|
||||
expressService.listFeeConfig(queryDTO);
|
||||
return success(PageVO.of(pageDTO, ExpressFeeConfigListItemVO.class));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "快递费展示")
|
||||
@GetMapping(value = "/fee/show")
|
||||
public R<List<ExpressFeeShowVO>> showExpressFee() {
|
||||
List<ExpressFeeConfigListItemDTO> configItems = expressService.listFeeConfig(new ExpressFeeConfigQueryDTO());
|
||||
Map<String, Map<String, ExpressFeeShowVO.Item>> map = new HashMap<>();
|
||||
for (ExpressFeeConfigListItemDTO configItem : configItems) {
|
||||
Map<String, ExpressFeeShowVO.Item> itemMap = map.computeIfAbsent(configItem.getExpressName(),
|
||||
k -> new HashMap<>());
|
||||
String ik = configItem.getFirstItemAmount() + "-" + configItem.getNextItemAmount();
|
||||
ExpressFeeShowVO.Item item = itemMap.computeIfAbsent(ik,
|
||||
k -> new ExpressFeeShowVO.Item(configItem.getRegionName(), 1,
|
||||
configItem.getFirstItemAmount(), 1, configItem.getNextItemAmount()));
|
||||
if (!item.getAres().equals(configItem.getRegionName())) {
|
||||
item.setAres(item.getAres() + "," + configItem.getRegionName());
|
||||
}
|
||||
}
|
||||
List<ExpressFeeShowVO> vos = new ArrayList<>(map.size());
|
||||
for (Map.Entry<String, Map<String, ExpressFeeShowVO.Item>> entry : map.entrySet()) {
|
||||
ExpressFeeShowVO vo = new ExpressFeeShowVO();
|
||||
vo.setExpressName(entry.getKey());
|
||||
vo.setItems(new ArrayList<>(entry.getValue().values()));
|
||||
}
|
||||
return R.ok(vos);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
package com.ruoyi.web.controller.xkt.vo.express;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author liangyq
|
||||
* @date 2025-06-11
|
||||
*/
|
||||
@ApiModel
|
||||
@Data
|
||||
public class ExpressFeeShowVO {
|
||||
|
||||
@ApiModelProperty(value = "快递名称")
|
||||
private String expressName;
|
||||
|
||||
@ApiModelProperty(value = "列表项")
|
||||
private List<Item> items;
|
||||
|
||||
@ApiModel
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public static class Item {
|
||||
|
||||
@ApiModelProperty(value = "可配送区域")
|
||||
private String ares;
|
||||
|
||||
@ApiModelProperty(value = "首件")
|
||||
private Integer firstItemCount;
|
||||
|
||||
@ApiModelProperty(value = "运费")
|
||||
private BigDecimal firstItemAmount;
|
||||
|
||||
@ApiModelProperty(value = "续件")
|
||||
private Integer nextItemCount;
|
||||
|
||||
@ApiModelProperty(value = "续费")
|
||||
private BigDecimal nextItemAmount;
|
||||
}
|
||||
}
|
||||
|
|
@ -344,6 +344,8 @@ public class ExpressServiceImpl implements IExpressService {
|
|||
Assert.notEmpty(editDTO.getRegionCode());
|
||||
Assert.notNull(editDTO.getFirstItemAmount());
|
||||
Assert.notNull(editDTO.getNextItemAmount());
|
||||
Assert.isTrue(editDTO.getFirstItemAmount().compareTo(editDTO.getNextItemAmount()) == 0,
|
||||
"首件运费和续件续费必须相等");
|
||||
boolean exists = expressFeeConfigMapper.exists(Wrappers.lambdaQuery(ExpressFeeConfig.class)
|
||||
.eq(ExpressFeeConfig::getExpressId, editDTO.getExpressId())
|
||||
.eq(ExpressFeeConfig::getRegionCode, editDTO.getRegionCode()));
|
||||
|
|
@ -363,6 +365,8 @@ public class ExpressServiceImpl implements IExpressService {
|
|||
Assert.notEmpty(editDTO.getRegionCode());
|
||||
Assert.notNull(editDTO.getFirstItemAmount());
|
||||
Assert.notNull(editDTO.getNextItemAmount());
|
||||
Assert.isTrue(editDTO.getFirstItemAmount().compareTo(editDTO.getNextItemAmount()) == 0,
|
||||
"首件运费和续件续费必须相等");
|
||||
ExpressFeeConfig config = expressFeeConfigMapper.selectById(editDTO.getId());
|
||||
Assert.notNull(config);
|
||||
boolean exists = expressFeeConfigMapper.exists(Wrappers.lambdaQuery(ExpressFeeConfig.class)
|
||||
|
|
|
|||
Loading…
Reference in New Issue