parent
7034207125
commit
6c4df54f35
@ -1,21 +1,24 @@
|
||||
package com.luoo.user.annotation;
|
||||
package annotation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import com.luoo.user.enums.RequestFrequencyTypeEnum;
|
||||
|
||||
import enums.RequestFrequencyTypeEnum;
|
||||
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface GlobalInterceptor {
|
||||
boolean checkLogin() default false;
|
||||
|
||||
boolean checkAppUserLogin() default false;
|
||||
|
||||
boolean checkAdminLogin() default false;
|
||||
|
||||
boolean checkParam() default true;
|
||||
|
||||
int requestFrequencyThreshold() default 0;
|
||||
|
||||
RequestFrequencyTypeEnum frequencyType() default RequestFrequencyTypeEnum.NO_LIMIT;
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package annotation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import enums.VerifyRegexEnum;
|
||||
|
||||
@Target({ ElementType.PARAMETER, ElementType.FIELD })
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface VerifyParam {
|
||||
VerifyRegexEnum regex() default VerifyRegexEnum.NO;
|
||||
|
||||
int min() default -1;
|
||||
|
||||
int max() default -1;
|
||||
|
||||
boolean required() default false;
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.luoo.user.enums;
|
||||
package enums;
|
||||
|
||||
public enum RequestFrequencyTypeEnum {
|
||||
DAY(60 * 60 * 24, "一天"), HOUR(60 * 60, "一小时"), MINUTE(60, "一分钟"), SECONDS(1, "一秒"), NO_LIMIT(0, "不限制");
|
@ -1,4 +1,4 @@
|
||||
package com.luoo.user.enums;
|
||||
package enums;
|
||||
|
||||
public enum VerifyRegexEnum {
|
||||
NO("", "不校验"),
|
@ -0,0 +1,21 @@
|
||||
package util;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import enums.VerifyRegexEnum;
|
||||
public class VerifyUtils {
|
||||
|
||||
public static boolean verify(String regex, String value) {
|
||||
if (StringTools.isEmpty(value)) {
|
||||
return false;
|
||||
}
|
||||
Pattern pattern = Pattern.compile(regex);
|
||||
Matcher matcher = pattern.matcher(value);
|
||||
return matcher.matches();
|
||||
}
|
||||
|
||||
public static boolean verify(VerifyRegexEnum regexEnum, String value) {
|
||||
return verify(regexEnum.getRegex(), value);
|
||||
}
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
package com.luoo.music.controller;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.luoo.music.client.UserClient;
|
||||
import com.luoo.music.dto.request.JournalQueryReq;
|
||||
import com.luoo.music.dto.response.JournalRespDTO;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import com.luoo.music.pojo.Article;
|
||||
import com.luoo.music.service.ArticleService;
|
||||
|
||||
import annotation.GlobalInterceptor;
|
||||
import api.PageResult;
|
||||
import api.Result;
|
||||
import constants.Constants;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
/**
|
||||
* 控制器层
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
@RestController
|
||||
@CrossOrigin
|
||||
@RequestMapping("/journal")
|
||||
public class JournalController {
|
||||
|
||||
@Autowired
|
||||
private ArticleService articleService;
|
||||
|
||||
@ApiOperation(value = "1.查询期刊信息")
|
||||
@GetMapping("/list")
|
||||
//@GlobalInterceptor(checkLogin = true)
|
||||
public Result<PageResult<JournalRespDTO>> page(@RequestHeader(value = "token", required = false) String token,
|
||||
JournalQueryReq queryReq){
|
||||
Page<Article> pageList = articleService.queryPage(queryReq);
|
||||
List<JournalRespDTO> list=pageList.stream().map(a->getArticleRespDTO(a)).collect(Collectors.toList());
|
||||
return Result.success(new PageResult<JournalRespDTO>(Long.valueOf(list.size()), list) );
|
||||
}
|
||||
private JournalRespDTO getArticleRespDTO(Article article) {
|
||||
JournalRespDTO journalRespDTO=new JournalRespDTO();
|
||||
journalRespDTO.setId(article.getId());
|
||||
journalRespDTO.setJournalNo(article.getVolid());
|
||||
journalRespDTO.setTitle(article.getTitle());
|
||||
journalRespDTO.setImage(Constants.MUSIC_RESOURCE_PREFIX+article.getImage());
|
||||
return journalRespDTO;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package com.luoo.music.dto.request;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 标签列表查询参数
|
||||
*/
|
||||
@Data
|
||||
@ApiModel
|
||||
public class JournalQueryReq implements Serializable {
|
||||
private static final long serialVersionUID = -1198060864891902188L;
|
||||
@ApiModelProperty(value = "风格")
|
||||
private String style;
|
||||
@ApiModelProperty(value = "语言")
|
||||
private String language;
|
||||
@ApiModelProperty(value = "分页: 页码", example = "1")
|
||||
private int pageNum = 1;
|
||||
@ApiModelProperty(value = "分页: 每页数量", example = "10")
|
||||
private int pageSize = 10;
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.luoo.music.dto.response;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class JournalRespDTO {
|
||||
@ApiModelProperty(value = "ID")
|
||||
private String id;
|
||||
@ApiModelProperty(value = "剘刊号")
|
||||
private String journalNo;
|
||||
@ApiModelProperty(value = "期刊名")
|
||||
private String title;
|
||||
@ApiModelProperty(value = "文案")
|
||||
private String content;
|
||||
@ApiModelProperty(value = "期刊封面")
|
||||
private String image;
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.luoo.music.dto.response;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class SongRespDTO {
|
||||
private String id;
|
||||
private String title;
|
||||
private String artist;
|
||||
@ApiModelProperty(value = "专辑")
|
||||
private String album;
|
||||
private String src;
|
||||
private String pic;
|
||||
private String lrc;
|
||||
@ApiModelProperty(value = "剘刊号")
|
||||
private String journalNo;
|
||||
@ApiModelProperty(value = "歌曲号")
|
||||
private Integer songNo;
|
||||
}
|
@ -1,88 +0,0 @@
|
||||
package com.luoo.music.pojo;
|
||||
|
||||
public class SongVO {
|
||||
private String id;
|
||||
|
||||
private String title;
|
||||
|
||||
private String artist;
|
||||
private String album;
|
||||
private String src;
|
||||
private String pic;
|
||||
private String lrc;
|
||||
private String volid;
|
||||
|
||||
private Integer songno;
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getArtist() {
|
||||
return artist;
|
||||
}
|
||||
|
||||
public void setArtist(String artist) {
|
||||
this.artist = artist;
|
||||
}
|
||||
|
||||
public String getAlbum() {
|
||||
return album;
|
||||
}
|
||||
|
||||
public void setAlbum(String album) {
|
||||
this.album = album;
|
||||
}
|
||||
|
||||
public String getSrc() {
|
||||
return src;
|
||||
}
|
||||
|
||||
public void setSrc(String src) {
|
||||
this.src = src;
|
||||
}
|
||||
|
||||
public String getPic() {
|
||||
return pic;
|
||||
}
|
||||
|
||||
public void setPic(String pic) {
|
||||
this.pic = pic;
|
||||
}
|
||||
|
||||
public String getLrc() {
|
||||
return lrc;
|
||||
}
|
||||
|
||||
public void setLrc(String lrc) {
|
||||
this.lrc = lrc;
|
||||
}
|
||||
|
||||
public String getVolid() {
|
||||
return volid;
|
||||
}
|
||||
|
||||
public void setVolid(String volid) {
|
||||
this.volid = volid;
|
||||
}
|
||||
|
||||
public Integer getSongno() {
|
||||
return songno;
|
||||
}
|
||||
|
||||
public void setSongno(Integer songno) {
|
||||
this.songno = songno;
|
||||
}
|
||||
}
|
@ -0,0 +1,101 @@
|
||||
package com.luoo.music.util;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Component("redisUtils")
|
||||
public class RedisUtils<V> {
|
||||
|
||||
@Autowired
|
||||
private RedisTemplate<String, V> redisTemplate;
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(RedisUtils.class);
|
||||
|
||||
/**
|
||||
* 删除缓存
|
||||
*
|
||||
* @param key 可以传一个值 或多个
|
||||
*/
|
||||
public void delete(String... key) {
|
||||
if (key != null && key.length > 0) {
|
||||
if (key.length == 1) {
|
||||
redisTemplate.delete(key[0]);
|
||||
} else {
|
||||
redisTemplate.delete((Collection<String>) CollectionUtils.arrayToList(key));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public V get(String key) {
|
||||
return key == null ? null : redisTemplate.opsForValue().get(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 普通缓存放入
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @return true成功 false失败
|
||||
*/
|
||||
public boolean set(String key, V value) {
|
||||
try {
|
||||
redisTemplate.opsForValue().set(key, value);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
logger.error("设置redisKey:{},value:{}失败", key, value);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 普通缓存放入并设置时间
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
|
||||
* @return true成功 false 失败
|
||||
*/
|
||||
public boolean setex(String key, V value, long time) {
|
||||
try {
|
||||
if (time > 0) {
|
||||
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
|
||||
} else {
|
||||
set(key, value);
|
||||
}
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
logger.error("设置redisKey:{},value:{}失败", key, value);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public long increment(String key, long delta, long time) {
|
||||
if (delta < 0) {
|
||||
throw new RuntimeException("递增因子必须大于0");
|
||||
}
|
||||
long result = redisTemplate.opsForValue().increment(key, delta);
|
||||
if (result == 1) {
|
||||
expire(key, time);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public boolean expire(String key, long time) {
|
||||
try {
|
||||
if (time > 0) {
|
||||
redisTemplate.expire(key, time, TimeUnit.SECONDS);
|
||||
}
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
package com.luoo.user.annotation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import com.luoo.user.enums.VerifyRegexEnum;
|
||||
@Target({ElementType.PARAMETER,ElementType.FIELD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface VerifyParam {
|
||||
VerifyRegexEnum regex() default VerifyRegexEnum.NO;
|
||||
int min() default -1;
|
||||
int max() default -1;
|
||||
boolean required() default false;
|
||||
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
package com.luoo.user.enumerate;
|
||||
|
||||
public enum Gender {
|
||||
Male("0"), Female("1");
|
||||
private String code;
|
||||
|
||||
private Gender(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
package com.luoo.user.util;
|
||||
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.luoo.user.enums.VerifyRegexEnum;
|
||||
|
||||
import util.StringTools;
|
||||
|
||||
/**
|
||||
* @ClassName VerifyUtils
|
||||
* @Description TODO
|
||||
* @Author Administrator
|
||||
* @Date 2023/8/30 21:59
|
||||
*/
|
||||
public class VerifyUtils {
|
||||
|
||||
public static boolean verify(String regex,String value){
|
||||
if(StringTools.isEmpty(value)){
|
||||
return false;
|
||||
}
|
||||
Pattern pattern = Pattern.compile(regex);
|
||||
Matcher matcher = pattern.matcher(value);
|
||||
return matcher.matches();
|
||||
}
|
||||
|
||||
public static boolean verify(VerifyRegexEnum regexEnum,String value){
|
||||
return verify(regexEnum.getRegex(),value);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue