添加 mapstruct 依赖

mp_app 添加 创建和更新时间字段
This commit is contained in:
shikong 2024-12-09 16:37:23 +08:00
parent 0b09e75eb7
commit 6094afbd1d
Signed by: Shikong
GPG Key ID: BD85FF18B373C341
10 changed files with 153 additions and 27 deletions

View File

@ -71,5 +71,10 @@
<groupId>org.liquibase</groupId> <groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId> <artifactId>liquibase-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-common</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -15,58 +17,51 @@ import lombok.experimental.Accessors;
* </p> * </p>
* *
* @author shikong * @author shikong
* @since 2024-12-07 * @since 2024-12-09
*/ */
@Getter @Getter
@Setter @Setter
@Accessors(chain = true) @Accessors(chain = true)
@TableName("mp_app") @TableName("mp_app")
@Schema(name = "MpApp", description = "微信公众号记录表")
public class MpApp extends Model<MpApp> { public class MpApp extends Model<MpApp> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** @Schema(description = "公众号id")
* 公众号id
*/
@TableId("id") @TableId("id")
private String id; private String id;
/** @Schema(description = "开发者id")
* 开发者id
*/
@TableField("app_id") @TableField("app_id")
private String appId; private String appId;
/** @Schema(description = "名称")
* 名称
*/
@TableField("app_name") @TableField("app_name")
private String appName; private String appName;
/** @Schema(description = "开发者密钥")
* 开发者密钥
*/
@TableField("app_secret") @TableField("app_secret")
private String appSecret; private String appSecret;
/** @Schema(description = "令牌")
* 令牌
*/
@TableField("token") @TableField("token")
private String token; private String token;
/** @Schema(description = "消息加密密钥")
* 消息加密密钥
*/
@TableField("encoding_aes_key") @TableField("encoding_aes_key")
private String encodingAesKey; private String encodingAesKey;
/** @Schema(description = "是否启用")
* 是否启用
*/
@TableField("enable") @TableField("enable")
private Boolean enable; private Boolean enable;
@TableField("create_time")
private LocalDateTime createTime;
@TableField("update_time")
private LocalDateTime updateTime;
@Override @Override
public Serializable pkVal() { public Serializable pkVal() {
return this.id; return this.id;

View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* </p> * </p>
* *
* @author shikong * @author shikong
* @since 2024-12-07 * @since 2024-12-09
*/ */
public interface MpAppMapper extends BaseMapper<MpApp> { public interface MpAppMapper extends BaseMapper<MpApp> {

View File

@ -8,4 +8,21 @@
<changeSet id="1733576524057-1" author="shikong"> <changeSet id="1733576524057-1" author="shikong">
<sqlFile path="schema/0.init.sql"/> <sqlFile path="schema/0.init.sql"/>
</changeSet> </changeSet>
<changeSet id="1733731383678-1" author="shikong">
<addColumn tableName="mp_app">
<column name="create_time"
type="datetime"
defaultValueComputed="CURRENT_TIMESTAMP">
<constraints nullable="false"/>
</column>
</addColumn>
<addColumn tableName="mp_app">
<column name="update_time"
type="datetime"
defaultValueComputed="CURRENT_TIMESTAMP">
<constraints nullable="false"/>
</column>
</addColumn>
</changeSet>
</databaseChangeLog> </databaseChangeLog>

View File

@ -61,6 +61,8 @@ public class OrmGenerator implements SmartLifecycle {
FastAutoGenerator.create(dataSourceProperties.getUrl(), dataSourceProperties.getUsername(), dataSourceProperties.getPassword()) FastAutoGenerator.create(dataSourceProperties.getUrl(), dataSourceProperties.getUsername(), dataSourceProperties.getPassword())
.globalConfig(builder -> { .globalConfig(builder -> {
builder.author(getGitUserName()) builder.author(getGitUserName())
.disableOpenDir()
.enableSpringdoc()
.outputDir(sourceDir) .outputDir(sourceDir)
.commentDate(DatePattern.NORM_DATE_PATTERN); .commentDate(DatePattern.NORM_DATE_PATTERN);
}) })

View File

@ -4,6 +4,8 @@ import cn.skcks.docking.wx.annotation.web.methods.GetJson;
import cn.skcks.docking.wx.common.json.JsonResponse; import cn.skcks.docking.wx.common.json.JsonResponse;
import cn.skcks.docking.wx.common.page.PageWrapper; import cn.skcks.docking.wx.common.page.PageWrapper;
import cn.skcks.docking.wx.orm.entity.MpApp; import cn.skcks.docking.wx.orm.entity.MpApp;
import cn.skcks.docking.wx.services.mp.convertor.MpAppConvertor;
import cn.skcks.docking.wx.services.mp.dto.app.MpAppDto;
import cn.skcks.docking.wx.services.mp.service.app.MpAppService; import cn.skcks.docking.wx.services.mp.service.app.MpAppService;
import cn.skcks.docking.wx.services.mp.vo.verify.SignatureVo; import cn.skcks.docking.wx.services.mp.vo.verify.SignatureVo;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -28,9 +30,9 @@ public class MpAppController {
@Operation(summary = "公众号列表") @Operation(summary = "公众号列表")
@GetJson("/list") @GetJson("/list")
public JsonResponse<List<MpApp>> getMpAppList() { public JsonResponse<List<MpAppDto>> getMpAppList() {
List<MpApp> mpAppList = mpAppService.getMpAppList(); List<MpApp> mpAppList = mpAppService.getMpAppList();
return JsonResponse.success(mpAppList); return JsonResponse.success(MpAppConvertor.INSTANCE.toMpAppDto(mpAppList));
} }
@Operation(summary = "公众号分页列表") @Operation(summary = "公众号分页列表")
@ -39,8 +41,14 @@ public class MpAppController {
@Parameter(name = "pageNo", description = "页数", example = "1"), @Parameter(name = "pageNo", description = "页数", example = "1"),
@Parameter(name = "pageSize", description = "条数", example = "10") @Parameter(name = "pageSize", description = "条数", example = "10")
}) })
public JsonResponse<PageWrapper<MpApp>> getMpAppListPage(@RequestParam Integer pageNo, @RequestParam Integer pageSize) { public JsonResponse<PageWrapper<MpAppDto>> getMpAppListPage(@RequestParam Integer pageNo, @RequestParam Integer pageSize) {
return JsonResponse.success(mpAppService.getMpAppPageList(pageNo,pageSize)); PageWrapper<MpApp> mpAppPageList = mpAppService.getMpAppPageList(pageNo, pageSize);
PageWrapper<MpAppDto> mpAppDtoPageList = PageWrapper.of(MpAppConvertor.INSTANCE.toMpAppDto(mpAppPageList.getData()),
mpAppPageList.getPage(),
mpAppPageList.getPageSize(),
mpAppPageList.getPageTotal(),
mpAppPageList.getTotal());
return JsonResponse.success(mpAppDtoPageList);
} }
@RequestMapping("/{appId}") @RequestMapping("/{appId}")

View File

@ -0,0 +1,20 @@
package cn.skcks.docking.wx.services.mp.convertor;
import cn.skcks.docking.wx.orm.entity.MpApp;
import cn.skcks.docking.wx.services.mp.dto.app.MpAppDto;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.Collection;
import java.util.List;
@Mapper
public abstract class MpAppConvertor {
public static MpAppConvertor INSTANCE = Mappers.getMapper(MpAppConvertor.class);
abstract public MpAppDto toMpAppDto(MpApp mpApp);
abstract public MpApp toMpApp(MpAppDto mpAppDto);
abstract public List<MpAppDto> toMpAppDto(List<MpApp> mpApp);
abstract public Collection<MpAppDto> toMpAppDto(Collection<MpApp> mpApp);
}

View File

@ -0,0 +1,53 @@
package cn.skcks.docking.wx.services.mp.dto.app;
import cn.hutool.core.date.DatePattern;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(name = "MpApp", description = "微信公众号记录表")
@Data
public class MpAppDto {
@Schema(description = "公众号id")
@TableId("id")
private String id;
@Schema(description = "开发者id")
@TableField("app_id")
private String appId;
@Schema(description = "名称")
@TableField("app_name")
private String appName;
@Schema(description = "开发者密钥")
@TableField("app_secret")
private String appSecret;
@Schema(description = "令牌")
@TableField("token")
private String token;
@Schema(description = "消息加密密钥")
@TableField("encoding_aes_key")
private String encodingAesKey;
@Schema(description = "是否启用")
@TableField("enable")
private Boolean enable;
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
@JsonFormat(pattern=DatePattern.NORM_DATETIME_PATTERN)
@Schema(description = "创建时间")
private LocalDateTime createTime;
@DateTimeFormat(pattern= DatePattern.NORM_DATETIME_PATTERN)
@JsonFormat(pattern=DatePattern.NORM_DATETIME_PATTERN)
@Schema(description = "更新时间")
private LocalDateTime updateTime;
}

21
pom.xml
View File

@ -51,6 +51,7 @@
<springboot.version>3.4.0</springboot.version> <springboot.version>3.4.0</springboot.version>
<springdoc.version>2.7.0</springdoc.version> <springdoc.version>2.7.0</springdoc.version>
<lombok.version>1.18.36</lombok.version> <lombok.version>1.18.36</lombok.version>
<org.mapstruct.version>1.6.3</org.mapstruct.version>
</properties> </properties>
<dependencies> <dependencies>
@ -60,6 +61,12 @@
<version>${lombok.version}</version> <version>${lombok.version}</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
</dependencies> </dependencies>
<dependencyManagement> <dependencyManagement>
@ -134,11 +141,25 @@
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<configuration> <configuration>
<annotationProcessorPaths> <annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok-mapstruct-binding -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</dependency>
<path> <path>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>${lombok.version}</version> <version>${lombok.version}</version>
</path> </path>
<path> <path>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId> <artifactId>spring-boot-configuration-processor</artifactId>

View File

@ -8,6 +8,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.Collection; import java.util.Collection;
import java.util.List;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@ -30,6 +31,10 @@ public class PageWrapper<T> {
return new PageWrapper<>(data, page, pageSize, pageTotal, total); return new PageWrapper<>(data, page, pageSize, pageTotal, total);
} }
public static <T> PageWrapper<T> of(List<T> data, long page, long pageSize, long pageTotal, long total) {
return new PageWrapper<>(data, page, pageSize, pageTotal, total);
}
public static <T> PageWrapper<T> of(PageInfo<T> pageInfo) { public static <T> PageWrapper<T> of(PageInfo<T> pageInfo) {
return new PageWrapper<>(pageInfo.getList(), return new PageWrapper<>(pageInfo.getList(),
pageInfo.getPageNum(), pageInfo.getPageNum(),