You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
257 lines
10 KiB
257 lines
10 KiB
package com.zh.project0512.controller;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.annotation.TableField;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper;
|
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
import com.zh.project0512.annotation.tokenValid;
|
|
import com.zh.project0512.model.*;
|
|
import com.zh.project0512.service.IReferenceBrandService;
|
|
import com.zh.project0512.service.IReferenceGroupService;
|
|
import com.zh.project0512.service.IReferenceService;
|
|
import com.zh.project0512.service.IReferenceTagService;
|
|
import com.zh.project0512.utils.FileTypeUtil;
|
|
import com.zh.project0512.utils.JwtUtil;
|
|
import com.zh.project0512.utils.MybatisPlusUtil;
|
|
import com.zh.project0512.utils.result.HttpStatusEnum;
|
|
import com.zh.project0512.utils.result.Result;
|
|
import io.jsonwebtoken.Claims;
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
import io.swagger.v3.oas.annotations.media.Schema;
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
import lombok.Data;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import javax.validation.Valid;
|
|
import javax.validation.constraints.Min;
|
|
import javax.validation.constraints.NotEmpty;
|
|
import javax.validation.constraints.NotNull;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalTime;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* <p>
|
|
* 前端控制器
|
|
* </p>
|
|
*
|
|
* @author zh
|
|
* @since 2022-05-23
|
|
*/
|
|
@RestController
|
|
@RequestMapping("/reference")
|
|
@Tag(name = "素材")
|
|
public class ReferenceController {
|
|
@Autowired
|
|
private IReferenceService referenceService;
|
|
@Autowired
|
|
private IReferenceTagService referenceTagService;
|
|
@Autowired
|
|
private IReferenceBrandService referenceBrandService;
|
|
|
|
@Operation(summary = "添加素材")
|
|
@PostMapping("/add")
|
|
public Result add(@Validated @RequestBody Reference reference) {
|
|
String fileName = reference.getFileUrl();
|
|
reference.setType(FileTypeUtil.getcontentTypeNum(fileName.substring(fileName.lastIndexOf("."))));
|
|
referenceService.save(reference.setCreatAt(LocalDateTime.now()));
|
|
referenceTagService.addGroup(reference.getTagList(), reference.getId());
|
|
referenceBrandService.addGroup(reference.getBrandList(), reference.getId());
|
|
return Result.success("添加完成!");
|
|
}
|
|
|
|
@Data
|
|
static class AddTagParam {
|
|
@NotNull(message = "id不能为空")
|
|
@Min(value = 1, message = "id最小值为1")
|
|
@Schema(title = "素材id")
|
|
private Integer id;
|
|
@NotNull(message = "tagId不能为空")
|
|
@Min(value = 1, message = "tagId最小值为1")
|
|
@Schema(title = "标签id")
|
|
private Integer tagId;
|
|
}
|
|
|
|
@Operation(summary = "素材新增标签")
|
|
@PostMapping("/addTag")
|
|
public Result addTag(@Validated @RequestBody AddTagParam param) {
|
|
if (null != referenceTagService.getMap(Wrappers.<ReferenceTag>query().lambda().eq(ReferenceTag::getReferenceId, param.getId()).eq(ReferenceTag::getTagId, param.getTagId()))) {
|
|
return Result.success("数据已存在");
|
|
}
|
|
referenceTagService.saveOrUpdate(new ReferenceTag().setReferenceId(param.getId()).setTagId(param.getTagId()));
|
|
return Result.success("添加完成");
|
|
}
|
|
|
|
@Data
|
|
static class AddBrandParam {
|
|
@NotNull(message = "id不能为空")
|
|
@Min(value = 1, message = "id最小值为1")
|
|
@Schema(title = "素材id")
|
|
private Integer id;
|
|
@NotNull(message = "brandId不能为空")
|
|
@Min(value = 1, message = "brandId最小值为1")
|
|
@Schema(title = "品牌id")
|
|
private Integer brandId;
|
|
}
|
|
|
|
@Operation(summary = "素材新增品牌")
|
|
@PostMapping("/addBrand")
|
|
public Result addBrand(@Validated @RequestBody AddBrandParam param) {
|
|
if (null != referenceBrandService.getMap(Wrappers.<ReferenceBrand>query().lambda().eq(ReferenceBrand::getReferenceId, param.getId()).eq(ReferenceBrand::getBrandId, param.getBrandId()))) {
|
|
return Result.success("数据已存在");
|
|
}
|
|
referenceBrandService.saveOrUpdate(new ReferenceBrand().setReferenceId(param.getId()).setBrandId(param.getBrandId()));
|
|
return Result.success("添加完成");
|
|
}
|
|
|
|
@Data
|
|
static class DelRParam {
|
|
@NotNull(message = "id不能为空")
|
|
@Min(value = 1, message = "id最小值为1")
|
|
@Schema(title = "素材id")
|
|
private Integer id;
|
|
}
|
|
|
|
@Operation(summary = "删除素材")
|
|
@PostMapping("/del")
|
|
public Result del(@Validated @RequestBody DelRParam param) {
|
|
return MybatisPlusUtil.sqlResult(referenceService.removeById(param.getId()), "删除");
|
|
}
|
|
|
|
@Data
|
|
static class DelTagParam {
|
|
@NotNull(message = "id不能为空")
|
|
@Min(value = 1, message = "id最小值为1")
|
|
@Schema(title = "素材id")
|
|
private Integer id;
|
|
@NotNull(message = "tagId不能为空")
|
|
@Min(value = 1, message = "tagId最小值为1")
|
|
@Schema(title = "标签id")
|
|
private Integer tagId;
|
|
}
|
|
|
|
@Operation(summary = "素材删除标签")
|
|
@PostMapping("/delTag")
|
|
public Result delTag(@Validated @RequestBody DelTagParam param) {
|
|
return MybatisPlusUtil.sqlResult(referenceTagService.remove(Wrappers.<ReferenceTag>query().lambda().eq(ReferenceTag::getReferenceId, param.getId()).eq(ReferenceTag::getTagId, param.getTagId())), "删除");
|
|
}
|
|
|
|
@Data
|
|
static class DelBrandParam {
|
|
@NotNull(message = "id不能为空")
|
|
@Min(value = 1, message = "id最小值为1")
|
|
@Schema(title = "素材id")
|
|
private Integer id;
|
|
@NotNull(message = "brandId不能为空")
|
|
@Min(value = 1, message = "brandId最小值为1")
|
|
@Schema(title = "品牌id")
|
|
private Integer brandId;
|
|
}
|
|
|
|
@Operation(summary = "素材删除品牌")
|
|
@PostMapping("/delBrand")
|
|
public Result delBrand(@Validated @RequestBody DelBrandParam param) {
|
|
return MybatisPlusUtil.sqlResult(referenceBrandService.remove(Wrappers.<ReferenceBrand>query().lambda().eq(ReferenceBrand::getReferenceId, param.getId()).eq(ReferenceBrand::getBrandId, param.getBrandId())), "删除");
|
|
}
|
|
|
|
@Data
|
|
static class UpdRParam {
|
|
@NotNull(message = "id不能为空")
|
|
@Min(value = 1, message = "id最小值为1")
|
|
@Schema(title = "素材id")
|
|
private Integer id;
|
|
@Schema(title = "名称")
|
|
private String title;
|
|
@Schema(title = "文件地址")
|
|
private String fileUrl;
|
|
@Schema(title = "封面图片地址")
|
|
private String coverUrl;
|
|
}
|
|
|
|
@Operation(summary = "更新素材")
|
|
@PostMapping("/upd")
|
|
public Result upd(@Validated @RequestBody UpdRParam param) {
|
|
int id = param.getId();
|
|
Reference reference = new Reference().setTitle(param.getTitle()).setFileUrl(param.getFileUrl()).setCoverUrl(param.getCoverUrl()).setUpdateAt(LocalDateTime.now());
|
|
if (param.getFileUrl() != null) {
|
|
String fileName = param.getFileUrl();
|
|
reference.setType(FileTypeUtil.getcontentTypeNum(fileName.substring(fileName.lastIndexOf("."))));
|
|
}
|
|
UpdateWrapper<Reference> updateWrapper = new UpdateWrapper<>();
|
|
updateWrapper.eq("id", id);
|
|
return MybatisPlusUtil.sqlResult(referenceService.update(reference, updateWrapper), "修改");
|
|
}
|
|
|
|
@Data
|
|
static class ListRParam {
|
|
private int pageNum;
|
|
private int pageSize;
|
|
@Schema(title = "素材分组id")
|
|
private Integer groupId;
|
|
@Schema(title = "月份区间")
|
|
private Integer month;
|
|
}
|
|
|
|
@Operation(summary = "素材列表")
|
|
@PostMapping("/list")
|
|
public Result list(@Validated @RequestBody ListRParam param,@RequestHeader("token") @Parameter(name = "登录token") String token) {
|
|
Claims claims = new JwtUtil().parseJWT(token);
|
|
QueryWrapper<Reference> queryWrapper = new QueryWrapper<>();
|
|
JSONObject obj = new JSONObject();
|
|
obj.put("pageNum",param.getPageNum());
|
|
obj.put("pageSize",param.getPageSize());
|
|
Integer groupId = param.groupId;
|
|
if(groupId != null){
|
|
queryWrapper.eq("groupId",groupId);
|
|
}
|
|
queryWrapper.orderByDesc("creatAt");
|
|
IPage iPage = referenceService.selectPage(MybatisPlusUtil.SetPage(obj), queryWrapper);
|
|
return Result.success(iPage);
|
|
}
|
|
|
|
@Data
|
|
static class DetPParam {
|
|
@NotNull(message = "id不能为空")
|
|
@Min(value = 1, message = "id最小值为1")
|
|
@Schema(title = "素材id")
|
|
private Integer id;
|
|
}
|
|
|
|
@Operation(summary = "详情")
|
|
@PostMapping("/detail")
|
|
public Result detail(@Validated @RequestBody DetPParam param) {
|
|
int id =param.getId();
|
|
Reference reference = referenceService.getById(id);
|
|
return reference != null ? Result.success(reference.setBrandList(referenceBrandService.selByReferenceId(id)).setTagList(referenceTagService.selByReferenceId(id))) : Result.fail(HttpStatusEnum.NOT_FOUND);
|
|
}
|
|
|
|
@Data
|
|
static class DetaPParam {
|
|
@NotNull(message = "日期不能为空")
|
|
@Schema(title = "日期")
|
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
|
|
private LocalDateTime date;
|
|
}
|
|
|
|
@Operation(summary = "按日期查询")
|
|
@PostMapping("/date")
|
|
public Result detail(@Validated @RequestBody DetaPParam param) {
|
|
LocalDateTime dayBegin = LocalDateTime.of(param.getDate().toLocalDate(), LocalTime.MIN);
|
|
LocalDateTime dayLast = LocalDateTime.of(param.getDate().toLocalDate(), LocalTime.MAX);
|
|
List<Reference> list = referenceService.lambdaQuery().between(Reference::getCreatAt, dayBegin, dayLast).list();
|
|
return Result.success(list);
|
|
}
|
|
|
|
}
|