Merge remote-tracking branch 'origin/release-2024-04-25' into release-2024-04-25

release-2024-08-08
huangyw 4 months ago
commit 976fa47769

@ -0,0 +1,86 @@
package com.luoo.music.controller;
import annotation.GlobalInterceptor;
import api.PageResult;
import api.Result;
import com.luoo.music.pojo.Essay;
import com.luoo.music.service.EssayService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
/**
* Controller
* author: wangqing
*/
@RestController
@CrossOrigin
@Api(tags = "雀乐专栏文章后台管理")
@RequestMapping("/cms/essay")
public class CMSEssayController {
@Autowired
private EssayService essayService;
@ApiOperation(value = "1.获取专栏文章列表",notes = "获取专栏文章列表,category=0代表全部文章, 1代表荐碟,2代表专访,3代表言之,4代表她说")
@GetMapping("/search/{category}/{page}/{size}")
public Result search(@ApiParam(value = "分类,category=0代表全部文章, 1代表荐碟,2代表专访,3代表言之,4代表她说", required = true) @PathVariable Integer category, @PathVariable int page, @PathVariable int size){
Page<Essay> pageData = null;
if(category == 0 || category == null){
pageData = essayService.search(page, size);
}else{
pageData = essayService.getByCategory(category, page, size);
}
return Result.success(new PageResult<Essay>(pageData.getTotalElements(),pageData.getContent()));
}
@ApiOperation("添加专栏文章")
@GlobalInterceptor(checkAdminLogin = true)
@PostMapping
@ApiImplicitParams({
@ApiImplicitParam(name = "essay", value = "专栏文章对象", required = true, dataType = "Essay", paramType = "body"),
@ApiImplicitParam(name = "Authorization", value = "authorization", required = true, dataType = "String", paramType = "header")
})
public Result add(@RequestHeader(value="Authorization",required = true) String authorization , @RequestBody Essay essay) {
essayService.add(essay);
return Result.success();
}
@ApiOperation("修改专栏文章")
@PutMapping("/{id}")
@GlobalInterceptor(checkAdminLogin = true)
@ApiImplicitParams({
@ApiImplicitParam(name = "essay", value = "专栏文章对象", required = true, dataType = "Essay", paramType = "body"),
@ApiImplicitParam(name = "Authorization", value = "authorization", required = true, dataType = "String", paramType = "header")
})
public Result update(@RequestHeader(value="Authorization",required = true) String authorization ,@PathVariable String id, @RequestBody Essay essay) {
essay.setId(id);
essayService.update(essay);
return Result.success();
}
@ApiOperation("删除专栏文章")
@DeleteMapping("/{id}")
@GlobalInterceptor(checkAdminLogin = true)
public Result delete(@RequestHeader(value="Authorization",required = true) String authorization,@PathVariable String id) {
essayService.delete(id);
return Result.success();
}
@ApiOperation("根据ID获取专栏文章")
@GetMapping("/{id}")
public Result getById(@PathVariable String id) {
Essay essay = essayService.getById(id);
return Result.success(essay);
}
}

@ -0,0 +1,41 @@
package com.luoo.music.controller;
import api.PageResult;
import api.Result;
import com.luoo.music.pojo.Essay;
import com.luoo.music.service.EssayService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
/**
*
* author: wangqing
*/
@RestController
@CrossOrigin
@Api(tags = "雀乐专栏文章前台功能")
@RequestMapping("/essay")
public class EssayController {
@Autowired
private EssayService essayService;
@ApiOperation(value = "1 获取专栏文章列表",notes = "获取专栏文章列表,category=0代表全部文章, 1代表荐碟,2代表专访,3代表言之,4代表她说")
@GetMapping("/search/{category}/{page}/{size}")
public Result search(@PathVariable Integer category, @PathVariable int page, @PathVariable int size){
Page<Essay> pageData = null;
if(category == 0){
pageData = essayService.search(page, size);
}else{
pageData = essayService.getByCategory(category, page, size);
}
return Result.success(new PageResult<Essay>(pageData.getTotalElements(),pageData.getContent()));
}
}

@ -0,0 +1,14 @@
package com.luoo.music.dao;
import com.luoo.music.pojo.Essay;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface EssayDao extends JpaRepository<Essay, String> , JpaSpecificationExecutor<Essay> {
public Page<Essay> findAllByOrderByCreateTimeDesc(Pageable pageable);
Page<Essay> findAllByCategoryOrderByCreateTimeDesc(int category, Pageable pageable);
}

@ -0,0 +1,59 @@
package com.luoo.music.pojo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.Id;
import javax.persistence.Table;
import java.time.LocalDateTime;
/**
*
* @author wangqing
* @date 2024/07/24
*/
@Data
@Entity
@DynamicInsert
@DynamicUpdate
@Table(name="tb_essay")
@EntityListeners(AuditingEntityListener.class)
public class Essay {
@Id
private String id;
// 标题
private String title;
// 简介
private String summary;
// 阅读数
private Integer readCount;
// 内容
private String content;
// 作者
private String authorId;
private String authorName;
private String authorAvatar;
// 分类
private Integer category;
// 封面路径
private String cover;
@CreatedDate
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@LastModifiedDate
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

@ -0,0 +1,51 @@
package com.luoo.music.service;
import com.luoo.music.dao.EssayDao;
import com.luoo.music.pojo.Essay;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import util.IdWorker;
@Service
@Transactional
public class EssayService {
@Autowired
private EssayDao essayDao;
@Autowired
private IdWorker idWorker;
public Page<Essay> search(int page, int size) {
// TODO: implement search logic
Pageable pageable = PageRequest.of(page-1, size);
return essayDao.findAllByOrderByCreateTimeDesc(pageable);
}
public void add(Essay essay) {
essay.setId(idWorker.nextId()+"");
essayDao.save(essay);
}
public void update(Essay essay) {
essayDao.save(essay);
}
public void delete(String id) {
essayDao.deleteById(id);
}
public Essay getById(String id) {
return essayDao.findById(id).get();
}
public Page<Essay> getByCategory(int category, int page, int size) {
Pageable pageable = PageRequest.of(page-1, size);
return essayDao.findAllByCategoryOrderByCreateTimeDesc(category, pageable);
}
}

@ -0,0 +1,19 @@
create table tb_essay
(
id varchar(20) not null comment 'id'
primary key,
title varchar(20) null comment '标题',
summary varchar(200) null comment '摘要',
read_count int null comment '阅读数',
content text null comment '内容',
author_id varchar(20) null comment '作者id',
author_name varchar(20) null comment '作者名称',
author_avatar varchar(200) null comment '作者头像',
category int null comment '分类 1荐碟 2 专访 3言之 4 她说',
cover varchar(200) null comment '封面url',
create_time datetime null comment '创建时间',
update_time datetime null comment '更新时间'
)
comment 'tb_essay';
Loading…
Cancel
Save