Skip to content

Commit

Permalink
feat: ielts update
Browse files Browse the repository at this point in the history
  • Loading branch information
lichong-a committed Aug 9, 2024
1 parent 5a826da commit 1dc9b18
Show file tree
Hide file tree
Showing 34 changed files with 459 additions and 181 deletions.
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ subprojects {
dependencies {
compileOnly "org.projectlombok:lombok"
annotationProcessor "org.projectlombok:lombok"
annotationProcessor "org.hibernate.orm:hibernate-jpamodelgen:${hibernatePluginVersion}"
}
dependencyManagement {
imports {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@
*/
@Repository
public interface IRoleRepository extends IBaseRepository<Role, Long> {

Role findByRoleKey(String roleKey);
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,12 @@
* @since 0.0.1
*/
public interface IAuthenticationService {

/**
* 注册
*
* @param request 注册请求
* @return 注册结果
*/
ResponseResult<String> signup(SignUpRequest request);
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,45 @@
public interface IJwtService {
/**
* 解析 token 获取 username
*
* @param token access-token
* @return username
*/
String extractUserName(String token);

/**
* 生成 access-token
*
* @param userDetails 用户信息
* @return access-token
*/
String generateToken(UserDetails userDetails);

/**
* access-token 是否合法
* @param token access-token
*
* @param token access-token
* @param userDetails 用户信息
* @return 是否合法
*/
boolean isTokenValid(String token, UserDetails userDetails);

/**
* access-token 是否过期
*
* @param token access-token
* @return 是否过期
*/
boolean isTokenExpired(String token);

/**
* 验证 access-token
*
* @param token access-token
* @param request 请求体
* @param response 响应体
* @throws IOException 异常
*/
void filterVerifyAccessToken(@NonNull String token, @NonNull HttpServletRequest request,
@NonNull HttpServletResponse response) throws IOException;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,4 @@ public class Carousel extends BaseEntity {
@Comment("图片文件")
private Storage storage;

public static final class ColumnName {
public static final String ID = "id";
public static final String CAROUSEL_ORDER = "carousel_order";
public static final String TITLE = "title";
public static final String STORAGE_ID = "storage_id";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,4 @@ public class Course extends BaseEntity {
@JsonIgnore
private Set<User> users;

public static final class ColumnName {
public static final String ID = "id";
public static final String TITLE = "title";
public static final String STATUS = "status";
public static final String PRICE = "price";
public static final String COURSE_DESCRIPTION_STORAGE_ID = "course_description_storage_id";
public static final String COURSE_MEDIA_STORAGE_ID = "course_media_storage_id";
public static final String COURSE_COVER_STORAGE_ID = "course_cover_storage_id";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -94,13 +94,4 @@ public class CourseColumn extends BaseEntity {
@JsonIgnore
private Set<User> users;

public static final class ColumnName {
public static final String ID = "id";
public static final String TITLE = "title";
public static final String STATUS = "status";
public static final String PRICE = "price";
public static final String COURSE_COLUMN_DESCRIPTION_STORAGE_ID = "course_column_description_storage_id";
public static final String COURSE_COLUMN_COVER_STORAGE_ID = "course_column_cover_storage_id";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,4 @@ public class Order extends BaseEntity {
@ManyToMany(mappedBy = "orders")
private Set<CourseColumn> courseColumns;

public static final class ColumnName {
public static final String ID = "id";
public static final String TRADE_TYPE = "trade_type";
public static final String PAYMENT_TIME = "payment_time";
public static final String PRICE = "price";
public static final String ORDER_USER_ID = "order_user_id";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,4 @@ public class RedeemCode extends BaseEntity {
@Comment("人员")
private User user;

public static final class ColumnName {
public static final String ID = "id";
public static final String STATUS = "status";
public static final String EXPIRE_TIME = "expire_time";
public static final String REDEEM_TIME = "redeem_time";
public static final String REDEEM_CODE_USER_ID = "redeem_code_user_id";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -33,46 +33,46 @@ public class Storage extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = ColumnName.ID, nullable = false, updatable = false)
@Column(nullable = false, updatable = false)
@Comment("存储ID")
private Long id;

@Column(name = ColumnName.TITLE, length = 100, nullable = false)
@Column(length = 100, nullable = false)
@Comment("标题")
private String title;

@Column(name = ColumnName.FILE_TYPE, length = 10)
@Column(length = 10)
@Comment("文件类型(0:图片;1:音频;2:视频;3:markdown)")
private int fileType;

@Column(name = ColumnName.BUCKET_NAME, length = 200, nullable = false)
@Column(length = 200, nullable = false)
@Comment("桶名称")
private String bucketName;

@Column(name = ColumnName.KEY, length = 300, nullable = false)
@Column(length = 300, nullable = false)
@Comment("唯一标识")
private String key;

@Column(name = ColumnName.VERSION_ID, length = 200, nullable = false)
@Column(length = 200, nullable = false)
@Comment("版本ID")
private String versionId;

@OneToOne(mappedBy = "storage", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OneToOne(mappedBy = "storage", cascade = CascadeType.ALL)
@JsonIgnore
@Comment("轮播")
private Carousel carousel;

@OneToOne(mappedBy = "courseDescriptionStorage", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OneToOne(mappedBy = "courseDescriptionStorage", cascade = CascadeType.ALL)
@JsonIgnore
@Comment("课程简介")
private Course descriptionCourse;

@OneToOne(mappedBy = "courseMediaStorage", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OneToOne(mappedBy = "courseMediaStorage", cascade = CascadeType.ALL)
@JsonIgnore
@Comment("课程音视频")
private Course mediaCourse;

@OneToOne(mappedBy = "courseCoverStorage", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OneToOne(mappedBy = "courseCoverStorage", cascade = CascadeType.ALL)
@JsonIgnore
@Comment("课程封面")
private Course coverCourse;
Expand All @@ -83,23 +83,14 @@ public class Storage extends BaseEntity {
@Comment("课程资料")
private Course attachmentCourse;

@OneToOne(mappedBy = "courseColumnDescriptionStorage", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OneToOne(mappedBy = "courseColumnDescriptionStorage", cascade = CascadeType.ALL)
@JsonIgnore
@Comment("课程专栏简介")
private CourseColumn descriptionCourseColumn;

@OneToOne(mappedBy = "courseColumnCoverStorage", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OneToOne(mappedBy = "courseColumnCoverStorage", cascade = CascadeType.ALL)
@JsonIgnore
@Comment("课程专栏封面")
private CourseColumn coverCourseColumn;

public static final class ColumnName {
public static final String ID = "id";
public static final String TITLE = "title";
public static final String FILE_TYPE = "file_type";
public static final String BUCKET_NAME = "bucket_name";
public static final String KEY = "key";
public static final String VERSION_ID = "version_id";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,4 @@ public String getAuthority() {
return this.authorityKey;
}

public static final class ColumnName {
public static final String ID = "id";
public static final String AUTHORITY_NAME = "authority_name";
public static final String AUTHORITY_KEY = "authority_key";
public static final String DESCRIPTION = "description";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
@Entity
@EqualsAndHashCode(callSuper = true, exclude = {"users", "basicAuthorities"})
@ToString(callSuper = true, exclude = {"users", "basicAuthorities"})
@Table(name="tb_role")
@Table(name = "tb_role")
@Comment("角色表")
@DynamicUpdate
public class Role extends BaseEntity implements GrantedAuthority {
Expand Down Expand Up @@ -83,10 +83,4 @@ public String getAuthority() {
return this.roleKey;
}

public static final class ColumnName {
public static final String ID = "id";
public static final String ROLE_NAME = "role_name";
public static final String ROLE_KEY = "role_key";
public static final String DESCRIPTION = "description";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -137,21 +137,4 @@ public Collection<? extends GrantedAuthority> getAuthorities() {
return result;
}

public static final class ColumnName {
public static final String ID = "id";
public static final String NICK_NAME = "nick_name";
public static final String REAL_NAME = "real_name";
public static final String USERNAME = "username";
public static final String GENDER = "gender";
public static final String EMAIL = "email";
public static final String PHONE = "phone";
public static final String PASSWORD = "password";
public static final String AVATAR = "avatar";
public static final String BIRTHDAY = "birthday";
public static final String WECHAT_ID = "wechat_id";
public static final String ACCOUNT_NON_EXPIRED = "account_non_expired";
public static final String ACCOUNT_NON_LOCKED = "account_non_locked";
public static final String CREDENTIALS_NON_EXPIRED = "credentials_non_expired";
public static final String ENABLED = "enabled";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,20 @@

package org.funcode.portal.server.module.ielts.carousel.controller;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.funcode.portal.server.common.core.base.http.response.ResponseResult;
import org.funcode.portal.server.common.domain.ielts.Carousel;
import org.funcode.portal.server.module.ielts.carousel.domain.vo.CarouselAddOrEditVo;
import org.funcode.portal.server.module.ielts.carousel.domain.vo.CarouselQueryVo;
import org.funcode.portal.server.module.ielts.carousel.service.ICarouselService;
import org.springframework.data.domain.Page;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
* @author 李冲
Expand All @@ -20,4 +30,34 @@
@RequestMapping("/api/v1/carousel")
@RequiredArgsConstructor
public class CarouselController {

private final ICarouselService carouselService;

@Operation(summary = "新增或编辑轮播")
@PostMapping("addOrEdit")
@PreAuthorize(value = "hasAuthority('ielts:carousel:addOrEdit')")
public ResponseResult<Carousel> addOrEdit(@Valid @RequestBody CarouselAddOrEditVo carouselAddOrEditVo) {
return ResponseResult.success(carouselService.addOrEdit(carouselAddOrEditVo));
}

@Operation(summary = "根据不同条件分页查询轮播列表")
@PostMapping("pageList")
@PreAuthorize(value = "hasAuthority('ielts:carousel:pageList')")
public ResponseResult<Page<Carousel>> pageList(@Valid @RequestBody CarouselQueryVo carouselQueryVo) {
return ResponseResult.success(carouselService.findPage(carouselQueryVo));
}

@Operation(summary = "根据ID删除轮播")
@GetMapping("delete")
@PreAuthorize(value = "hasAuthority('ielts:carousel:delete')")
public ResponseResult<Void> delete(@RequestParam Long id) {
carouselService.delete(id);
return ResponseResult.success();
}

@Operation(summary = "获取当前所有可用的轮播列表")
@GetMapping("availableList")
public ResponseResult<List<Carousel>> availableList() {
return ResponseResult.success(carouselService.findAll());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
package org.funcode.portal.server.module.ielts.carousel.domain.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.RequiredArgsConstructor;
Expand All @@ -29,5 +30,8 @@ public class CarouselAddOrEditVo {
private String title;
@Schema(description = "顺序")
private long carouselOrder;
@NotNull(message = "{ielts.domain.vo.CarouselAddOrEditVo.storageId.NotNull}")
@Schema(description = "轮播图片文件ID")
private Long storageId;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright 2024 李冲. All rights reserved.
*
*/

package org.funcode.portal.server.module.ielts.carousel.domain.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Size;
import lombok.Data;
import org.springframework.data.domain.PageRequest;

import java.time.LocalDateTime;

/**
* @author 李冲
* @see <a href="https://lichong.work">李冲博客</a>
* @since 0.0.1
*/
@Data
@Schema(description = "轮播查询条件VO")
public class CarouselQueryVo {

@Schema(description = "轮播ID(精确)")
private Long id;
@Size(max = 100, message = "{ielts.domain.vo.CarouselQueryVo.title.Size}")
@Schema(description = "轮播标题(模糊)")
private String title;
@Schema(description = "创建时间的开始时间")
private LocalDateTime createdAtBegin;
@Schema(description = "创建时间的结束时间")
private LocalDateTime createdAtEnd;
@Schema(description = "更新时间的开始时间")
private LocalDateTime updatedAtBegin;
@Schema(description = "更新时间的结束时间")
private LocalDateTime updatedAtEnd;
@Schema(description = "分页参数")
private PageRequest pageRequest;
}
Loading

0 comments on commit 1dc9b18

Please sign in to comment.