diff --git a/mall-member/pom.xml b/mall-member/pom.xml
index ee1990e..7d39532 100644
--- a/mall-member/pom.xml
+++ b/mall-member/pom.xml
@@ -18,6 +18,10 @@
-
+
+ com.mall
+ mall-common
+ 1.0-SNAPSHOT
+
diff --git a/mall-member/src/main/java/com/mall/App.java b/mall-member/src/main/java/com/mall/App.java
deleted file mode 100644
index 38d1876..0000000
--- a/mall-member/src/main/java/com/mall/App.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.mall;
-
-/**
- * Hello world!
- *
- */
-public class App
-{
- public static void main( String[] args )
- {
- System.out.println( "Hello World!" );
- }
-}
diff --git a/mall-member/src/main/java/com/mall/member/MallMemberApplication.java b/mall-member/src/main/java/com/mall/member/MallMemberApplication.java
new file mode 100644
index 0000000..78b6552
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/MallMemberApplication.java
@@ -0,0 +1,13 @@
+package com.mall.member;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+
+@SpringBootApplication
+@ComponentScan(basePackages = {"com.mall.member", "com.mall.common"})
+public class MallMemberApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(MallMemberApplication.class, args);
+ }
+}
diff --git a/mall-member/src/main/java/com/mall/member/config/Knife4jConfig.java b/mall-member/src/main/java/com/mall/member/config/Knife4jConfig.java
new file mode 100644
index 0000000..bcb8fcb
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/config/Knife4jConfig.java
@@ -0,0 +1,54 @@
+package com.mall.member.config;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import io.swagger.v3.oas.models.ExternalDocumentation;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.info.License;
+import lombok.extern.slf4j.Slf4j;
+import org.springdoc.core.models.GroupedOpenApi;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@EnableKnife4j
+@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.ANY)
+@Slf4j
+public class Knife4jConfig {
+
+ @Value("${server.port}")
+ private String port;
+
+ @Bean
+ public OpenAPI openAPI() {
+ String url = "http://localhost:" + port;
+
+ // 作者等信息
+ Contact contact = new Contact().name("Bunny").email("1319900154@qq.com").url(url);
+ // 使用协议
+ License license = new License().name("MIT").url("https://mit-license.org");
+ // 相关信息
+ Info info = new Info().title("Bunny-Admin")
+ .contact(contact).license(license)
+ .description("BunnyMall商城")
+ .summary("Bunny商城")
+ .termsOfService(url)
+ .version("v0.0.1");
+
+ return new OpenAPI().info(info).externalDocs(new ExternalDocumentation());
+ }
+
+ @Bean
+ public GroupedOpenApi all() {
+ return GroupedOpenApi.builder().group("全部请求接口").pathsToMatch("/api/**").build();
+ }
+
+ @Bean
+ public GroupedOpenApi member() {
+ return GroupedOpenApi.builder().group("会员请求接口").pathsToMatch("/api/member/**").build();
+ }
+
+}
diff --git a/mall-member/src/main/java/com/mall/member/controller/GrowthChangeHistoryController.java b/mall-member/src/main/java/com/mall/member/controller/GrowthChangeHistoryController.java
new file mode 100644
index 0000000..9b219d4
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/controller/GrowthChangeHistoryController.java
@@ -0,0 +1,70 @@
+package com.mall.member.controller;
+
+import com.mall.member.domain.dto.GrowthChangeHistoryDto;
+import com.mall.member.domain.entity.GrowthChangeHistory;
+import com.mall.member.domain.vo.GrowthChangeHistoryVo;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import com.mall.member.service.GrowthChangeHistoryService;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 成长值变化历史记录 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Tag(name = "成长值变化历史记录", description = "成长值变化历史记录相关接口")
+@RestController
+@RequestMapping("/api/member/growth-change-history")
+@RequiredArgsConstructor
+public class GrowthChangeHistoryController {
+
+ private final GrowthChangeHistoryService growthChangeHistoryService;
+
+ @Operation(summary = "分页查询成长值变化历史记录", description = "分页成长值变化历史记录")
+ @GetMapping("{page}/{limit}")
+ public Result> getGrowthChangeHistoryPage(
+ @Parameter(name = "page", description = "当前页", required = true)
+ @PathVariable("page") Integer page,
+ @Parameter(name = "limit", description = "每页记录数", required = true)
+ @PathVariable("limit") Integer limit,
+ GrowthChangeHistoryDto dto) {
+ Page pageParams = new Page<>(page, limit);
+ PageResult pageResult = growthChangeHistoryService.getGrowthChangeHistoryPage(pageParams, dto);
+ return Result.success(pageResult);
+ }
+
+ @Operation(summary = "添加成长值变化历史记录", description = "添加成长值变化历史记录")
+ @PostMapping()
+ public Result addGrowthChangeHistory(@Valid @RequestBody GrowthChangeHistoryDto dto) {
+ growthChangeHistoryService.addGrowthChangeHistory(dto);
+ return Result.success(ResultCodeEnum.ADD_SUCCESS);
+ }
+
+ @Operation(summary = "更新成长值变化历史记录", description = "更新成长值变化历史记录")
+ @PutMapping()
+ public Result updateGrowthChangeHistory(@Valid @RequestBody GrowthChangeHistoryDto dto) {
+ growthChangeHistoryService.updateGrowthChangeHistory(dto);
+ return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
+ }
+
+ @Operation(summary = "删除成长值变化历史记录", description = "删除成长值变化历史记录")
+ @DeleteMapping()
+ public Result deleteGrowthChangeHistory(@RequestBody List ids) {
+ growthChangeHistoryService.deleteGrowthChangeHistory(ids);
+ return Result.success(ResultCodeEnum.DELETE_SUCCESS);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/controller/IntegrationChangeHistoryController.java b/mall-member/src/main/java/com/mall/member/controller/IntegrationChangeHistoryController.java
new file mode 100644
index 0000000..0727687
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/controller/IntegrationChangeHistoryController.java
@@ -0,0 +1,70 @@
+package com.mall.member.controller;
+
+import com.mall.member.domain.dto.IntegrationChangeHistoryDto;
+import com.mall.member.domain.entity.IntegrationChangeHistory;
+import com.mall.member.domain.vo.IntegrationChangeHistoryVo;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import com.mall.member.service.IntegrationChangeHistoryService;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 积分变化历史记录 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Tag(name = "积分变化历史记录", description = "积分变化历史记录相关接口")
+@RestController
+@RequestMapping("/api/member/integration-change-history")
+@RequiredArgsConstructor
+public class IntegrationChangeHistoryController {
+
+ private final IntegrationChangeHistoryService integrationChangeHistoryService;
+
+ @Operation(summary = "分页查询积分变化历史记录", description = "分页积分变化历史记录")
+ @GetMapping("{page}/{limit}")
+ public Result> getIntegrationChangeHistoryPage(
+ @Parameter(name = "page", description = "当前页", required = true)
+ @PathVariable("page") Integer page,
+ @Parameter(name = "limit", description = "每页记录数", required = true)
+ @PathVariable("limit") Integer limit,
+ IntegrationChangeHistoryDto dto) {
+ Page pageParams = new Page<>(page, limit);
+ PageResult pageResult = integrationChangeHistoryService.getIntegrationChangeHistoryPage(pageParams, dto);
+ return Result.success(pageResult);
+ }
+
+ @Operation(summary = "添加积分变化历史记录", description = "添加积分变化历史记录")
+ @PostMapping()
+ public Result addIntegrationChangeHistory(@Valid @RequestBody IntegrationChangeHistoryDto dto) {
+ integrationChangeHistoryService.addIntegrationChangeHistory(dto);
+ return Result.success(ResultCodeEnum.ADD_SUCCESS);
+ }
+
+ @Operation(summary = "更新积分变化历史记录", description = "更新积分变化历史记录")
+ @PutMapping()
+ public Result updateIntegrationChangeHistory(@Valid @RequestBody IntegrationChangeHistoryDto dto) {
+ integrationChangeHistoryService.updateIntegrationChangeHistory(dto);
+ return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
+ }
+
+ @Operation(summary = "删除积分变化历史记录", description = "删除积分变化历史记录")
+ @DeleteMapping()
+ public Result deleteIntegrationChangeHistory(@RequestBody List ids) {
+ integrationChangeHistoryService.deleteIntegrationChangeHistory(ids);
+ return Result.success(ResultCodeEnum.DELETE_SUCCESS);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/controller/MemberCollectSpuController.java b/mall-member/src/main/java/com/mall/member/controller/MemberCollectSpuController.java
new file mode 100644
index 0000000..44275fa
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/controller/MemberCollectSpuController.java
@@ -0,0 +1,70 @@
+package com.mall.member.controller;
+
+import com.mall.member.domain.dto.MemberCollectSpuDto;
+import com.mall.member.domain.entity.MemberCollectSpu;
+import com.mall.member.domain.vo.MemberCollectSpuVo;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import com.mall.member.service.MemberCollectSpuService;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收藏的商品 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Tag(name = "会员收藏的商品", description = "会员收藏的商品相关接口")
+@RestController
+@RequestMapping("/api/member/member-collect-spu")
+@RequiredArgsConstructor
+public class MemberCollectSpuController {
+
+ private final MemberCollectSpuService memberCollectSpuService;
+
+ @Operation(summary = "分页查询会员收藏的商品", description = "分页会员收藏的商品")
+ @GetMapping("{page}/{limit}")
+ public Result> getMemberCollectSpuPage(
+ @Parameter(name = "page", description = "当前页", required = true)
+ @PathVariable("page") Integer page,
+ @Parameter(name = "limit", description = "每页记录数", required = true)
+ @PathVariable("limit") Integer limit,
+ MemberCollectSpuDto dto) {
+ Page pageParams = new Page<>(page, limit);
+ PageResult pageResult = memberCollectSpuService.getMemberCollectSpuPage(pageParams, dto);
+ return Result.success(pageResult);
+ }
+
+ @Operation(summary = "添加会员收藏的商品", description = "添加会员收藏的商品")
+ @PostMapping()
+ public Result addMemberCollectSpu(@Valid @RequestBody MemberCollectSpuDto dto) {
+ memberCollectSpuService.addMemberCollectSpu(dto);
+ return Result.success(ResultCodeEnum.ADD_SUCCESS);
+ }
+
+ @Operation(summary = "更新会员收藏的商品", description = "更新会员收藏的商品")
+ @PutMapping()
+ public Result updateMemberCollectSpu(@Valid @RequestBody MemberCollectSpuDto dto) {
+ memberCollectSpuService.updateMemberCollectSpu(dto);
+ return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
+ }
+
+ @Operation(summary = "删除会员收藏的商品", description = "删除会员收藏的商品")
+ @DeleteMapping()
+ public Result deleteMemberCollectSpu(@RequestBody List ids) {
+ memberCollectSpuService.deleteMemberCollectSpu(ids);
+ return Result.success(ResultCodeEnum.DELETE_SUCCESS);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/controller/MemberCollectSubjectController.java b/mall-member/src/main/java/com/mall/member/controller/MemberCollectSubjectController.java
new file mode 100644
index 0000000..c7cc239
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/controller/MemberCollectSubjectController.java
@@ -0,0 +1,70 @@
+package com.mall.member.controller;
+
+import com.mall.member.domain.dto.MemberCollectSubjectDto;
+import com.mall.member.domain.entity.MemberCollectSubject;
+import com.mall.member.domain.vo.MemberCollectSubjectVo;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import com.mall.member.service.MemberCollectSubjectService;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收藏的专题活动 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Tag(name = "会员收藏的专题活动", description = "会员收藏的专题活动相关接口")
+@RestController
+@RequestMapping("/api/member/member-collect-subject")
+@RequiredArgsConstructor
+public class MemberCollectSubjectController {
+
+ private final MemberCollectSubjectService memberCollectSubjectService;
+
+ @Operation(summary = "分页查询会员收藏的专题活动", description = "分页会员收藏的专题活动")
+ @GetMapping("{page}/{limit}")
+ public Result> getMemberCollectSubjectPage(
+ @Parameter(name = "page", description = "当前页", required = true)
+ @PathVariable("page") Integer page,
+ @Parameter(name = "limit", description = "每页记录数", required = true)
+ @PathVariable("limit") Integer limit,
+ MemberCollectSubjectDto dto) {
+ Page pageParams = new Page<>(page, limit);
+ PageResult pageResult = memberCollectSubjectService.getMemberCollectSubjectPage(pageParams, dto);
+ return Result.success(pageResult);
+ }
+
+ @Operation(summary = "添加会员收藏的专题活动", description = "添加会员收藏的专题活动")
+ @PostMapping()
+ public Result addMemberCollectSubject(@Valid @RequestBody MemberCollectSubjectDto dto) {
+ memberCollectSubjectService.addMemberCollectSubject(dto);
+ return Result.success(ResultCodeEnum.ADD_SUCCESS);
+ }
+
+ @Operation(summary = "更新会员收藏的专题活动", description = "更新会员收藏的专题活动")
+ @PutMapping()
+ public Result updateMemberCollectSubject(@Valid @RequestBody MemberCollectSubjectDto dto) {
+ memberCollectSubjectService.updateMemberCollectSubject(dto);
+ return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
+ }
+
+ @Operation(summary = "删除会员收藏的专题活动", description = "删除会员收藏的专题活动")
+ @DeleteMapping()
+ public Result deleteMemberCollectSubject(@RequestBody List ids) {
+ memberCollectSubjectService.deleteMemberCollectSubject(ids);
+ return Result.success(ResultCodeEnum.DELETE_SUCCESS);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/controller/MemberController.java b/mall-member/src/main/java/com/mall/member/controller/MemberController.java
new file mode 100644
index 0000000..9fbbc5f
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/controller/MemberController.java
@@ -0,0 +1,70 @@
+package com.mall.member.controller;
+
+import com.mall.member.domain.dto.MemberDto;
+import com.mall.member.domain.entity.Member;
+import com.mall.member.domain.vo.MemberVo;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import com.mall.member.service.MemberService;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Tag(name = "会员", description = "会员相关接口")
+@RestController
+@RequestMapping("/api/member/member")
+@RequiredArgsConstructor
+public class MemberController {
+
+ private final MemberService memberService;
+
+ @Operation(summary = "分页查询会员", description = "分页会员")
+ @GetMapping("{page}/{limit}")
+ public Result> getMemberPage(
+ @Parameter(name = "page", description = "当前页", required = true)
+ @PathVariable("page") Integer page,
+ @Parameter(name = "limit", description = "每页记录数", required = true)
+ @PathVariable("limit") Integer limit,
+ MemberDto dto) {
+ Page pageParams = new Page<>(page, limit);
+ PageResult pageResult = memberService.getMemberPage(pageParams, dto);
+ return Result.success(pageResult);
+ }
+
+ @Operation(summary = "添加会员", description = "添加会员")
+ @PostMapping()
+ public Result addMember(@Valid @RequestBody MemberDto dto) {
+ memberService.addMember(dto);
+ return Result.success(ResultCodeEnum.ADD_SUCCESS);
+ }
+
+ @Operation(summary = "更新会员", description = "更新会员")
+ @PutMapping()
+ public Result updateMember(@Valid @RequestBody MemberDto dto) {
+ memberService.updateMember(dto);
+ return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
+ }
+
+ @Operation(summary = "删除会员", description = "删除会员")
+ @DeleteMapping()
+ public Result deleteMember(@RequestBody List ids) {
+ memberService.deleteMember(ids);
+ return Result.success(ResultCodeEnum.DELETE_SUCCESS);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/controller/MemberLevelController.java b/mall-member/src/main/java/com/mall/member/controller/MemberLevelController.java
new file mode 100644
index 0000000..c12bfa5
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/controller/MemberLevelController.java
@@ -0,0 +1,70 @@
+package com.mall.member.controller;
+
+import com.mall.member.domain.dto.MemberLevelDto;
+import com.mall.member.domain.entity.MemberLevel;
+import com.mall.member.domain.vo.MemberLevelVo;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import com.mall.member.service.MemberLevelService;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员等级 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Tag(name = "会员等级", description = "会员等级相关接口")
+@RestController
+@RequestMapping("/api/member/member-level")
+@RequiredArgsConstructor
+public class MemberLevelController {
+
+ private final MemberLevelService memberLevelService;
+
+ @Operation(summary = "分页查询会员等级", description = "分页会员等级")
+ @GetMapping("{page}/{limit}")
+ public Result> getMemberLevelPage(
+ @Parameter(name = "page", description = "当前页", required = true)
+ @PathVariable("page") Integer page,
+ @Parameter(name = "limit", description = "每页记录数", required = true)
+ @PathVariable("limit") Integer limit,
+ MemberLevelDto dto) {
+ Page pageParams = new Page<>(page, limit);
+ PageResult pageResult = memberLevelService.getMemberLevelPage(pageParams, dto);
+ return Result.success(pageResult);
+ }
+
+ @Operation(summary = "添加会员等级", description = "添加会员等级")
+ @PostMapping()
+ public Result addMemberLevel(@Valid @RequestBody MemberLevelDto dto) {
+ memberLevelService.addMemberLevel(dto);
+ return Result.success(ResultCodeEnum.ADD_SUCCESS);
+ }
+
+ @Operation(summary = "更新会员等级", description = "更新会员等级")
+ @PutMapping()
+ public Result updateMemberLevel(@Valid @RequestBody MemberLevelDto dto) {
+ memberLevelService.updateMemberLevel(dto);
+ return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
+ }
+
+ @Operation(summary = "删除会员等级", description = "删除会员等级")
+ @DeleteMapping()
+ public Result deleteMemberLevel(@RequestBody List ids) {
+ memberLevelService.deleteMemberLevel(ids);
+ return Result.success(ResultCodeEnum.DELETE_SUCCESS);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/controller/MemberLoginLogController.java b/mall-member/src/main/java/com/mall/member/controller/MemberLoginLogController.java
new file mode 100644
index 0000000..4d495b6
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/controller/MemberLoginLogController.java
@@ -0,0 +1,70 @@
+package com.mall.member.controller;
+
+import com.mall.member.domain.dto.MemberLoginLogDto;
+import com.mall.member.domain.entity.MemberLoginLog;
+import com.mall.member.domain.vo.MemberLoginLogVo;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import com.mall.member.service.MemberLoginLogService;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员登录记录 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Tag(name = "会员登录记录", description = "会员登录记录相关接口")
+@RestController
+@RequestMapping("/api/member/member-login-log")
+@RequiredArgsConstructor
+public class MemberLoginLogController {
+
+ private final MemberLoginLogService memberLoginLogService;
+
+ @Operation(summary = "分页查询会员登录记录", description = "分页会员登录记录")
+ @GetMapping("{page}/{limit}")
+ public Result> getMemberLoginLogPage(
+ @Parameter(name = "page", description = "当前页", required = true)
+ @PathVariable("page") Integer page,
+ @Parameter(name = "limit", description = "每页记录数", required = true)
+ @PathVariable("limit") Integer limit,
+ MemberLoginLogDto dto) {
+ Page pageParams = new Page<>(page, limit);
+ PageResult pageResult = memberLoginLogService.getMemberLoginLogPage(pageParams, dto);
+ return Result.success(pageResult);
+ }
+
+ @Operation(summary = "添加会员登录记录", description = "添加会员登录记录")
+ @PostMapping()
+ public Result addMemberLoginLog(@Valid @RequestBody MemberLoginLogDto dto) {
+ memberLoginLogService.addMemberLoginLog(dto);
+ return Result.success(ResultCodeEnum.ADD_SUCCESS);
+ }
+
+ @Operation(summary = "更新会员登录记录", description = "更新会员登录记录")
+ @PutMapping()
+ public Result updateMemberLoginLog(@Valid @RequestBody MemberLoginLogDto dto) {
+ memberLoginLogService.updateMemberLoginLog(dto);
+ return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
+ }
+
+ @Operation(summary = "删除会员登录记录", description = "删除会员登录记录")
+ @DeleteMapping()
+ public Result deleteMemberLoginLog(@RequestBody List ids) {
+ memberLoginLogService.deleteMemberLoginLog(ids);
+ return Result.success(ResultCodeEnum.DELETE_SUCCESS);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/controller/MemberReceiveAddressController.java b/mall-member/src/main/java/com/mall/member/controller/MemberReceiveAddressController.java
new file mode 100644
index 0000000..46aed40
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/controller/MemberReceiveAddressController.java
@@ -0,0 +1,70 @@
+package com.mall.member.controller;
+
+import com.mall.member.domain.dto.MemberReceiveAddressDto;
+import com.mall.member.domain.entity.MemberReceiveAddress;
+import com.mall.member.domain.vo.MemberReceiveAddressVo;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import com.mall.member.service.MemberReceiveAddressService;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收货地址 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Tag(name = "会员收货地址", description = "会员收货地址相关接口")
+@RestController
+@RequestMapping("/api/member/member-receive-address")
+@RequiredArgsConstructor
+public class MemberReceiveAddressController {
+
+ private final MemberReceiveAddressService memberReceiveAddressService;
+
+ @Operation(summary = "分页查询会员收货地址", description = "分页会员收货地址")
+ @GetMapping("{page}/{limit}")
+ public Result> getMemberReceiveAddressPage(
+ @Parameter(name = "page", description = "当前页", required = true)
+ @PathVariable("page") Integer page,
+ @Parameter(name = "limit", description = "每页记录数", required = true)
+ @PathVariable("limit") Integer limit,
+ MemberReceiveAddressDto dto) {
+ Page pageParams = new Page<>(page, limit);
+ PageResult pageResult = memberReceiveAddressService.getMemberReceiveAddressPage(pageParams, dto);
+ return Result.success(pageResult);
+ }
+
+ @Operation(summary = "添加会员收货地址", description = "添加会员收货地址")
+ @PostMapping()
+ public Result addMemberReceiveAddress(@Valid @RequestBody MemberReceiveAddressDto dto) {
+ memberReceiveAddressService.addMemberReceiveAddress(dto);
+ return Result.success(ResultCodeEnum.ADD_SUCCESS);
+ }
+
+ @Operation(summary = "更新会员收货地址", description = "更新会员收货地址")
+ @PutMapping()
+ public Result updateMemberReceiveAddress(@Valid @RequestBody MemberReceiveAddressDto dto) {
+ memberReceiveAddressService.updateMemberReceiveAddress(dto);
+ return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
+ }
+
+ @Operation(summary = "删除会员收货地址", description = "删除会员收货地址")
+ @DeleteMapping()
+ public Result deleteMemberReceiveAddress(@RequestBody List ids) {
+ memberReceiveAddressService.deleteMemberReceiveAddress(ids);
+ return Result.success(ResultCodeEnum.DELETE_SUCCESS);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/controller/MemberStatisticsInfoController.java b/mall-member/src/main/java/com/mall/member/controller/MemberStatisticsInfoController.java
new file mode 100644
index 0000000..03fd6dc
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/controller/MemberStatisticsInfoController.java
@@ -0,0 +1,70 @@
+package com.mall.member.controller;
+
+import com.mall.member.domain.dto.MemberStatisticsInfoDto;
+import com.mall.member.domain.entity.MemberStatisticsInfo;
+import com.mall.member.domain.vo.MemberStatisticsInfoVo;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import com.mall.member.service.MemberStatisticsInfoService;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员统计信息 前端控制器
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Tag(name = "会员统计信息", description = "会员统计信息相关接口")
+@RestController
+@RequestMapping("/api/member/member-statistics-info")
+@RequiredArgsConstructor
+public class MemberStatisticsInfoController {
+
+ private final MemberStatisticsInfoService memberStatisticsInfoService;
+
+ @Operation(summary = "分页查询会员统计信息", description = "分页会员统计信息")
+ @GetMapping("{page}/{limit}")
+ public Result> getMemberStatisticsInfoPage(
+ @Parameter(name = "page", description = "当前页", required = true)
+ @PathVariable("page") Integer page,
+ @Parameter(name = "limit", description = "每页记录数", required = true)
+ @PathVariable("limit") Integer limit,
+ MemberStatisticsInfoDto dto) {
+ Page pageParams = new Page<>(page, limit);
+ PageResult pageResult = memberStatisticsInfoService.getMemberStatisticsInfoPage(pageParams, dto);
+ return Result.success(pageResult);
+ }
+
+ @Operation(summary = "添加会员统计信息", description = "添加会员统计信息")
+ @PostMapping()
+ public Result addMemberStatisticsInfo(@Valid @RequestBody MemberStatisticsInfoDto dto) {
+ memberStatisticsInfoService.addMemberStatisticsInfo(dto);
+ return Result.success(ResultCodeEnum.ADD_SUCCESS);
+ }
+
+ @Operation(summary = "更新会员统计信息", description = "更新会员统计信息")
+ @PutMapping()
+ public Result updateMemberStatisticsInfo(@Valid @RequestBody MemberStatisticsInfoDto dto) {
+ memberStatisticsInfoService.updateMemberStatisticsInfo(dto);
+ return Result.success(ResultCodeEnum.UPDATE_SUCCESS);
+ }
+
+ @Operation(summary = "删除会员统计信息", description = "删除会员统计信息")
+ @DeleteMapping()
+ public Result deleteMemberStatisticsInfo(@RequestBody List ids) {
+ memberStatisticsInfoService.deleteMemberStatisticsInfo(ids);
+ return Result.success(ResultCodeEnum.DELETE_SUCCESS);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/dto/GrowthChangeHistoryDto.java b/mall-member/src/main/java/com/mall/member/domain/dto/GrowthChangeHistoryDto.java
new file mode 100644
index 0000000..baa5c1a
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/dto/GrowthChangeHistoryDto.java
@@ -0,0 +1,38 @@
+package com.mall.member.domain.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Schema(name = "GrowthChangeHistoryDTO对象", title = "成长值变化历史记录", description = "成长值变化历史记录的DTO对象")
+public class GrowthChangeHistoryDto {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "createTime", title = "create_time")
+ private LocalDateTime createTime;
+
+ @Schema(name = "changeCount", title = "改变的值(正负计数)")
+ private Integer changeCount;
+
+ @Schema(name = "note", title = "备注")
+ private String note;
+
+ @Schema(name = "sourceType", title = "积分来源[0-购物,1-管理员修改]")
+ private Integer sourceType;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/dto/IntegrationChangeHistoryDto.java b/mall-member/src/main/java/com/mall/member/domain/dto/IntegrationChangeHistoryDto.java
new file mode 100644
index 0000000..aa86db0
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/dto/IntegrationChangeHistoryDto.java
@@ -0,0 +1,38 @@
+package com.mall.member.domain.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Schema(name = "IntegrationChangeHistoryDTO对象", title = "积分变化历史记录", description = "积分变化历史记录的DTO对象")
+public class IntegrationChangeHistoryDto {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "createTime", title = "create_time")
+ private LocalDateTime createTime;
+
+ @Schema(name = "changeCount", title = "变化的值")
+ private Integer changeCount;
+
+ @Schema(name = "note", title = "备注")
+ private String note;
+
+ @Schema(name = "sourceTyoe", title = "来源[0->购物;1->管理员修改;2->活动]")
+ private Integer sourceTyoe;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/dto/MemberCollectSpuDto.java b/mall-member/src/main/java/com/mall/member/domain/dto/MemberCollectSpuDto.java
new file mode 100644
index 0000000..233a5b8
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/dto/MemberCollectSpuDto.java
@@ -0,0 +1,38 @@
+package com.mall.member.domain.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Schema(name = "MemberCollectSpuDTO对象", title = "会员收藏的商品", description = "会员收藏的商品的DTO对象")
+public class MemberCollectSpuDto {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "会员id")
+ private Long memberId;
+
+ @Schema(name = "spuId", title = "spu_id")
+ private Long spuId;
+
+ @Schema(name = "spuName", title = "spu_name")
+ private String spuName;
+
+ @Schema(name = "spuImg", title = "spu_img")
+ private String spuImg;
+
+ @Schema(name = "createTime", title = "create_time")
+ private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/dto/MemberCollectSubjectDto.java b/mall-member/src/main/java/com/mall/member/domain/dto/MemberCollectSubjectDto.java
new file mode 100644
index 0000000..8386bab
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/dto/MemberCollectSubjectDto.java
@@ -0,0 +1,35 @@
+package com.mall.member.domain.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Schema(name = "MemberCollectSubjectDTO对象", title = "会员收藏的专题活动", description = "会员收藏的专题活动的DTO对象")
+public class MemberCollectSubjectDto {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "subjectId", title = "subject_id")
+ private Long subjectId;
+
+ @Schema(name = "subjectName", title = "subject_name")
+ private String subjectName;
+
+ @Schema(name = "subjectImg", title = "subject_img")
+ private String subjectImg;
+
+ @Schema(name = "subjectUrll", title = "活动url")
+ private String subjectUrll;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/dto/MemberDto.java b/mall-member/src/main/java/com/mall/member/domain/dto/MemberDto.java
new file mode 100644
index 0000000..c4b6869
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/dto/MemberDto.java
@@ -0,0 +1,83 @@
+package com.mall.member.domain.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Schema(name = "MemberDTO对象", title = "会员", description = "会员的DTO对象")
+public class MemberDto {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "levelId", title = "会员等级id")
+ private Long levelId;
+
+ @Schema(name = "username", title = "用户名")
+ private String username;
+
+ @Schema(name = "password", title = "密码")
+ private String password;
+
+ @Schema(name = "nickname", title = "昵称")
+ private String nickname;
+
+ @Schema(name = "mobile", title = "手机号码")
+ private String mobile;
+
+ @Schema(name = "email", title = "邮箱")
+ private String email;
+
+ @Schema(name = "header", title = "头像")
+ private String header;
+
+ @Schema(name = "gender", title = "性别")
+ private Integer gender;
+
+ @Schema(name = "birth", title = "生日")
+ private Date birth;
+
+ @Schema(name = "city", title = "所在城市")
+ private String city;
+
+ @Schema(name = "job", title = "职业")
+ private String job;
+
+ @Schema(name = "sign", title = "个性签名")
+ private String sign;
+
+ @Schema(name = "sourceType", title = "用户来源")
+ private Integer sourceType;
+
+ @Schema(name = "integration", title = "积分")
+ private Integer integration;
+
+ @Schema(name = "growth", title = "成长值")
+ private Integer growth;
+
+ @Schema(name = "status", title = "启用状态")
+ private Integer status;
+
+ @Schema(name = "createTime", title = "注册时间")
+ private LocalDateTime createTime;
+
+ @Schema(name = "socialUid", title = "社交用户的唯一id")
+ private String socialUid;
+
+ @Schema(name = "accessToken", title = "访问令牌")
+ private String accessToken;
+
+ @Schema(name = "expiresIn", title = "访问令牌的时间")
+ private String expiresIn;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/dto/MemberLevelDto.java b/mall-member/src/main/java/com/mall/member/domain/dto/MemberLevelDto.java
new file mode 100644
index 0000000..f5068e9
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/dto/MemberLevelDto.java
@@ -0,0 +1,50 @@
+package com.mall.member.domain.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Schema(name = "MemberLevelDTO对象", title = "会员等级", description = "会员等级的DTO对象")
+public class MemberLevelDto {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "name", title = "等级名称")
+ private String name;
+
+ @Schema(name = "growthPoint", title = "等级需要的成长值")
+ private Integer growthPoint;
+
+ @Schema(name = "defaultStatus", title = "是否为默认等级[0->不是;1->是]")
+ private Integer defaultStatus;
+
+ @Schema(name = "freeFreightPoint", title = "免运费标准")
+ private BigDecimal freeFreightPoint;
+
+ @Schema(name = "commentGrowthPoint", title = "每次评价获取的成长值")
+ private Integer commentGrowthPoint;
+
+ @Schema(name = "priviledgeFreeFreight", title = "是否有免邮特权")
+ private Integer priviledgeFreeFreight;
+
+ @Schema(name = "priviledgeMemberPrice", title = "是否有会员价格特权")
+ private Integer priviledgeMemberPrice;
+
+ @Schema(name = "priviledgeBirthday", title = "是否有生日特权")
+ private Integer priviledgeBirthday;
+
+ @Schema(name = "note", title = "备注")
+ private String note;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/dto/MemberLoginLogDto.java b/mall-member/src/main/java/com/mall/member/domain/dto/MemberLoginLogDto.java
new file mode 100644
index 0000000..82e69e7
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/dto/MemberLoginLogDto.java
@@ -0,0 +1,38 @@
+package com.mall.member.domain.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Schema(name = "MemberLoginLogDTO对象", title = "会员登录记录", description = "会员登录记录的DTO对象")
+public class MemberLoginLogDto {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "createTime", title = "创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(name = "ip", title = "ip")
+ private String ip;
+
+ @Schema(name = "city", title = "city")
+ private String city;
+
+ @Schema(name = "loginType", title = "登录类型[1-web,2-app]")
+ private Boolean loginType;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/dto/MemberReceiveAddressDto.java b/mall-member/src/main/java/com/mall/member/domain/dto/MemberReceiveAddressDto.java
new file mode 100644
index 0000000..786207f
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/dto/MemberReceiveAddressDto.java
@@ -0,0 +1,53 @@
+package com.mall.member.domain.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Schema(name = "MemberReceiveAddressDTO对象", title = "会员收货地址", description = "会员收货地址的DTO对象")
+public class MemberReceiveAddressDto {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "name", title = "收货人姓名")
+ private String name;
+
+ @Schema(name = "phone", title = "电话")
+ private String phone;
+
+ @Schema(name = "postCode", title = "邮政编码")
+ private String postCode;
+
+ @Schema(name = "province", title = "省份/直辖市")
+ private String province;
+
+ @Schema(name = "city", title = "城市")
+ private String city;
+
+ @Schema(name = "region", title = "区")
+ private String region;
+
+ @Schema(name = "detailAddress", title = "详细地址(街道)")
+ private String detailAddress;
+
+ @Schema(name = "areacode", title = "省市区代码")
+ private String areacode;
+
+ @Schema(name = "defaultStatus", title = "是否默认")
+ private Boolean defaultStatus;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/dto/MemberStatisticsInfoDto.java b/mall-member/src/main/java/com/mall/member/domain/dto/MemberStatisticsInfoDto.java
new file mode 100644
index 0000000..aae3283
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/dto/MemberStatisticsInfoDto.java
@@ -0,0 +1,65 @@
+package com.mall.member.domain.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@Schema(name = "MemberStatisticsInfoDTO对象", title = "会员统计信息", description = "会员统计信息的DTO对象")
+public class MemberStatisticsInfoDto {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "会员id")
+ private Long memberId;
+
+ @Schema(name = "consumeAmount", title = "累计消费金额")
+ private BigDecimal consumeAmount;
+
+ @Schema(name = "couponAmount", title = "累计优惠金额")
+ private BigDecimal couponAmount;
+
+ @Schema(name = "orderCount", title = "订单数量")
+ private Integer orderCount;
+
+ @Schema(name = "couponCount", title = "优惠券数量")
+ private Integer couponCount;
+
+ @Schema(name = "commentCount", title = "评价数")
+ private Integer commentCount;
+
+ @Schema(name = "returnOrderCount", title = "退货数量")
+ private Integer returnOrderCount;
+
+ @Schema(name = "loginCount", title = "登录次数")
+ private Integer loginCount;
+
+ @Schema(name = "attendCount", title = "关注数量")
+ private Integer attendCount;
+
+ @Schema(name = "fansCount", title = "粉丝数量")
+ private Integer fansCount;
+
+ @Schema(name = "collectProductCount", title = "收藏的商品数量")
+ private Integer collectProductCount;
+
+ @Schema(name = "collectSubjectCount", title = "收藏的专题活动数量")
+ private Integer collectSubjectCount;
+
+ @Schema(name = "collectCommentCount", title = "收藏的评论数量")
+ private Integer collectCommentCount;
+
+ @Schema(name = "inviteFriendCount", title = "邀请的朋友数量")
+ private Integer inviteFriendCount;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/entity/GrowthChangeHistory.java b/mall-member/src/main/java/com/mall/member/domain/entity/GrowthChangeHistory.java
new file mode 100644
index 0000000..b20ee39
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/entity/GrowthChangeHistory.java
@@ -0,0 +1,42 @@
+package com.mall.member.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("ums_growth_change_history")
+@Schema(name = "GrowthChangeHistory对象", title = "成长值变化历史记录", description = "成长值变化历史记录的实体类对象")
+public class GrowthChangeHistory {
+
+ @Schema(name = "id", title = "id")
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "createTime", title = "create_time")
+ private LocalDateTime createTime;
+
+ @Schema(name = "changeCount", title = "改变的值(正负计数)")
+ private Integer changeCount;
+
+ @Schema(name = "note", title = "备注")
+ private String note;
+
+ @Schema(name = "sourceType", title = "积分来源[0-购物,1-管理员修改]")
+ private Integer sourceType;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/entity/IntegrationChangeHistory.java b/mall-member/src/main/java/com/mall/member/domain/entity/IntegrationChangeHistory.java
new file mode 100644
index 0000000..09a0894
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/entity/IntegrationChangeHistory.java
@@ -0,0 +1,42 @@
+package com.mall.member.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("ums_integration_change_history")
+@Schema(name = "IntegrationChangeHistory对象", title = "积分变化历史记录", description = "积分变化历史记录的实体类对象")
+public class IntegrationChangeHistory {
+
+ @Schema(name = "id", title = "id")
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "createTime", title = "create_time")
+ private LocalDateTime createTime;
+
+ @Schema(name = "changeCount", title = "变化的值")
+ private Integer changeCount;
+
+ @Schema(name = "note", title = "备注")
+ private String note;
+
+ @Schema(name = "sourceTyoe", title = "来源[0->购物;1->管理员修改;2->活动]")
+ private Integer sourceTyoe;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/entity/Member.java b/mall-member/src/main/java/com/mall/member/domain/entity/Member.java
new file mode 100644
index 0000000..958e7f6
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/entity/Member.java
@@ -0,0 +1,87 @@
+package com.mall.member.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("ums_member")
+@Schema(name = "Member对象", title = "会员", description = "会员的实体类对象")
+public class Member {
+
+ @Schema(name = "id", title = "id")
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ @Schema(name = "levelId", title = "会员等级id")
+ private Long levelId;
+
+ @Schema(name = "username", title = "用户名")
+ private String username;
+
+ @Schema(name = "password", title = "密码")
+ private String password;
+
+ @Schema(name = "nickname", title = "昵称")
+ private String nickname;
+
+ @Schema(name = "mobile", title = "手机号码")
+ private String mobile;
+
+ @Schema(name = "email", title = "邮箱")
+ private String email;
+
+ @Schema(name = "header", title = "头像")
+ private String header;
+
+ @Schema(name = "gender", title = "性别")
+ private Integer gender;
+
+ @Schema(name = "birth", title = "生日")
+ private Date birth;
+
+ @Schema(name = "city", title = "所在城市")
+ private String city;
+
+ @Schema(name = "job", title = "职业")
+ private String job;
+
+ @Schema(name = "sign", title = "个性签名")
+ private String sign;
+
+ @Schema(name = "sourceType", title = "用户来源")
+ private Integer sourceType;
+
+ @Schema(name = "integration", title = "积分")
+ private Integer integration;
+
+ @Schema(name = "growth", title = "成长值")
+ private Integer growth;
+
+ @Schema(name = "status", title = "启用状态")
+ private Integer status;
+
+ @Schema(name = "createTime", title = "注册时间")
+ private LocalDateTime createTime;
+
+ @Schema(name = "socialUid", title = "社交用户的唯一id")
+ private String socialUid;
+
+ @Schema(name = "accessToken", title = "访问令牌")
+ private String accessToken;
+
+ @Schema(name = "expiresIn", title = "访问令牌的时间")
+ private String expiresIn;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/entity/MemberCollectSpu.java b/mall-member/src/main/java/com/mall/member/domain/entity/MemberCollectSpu.java
new file mode 100644
index 0000000..3601f30
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/entity/MemberCollectSpu.java
@@ -0,0 +1,42 @@
+package com.mall.member.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("ums_member_collect_spu")
+@Schema(name = "MemberCollectSpu对象", title = "会员收藏的商品", description = "会员收藏的商品的实体类对象")
+public class MemberCollectSpu {
+
+ @Schema(name = "id", title = "id")
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ @Schema(name = "memberId", title = "会员id")
+ private Long memberId;
+
+ @Schema(name = "spuId", title = "spu_id")
+ private Long spuId;
+
+ @Schema(name = "spuName", title = "spu_name")
+ private String spuName;
+
+ @Schema(name = "spuImg", title = "spu_img")
+ private String spuImg;
+
+ @Schema(name = "createTime", title = "create_time")
+ private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/entity/MemberCollectSubject.java b/mall-member/src/main/java/com/mall/member/domain/entity/MemberCollectSubject.java
new file mode 100644
index 0000000..dcd385f
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/entity/MemberCollectSubject.java
@@ -0,0 +1,39 @@
+package com.mall.member.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("ums_member_collect_subject")
+@Schema(name = "MemberCollectSubject对象", title = "会员收藏的专题活动", description = "会员收藏的专题活动的实体类对象")
+public class MemberCollectSubject {
+
+ @Schema(name = "id", title = "id")
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ @Schema(name = "subjectId", title = "subject_id")
+ private Long subjectId;
+
+ @Schema(name = "subjectName", title = "subject_name")
+ private String subjectName;
+
+ @Schema(name = "subjectImg", title = "subject_img")
+ private String subjectImg;
+
+ @Schema(name = "subjectUrll", title = "活动url")
+ private String subjectUrll;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/entity/MemberLevel.java b/mall-member/src/main/java/com/mall/member/domain/entity/MemberLevel.java
new file mode 100644
index 0000000..644ffc6
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/entity/MemberLevel.java
@@ -0,0 +1,54 @@
+package com.mall.member.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("ums_member_level")
+@Schema(name = "MemberLevel对象", title = "会员等级", description = "会员等级的实体类对象")
+public class MemberLevel {
+
+ @Schema(name = "id", title = "id")
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ @Schema(name = "name", title = "等级名称")
+ private String name;
+
+ @Schema(name = "growthPoint", title = "等级需要的成长值")
+ private Integer growthPoint;
+
+ @Schema(name = "defaultStatus", title = "是否为默认等级[0->不是;1->是]")
+ private Integer defaultStatus;
+
+ @Schema(name = "freeFreightPoint", title = "免运费标准")
+ private BigDecimal freeFreightPoint;
+
+ @Schema(name = "commentGrowthPoint", title = "每次评价获取的成长值")
+ private Integer commentGrowthPoint;
+
+ @Schema(name = "priviledgeFreeFreight", title = "是否有免邮特权")
+ private Integer priviledgeFreeFreight;
+
+ @Schema(name = "priviledgeMemberPrice", title = "是否有会员价格特权")
+ private Integer priviledgeMemberPrice;
+
+ @Schema(name = "priviledgeBirthday", title = "是否有生日特权")
+ private Integer priviledgeBirthday;
+
+ @Schema(name = "note", title = "备注")
+ private String note;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/entity/MemberLoginLog.java b/mall-member/src/main/java/com/mall/member/domain/entity/MemberLoginLog.java
new file mode 100644
index 0000000..f82abf7
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/entity/MemberLoginLog.java
@@ -0,0 +1,42 @@
+package com.mall.member.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("ums_member_login_log")
+@Schema(name = "MemberLoginLog对象", title = "会员登录记录", description = "会员登录记录的实体类对象")
+public class MemberLoginLog {
+
+ @Schema(name = "id", title = "id")
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "createTime", title = "创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(name = "ip", title = "ip")
+ private String ip;
+
+ @Schema(name = "city", title = "city")
+ private String city;
+
+ @Schema(name = "loginType", title = "登录类型[1-web,2-app]")
+ private Boolean loginType;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/entity/MemberReceiveAddress.java b/mall-member/src/main/java/com/mall/member/domain/entity/MemberReceiveAddress.java
new file mode 100644
index 0000000..30859c5
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/entity/MemberReceiveAddress.java
@@ -0,0 +1,57 @@
+package com.mall.member.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("ums_member_receive_address")
+@Schema(name = "MemberReceiveAddress对象", title = "会员收货地址", description = "会员收货地址的实体类对象")
+public class MemberReceiveAddress {
+
+ @Schema(name = "id", title = "id")
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "name", title = "收货人姓名")
+ private String name;
+
+ @Schema(name = "phone", title = "电话")
+ private String phone;
+
+ @Schema(name = "postCode", title = "邮政编码")
+ private String postCode;
+
+ @Schema(name = "province", title = "省份/直辖市")
+ private String province;
+
+ @Schema(name = "city", title = "城市")
+ private String city;
+
+ @Schema(name = "region", title = "区")
+ private String region;
+
+ @Schema(name = "detailAddress", title = "详细地址(街道)")
+ private String detailAddress;
+
+ @Schema(name = "areacode", title = "省市区代码")
+ private String areacode;
+
+ @Schema(name = "defaultStatus", title = "是否默认")
+ private Boolean defaultStatus;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/entity/MemberStatisticsInfo.java b/mall-member/src/main/java/com/mall/member/domain/entity/MemberStatisticsInfo.java
new file mode 100644
index 0000000..47f5983
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/entity/MemberStatisticsInfo.java
@@ -0,0 +1,69 @@
+package com.mall.member.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("ums_member_statistics_info")
+@Schema(name = "MemberStatisticsInfo对象", title = "会员统计信息", description = "会员统计信息的实体类对象")
+public class MemberStatisticsInfo {
+
+ @Schema(name = "id", title = "id")
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ @Schema(name = "memberId", title = "会员id")
+ private Long memberId;
+
+ @Schema(name = "consumeAmount", title = "累计消费金额")
+ private BigDecimal consumeAmount;
+
+ @Schema(name = "couponAmount", title = "累计优惠金额")
+ private BigDecimal couponAmount;
+
+ @Schema(name = "orderCount", title = "订单数量")
+ private Integer orderCount;
+
+ @Schema(name = "couponCount", title = "优惠券数量")
+ private Integer couponCount;
+
+ @Schema(name = "commentCount", title = "评价数")
+ private Integer commentCount;
+
+ @Schema(name = "returnOrderCount", title = "退货数量")
+ private Integer returnOrderCount;
+
+ @Schema(name = "loginCount", title = "登录次数")
+ private Integer loginCount;
+
+ @Schema(name = "attendCount", title = "关注数量")
+ private Integer attendCount;
+
+ @Schema(name = "fansCount", title = "粉丝数量")
+ private Integer fansCount;
+
+ @Schema(name = "collectProductCount", title = "收藏的商品数量")
+ private Integer collectProductCount;
+
+ @Schema(name = "collectSubjectCount", title = "收藏的专题活动数量")
+ private Integer collectSubjectCount;
+
+ @Schema(name = "collectCommentCount", title = "收藏的评论数量")
+ private Integer collectCommentCount;
+
+ @Schema(name = "inviteFriendCount", title = "邀请的朋友数量")
+ private Integer inviteFriendCount;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/vo/GrowthChangeHistoryVo.java b/mall-member/src/main/java/com/mall/member/domain/vo/GrowthChangeHistoryVo.java
new file mode 100644
index 0000000..e88442f
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/vo/GrowthChangeHistoryVo.java
@@ -0,0 +1,39 @@
+package com.mall.member.domain.vo;
+
+import java.util.Date;
+import java.math.BigDecimal;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(name = "GrowthChangeHistoryVO对象", title = "成长值变化历史记录", description = "成长值变化历史记录的VO对象")
+public class GrowthChangeHistoryVo {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "createTime", title = "create_time")
+ private LocalDateTime createTime;
+
+ @Schema(name = "changeCount", title = "改变的值(正负计数)")
+ private Integer changeCount;
+
+ @Schema(name = "note", title = "备注")
+ private String note;
+
+ @Schema(name = "sourceType", title = "积分来源[0-购物,1-管理员修改]")
+ private Integer sourceType;
+
+}
+
diff --git a/mall-member/src/main/java/com/mall/member/domain/vo/IntegrationChangeHistoryVo.java b/mall-member/src/main/java/com/mall/member/domain/vo/IntegrationChangeHistoryVo.java
new file mode 100644
index 0000000..b961e83
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/vo/IntegrationChangeHistoryVo.java
@@ -0,0 +1,39 @@
+package com.mall.member.domain.vo;
+
+import java.util.Date;
+import java.math.BigDecimal;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(name = "IntegrationChangeHistoryVO对象", title = "积分变化历史记录", description = "积分变化历史记录的VO对象")
+public class IntegrationChangeHistoryVo {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "createTime", title = "create_time")
+ private LocalDateTime createTime;
+
+ @Schema(name = "changeCount", title = "变化的值")
+ private Integer changeCount;
+
+ @Schema(name = "note", title = "备注")
+ private String note;
+
+ @Schema(name = "sourceTyoe", title = "来源[0->购物;1->管理员修改;2->活动]")
+ private Integer sourceTyoe;
+
+}
+
diff --git a/mall-member/src/main/java/com/mall/member/domain/vo/MemberCollectSpuVo.java b/mall-member/src/main/java/com/mall/member/domain/vo/MemberCollectSpuVo.java
new file mode 100644
index 0000000..c4e2b4c
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/vo/MemberCollectSpuVo.java
@@ -0,0 +1,39 @@
+package com.mall.member.domain.vo;
+
+import java.util.Date;
+import java.math.BigDecimal;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(name = "MemberCollectSpuVO对象", title = "会员收藏的商品", description = "会员收藏的商品的VO对象")
+public class MemberCollectSpuVo {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "会员id")
+ private Long memberId;
+
+ @Schema(name = "spuId", title = "spu_id")
+ private Long spuId;
+
+ @Schema(name = "spuName", title = "spu_name")
+ private String spuName;
+
+ @Schema(name = "spuImg", title = "spu_img")
+ private String spuImg;
+
+ @Schema(name = "createTime", title = "create_time")
+ private LocalDateTime createTime;
+
+}
+
diff --git a/mall-member/src/main/java/com/mall/member/domain/vo/MemberCollectSubjectVo.java b/mall-member/src/main/java/com/mall/member/domain/vo/MemberCollectSubjectVo.java
new file mode 100644
index 0000000..a510c21
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/vo/MemberCollectSubjectVo.java
@@ -0,0 +1,36 @@
+package com.mall.member.domain.vo;
+
+import java.util.Date;
+import java.math.BigDecimal;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(name = "MemberCollectSubjectVO对象", title = "会员收藏的专题活动", description = "会员收藏的专题活动的VO对象")
+public class MemberCollectSubjectVo {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "subjectId", title = "subject_id")
+ private Long subjectId;
+
+ @Schema(name = "subjectName", title = "subject_name")
+ private String subjectName;
+
+ @Schema(name = "subjectImg", title = "subject_img")
+ private String subjectImg;
+
+ @Schema(name = "subjectUrll", title = "活动url")
+ private String subjectUrll;
+
+}
+
diff --git a/mall-member/src/main/java/com/mall/member/domain/vo/MemberLevelVo.java b/mall-member/src/main/java/com/mall/member/domain/vo/MemberLevelVo.java
new file mode 100644
index 0000000..dc1b6bb
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/vo/MemberLevelVo.java
@@ -0,0 +1,51 @@
+package com.mall.member.domain.vo;
+
+import java.util.Date;
+import java.math.BigDecimal;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(name = "MemberLevelVO对象", title = "会员等级", description = "会员等级的VO对象")
+public class MemberLevelVo {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "name", title = "等级名称")
+ private String name;
+
+ @Schema(name = "growthPoint", title = "等级需要的成长值")
+ private Integer growthPoint;
+
+ @Schema(name = "defaultStatus", title = "是否为默认等级[0->不是;1->是]")
+ private Integer defaultStatus;
+
+ @Schema(name = "freeFreightPoint", title = "免运费标准")
+ private BigDecimal freeFreightPoint;
+
+ @Schema(name = "commentGrowthPoint", title = "每次评价获取的成长值")
+ private Integer commentGrowthPoint;
+
+ @Schema(name = "priviledgeFreeFreight", title = "是否有免邮特权")
+ private Integer priviledgeFreeFreight;
+
+ @Schema(name = "priviledgeMemberPrice", title = "是否有会员价格特权")
+ private Integer priviledgeMemberPrice;
+
+ @Schema(name = "priviledgeBirthday", title = "是否有生日特权")
+ private Integer priviledgeBirthday;
+
+ @Schema(name = "note", title = "备注")
+ private String note;
+
+}
+
diff --git a/mall-member/src/main/java/com/mall/member/domain/vo/MemberLoginLogVo.java b/mall-member/src/main/java/com/mall/member/domain/vo/MemberLoginLogVo.java
new file mode 100644
index 0000000..2a0d629
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/vo/MemberLoginLogVo.java
@@ -0,0 +1,39 @@
+package com.mall.member.domain.vo;
+
+import java.util.Date;
+import java.math.BigDecimal;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(name = "MemberLoginLogVO对象", title = "会员登录记录", description = "会员登录记录的VO对象")
+public class MemberLoginLogVo {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "createTime", title = "创建时间")
+ private LocalDateTime createTime;
+
+ @Schema(name = "ip", title = "ip")
+ private String ip;
+
+ @Schema(name = "city", title = "city")
+ private String city;
+
+ @Schema(name = "loginType", title = "登录类型[1-web,2-app]")
+ private Boolean loginType;
+
+}
+
diff --git a/mall-member/src/main/java/com/mall/member/domain/vo/MemberReceiveAddressVo.java b/mall-member/src/main/java/com/mall/member/domain/vo/MemberReceiveAddressVo.java
new file mode 100644
index 0000000..dde375b
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/vo/MemberReceiveAddressVo.java
@@ -0,0 +1,47 @@
+package com.mall.member.domain.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(name = "MemberReceiveAddressVO对象", title = "会员收货地址", description = "会员收货地址的VO对象")
+public class MemberReceiveAddressVo {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "member_id")
+ private Long memberId;
+
+ @Schema(name = "name", title = "收货人姓名")
+ private String name;
+
+ @Schema(name = "phone", title = "电话")
+ private String phone;
+
+ @Schema(name = "postCode", title = "邮政编码")
+ private String postCode;
+
+ @Schema(name = "province", title = "省份/直辖市")
+ private String province;
+
+ @Schema(name = "city", title = "城市")
+ private String city;
+
+ @Schema(name = "region", title = "区")
+ private String region;
+
+ @Schema(name = "detailAddress", title = "详细地址(街道)")
+ private String detailAddress;
+
+ @Schema(name = "areacode", title = "省市区代码")
+ private String areacode;
+
+ @Schema(name = "defaultStatus", title = "是否默认")
+ private Boolean defaultStatus;
+
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/domain/vo/MemberStatisticsInfoVo.java b/mall-member/src/main/java/com/mall/member/domain/vo/MemberStatisticsInfoVo.java
new file mode 100644
index 0000000..cc58d5b
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/vo/MemberStatisticsInfoVo.java
@@ -0,0 +1,66 @@
+package com.mall.member.domain.vo;
+
+import java.util.Date;
+import java.math.BigDecimal;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(name = "MemberStatisticsInfoVO对象", title = "会员统计信息", description = "会员统计信息的VO对象")
+public class MemberStatisticsInfoVo {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "memberId", title = "会员id")
+ private Long memberId;
+
+ @Schema(name = "consumeAmount", title = "累计消费金额")
+ private BigDecimal consumeAmount;
+
+ @Schema(name = "couponAmount", title = "累计优惠金额")
+ private BigDecimal couponAmount;
+
+ @Schema(name = "orderCount", title = "订单数量")
+ private Integer orderCount;
+
+ @Schema(name = "couponCount", title = "优惠券数量")
+ private Integer couponCount;
+
+ @Schema(name = "commentCount", title = "评价数")
+ private Integer commentCount;
+
+ @Schema(name = "returnOrderCount", title = "退货数量")
+ private Integer returnOrderCount;
+
+ @Schema(name = "loginCount", title = "登录次数")
+ private Integer loginCount;
+
+ @Schema(name = "attendCount", title = "关注数量")
+ private Integer attendCount;
+
+ @Schema(name = "fansCount", title = "粉丝数量")
+ private Integer fansCount;
+
+ @Schema(name = "collectProductCount", title = "收藏的商品数量")
+ private Integer collectProductCount;
+
+ @Schema(name = "collectSubjectCount", title = "收藏的专题活动数量")
+ private Integer collectSubjectCount;
+
+ @Schema(name = "collectCommentCount", title = "收藏的评论数量")
+ private Integer collectCommentCount;
+
+ @Schema(name = "inviteFriendCount", title = "邀请的朋友数量")
+ private Integer inviteFriendCount;
+
+}
+
diff --git a/mall-member/src/main/java/com/mall/member/domain/vo/MemberVo.java b/mall-member/src/main/java/com/mall/member/domain/vo/MemberVo.java
new file mode 100644
index 0000000..53b9176
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/domain/vo/MemberVo.java
@@ -0,0 +1,84 @@
+package com.mall.member.domain.vo;
+
+import java.util.Date;
+import java.math.BigDecimal;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(name = "MemberVO对象", title = "会员", description = "会员的VO对象")
+public class MemberVo {
+
+ @Schema(name = "id", title = "id")
+ private Long id;
+
+ @Schema(name = "levelId", title = "会员等级id")
+ private Long levelId;
+
+ @Schema(name = "username", title = "用户名")
+ private String username;
+
+ @Schema(name = "password", title = "密码")
+ private String password;
+
+ @Schema(name = "nickname", title = "昵称")
+ private String nickname;
+
+ @Schema(name = "mobile", title = "手机号码")
+ private String mobile;
+
+ @Schema(name = "email", title = "邮箱")
+ private String email;
+
+ @Schema(name = "header", title = "头像")
+ private String header;
+
+ @Schema(name = "gender", title = "性别")
+ private Integer gender;
+
+ @Schema(name = "birth", title = "生日")
+ private Date birth;
+
+ @Schema(name = "city", title = "所在城市")
+ private String city;
+
+ @Schema(name = "job", title = "职业")
+ private String job;
+
+ @Schema(name = "sign", title = "个性签名")
+ private String sign;
+
+ @Schema(name = "sourceType", title = "用户来源")
+ private Integer sourceType;
+
+ @Schema(name = "integration", title = "积分")
+ private Integer integration;
+
+ @Schema(name = "growth", title = "成长值")
+ private Integer growth;
+
+ @Schema(name = "status", title = "启用状态")
+ private Integer status;
+
+ @Schema(name = "createTime", title = "注册时间")
+ private LocalDateTime createTime;
+
+ @Schema(name = "socialUid", title = "社交用户的唯一id")
+ private String socialUid;
+
+ @Schema(name = "accessToken", title = "访问令牌")
+ private String accessToken;
+
+ @Schema(name = "expiresIn", title = "访问令牌的时间")
+ private String expiresIn;
+
+}
+
diff --git a/mall-member/src/main/java/com/mall/member/mapper/GrowthChangeHistoryMapper.java b/mall-member/src/main/java/com/mall/member/mapper/GrowthChangeHistoryMapper.java
new file mode 100644
index 0000000..ada0472
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/mapper/GrowthChangeHistoryMapper.java
@@ -0,0 +1,35 @@
+package com.mall.member.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import com.mall.member.domain.dto.GrowthChangeHistoryDto;
+import com.mall.member.domain.entity.GrowthChangeHistory;
+import com.mall.member.domain.vo.GrowthChangeHistoryVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 成长值变化历史记录 Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Mapper
+public interface GrowthChangeHistoryMapper extends BaseMapper {
+
+ /**
+ * * 分页查询成长值变化历史记录内容
+ *
+ * @param pageParams 成长值变化历史记录分页参数
+ * @param dto 成长值变化历史记录查询表单
+ * @return 成长值变化历史记录分页结果
+ */
+ IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") GrowthChangeHistoryDto dto);
+
+}
diff --git a/mall-member/src/main/java/com/mall/member/mapper/IntegrationChangeHistoryMapper.java b/mall-member/src/main/java/com/mall/member/mapper/IntegrationChangeHistoryMapper.java
new file mode 100644
index 0000000..01ac530
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/mapper/IntegrationChangeHistoryMapper.java
@@ -0,0 +1,35 @@
+package com.mall.member.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import com.mall.member.domain.dto.IntegrationChangeHistoryDto;
+import com.mall.member.domain.entity.IntegrationChangeHistory;
+import com.mall.member.domain.vo.IntegrationChangeHistoryVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 积分变化历史记录 Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Mapper
+public interface IntegrationChangeHistoryMapper extends BaseMapper {
+
+ /**
+ * * 分页查询积分变化历史记录内容
+ *
+ * @param pageParams 积分变化历史记录分页参数
+ * @param dto 积分变化历史记录查询表单
+ * @return 积分变化历史记录分页结果
+ */
+ IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") IntegrationChangeHistoryDto dto);
+
+}
diff --git a/mall-member/src/main/java/com/mall/member/mapper/MemberCollectSpuMapper.java b/mall-member/src/main/java/com/mall/member/mapper/MemberCollectSpuMapper.java
new file mode 100644
index 0000000..b2cbfd6
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/mapper/MemberCollectSpuMapper.java
@@ -0,0 +1,35 @@
+package com.mall.member.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import com.mall.member.domain.dto.MemberCollectSpuDto;
+import com.mall.member.domain.entity.MemberCollectSpu;
+import com.mall.member.domain.vo.MemberCollectSpuVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收藏的商品 Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Mapper
+public interface MemberCollectSpuMapper extends BaseMapper {
+
+ /**
+ * * 分页查询会员收藏的商品内容
+ *
+ * @param pageParams 会员收藏的商品分页参数
+ * @param dto 会员收藏的商品查询表单
+ * @return 会员收藏的商品分页结果
+ */
+ IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") MemberCollectSpuDto dto);
+
+}
diff --git a/mall-member/src/main/java/com/mall/member/mapper/MemberCollectSubjectMapper.java b/mall-member/src/main/java/com/mall/member/mapper/MemberCollectSubjectMapper.java
new file mode 100644
index 0000000..43cd863
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/mapper/MemberCollectSubjectMapper.java
@@ -0,0 +1,35 @@
+package com.mall.member.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import com.mall.member.domain.dto.MemberCollectSubjectDto;
+import com.mall.member.domain.entity.MemberCollectSubject;
+import com.mall.member.domain.vo.MemberCollectSubjectVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收藏的专题活动 Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Mapper
+public interface MemberCollectSubjectMapper extends BaseMapper {
+
+ /**
+ * * 分页查询会员收藏的专题活动内容
+ *
+ * @param pageParams 会员收藏的专题活动分页参数
+ * @param dto 会员收藏的专题活动查询表单
+ * @return 会员收藏的专题活动分页结果
+ */
+ IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") MemberCollectSubjectDto dto);
+
+}
diff --git a/mall-member/src/main/java/com/mall/member/mapper/MemberLevelMapper.java b/mall-member/src/main/java/com/mall/member/mapper/MemberLevelMapper.java
new file mode 100644
index 0000000..6ef60c4
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/mapper/MemberLevelMapper.java
@@ -0,0 +1,35 @@
+package com.mall.member.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import com.mall.member.domain.dto.MemberLevelDto;
+import com.mall.member.domain.entity.MemberLevel;
+import com.mall.member.domain.vo.MemberLevelVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 会员等级 Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Mapper
+public interface MemberLevelMapper extends BaseMapper {
+
+ /**
+ * * 分页查询会员等级内容
+ *
+ * @param pageParams 会员等级分页参数
+ * @param dto 会员等级查询表单
+ * @return 会员等级分页结果
+ */
+ IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") MemberLevelDto dto);
+
+}
diff --git a/mall-member/src/main/java/com/mall/member/mapper/MemberLoginLogMapper.java b/mall-member/src/main/java/com/mall/member/mapper/MemberLoginLogMapper.java
new file mode 100644
index 0000000..a0c532e
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/mapper/MemberLoginLogMapper.java
@@ -0,0 +1,35 @@
+package com.mall.member.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import com.mall.member.domain.dto.MemberLoginLogDto;
+import com.mall.member.domain.entity.MemberLoginLog;
+import com.mall.member.domain.vo.MemberLoginLogVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 会员登录记录 Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Mapper
+public interface MemberLoginLogMapper extends BaseMapper {
+
+ /**
+ * * 分页查询会员登录记录内容
+ *
+ * @param pageParams 会员登录记录分页参数
+ * @param dto 会员登录记录查询表单
+ * @return 会员登录记录分页结果
+ */
+ IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") MemberLoginLogDto dto);
+
+}
diff --git a/mall-member/src/main/java/com/mall/member/mapper/MemberMapper.java b/mall-member/src/main/java/com/mall/member/mapper/MemberMapper.java
new file mode 100644
index 0000000..c760512
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/mapper/MemberMapper.java
@@ -0,0 +1,35 @@
+package com.mall.member.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import com.mall.member.domain.dto.MemberDto;
+import com.mall.member.domain.entity.Member;
+import com.mall.member.domain.vo.MemberVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 会员 Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Mapper
+public interface MemberMapper extends BaseMapper {
+
+ /**
+ * * 分页查询会员内容
+ *
+ * @param pageParams 会员分页参数
+ * @param dto 会员查询表单
+ * @return 会员分页结果
+ */
+ IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") MemberDto dto);
+
+}
diff --git a/mall-member/src/main/java/com/mall/member/mapper/MemberReceiveAddressMapper.java b/mall-member/src/main/java/com/mall/member/mapper/MemberReceiveAddressMapper.java
new file mode 100644
index 0000000..1108e86
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/mapper/MemberReceiveAddressMapper.java
@@ -0,0 +1,35 @@
+package com.mall.member.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import com.mall.member.domain.dto.MemberReceiveAddressDto;
+import com.mall.member.domain.entity.MemberReceiveAddress;
+import com.mall.member.domain.vo.MemberReceiveAddressVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收货地址 Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Mapper
+public interface MemberReceiveAddressMapper extends BaseMapper {
+
+ /**
+ * * 分页查询会员收货地址内容
+ *
+ * @param pageParams 会员收货地址分页参数
+ * @param dto 会员收货地址查询表单
+ * @return 会员收货地址分页结果
+ */
+ IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") MemberReceiveAddressDto dto);
+
+}
diff --git a/mall-member/src/main/java/com/mall/member/mapper/MemberStatisticsInfoMapper.java b/mall-member/src/main/java/com/mall/member/mapper/MemberStatisticsInfoMapper.java
new file mode 100644
index 0000000..45176cf
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/mapper/MemberStatisticsInfoMapper.java
@@ -0,0 +1,35 @@
+package com.mall.member.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import com.mall.member.domain.dto.MemberStatisticsInfoDto;
+import com.mall.member.domain.entity.MemberStatisticsInfo;
+import com.mall.member.domain.vo.MemberStatisticsInfoVo;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 会员统计信息 Mapper 接口
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Mapper
+public interface MemberStatisticsInfoMapper extends BaseMapper {
+
+ /**
+ * * 分页查询会员统计信息内容
+ *
+ * @param pageParams 会员统计信息分页参数
+ * @param dto 会员统计信息查询表单
+ * @return 会员统计信息分页结果
+ */
+ IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") MemberStatisticsInfoDto dto);
+
+}
diff --git a/mall-member/src/main/java/com/mall/member/service/GrowthChangeHistoryService.java b/mall-member/src/main/java/com/mall/member/service/GrowthChangeHistoryService.java
new file mode 100644
index 0000000..52d8415
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/GrowthChangeHistoryService.java
@@ -0,0 +1,52 @@
+package com.mall.member.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mall.member.domain.dto.GrowthChangeHistoryDto;
+import com.mall.member.domain.entity.GrowthChangeHistory;
+import com.mall.member.domain.vo.GrowthChangeHistoryVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 成长值变化历史记录 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+public interface GrowthChangeHistoryService extends IService {
+
+ /**
+ * 分页查询成长值变化历史记录
+ *
+ * @return {@link GrowthChangeHistoryVo}
+ */
+ PageResult getGrowthChangeHistoryPage(Page pageParams, GrowthChangeHistoryDto dto);
+
+ /**
+ * 添加成长值变化历史记录
+ *
+ * @param dto {@link GrowthChangeHistoryDto} 添加表单
+ */
+ void addGrowthChangeHistory(GrowthChangeHistoryDto dto);
+
+ /**
+ * 更新成长值变化历史记录
+ *
+ * @param dto {@link GrowthChangeHistoryDto} 更新表单
+ */
+ void updateGrowthChangeHistory(GrowthChangeHistoryDto dto);
+
+ /**
+ * 删除|批量删除成长值变化历史记录类型
+ *
+ * @param ids 删除id列表
+ */
+ void deleteGrowthChangeHistory(List ids);
+}
diff --git a/mall-member/src/main/java/com/mall/member/service/IntegrationChangeHistoryService.java b/mall-member/src/main/java/com/mall/member/service/IntegrationChangeHistoryService.java
new file mode 100644
index 0000000..1fd7bf1
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/IntegrationChangeHistoryService.java
@@ -0,0 +1,52 @@
+package com.mall.member.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mall.member.domain.dto.IntegrationChangeHistoryDto;
+import com.mall.member.domain.entity.IntegrationChangeHistory;
+import com.mall.member.domain.vo.IntegrationChangeHistoryVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 积分变化历史记录 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+public interface IntegrationChangeHistoryService extends IService {
+
+ /**
+ * 分页查询积分变化历史记录
+ *
+ * @return {@link IntegrationChangeHistoryVo}
+ */
+ PageResult getIntegrationChangeHistoryPage(Page pageParams, IntegrationChangeHistoryDto dto);
+
+ /**
+ * 添加积分变化历史记录
+ *
+ * @param dto {@link IntegrationChangeHistoryDto} 添加表单
+ */
+ void addIntegrationChangeHistory(IntegrationChangeHistoryDto dto);
+
+ /**
+ * 更新积分变化历史记录
+ *
+ * @param dto {@link IntegrationChangeHistoryDto} 更新表单
+ */
+ void updateIntegrationChangeHistory(IntegrationChangeHistoryDto dto);
+
+ /**
+ * 删除|批量删除积分变化历史记录类型
+ *
+ * @param ids 删除id列表
+ */
+ void deleteIntegrationChangeHistory(List ids);
+}
diff --git a/mall-member/src/main/java/com/mall/member/service/MemberCollectSpuService.java b/mall-member/src/main/java/com/mall/member/service/MemberCollectSpuService.java
new file mode 100644
index 0000000..d4e6a3e
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/MemberCollectSpuService.java
@@ -0,0 +1,52 @@
+package com.mall.member.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mall.member.domain.dto.MemberCollectSpuDto;
+import com.mall.member.domain.entity.MemberCollectSpu;
+import com.mall.member.domain.vo.MemberCollectSpuVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收藏的商品 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+public interface MemberCollectSpuService extends IService {
+
+ /**
+ * 分页查询会员收藏的商品
+ *
+ * @return {@link MemberCollectSpuVo}
+ */
+ PageResult getMemberCollectSpuPage(Page pageParams, MemberCollectSpuDto dto);
+
+ /**
+ * 添加会员收藏的商品
+ *
+ * @param dto {@link MemberCollectSpuDto} 添加表单
+ */
+ void addMemberCollectSpu(MemberCollectSpuDto dto);
+
+ /**
+ * 更新会员收藏的商品
+ *
+ * @param dto {@link MemberCollectSpuDto} 更新表单
+ */
+ void updateMemberCollectSpu(MemberCollectSpuDto dto);
+
+ /**
+ * 删除|批量删除会员收藏的商品类型
+ *
+ * @param ids 删除id列表
+ */
+ void deleteMemberCollectSpu(List ids);
+}
diff --git a/mall-member/src/main/java/com/mall/member/service/MemberCollectSubjectService.java b/mall-member/src/main/java/com/mall/member/service/MemberCollectSubjectService.java
new file mode 100644
index 0000000..b86068c
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/MemberCollectSubjectService.java
@@ -0,0 +1,52 @@
+package com.mall.member.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mall.member.domain.dto.MemberCollectSubjectDto;
+import com.mall.member.domain.entity.MemberCollectSubject;
+import com.mall.member.domain.vo.MemberCollectSubjectVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收藏的专题活动 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+public interface MemberCollectSubjectService extends IService {
+
+ /**
+ * 分页查询会员收藏的专题活动
+ *
+ * @return {@link MemberCollectSubjectVo}
+ */
+ PageResult getMemberCollectSubjectPage(Page pageParams, MemberCollectSubjectDto dto);
+
+ /**
+ * 添加会员收藏的专题活动
+ *
+ * @param dto {@link MemberCollectSubjectDto} 添加表单
+ */
+ void addMemberCollectSubject(MemberCollectSubjectDto dto);
+
+ /**
+ * 更新会员收藏的专题活动
+ *
+ * @param dto {@link MemberCollectSubjectDto} 更新表单
+ */
+ void updateMemberCollectSubject(MemberCollectSubjectDto dto);
+
+ /**
+ * 删除|批量删除会员收藏的专题活动类型
+ *
+ * @param ids 删除id列表
+ */
+ void deleteMemberCollectSubject(List ids);
+}
diff --git a/mall-member/src/main/java/com/mall/member/service/MemberLevelService.java b/mall-member/src/main/java/com/mall/member/service/MemberLevelService.java
new file mode 100644
index 0000000..5b223cf
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/MemberLevelService.java
@@ -0,0 +1,52 @@
+package com.mall.member.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mall.member.domain.dto.MemberLevelDto;
+import com.mall.member.domain.entity.MemberLevel;
+import com.mall.member.domain.vo.MemberLevelVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员等级 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+public interface MemberLevelService extends IService {
+
+ /**
+ * 分页查询会员等级
+ *
+ * @return {@link MemberLevelVo}
+ */
+ PageResult getMemberLevelPage(Page pageParams, MemberLevelDto dto);
+
+ /**
+ * 添加会员等级
+ *
+ * @param dto {@link MemberLevelDto} 添加表单
+ */
+ void addMemberLevel(MemberLevelDto dto);
+
+ /**
+ * 更新会员等级
+ *
+ * @param dto {@link MemberLevelDto} 更新表单
+ */
+ void updateMemberLevel(MemberLevelDto dto);
+
+ /**
+ * 删除|批量删除会员等级类型
+ *
+ * @param ids 删除id列表
+ */
+ void deleteMemberLevel(List ids);
+}
diff --git a/mall-member/src/main/java/com/mall/member/service/MemberLoginLogService.java b/mall-member/src/main/java/com/mall/member/service/MemberLoginLogService.java
new file mode 100644
index 0000000..8df38f5
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/MemberLoginLogService.java
@@ -0,0 +1,52 @@
+package com.mall.member.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mall.member.domain.dto.MemberLoginLogDto;
+import com.mall.member.domain.entity.MemberLoginLog;
+import com.mall.member.domain.vo.MemberLoginLogVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员登录记录 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+public interface MemberLoginLogService extends IService {
+
+ /**
+ * 分页查询会员登录记录
+ *
+ * @return {@link MemberLoginLogVo}
+ */
+ PageResult getMemberLoginLogPage(Page pageParams, MemberLoginLogDto dto);
+
+ /**
+ * 添加会员登录记录
+ *
+ * @param dto {@link MemberLoginLogDto} 添加表单
+ */
+ void addMemberLoginLog(MemberLoginLogDto dto);
+
+ /**
+ * 更新会员登录记录
+ *
+ * @param dto {@link MemberLoginLogDto} 更新表单
+ */
+ void updateMemberLoginLog(MemberLoginLogDto dto);
+
+ /**
+ * 删除|批量删除会员登录记录类型
+ *
+ * @param ids 删除id列表
+ */
+ void deleteMemberLoginLog(List ids);
+}
diff --git a/mall-member/src/main/java/com/mall/member/service/MemberReceiveAddressService.java b/mall-member/src/main/java/com/mall/member/service/MemberReceiveAddressService.java
new file mode 100644
index 0000000..b500d72
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/MemberReceiveAddressService.java
@@ -0,0 +1,52 @@
+package com.mall.member.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mall.member.domain.dto.MemberReceiveAddressDto;
+import com.mall.member.domain.entity.MemberReceiveAddress;
+import com.mall.member.domain.vo.MemberReceiveAddressVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收货地址 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+public interface MemberReceiveAddressService extends IService {
+
+ /**
+ * 分页查询会员收货地址
+ *
+ * @return {@link MemberReceiveAddressVo}
+ */
+ PageResult getMemberReceiveAddressPage(Page pageParams, MemberReceiveAddressDto dto);
+
+ /**
+ * 添加会员收货地址
+ *
+ * @param dto {@link MemberReceiveAddressDto} 添加表单
+ */
+ void addMemberReceiveAddress(MemberReceiveAddressDto dto);
+
+ /**
+ * 更新会员收货地址
+ *
+ * @param dto {@link MemberReceiveAddressDto} 更新表单
+ */
+ void updateMemberReceiveAddress(MemberReceiveAddressDto dto);
+
+ /**
+ * 删除|批量删除会员收货地址类型
+ *
+ * @param ids 删除id列表
+ */
+ void deleteMemberReceiveAddress(List ids);
+}
diff --git a/mall-member/src/main/java/com/mall/member/service/MemberService.java b/mall-member/src/main/java/com/mall/member/service/MemberService.java
new file mode 100644
index 0000000..5ddcc26
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/MemberService.java
@@ -0,0 +1,52 @@
+package com.mall.member.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mall.member.domain.dto.MemberDto;
+import com.mall.member.domain.entity.Member;
+import com.mall.member.domain.vo.MemberVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+public interface MemberService extends IService {
+
+ /**
+ * 分页查询会员
+ *
+ * @return {@link MemberVo}
+ */
+ PageResult getMemberPage(Page pageParams, MemberDto dto);
+
+ /**
+ * 添加会员
+ *
+ * @param dto {@link MemberDto} 添加表单
+ */
+ void addMember(MemberDto dto);
+
+ /**
+ * 更新会员
+ *
+ * @param dto {@link MemberDto} 更新表单
+ */
+ void updateMember(MemberDto dto);
+
+ /**
+ * 删除|批量删除会员类型
+ *
+ * @param ids 删除id列表
+ */
+ void deleteMember(List ids);
+}
diff --git a/mall-member/src/main/java/com/mall/member/service/MemberStatisticsInfoService.java b/mall-member/src/main/java/com/mall/member/service/MemberStatisticsInfoService.java
new file mode 100644
index 0000000..f2c9879
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/MemberStatisticsInfoService.java
@@ -0,0 +1,52 @@
+package com.mall.member.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mall.member.domain.dto.MemberStatisticsInfoDto;
+import com.mall.member.domain.entity.MemberStatisticsInfo;
+import com.mall.member.domain.vo.MemberStatisticsInfoVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员统计信息 服务类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+public interface MemberStatisticsInfoService extends IService {
+
+ /**
+ * 分页查询会员统计信息
+ *
+ * @return {@link MemberStatisticsInfoVo}
+ */
+ PageResult getMemberStatisticsInfoPage(Page pageParams, MemberStatisticsInfoDto dto);
+
+ /**
+ * 添加会员统计信息
+ *
+ * @param dto {@link MemberStatisticsInfoDto} 添加表单
+ */
+ void addMemberStatisticsInfo(MemberStatisticsInfoDto dto);
+
+ /**
+ * 更新会员统计信息
+ *
+ * @param dto {@link MemberStatisticsInfoDto} 更新表单
+ */
+ void updateMemberStatisticsInfo(MemberStatisticsInfoDto dto);
+
+ /**
+ * 删除|批量删除会员统计信息类型
+ *
+ * @param ids 删除id列表
+ */
+ void deleteMemberStatisticsInfo(List ids);
+}
diff --git a/mall-member/src/main/java/com/mall/member/service/impl/GrowthChangeHistoryServiceImpl.java b/mall-member/src/main/java/com/mall/member/service/impl/GrowthChangeHistoryServiceImpl.java
new file mode 100644
index 0000000..28ebed1
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/impl/GrowthChangeHistoryServiceImpl.java
@@ -0,0 +1,85 @@
+package com.mall.member.service.impl;
+
+import com.mall.member.mapper.GrowthChangeHistoryMapper;
+import com.mall.member.service.GrowthChangeHistoryService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.mall.member.service.GrowthChangeHistoryService;
+import com.mall.member.domain.dto.GrowthChangeHistoryDto;
+import com.mall.member.domain.entity.GrowthChangeHistory;
+import com.mall.member.domain.vo.GrowthChangeHistoryVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 成长值变化历史记录 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Service
+@Transactional
+public class GrowthChangeHistoryServiceImpl extends ServiceImpl implements GrowthChangeHistoryService {
+
+ /**
+ * * 成长值变化历史记录 服务实现类
+ *
+ * @param pageParams 成长值变化历史记录分页查询page对象
+ * @param dto 成长值变化历史记录分页查询对象
+ * @return 查询分页成长值变化历史记录返回对象
+ */
+ @Override
+ public PageResult getGrowthChangeHistoryPage(Page pageParams, GrowthChangeHistoryDto dto) {
+ IPage page = baseMapper.selectListByPage(pageParams, dto);
+
+ return PageResult.builder()
+ .list(page.getRecords())
+ .pageNo(page.getCurrent())
+ .pageSize(page.getSize())
+ .total(page.getTotal())
+ .build();
+ }
+
+ /**
+ * 添加成长值变化历史记录
+ *
+ * @param dto 成长值变化历史记录添加
+ */
+ @Override
+ public void addGrowthChangeHistory(GrowthChangeHistoryDto dto) {
+ GrowthChangeHistory growthChangeHistory =new GrowthChangeHistory();
+ BeanUtils.copyProperties(dto, growthChangeHistory);
+ save(growthChangeHistory);
+ }
+
+ /**
+ * 更新成长值变化历史记录
+ *
+ * @param dto 成长值变化历史记录更新
+ */
+ @Override
+ public void updateGrowthChangeHistory(GrowthChangeHistoryDto dto) {
+ GrowthChangeHistory growthChangeHistory =new GrowthChangeHistory();
+ BeanUtils.copyProperties(dto, growthChangeHistory);
+ updateById(growthChangeHistory);
+ }
+
+ /**
+ * 删除|批量删除成长值变化历史记录
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteGrowthChangeHistory(List ids) {
+ removeByIds(ids);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/service/impl/IntegrationChangeHistoryServiceImpl.java b/mall-member/src/main/java/com/mall/member/service/impl/IntegrationChangeHistoryServiceImpl.java
new file mode 100644
index 0000000..d211218
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/impl/IntegrationChangeHistoryServiceImpl.java
@@ -0,0 +1,85 @@
+package com.mall.member.service.impl;
+
+import com.mall.member.mapper.IntegrationChangeHistoryMapper;
+import com.mall.member.service.IntegrationChangeHistoryService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.mall.member.service.IntegrationChangeHistoryService;
+import com.mall.member.domain.dto.IntegrationChangeHistoryDto;
+import com.mall.member.domain.entity.IntegrationChangeHistory;
+import com.mall.member.domain.vo.IntegrationChangeHistoryVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 积分变化历史记录 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Service
+@Transactional
+public class IntegrationChangeHistoryServiceImpl extends ServiceImpl implements IntegrationChangeHistoryService {
+
+ /**
+ * * 积分变化历史记录 服务实现类
+ *
+ * @param pageParams 积分变化历史记录分页查询page对象
+ * @param dto 积分变化历史记录分页查询对象
+ * @return 查询分页积分变化历史记录返回对象
+ */
+ @Override
+ public PageResult getIntegrationChangeHistoryPage(Page pageParams, IntegrationChangeHistoryDto dto) {
+ IPage page = baseMapper.selectListByPage(pageParams, dto);
+
+ return PageResult.builder()
+ .list(page.getRecords())
+ .pageNo(page.getCurrent())
+ .pageSize(page.getSize())
+ .total(page.getTotal())
+ .build();
+ }
+
+ /**
+ * 添加积分变化历史记录
+ *
+ * @param dto 积分变化历史记录添加
+ */
+ @Override
+ public void addIntegrationChangeHistory(IntegrationChangeHistoryDto dto) {
+ IntegrationChangeHistory integrationChangeHistory =new IntegrationChangeHistory();
+ BeanUtils.copyProperties(dto, integrationChangeHistory);
+ save(integrationChangeHistory);
+ }
+
+ /**
+ * 更新积分变化历史记录
+ *
+ * @param dto 积分变化历史记录更新
+ */
+ @Override
+ public void updateIntegrationChangeHistory(IntegrationChangeHistoryDto dto) {
+ IntegrationChangeHistory integrationChangeHistory =new IntegrationChangeHistory();
+ BeanUtils.copyProperties(dto, integrationChangeHistory);
+ updateById(integrationChangeHistory);
+ }
+
+ /**
+ * 删除|批量删除积分变化历史记录
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteIntegrationChangeHistory(List ids) {
+ removeByIds(ids);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/service/impl/MemberCollectSpuServiceImpl.java b/mall-member/src/main/java/com/mall/member/service/impl/MemberCollectSpuServiceImpl.java
new file mode 100644
index 0000000..638193c
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/impl/MemberCollectSpuServiceImpl.java
@@ -0,0 +1,85 @@
+package com.mall.member.service.impl;
+
+import com.mall.member.mapper.MemberCollectSpuMapper;
+import com.mall.member.service.MemberCollectSpuService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.mall.member.service.MemberCollectSpuService;
+import com.mall.member.domain.dto.MemberCollectSpuDto;
+import com.mall.member.domain.entity.MemberCollectSpu;
+import com.mall.member.domain.vo.MemberCollectSpuVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收藏的商品 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Service
+@Transactional
+public class MemberCollectSpuServiceImpl extends ServiceImpl implements MemberCollectSpuService {
+
+ /**
+ * * 会员收藏的商品 服务实现类
+ *
+ * @param pageParams 会员收藏的商品分页查询page对象
+ * @param dto 会员收藏的商品分页查询对象
+ * @return 查询分页会员收藏的商品返回对象
+ */
+ @Override
+ public PageResult getMemberCollectSpuPage(Page pageParams, MemberCollectSpuDto dto) {
+ IPage page = baseMapper.selectListByPage(pageParams, dto);
+
+ return PageResult.builder()
+ .list(page.getRecords())
+ .pageNo(page.getCurrent())
+ .pageSize(page.getSize())
+ .total(page.getTotal())
+ .build();
+ }
+
+ /**
+ * 添加会员收藏的商品
+ *
+ * @param dto 会员收藏的商品添加
+ */
+ @Override
+ public void addMemberCollectSpu(MemberCollectSpuDto dto) {
+ MemberCollectSpu memberCollectSpu =new MemberCollectSpu();
+ BeanUtils.copyProperties(dto, memberCollectSpu);
+ save(memberCollectSpu);
+ }
+
+ /**
+ * 更新会员收藏的商品
+ *
+ * @param dto 会员收藏的商品更新
+ */
+ @Override
+ public void updateMemberCollectSpu(MemberCollectSpuDto dto) {
+ MemberCollectSpu memberCollectSpu =new MemberCollectSpu();
+ BeanUtils.copyProperties(dto, memberCollectSpu);
+ updateById(memberCollectSpu);
+ }
+
+ /**
+ * 删除|批量删除会员收藏的商品
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteMemberCollectSpu(List ids) {
+ removeByIds(ids);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/service/impl/MemberCollectSubjectServiceImpl.java b/mall-member/src/main/java/com/mall/member/service/impl/MemberCollectSubjectServiceImpl.java
new file mode 100644
index 0000000..f94076b
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/impl/MemberCollectSubjectServiceImpl.java
@@ -0,0 +1,85 @@
+package com.mall.member.service.impl;
+
+import com.mall.member.mapper.MemberCollectSubjectMapper;
+import com.mall.member.service.MemberCollectSubjectService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.mall.member.service.MemberCollectSubjectService;
+import com.mall.member.domain.dto.MemberCollectSubjectDto;
+import com.mall.member.domain.entity.MemberCollectSubject;
+import com.mall.member.domain.vo.MemberCollectSubjectVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收藏的专题活动 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Service
+@Transactional
+public class MemberCollectSubjectServiceImpl extends ServiceImpl implements MemberCollectSubjectService {
+
+ /**
+ * * 会员收藏的专题活动 服务实现类
+ *
+ * @param pageParams 会员收藏的专题活动分页查询page对象
+ * @param dto 会员收藏的专题活动分页查询对象
+ * @return 查询分页会员收藏的专题活动返回对象
+ */
+ @Override
+ public PageResult getMemberCollectSubjectPage(Page pageParams, MemberCollectSubjectDto dto) {
+ IPage page = baseMapper.selectListByPage(pageParams, dto);
+
+ return PageResult.builder()
+ .list(page.getRecords())
+ .pageNo(page.getCurrent())
+ .pageSize(page.getSize())
+ .total(page.getTotal())
+ .build();
+ }
+
+ /**
+ * 添加会员收藏的专题活动
+ *
+ * @param dto 会员收藏的专题活动添加
+ */
+ @Override
+ public void addMemberCollectSubject(MemberCollectSubjectDto dto) {
+ MemberCollectSubject memberCollectSubject =new MemberCollectSubject();
+ BeanUtils.copyProperties(dto, memberCollectSubject);
+ save(memberCollectSubject);
+ }
+
+ /**
+ * 更新会员收藏的专题活动
+ *
+ * @param dto 会员收藏的专题活动更新
+ */
+ @Override
+ public void updateMemberCollectSubject(MemberCollectSubjectDto dto) {
+ MemberCollectSubject memberCollectSubject =new MemberCollectSubject();
+ BeanUtils.copyProperties(dto, memberCollectSubject);
+ updateById(memberCollectSubject);
+ }
+
+ /**
+ * 删除|批量删除会员收藏的专题活动
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteMemberCollectSubject(List ids) {
+ removeByIds(ids);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/service/impl/MemberLevelServiceImpl.java b/mall-member/src/main/java/com/mall/member/service/impl/MemberLevelServiceImpl.java
new file mode 100644
index 0000000..531a871
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/impl/MemberLevelServiceImpl.java
@@ -0,0 +1,85 @@
+package com.mall.member.service.impl;
+
+import com.mall.member.mapper.MemberLevelMapper;
+import com.mall.member.service.MemberLevelService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.mall.member.service.MemberLevelService;
+import com.mall.member.domain.dto.MemberLevelDto;
+import com.mall.member.domain.entity.MemberLevel;
+import com.mall.member.domain.vo.MemberLevelVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员等级 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Service
+@Transactional
+public class MemberLevelServiceImpl extends ServiceImpl implements MemberLevelService {
+
+ /**
+ * * 会员等级 服务实现类
+ *
+ * @param pageParams 会员等级分页查询page对象
+ * @param dto 会员等级分页查询对象
+ * @return 查询分页会员等级返回对象
+ */
+ @Override
+ public PageResult getMemberLevelPage(Page pageParams, MemberLevelDto dto) {
+ IPage page = baseMapper.selectListByPage(pageParams, dto);
+
+ return PageResult.builder()
+ .list(page.getRecords())
+ .pageNo(page.getCurrent())
+ .pageSize(page.getSize())
+ .total(page.getTotal())
+ .build();
+ }
+
+ /**
+ * 添加会员等级
+ *
+ * @param dto 会员等级添加
+ */
+ @Override
+ public void addMemberLevel(MemberLevelDto dto) {
+ MemberLevel memberLevel =new MemberLevel();
+ BeanUtils.copyProperties(dto, memberLevel);
+ save(memberLevel);
+ }
+
+ /**
+ * 更新会员等级
+ *
+ * @param dto 会员等级更新
+ */
+ @Override
+ public void updateMemberLevel(MemberLevelDto dto) {
+ MemberLevel memberLevel =new MemberLevel();
+ BeanUtils.copyProperties(dto, memberLevel);
+ updateById(memberLevel);
+ }
+
+ /**
+ * 删除|批量删除会员等级
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteMemberLevel(List ids) {
+ removeByIds(ids);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/service/impl/MemberLoginLogServiceImpl.java b/mall-member/src/main/java/com/mall/member/service/impl/MemberLoginLogServiceImpl.java
new file mode 100644
index 0000000..ca0f854
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/impl/MemberLoginLogServiceImpl.java
@@ -0,0 +1,85 @@
+package com.mall.member.service.impl;
+
+import com.mall.member.mapper.MemberLoginLogMapper;
+import com.mall.member.service.MemberLoginLogService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.mall.member.service.MemberLoginLogService;
+import com.mall.member.domain.dto.MemberLoginLogDto;
+import com.mall.member.domain.entity.MemberLoginLog;
+import com.mall.member.domain.vo.MemberLoginLogVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员登录记录 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Service
+@Transactional
+public class MemberLoginLogServiceImpl extends ServiceImpl implements MemberLoginLogService {
+
+ /**
+ * * 会员登录记录 服务实现类
+ *
+ * @param pageParams 会员登录记录分页查询page对象
+ * @param dto 会员登录记录分页查询对象
+ * @return 查询分页会员登录记录返回对象
+ */
+ @Override
+ public PageResult getMemberLoginLogPage(Page pageParams, MemberLoginLogDto dto) {
+ IPage page = baseMapper.selectListByPage(pageParams, dto);
+
+ return PageResult.builder()
+ .list(page.getRecords())
+ .pageNo(page.getCurrent())
+ .pageSize(page.getSize())
+ .total(page.getTotal())
+ .build();
+ }
+
+ /**
+ * 添加会员登录记录
+ *
+ * @param dto 会员登录记录添加
+ */
+ @Override
+ public void addMemberLoginLog(MemberLoginLogDto dto) {
+ MemberLoginLog memberLoginLog =new MemberLoginLog();
+ BeanUtils.copyProperties(dto, memberLoginLog);
+ save(memberLoginLog);
+ }
+
+ /**
+ * 更新会员登录记录
+ *
+ * @param dto 会员登录记录更新
+ */
+ @Override
+ public void updateMemberLoginLog(MemberLoginLogDto dto) {
+ MemberLoginLog memberLoginLog =new MemberLoginLog();
+ BeanUtils.copyProperties(dto, memberLoginLog);
+ updateById(memberLoginLog);
+ }
+
+ /**
+ * 删除|批量删除会员登录记录
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteMemberLoginLog(List ids) {
+ removeByIds(ids);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/service/impl/MemberReceiveAddressServiceImpl.java b/mall-member/src/main/java/com/mall/member/service/impl/MemberReceiveAddressServiceImpl.java
new file mode 100644
index 0000000..d308d15
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/impl/MemberReceiveAddressServiceImpl.java
@@ -0,0 +1,85 @@
+package com.mall.member.service.impl;
+
+import com.mall.member.mapper.MemberReceiveAddressMapper;
+import com.mall.member.service.MemberReceiveAddressService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.mall.member.service.MemberReceiveAddressService;
+import com.mall.member.domain.dto.MemberReceiveAddressDto;
+import com.mall.member.domain.entity.MemberReceiveAddress;
+import com.mall.member.domain.vo.MemberReceiveAddressVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员收货地址 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Service
+@Transactional
+public class MemberReceiveAddressServiceImpl extends ServiceImpl implements MemberReceiveAddressService {
+
+ /**
+ * * 会员收货地址 服务实现类
+ *
+ * @param pageParams 会员收货地址分页查询page对象
+ * @param dto 会员收货地址分页查询对象
+ * @return 查询分页会员收货地址返回对象
+ */
+ @Override
+ public PageResult getMemberReceiveAddressPage(Page pageParams, MemberReceiveAddressDto dto) {
+ IPage page = baseMapper.selectListByPage(pageParams, dto);
+
+ return PageResult.builder()
+ .list(page.getRecords())
+ .pageNo(page.getCurrent())
+ .pageSize(page.getSize())
+ .total(page.getTotal())
+ .build();
+ }
+
+ /**
+ * 添加会员收货地址
+ *
+ * @param dto 会员收货地址添加
+ */
+ @Override
+ public void addMemberReceiveAddress(MemberReceiveAddressDto dto) {
+ MemberReceiveAddress memberReceiveAddress =new MemberReceiveAddress();
+ BeanUtils.copyProperties(dto, memberReceiveAddress);
+ save(memberReceiveAddress);
+ }
+
+ /**
+ * 更新会员收货地址
+ *
+ * @param dto 会员收货地址更新
+ */
+ @Override
+ public void updateMemberReceiveAddress(MemberReceiveAddressDto dto) {
+ MemberReceiveAddress memberReceiveAddress =new MemberReceiveAddress();
+ BeanUtils.copyProperties(dto, memberReceiveAddress);
+ updateById(memberReceiveAddress);
+ }
+
+ /**
+ * 删除|批量删除会员收货地址
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteMemberReceiveAddress(List ids) {
+ removeByIds(ids);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/service/impl/MemberServiceImpl.java b/mall-member/src/main/java/com/mall/member/service/impl/MemberServiceImpl.java
new file mode 100644
index 0000000..a38374e
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/impl/MemberServiceImpl.java
@@ -0,0 +1,85 @@
+package com.mall.member.service.impl;
+
+import com.mall.member.mapper.MemberMapper;
+import com.mall.member.service.MemberService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.mall.member.service.MemberService;
+import com.mall.member.domain.dto.MemberDto;
+import com.mall.member.domain.entity.Member;
+import com.mall.member.domain.vo.MemberVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Service
+@Transactional
+public class MemberServiceImpl extends ServiceImpl implements MemberService {
+
+ /**
+ * * 会员 服务实现类
+ *
+ * @param pageParams 会员分页查询page对象
+ * @param dto 会员分页查询对象
+ * @return 查询分页会员返回对象
+ */
+ @Override
+ public PageResult getMemberPage(Page pageParams, MemberDto dto) {
+ IPage page = baseMapper.selectListByPage(pageParams, dto);
+
+ return PageResult.builder()
+ .list(page.getRecords())
+ .pageNo(page.getCurrent())
+ .pageSize(page.getSize())
+ .total(page.getTotal())
+ .build();
+ }
+
+ /**
+ * 添加会员
+ *
+ * @param dto 会员添加
+ */
+ @Override
+ public void addMember(MemberDto dto) {
+ Member member =new Member();
+ BeanUtils.copyProperties(dto, member);
+ save(member);
+ }
+
+ /**
+ * 更新会员
+ *
+ * @param dto 会员更新
+ */
+ @Override
+ public void updateMember(MemberDto dto) {
+ Member member =new Member();
+ BeanUtils.copyProperties(dto, member);
+ updateById(member);
+ }
+
+ /**
+ * 删除|批量删除会员
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteMember(List ids) {
+ removeByIds(ids);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/java/com/mall/member/service/impl/MemberStatisticsInfoServiceImpl.java b/mall-member/src/main/java/com/mall/member/service/impl/MemberStatisticsInfoServiceImpl.java
new file mode 100644
index 0000000..5798b1b
--- /dev/null
+++ b/mall-member/src/main/java/com/mall/member/service/impl/MemberStatisticsInfoServiceImpl.java
@@ -0,0 +1,85 @@
+package com.mall.member.service.impl;
+
+import com.mall.member.mapper.MemberStatisticsInfoMapper;
+import com.mall.member.service.MemberStatisticsInfoService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.mall.member.service.MemberStatisticsInfoService;
+import com.mall.member.domain.dto.MemberStatisticsInfoDto;
+import com.mall.member.domain.entity.MemberStatisticsInfo;
+import com.mall.member.domain.vo.MemberStatisticsInfoVo;
+import com.mall.common.domain.vo.result.PageResult;
+import com.mall.common.domain.vo.result.Result;
+import com.mall.common.domain.vo.result.ResultCodeEnum;
+
+import java.util.List;
+
+/**
+ *
+ * 会员统计信息 服务实现类
+ *
+ *
+ * @author Bunny
+ * @since 2025-07-05 19:30:06
+ */
+@Service
+@Transactional
+public class MemberStatisticsInfoServiceImpl extends ServiceImpl implements MemberStatisticsInfoService {
+
+ /**
+ * * 会员统计信息 服务实现类
+ *
+ * @param pageParams 会员统计信息分页查询page对象
+ * @param dto 会员统计信息分页查询对象
+ * @return 查询分页会员统计信息返回对象
+ */
+ @Override
+ public PageResult getMemberStatisticsInfoPage(Page pageParams, MemberStatisticsInfoDto dto) {
+ IPage page = baseMapper.selectListByPage(pageParams, dto);
+
+ return PageResult.builder()
+ .list(page.getRecords())
+ .pageNo(page.getCurrent())
+ .pageSize(page.getSize())
+ .total(page.getTotal())
+ .build();
+ }
+
+ /**
+ * 添加会员统计信息
+ *
+ * @param dto 会员统计信息添加
+ */
+ @Override
+ public void addMemberStatisticsInfo(MemberStatisticsInfoDto dto) {
+ MemberStatisticsInfo memberStatisticsInfo =new MemberStatisticsInfo();
+ BeanUtils.copyProperties(dto, memberStatisticsInfo);
+ save(memberStatisticsInfo);
+ }
+
+ /**
+ * 更新会员统计信息
+ *
+ * @param dto 会员统计信息更新
+ */
+ @Override
+ public void updateMemberStatisticsInfo(MemberStatisticsInfoDto dto) {
+ MemberStatisticsInfo memberStatisticsInfo =new MemberStatisticsInfo();
+ BeanUtils.copyProperties(dto, memberStatisticsInfo);
+ updateById(memberStatisticsInfo);
+ }
+
+ /**
+ * 删除|批量删除会员统计信息
+ *
+ * @param ids 删除id列表
+ */
+ @Override
+ public void deleteMemberStatisticsInfo(List ids) {
+ removeByIds(ids);
+ }
+}
\ No newline at end of file
diff --git a/mall-member/src/main/resources/application-dev.yml b/mall-member/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..a8b3510
--- /dev/null
+++ b/mall-member/src/main/resources/application-dev.yml
@@ -0,0 +1,7 @@
+datasource:
+ master:
+ host: rm-bp12z6hlv46vi6g8mro.mysql.rds.aliyuncs.com
+ port: 3306
+ database: gulimall_ums
+ username: gulimall
+ password: "0212Gulimall"
diff --git a/mall-member/src/main/resources/application.yaml b/mall-member/src/main/resources/application.yaml
new file mode 100644
index 0000000..87a16ac
--- /dev/null
+++ b/mall-member/src/main/resources/application.yaml
@@ -0,0 +1,36 @@
+server:
+ port: 8003
+
+spring:
+ profiles:
+ active: dev
+ application:
+ name: service-product
+
+ datasource:
+ type: com.zaxxer.hikari.HikariDataSource
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://${datasource.master.host}:${datasource.master.port}/${datasource.master.database}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+ username: ${datasource.master.username}
+ password: ${datasource.master.password}
+ hikari:
+ maximum-pool-size: 20
+ connection-timeout: 30000
+
+ jackson:
+ date-format: yyyy-MM-dd HH:mm:ss
+
+mybatis-plus:
+ mapper-locations: classpath:/mapper/*.xml
+ global-config:
+ db-config:
+ id-type: auto
+ logic-delete-value: 1
+ logic-not-delete-value: 0
+
+logging:
+ file:
+ path: "logs/${spring.application.name}"
+ level:
+ com.mall.product: debug
+ root: info
diff --git a/mall-member/src/main/resources/banner.txt b/mall-member/src/main/resources/banner.txt
new file mode 100644
index 0000000..89b2c00
--- /dev/null
+++ b/mall-member/src/main/resources/banner.txt
@@ -0,0 +1,13 @@
+
+
+,-----. ,--. ,--. ,--.,--.
+| |) /_ ,--.,--.,--,--, ,--,--, ,--. ,--. | `.' | ,--,--.| || |
+| .-. \| || || \| \ \ ' / | |'.'| |' ,-. || || |
+| '--' /' '' '| || || || | \ ' | | | |\ '-' || || |
+`------' `----' `--''--'`--''--'.-' / `--' `--' `--`--'`--'`--'
+ `---'
+
+
+Service Name${spring.application.name}
+SpringBoot Version: ${spring-boot.version}${spring-boot.formatted-version}
+Spring Active:${spring.profiles.active}
diff --git a/mall-member/src/main/resources/mapper/GrowthChangeHistoryMapper.xml b/mall-member/src/main/resources/mapper/GrowthChangeHistoryMapper.xml
new file mode 100644
index 0000000..0bfb232
--- /dev/null
+++ b/mall-member/src/main/resources/mapper/GrowthChangeHistoryMapper.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,member_id,create_time,change_count,note,source_type
+
+
+
+
+
+
diff --git a/mall-member/src/main/resources/mapper/IntegrationChangeHistoryMapper.xml b/mall-member/src/main/resources/mapper/IntegrationChangeHistoryMapper.xml
new file mode 100644
index 0000000..c742fd0
--- /dev/null
+++ b/mall-member/src/main/resources/mapper/IntegrationChangeHistoryMapper.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,member_id,create_time,change_count,note,source_tyoe
+
+
+
+
+
+
diff --git a/mall-member/src/main/resources/mapper/MemberCollectSpuMapper.xml b/mall-member/src/main/resources/mapper/MemberCollectSpuMapper.xml
new file mode 100644
index 0000000..05f9159
--- /dev/null
+++ b/mall-member/src/main/resources/mapper/MemberCollectSpuMapper.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,member_id,spu_id,spu_name,spu_img,create_time
+
+
+
+
+
+
diff --git a/mall-member/src/main/resources/mapper/MemberCollectSubjectMapper.xml b/mall-member/src/main/resources/mapper/MemberCollectSubjectMapper.xml
new file mode 100644
index 0000000..4fede00
--- /dev/null
+++ b/mall-member/src/main/resources/mapper/MemberCollectSubjectMapper.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,subject_id,subject_name,subject_img,subject_urll
+
+
+
+
+
+
diff --git a/mall-member/src/main/resources/mapper/MemberLevelMapper.xml b/mall-member/src/main/resources/mapper/MemberLevelMapper.xml
new file mode 100644
index 0000000..17f182a
--- /dev/null
+++ b/mall-member/src/main/resources/mapper/MemberLevelMapper.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,name,growth_point,default_status,free_freight_point,comment_growth_point,priviledge_free_freight,priviledge_member_price,priviledge_birthday,note
+
+
+
+
+
+
diff --git a/mall-member/src/main/resources/mapper/MemberLoginLogMapper.xml b/mall-member/src/main/resources/mapper/MemberLoginLogMapper.xml
new file mode 100644
index 0000000..a4a18ed
--- /dev/null
+++ b/mall-member/src/main/resources/mapper/MemberLoginLogMapper.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,member_id,create_time,ip,city,login_type
+
+
+
+
+
+
diff --git a/mall-member/src/main/resources/mapper/MemberMapper.xml b/mall-member/src/main/resources/mapper/MemberMapper.xml
new file mode 100644
index 0000000..d940b4d
--- /dev/null
+++ b/mall-member/src/main/resources/mapper/MemberMapper.xml
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,level_id,username,password,nickname,mobile,email,header,gender,birth,city,job,sign,source_type,integration,growth,status,create_time,social_uid,access_token,expires_in
+
+
+
+
+
+
diff --git a/mall-member/src/main/resources/mapper/MemberReceiveAddressMapper.xml b/mall-member/src/main/resources/mapper/MemberReceiveAddressMapper.xml
new file mode 100644
index 0000000..bfc85e0
--- /dev/null
+++ b/mall-member/src/main/resources/mapper/MemberReceiveAddressMapper.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,member_id,name,phone,post_code,province,city,region,detail_address,areacode,default_status
+
+
+
+
+
+
diff --git a/mall-member/src/main/resources/mapper/MemberStatisticsInfoMapper.xml b/mall-member/src/main/resources/mapper/MemberStatisticsInfoMapper.xml
new file mode 100644
index 0000000..1007e86
--- /dev/null
+++ b/mall-member/src/main/resources/mapper/MemberStatisticsInfoMapper.xml
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id,member_id,consume_amount,coupon_amount,order_count,coupon_count,comment_count,return_order_count,login_count,attend_count,fans_count,collect_product_count,collect_subject_count,collect_comment_count,invite_friend_count
+
+
+
+
+
+