rk
7 天以前 98857678fce3f4139845aa11c3e8563294cb2a30
代码生成
已修改7个文件
215 ■■■■ 文件已修改
server/admin/src/main/java/com/doumee/api/business/PricingRuleController.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/PricingRule.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/dto/EstimatedDeliverySaveDTO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/vo/EstimatedDeliveryVO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/PricingRuleService.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/PricingRuleServiceImpl.java 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin/src/main/java/com/doumee/api/business/PricingRuleController.java
@@ -134,35 +134,19 @@
    }
    @PreventRepeat
    @ApiOperation("新增预计时效配置")
    @PostMapping("/estimatedDelivery/create")
    @ApiOperation("保存预计时效配置")
    @PostMapping("/estimatedDelivery/save")
    @RequiresPermissions("business:pricingRule:create")
    public ApiResponse createEstimatedDelivery(@RequestBody @Validated EstimatedDeliverySaveDTO request) {
        return ApiResponse.success(pricingRuleService.createEstimatedDelivery(request));
    }
    @PreventRepeat
    @ApiOperation("修改预计时效配置")
    @PostMapping("/estimatedDelivery/update")
    @RequiresPermissions("business:pricingRule:update")
    public ApiResponse updateEstimatedDelivery(@RequestBody @Validated EstimatedDeliverySaveDTO request) {
        pricingRuleService.updateEstimatedDelivery(request);
    public ApiResponse saveEstimatedDelivery(@RequestBody @Validated EstimatedDeliverySaveDTO request) {
        pricingRuleService.saveEstimatedDelivery(request);
        return ApiResponse.success(null);
    }
    @ApiOperation("删除预计时效配置")
    @GetMapping("/estimatedDelivery/delete/{id}")
    @RequiresPermissions("business:pricingRule:delete")
    public ApiResponse deleteEstimatedDelivery(@PathVariable Integer id) {
        pricingRuleService.deleteEstimatedDelivery(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("查询预计时效配置列表")
    @ApiOperation("查询预计时效配置")
    @GetMapping("/estimatedDelivery/list")
    @RequiresPermissions("business:pricingRule:query")
    public ApiResponse<List<EstimatedDeliveryVO>> listEstimatedDelivery(@RequestParam Integer cityId) {
        return ApiResponse.success(pricingRuleService.listEstimatedDelivery(cityId));
    public ApiResponse<EstimatedDeliveryVO> listEstimatedDelivery(@RequestParam Integer cityId) {
        return ApiResponse.success(pricingRuleService.getEstimatedDelivery(cityId));
    }
    @PreventRepeat
server/services/src/main/java/com/doumee/dao/business/model/PricingRule.java
@@ -52,19 +52,19 @@
    @ExcelColumn(name = "类型", index = 2, width = 10, valueMapping = "0=就地存取规则;1=异地存取规则;2=预计失效;3=门店注册押金;4=分成比例;")
    private Integer type;
    @ApiModelProperty(value = "参数1:type (0/1)=  关联 物品尺寸(category type =4);type (2)= 配送里程 ; type (3)  = 企业类型(0=企业;1=个人);type (4) = 类型(0-4 企业寄/个人寄/企业取/个人取/配送员)")
    @ApiModelProperty(value = "参数1:type (0/1)=  关联 物品尺寸(category type =4);type (2)= 默认 1 ; type (3)  = 企业类型(0=企业;1=个人);type (4) = 类型(企业/个人/配送员)")
    private String fieldA;
    @ApiModelProperty(value = "参数2:type (0)=  收费单价 ;type (1)= 配送起步里程公里数 ;type (2)= 配送时长 ; type (3)  = 押金;type (4) = 分成比例")
    @ApiModelProperty(value = "参数2:type (0)=  收费单价 ;type (1)= 配送起步里程公里数 ;type (2)= 起送里程 km ; type (3)  = 押金;type (4) = 地点类型(寄件点/取件点/分成比例)")
    private String fieldB;
    @ApiModelProperty(value = "参数3:type (1)= 配送起步里程每公里单价 ;")
    @ApiModelProperty(value = "参数3:type (1)= 配送起步里程每公里单价 ;type (2)  = 起送时长; type (3)  = 押金;type (4) = 分成比例")
    private String fieldC;
    @ApiModelProperty(value = "参数4:type=1  超出首单里程公里数")
    @ApiModelProperty(value = "参数4:type=1  超出首单里程公里数 ; type =2  续送里程 km;")
    private String fieldD;
    @ApiModelProperty(value = "参数5:type=1  超出首单里程每公里 单价")
    @ApiModelProperty(value = "参数5:type=1  超出首单里程每公里 单价 ; type =2 续送时长")
    private String fieldE;
}
server/services/src/main/java/com/doumee/dao/dto/EstimatedDeliverySaveDTO.java
@@ -16,18 +16,23 @@
@ApiModel("预计时效配置保存请求")
public class EstimatedDeliverySaveDTO implements Serializable {
    @ApiModelProperty(value = "规则主键(修改时必传)")
    private Integer id;
    @ApiModelProperty(value = "城市主键", required = true, example = "1")
    @NotNull(message = "城市主键不能为空")
    private Integer cityId;
    @ApiModelProperty(value = "配送里程(公里)", required = true, example = "10")
    @NotNull(message = "配送里程不能为空")
    private String distance;
    @ApiModelProperty(value = "起送里程(公里)", required = true, example = "10")
    @NotNull(message = "起送里程不能为空")
    private String startDistance;
    @ApiModelProperty(value = "配送时长(小时)", required = true, example = "2")
    @NotNull(message = "配送时长不能为空")
    private String duration;
    @ApiModelProperty(value = "起送时长", required = true, example = "2")
    @NotNull(message = "起送时长不能为空")
    private String startTime;
    @ApiModelProperty(value = "续送里程(公里)", required = true, example = "5")
    @NotNull(message = "续送里程不能为空")
    private String continueDistance;
    @ApiModelProperty(value = "续送时长", required = true, example = "1")
    @NotNull(message = "续送时长不能为空")
    private String continueTime;
}
server/services/src/main/java/com/doumee/dao/vo/EstimatedDeliveryVO.java
@@ -7,7 +7,7 @@
import java.io.Serializable;
/**
 * 预计时效配置列表返回
 * 预计时效配置(列表返回)
 * @author rk
 * @date 2026/04/08
 */
@@ -21,9 +21,15 @@
    @ApiModelProperty(value = "城市主键")
    private Integer cityId;
    @ApiModelProperty(value = "配送里程(公里)")
    private String distance;
    @ApiModelProperty(value = "起送里程(公里)")
    private String startDistance;
    @ApiModelProperty(value = "配送时长(小时)")
    private String duration;
    @ApiModelProperty(value = "起送时长")
    private String startTime;
    @ApiModelProperty(value = "续送里程(公里)")
    private String continueDistance;
    @ApiModelProperty(value = "续送时长")
    private String continueTime;
}
server/services/src/main/java/com/doumee/service/business/PricingRuleService.java
@@ -133,30 +133,17 @@
    List<RemoteDeliveryPricingVO> listRemoteDeliveryPricing(Integer cityId);
    /**
     * 新增预计时效配置
     * @param request 保存请求
     * @return 规则主键
     */
    Integer createEstimatedDelivery(EstimatedDeliverySaveDTO request);
    /**
     * 修改预计时效配置
     * 保存预计时效配置(有则更新,无则新增)
     * @param request 保存请求
     */
    void updateEstimatedDelivery(EstimatedDeliverySaveDTO request);
    void saveEstimatedDelivery(EstimatedDeliverySaveDTO request);
    /**
     * 删除预计时效配置
     * @param id 规则主键
     */
    void deleteEstimatedDelivery(Integer id);
    /**
     * 查询预计时效配置列表
     * 查询预计时效配置(有且只有一条,无数据返回空对象)
     * @param cityId 城市主键
     * @return 预计时效配置列表
     * @return 预计时效配置
     */
    List<EstimatedDeliveryVO> listEstimatedDelivery(Integer cityId);
    EstimatedDeliveryVO getEstimatedDelivery(Integer cityId);
    /**
     * 批量保存门店注册押金
server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java
@@ -312,7 +312,7 @@
            member.setNickName(telephone);
            member.setName(telephone);
            member.setUserType(Constants.ONE);
            member.setDriverStatus(Constants.ZERO);
            member.setBusinessStatus(Constants.ZERO);
            member.setPassword(secure.encryptPassword(defaultPassword, salt));
            member.setSalt(salt);
            member.setWorkerIdentity(Constants.ZERO);
@@ -482,7 +482,7 @@
        // 更新会员司机认证状态为认证中
        memberMapper.update(new UpdateWrapper<Member>().lambda()
                .set(Member::getDriverStatus, Constants.ONE)
                .set(Member::getBusinessStatus, Constants.ONE)
                .set(Member::getUpdateTime, now)
                .eq(Member::getId, memberId));
    }
@@ -559,7 +559,7 @@
        // 更新会员司机认证状态:通过=2,驳回=3
        Integer driverStatus = Constants.equalsInteger(newStatus, Constants.TWO) ? Constants.TWO : Constants.THREE;
        memberMapper.update(new UpdateWrapper<Member>().lambda()
                .set(Member::getDriverStatus, driverStatus)
                .set(Member::getBusinessStatus, driverStatus)
                .set(Member::getUpdateTime, now)
                .eq(Member::getId, driverInfo.getMemberId()));
    }
server/services/src/main/java/com/doumee/service/business/impl/PricingRuleServiceImpl.java
@@ -379,66 +379,65 @@
    }
    @Override
    public Integer createEstimatedDelivery(EstimatedDeliverySaveDTO request) {
        PricingRule rule = new PricingRule();
        rule.setType(Constants.TWO);
        rule.setCityId(request.getCityId());
        rule.setFieldA(request.getDistance());
        rule.setFieldB(request.getDuration());
        rule.setDeleted(Constants.ZERO);
        rule.setCreateTime(new Date());
        rule.setUpdateTime(new Date());
        pricingRuleMapper.insert(rule);
        return rule.getId();
    }
    @Override
    public void updateEstimatedDelivery(EstimatedDeliverySaveDTO request) {
        if (request.getId() == null) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "主键不能为空");
        }
        PricingRule existing = pricingRuleMapper.selectById(request.getId());
        if (Objects.isNull(existing) || !Constants.equalsInteger(existing.getType(), Constants.TWO)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        existing.setFieldA(request.getDistance());
        existing.setFieldB(request.getDuration());
        existing.setCityId(request.getCityId());
        existing.setUpdateTime(new Date());
        pricingRuleMapper.updateById(existing);
    }
    @Override
    public void deleteEstimatedDelivery(Integer id) {
        PricingRule existing = pricingRuleMapper.selectById(id);
        if (Objects.isNull(existing) || !Constants.equalsInteger(existing.getType(), Constants.TWO)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        existing.setDeleted(Constants.ONE);
        existing.setUpdateTime(new Date());
        pricingRuleMapper.updateById(existing);
    }
    @Override
    public List<EstimatedDeliveryVO> listEstimatedDelivery(Integer cityId) {
    @Transactional(rollbackFor = Exception.class)
    public void saveEstimatedDelivery(EstimatedDeliverySaveDTO request) {
        // 查询已有规则 type=2, fieldA=1, cityId, deleted=0
        QueryWrapper<PricingRule> qw = new QueryWrapper<>();
        qw.lambda()
                .eq(PricingRule::getType, Constants.TWO)
                .eq(PricingRule::getFieldA, "1")
                .eq(PricingRule::getCityId, request.getCityId())
                .eq(PricingRule::getDeleted, Constants.ZERO)
                .last("limit 1");
        PricingRule existing = pricingRuleMapper.selectOne(qw);
        Date now = new Date();
        if (existing != null) {
            // 更新
            existing.setFieldB(request.getStartDistance());
            existing.setFieldC(request.getStartTime());
            existing.setFieldD(request.getContinueDistance());
            existing.setFieldE(request.getContinueTime());
            existing.setUpdateTime(now);
            pricingRuleMapper.updateById(existing);
        } else {
            // 新增
            PricingRule rule = new PricingRule();
            rule.setType(Constants.TWO);
            rule.setFieldA("1");
            rule.setFieldB(request.getStartDistance());
            rule.setFieldC(request.getStartTime());
            rule.setFieldD(request.getContinueDistance());
            rule.setFieldE(request.getContinueTime());
            rule.setCityId(request.getCityId());
            rule.setDeleted(Constants.ZERO);
            rule.setCreateTime(now);
            rule.setUpdateTime(now);
            pricingRuleMapper.insert(rule);
        }
    }
    @Override
    public EstimatedDeliveryVO getEstimatedDelivery(Integer cityId) {
        QueryWrapper<PricingRule> qw = new QueryWrapper<>();
        qw.lambda()
                .eq(PricingRule::getType, Constants.TWO)
                .eq(PricingRule::getFieldA, "1")
                .eq(PricingRule::getCityId, cityId)
                .eq(PricingRule::getDeleted, Constants.ZERO)
                .orderByAsc(PricingRule::getFieldA);
        List<PricingRule> rules = pricingRuleMapper.selectList(qw);
        if (CollectionUtils.isEmpty(rules)) {
            return new ArrayList<>();
        }
        return rules.stream().map(rule -> {
            EstimatedDeliveryVO vo = new EstimatedDeliveryVO();
                .last("limit 1");
        PricingRule rule = pricingRuleMapper.selectOne(qw);
        EstimatedDeliveryVO vo = new EstimatedDeliveryVO();
        vo.setCityId(cityId);
        if (rule != null) {
            vo.setPricingRuleId(rule.getId());
            vo.setCityId(rule.getCityId());
            vo.setDistance(rule.getFieldA());
            vo.setDuration(rule.getFieldB());
            return vo;
        }).collect(Collectors.toList());
            vo.setStartDistance(rule.getFieldB());
            vo.setStartTime(rule.getFieldC());
            vo.setContinueDistance(rule.getFieldD());
            vo.setContinueTime(rule.getFieldE());
        }
        return vo;
    }
    @Override