From 1d6d8d00b5f0a23bcfd608146dbbeffa7d3eb7de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=97=AD?= <2795210596@qq.com>
Date: Fri, 11 Apr 2025 01:29:33 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9C=AC=E5=9C=B0=E7=94=9F?=
=?UTF-8?q?=E6=B4=BB=E6=A8=A1=E5=9D=97=EF=BC=8C=E5=88=9B=E5=BB=BA=E7=90=83?=
=?UTF-8?q?=E6=9D=86=E5=9B=9E=E6=94=B6=E5=9F=BA=E6=9C=AC=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 1 +
.../src/main/resources/bootstrap.yml | 4 +-
tmerclub-common/tmerclub-common-core/pom.xml | 4 +
.../cloud/common/model/BaseModel.java | 27 +----
.../com/tmerclub/cloud/common/vo/BaseVO.java | 25 +---
tmerclub-local/pom.xml | 109 ++++++++++++++++++
.../com/tmerclub/cloud/LocalApplication.java | 30 +++++
.../cloud/config/DubboBeanConfig.java | 18 +++
.../controller/admin/CueBrandController.java | 17 +++
.../admin/CueProductController.java | 17 +++
.../controller/admin/CueSeriesController.java | 17 +++
.../controller/admin/CueTypeController.java | 37 ++++++
.../controller/app/CueBrandController.java | 17 +++
.../controller/app/CueProductController.java | 17 +++
.../controller/app/CueSeriesController.java | 17 +++
.../controller/app/CueTypeController.java | 17 +++
.../cuerecycle/mapper/CueBrandMapper.java | 65 +++++++++++
.../cuerecycle/mapper/CueProductMapper.java | 64 ++++++++++
.../cuerecycle/mapper/CueSeriesMapper.java | 64 ++++++++++
.../cuerecycle/mapper/CueTypeMapper.java | 63 ++++++++++
.../cloud/cuerecycle/model/CueBrand.java | 46 ++++++++
.../cloud/cuerecycle/model/CueProduct.java | 55 +++++++++
.../cloud/cuerecycle/model/CueSeries.java | 42 +++++++
.../cloud/cuerecycle/model/CueType.java | 42 +++++++
.../cuerecycle/model/dto/CueBrandDTO.java | 43 +++++++
.../cuerecycle/model/dto/CueProductDTO.java | 52 +++++++++
.../cuerecycle/model/dto/CueSeriesDTO.java | 39 +++++++
.../cuerecycle/model/dto/CueTypeDTO.java | 38 ++++++
.../cloud/cuerecycle/model/vo/CueBrandVO.java | 39 +++++++
.../cuerecycle/model/vo/CueProductVO.java | 59 ++++++++++
.../cuerecycle/model/vo/CueSeriesVO.java | 33 ++++++
.../cloud/cuerecycle/model/vo/CueTypeVO.java | 38 ++++++
.../cuerecycle/service/CueBrandService.java | 10 ++
.../cuerecycle/service/CueProductService.java | 10 ++
.../cuerecycle/service/CueSeriesService.java | 10 ++
.../cuerecycle/service/CueTypeService.java | 39 +++++++
.../service/impl/CueBrandServiceImpl.java | 18 +++
.../service/impl/CueProductServiceImpl.java | 14 +++
.../service/impl/CueSeriesServiceImpl.java | 14 +++
.../service/impl/CueTypeServiceImpl.java | 41 +++++++
tmerclub-local/src/main/resources/banner.txt | 8 ++
.../src/main/resources/bootstrap.yml | 33 ++++++
tmerclub-local/src/main/resources/logback.xml | 45 ++++++++
.../main/resources/mapper/CueBrandMapper.xml | 101 ++++++++++++++++
.../resources/mapper/CueProductMapper.xml | 80 +++++++++++++
.../main/resources/mapper/CueSeriesMapper.xml | 101 ++++++++++++++++
.../main/resources/mapper/CueTypeMapper.xml | 97 ++++++++++++++++
47 files changed, 1729 insertions(+), 48 deletions(-)
create mode 100644 tmerclub-local/pom.xml
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/LocalApplication.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/config/DubboBeanConfig.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueBrandController.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueProductController.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueSeriesController.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueTypeController.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueBrandController.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueProductController.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueSeriesController.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueTypeController.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueBrandMapper.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueProductMapper.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueSeriesMapper.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueTypeMapper.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueBrand.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueProduct.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueSeries.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueType.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueBrandDTO.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueProductDTO.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueSeriesDTO.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueTypeDTO.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueBrandVO.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueProductVO.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueSeriesVO.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueTypeVO.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueBrandService.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueProductService.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueSeriesService.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueTypeService.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueBrandServiceImpl.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueProductServiceImpl.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueSeriesServiceImpl.java
create mode 100644 tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueTypeServiceImpl.java
create mode 100644 tmerclub-local/src/main/resources/banner.txt
create mode 100644 tmerclub-local/src/main/resources/bootstrap.yml
create mode 100644 tmerclub-local/src/main/resources/logback.xml
create mode 100644 tmerclub-local/src/main/resources/mapper/CueBrandMapper.xml
create mode 100644 tmerclub-local/src/main/resources/mapper/CueProductMapper.xml
create mode 100644 tmerclub-local/src/main/resources/mapper/CueSeriesMapper.xml
create mode 100644 tmerclub-local/src/main/resources/mapper/CueTypeMapper.xml
diff --git a/pom.xml b/pom.xml
index 4e46c6d..a988631 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,6 +24,7 @@
tmerclub-seckill
tmerclub-flow
tmerclub-im
+ tmerclub-local
pom
diff --git a/tmerclub-auth/src/main/resources/bootstrap.yml b/tmerclub-auth/src/main/resources/bootstrap.yml
index 061b7fa..2b12a8b 100644
--- a/tmerclub-auth/src/main/resources/bootstrap.yml
+++ b/tmerclub-auth/src/main/resources/bootstrap.yml
@@ -25,9 +25,9 @@ logging:
# dubbo端口:默认为服务端口+2000
dubbo:
+ registry:
+ group: yang
protocol:
port: ${TMERCLUB_DUBBO_PORT:11101}
consumer:
loadbalance: dev
- registry:
- group: dubbo-default
diff --git a/tmerclub-common/tmerclub-common-core/pom.xml b/tmerclub-common/tmerclub-common-core/pom.xml
index 1eb10eb..6abeeab 100644
--- a/tmerclub-common/tmerclub-common-core/pom.xml
+++ b/tmerclub-common/tmerclub-common-core/pom.xml
@@ -106,6 +106,10 @@
cn.hutool
hutool-extra
+
+ org.projectlombok
+ lombok
+
diff --git a/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/model/BaseModel.java b/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/model/BaseModel.java
index 7d4ce27..f0ec72d 100644
--- a/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/model/BaseModel.java
+++ b/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/model/BaseModel.java
@@ -1,6 +1,8 @@
package com.tmerclub.cloud.common.model;
+import lombok.Data;
+
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
@@ -12,6 +14,7 @@ import java.util.Date;
*
* @author tmerclub
*/
+@Data
public class BaseModel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@@ -24,26 +27,4 @@ public class BaseModel implements Serializable {
* 更新时间
*/
protected Date updateTime;
-
- public Date getCreateTime() {
- return createTime;
- }
-
- public void setCreateTime(Date createTime) {
- this.createTime = createTime;
- }
-
- public Date getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(Date updateTime) {
- this.updateTime = updateTime;
- }
-
- @Override
- public String toString() {
- return "BaseModel{" + "createTime=" + createTime + ", updateTime=" + updateTime + '}';
- }
-
-}
+}
\ No newline at end of file
diff --git a/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/vo/BaseVO.java b/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/vo/BaseVO.java
index 224f797..a3146da 100644
--- a/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/vo/BaseVO.java
+++ b/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/vo/BaseVO.java
@@ -2,7 +2,7 @@
package com.tmerclub.cloud.common.vo;
import io.swagger.v3.oas.annotations.media.Schema;
-
+import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
@@ -14,6 +14,7 @@ import java.util.Date;
*
* @author tmerclub
*/
+@Data
public class BaseVO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@@ -28,26 +29,4 @@ public class BaseVO implements Serializable {
*/
@Schema(description = "更新时间")
protected Date updateTime;
-
- public Date getCreateTime() {
- return createTime;
- }
-
- public void setCreateTime(Date createTime) {
- this.createTime = createTime;
- }
-
- public Date getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(Date updateTime) {
- this.updateTime = updateTime;
- }
-
- @Override
- public String toString() {
- return "BaseDTO{" + "createTime=" + createTime + ", updateTime=" + updateTime + '}';
- }
-
}
diff --git a/tmerclub-local/pom.xml b/tmerclub-local/pom.xml
new file mode 100644
index 0000000..9479f30
--- /dev/null
+++ b/tmerclub-local/pom.xml
@@ -0,0 +1,109 @@
+
+
+
+ tmerclub
+ com.moyuer.cloud
+ 0.0.1
+
+ 4.0.0
+
+ tmerclub-local
+ 本地生活服务
+ jar
+
+
+
+ com.moyuer.cloud
+ tmerclub-common-database
+ ${project.version}
+
+
+ com.moyuer.cloud
+ tmerclub-common-core
+ ${project.version}
+
+
+ com.moyuer.cloud
+ tmerclub-common-security
+ ${project.version}
+
+
+ com.moyuer.cloud
+ tmerclub-common-leaf
+ ${project.version}
+
+
+ com.moyuer.cloud
+ tmerclub-common-rocketmq
+ ${project.version}
+
+
+ com.moyuer.cloud
+ tmerclub-api-marketing
+ ${project.version}
+
+
+ com.moyuer.cloud
+ tmerclub-api-order
+ ${project.version}
+
+
+ com.moyuer.cloud
+ tmerclub-api-search
+ ${project.version}
+
+
+ com.github.binarywang
+ weixin-java-miniapp
+
+
+ com.moyuer.cloud
+ tmerclub-api-admin
+ ${project.version}
+
+
+ com.xuxueli
+ xxl-job-core
+
+
+ com.github.binarywang
+ weixin-java-mp
+
+
+ com.github.binarywang
+ weixin-java-pay
+
+
+ com.moyuer.cloud
+ tmerclub-api-biz
+ ${project.version}
+
+
+ com.moyuer.cloud
+ tmerclub-common-mongodb
+ ${project.version}
+
+
+ com.aliyun
+ aliyun-java-sdk-live
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+
+
+
+
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/LocalApplication.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/LocalApplication.java
new file mode 100644
index 0000000..f7c2562
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/LocalApplication.java
@@ -0,0 +1,30 @@
+
+package com.tmerclub.cloud;
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.context.ConfigurableApplicationContext;
+
+/**
+ * 本地生活启动类
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@SpringBootApplication(scanBasePackages = "com.tmerclub.cloud", exclude = UserDetailsServiceAutoConfiguration.class)
+@EnableDubbo(scanBasePackages = "com.tmerclub.cloud.**.feign")
+public class LocalApplication extends SpringBootServletInitializer {
+
+ public static void main(String[] args) {
+ ConfigurableApplicationContext applicationContext = SpringApplication.run(LocalApplication.class, args);
+ }
+
+ @Override
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
+ return builder.sources(LocalApplication.class);
+ }
+
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/config/DubboBeanConfig.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/config/DubboBeanConfig.java
new file mode 100644
index 0000000..b36e4a2
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/config/DubboBeanConfig.java
@@ -0,0 +1,18 @@
+package com.tmerclub.cloud.config;
+
+import com.tmerclub.cloud.api.auth.feign.TokenFeignClient;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Dubbo配置
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Configuration
+public class DubboBeanConfig {
+
+ @DubboReference
+ private TokenFeignClient tokenFeignClient;
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueBrandController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueBrandController.java
new file mode 100644
index 0000000..bac1b4d
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueBrandController.java
@@ -0,0 +1,17 @@
+package com.tmerclub.cloud.cuerecycle.controller.admin;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 球杆品牌
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Tag(name = "后管-球杆品牌")
+@RestController("adminCueBrandController")
+@RequestMapping("/admin/cueBrand")
+public class CueBrandController {
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueProductController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueProductController.java
new file mode 100644
index 0000000..b985f5b
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueProductController.java
@@ -0,0 +1,17 @@
+package com.tmerclub.cloud.cuerecycle.controller.admin;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 球杆商品
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Tag(name = "后管-球杆商品")
+@RestController("adminCueProductController")
+@RequestMapping("/admin/cueProduct")
+public class CueProductController {
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueSeriesController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueSeriesController.java
new file mode 100644
index 0000000..bfcca20
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueSeriesController.java
@@ -0,0 +1,17 @@
+package com.tmerclub.cloud.cuerecycle.controller.admin;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 球杆系列
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Tag(name = "后管-球杆系列")
+@RestController("adminCueSeriesController")
+@RequestMapping("/admin/cueSeries")
+public class CueSeriesController {
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueTypeController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueTypeController.java
new file mode 100644
index 0000000..a48796d
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueTypeController.java
@@ -0,0 +1,37 @@
+package com.tmerclub.cloud.cuerecycle.controller.admin;
+
+import com.tmerclub.cloud.common.response.ServerResponseEntity;
+import com.tmerclub.cloud.cuerecycle.model.dto.CueTypeDTO;
+import com.tmerclub.cloud.cuerecycle.service.CueTypeService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 球杆类型
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Tag(name = "后管-球杆类型")
+@RestController("adminCueTypeController")
+@RequestMapping("/admin/cueType")
+public class CueTypeController {
+ @Resource
+ CueTypeService cueTypeService;
+
+ @PostMapping
+ @Operation(summary = "保存球杆类型", description = "保存球杆类型")
+ public ServerResponseEntity save(@Valid @RequestBody CueTypeDTO couponDTO) {
+ int insert = cueTypeService.insert(couponDTO);
+ if (insert <= 0) {
+ return ServerResponseEntity.showFailMsg("保存球杆类型失败");
+ }
+ return ServerResponseEntity.success();
+ }
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueBrandController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueBrandController.java
new file mode 100644
index 0000000..c33099f
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueBrandController.java
@@ -0,0 +1,17 @@
+package com.tmerclub.cloud.cuerecycle.controller.app;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 球杆品牌
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Tag(name = "App-球杆品牌")
+@RestController("appCueBrandController")
+@RequestMapping("/app/cueBrand")
+public class CueBrandController {
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueProductController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueProductController.java
new file mode 100644
index 0000000..6726112
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueProductController.java
@@ -0,0 +1,17 @@
+package com.tmerclub.cloud.cuerecycle.controller.app;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 球杆商品
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Tag(name = "App-球杆商品")
+@RestController("appCueProductController")
+@RequestMapping("/app/cueProduct")
+public class CueProductController {
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueSeriesController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueSeriesController.java
new file mode 100644
index 0000000..f39eb18
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueSeriesController.java
@@ -0,0 +1,17 @@
+package com.tmerclub.cloud.cuerecycle.controller.app;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 球杆系列
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Tag(name = "App-球杆系列")
+@RestController("appCueSeriesController")
+@RequestMapping("/app/cueSeries")
+public class CueSeriesController {
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueTypeController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueTypeController.java
new file mode 100644
index 0000000..6938ce7
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueTypeController.java
@@ -0,0 +1,17 @@
+package com.tmerclub.cloud.cuerecycle.controller.app;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 球杆类型
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Tag(name = "App-球杆类型")
+@RestController("appCueTypeController")
+@RequestMapping("/app/cueType")
+public class CueTypeController {
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueBrandMapper.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueBrandMapper.java
new file mode 100644
index 0000000..b4420ed
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueBrandMapper.java
@@ -0,0 +1,65 @@
+package com.tmerclub.cloud.cuerecycle.mapper;
+
+import com.tmerclub.cloud.cuerecycle.model.CueBrand;
+import com.tmerclub.cloud.cuerecycle.model.dto.CueBrandDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 球杆品牌Mapper接口
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+public interface CueBrandMapper {
+
+ /**
+ * 根据主键查询
+ *
+ * @param id 主键
+ * @return 球杆品牌
+ */
+ CueBrand selectById(Long id);
+
+ /**
+ * 根据类型查询
+ *
+ * @param typeId 类型
+ * @return 球杆品牌
+ */
+ List listByType(Long typeId);
+
+ /**
+ * 根据条件查询
+ *
+ * @param query 查询条件
+ * @return 球杆品牌
+ */
+ List list(CueBrandDTO query);
+
+ /**
+ * 新增
+ *
+ * @param brand 球杆品牌
+ * @return 影响行数
+ */
+ int insert(CueBrand brand);
+
+ /**
+ * 修改
+ *
+ * @param brand 球杆品牌
+ * @return 影响行数
+ */
+ int update(CueBrand brand);
+
+ /**
+ * 修改状态
+ *
+ * @param id 主键
+ * @param status 状态
+ * @return 影响行数
+ */
+ int updateStatus(@Param("id") Long id, @Param("status") Integer status);
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueProductMapper.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueProductMapper.java
new file mode 100644
index 0000000..cc8196b
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueProductMapper.java
@@ -0,0 +1,64 @@
+package com.tmerclub.cloud.cuerecycle.mapper;
+
+import com.tmerclub.cloud.cuerecycle.model.CueProduct;
+import com.tmerclub.cloud.cuerecycle.model.dto.CueProductDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 球杆商品Mapper接口
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+public interface CueProductMapper {
+ /**
+ * 根据主键id查询
+ *
+ * @param id 主键id
+ * @return 球杆商品
+ */
+ CueProduct selectById(Long id);
+
+ /**
+ * 根据系列id查询列表
+ *
+ * @param seriesId 系列id
+ * @return 球杆商品列表
+ */
+ List listBySeries(Long seriesId);
+
+ /**
+ * 查询列表
+ *
+ * @param query 查询条件
+ * @return 球杆商品列表
+ */
+ List list(CueProductDTO query);
+
+ /**
+ * 新增
+ *
+ * @param product 球杆商品
+ * @return 影响行数
+ */
+ int insert(CueProduct product);
+
+ /**
+ * 修改
+ *
+ * @param product 球杆商品
+ * @return 影响行数
+ */
+ int update(CueProduct product);
+
+ /**
+ * 修改状态
+ *
+ * @param id 主键id
+ * @param status 状态
+ * @return 影响行数
+ */
+ int updateStatus(@Param("id") Long id, @Param("status") Integer status);
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueSeriesMapper.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueSeriesMapper.java
new file mode 100644
index 0000000..c479dff
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueSeriesMapper.java
@@ -0,0 +1,64 @@
+package com.tmerclub.cloud.cuerecycle.mapper;
+
+import com.tmerclub.cloud.cuerecycle.model.CueSeries;
+import com.tmerclub.cloud.cuerecycle.model.dto.CueSeriesDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 球杆系列Mapper接口
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+public interface CueSeriesMapper {
+ /**
+ * 根据id查询球杆系列
+ *
+ * @param id 主键id
+ * @return 对象
+ */
+ CueSeries selectById(Long id);
+
+ /**
+ * 根据品牌id查询球杆系列
+ *
+ * @param brandId 品牌id
+ * @return 对象集合
+ */
+ List listByBrand(Long brandId);
+
+ /**
+ * 根据条件查询球杆系列
+ *
+ * @param query 查询条件
+ * @return 对象集合
+ */
+ List list(CueSeriesDTO query);
+
+ /**
+ * 新增球杆系列
+ *
+ * @param series 球杆系列
+ * @return 影响行数
+ */
+ int insert(CueSeries series);
+
+ /**
+ * 更新球杆系列
+ *
+ * @param series 球杆系列
+ * @return 影响行数
+ */
+ int update(CueSeries series);
+
+ /**
+ * 修改状态
+ *
+ * @param id 主键id
+ * @param status 状态
+ * @return 影响行数
+ */
+ int updateStatus(@Param("id") Long id, @Param("status") Integer status);
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueTypeMapper.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueTypeMapper.java
new file mode 100644
index 0000000..7f33353
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueTypeMapper.java
@@ -0,0 +1,63 @@
+package com.tmerclub.cloud.cuerecycle.mapper;
+
+import com.tmerclub.cloud.cuerecycle.model.CueType;
+import com.tmerclub.cloud.cuerecycle.model.dto.CueTypeDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 球杆类型Mapper接口
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+public interface CueTypeMapper {
+ /**
+ * 根据id查询
+ *
+ * @param id 主键id
+ * @return 对象
+ */
+ CueType selectById(Long id);
+
+ /**
+ * 查询所有启用状态的数据
+ *
+ * @return 对象集合
+ */
+ List listEnabled();
+
+ /**
+ * 根据条件查询
+ *
+ * @param query 查询条件
+ * @return 对象集合
+ */
+ List list(CueTypeDTO query);
+
+ /**
+ * 新增
+ *
+ * @param cueType 对象
+ * @return 影响行数
+ */
+ int insert(CueType cueType);
+
+ /**
+ * 修改
+ *
+ * @param cueType 对象
+ * @return 影响行数
+ */
+ int update(CueType cueType);
+
+ /**
+ * 修改状态
+ *
+ * @param id 主键id
+ * @param status 状态
+ * @return 影响行数
+ */
+ int updateStatus(@Param("id") Long id, @Param("status") Integer status);
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueBrand.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueBrand.java
new file mode 100644
index 0000000..34d9e31
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueBrand.java
@@ -0,0 +1,46 @@
+package com.tmerclub.cloud.cuerecycle.model;
+
+import com.tmerclub.cloud.common.model.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 球杆品牌对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CueBrand extends BaseModel implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ private Long id;
+ /**
+ * 球杆类型id
+ */
+ private Long typeId;
+ /**
+ * 球杆品牌名称
+ */
+ private String name;
+ /**
+ * 球杆品牌logo
+ */
+ private String logo;
+ /**
+ * 排序
+ */
+ private Integer sort;
+ /**
+ * 状态
+ */
+ private Integer status;
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueProduct.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueProduct.java
new file mode 100644
index 0000000..1a0fda1
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueProduct.java
@@ -0,0 +1,55 @@
+package com.tmerclub.cloud.cuerecycle.model;
+
+import com.tmerclub.cloud.common.model.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 球杆商品对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CueProduct extends BaseModel implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ private Long id;
+ /**
+ * 系列id
+ */
+ private Long seriesId;
+ /**
+ * 商品名称
+ */
+ private String name;
+ /**
+ * 商品描述
+ */
+ private String description;
+ /**
+ * 商品图片
+ */
+ private String images;
+ /**
+ * 商品价格
+ */
+ private BigDecimal price;
+ /**
+ * 排序
+ */
+ private Integer sort;
+ /**
+ * 状态
+ */
+ private Integer status;
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueSeries.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueSeries.java
new file mode 100644
index 0000000..f569f79
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueSeries.java
@@ -0,0 +1,42 @@
+package com.tmerclub.cloud.cuerecycle.model;
+
+import com.tmerclub.cloud.common.model.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 球杆系列对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CueSeries extends BaseModel implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ private Long id;
+ /**
+ * 品牌id
+ */
+ private Long brandId;
+ /**
+ * 系列名称
+ */
+ private String name;
+ /**
+ * 排序
+ */
+ private Integer sort;
+ /**
+ * 状态
+ */
+ private Integer status;
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueType.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueType.java
new file mode 100644
index 0000000..e5b630d
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueType.java
@@ -0,0 +1,42 @@
+package com.tmerclub.cloud.cuerecycle.model;
+
+import com.tmerclub.cloud.common.model.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 球杆类型对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CueType extends BaseModel implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 球杆类型id
+ */
+ private Long id;
+ /**
+ * 球杆类型名称
+ */
+ private String name;
+ /**
+ * 球杆类型图片
+ */
+ private String image;
+ /**
+ * 排序
+ */
+ private Integer sort;
+ /**
+ * 状态
+ */
+ private Integer status;
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueBrandDTO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueBrandDTO.java
new file mode 100644
index 0000000..fa3a7d0
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueBrandDTO.java
@@ -0,0 +1,43 @@
+package com.tmerclub.cloud.cuerecycle.model.dto;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 球杆品牌业务对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+public class CueBrandDTO implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ private Long id;
+ /**
+ * 球杆类型id
+ */
+ private Long typeId;
+ /**
+ * 球杆品牌名称
+ */
+ private String name;
+ /**
+ * 球杆品牌logo
+ */
+ private String logo;
+ /**
+ * 排序
+ */
+ private Integer sort;
+ /**
+ * 状态
+ */
+ private Integer status;
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueProductDTO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueProductDTO.java
new file mode 100644
index 0000000..548ae10
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueProductDTO.java
@@ -0,0 +1,52 @@
+package com.tmerclub.cloud.cuerecycle.model.dto;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 球杆商品业务对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+public class CueProductDTO implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ private Long id;
+ /**
+ * 系列id
+ */
+ private Long seriesId;
+ /**
+ * 商品名称
+ */
+ private String name;
+ /**
+ * 商品描述
+ */
+ private String description;
+ /**
+ * 商品图片
+ */
+ private String images;
+ /**
+ * 商品价格
+ */
+ private BigDecimal price;
+ /**
+ * 排序
+ */
+ private Integer sort;
+ /**
+ * 状态
+ */
+ private Integer status;
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueSeriesDTO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueSeriesDTO.java
new file mode 100644
index 0000000..87e6ad5
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueSeriesDTO.java
@@ -0,0 +1,39 @@
+package com.tmerclub.cloud.cuerecycle.model.dto;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 球杆系列业务对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+public class CueSeriesDTO implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ private Long id;
+ /**
+ * 品牌id
+ */
+ private Long brandId;
+ /**
+ * 系列名称
+ */
+ private String name;
+ /**
+ * 排序
+ */
+ private Integer sort;
+ /**
+ * 状态
+ */
+ private Integer status;
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueTypeDTO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueTypeDTO.java
new file mode 100644
index 0000000..7162761
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueTypeDTO.java
@@ -0,0 +1,38 @@
+package com.tmerclub.cloud.cuerecycle.model.dto;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 球杆类型业务对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+public class CueTypeDTO implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+ /**
+ * 球杆类型id
+ */
+ private Long id;
+ /**
+ * 球杆类型名称
+ */
+ private String name;
+ /**
+ * 球杆类型图片
+ */
+ private String image;
+ /**
+ * 排序
+ */
+ private Integer sort;
+ /**
+ * 状态
+ */
+ private Integer status;
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueBrandVO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueBrandVO.java
new file mode 100644
index 0000000..344b1d3
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueBrandVO.java
@@ -0,0 +1,39 @@
+package com.tmerclub.cloud.cuerecycle.model.vo;
+
+import com.tmerclub.cloud.common.model.BaseModel;
+import com.tmerclub.cloud.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 球杆品牌视图对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CueBrandVO extends BaseVO implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Schema(description = "主键")
+ private Long id;
+ /**
+ * 球杆品牌名称
+ */
+ @Schema(description = "球杆品牌名称")
+ private String name;
+ /**
+ * 球杆品牌logo
+ */
+ @Schema(description = "球杆品牌logo")
+ private String logo;
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueProductVO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueProductVO.java
new file mode 100644
index 0000000..ab06224
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueProductVO.java
@@ -0,0 +1,59 @@
+package com.tmerclub.cloud.cuerecycle.model.vo;
+
+import com.tmerclub.cloud.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 球杆商品视图对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CueProductVO extends BaseVO implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Schema(description = "主键")
+ private Long id;
+ /**
+ * 商品名称
+ */
+ @Schema(description = "商品名称")
+ private String name;
+ /**
+ * 商品描述
+ */
+ @Schema(description = "商品描述")
+ private String description;
+ /**
+ * 商品图片
+ */
+ @Schema(description = "商品图片")
+ private String images;
+ /**
+ * 商品价格
+ */
+ @Schema(description = "商品价格")
+ private BigDecimal price;
+ /**
+ * 品牌名称
+ */
+ @Schema(description = "品牌名称")
+ private String brandName;
+ /**
+ * 品牌logo
+ */
+ @Schema(description = "品牌logo")
+ private String brandLogo;
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueSeriesVO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueSeriesVO.java
new file mode 100644
index 0000000..54beabd
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueSeriesVO.java
@@ -0,0 +1,33 @@
+package com.tmerclub.cloud.cuerecycle.model.vo;
+
+import com.tmerclub.cloud.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 球杆系列视图对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CueSeriesVO extends BaseVO implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Schema(description = "主键")
+ private Long id;
+ /**
+ * 系列名称
+ */
+ @Schema(description = "系列名称")
+ private String name;
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueTypeVO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueTypeVO.java
new file mode 100644
index 0000000..49888ff
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueTypeVO.java
@@ -0,0 +1,38 @@
+package com.tmerclub.cloud.cuerecycle.model.vo;
+
+import com.tmerclub.cloud.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 球杆类型视图对象
+ *
+ * @author: frank
+ * @create: 2025-04-10
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class CueTypeVO extends BaseVO implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 球杆类型id
+ */
+ @Schema(description = "球杆类型id")
+ private Long id;
+ /**
+ * 球杆类型名称
+ */
+ @Schema(description = "球杆类型名称")
+ private String name;
+ /**
+ * 球杆类型图片
+ */
+ @Schema(description = "球杆类型图片")
+ private String image;
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueBrandService.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueBrandService.java
new file mode 100644
index 0000000..9e15aa4
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueBrandService.java
@@ -0,0 +1,10 @@
+package com.tmerclub.cloud.cuerecycle.service;
+
+/**
+ * 球杆品牌Service接口
+ *
+ * @author: frank
+ * @create: 2025-04-11
+ **/
+public interface CueBrandService {
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueProductService.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueProductService.java
new file mode 100644
index 0000000..2eb66d7
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueProductService.java
@@ -0,0 +1,10 @@
+package com.tmerclub.cloud.cuerecycle.service;
+
+/**
+ * 球杆商品Service接口
+ *
+ * @author: frank
+ * @create: 2025-04-11
+ **/
+public interface CueProductService {
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueSeriesService.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueSeriesService.java
new file mode 100644
index 0000000..1e87961
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueSeriesService.java
@@ -0,0 +1,10 @@
+package com.tmerclub.cloud.cuerecycle.service;
+
+/**
+ * 球杆系列Service接口
+ *
+ * @author: frank
+ * @create: 2025-04-11
+ **/
+public interface CueSeriesService {
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueTypeService.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueTypeService.java
new file mode 100644
index 0000000..fbe9c0f
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueTypeService.java
@@ -0,0 +1,39 @@
+package com.tmerclub.cloud.cuerecycle.service;
+
+import com.tmerclub.cloud.cuerecycle.model.CueType;
+import com.tmerclub.cloud.cuerecycle.model.dto.CueTypeDTO;
+
+/**
+ * 球杆类型Service接口
+ *
+ * @author: frank
+ * @create: 2025-04-11
+ **/
+public interface CueTypeService {
+
+
+ /**
+ * 新增
+ *
+ * @param couponDTO 对象
+ * @return 影响行数
+ */
+ int insert(CueTypeDTO couponDTO);
+
+ /**
+ * 修改
+ *
+ * @param cueType 对象
+ * @return 影响行数
+ */
+ int update(CueType cueType);
+
+ /**
+ * 修改状态
+ *
+ * @param id 主键id
+ * @param status 状态
+ * @return 影响行数
+ */
+ int updateStatus(Long id, Integer status);
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueBrandServiceImpl.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueBrandServiceImpl.java
new file mode 100644
index 0000000..4a83db0
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueBrandServiceImpl.java
@@ -0,0 +1,18 @@
+package com.tmerclub.cloud.cuerecycle.service.impl;
+
+import com.tmerclub.cloud.cuerecycle.mapper.CueBrandMapper;
+import com.tmerclub.cloud.cuerecycle.service.CueBrandService;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+/**
+ * 球杆品牌Service接口
+ *
+ * @author: frank
+ * @create: 2025-04-11
+ **/
+@Service
+public class CueBrandServiceImpl implements CueBrandService {
+ @Resource
+ CueBrandMapper cueBrandMapper;
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueProductServiceImpl.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueProductServiceImpl.java
new file mode 100644
index 0000000..d796417
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueProductServiceImpl.java
@@ -0,0 +1,14 @@
+package com.tmerclub.cloud.cuerecycle.service.impl;
+
+import com.tmerclub.cloud.cuerecycle.service.CueProductService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 球杆商品Service接口
+ *
+ * @author: frank
+ * @create: 2025-04-11
+ **/
+@Service
+public class CueProductServiceImpl implements CueProductService {
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueSeriesServiceImpl.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueSeriesServiceImpl.java
new file mode 100644
index 0000000..4d4a837
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueSeriesServiceImpl.java
@@ -0,0 +1,14 @@
+package com.tmerclub.cloud.cuerecycle.service.impl;
+
+import com.tmerclub.cloud.cuerecycle.service.CueSeriesService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 球杆系列Service接口
+ *
+ * @author: frank
+ * @create: 2025-04-11
+ **/
+@Service
+public class CueSeriesServiceImpl implements CueSeriesService {
+}
diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueTypeServiceImpl.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueTypeServiceImpl.java
new file mode 100644
index 0000000..b748ea5
--- /dev/null
+++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueTypeServiceImpl.java
@@ -0,0 +1,41 @@
+package com.tmerclub.cloud.cuerecycle.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
+import com.tmerclub.cloud.cuerecycle.mapper.CueTypeMapper;
+import com.tmerclub.cloud.cuerecycle.model.CueType;
+import com.tmerclub.cloud.cuerecycle.model.dto.CueTypeDTO;
+import com.tmerclub.cloud.cuerecycle.service.CueTypeService;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+
+/**
+ * 球杆类型Service接口
+ *
+ * @author: frank
+ * @create: 2025-04-11
+ **/
+@Service
+public class CueTypeServiceImpl implements CueTypeService {
+ @Resource
+ CueTypeMapper cueTypeMapper;
+
+
+ @Override
+ public int insert(CueTypeDTO couponDTO) {
+ CueType cueType = BeanUtil.toBean(couponDTO, CueType.class);
+ cueType.setCreateTime(DateUtil.date());
+ return cueTypeMapper.insert(cueType);
+ }
+
+ @Override
+ public int update(CueType cueType) {
+ cueType.setUpdateTime(DateUtil.date());
+ return cueTypeMapper.update(cueType);
+ }
+
+ @Override
+ public int updateStatus(Long id, Integer status) {
+ return cueTypeMapper.updateStatus(id, status);
+ }
+}
\ No newline at end of file
diff --git a/tmerclub-local/src/main/resources/banner.txt b/tmerclub-local/src/main/resources/banner.txt
new file mode 100644
index 0000000..785e082
--- /dev/null
+++ b/tmerclub-local/src/main/resources/banner.txt
@@ -0,0 +1,8 @@
+_________ _______ _______ _______ _______ _ ______ _ _______ _______ _______ _
+\__ __/( )( ____ \( ____ )( ____ \( \ |\ /|( ___ \ ( \ ( ___ )( ____ \( ___ )( \
+ ) ( | () () || ( \/| ( )|| ( \/| ( | ) ( || ( ) ) | ( | ( ) || ( \/| ( ) || (
+ | | | || || || (__ | (____)|| | | | | | | || (__/ / _____ | | | | | || | | (___) || |
+ | | | |(_)| || __) | __)| | | | | | | || __ ( (_____) | | | | | || | | ___ || |
+ | | | | | || ( | (\ ( | | | | | | | || ( \ \ | | | | | || | | ( ) || |
+ | | | ) ( || (____/\| ) \ \__| (____/\| (____/\| (___) || )___) ) | (____/\| (___) || (____/\| ) ( || (____/\
+ )_( |/ \|(_______/|/ \__/(_______/(_______/(_______)|/ \___/ (_______/(_______)(_______/|/ \|(_______/
\ No newline at end of file
diff --git a/tmerclub-local/src/main/resources/bootstrap.yml b/tmerclub-local/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..f9737a6
--- /dev/null
+++ b/tmerclub-local/src/main/resources/bootstrap.yml
@@ -0,0 +1,33 @@
+server:
+ port: ${TMERCLUB_MARKETING_PORT:9110}
+spring:
+ application:
+ name: @artifactId@
+ cloud:
+ nacos:
+ discovery:
+ server-addr: ${NACOS_HOST:101.37.204.35}:${NACOS_PORT:8848}
+ username: ${NACOS_USERNAME:nacos}
+ password: ${NACOS_PASSWORD:BYzL!Z3C}
+ namespace: ${NACOS_NAMESPACE:}
+ ip: ${HOSTIP:}
+ config:
+ server-addr: ${spring.cloud.nacos.discovery.server-addr}
+ file-extension: yml
+ shared-configs:
+ - application.${spring.cloud.nacos.config.file-extension}
+ username: ${spring.cloud.nacos.discovery.username}
+ password: ${spring.cloud.nacos.discovery.password}
+ namespace: ${spring.cloud.nacos.discovery.namespace}
+logging:
+ tracer:
+ pattern: '%5p [${spring.application.name:},%X{X-B3-Parent-SpanName},%X{X-B3-TraceId},%X{X-B3-SpanId}]'
+
+# dubbo端口:默认为服务端口+2000
+dubbo:
+ protocol:
+ port: ${tmerclub_DUBBO_PORT:11109}
+ consumer:
+ loadbalance: dev
+ registry:
+ group: dubbo-yang
diff --git a/tmerclub-local/src/main/resources/logback.xml b/tmerclub-local/src/main/resources/logback.xml
new file mode 100644
index 0000000..139f3c5
--- /dev/null
+++ b/tmerclub-local/src/main/resources/logback.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+ ${FILE_LOG_PATTERN}
+ UTF-8
+
+ ${PROJECT_PATH}/marketing/marketing.log
+
+
+ ${logging.level}
+
+
+ ${PROJECT_PATH}/${APPLICATION_NAME}/%d{yyyy-MM}/marketing-%d{yyyy-MM-dd}-%i.log.gz
+ ${LOG_FILE_MAX_SIZE}
+ ${LOG_FILE_MAX_HISTORY}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tmerclub-local/src/main/resources/mapper/CueBrandMapper.xml b/tmerclub-local/src/main/resources/mapper/CueBrandMapper.xml
new file mode 100644
index 0000000..94eb451
--- /dev/null
+++ b/tmerclub-local/src/main/resources/mapper/CueBrandMapper.xml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, type_id, name, logo, image, sort, status, create_time, update_time
+
+
+
+
+
+
+
+
+
+ INSERT INTO cue_brand
+
+
+ type_id,
+ name,
+ logo,
+ sort,
+ status,
+ create_time,
+
+
+ #{typeId},
+ #{name},
+ #{logo},
+ #{sort},
+ #{status},
+ #{createTime},
+
+
+
+
+ UPDATE cue_brand
+
+ type_id = #{typeId},
+ name = #{name},
+ logo = #{logo},
+ sort = #{sort},
+ status = #{status},
+
+ WHERE id = #{id}
+
+
+ UPDATE
+ cue_brand
+ SET
+ status = #{status}
+ WHERE
+ id = #{id}
+
+
\ No newline at end of file
diff --git a/tmerclub-local/src/main/resources/mapper/CueProductMapper.xml b/tmerclub-local/src/main/resources/mapper/CueProductMapper.xml
new file mode 100644
index 0000000..b2da6a5
--- /dev/null
+++ b/tmerclub-local/src/main/resources/mapper/CueProductMapper.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, series_id, name, description, images, price, sort, status, create_time, update_time
+
+
+
+
+
+
+
+
+
+ INSERT INTO cue_product (series_id, name, description, images, price, sort, status)
+ VALUES (#{seriesId}, #{name}, #{description}, #{images}, #{price}, #{sort}, #{status})
+
+
+
+ UPDATE cue_product
+
+ series_id = #{seriesId},
+ name = #{name},
+ description = #{description},
+ images = #{images},
+ price = #{price},
+ sort = #{sort},
+ status = #{status},
+
+ WHERE id = #{id}
+
+
+
+ UPDATE
+ cue_product
+ SET
+ status = #{status}
+ WHERE
+ id = #{id}
+
+
\ No newline at end of file
diff --git a/tmerclub-local/src/main/resources/mapper/CueSeriesMapper.xml b/tmerclub-local/src/main/resources/mapper/CueSeriesMapper.xml
new file mode 100644
index 0000000..facc59a
--- /dev/null
+++ b/tmerclub-local/src/main/resources/mapper/CueSeriesMapper.xml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, brand_id, name, sort, status, create_time, update_time
+
+
+
+
+
+
+
+
+
+ INSERT INTO cue_series
+
+ brand_id,
+ name,
+ sort,
+ status,
+ create_time,
+
+
+ #{brandId},
+ #{name},
+ #{sort},
+ #{status},
+ #{createTime},
+
+
+
+
+ UPDATE cue_series
+
+ brand_id = #{brandId},
+ name = #{name},
+ sort = #{sort},
+ status = #{status},
+ update_time = #{updateTime},
+
+ WHERE id = #{id}
+
+
+
+ UPDATE
+ cue_series
+ SET
+ status = #{status}
+ WHERE
+ id = #{id}
+
+
\ No newline at end of file
diff --git a/tmerclub-local/src/main/resources/mapper/CueTypeMapper.xml b/tmerclub-local/src/main/resources/mapper/CueTypeMapper.xml
new file mode 100644
index 0000000..73a9859
--- /dev/null
+++ b/tmerclub-local/src/main/resources/mapper/CueTypeMapper.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, name, image, sort, status, create_time, update_time
+
+
+
+
+
+
+
+
+
+ INSERT INTO cue_type
+
+ name,
+ image,
+ sort,
+ status,
+ create_time,
+
+
+ #{name},
+ #{image},
+ #{sort},
+ #{status},
+ #{createTime},
+
+
+
+
+ UPDATE cue_type
+
+ name = #{name},
+ image = #{image},
+ sort = #{sort},
+ status = #{status},
+ update_time = #{updateTime},
+
+ WHERE id = #{id}
+
+
+
+ UPDATE
+ cue_type
+ SET
+ status = #{status}
+ WHERE
+ id = #{id}
+
+
+
\ No newline at end of file