parent
7034207125
commit
6c4df54f35
@ -1,21 +1,24 @@
|
|||||||
package com.luoo.user.annotation;
|
package annotation;
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
import java.lang.annotation.Target;
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
import com.luoo.user.enums.RequestFrequencyTypeEnum;
|
import enums.RequestFrequencyTypeEnum;
|
||||||
|
|
||||||
|
|
||||||
@Target(ElementType.METHOD)
|
@Target(ElementType.METHOD)
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
public @interface GlobalInterceptor {
|
public @interface GlobalInterceptor {
|
||||||
boolean checkLogin() default false;
|
boolean checkLogin() default false;
|
||||||
|
|
||||||
boolean checkAppUserLogin() default false;
|
boolean checkAppUserLogin() default false;
|
||||||
|
|
||||||
boolean checkAdminLogin() default false;
|
boolean checkAdminLogin() default false;
|
||||||
|
|
||||||
boolean checkParam() default true;
|
boolean checkParam() default true;
|
||||||
|
|
||||||
int requestFrequencyThreshold() default 0;
|
int requestFrequencyThreshold() default 0;
|
||||||
|
|
||||||
RequestFrequencyTypeEnum frequencyType() default RequestFrequencyTypeEnum.NO_LIMIT;
|
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 {
|
public enum RequestFrequencyTypeEnum {
|
||||||
DAY(60 * 60 * 24, "一天"), HOUR(60 * 60, "一小时"), MINUTE(60, "一分钟"), SECONDS(1, "一秒"), NO_LIMIT(0, "不限制");
|
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 {
|
public enum VerifyRegexEnum {
|
||||||
NO("", "不校验"),
|
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