diff --git a/server/image/20240514/031531be-6139-455b-9c6f-5b582c0ec281.jpg b/server/image/20240514/031531be-6139-455b-9c6f-5b582c0ec281.jpg new file mode 100644 index 0000000..ff96b29 Binary files /dev/null and b/server/image/20240514/031531be-6139-455b-9c6f-5b582c0ec281.jpg differ diff --git a/server/image/20240514/662343e8-338b-4ec7-9f3e-bcacbeb06cdc.jpg b/server/image/20240514/662343e8-338b-4ec7-9f3e-bcacbeb06cdc.jpg new file mode 100644 index 0000000..1c6408d Binary files /dev/null and b/server/image/20240514/662343e8-338b-4ec7-9f3e-bcacbeb06cdc.jpg differ diff --git a/server/image/20240514/a0d3c622-ad78-47b3-92ac-05853c8db76b.jpg b/server/image/20240514/a0d3c622-ad78-47b3-92ac-05853c8db76b.jpg new file mode 100644 index 0000000..bdaea0b Binary files /dev/null and b/server/image/20240514/a0d3c622-ad78-47b3-92ac-05853c8db76b.jpg differ diff --git a/server/like-admin/src/main/java/com/mdd/admin/controller/dongtai/AppTagController.java b/server/like-admin/src/main/java/com/mdd/admin/controller/dongtai/AppTagController.java new file mode 100644 index 0000000..9ea7288 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/controller/dongtai/AppTagController.java @@ -0,0 +1,69 @@ +package com.mdd.admin.controller.dongtai; + +import com.mdd.admin.aop.Log; +import com.mdd.admin.service.IAppTagService; +import com.mdd.admin.validate.commons.IdValidate; +import com.mdd.admin.validate.commons.PageValidate; +import com.mdd.admin.validate.dttag.AppTagCreateValidate; +import com.mdd.admin.validate.dttag.AppTagSearchValidate; +import com.mdd.admin.validate.dttag.AppTagUpdateValidate; +import com.mdd.admin.vo.dttag.AppTagDetailVo; +import com.mdd.admin.vo.dttag.AppTagListedVo; +import com.mdd.common.core.AjaxResult; +import com.mdd.common.core.PageResult; +import com.mdd.common.validator.annotation.IDMust; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("api/tag") +@Api(tags = "动态标签管理") +public class AppTagController { + + @Resource + IAppTagService iAppTagService; + + @GetMapping("/list") + @ApiOperation(value="动态标签列表") + public AjaxResult> list(@Validated PageValidate pageValidate, + @Validated AppTagSearchValidate searchValidate) { + PageResult list = iAppTagService.list(pageValidate, searchValidate); + return AjaxResult.success(list); + } + + @GetMapping("/detail") + @ApiOperation(value="动态标签详情") + public AjaxResult detail(@Validated @IDMust() @RequestParam("id") Integer id) { + AppTagDetailVo detail = iAppTagService.detail(id); + return AjaxResult.success(detail); + } + + @Log(title = "动态标签新增") + @PostMapping("/add") + @ApiOperation(value="动态标签新增") + public AjaxResult add(@Validated @RequestBody AppTagCreateValidate createValidate) { + iAppTagService.add(createValidate); + return AjaxResult.success(); + } + + @Log(title = "动态标签编辑") + @PostMapping("/edit") + @ApiOperation(value="动态标签编辑") + public AjaxResult edit(@Validated @RequestBody AppTagUpdateValidate updateValidate) { + iAppTagService.edit(updateValidate); + return AjaxResult.success(); + } + + @Log(title = "动态标签删除") + @PostMapping("/del") + @ApiOperation(value="动态标签删除") + public AjaxResult del(@Validated @RequestBody IdValidate idValidate) { + iAppTagService.del(idValidate.getId()); + return AjaxResult.success(); + } + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/IAppTagService.java b/server/like-admin/src/main/java/com/mdd/admin/service/IAppTagService.java new file mode 100644 index 0000000..f793134 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/service/IAppTagService.java @@ -0,0 +1,61 @@ +package com.mdd.admin.service; + +import com.mdd.admin.validate.commons.PageValidate; +import com.mdd.admin.validate.dttag.AppTagCreateValidate; +import com.mdd.admin.validate.dttag.AppTagSearchValidate; +import com.mdd.admin.validate.dttag.AppTagUpdateValidate; +import com.mdd.admin.vo.dttag.AppTagDetailVo; +import com.mdd.admin.vo.dttag.AppTagListedVo; +import com.mdd.common.core.PageResult; + + +/** + * 动态标签服务接口类 + * @author LikeAdmin + */ +public interface IAppTagService { + + /** + * 动态标签列表 + * + * @author LikeAdmin + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + */ + PageResult list(PageValidate pageValidate, AppTagSearchValidate searchValidate); + + /** + * 动态标签详情 + * + * @author LikeAdmin + * @param id 主键ID + * @return AppTagDetailVo + */ + AppTagDetailVo detail(Integer id); + + /** + * 动态标签新增 + * + * @author LikeAdmin + * @param createValidate 参数 + */ + void add(AppTagCreateValidate createValidate); + + /** + * 动态标签编辑 + * + * @author LikeAdmin + * @param updateValidate 参数 + */ + void edit(AppTagUpdateValidate updateValidate); + + /** + * 动态标签删除 + * + * @author LikeAdmin + * @param id 主键ID + */ + void del(Integer id); + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/service/impl/AppTagServiceImpl.java b/server/like-admin/src/main/java/com/mdd/admin/service/impl/AppTagServiceImpl.java new file mode 100644 index 0000000..c0f561c --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/service/impl/AppTagServiceImpl.java @@ -0,0 +1,155 @@ +package com.mdd.admin.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.yulichang.query.MPJQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mdd.admin.validate.commons.PageValidate; +import com.mdd.admin.service.IAppTagService; + +import com.mdd.admin.validate.dttag.AppTagCreateValidate; +import com.mdd.admin.validate.dttag.AppTagSearchValidate; +import com.mdd.admin.validate.dttag.AppTagUpdateValidate; +import com.mdd.admin.vo.dttag.AppTagDetailVo; +import com.mdd.admin.vo.dttag.AppTagListedVo; +import com.mdd.common.config.GlobalConfig; +import com.mdd.common.core.PageResult; + +import com.mdd.common.entity.dttag.AppTag; +import com.mdd.common.mapper.dttag.AppTagMapper; +import com.mdd.common.util.ListUtils; +import com.mdd.common.util.TimeUtils; +import com.mdd.common.util.UrlUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.*; + +/** + * 动态标签实现类 + * @author LikeAdmin + */ +@Service +public class AppTagServiceImpl implements IAppTagService { + + @Resource + AppTagMapper appTagMapper; + + /** + * 动态标签列表 + * + * @author LikeAdmin + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + */ + @Override + public PageResult list(PageValidate pageValidate, AppTagSearchValidate searchValidate) { + Integer page = pageValidate.getPageNo(); + Integer limit = pageValidate.getPageSize(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByDesc("id"); + + appTagMapper.setSearch(queryWrapper, searchValidate, new String[]{ + "like:name:str", + "=:parentId@parent_id:int", + "=:type:int", + }); + + IPage iPage = appTagMapper.selectPage(new Page<>(page, limit), queryWrapper); + + List list = new LinkedList<>(); + for(AppTag item : iPage.getRecords()) { + AppTagListedVo vo = new AppTagListedVo(); + BeanUtils.copyProperties(item, vo); + vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime())); + vo.setUpdateTime(TimeUtils.timestampToDate(item.getUpdateTime())); + list.add(vo); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + } + + /** + * 动态标签详情 + * + * @author LikeAdmin + * @param id 主键参数 + * @return AppTag + */ + @Override + public AppTagDetailVo detail(Integer id) { + AppTag model = appTagMapper.selectOne( + new QueryWrapper() + .eq("id", id) + .last("limit 1")); + + Assert.notNull(model, "数据不存在"); + + AppTagDetailVo vo = new AppTagDetailVo(); + BeanUtils.copyProperties(model, vo); + return vo; + } + + /** + * 动态标签新增 + * + * @author LikeAdmin + * @param createValidate 参数 + */ + @Override + public void add(AppTagCreateValidate createValidate) { + AppTag model = new AppTag(); + model.setCreateTime(System.currentTimeMillis() / 1000); + model.setUpdateTime(System.currentTimeMillis() / 1000); + model.setName(createValidate.getName()); + model.setParentId(createValidate.getParentId()); + model.setType(createValidate.getType()); + appTagMapper.insert(model); + } + + /** + * 动态标签编辑 + * + * @author LikeAdmin + * @param updateValidate 参数 + */ + @Override + public void edit(AppTagUpdateValidate updateValidate) { + AppTag model = appTagMapper.selectOne( + new QueryWrapper() + .eq("id", updateValidate.getId()) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + model.setId(updateValidate.getId()); + model.setUpdateTime(System.currentTimeMillis() / 1000); + model.setName(updateValidate.getName()); + model.setParentId(updateValidate.getParentId()); + model.setType(updateValidate.getType()); + appTagMapper.updateById(model); + } + + /** + * 动态标签删除 + * + * @author LikeAdmin + * @param id 主键ID + */ + @Override + public void del(Integer id) { + AppTag model = appTagMapper.selectOne( + new QueryWrapper() + .eq("id", id) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + appTagMapper.delete(new QueryWrapper().eq("id", id)); + } + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/validate/dttag/AppTagCreateValidate.java b/server/like-admin/src/main/java/com/mdd/admin/validate/dttag/AppTagCreateValidate.java new file mode 100644 index 0000000..08fdd10 --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/validate/dttag/AppTagCreateValidate.java @@ -0,0 +1,27 @@ +package com.mdd.admin.validate.dttag; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; +import javax.validation.constraints.*; + +@Data +@ApiModel("动态标签创建参数") +public class AppTagCreateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "name参数缺失") + @ApiModelProperty(value = "标签名称") + private String name; + + @NotNull(message = "parentId参数缺失") + @ApiModelProperty(value = "父级id,顶级为0") + private Integer parentId; + + @NotNull(message = "type参数缺失") + @ApiModelProperty(value = "标签类型,1分类,2标签") + private Integer type; + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/validate/dttag/AppTagSearchValidate.java b/server/like-admin/src/main/java/com/mdd/admin/validate/dttag/AppTagSearchValidate.java new file mode 100644 index 0000000..c4d861e --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/validate/dttag/AppTagSearchValidate.java @@ -0,0 +1,23 @@ +package com.mdd.admin.validate.dttag; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; + +@Data +@ApiModel("动态标签搜素参数") +public class AppTagSearchValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "标签名称") + private String name; + + @ApiModelProperty(value = "父级id,顶级为0") + private Integer parentId; + + @ApiModelProperty(value = "标签类型,1分类,2标签") + private Integer type; + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/validate/dttag/AppTagUpdateValidate.java b/server/like-admin/src/main/java/com/mdd/admin/validate/dttag/AppTagUpdateValidate.java new file mode 100644 index 0000000..1db6a7a --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/validate/dttag/AppTagUpdateValidate.java @@ -0,0 +1,36 @@ +package com.mdd.admin.validate.dttag; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.io.Serializable; +import javax.validation.constraints.*; +import com.mdd.common.validator.annotation.IDMust; + +/** + * 动态标签参数 + * @author LikeAdmin + */ +@Data +@ApiModel("动态标签更新参数") +public class AppTagUpdateValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @IDMust(message = "id参数必传且需大于0") + @ApiModelProperty(value = "主键") + private Integer id; + + @NotNull(message = "name参数缺失") + @ApiModelProperty(value = "标签名称") + private String name; + + @NotNull(message = "parentId参数缺失") + @ApiModelProperty(value = "父级id,顶级为0") + private Integer parentId; + + @NotNull(message = "type参数缺失") + @ApiModelProperty(value = "标签类型,1分类,2标签") + private Integer type; + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/vo/dttag/AppTagDetailVo.java b/server/like-admin/src/main/java/com/mdd/admin/vo/dttag/AppTagDetailVo.java new file mode 100644 index 0000000..fefe01e --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/vo/dttag/AppTagDetailVo.java @@ -0,0 +1,28 @@ +package com.mdd.admin.vo.dttag; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("动态标签详情Vo") +public class AppTagDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "标签名称") + private String name; + + @ApiModelProperty(value = "父级id,顶级为0") + private Integer parentId; + + @ApiModelProperty(value = "标签类型,1分类,2标签") + private Integer type; + + +} diff --git a/server/like-admin/src/main/java/com/mdd/admin/vo/dttag/AppTagListedVo.java b/server/like-admin/src/main/java/com/mdd/admin/vo/dttag/AppTagListedVo.java new file mode 100644 index 0000000..3b3723b --- /dev/null +++ b/server/like-admin/src/main/java/com/mdd/admin/vo/dttag/AppTagListedVo.java @@ -0,0 +1,34 @@ +package com.mdd.admin.vo.dttag; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("动态标签列表Vo") +public class AppTagListedVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "创建时间") + private String createTime; + + @ApiModelProperty(value = "更新时间") + private String updateTime; + + @ApiModelProperty(value = "标签名称") + private String name; + + @ApiModelProperty(value = "父级id,顶级为0") + private Integer parentId; + + @ApiModelProperty(value = "标签类型,1分类,2标签") + private Integer type; + + +} diff --git a/server/like-common/src/main/java/com/mdd/common/entity/dttag/AppTag.java b/server/like-common/src/main/java/com/mdd/common/entity/dttag/AppTag.java new file mode 100644 index 0000000..cc31086 --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/entity/dttag/AppTag.java @@ -0,0 +1,39 @@ +package com.mdd.common.entity.dttag; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("动态标签实体") +public class AppTag implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + @ApiModelProperty(value = "主键") + private Integer id; + + @ApiModelProperty(value = "创建时间") + private Long createTime; + + @ApiModelProperty(value = "更新时间") + private Long updateTime; + + @ApiModelProperty(value = "删除时间") + private Long deleteTime; + + @ApiModelProperty(value = "标签名称") + private String name; + + @ApiModelProperty(value = "父级id,顶级为0") + private Integer parentId; + + @ApiModelProperty(value = "标签类型,1分类,2标签") + private Integer type; + +} \ No newline at end of file diff --git a/server/like-common/src/main/java/com/mdd/common/mapper/dttag/AppTagMapper.java b/server/like-common/src/main/java/com/mdd/common/mapper/dttag/AppTagMapper.java new file mode 100644 index 0000000..2c5f40e --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/mapper/dttag/AppTagMapper.java @@ -0,0 +1,13 @@ +package com.mdd.common.mapper.dttag; + +import com.mdd.common.core.basics.IBaseMapper; +import com.mdd.common.entity.dttag.AppTag; +import org.apache.ibatis.annotations.Mapper; + +/** + * 动态标签Mapper + * @author LikeAdmin + */ +@Mapper +public interface AppTagMapper extends IBaseMapper { +} diff --git a/server/like-common/src/main/java/com/mdd/common/plugin/storage/engine/AliyunStorage.java b/server/like-common/src/main/java/com/mdd/common/plugin/storage/engine/AliyunStorage.java index 050cded..b31c3a5 100644 --- a/server/like-common/src/main/java/com/mdd/common/plugin/storage/engine/AliyunStorage.java +++ b/server/like-common/src/main/java/com/mdd/common/plugin/storage/engine/AliyunStorage.java @@ -34,9 +34,9 @@ public class AliyunStorage { * @return String */ public OSS ossClient() { - String endpoint = "https://oss-cn-shenzhen.aliyuncs.com"; - String accessKeyId = this.config.get("accessKey"); - String accessKeySecret = this.config.get("secretKey"); + String endpoint = "https://oss-cn-shanghai.aliyuncs.com"; + String accessKeyId = this.config.get("LTAI5tM1LeE2pkiS3qEFQkfb"); + String accessKeySecret = this.config.get("fEZZyFvWkETS8Clm73f7qmY9ohcTpc"); return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); }