Update pom.xml for MyBatis Plus integration and downgrade Spring Boot version; refactor validation imports from Jakarta to Javax; modify mappers to extend BaseMapper for CRUD operations; clean up unused MyBatis-Flex mappers; adjust application.yml for MyBatis Plus configuration.

This commit is contained in:
zyh
2025-08-26 15:37:52 +08:00
parent bd0a9e6dd7
commit 833159d1f1
31 changed files with 204 additions and 104 deletions

16
pom.xml
View File

@@ -5,7 +5,7 @@
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.3</version> <version>2.7.18</version>
<relativePath/> <relativePath/>
</parent> </parent>
@@ -17,7 +17,7 @@
<properties> <properties>
<java.version>17</java.version> <java.version>17</java.version>
<mybatis.spring.boot.version>3.0.3</mybatis.spring.boot.version> <mybatis-plus.version>3.5.8</mybatis-plus.version>
</properties> </properties>
<dependencies> <dependencies>
@@ -33,11 +33,11 @@
<artifactId>spring-boot-starter-security</artifactId> <artifactId>spring-boot-starter-security</artifactId>
</dependency> </dependency>
<!-- MyBatis starter (JDBC, blocking) --> <!-- MyBatis Plus starter -->
<dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId> <groupId>com.baomidou</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId> <artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.spring.boot.version}</version> <version>3.5.8</version>
</dependency> </dependency>
<!-- MySQL JDBC driver --> <!-- MySQL JDBC driver -->
@@ -88,8 +88,8 @@
<!-- Swagger/OpenAPI Documentation --> <!-- Swagger/OpenAPI Documentation -->
<dependency> <dependency>
<groupId>org.springdoc</groupId> <groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webflux-ui</artifactId> <artifactId>springdoc-openapi-webflux-ui</artifactId>
<version>2.3.0</version> <version>1.7.0</version>
</dependency> </dependency>
<!-- Apache Commons Codec for SHA-256 and hex utils --> <!-- Apache Commons Codec for SHA-256 and hex utils -->

View File

@@ -6,7 +6,7 @@ import com.gameplatform.server.service.account.AccountService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import javax.validation.Valid;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;

View File

@@ -6,7 +6,7 @@ import com.gameplatform.server.security.JwtService;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import jakarta.validation.Valid; import javax.validation.Valid;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;

View File

@@ -11,7 +11,7 @@ import com.gameplatform.server.service.link.LinkStatusService;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import javax.validation.Valid;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;

View File

@@ -9,8 +9,8 @@ import org.springframework.web.server.ServerWebInputException;
import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.AuthenticationException;
import jakarta.validation.ConstraintViolation; import javax.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException; import javax.validation.ConstraintViolationException;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.bind.annotation.RestControllerAdvice;
@@ -92,7 +92,7 @@ public class GlobalExceptionHandler {
@ExceptionHandler(ResponseStatusException.class) @ExceptionHandler(ResponseStatusException.class)
public Object handleRse(ResponseStatusException e) { public Object handleRse(ResponseStatusException e) {
var status = e.getStatusCode(); var status = e.getStatus();
log.warn("{} ResponseStatusException: {} - Stack: {}", log.warn("{} ResponseStatusException: {} - Stack: {}",
status, e.getReason(), getStackTrace(e)); status, e.getReason(), getStackTrace(e));
return body(status.value(), e.getReason()); return body(status.value(), e.getReason());

View File

@@ -1,15 +1,15 @@
package com.gameplatform.server.mapper.account; package com.gameplatform.server.mapper.account;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gameplatform.server.model.entity.account.UserAccount; import com.gameplatform.server.model.entity.account.UserAccount;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
public interface UserAccountMapper { @Mapper
public interface UserAccountMapper extends BaseMapper<UserAccount> {
UserAccount findByUsernameAndType(@Param("username") String username, UserAccount findByUsernameAndType(@Param("username") String username,
@Param("userType") String userType); @Param("userType") String userType);
UserAccount findByUsername(@Param("username") String username); UserAccount findByUsername(@Param("username") String username);
UserAccount findById(@Param("id") Long id);
int insert(UserAccount account);
int update(UserAccount account);
int setStatus(@Param("id") Long id, @Param("status") String status); int setStatus(@Param("id") Long id, @Param("status") String status);
int updatePassword(@Param("id") Long id, @Param("passwordHash") String passwordHash); int updatePassword(@Param("id") Long id, @Param("passwordHash") String passwordHash);

View File

@@ -1,11 +1,14 @@
package com.gameplatform.server.mapper.admin; package com.gameplatform.server.mapper.admin;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gameplatform.server.model.entity.admin.Announcement; import com.gameplatform.server.model.entity.admin.Announcement;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface AnnouncementMapper { @Mapper
public interface AnnouncementMapper extends BaseMapper<Announcement> {
Announcement findById(@Param("id") Long id); Announcement findById(@Param("id") Long id);
int insert(Announcement announcement); int insert(Announcement announcement);

View File

@@ -1,11 +1,14 @@
package com.gameplatform.server.mapper.admin; package com.gameplatform.server.mapper.admin;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gameplatform.server.model.entity.admin.OperationLog; import com.gameplatform.server.model.entity.admin.OperationLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface OperationLogMapper { @Mapper
public interface OperationLogMapper extends BaseMapper<OperationLog> {
OperationLog findById(@Param("id") Long id); OperationLog findById(@Param("id") Long id);
int insert(OperationLog operationLog); int insert(OperationLog operationLog);

View File

@@ -1,11 +1,14 @@
package com.gameplatform.server.mapper.admin; package com.gameplatform.server.mapper.admin;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gameplatform.server.model.entity.admin.SystemConfig; import com.gameplatform.server.model.entity.admin.SystemConfig;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface SystemConfigMapper { @Mapper
public interface SystemConfigMapper extends BaseMapper<SystemConfig> {
SystemConfig findById(@Param("id") Long id); SystemConfig findById(@Param("id") Long id);
SystemConfig findByKey(@Param("configKey") String configKey); SystemConfig findByKey(@Param("configKey") String configKey);

View File

@@ -1,11 +1,14 @@
package com.gameplatform.server.mapper.agent; package com.gameplatform.server.mapper.agent;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gameplatform.server.model.entity.agent.AgentPointsTx; import com.gameplatform.server.model.entity.agent.AgentPointsTx;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface AgentPointsTxMapper { @Mapper
public interface AgentPointsTxMapper extends BaseMapper<AgentPointsTx> {
AgentPointsTx findById(@Param("id") Long id); AgentPointsTx findById(@Param("id") Long id);
int insert(AgentPointsTx agentPointsTx); int insert(AgentPointsTx agentPointsTx);

View File

@@ -1,11 +1,14 @@
package com.gameplatform.server.mapper.agent; package com.gameplatform.server.mapper.agent;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gameplatform.server.model.entity.agent.LinkBatch; import com.gameplatform.server.model.entity.agent.LinkBatch;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface LinkBatchMapper { @Mapper
public interface LinkBatchMapper extends BaseMapper<LinkBatch> {
LinkBatch findById(@Param("id") Long id); LinkBatch findById(@Param("id") Long id);
int insert(LinkBatch linkBatch); int insert(LinkBatch linkBatch);

View File

@@ -1,12 +1,15 @@
package com.gameplatform.server.mapper.agent; package com.gameplatform.server.mapper.agent;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gameplatform.server.model.entity.agent.LinkTask; import com.gameplatform.server.model.entity.agent.LinkTask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
public interface LinkTaskMapper { @Mapper
public interface LinkTaskMapper extends BaseMapper<LinkTask> {
LinkTask findById(@Param("id") Long id); LinkTask findById(@Param("id") Long id);
LinkTask findByCodeNo(@Param("codeNo") String codeNo); LinkTask findByCodeNo(@Param("codeNo") String codeNo);

View File

@@ -1,14 +0,0 @@
package com.gameplatform.server.mapper.agent;
import com.mybatisflex.core.BaseMapper;
import com.gameplatform.server.model.entity.agent.LinkBatch;
import org.apache.ibatis.annotations.Mapper;
/**
* MyBatis-Flex Mapper for LinkBatch
* 提供高性能的查询构建器和自动生成的基础CRUD操作
*/
@Mapper
public interface LinkBatchFlexMapper extends BaseMapper<LinkBatch> {
// MyBatis-Flex 会自动提供完整的CRUD操作
}

View File

@@ -1,29 +0,0 @@
package com.gameplatform.server.mapper.agent;
import com.mybatisflex.core.BaseMapper;
import com.gameplatform.server.model.entity.agent.LinkTask;
import org.apache.ibatis.annotations.Mapper;
/**
* MyBatis-Flex Mapper for LinkTask
* 提供高性能的查询构建器和自动生成的基础CRUD操作
*/
@Mapper
public interface LinkTaskFlexMapper extends BaseMapper<LinkTask> {
// MyBatis-Flex 会自动提供以下方法:
// - selectById
// - selectByMap
// - selectByCondition
// - selectListByCondition
// - selectCountByCondition
// - selectPageByCondition
// - insert
// - insertBatch
// - update
// - updateByCondition
// - delete
// - deleteByCondition
// 等等...
// 如果需要自定义 SQL可以在这里添加方法并在 XML 文件中实现
}

View File

@@ -1,7 +1,7 @@
package com.gameplatform.server.model.dto.account; package com.gameplatform.server.model.dto.account;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.*; import javax.validation.constraints.*;
@Schema(description = "账户创建请求") @Schema(description = "账户创建请求")
public class AccountCreateRequest { public class AccountCreateRequest {

View File

@@ -1,8 +1,8 @@
package com.gameplatform.server.model.dto.account; package com.gameplatform.server.model.dto.account;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
import jakarta.validation.constraints.Size; import javax.validation.constraints.Size;
@Schema(description = "账户更新请求") @Schema(description = "账户更新请求")
public class AccountUpdateRequest { public class AccountUpdateRequest {

View File

@@ -1,8 +1,8 @@
package com.gameplatform.server.model.dto.account; package com.gameplatform.server.model.dto.account;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size; import javax.validation.constraints.Size;
@Schema(description = "重置密码请求") @Schema(description = "重置密码请求")
public class ResetPasswordRequest { public class ResetPasswordRequest {

View File

@@ -1,6 +1,6 @@
package com.gameplatform.server.model.dto.auth; package com.gameplatform.server.model.dto.auth;
import jakarta.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
public class LoginRequest { public class LoginRequest {
@NotBlank @NotBlank

View File

@@ -1,8 +1,8 @@
package com.gameplatform.server.model.dto.link; package com.gameplatform.server.model.dto.link;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Max; import javax.validation.constraints.Max;
import jakarta.validation.constraints.Min; import javax.validation.constraints.Min;
import lombok.Data; import lombok.Data;
/** /**

View File

@@ -1,15 +1,33 @@
package com.gameplatform.server.model.entity.account; package com.gameplatform.server.model.entity.account;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@TableName("user_account")
public class UserAccount { public class UserAccount {
@TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
@TableField("user_type")
private String userType; // ADMIN | AGENT private String userType; // ADMIN | AGENT
private String username; // 登录名admin/agent 共用) private String username; // 登录名admin/agent 共用)
@TableField("password_hash")
private String passwordHash; // BCrypt 或 PLAIN:xxx初始化用 private String passwordHash; // BCrypt 或 PLAIN:xxx初始化用
private String status; // ENABLED / DISABLED private String status; // ENABLED / DISABLED
@TableField("points_balance")
private Long pointsBalance; // 仅 AGENT 使用 private Long pointsBalance; // 仅 AGENT 使用
@TableField("created_at")
private LocalDateTime createdAt; private LocalDateTime createdAt;
@TableField("updated_at")
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
public Long getId() { return id; } public Long getId() { return id; }

View File

@@ -1,14 +1,29 @@
package com.gameplatform.server.model.entity.admin; package com.gameplatform.server.model.entity.admin;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@TableName("announcement")
public class Announcement { public class Announcement {
@TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
private String title; private String title;
private String content; private String content;
private Boolean enabled; private Boolean enabled;
@TableField("jump_url")
private String jumpUrl; private String jumpUrl;
@TableField("created_at")
private LocalDateTime createdAt; private LocalDateTime createdAt;
@TableField("updated_at")
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
public Long getId() { return id; } public Long getId() { return id; }

View File

@@ -1,16 +1,36 @@
package com.gameplatform.server.model.entity.admin; package com.gameplatform.server.model.entity.admin;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@TableName("operation_log")
public class OperationLog { public class OperationLog {
@TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
@TableField("actor_type")
private String actorType; // admin | agent | system | user private String actorType; // admin | agent | system | user
@TableField("actor_id")
private Long actorId; private Long actorId;
@TableField("code_no")
private String codeNo; private String codeNo;
private String op; private String op;
private String detail; // JSON字符串 private String detail; // JSON字符串
@TableField("client_ip")
private String clientIp; private String clientIp;
@TableField("user_agent")
private String userAgent; private String userAgent;
@TableField("created_at")
private LocalDateTime createdAt; private LocalDateTime createdAt;
public Long getId() { return id; } public Long getId() { return id; }

View File

@@ -1,15 +1,34 @@
package com.gameplatform.server.model.entity.admin; package com.gameplatform.server.model.entity.admin;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@TableName("system_config")
public class SystemConfig { public class SystemConfig {
@TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
@TableField("config_key")
private String configKey; private String configKey;
@TableField("config_value")
private String configValue; private String configValue;
@TableField("config_type")
private String configType; private String configType;
private String description; private String description;
@TableField("is_system")
private Boolean isSystem; private Boolean isSystem;
@TableField("created_at")
private LocalDateTime createdAt; private LocalDateTime createdAt;
@TableField("updated_at")
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
public Long getId() { return id; } public Long getId() { return id; }

View File

@@ -1,17 +1,39 @@
package com.gameplatform.server.model.entity.agent; package com.gameplatform.server.model.entity.agent;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@TableName("agent_points_tx")
public class AgentPointsTx { public class AgentPointsTx {
@TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
@TableField("account_id")
private Long accountId; private Long accountId;
private String type; // ADD | DEDUCT private String type; // ADD | DEDUCT
@TableField("before_points")
private Long beforePoints; private Long beforePoints;
@TableField("delta_points")
private Long deltaPoints; private Long deltaPoints;
@TableField("after_points")
private Long afterPoints; private Long afterPoints;
private String reason; // create_links | manual | refund_no_rollback | other private String reason; // create_links | manual | refund_no_rollback | other
@TableField("ref_id")
private Long refId; private Long refId;
@TableField("operator_id")
private Long operatorId; private Long operatorId;
@TableField("created_at")
private LocalDateTime createdAt; private LocalDateTime createdAt;
public Long getId() { return id; } public Long getId() { return id; }

View File

@@ -1,13 +1,27 @@
package com.gameplatform.server.model.entity.agent; package com.gameplatform.server.model.entity.agent;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@TableName("link_batch")
public class LinkBatch { public class LinkBatch {
@TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
@TableField("agent_id")
private Long agentId; private Long agentId;
private Integer quantity; private Integer quantity;
private Integer times; private Integer times;
@TableField("operator_id")
private Long operatorId; private Long operatorId;
@TableField("created_at")
private LocalDateTime createdAt; private LocalDateTime createdAt;
public Long getId() { return id; } public Long getId() { return id; }

View File

@@ -1,21 +1,50 @@
package com.gameplatform.server.model.entity.agent; package com.gameplatform.server.model.entity.agent;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@TableName("link_task")
public class LinkTask { public class LinkTask {
@TableId(value = "id", type = IdType.AUTO)
private Long id; private Long id;
@TableField("batch_id")
private Long batchId; private Long batchId;
@TableField("agent_id")
private Long agentId; private Long agentId;
@TableField("code_no")
private String codeNo; private String codeNo;
@TableField("token_hash")
private String tokenHash; private String tokenHash;
@TableField("expire_at")
private LocalDateTime expireAt; private LocalDateTime expireAt;
private String status; // NEW | USING | LOGGED_IN | REFUNDED | EXPIRED private String status; // NEW | USING | LOGGED_IN | REFUNDED | EXPIRED
private String region; // Q | V private String region; // Q | V
@TableField("machine_id")
private String machineId; private String machineId;
@TableField("login_at")
private LocalDateTime loginAt; private LocalDateTime loginAt;
@TableField("refund_at")
private LocalDateTime refundAt; private LocalDateTime refundAt;
@TableField("revoked_at")
private LocalDateTime revokedAt; private LocalDateTime revokedAt;
@TableField("created_at")
private LocalDateTime createdAt; private LocalDateTime createdAt;
@TableField("updated_at")
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
public Long getId() { return id; } public Long getId() { return id; }

View File

@@ -28,7 +28,7 @@ public class UserService {
* 根据ID获取用户账户 * 根据ID获取用户账户
*/ */
public Mono<AccountResponse> getById(Long id) { public Mono<AccountResponse> getById(Long id) {
return Mono.fromCallable(() -> userAccountMapper.findById(id)) return Mono.fromCallable(() -> userAccountMapper.selectById(id))
.subscribeOn(Schedulers.boundedElastic()) .subscribeOn(Schedulers.boundedElastic())
.filter(Objects::nonNull) .filter(Objects::nonNull)
.map(this::toAccountResponse); .map(this::toAccountResponse);

View File

@@ -68,7 +68,7 @@ public class AccountService {
} }
public Mono<AccountResponse> get(Long id) { public Mono<AccountResponse> get(Long id) {
return Mono.fromCallable(() -> mapper.findById(id)) return Mono.fromCallable(() -> mapper.selectById(id))
.subscribeOn(Schedulers.boundedElastic()) .subscribeOn(Schedulers.boundedElastic())
.map(this::toResp); .map(this::toResp);
} }
@@ -76,7 +76,7 @@ public class AccountService {
@Transactional @Transactional
public Mono<AccountResponse> update(Long id, AccountUpdateRequest req) { public Mono<AccountResponse> update(Long id, AccountUpdateRequest req) {
return Mono.fromCallable(() -> { return Mono.fromCallable(() -> {
UserAccount db = mapper.findById(id); UserAccount db = mapper.selectById(id);
if (db == null) return null; if (db == null) return null;
// 验证用户名唯一性(如果要更新用户名) // 验证用户名唯一性(如果要更新用户名)
@@ -120,8 +120,8 @@ public class AccountService {
} }
} }
mapper.update(patch); mapper.updateById(patch);
return mapper.findById(id); return mapper.selectById(id);
}) })
.subscribeOn(Schedulers.boundedElastic()) .subscribeOn(Schedulers.boundedElastic())
.map(this::toResp); .map(this::toResp);

View File

@@ -59,7 +59,7 @@ public class LinkGenerationService {
} }
// 获取操作者账户信息 // 获取操作者账户信息
UserAccount operator = userAccountMapper.findById(operatorId); UserAccount operator = userAccountMapper.selectById(operatorId);
if (operator == null) { if (operator == null) {
throw new IllegalArgumentException("操作者账户不存在"); throw new IllegalArgumentException("操作者账户不存在");
} }
@@ -127,7 +127,7 @@ public class LinkGenerationService {
UserAccount patch = new UserAccount(); UserAccount patch = new UserAccount();
patch.setId(operator.getId()); patch.setId(operator.getId());
patch.setPointsBalance(after); patch.setPointsBalance(after);
userAccountMapper.update(patch); userAccountMapper.updateById(patch);
} }
GenerateResult result = new GenerateResult(); GenerateResult result = new GenerateResult();

View File

@@ -12,11 +12,18 @@ spring:
minimum-idle: 2 minimum-idle: 2
connection-timeout: 30000 connection-timeout: 30000
mybatis: mybatis-plus:
mapper-locations: classpath:mapper/**/*.xml mapper-locations: classpath:mapper/**/*.xml
type-aliases-package: com.gameplatform.server.model type-aliases-package: com.gameplatform.server.model.entity
configuration: configuration:
map-underscore-to-camel-case: true map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: auto
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
server: server:
port: 18080 port: 18080
@@ -31,7 +38,7 @@ logging:
level: level:
root: info root: info
com.gameplatform.server: debug com.gameplatform.server: debug
org.mybatis: debug com.baomidou.mybatisplus: debug
org.apache.ibatis: debug org.apache.ibatis: debug
com.zaxxer.hikari: info com.zaxxer.hikari: info

View File

@@ -27,26 +27,7 @@
LIMIT 1 LIMIT 1
</select> </select>
<select id="findById" parameterType="long" resultMap="UserAccountMap">
SELECT id, user_type, username, password_hash, status, points_balance, created_at, updated_at
FROM user_account
WHERE id = #{id}
LIMIT 1
</select>
<insert id="insert" parameterType="com.gameplatform.server.model.entity.account.UserAccount" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user_account (user_type, username, password_hash, status, points_balance)
VALUES (#{userType}, #{username}, #{passwordHash}, #{status}, #{pointsBalance})
</insert>
<update id="update" parameterType="com.gameplatform.server.model.entity.account.UserAccount">
UPDATE user_account
<set>
<if test="status != null">status = #{status},</if>
<if test="pointsBalance != null">points_balance = #{pointsBalance},</if>
</set>
WHERE id = #{id}
</update>
<update id="setStatus"> <update id="setStatus">
UPDATE user_account SET status = #{status} WHERE id = #{id} UPDATE user_account SET status = #{status} WHERE id = #{id}