From ed171eda88ec7e99e60e9c593b4ee129fb6e6b44 Mon Sep 17 00:00:00 2001
From: guotao <499836921@qq.com>
Date: Fri, 9 Jan 2026 12:20:44 +0800
Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E6=AC=A1=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 210 ++++++++++--------
.../xjhs/findmemerchant/common/ApiResult.java | 14 +-
.../xjhs/findmemerchant/common/ErrorCode.java | 16 +-
.../common/jackson/JsonLong.java | 2 +-
.../common/jackson/SafeLongDeserializer.java | 16 +-
.../common/jpa/AbstractBaseEntity.java | 17 +-
.../common/jpa/id/SnowflakeGenerated.java | 2 +-
.../common/jpa/id/SnowflakeIdGenerator.java | 2 +-
.../common/jpa/id/SnowflakeIdWorker.java | 2 +-
.../common/jpa/json/HashMapJsonConverter.java | 2 +-
.../jpa/json/StringListJsonConverter.java | 2 +-
.../common/mvc/GlobalResponseHandler.java | 70 +++++-
.../findmemerchant/common/mvc/PageVo.java | 20 ++
.../findmemerchant/config/JacksonConfig.java | 1 +
.../xjhs/findmemerchant/config/JpaConfig.java | 26 +++
.../controller/AuthController.java | 65 +++---
.../controller/MerchantController.java | 67 +++---
.../controller/StoreController.java | 162 +++++++++++---
.../controller/StoreEmployeeController.java | 153 +++++++++++++
.../xjhs/findmemerchant/dto/MerchantDto.java | 13 +-
.../findmemerchant/dto/auth/RegisterDto.java | 33 ++-
.../dto/member/EmployeeDto.java | 36 +++
.../dto/store/BusinessPeriodDto.java | 18 +-
.../dto/store/StoreBusinessStatusDto.java | 32 +++
.../findmemerchant/dto/store/StoreDto.java | 10 +-
.../xjhs/findmemerchant/entity/BankCard.java | 8 +-
.../entity/BusinessLicense.java | 6 +-
.../findmemerchant/entity/BusinessPeriod.java | 10 +-
.../xjhs/findmemerchant/entity/Coupon.java | 22 +-
.../findmemerchant/entity/CouponCode.java | 6 +-
.../xjhs/findmemerchant/entity/Employee.java | 16 +-
.../entity/HealthCertificate.java | 6 +-
.../xjhs/findmemerchant/entity/Member.java | 8 +-
.../xjhs/findmemerchant/entity/Merchant.java | 14 +-
.../xjhs/findmemerchant/entity/Message.java | 18 +-
.../com/xjhs/findmemerchant/entity/Order.java | 10 +-
.../xjhs/findmemerchant/entity/OrderItem.java | 15 +-
.../xjhs/findmemerchant/entity/Product.java | 19 +-
.../entity/ProductCategory.java | 8 +-
.../findmemerchant/entity/ProductSKU.java | 13 +-
.../xjhs/findmemerchant/entity/Review.java | 28 +--
.../findmemerchant/entity/ReviewReply.java | 15 +-
.../com/xjhs/findmemerchant/entity/Role.java | 10 +-
.../findmemerchant/entity/Settlement.java | 22 +-
.../com/xjhs/findmemerchant/entity/Store.java | 47 ++--
.../findmemerchant/entity/Transaction.java | 15 +-
.../xjhs/findmemerchant/entity/Wallet.java | 30 +--
.../findmemerchant/entity/Withdrawal.java | 16 +-
.../findmemerchant/mapper/EmployeeMapper.java | 18 +-
.../findmemerchant/mapper/MerchantMapper.java | 3 +
.../findmemerchant/mapper/StoreMapper.java | 15 ++
.../repository/ActivityRepository.java | 5 +-
.../repository/BankCardRepository.java | 10 +-
.../repository/BusinessLicenseRepository.java | 4 +-
.../repository/BusinessPeriodRepository.java | 4 +-
.../repository/CouponCodeRepository.java | 4 +-
.../repository/CouponRepository.java | 11 +-
.../repository/CouponStoreRepository.java | 6 +-
.../repository/EmployeeRepository.java | 13 --
.../HealthCertificateRepository.java | 4 +-
.../repository/MemberRepository.java | 6 +-
.../repository/MerchantRepository.java | 2 +-
.../repository/MessageRepository.java | 11 +-
.../repository/OrderItemRepository.java | 5 +-
.../repository/OrderRepository.java | 7 +-
.../repository/ProductCategoryRepository.java | 6 +-
.../repository/ProductRepository.java | 8 +-
.../repository/ReviewRepository.java | 2 +-
.../repository/SettlementRepository.java | 2 +-
.../repository/StoreRepository.java | 2 +-
.../repository/TransactionRepository.java | 2 +-
.../repository/WalletRepository.java | 4 +-
.../repository/WithdrawalRepository.java | 2 +-
.../security/JwtAuthenticationFilter.java | 2 +-
.../security/JwtTokenService.java | 3 +-
.../sms/SmsAuthenticationProvider.java | 2 +-
.../service/MerchantService.java | 22 +-
.../findmemerchant/service/StoreService.java | 2 +-
.../findmemerchant/types/ActivityStatus.java | 13 +-
.../findmemerchant/types/ActivityType.java | 9 +
.../xjhs/findmemerchant/types/AuthStatus.java | 8 +-
.../types/BusinessLicenseStatus.java | 9 +
.../findmemerchant/types/BusinessStatus.java | 9 +
.../findmemerchant/types/CommonStatus.java | 6 +
.../types/CouponCodeStatus.java | 31 +--
.../findmemerchant/types/CouponStatus.java | 9 +
.../xjhs/findmemerchant/types/CouponType.java | 12 +
.../types/HealthCertificateStatus.java | 9 +
.../findmemerchant/types/MessageType.java | 9 +
.../findmemerchant/types/OrderStatus.java | 15 ++
.../findmemerchant/types/ProductStatus.java | 6 +
.../findmemerchant/types/ReviewStatus.java | 6 +
.../types/SettlementStatus.java | 6 +
.../findmemerchant/types/SettlementType.java | 6 +
.../types/StoreAuditStatus.java | 9 +
.../findmemerchant/types/TransactionType.java | 15 ++
.../types/WithdrawalStatus.java | 15 ++
.../findmemerchant/vo/auth/SmsLoginVo.java | 2 +-
.../findmemerchant/vo/auth/SmsSendVo.java | 2 +-
.../vo/member/EmployeeCreateVo.java | 33 +++
.../vo/member/EmployeeUpdateVo.java | 18 ++
.../vo/merchant/MerchantUpdateVo.java | 2 +-
.../vo/merchant/MerchantVerifyVo.java | 2 +-
.../vo/store/BusinessPeriodVo.java | 26 +++
.../vo/store/StoreBusinessStatusUpdateVo.java | 20 ++
src/main/resources/application-local.yml | 14 ++
src/main/resources/application.yml | 33 +++
107 files changed, 1370 insertions(+), 524 deletions(-)
diff --git a/pom.xml b/pom.xml
index 6c527b8..28f0542 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,102 +1,120 @@
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 4.0.1
-
-
- com.xjhs.findme.merchant
- findme-merchant
- 0.0.1-SNAPSHOT
- findme-backend-merchant-java
- findme-backend-merchant-java
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 25
-
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
- org.springframework.boot
- spring-boot-starter-data-jpa
-
-
- org.springframework.boot
- spring-boot-starter-webmvc
-
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.5.9
+
+
+ com.xjhs.findmemerchant
+ findme-backend-merchant-java
+ 0.0.1-SNAPSHOT
+ findme-backend-merchant-java
+ findme-backend-merchant-java
-
- com.mysql
- mysql-connector-j
- runtime
-
-
- org.projectlombok
- lombok
- true
-
-
- org.springframework.boot
- spring-boot-starter-actuator-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-data-jpa-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-webmvc-test
- test
-
-
+
+ 25
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+ com.mysql
+ mysql-connector-j
+ runtime
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.mapstruct
+ mapstruct
+ 1.6.3
+
+
+ org.projectlombok
+ lombok-mapstruct-binding
+ 0.2.0
+
+
+ org.bitbucket.b_c
+ jose4j
+ 0.9.6
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ org.apache.commons
+ commons-lang3
+ 3.18.0
+
+
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
-
- org.projectlombok
- lombok
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
- org.projectlombok
- lombok
-
-
-
-
-
-
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ org.mapstruct
+ mapstruct-processor
+ 1.6.3
+
+
+ org.projectlombok
+ lombok
+
+
+ org.projectlombok
+ lombok-mapstruct-binding
+ 0.2.0
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+
+
diff --git a/src/main/java/com/xjhs/findmemerchant/common/ApiResult.java b/src/main/java/com/xjhs/findmemerchant/common/ApiResult.java
index 40d6f72..d6a0458 100644
--- a/src/main/java/com/xjhs/findmemerchant/common/ApiResult.java
+++ b/src/main/java/com/xjhs/findmemerchant/common/ApiResult.java
@@ -66,18 +66,26 @@ public class ApiResult {
public static ApiResult fail(){
var result = new ApiResult();
- result.code = ErrorCode.FAIL;
- result.msg = ErrorCode.FAIL.getMsg();
+ result.code = ErrorCode.Fail;
+ result.msg = ErrorCode.Fail.getMsg();
return result;
}
public static ApiResult fail(String msg){
var result = new ApiResult();
- result.code = ErrorCode.FAIL;
+ result.code = ErrorCode.Fail;
result.msg = msg;
return result;
}
+ public static ApiResult fail(String msg,T data){
+ var result = new ApiResult();
+ result.code = ErrorCode.Fail;
+ result.msg = msg;
+ result.data = data;
+ return result;
+ }
+
public static ApiResult fail(ErrorCode errorCode){
var result = new ApiResult();
result.code = errorCode;
diff --git a/src/main/java/com/xjhs/findmemerchant/common/ErrorCode.java b/src/main/java/com/xjhs/findmemerchant/common/ErrorCode.java
index ca23ba3..9884ab1 100644
--- a/src/main/java/com/xjhs/findmemerchant/common/ErrorCode.java
+++ b/src/main/java/com/xjhs/findmemerchant/common/ErrorCode.java
@@ -11,10 +11,18 @@ import lombok.Getter;
@AllArgsConstructor
@Getter
public enum ErrorCode {
-
- OK(200,"操作成功"),
- FAIL(500,"fail"),
- Unauthorized(401,"Unauthorized")
+ /**
+ * 成功
+ */
+ OK(200,"成功"),
+ /**
+ * 失败
+ */
+ Fail(500,"失败"),
+ /**
+ * 未登录
+ */
+ Unauthorized(401,"未登录")
;
diff --git a/src/main/java/com/xjhs/findmemerchant/common/jackson/JsonLong.java b/src/main/java/com/xjhs/findmemerchant/common/jackson/JsonLong.java
index 4e4acea..7083cf5 100644
--- a/src/main/java/com/xjhs/findmemerchant/common/jackson/JsonLong.java
+++ b/src/main/java/com/xjhs/findmemerchant/common/jackson/JsonLong.java
@@ -10,5 +10,5 @@ import java.lang.annotation.*;
@Documented
@JacksonAnnotationsInside
@JsonDeserialize(using = SafeLongDeserializer.class)
-public @interface JsonDeserializeToLong {
+public @interface JsonLong {
}
diff --git a/src/main/java/com/xjhs/findmemerchant/common/jackson/SafeLongDeserializer.java b/src/main/java/com/xjhs/findmemerchant/common/jackson/SafeLongDeserializer.java
index e051b0a..ae72dae 100644
--- a/src/main/java/com/xjhs/findmemerchant/common/jackson/SafeLongDeserializer.java
+++ b/src/main/java/com/xjhs/findmemerchant/common/jackson/SafeLongDeserializer.java
@@ -1,4 +1,18 @@
package com.xjhs.findmemerchant.common.jackson;
-public class SafeLongDeserializer {
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+
+import java.io.IOException;
+
+public class SafeLongDeserializer extends JsonDeserializer {
+ @Override
+ public Long deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
+ String value = p.getText();
+ if (value == null || value.isBlank()) {
+ return null;
+ }
+ return Long.valueOf(value);
+ }
}
diff --git a/src/main/java/com/xjhs/findmemerchant/common/jpa/AbstractBaseEntity.java b/src/main/java/com/xjhs/findmemerchant/common/jpa/AbstractBaseEntity.java
index bf3dda8..0d16da2 100644
--- a/src/main/java/com/xjhs/findmemerchant/common/jpa/AbstractBaseEntity.java
+++ b/src/main/java/com/xjhs/findmemerchant/common/jpa/AbstractBaseEntity.java
@@ -1,10 +1,7 @@
package com.xjhs.findmemerchant.common.jpa;
-import com.xjhs.findmemerchant.adapter.id.SnowflakeGenerated;
-import jakarta.persistence.Column;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.Id;
-import jakarta.persistence.MappedSuperclass;
+import com.xjhs.findmemerchant.common.jpa.id.SnowflakeGenerated;
+import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.Comment;
@@ -12,12 +9,14 @@ import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.time.LocalDateTime;
@MappedSuperclass
@Getter
@Setter
+@EntityListeners(AuditingEntityListener.class)
public class AbstractBaseEntity {
/**
* 主键(雪花 ID)
@@ -40,9 +39,9 @@ public class AbstractBaseEntity {
* 创建人
*/
@CreatedBy
- @Column(name = "created_at", nullable = false, updatable = false)
+ @Column(name = "created_by", nullable = false, updatable = false)
@Comment("创建人")
- private String createdBy;
+ private Long createdBy;
/**
* 更新时间
@@ -55,9 +54,9 @@ public class AbstractBaseEntity {
* 更新人
*/
@LastModifiedBy
- @Column(name = "updated_at", nullable = false)
+ @Column(name = "updated_by")
@Comment("更新人")
- private String updatedBy;
+ private Long updatedBy;
/**
* 软删除时间(null 表示未删除)
*/
diff --git a/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeGenerated.java b/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeGenerated.java
index 273632e..64e7a3f 100644
--- a/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeGenerated.java
+++ b/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeGenerated.java
@@ -1,4 +1,4 @@
-package com.xjhs.findmemerchant.adapter.id;
+package com.xjhs.findmemerchant.common.jpa.id;
import org.hibernate.annotations.IdGeneratorType;
diff --git a/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeIdGenerator.java b/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeIdGenerator.java
index 6ce7186..bf9d7d4 100644
--- a/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeIdGenerator.java
+++ b/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeIdGenerator.java
@@ -1,4 +1,4 @@
-package com.xjhs.findmemerchant.adapter.id;
+package com.xjhs.findmemerchant.common.jpa.id;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.IdentifierGenerator;
diff --git a/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeIdWorker.java b/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeIdWorker.java
index 0f660df..1548c0b 100644
--- a/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeIdWorker.java
+++ b/src/main/java/com/xjhs/findmemerchant/common/jpa/id/SnowflakeIdWorker.java
@@ -1,4 +1,4 @@
-package com.xjhs.findmemerchant.adapter.id;
+package com.xjhs.findmemerchant.common.jpa.id;
/**
* 雪花Id生成器
diff --git a/src/main/java/com/xjhs/findmemerchant/common/jpa/json/HashMapJsonConverter.java b/src/main/java/com/xjhs/findmemerchant/common/jpa/json/HashMapJsonConverter.java
index da3d541..473ff45 100644
--- a/src/main/java/com/xjhs/findmemerchant/common/jpa/json/HashMapJsonConverter.java
+++ b/src/main/java/com/xjhs/findmemerchant/common/jpa/json/HashMapJsonConverter.java
@@ -1,4 +1,4 @@
-package com.xjhs.findmemerchant.adapter.json;
+package com.xjhs.findmemerchant.common.jpa.json;
import com.fasterxml.jackson.core.type.TypeReference;
diff --git a/src/main/java/com/xjhs/findmemerchant/common/jpa/json/StringListJsonConverter.java b/src/main/java/com/xjhs/findmemerchant/common/jpa/json/StringListJsonConverter.java
index 0d3dde0..20c6cb6 100644
--- a/src/main/java/com/xjhs/findmemerchant/common/jpa/json/StringListJsonConverter.java
+++ b/src/main/java/com/xjhs/findmemerchant/common/jpa/json/StringListJsonConverter.java
@@ -1,4 +1,4 @@
-package com.xjhs.findmemerchant.adapter.json;
+package com.xjhs.findmemerchant.common.jpa.json;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/src/main/java/com/xjhs/findmemerchant/common/mvc/GlobalResponseHandler.java b/src/main/java/com/xjhs/findmemerchant/common/mvc/GlobalResponseHandler.java
index acac268..677cc44 100644
--- a/src/main/java/com/xjhs/findmemerchant/common/mvc/GlobalResponseHandler.java
+++ b/src/main/java/com/xjhs/findmemerchant/common/mvc/GlobalResponseHandler.java
@@ -1,4 +1,72 @@
package com.xjhs.findmemerchant.common.mvc;
-public class GlobalResponseHandler {
+import com.xjhs.findmemerchant.common.ApiResult;
+import jakarta.validation.ConstraintViolationException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.MethodParameter;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.lang.Nullable;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * mvc响应处理器 & 统一异常处理器
+ */
+@Slf4j
+@RestControllerAdvice
+public class GlobalResponseHandler implements ResponseBodyAdvice