jinshihui 1 неделя назад
Родитель
Сommit
3462df9f08

+ 19 - 0
nightFragrance-admin/src/main/java/com/ylx/web/controller/project/ProjectController.java

@@ -28,6 +28,13 @@ public class ProjectController {
     @Resource
     @Resource
     private ProjectService projectService;
     private ProjectService projectService;
 
 
+    /**
+     * 根据查询条件分页获取项目列表。
+     *
+     * @param page 分页参数
+     * @param dto  项目查询条件
+     * @return 项目分页数据
+     */
     @PreAuthorize("@ss.hasPermi('project:list')")
     @PreAuthorize("@ss.hasPermi('project:list')")
     @ApiOperation("根据条件分页查询项目")
     @ApiOperation("根据条件分页查询项目")
     @GetMapping("/page")
     @GetMapping("/page")
@@ -36,6 +43,12 @@ public class ProjectController {
         return R.ok(pageData);
         return R.ok(pageData);
     }
     }
 
 
+    /**
+     * 编辑项目信息。
+     *
+     * @param dto 项目编辑参数
+     * @return 操作结果
+     */
     @PreAuthorize("@ss.hasPermi('project:edit')")
     @PreAuthorize("@ss.hasPermi('project:edit')")
     @ApiOperation("编辑项目")
     @ApiOperation("编辑项目")
     @Log(title = "编辑项目", businessType = BusinessType.UPDATE)
     @Log(title = "编辑项目", businessType = BusinessType.UPDATE)
@@ -45,6 +58,12 @@ public class ProjectController {
         return R.ok();
         return R.ok();
     }
     }
 
 
+    /**
+     * 新增项目信息。
+     *
+     * @param dto 项目新增参数
+     * @return 操作结果
+     */
     @PreAuthorize("@ss.hasPermi('project:add')")
     @PreAuthorize("@ss.hasPermi('project:add')")
     @ApiOperation("新增项目")
     @ApiOperation("新增项目")
     @Log(title = "新增项目", businessType = BusinessType.INSERT)
     @Log(title = "新增项目", businessType = BusinessType.INSERT)

+ 2 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/ProductSelectionServiceImpl.java

@@ -87,7 +87,7 @@ public class ProductSelectionServiceImpl implements ProductSelectionService {
         LambdaQueryWrapper<Project> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<Project> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Project::getIsDelete, 0);
         wrapper.eq(Project::getIsDelete, 0);
         if (StrUtil.isNotEmpty(dto.getTitle())) {
         if (StrUtil.isNotEmpty(dto.getTitle())) {
-            wrapper.like(Project::getCTitle, dto.getTitle());
+            wrapper.like(Project::getTitle, dto.getTitle());
         }
         }
         // 执行分页查询
         // 执行分页查询
         Page<Project> xiangmuPage = this.projectService.page(page, wrapper);
         Page<Project> xiangmuPage = this.projectService.page(page, wrapper);
@@ -96,7 +96,7 @@ public class ProductSelectionServiceImpl implements ProductSelectionService {
         return convertToVOPage(xiangmuPage, x -> {
         return convertToVOPage(xiangmuPage, x -> {
             ProductOptionVO vo = new ProductOptionVO();
             ProductOptionVO vo = new ProductOptionVO();
             vo.setId(x.getId().toString()); // String 直接赋值
             vo.setId(x.getId().toString()); // String 直接赋值
-            vo.setTitle(x.getCTitle());
+            vo.setTitle(x.getTitle());
             vo.setProductType(0); // 设置商品类型
             vo.setProductType(0); // 设置商品类型
             return vo;
             return vo;
         });
         });

+ 63 - 6
nightFragrance-massage/src/main/java/com/ylx/project/domain/Project.java

@@ -10,65 +10,122 @@ import java.math.BigDecimal;
 @EqualsAndHashCode(callSuper = true)
 @EqualsAndHashCode(callSuper = true)
 @Data
 @Data
 public class Project extends BaseEntity {
 public class Project extends BaseEntity {
+    /**
+     * 序列化版本号。
+     */
     private static final long serialVersionUID = -7825952120084009270L;
     private static final long serialVersionUID = -7825952120084009270L;
 
 
+    /**
+     * 主键ID。
+     */
     @ApiModelProperty("id")
     @ApiModelProperty("id")
     private Long id;
     private Long id;
 
 
+    /**
+     * 标题。
+     */
     @ApiModelProperty("标题")
     @ApiModelProperty("标题")
-    private String cTitle;
+    private String title;
 
 
+    /**
+     * 项目分类。
+     */
     @ApiModelProperty("项目分类")
     @ApiModelProperty("项目分类")
     private Integer type;
     private Integer type;
 
 
+    /**
+     * 封面图。
+     */
     @ApiModelProperty("封面图")
     @ApiModelProperty("封面图")
-    private String cCover;
-
-    @ApiModelProperty("原价")
-    private BigDecimal dYuanPrice;
+    private String cover;
 
 
+    /**
+     * 标注价格(现价)。
+     */
     @ApiModelProperty("标注价格(现价)")
     @ApiModelProperty("标注价格(现价)")
-    private BigDecimal dPrice;
+    private BigDecimal price;
 
 
+    /**
+     * 市场参考价起始值。
+     */
     @ApiModelProperty("市场参考价(起)")
     @ApiModelProperty("市场参考价(起)")
     private BigDecimal priceMin;
     private BigDecimal priceMin;
 
 
+    /**
+     * 市场参考价结束值。
+     */
     @ApiModelProperty("市场参考价(止)")
     @ApiModelProperty("市场参考价(止)")
     private BigDecimal priceMax;
     private BigDecimal priceMax;
 
 
+    /**
+     * 商户分佣比例。
+     */
     @ApiModelProperty("商户分佣比例")
     @ApiModelProperty("商户分佣比例")
     private BigDecimal merchantShareRatio;
     private BigDecimal merchantShareRatio;
 
 
+    /**
+     * 标准时长。
+     */
     @ApiModelProperty("标时")
     @ApiModelProperty("标时")
     private Integer standardDuration;
     private Integer standardDuration;
 
 
+    /**
+     * 计量单位,来源于字典数据。
+     */
     @ApiModelProperty("计量单位(字典数据)")
     @ApiModelProperty("计量单位(字典数据)")
     private Integer unitType;
     private Integer unitType;
 
 
+    /**
+     * 状态:0=上架,1=下架。
+     */
     @ApiModelProperty("状态: 0=上架, 1=下架")
     @ApiModelProperty("状态: 0=上架, 1=下架")
     private Integer status;
     private Integer status;
 
 
+    /**
+     * 是否推荐:0=否,1=是。
+     */
     @ApiModelProperty("是否推荐:0=否,1=是")
     @ApiModelProperty("是否推荐:0=否,1=是")
     private Integer isRecommended;
     private Integer isRecommended;
 
 
+    /**
+     * 价格是否自定义:0=否,1=是。
+     */
     @ApiModelProperty("价格是否自定义:0=否,1=是")
     @ApiModelProperty("价格是否自定义:0=否,1=是")
     private Integer isPriceCustom;
     private Integer isPriceCustom;
 
 
+    /**
+     * 标时是否自定义:0=否,1=是。
+     */
     @ApiModelProperty("标时是否自定义:0=否,1=是")
     @ApiModelProperty("标时是否自定义:0=否,1=是")
     private Integer isTimeCustom;
     private Integer isTimeCustom;
 
 
+    /**
+     * 项目亮点,关联亮点字典表的ID集合。
+     */
     @ApiModelProperty("项目亮点:关联亮点字典表的ID集合")
     @ApiModelProperty("项目亮点:关联亮点字典表的ID集合")
     private String highlightIds;
     private String highlightIds;
 
 
+    /**
+     * 适用人群。
+     */
     @ApiModelProperty("适用人群")
     @ApiModelProperty("适用人群")
     private String targetAudience;
     private String targetAudience;
 
 
+    /**
+     * 前端展示排序。
+     */
     @ApiModelProperty("前端展示排序")
     @ApiModelProperty("前端展示排序")
     private Long sortOrder;
     private Long sortOrder;
 
 
+    /**
+     * 是否删除:0=否,1=是。
+     */
     @ApiModelProperty("是否删除0否1是")
     @ApiModelProperty("是否删除0否1是")
     private Integer isDelete;
     private Integer isDelete;
 
 
+    /**
+     * 项目详情,富文本内容。
+     */
     @ApiModelProperty("项目详情 富文本")
     @ApiModelProperty("项目详情 富文本")
     private String detail;
     private String detail;
 
 

+ 24 - 143
nightFragrance-massage/src/main/java/com/ylx/project/domain/dto/ProjectAddDTO.java

@@ -2,198 +2,79 @@ package com.ylx.project.domain.dto;
 
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 
 
 @ApiModel("项目新增DTO")
 @ApiModel("项目新增DTO")
+@Data
 public class ProjectAddDTO implements Serializable {
 public class ProjectAddDTO implements Serializable {
+
     private static final long serialVersionUID = 862152570131989654L;
     private static final long serialVersionUID = 862152570131989654L;
 
 
     @ApiModelProperty("标题")
     @ApiModelProperty("标题")
-    private String cTitle;
+    @NotBlank(message = "项目标题不能为空")
+    private String title;
 
 
     @ApiModelProperty("项目分类")
     @ApiModelProperty("项目分类")
+    @NotNull(message = "服务类目ID不能为空")
     private Integer type;
     private Integer type;
 
 
     @ApiModelProperty("封面图")
     @ApiModelProperty("封面图")
-    private String cCover;
-
-    @ApiModelProperty("原价")
-    private BigDecimal dYuanPrice;
+    @NotBlank(message = "项目封面图不能为空")
+    private String cover;
 
 
-    @ApiModelProperty("标注价格(现价)")
-    private BigDecimal dPrice;
+    @ApiModelProperty("标注价格")
+    @NotNull(message = "标注价格不能为空")
+    private BigDecimal price;
 
 
     @ApiModelProperty("标注价格(现价)")
     @ApiModelProperty("标注价格(现价)")
+    @NotNull(message = "市场参考价起始值不能为空")
     private BigDecimal priceMin;
     private BigDecimal priceMin;
 
 
     @ApiModelProperty("标注价格(现价)")
     @ApiModelProperty("标注价格(现价)")
+    @NotNull(message = "市场参考价结束值不能为空")
     private BigDecimal priceMax;
     private BigDecimal priceMax;
 
 
     @ApiModelProperty("商户分佣比例")
     @ApiModelProperty("商户分佣比例")
+    @NotNull(message = "商户分佣比例不能为空")
     private BigDecimal merchantShareRatio;
     private BigDecimal merchantShareRatio;
 
 
     @ApiModelProperty("标时")
     @ApiModelProperty("标时")
+    @NotNull(message = "标准服务时长不能为空")
     private Integer standardDuration;
     private Integer standardDuration;
 
 
     @ApiModelProperty("计量单位(字典数据)")
     @ApiModelProperty("计量单位(字典数据)")
+    @NotNull(message = "计量单位不能为空")
     private Integer unitType;
     private Integer unitType;
 
 
     @ApiModelProperty("状态: 0=上架, 1=下架")
     @ApiModelProperty("状态: 0=上架, 1=下架")
+    @NotNull(message = "状态不能为空")
     private Integer status;
     private Integer status;
 
 
     @ApiModelProperty("是否推荐:0=否,1=是")
     @ApiModelProperty("是否推荐:0=否,1=是")
+    @NotNull(message = "是否推荐不能为空")
     private Integer isRecommended;
     private Integer isRecommended;
 
 
     @ApiModelProperty("价格是否自定义:0=否,1=是")
     @ApiModelProperty("价格是否自定义:0=否,1=是")
+    @NotNull(message = "价格是否自定义不能为空")
     private Integer isPriceCustom;
     private Integer isPriceCustom;
 
 
     @ApiModelProperty("标时是否自定义:0=否,1=是")
     @ApiModelProperty("标时是否自定义:0=否,1=是")
+    @NotNull(message = "标时是否自定义不能为空")
     private Integer isTimeCustom;
     private Integer isTimeCustom;
 
 
     @ApiModelProperty("项目亮点:关联亮点字典表的ID集合")
     @ApiModelProperty("项目亮点:关联亮点字典表的ID集合")
+    @NotBlank(message = "项目亮点ID集合不能为空")
     private String highlightIds;
     private String highlightIds;
 
 
     @ApiModelProperty("适用人群")
     @ApiModelProperty("适用人群")
+    @NotBlank(message = "适用人群不能为空")
     private String targetAudience;
     private String targetAudience;
 
 
     @ApiModelProperty("项目详情 富文本")
     @ApiModelProperty("项目详情 富文本")
     private String detail;
     private String detail;
-
-    public String getDetail() {
-        return detail;
-    }
-
-    public void setDetail(String detail) {
-        this.detail = detail;
-    }
-
-    public String getcTitle() {
-        return cTitle;
-    }
-
-    public void setcTitle(String cTitle) {
-        this.cTitle = cTitle;
-    }
-
-    public Integer getType() {
-        return type;
-    }
-
-    public void setType(Integer type) {
-        this.type = type;
-    }
-
-    public String getcCover() {
-        return cCover;
-    }
-
-    public void setcCover(String cCover) {
-        this.cCover = cCover;
-    }
-
-    public BigDecimal getdYuanPrice() {
-        return dYuanPrice;
-    }
-
-    public void setdYuanPrice(BigDecimal dYuanPrice) {
-        this.dYuanPrice = dYuanPrice;
-    }
-
-    public BigDecimal getdPrice() {
-        return dPrice;
-    }
-
-    public void setdPrice(BigDecimal dPrice) {
-        this.dPrice = dPrice;
-    }
-
-    public BigDecimal getPriceMin() {
-        return priceMin;
-    }
-
-    public void setPriceMin(BigDecimal priceMin) {
-        this.priceMin = priceMin;
-    }
-
-    public BigDecimal getPriceMax() {
-        return priceMax;
-    }
-
-    public void setPriceMax(BigDecimal priceMax) {
-        this.priceMax = priceMax;
-    }
-
-    public BigDecimal getMerchantShareRatio() {
-        return merchantShareRatio;
-    }
-
-    public void setMerchantShareRatio(BigDecimal merchantShareRatio) {
-        this.merchantShareRatio = merchantShareRatio;
-    }
-
-    public Integer getStandardDuration() {
-        return standardDuration;
-    }
-
-    public void setStandardDuration(Integer standardDuration) {
-        this.standardDuration = standardDuration;
-    }
-
-    public Integer getUnitType() {
-        return unitType;
-    }
-
-    public void setUnitType(Integer unitType) {
-        this.unitType = unitType;
-    }
-
-    public Integer getStatus() {
-        return status;
-    }
-
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
-
-    public Integer getIsRecommended() {
-        return isRecommended;
-    }
-
-    public void setIsRecommended(Integer isRecommended) {
-        this.isRecommended = isRecommended;
-    }
-
-    public Integer getIsPriceCustom() {
-        return isPriceCustom;
-    }
-
-    public void setIsPriceCustom(Integer isPriceCustom) {
-        this.isPriceCustom = isPriceCustom;
-    }
-
-    public Integer getIsTimeCustom() {
-        return isTimeCustom;
-    }
-
-    public void setIsTimeCustom(Integer isTimeCustom) {
-        this.isTimeCustom = isTimeCustom;
-    }
-
-    public String getHighlightIds() {
-        return highlightIds;
-    }
-
-    public void setHighlightIds(String highlightIds) {
-        this.highlightIds = highlightIds;
-    }
-
-    public String getTargetAudience() {
-        return targetAudience;
-    }
-
-    public void setTargetAudience(String targetAudience) {
-        this.targetAudience = targetAudience;
-    }
 }
 }

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/project/domain/dto/ProjectSearchDTO.java

@@ -12,7 +12,7 @@ public class ProjectSearchDTO implements Serializable {
     private static final long serialVersionUID = -5571734478026852868L;
     private static final long serialVersionUID = -5571734478026852868L;
 
 
     @ApiModelProperty("服务名称")
     @ApiModelProperty("服务名称")
-    private String cTitle;
+    private String title;
 
 
     @ApiModelProperty("状态: 0=上架, 1=下架")
     @ApiModelProperty("状态: 0=上架, 1=下架")
     private Integer status;
     private Integer status;

+ 2 - 3
nightFragrance-massage/src/main/java/com/ylx/project/service/impl/ProjectServiceImpl.java

@@ -39,8 +39,8 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     public Page<ProjectPageVo> list(Page<Project> page, ProjectSearchDTO dto) {
     public Page<ProjectPageVo> list(Page<Project> page, ProjectSearchDTO dto) {
 
 
         LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<Project> queryWrapper = new LambdaQueryWrapper<>();
-        if (ObjectUtil.isNotNull(dto.getCTitle())) {
-            queryWrapper.like(Project::getCTitle, dto.getCTitle());
+        if (ObjectUtil.isNotNull(dto.getTitle())) {
+            queryWrapper.like(Project::getTitle, dto.getTitle());
         }
         }
         if (ObjectUtil.isNotEmpty(dto.getStatus())) {
         if (ObjectUtil.isNotEmpty(dto.getStatus())) {
             queryWrapper.eq(Project::getStatus, dto.getStatus());
             queryWrapper.eq(Project::getStatus, dto.getStatus());
@@ -98,7 +98,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         if (!saveResult) {
         if (!saveResult) {
             throw new ServiceException("添加项目失败");
             throw new ServiceException("添加项目失败");
         }
         }
-
     }
     }
 
 
     @Override
     @Override

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/servicecategory/controller/ServiceCategoryController.java

@@ -93,7 +93,7 @@ public class ServiceCategoryController {
      * 新增服务类目
      * 新增服务类目
      *
      *
      * @param serviceCategory 服务类目
      * @param serviceCategory 服务类目
-     * @return 新增后的服务类目ID
+     * @return R<Long> 新增后的服务类目ID
      */
      */
     @PostMapping("add")
     @PostMapping("add")
     @ApiOperation("新增服务类目")
     @ApiOperation("新增服务类目")

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/servicecategory/domain/ServiceCategory.java

@@ -64,7 +64,7 @@ public class ServiceCategory {
     private LocalDateTime updateTime;
     private LocalDateTime updateTime;
 
 
     /**
     /**
-     * 是否删除
+     * 是否删除 0-否 1-是
      */
      */
     @TableField("is_deleted")
     @TableField("is_deleted")
     @TableLogic
     @TableLogic

+ 19 - 3
nightFragrance-massage/src/main/java/com/ylx/servicecategory/service/impl/ServiceCategoryServiceImpl.java

@@ -56,7 +56,7 @@ public class ServiceCategoryServiceImpl extends ServiceImpl<ServiceCategoryMappe
      *
      *
      * @param page            分页参数
      * @param page            分页参数
      * @param serviceCategory 查询条件
      * @param serviceCategory 查询条件
-     * @return 服务类目分页数据
+     * @return Page<ServiceCategory> 服务类目分页数据
      */
      */
     @Override
     @Override
     public Page<ServiceCategory> pageServiceCategory(Page<ServiceCategory> page, ServiceCategory serviceCategory) {
     public Page<ServiceCategory> pageServiceCategory(Page<ServiceCategory> page, ServiceCategory serviceCategory) {
@@ -69,7 +69,6 @@ public class ServiceCategoryServiceImpl extends ServiceImpl<ServiceCategoryMappe
                     .eq(serviceCategory.getIsOnline() != null, ServiceCategory::getIsOnline, serviceCategory.getIsOnline());
                     .eq(serviceCategory.getIsOnline() != null, ServiceCategory::getIsOnline, serviceCategory.getIsOnline());
         }
         }
         queryWrapper.orderByAsc(ServiceCategory::getSort).orderByAsc(ServiceCategory::getId);
         queryWrapper.orderByAsc(ServiceCategory::getSort).orderByAsc(ServiceCategory::getId);
-
         return this.baseMapper.selectServiceCategoryPage(pageParam, queryWrapper);
         return this.baseMapper.selectServiceCategoryPage(pageParam, queryWrapper);
     }
     }
 
 
@@ -77,11 +76,18 @@ public class ServiceCategoryServiceImpl extends ServiceImpl<ServiceCategoryMappe
      * 新增服务类目
      * 新增服务类目
      *
      *
      * @param serviceCategory 服务类目
      * @param serviceCategory 服务类目
-     * @return 新增后的服务类目ID
+     * @return Long 新增后的服务类目ID
      */
      */
     @Override
     @Override
     public Long addServiceCategory(ServiceCategory serviceCategory) {
     public Long addServiceCategory(ServiceCategory serviceCategory) {
         checkAddParam(serviceCategory);
         checkAddParam(serviceCategory);
+        //检查服务类目名称是否重复
+        LambdaQueryWrapper<ServiceCategory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ServiceCategory::getName, serviceCategory.getName());
+        ServiceCategory dbServiceCategory = this.baseMapper.selectOne(queryWrapper);
+        if (dbServiceCategory != null) {
+            throw new ServiceException("服务类目名称已存在");
+        }
 
 
         LocalDateTime now = LocalDateTime.now();
         LocalDateTime now = LocalDateTime.now();
         serviceCategory.setId(null);
         serviceCategory.setId(null);
@@ -158,6 +164,11 @@ public class ServiceCategoryServiceImpl extends ServiceImpl<ServiceCategoryMappe
         }
         }
     }
     }
 
 
+    /**
+     * 校验服务类目参数是否为空
+     *
+     * @param serviceCategory 服务类目
+     */
     private void checkRequiredParam(ServiceCategory serviceCategory) {
     private void checkRequiredParam(ServiceCategory serviceCategory) {
         if (serviceCategory == null) {
         if (serviceCategory == null) {
             throw new ServiceException("服务类目不能为空");
             throw new ServiceException("服务类目不能为空");
@@ -165,6 +176,10 @@ public class ServiceCategoryServiceImpl extends ServiceImpl<ServiceCategoryMappe
         if (StringUtils.isBlank(serviceCategory.getName())) {
         if (StringUtils.isBlank(serviceCategory.getName())) {
             throw new ServiceException("服务名称不能为空");
             throw new ServiceException("服务名称不能为空");
         }
         }
+        //图表URL不能为空
+        if (StringUtils.isBlank(serviceCategory.getIcon())) {
+            throw new ServiceException("图标不能为空");
+        }
         if (serviceCategory.getSort() == null) {
         if (serviceCategory.getSort() == null) {
             throw new ServiceException("序号不能为空");
             throw new ServiceException("序号不能为空");
         }
         }
@@ -173,6 +188,7 @@ public class ServiceCategoryServiceImpl extends ServiceImpl<ServiceCategoryMappe
         }
         }
 
 
         serviceCategory.setName(serviceCategory.getName().trim());
         serviceCategory.setName(serviceCategory.getName().trim());
+        serviceCategory.setIcon(serviceCategory.getIcon().trim());
         serviceCategory.setIsHomeDisplay(normalizeSwitchValue(serviceCategory.getIsHomeDisplay(), "首页展示"));
         serviceCategory.setIsHomeDisplay(normalizeSwitchValue(serviceCategory.getIsHomeDisplay(), "首页展示"));
         serviceCategory.setIsOnline(normalizeSwitchValue(serviceCategory.getIsOnline(), "上架"));
         serviceCategory.setIsOnline(normalizeSwitchValue(serviceCategory.getIsOnline(), "上架"));
     }
     }