Эх сурвалжийг харах

mall:review + mall:快递费用

YunaiV 1 жил өмнө
parent
commit
0083d12404

+ 1 - 0
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressController.java

@@ -74,6 +74,7 @@ public class DeliveryExpressController {
         return success(DeliveryExpressConvert.INSTANCE.convertPage(pageResult));
     }
 
+    // TODO @jason:运费模版,可以去掉哈,没啥用;
     @GetMapping("/export-excel")
     @Operation(summary = "导出快递公司 Excel")
     @PreAuthorize("@ss.hasPermission('trade:delivery:express:export')")

+ 30 - 21
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/delivery/DeliveryExpressTemplateConvert.java

@@ -1,10 +1,7 @@
 package cn.iocoder.yudao.module.trade.convert.delivery;
 
-import java.util.*;
-
 import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.*;
 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO;
 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO;
@@ -12,6 +9,10 @@ import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemp
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 /**
  * 快递运费模板 Convert
  *
@@ -22,6 +23,8 @@ public interface DeliveryExpressTemplateConvert {
 
     DeliveryExpressTemplateConvert INSTANCE = Mappers.getMapper(DeliveryExpressTemplateConvert.class);
 
+    // ========== Template ==========
+
     DeliveryExpressTemplateDO convert(DeliveryExpressTemplateCreateReqVO bean);
 
     DeliveryExpressTemplateDO convert(DeliveryExpressTemplateUpdateReqVO bean);
@@ -36,32 +39,46 @@ public interface DeliveryExpressTemplateConvert {
 
     List<DeliveryExpressTemplateExcelVO> convertList02(List<DeliveryExpressTemplateDO> list);
 
-    DeliveryExpressTemplateChargeDO convertTemplateCharge(Long templateId, Integer chargeMode, ExpressTemplateChargeBaseVO vo);
-
-    DeliveryExpressTemplateChargeDO convertTemplateCharge(ExpressTemplateChargeUpdateVO vo);
-
-    DeliveryExpressTemplateFreeDO convertTemplateFree(Long templateId, ExpressTemplateFreeBaseVO vo);
+    default DeliveryExpressTemplateRespVO convert(DeliveryExpressTemplateDO bean,
+                                                  List<DeliveryExpressTemplateChargeDO> chargeList,
+                                                  List<DeliveryExpressTemplateFreeDO> freeList){
+        DeliveryExpressTemplateRespVO respVO = convert2(bean);
+        respVO.setTemplateCharge(convertTemplateChargeList(chargeList));
+        respVO.setTemplateFree(convertTemplateFreeList(freeList));
+        return respVO;
+    }
 
-    DeliveryExpressTemplateFreeDO convertTemplateFree(ExpressTemplateFreeUpdateVO vo);
+    // ========== Template Charge ==========
 
-    List<ExpressTemplateChargeBaseVO> convertTemplateChargeList(List<DeliveryExpressTemplateChargeDO> list);
+    DeliveryExpressTemplateChargeDO convertTemplateCharge(Long templateId, Integer chargeMode, ExpressTemplateChargeBaseVO vo);
 
-    List<ExpressTemplateFreeBaseVO> convertTemplateFreeList(List<DeliveryExpressTemplateFreeDO> list);
+    DeliveryExpressTemplateChargeDO convertTemplateCharge(ExpressTemplateChargeUpdateVO vo);
 
-    default List<DeliveryExpressTemplateChargeDO> convertTemplateChargeList(Long templateId, Integer chargeMode, List<ExpressTemplateChargeBaseVO> list){
+    default List<DeliveryExpressTemplateChargeDO> convertTemplateChargeList(Long templateId, Integer chargeMode, List<ExpressTemplateChargeBaseVO> list) {
+        // TODO @jason:可以使用 CollectionUtils.convertList,本质上就是 stream convert list
         if(CollUtil.isEmpty(list)){
             return Collections.emptyList();
         }
-        List<DeliveryExpressTemplateChargeDO> templateChargeList = new ArrayList<>( list.size() );
+        List<DeliveryExpressTemplateChargeDO> templateChargeList = new ArrayList<>(list.size());
         for (ExpressTemplateChargeBaseVO item : list) {
             templateChargeList.add(convertTemplateCharge(templateId, chargeMode, item));
         }
         return templateChargeList;
     }
 
+    // ========== Template Free ==========
+
+    DeliveryExpressTemplateFreeDO convertTemplateFree(Long templateId, ExpressTemplateFreeBaseVO vo);
+
+    DeliveryExpressTemplateFreeDO convertTemplateFree(ExpressTemplateFreeUpdateVO vo);
+
+    List<ExpressTemplateChargeBaseVO> convertTemplateChargeList(List<DeliveryExpressTemplateChargeDO> list);
 
+    List<ExpressTemplateFreeBaseVO> convertTemplateFreeList(List<DeliveryExpressTemplateFreeDO> list);
 
+    // TODO @jason:, List,中间一个空格哈。代码的空格和空行要注意,嘿嘿~
     default List<DeliveryExpressTemplateFreeDO> convertTemplateFreeList(Long templateId,  List<ExpressTemplateFreeBaseVO> list) {
+        // TODO @jason:可以使用 CollectionUtils.convertList,本质上就是 stream convert list
         if (CollUtil.isEmpty(list)) {
             return Collections.emptyList();
         }
@@ -72,12 +89,4 @@ public interface DeliveryExpressTemplateConvert {
         return templateFreeList;
     }
 
-    default DeliveryExpressTemplateRespVO convert(DeliveryExpressTemplateDO bean,
-                                          List<DeliveryExpressTemplateChargeDO> chargeList,
-                                          List<DeliveryExpressTemplateFreeDO> freeList){
-        DeliveryExpressTemplateRespVO respVO = convert2(bean);
-        respVO.setTemplateCharge(convertTemplateChargeList(chargeList));
-        respVO.setTemplateFree(convertTemplateFreeList(freeList));
-        return respVO;
-    }
 }

+ 2 - 2
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/delivery/DeliveryExpressTemplateMapper.java

@@ -3,11 +3,9 @@ package cn.iocoder.yudao.module.trade.dal.mysql.delivery;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressTemplateExportReqVO;
 import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.DeliveryExpressTemplatePageReqVO;
-import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
 import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -33,8 +31,10 @@ public interface DeliveryExpressTemplateMapper extends BaseMapperX<DeliveryExpre
                 .orderByAsc(DeliveryExpressTemplateDO::getSort));
     }
 
+    // TODO @jason:可以用 selectOne(DeliveryExpressTemplateDO::getName, name),常用的我封装了哈。简洁一点~
     default DeliveryExpressTemplateDO selectByName(String name) {
         return selectOne(new LambdaQueryWrapper<DeliveryExpressTemplateDO>()
                 .eq(DeliveryExpressTemplateDO::getName, name));
     }
+
 }

+ 9 - 4
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressTemplateServiceImpl.java

@@ -36,6 +36,7 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
     private DeliveryExpressTemplateChargeMapper expressTemplateChargeMapper;
     @Resource
     private DeliveryExpressTemplateFreeMapper expressTemplateFreeMapper;
+    // TODO  @jason:应该不用 BatchInsertMapper 拉,直接走 expressTemplateChargeMapper.insertBatch
     @Resource
     private DeliveryExpressTemplateChargeMapper.BatchInsertMapper  expressTemplateChargeBatchMapper;
     @Resource
@@ -44,12 +45,15 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Long createDeliveryExpressTemplate(DeliveryExpressTemplateCreateReqVO createReqVO) {
+        // TODO @jason:中英文之间,要有空格哈。例如说, // 校验模板名是否唯一
         //校验模板名是否唯一
         validateTemplateNameUnique(createReqVO.getName(), null);
+
         // 插入
         DeliveryExpressTemplateDO deliveryExpressTemplate = INSTANCE.convert(createReqVO);
         expressTemplateMapper.insert(deliveryExpressTemplate);
         //插入运费模板计费表
+        // TODO @jason:if (,中间要有空格
         if(CollUtil.isNotEmpty(createReqVO.getTemplateCharge())) {
             expressTemplateChargeBatchMapper.saveBatch(
                 INSTANCE.convertTemplateChargeList(deliveryExpressTemplate.getId(), createReqVO.getChargeMode(), createReqVO.getTemplateCharge())
@@ -121,7 +125,7 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
         //更新运费区域列表
         List<DeliveryExpressTemplateChargeDO> updateList = new ArrayList<>(newChargeList.size());
         for (ExpressTemplateChargeUpdateVO item : newChargeList) {
-            if (Objects.nonNull(item.getId())) {
+            if (Objects.nonNull(item.getId())) { // TODO @jason:null 的判断,还是用 item.getId() != null 好一点。一般数组用方法,主要考虑 null + length = 0;
                 //计费模式以主表为准
                 item.setChargeMode(updateReqVO.getChargeMode());
                 updateList.add(INSTANCE.convertTemplateCharge(item));
@@ -131,7 +135,7 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
                 addList.add(INSTANCE.convertTemplateCharge(item));
             }
         }
-        //删除的运费区域id
+        //删除的运费区域id TODO @jason:这块放到删除部分的那块逻辑会好点(149  - 152 行),主要变量要贴相应的逻辑近一点哈。
         Set<Long> deleteChargeIds = CollectionUtils.convertSet(oldChargeList, DeliveryExpressTemplateChargeDO::getId);
         deleteChargeIds.removeAll(CollectionUtils.convertSet(updateList, DeliveryExpressTemplateChargeDO::getId));
         //新增
@@ -153,6 +157,7 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
     public void deleteDeliveryExpressTemplate(Long id) {
         // 校验存在
         validateDeliveryExpressTemplateExists(id);
+
         // 删除主表
         expressTemplateMapper.deleteById(id);
         // 删除运费从表
@@ -162,9 +167,9 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
     }
 
     /**
-     * 校验运费模板名是否唯一
+     * 校验运费模板名是否唯一 // TODO @jason:方法注释,和参数,要空一行。
      * @param name 模板名称
-     * @param id 运费模板编号, 可以为null
+     * @param id 运费模板编号, 可以为null // TODO @jason:中英文之间,要空一行;其它地方也看看哈
      */
     private void validateTemplateNameUnique(String name, Long id) {
         DeliveryExpressTemplateDO template = expressTemplateMapper.selectByName(name);

+ 5 - 2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/ip/AreaController.java

@@ -15,7 +15,6 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 
@@ -35,6 +34,8 @@ public class AreaController {
         return success(AreaConvert.INSTANCE.convertList(area.getChildren()));
     }
 
+    // TODO @jason:1)url 使用中划线分隔哈,然后可以改成 children;2)id 需要添加 @RequestParam,因为可能会混淆编译;
+    // 3) swagger 注解要写下哈;
     @GetMapping("/getChildrenArea")
     @Operation(summary = "获得地区的下级区域")
     public CommonResult<List<LazyAreaNodeRespVO>> getChildrenArea(Integer id) {
@@ -43,8 +44,10 @@ public class AreaController {
         return success(AreaConvert.INSTANCE.convertList2(area.getChildren()));
     }
 
+    // TODO @jason:1)读请求,使用 get 哈。2)然后参数不应该使用 @RequestBody;3)areaIds 改成 ids 更合适;
+    // 4)方法改成 getAreaChildrenList 获得子节点们;5)url 可以已改成 children-list
     @PostMapping("/list")
-    @Operation(summary = "通过区域ids获得地区列表")
+    @Operation(summary = "通过区域 ids 获得地区列表")
     public CommonResult<List<LazyAreaNodeRespVO>> list(@RequestBody Set<Integer> areaIds) {
         List<Area> areaList = new ArrayList<>(areaIds.size());
         for (Integer areaId : areaIds) {

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/ip/vo/LazyAreaNodeRespVO.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.controller.admin.ip.vo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+// TODO @jason:1)VO 不添加注释作者哈。2)是不是改成 AreaNodeSimpleRespVO,它其实是返回一个简洁的地区,懒加载只是它的使用场景;
 /**
  * @author jason
  */
@@ -16,6 +17,8 @@ public class LazyAreaNodeRespVO {
     @Schema(description = "名字", required = true, example = "北京")
     private String name;
 
+    // TODO @jason:1)不设置默认值,交给业务逻辑那写入;2)这个字段必须返回哇?
     @Schema(description = "是否叶子节点", required = true, example = "false")
     private Boolean leaf = Boolean.FALSE;
+
 }