Browse Source

添加分销模块

gaohp 11 months ago
parent
commit
df7588c57c
42 changed files with 1924 additions and 0 deletions
  1. 38 0
      feifan-module-distri/feifan-module-distri-api/.gitignore
  2. 30 0
      feifan-module-distri/feifan-module-distri-api/pom.xml
  3. 12 0
      feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ErrorCodeConstants.java
  4. 116 0
      feifan-module-distri/feifan-module-distri-biz/pom.xml
  5. 95 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/SharePathController.java
  6. 31 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathPageReqVO.java
  7. 36 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathRespVO.java
  8. 24 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathSaveReqVO.java
  9. 95 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/SocialStatusController.java
  10. 31 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusPageReqVO.java
  11. 36 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusRespVO.java
  12. 25 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusSaveReqVO.java
  13. 95 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/source/SourceController.java
  14. 25 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/source/vo/SourcePageReqVO.java
  15. 28 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/source/vo/SourceRespVO.java
  16. 19 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/source/vo/SourceSaveReqVO.java
  17. 95 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/user/UserController.java
  18. 43 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/user/vo/UserPageReqVO.java
  19. 52 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/user/vo/UserRespVO.java
  20. 37 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/user/vo/UserSaveReqVO.java
  21. 43 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/sharepath/SharePathDO.java
  22. 43 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/socialstatus/SocialStatusDO.java
  23. 35 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/source/SourceDO.java
  24. 59 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/user/UserDO.java
  25. 29 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/sharepath/SharePathMapper.java
  26. 29 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/socialstatus/SocialStatusMapper.java
  27. 27 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/source/SourceMapper.java
  28. 33 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/user/UserMapper.java
  29. 55 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathService.java
  30. 74 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathServiceImpl.java
  31. 55 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatus/SocialStatusService.java
  32. 74 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatus/SocialStatusServiceImpl.java
  33. 55 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/source/SourceService.java
  34. 74 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/source/SourceServiceImpl.java
  35. 55 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/user/UserService.java
  36. 74 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/user/UserServiceImpl.java
  37. 12 0
      feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/sharepath/SharePathMapper.xml
  38. 12 0
      feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/socialstatus/SocialStatusMapper.xml
  39. 12 0
      feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/source/SourceMapper.xml
  40. 12 0
      feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/user/UserMapper.xml
  41. 4 0
      feifan-module-distri/pom.xml
  42. 95 0
      sql/mysql/建空库SQL/insertMenum.sql

+ 38 - 0
feifan-module-distri/feifan-module-distri-api/.gitignore

@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store

+ 30 - 0
feifan-module-distri/feifan-module-distri-api/pom.xml

@@ -0,0 +1,30 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>cn.newfeifan.zx</groupId>
+        <artifactId>feifan-module-distri</artifactId>
+        <version>${revision}</version>
+    </parent>
+
+    <artifactId>feifan-module-distri-api</artifactId>
+    <packaging>jar</packaging>
+
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <name>${project.artifactId}</name> <!-- 3. 新增 name 为 ${project.artifactId} -->
+
+    <description> <!-- 4. 新增 description 为该模块的描述 -->
+        营销模块 模块,主要实现 身价, 积分, 分销计算等功能。
+    </description>
+    <dependencies>  <!-- 5. 新增 yudao-common 依赖 -->
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-common</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 12 - 0
feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ErrorCodeConstants.java

@@ -0,0 +1,12 @@
+package cn.newfeifan.mall.module.distri.enums;
+
+import cn.newfeifan.mall.framework.common.exception.ErrorCode;
+
+public interface ErrorCodeConstants {
+    // ========== 分销信息商户信息 1-002-029-000 ==========
+    ErrorCode SHARE_PATH_NOT_EXISTS = new ErrorCode(1_002_030_000 , "分销路径不存在");
+    ErrorCode SOCIAL_STATUS_NOT_EXISTS = new ErrorCode(1_002_030_001, "身价不存在");
+    ErrorCode SOURCE_NOT_EXISTS = new ErrorCode(1_002_030_002, "分销来源不存在");
+    ErrorCode USER_NOT_EXISTS = new ErrorCode(1_002_030_003, "分销用户不存在");
+
+}

+ 116 - 0
feifan-module-distri/feifan-module-distri-biz/pom.xml

@@ -0,0 +1,116 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>cn.newfeifan.zx</groupId>
+        <artifactId>feifan-module-distri</artifactId>
+        <version>${revision}</version>
+    </parent>
+
+    <artifactId>feifan-module-distri-biz</artifactId>
+    <packaging>jar</packaging>
+
+
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <name>${project.artifactId}</name>
+
+    <description>
+        营销模块 模块,主要实现 身价, 积分, 分销计算等功能。
+    </description>
+    <dependencies>
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-distri-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-system-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-infra-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-system-biz</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-product-biz</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-trade-biz</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <!-- 业务组件 -->
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-spring-boot-starter-biz-operatelog</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-spring-boot-starter-biz-tenant</artifactId>
+        </dependency>
+
+        <!-- Web 相关 -->
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-spring-boot-starter-security</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+
+        <!-- DB 相关 -->
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-spring-boot-starter-mybatis</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-spring-boot-starter-redis</artifactId>
+        </dependency>
+
+        <!-- 消息队列相关 -->
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-spring-boot-starter-mq</artifactId>
+        </dependency>
+
+        <!-- Test 测试相关 -->
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- 工具类相关 -->
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-spring-boot-starter-excel</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-spring-boot-starter-biz-ip</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 95 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/SharePathController.java

@@ -0,0 +1,95 @@
+package cn.newfeifan.mall.module.distri.controller.admin.sharepath;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.CommonResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
+
+import cn.newfeifan.mall.framework.excel.core.util.ExcelUtils;
+
+import cn.newfeifan.mall.framework.operatelog.core.annotations.OperateLog;
+import static cn.newfeifan.mall.framework.operatelog.core.enums.OperateTypeEnum.*;
+
+import cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
+import cn.newfeifan.mall.module.distri.service.sharepath.SharePathService;
+
+@Tag(name = "管理后台 - 分销用户关系")
+@RestController
+@RequestMapping("/distri/share-path")
+@Validated
+public class SharePathController {
+
+    @Resource
+    private SharePathService sharePathService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建分销用户关系")
+    @PreAuthorize("@ss.hasPermission('distri:share-path:create')")
+    public CommonResult<Long> createSharePath(@Valid @RequestBody SharePathSaveReqVO createReqVO) {
+        return success(sharePathService.createSharePath(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新分销用户关系")
+    @PreAuthorize("@ss.hasPermission('distri:share-path:update')")
+    public CommonResult<Boolean> updateSharePath(@Valid @RequestBody SharePathSaveReqVO updateReqVO) {
+        sharePathService.updateSharePath(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除分销用户关系")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('distri:share-path:delete')")
+    public CommonResult<Boolean> deleteSharePath(@RequestParam("id") Long id) {
+        sharePathService.deleteSharePath(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得分销用户关系")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('distri:share-path:query')")
+    public CommonResult<SharePathRespVO> getSharePath(@RequestParam("id") Long id) {
+        SharePathDO sharePath = sharePathService.getSharePath(id);
+        return success(BeanUtils.toBean(sharePath, SharePathRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得分销用户关系分页")
+    @PreAuthorize("@ss.hasPermission('distri:share-path:query')")
+    public CommonResult<PageResult<SharePathRespVO>> getSharePathPage(@Valid SharePathPageReqVO pageReqVO) {
+        PageResult<SharePathDO> pageResult = sharePathService.getSharePathPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, SharePathRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出分销用户关系 Excel")
+    @PreAuthorize("@ss.hasPermission('distri:share-path:export')")
+    @OperateLog(type = EXPORT)
+    public void exportSharePathExcel(@Valid SharePathPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<SharePathDO> list = sharePathService.getSharePathPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "分销用户关系.xls", "数据", SharePathRespVO.class,
+                        BeanUtils.toBean(list, SharePathRespVO.class));
+    }
+
+}

+ 31 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathPageReqVO.java

@@ -0,0 +1,31 @@
+package cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 分销用户关系分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SharePathPageReqVO extends PageParam {
+
+    @Schema(description = "父亲id")
+    private Long ancestor;
+
+    @Schema(description = "推销人员")
+    private Long descendant;
+
+    @Schema(description = "层级")
+    private Integer depth;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 36 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathRespVO.java

@@ -0,0 +1,36 @@
+package cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 分销用户关系 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class SharePathRespVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23345")
+    @ExcelProperty("用户编号")
+    private Long id;
+
+    @Schema(description = "父亲id")
+    @ExcelProperty("父亲id")
+    private Long ancestor;
+
+    @Schema(description = "推销人员")
+    @ExcelProperty("推销人员")
+    private Long descendant;
+
+    @Schema(description = "层级")
+    @ExcelProperty("层级")
+    private Integer depth;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 24 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathSaveReqVO.java

@@ -0,0 +1,24 @@
+package cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 分销用户关系新增/修改 Request VO")
+@Data
+public class SharePathSaveReqVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23345")
+    private Long id;
+
+    @Schema(description = "父亲id")
+    private Long ancestor;
+
+    @Schema(description = "推销人员")
+    private Long descendant;
+
+    @Schema(description = "层级")
+    private Integer depth;
+
+}

+ 95 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/SocialStatusController.java

@@ -0,0 +1,95 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatus;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.CommonResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
+
+import cn.newfeifan.mall.framework.excel.core.util.ExcelUtils;
+
+import cn.newfeifan.mall.framework.operatelog.core.annotations.OperateLog;
+import static cn.newfeifan.mall.framework.operatelog.core.enums.OperateTypeEnum.*;
+
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatus.SocialStatusDO;
+import cn.newfeifan.mall.module.distri.service.socialstatus.SocialStatusService;
+
+@Tag(name = "管理后台 - 分销用户身价")
+@RestController
+@RequestMapping("/distri/social-status")
+@Validated
+public class SocialStatusController {
+
+    @Resource
+    private SocialStatusService socialStatusService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建分销用户身价")
+    @PreAuthorize("@ss.hasPermission('distri:social-status:create')")
+    public CommonResult<Long> createSocialStatus(@Valid @RequestBody SocialStatusSaveReqVO createReqVO) {
+        return success(socialStatusService.createSocialStatus(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新分销用户身价")
+    @PreAuthorize("@ss.hasPermission('distri:social-status:update')")
+    public CommonResult<Boolean> updateSocialStatus(@Valid @RequestBody SocialStatusSaveReqVO updateReqVO) {
+        socialStatusService.updateSocialStatus(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除分销用户身价")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('distri:social-status:delete')")
+    public CommonResult<Boolean> deleteSocialStatus(@RequestParam("id") Long id) {
+        socialStatusService.deleteSocialStatus(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得分销用户身价")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('distri:social-status:query')")
+    public CommonResult<SocialStatusRespVO> getSocialStatus(@RequestParam("id") Long id) {
+        SocialStatusDO socialStatus = socialStatusService.getSocialStatus(id);
+        return success(BeanUtils.toBean(socialStatus, SocialStatusRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得分销用户身价分页")
+    @PreAuthorize("@ss.hasPermission('distri:social-status:query')")
+    public CommonResult<PageResult<SocialStatusRespVO>> getSocialStatusPage(@Valid SocialStatusPageReqVO pageReqVO) {
+        PageResult<SocialStatusDO> pageResult = socialStatusService.getSocialStatusPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, SocialStatusRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出分销用户身价 Excel")
+    @PreAuthorize("@ss.hasPermission('distri:social-status:export')")
+    @OperateLog(type = EXPORT)
+    public void exportSocialStatusExcel(@Valid SocialStatusPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<SocialStatusDO> list = socialStatusService.getSocialStatusPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "分销用户身价.xls", "数据", SocialStatusRespVO.class,
+                        BeanUtils.toBean(list, SocialStatusRespVO.class));
+    }
+
+}

+ 31 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusPageReqVO.java

@@ -0,0 +1,31 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 分销用户身价分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SocialStatusPageReqVO extends PageParam {
+
+    @Schema(description = "身价等级")
+    private String level;
+
+    @Schema(description = "身价名称", example = "芋艿")
+    private String name;
+
+    @Schema(description = "升级所需看点")
+    private Long kandian;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 36 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusRespVO.java

@@ -0,0 +1,36 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 分销用户身价 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class SocialStatusRespVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19722")
+    @ExcelProperty("用户编号")
+    private Long id;
+
+    @Schema(description = "身价等级")
+    @ExcelProperty("身价等级")
+    private String level;
+
+    @Schema(description = "身价名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
+    @ExcelProperty("身价名称")
+    private String name;
+
+    @Schema(description = "升级所需看点")
+    @ExcelProperty("升级所需看点")
+    private Long kandian;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 25 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusSaveReqVO.java

@@ -0,0 +1,25 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 分销用户身价新增/修改 Request VO")
+@Data
+public class SocialStatusSaveReqVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19722")
+    private Long id;
+
+    @Schema(description = "身价等级")
+    private String level;
+
+    @Schema(description = "身价名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
+    @NotEmpty(message = "身价名称不能为空")
+    private String name;
+
+    @Schema(description = "升级所需看点")
+    private Long kandian;
+
+}

+ 95 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/source/SourceController.java

@@ -0,0 +1,95 @@
+package cn.newfeifan.mall.module.distri.controller.admin.source;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.CommonResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
+
+import cn.newfeifan.mall.framework.excel.core.util.ExcelUtils;
+
+import cn.newfeifan.mall.framework.operatelog.core.annotations.OperateLog;
+import static cn.newfeifan.mall.framework.operatelog.core.enums.OperateTypeEnum.*;
+
+import cn.newfeifan.mall.module.distri.controller.admin.source.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.source.SourceDO;
+import cn.newfeifan.mall.module.distri.service.source.SourceService;
+
+@Tag(name = "管理后台 - 分销来源")
+@RestController
+@RequestMapping("/distri/source")
+@Validated
+public class SourceController {
+
+    @Resource
+    private SourceService sourceService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建分销来源")
+    @PreAuthorize("@ss.hasPermission('distri:source:create')")
+    public CommonResult<Long> createSource(@Valid @RequestBody SourceSaveReqVO createReqVO) {
+        return success(sourceService.createSource(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新分销来源")
+    @PreAuthorize("@ss.hasPermission('distri:source:update')")
+    public CommonResult<Boolean> updateSource(@Valid @RequestBody SourceSaveReqVO updateReqVO) {
+        sourceService.updateSource(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除分销来源")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('distri:source:delete')")
+    public CommonResult<Boolean> deleteSource(@RequestParam("id") Long id) {
+        sourceService.deleteSource(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得分销来源")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('distri:source:query')")
+    public CommonResult<SourceRespVO> getSource(@RequestParam("id") Long id) {
+        SourceDO source = sourceService.getSource(id);
+        return success(BeanUtils.toBean(source, SourceRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得分销来源分页")
+    @PreAuthorize("@ss.hasPermission('distri:source:query')")
+    public CommonResult<PageResult<SourceRespVO>> getSourcePage(@Valid SourcePageReqVO pageReqVO) {
+        PageResult<SourceDO> pageResult = sourceService.getSourcePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, SourceRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出分销来源 Excel")
+    @PreAuthorize("@ss.hasPermission('distri:source:export')")
+    @OperateLog(type = EXPORT)
+    public void exportSourceExcel(@Valid SourcePageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<SourceDO> list = sourceService.getSourcePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "分销来源.xls", "数据", SourceRespVO.class,
+                        BeanUtils.toBean(list, SourceRespVO.class));
+    }
+
+}

+ 25 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/source/vo/SourcePageReqVO.java

@@ -0,0 +1,25 @@
+package cn.newfeifan.mall.module.distri.controller.admin.source.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 分销来源分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SourcePageReqVO extends PageParam {
+
+    @Schema(description = "来源名称", example = "张三")
+    private String name;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 28 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/source/vo/SourceRespVO.java

@@ -0,0 +1,28 @@
+package cn.newfeifan.mall.module.distri.controller.admin.source.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 分销来源 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class SourceRespVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "12844")
+    @ExcelProperty("用户编号")
+    private Long id;
+
+    @Schema(description = "来源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+    @ExcelProperty("来源名称")
+    private String name;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 19 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/source/vo/SourceSaveReqVO.java

@@ -0,0 +1,19 @@
+package cn.newfeifan.mall.module.distri.controller.admin.source.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 分销来源新增/修改 Request VO")
+@Data
+public class SourceSaveReqVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "12844")
+    private Long id;
+
+    @Schema(description = "来源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+    @NotEmpty(message = "来源名称不能为空")
+    private String name;
+
+}

+ 95 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/user/UserController.java

@@ -0,0 +1,95 @@
+package cn.newfeifan.mall.module.distri.controller.admin.user;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.CommonResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
+
+import cn.newfeifan.mall.framework.excel.core.util.ExcelUtils;
+
+import cn.newfeifan.mall.framework.operatelog.core.annotations.OperateLog;
+import static cn.newfeifan.mall.framework.operatelog.core.enums.OperateTypeEnum.*;
+
+import cn.newfeifan.mall.module.distri.controller.admin.user.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.user.UserDO;
+import cn.newfeifan.mall.module.distri.service.user.UserService;
+
+@Tag(name = "管理后台 - 分销用户")
+@RestController
+@RequestMapping("/distri/user")
+@Validated
+public class UserController {
+
+    @Resource
+    private UserService userService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建分销用户")
+    @PreAuthorize("@ss.hasPermission('distri:user:create')")
+    public CommonResult<Long> createUser(@Valid @RequestBody UserSaveReqVO createReqVO) {
+        return success(userService.createUser(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新分销用户")
+    @PreAuthorize("@ss.hasPermission('distri:user:update')")
+    public CommonResult<Boolean> updateUser(@Valid @RequestBody UserSaveReqVO updateReqVO) {
+        userService.updateUser(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除分销用户")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('distri:user:delete')")
+    public CommonResult<Boolean> deleteUser(@RequestParam("id") Long id) {
+        userService.deleteUser(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得分销用户")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('distri:user:query')")
+    public CommonResult<UserRespVO> getUser(@RequestParam("id") Long id) {
+        UserDO user = userService.getUser(id);
+        return success(BeanUtils.toBean(user, UserRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得分销用户分页")
+    @PreAuthorize("@ss.hasPermission('distri:user:query')")
+    public CommonResult<PageResult<UserRespVO>> getUserPage(@Valid UserPageReqVO pageReqVO) {
+        PageResult<UserDO> pageResult = userService.getUserPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出分销用户 Excel")
+    @PreAuthorize("@ss.hasPermission('distri:user:export')")
+    @OperateLog(type = EXPORT)
+    public void exportUserExcel(@Valid UserPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<UserDO> list = userService.getUserPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "分销用户.xls", "数据", UserRespVO.class,
+                        BeanUtils.toBean(list, UserRespVO.class));
+    }
+
+}

+ 43 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/user/vo/UserPageReqVO.java

@@ -0,0 +1,43 @@
+package cn.newfeifan.mall.module.distri.controller.admin.user.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 分销用户分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class UserPageReqVO extends PageParam {
+
+    @Schema(description = "分销人员ID", example = "32526")
+    private Long userId;
+
+    @Schema(description = "分销人员姓名", example = "王五")
+    private String name;
+
+    @Schema(description = "分销人员手机号码")
+    private String mobile;
+
+    @Schema(description = "分销人员来源")
+    private Integer source;
+
+    @Schema(description = "分销用户当前积分")
+    private Long integral;
+
+    @Schema(description = "分销用户当前身价", example = "1")
+    private Integer socialStatus;
+
+    @Schema(description = "分销用户当前看点")
+    private Long socialStatusKandian;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 52 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/user/vo/UserRespVO.java

@@ -0,0 +1,52 @@
+package cn.newfeifan.mall.module.distri.controller.admin.user.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 分销用户 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class UserRespVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7136")
+    @ExcelProperty("用户编号")
+    private Long id;
+
+    @Schema(description = "分销人员ID", example = "32526")
+    @ExcelProperty("分销人员ID")
+    private Long userId;
+
+    @Schema(description = "分销人员姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @ExcelProperty("分销人员姓名")
+    private String name;
+
+    @Schema(description = "分销人员手机号码")
+    @ExcelProperty("分销人员手机号码")
+    private String mobile;
+
+    @Schema(description = "分销人员来源")
+    @ExcelProperty("分销人员来源")
+    private Integer source;
+
+    @Schema(description = "分销用户当前积分")
+    @ExcelProperty("分销用户当前积分")
+    private Long integral;
+
+    @Schema(description = "分销用户当前身价", example = "1")
+    @ExcelProperty("分销用户当前身价")
+    private Integer socialStatus;
+
+    @Schema(description = "分销用户当前看点")
+    @ExcelProperty("分销用户当前看点")
+    private Long socialStatusKandian;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 37 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/user/vo/UserSaveReqVO.java

@@ -0,0 +1,37 @@
+package cn.newfeifan.mall.module.distri.controller.admin.user.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 分销用户新增/修改 Request VO")
+@Data
+public class UserSaveReqVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7136")
+    private Long id;
+
+    @Schema(description = "分销人员ID", example = "32526")
+    private Long userId;
+
+    @Schema(description = "分销人员姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @NotEmpty(message = "分销人员姓名不能为空")
+    private String name;
+
+    @Schema(description = "分销人员手机号码")
+    private String mobile;
+
+    @Schema(description = "分销人员来源")
+    private Integer source;
+
+    @Schema(description = "分销用户当前积分")
+    private Long integral;
+
+    @Schema(description = "分销用户当前身价", example = "1")
+    private Integer socialStatus;
+
+    @Schema(description = "分销用户当前看点")
+    private Long socialStatusKandian;
+
+}

+ 43 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/sharepath/SharePathDO.java

@@ -0,0 +1,43 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.sharepath;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 分销用户关系 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_share_path")
+@KeySequence("distri_share_path_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SharePathDO extends BaseDO {
+
+    /**
+     * 用户编号
+     */
+    @TableId
+    private Long id;
+    /**
+     * 父亲id
+     */
+    private Long ancestor;
+    /**
+     * 推销人员
+     */
+    private Long descendant;
+    /**
+     * 层级
+     */
+    private Integer depth;
+
+}

+ 43 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/socialstatus/SocialStatusDO.java

@@ -0,0 +1,43 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.socialstatus;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 分销用户身价 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_social_status")
+@KeySequence("distri_social_status_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SocialStatusDO extends BaseDO {
+
+    /**
+     * 用户编号
+     */
+    @TableId
+    private Long id;
+    /**
+     * 身价等级
+     */
+    private String level;
+    /**
+     * 身价名称
+     */
+    private String name;
+    /**
+     * 升级所需看点
+     */
+    private Long kandian;
+
+}

+ 35 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/source/SourceDO.java

@@ -0,0 +1,35 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.source;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 分销来源 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_source")
+@KeySequence("distri_source_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SourceDO extends BaseDO {
+
+    /**
+     * 用户编号
+     */
+    @TableId
+    private Long id;
+    /**
+     * 来源名称
+     */
+    private String name;
+
+}

+ 59 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/user/UserDO.java

@@ -0,0 +1,59 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.user;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 分销用户 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_user")
+@KeySequence("distri_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserDO extends BaseDO {
+
+    /**
+     * 用户编号
+     */
+    @TableId
+    private Long id;
+    /**
+     * 分销人员ID
+     */
+    private Long userId;
+    /**
+     * 分销人员姓名
+     */
+    private String name;
+    /**
+     * 分销人员手机号码
+     */
+    private String mobile;
+    /**
+     * 分销人员来源
+     */
+    private Integer source;
+    /**
+     * 分销用户当前积分
+     */
+    private Long integral;
+    /**
+     * 分销用户当前身价
+     */
+    private Integer socialStatus;
+    /**
+     * 分销用户当前看点
+     */
+    private Long socialStatusKandian;
+
+}

+ 29 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/sharepath/SharePathMapper.java

@@ -0,0 +1,29 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.sharepath;
+
+import java.util.*;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo.*;
+
+/**
+ * 分销用户关系 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface SharePathMapper extends BaseMapperX<SharePathDO> {
+
+    default PageResult<SharePathDO> selectPage(SharePathPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<SharePathDO>()
+                .eqIfPresent(SharePathDO::getAncestor, reqVO.getAncestor())
+                .eqIfPresent(SharePathDO::getDescendant, reqVO.getDescendant())
+                .eqIfPresent(SharePathDO::getDepth, reqVO.getDepth())
+                .betweenIfPresent(SharePathDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(SharePathDO::getId));
+    }
+
+}

+ 29 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/socialstatus/SocialStatusMapper.java

@@ -0,0 +1,29 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.socialstatus;
+
+import java.util.*;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatus.SocialStatusDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo.*;
+
+/**
+ * 分销用户身价 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface SocialStatusMapper extends BaseMapperX<SocialStatusDO> {
+
+    default PageResult<SocialStatusDO> selectPage(SocialStatusPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<SocialStatusDO>()
+                .eqIfPresent(SocialStatusDO::getLevel, reqVO.getLevel())
+                .likeIfPresent(SocialStatusDO::getName, reqVO.getName())
+                .eqIfPresent(SocialStatusDO::getKandian, reqVO.getKandian())
+                .betweenIfPresent(SocialStatusDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(SocialStatusDO::getId));
+    }
+
+}

+ 27 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/source/SourceMapper.java

@@ -0,0 +1,27 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.source;
+
+import java.util.*;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.module.distri.dal.dataobject.source.SourceDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.newfeifan.mall.module.distri.controller.admin.source.vo.*;
+
+/**
+ * 分销来源 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface SourceMapper extends BaseMapperX<SourceDO> {
+
+    default PageResult<SourceDO> selectPage(SourcePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<SourceDO>()
+                .likeIfPresent(SourceDO::getName, reqVO.getName())
+                .betweenIfPresent(SourceDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(SourceDO::getId));
+    }
+
+}

+ 33 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/user/UserMapper.java

@@ -0,0 +1,33 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.user;
+
+import java.util.*;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.module.distri.dal.dataobject.user.UserDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.newfeifan.mall.module.distri.controller.admin.user.vo.*;
+
+/**
+ * 分销用户 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface UserMapper extends BaseMapperX<UserDO> {
+
+    default PageResult<UserDO> selectPage(UserPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<UserDO>()
+                .eqIfPresent(UserDO::getUserId, reqVO.getUserId())
+                .likeIfPresent(UserDO::getName, reqVO.getName())
+                .eqIfPresent(UserDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(UserDO::getSource, reqVO.getSource())
+                .eqIfPresent(UserDO::getIntegral, reqVO.getIntegral())
+                .eqIfPresent(UserDO::getSocialStatus, reqVO.getSocialStatus())
+                .eqIfPresent(UserDO::getSocialStatusKandian, reqVO.getSocialStatusKandian())
+                .betweenIfPresent(UserDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(UserDO::getId));
+    }
+
+}

+ 55 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathService.java

@@ -0,0 +1,55 @@
+package cn.newfeifan.mall.module.distri.service.sharepath;
+
+import java.util.*;
+import javax.validation.*;
+import cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+
+/**
+ * 分销用户关系 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface SharePathService {
+
+    /**
+     * 创建分销用户关系
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createSharePath(@Valid SharePathSaveReqVO createReqVO);
+
+    /**
+     * 更新分销用户关系
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateSharePath(@Valid SharePathSaveReqVO updateReqVO);
+
+    /**
+     * 删除分销用户关系
+     *
+     * @param id 编号
+     */
+    void deleteSharePath(Long id);
+
+    /**
+     * 获得分销用户关系
+     *
+     * @param id 编号
+     * @return 分销用户关系
+     */
+    SharePathDO getSharePath(Long id);
+
+    /**
+     * 获得分销用户关系分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 分销用户关系分页
+     */
+    PageResult<SharePathDO> getSharePathPage(SharePathPageReqVO pageReqVO);
+
+}

+ 74 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathServiceImpl.java

@@ -0,0 +1,74 @@
+package cn.newfeifan.mall.module.distri.service.sharepath;
+
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+
+import cn.newfeifan.mall.module.distri.dal.mysql.sharepath.SharePathMapper;
+
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
+
+/**
+ * 分销用户关系 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class SharePathServiceImpl implements SharePathService {
+
+    @Resource
+    private SharePathMapper sharePathMapper;
+
+    @Override
+    public Long createSharePath(SharePathSaveReqVO createReqVO) {
+        // 插入
+        SharePathDO sharePath = BeanUtils.toBean(createReqVO, SharePathDO.class);
+        sharePathMapper.insert(sharePath);
+        // 返回
+        return sharePath.getId();
+    }
+
+    @Override
+    public void updateSharePath(SharePathSaveReqVO updateReqVO) {
+        // 校验存在
+        validateSharePathExists(updateReqVO.getId());
+        // 更新
+        SharePathDO updateObj = BeanUtils.toBean(updateReqVO, SharePathDO.class);
+        sharePathMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteSharePath(Long id) {
+        // 校验存在
+        validateSharePathExists(id);
+        // 删除
+        sharePathMapper.deleteById(id);
+    }
+
+    private void validateSharePathExists(Long id) {
+        if (sharePathMapper.selectById(id) == null) {
+            throw exception(SHARE_PATH_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public SharePathDO getSharePath(Long id) {
+        return sharePathMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<SharePathDO> getSharePathPage(SharePathPageReqVO pageReqVO) {
+        return sharePathMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatus/SocialStatusService.java

@@ -0,0 +1,55 @@
+package cn.newfeifan.mall.module.distri.service.socialstatus;
+
+import java.util.*;
+import javax.validation.*;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatus.SocialStatusDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+
+/**
+ * 分销用户身价 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface SocialStatusService {
+
+    /**
+     * 创建分销用户身价
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createSocialStatus(@Valid SocialStatusSaveReqVO createReqVO);
+
+    /**
+     * 更新分销用户身价
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateSocialStatus(@Valid SocialStatusSaveReqVO updateReqVO);
+
+    /**
+     * 删除分销用户身价
+     *
+     * @param id 编号
+     */
+    void deleteSocialStatus(Long id);
+
+    /**
+     * 获得分销用户身价
+     *
+     * @param id 编号
+     * @return 分销用户身价
+     */
+    SocialStatusDO getSocialStatus(Long id);
+
+    /**
+     * 获得分销用户身价分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 分销用户身价分页
+     */
+    PageResult<SocialStatusDO> getSocialStatusPage(SocialStatusPageReqVO pageReqVO);
+
+}

+ 74 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatus/SocialStatusServiceImpl.java

@@ -0,0 +1,74 @@
+package cn.newfeifan.mall.module.distri.service.socialstatus;
+
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatus.SocialStatusDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+
+import cn.newfeifan.mall.module.distri.dal.mysql.socialstatus.SocialStatusMapper;
+
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
+
+/**
+ * 分销用户身价 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class SocialStatusServiceImpl implements SocialStatusService {
+
+    @Resource
+    private SocialStatusMapper socialStatusMapper;
+
+    @Override
+    public Long createSocialStatus(SocialStatusSaveReqVO createReqVO) {
+        // 插入
+        SocialStatusDO socialStatus = BeanUtils.toBean(createReqVO, SocialStatusDO.class);
+        socialStatusMapper.insert(socialStatus);
+        // 返回
+        return socialStatus.getId();
+    }
+
+    @Override
+    public void updateSocialStatus(SocialStatusSaveReqVO updateReqVO) {
+        // 校验存在
+        validateSocialStatusExists(updateReqVO.getId());
+        // 更新
+        SocialStatusDO updateObj = BeanUtils.toBean(updateReqVO, SocialStatusDO.class);
+        socialStatusMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteSocialStatus(Long id) {
+        // 校验存在
+        validateSocialStatusExists(id);
+        // 删除
+        socialStatusMapper.deleteById(id);
+    }
+
+    private void validateSocialStatusExists(Long id) {
+        if (socialStatusMapper.selectById(id) == null) {
+            throw exception(SOCIAL_STATUS_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public SocialStatusDO getSocialStatus(Long id) {
+        return socialStatusMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<SocialStatusDO> getSocialStatusPage(SocialStatusPageReqVO pageReqVO) {
+        return socialStatusMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/source/SourceService.java

@@ -0,0 +1,55 @@
+package cn.newfeifan.mall.module.distri.service.source;
+
+import java.util.*;
+import javax.validation.*;
+import cn.newfeifan.mall.module.distri.controller.admin.source.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.source.SourceDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+
+/**
+ * 分销来源 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface SourceService {
+
+    /**
+     * 创建分销来源
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createSource(@Valid SourceSaveReqVO createReqVO);
+
+    /**
+     * 更新分销来源
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateSource(@Valid SourceSaveReqVO updateReqVO);
+
+    /**
+     * 删除分销来源
+     *
+     * @param id 编号
+     */
+    void deleteSource(Long id);
+
+    /**
+     * 获得分销来源
+     *
+     * @param id 编号
+     * @return 分销来源
+     */
+    SourceDO getSource(Long id);
+
+    /**
+     * 获得分销来源分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 分销来源分页
+     */
+    PageResult<SourceDO> getSourcePage(SourcePageReqVO pageReqVO);
+
+}

+ 74 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/source/SourceServiceImpl.java

@@ -0,0 +1,74 @@
+package cn.newfeifan.mall.module.distri.service.source;
+
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.newfeifan.mall.module.distri.controller.admin.source.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.source.SourceDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+
+import cn.newfeifan.mall.module.distri.dal.mysql.source.SourceMapper;
+
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
+
+/**
+ * 分销来源 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class SourceServiceImpl implements SourceService {
+
+    @Resource
+    private SourceMapper sourceMapper;
+
+    @Override
+    public Long createSource(SourceSaveReqVO createReqVO) {
+        // 插入
+        SourceDO source = BeanUtils.toBean(createReqVO, SourceDO.class);
+        sourceMapper.insert(source);
+        // 返回
+        return source.getId();
+    }
+
+    @Override
+    public void updateSource(SourceSaveReqVO updateReqVO) {
+        // 校验存在
+        validateSourceExists(updateReqVO.getId());
+        // 更新
+        SourceDO updateObj = BeanUtils.toBean(updateReqVO, SourceDO.class);
+        sourceMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteSource(Long id) {
+        // 校验存在
+        validateSourceExists(id);
+        // 删除
+        sourceMapper.deleteById(id);
+    }
+
+    private void validateSourceExists(Long id) {
+        if (sourceMapper.selectById(id) == null) {
+            throw exception(SOURCE_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public SourceDO getSource(Long id) {
+        return sourceMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<SourceDO> getSourcePage(SourcePageReqVO pageReqVO) {
+        return sourceMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/user/UserService.java

@@ -0,0 +1,55 @@
+package cn.newfeifan.mall.module.distri.service.user;
+
+import java.util.*;
+import javax.validation.*;
+import cn.newfeifan.mall.module.distri.controller.admin.user.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.user.UserDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+
+/**
+ * 分销用户 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface UserService {
+
+    /**
+     * 创建分销用户
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createUser(@Valid UserSaveReqVO createReqVO);
+
+    /**
+     * 更新分销用户
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateUser(@Valid UserSaveReqVO updateReqVO);
+
+    /**
+     * 删除分销用户
+     *
+     * @param id 编号
+     */
+    void deleteUser(Long id);
+
+    /**
+     * 获得分销用户
+     *
+     * @param id 编号
+     * @return 分销用户
+     */
+    UserDO getUser(Long id);
+
+    /**
+     * 获得分销用户分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 分销用户分页
+     */
+    PageResult<UserDO> getUserPage(UserPageReqVO pageReqVO);
+
+}

+ 74 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/user/UserServiceImpl.java

@@ -0,0 +1,74 @@
+package cn.newfeifan.mall.module.distri.service.user;
+
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.newfeifan.mall.module.distri.controller.admin.user.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.user.UserDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+
+import cn.newfeifan.mall.module.distri.dal.mysql.user.UserMapper;
+
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
+
+/**
+ * 分销用户 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class UserServiceImpl implements UserService {
+
+    @Resource
+    private UserMapper userMapper;
+
+    @Override
+    public Long createUser(UserSaveReqVO createReqVO) {
+        // 插入
+        UserDO user = BeanUtils.toBean(createReqVO, UserDO.class);
+        userMapper.insert(user);
+        // 返回
+        return user.getId();
+    }
+
+    @Override
+    public void updateUser(UserSaveReqVO updateReqVO) {
+        // 校验存在
+        validateUserExists(updateReqVO.getId());
+        // 更新
+        UserDO updateObj = BeanUtils.toBean(updateReqVO, UserDO.class);
+        userMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteUser(Long id) {
+        // 校验存在
+        validateUserExists(id);
+        // 删除
+        userMapper.deleteById(id);
+    }
+
+    private void validateUserExists(Long id) {
+        if (userMapper.selectById(id) == null) {
+            throw exception(USER_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public UserDO getUser(Long id) {
+        return userMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<UserDO> getUserPage(UserPageReqVO pageReqVO) {
+        return userMapper.selectPage(pageReqVO);
+    }
+
+}

+ 12 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/sharepath/SharePathMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.newfeifan.mall.module.distri.dal.mysql.sharepath.SharePathMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.zhongxing.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/socialstatus/SocialStatusMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.newfeifan.mall.module.distri.dal.mysql.socialstatus.SocialStatusMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.zhongxing.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/source/SourceMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.newfeifan.mall.module.distri.dal.mysql.source.SourceMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.zhongxing.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/user/UserMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.newfeifan.mall.module.distri.dal.mysql.user.UserMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.zhongxing.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 4 - 0
feifan-module-distri/pom.xml

@@ -12,6 +12,10 @@
 
     <name>${project.artifactId}</name>
     <url>http://maven.apache.org</url>
+    <modules>
+        <module>feifan-module-distri-api</module>
+        <module>feifan-module-distri-biz</module>
+    </modules>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+ 95 - 0
sql/mysql/建空库SQL/insertMenum.sql

@@ -0,0 +1,95 @@
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '分类查询', 'product:category:query', 3, 1, 2002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '分类创建', 'product:category:create', 3, 2, 2002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '分类更新', 'product:category:update', 3, 3, 2002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '分类删除', 'product:category:delete', 3, 4, 2002, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '品牌查询', 'product:brand:query', 3, 1, 2008, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 13:52:44', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '品牌创建', 'product:brand:create', 3, 2, 2008, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 13:52:44', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '品牌更新', 'product:brand:update', 3, 3, 2008, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 13:52:44', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '品牌删除', 'product:brand:delete', 3, 4, 2008, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 13:52:44', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品查询', 'product:spu:query', 3, 1, 2014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品创建', 'product:spu:create', 3, 2, 2014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品更新', 'product:spu:update', 3, 3, 2014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品删除', 'product:spu:delete', 3, 4, 2014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '规格查询', 'product:property:query', 3, 1, 2019, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-08-01 14:55:35', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '规格创建', 'product:property:create', 3, 2, 2019, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-08-01 14:55:35', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '规格更新', 'product:property:update', 3, 3, 2019, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-08-01 14:55:35', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '规格删除', 'product:property:delete', 3, 4, 2019, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-08-01 14:55:35', '', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品导出', 'product:spu:export', 3, 5, 2014, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '评论查询', 'product:comment:query', 3, 1, 2336, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-26 11:04:01', '1', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '添加自评', 'product:comment:create', 3, 2, 2336, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-26 11:04:23', '1', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商家回复', 'product:comment:update', 3, 3, 2336, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-26 11:04:37', '1', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '显隐评论', 'product:comment:update', 3, 4, 2336, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-08-26 11:04:55', '1', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '产品查询', 'crm:product:query', 3, 1, 2526, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-05 22:47:16', '1', '2024-04-02 10:13:53', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '产品创建', 'crm:product:create', 3, 2, 2526, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-05 22:47:41', '1', '2024-04-02 10:13:53', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '产品更新', 'crm:product:update', 3, 3, 2526, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-05 22:48:03', '1', '2024-04-02 10:13:53', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '产品删除', 'crm:product:delete', 3, 4, 2526, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-05 22:48:17', '1', '2024-04-02 10:13:54', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '产品导出', 'crm:product:export', 3, 5, 2526, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-05 22:48:29', '1', '2024-04-02 10:13:54', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '产品分类查询', 'crm:product-category:query', 3, 1, 2532, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-06 12:53:23', '1', '2024-04-02 10:13:54', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '产品分类创建', 'crm:product-category:create', 3, 2, 2532, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-06 12:53:41', '1', '2024-04-02 10:13:54', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '产品分类更新', 'crm:product-category:update', 3, 3, 2532, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-06 12:53:59', '1', '2024-04-02 10:13:54', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '产品分类删除', 'crm:product-category:delete', 3, 4, 2532, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-12-06 12:54:14', '1', '2024-04-02 10:13:54', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品中心', '', 1, 60, 2362, 'product', 'fa:product-hunt', NULL, NULL, 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '1', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品分类', '', 2, 2, 2000, 'category', 'ep:cellphone', 'mall/product/category/index', 'ProductCategory', 0, b'1', b'1', b'1', '', '2022-07-29 15:53:53', '1', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品品牌', '', 2, 3, 2000, 'brand', 'ep:chicken', 'mall/product/brand/index', 'ProductBrand', 0, b'1', b'1', b'1', '', '2022-07-30 13:52:44', '1', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品', '', 2, 1, 0, '/spu', 'ep:checked', 'mall/product/spu/index', 'ProductSpu', 0, b'1', b'1', b'1', '', '2022-07-30 14:22:58', '1', '2024-04-02 15:17:30', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品属性', '', 2, 4, 2000, 'property', 'ep:cold-drink', 'mall/product/property/index', 'ProductProperty', 0, b'1', b'1', b'1', '', '2022-08-01 14:55:35', '1', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '秒杀商品', '', 2, 2, 2209, 'activity', 'ep:basketball', 'mall/promotion/seckill/activity/index', 'PromotionSeckillActivity', 0, b'1', b'1', b'1', '', '2022-11-06 22:24:49', '1', '2024-04-02 10:13:49', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '拼团商品', '', 2, 1, 2303, 'acitivity', 'ep:apple', 'mall/promotion/combination/activity/index', 'PromotionCombinationActivity', 0, b'1', b'1', b'1', '1', '2023-08-12 17:22:03', '1', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '砍价商品', '', 2, 1, 2310, 'activity', 'ep:burger', 'mall/promotion/bargain/activity/index', 'PromotionBargainActivity', 0, b'1', b'1', b'1', '1', '2023-08-13 00:28:49', '1', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品评论', '', 2, 5, 2000, 'comment', 'ep:comment', 'mall/product/comment/index', 'ProductComment', 0, b'1', b'1', b'1', '1', '2023-08-26 11:03:00', '1', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '商品统计', '', 2, 3, 2358, 'product', 'fa:product-hunt', 'statistics/product/index', 'ProductStatistics', 0, b'1', b'1', b'1', '', '2023-12-15 18:54:28', '1', '2024-04-02 10:13:54', b'0', 2);
+
+
+
+
+-- 添加订单菜单
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '售后退款', '', 2, 2, 1117, 'after-sale', 'ep:refrigerator', 'mall/trade/afterSale/index', 'TradeAfterSale', 0, b'1', b'1', b'1', '', '2022-11-19 20:15:32', '1', '2024-04-02 10:13:50', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '售后查询', 'trade:after-sale:query', 3, 1, 2073, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2022-11-19 20:15:33', '1', '2024-04-02 10:13:50', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '订单', '', 2, 2, 0, '/order', 'ep:list', 'mall/trade/order/index', 'TradeOrder', 0, b'1', b'1', b'1', '1', '2022-12-10 21:05:44', '1', '2024-04-03 09:44:45', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递发货', '', 1, 0, 2164, 'express', 'ep:bicycle', '', '', 0, b'1', b'1', b'1', '1', '2023-05-18 09:22:06', '1', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递公司', '', 2, 0, 2165, 'express', 'ep:compass', 'mall/trade/delivery/express/index', 'Express', 0, b'1', b'1', b'1', '1', '2023-05-18 09:27:21', '1', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递公司查询', 'trade:delivery:express:query', 3, 1, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递公司创建', 'trade:delivery:express:create', 3, 2, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递公司更新', 'trade:delivery:express:update', 3, 3, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递公司删除', 'trade:delivery:express:delete', 3, 4, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递公司导出', 'trade:delivery:express:export', 3, 5, 2167, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-18 09:37:53', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '运费模版', 'trade:delivery:express-template:query', 2, 1, 2165, 'express-template', 'ep:coordinate', 'mall/trade/delivery/expressTemplate/index', 'ExpressTemplate', 0, b'1', b'1', b'1', '1', '2023-05-20 06:48:10', '1', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递运费模板查询', 'trade:delivery:express-template:query', 3, 1, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递运费模板创建', 'trade:delivery:express-template:create', 3, 2, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递运费模板更新', 'trade:delivery:express-template:update', 3, 3, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递运费模板删除', 'trade:delivery:express-template:delete', 3, 4, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '快递运费模板导出', 'trade:delivery:express-template:export', 3, 5, 2173, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-20 06:49:53', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '门店管理', '', 2, 1, 2166, 'pick-up-store', 'ep:basketball', 'mall/trade/delivery/pickUpStore/index', 'PickUpStore', 0, b'1', b'1', b'1', '1', '2023-05-25 10:50:00', '1', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '自提门店查询', 'trade:delivery:pick-up-store:query', 3, 1, 2179, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-25 10:53:29', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '自提门店创建', 'trade:delivery:pick-up-store:create', 3, 2, 2179, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-25 10:53:29', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '自提门店更新', 'trade:delivery:pick-up-store:update', 3, 3, 2179, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-25 10:53:29', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '自提门店删除', 'trade:delivery:pick-up-store:delete', 3, 4, 2179, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-25 10:53:29', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '自提门店导出', 'trade:delivery:pick-up-store:export', 3, 5, 2179, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-05-25 10:53:29', '', '2024-04-02 10:13:51', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '交易配置', '', 2, 0, 2072, 'config', 'ep:setting', 'trade/config/index', 'TradeConfig', 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '1', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '交易中心配置查询', 'trade:config:query', 3, 1, 2342, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '交易中心配置保存', 'trade:config:save', 3, 2, 2342, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '分销用户', '', 2, 0, 2345, 'brokerage-user', 'fa-solid:user-tie', 'trade/brokerage/user/index', 'TradeBrokerageUser', 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '分销用户查询', 'trade:brokerage-user:query', 3, 1, 2346, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '分销用户推广人查询', 'trade:brokerage-user:user-query', 3, 2, 2346, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '分销用户推广订单查询', 'trade:brokerage-user:order-query', 3, 3, 2346, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '分销用户修改推广资格', 'trade:brokerage-user:update-brokerage-enable', 3, 4, 2346, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '分销用户修改推广员', 'trade:brokerage-user:update-bind-user', 3, 5, 2346, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '分销用户清除推广员', 'trade:brokerage-user:clear-bind-user', 3, 6, 2346, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '佣金记录', '', 2, 1, 2345, 'brokerage-record', 'fa:money', 'trade/brokerage/record/index', 'TradeBrokerageRecord', 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '佣金记录查询', 'trade:brokerage-record:query', 3, 1, 2353, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '佣金提现', '', 2, 2, 2345, 'brokerage-withdraw', 'fa:credit-card', 'trade/brokerage/withdraw/index', 'TradeBrokerageWithdraw', 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '佣金提现查询', 'trade:brokerage-withdraw:query', 3, 1, 2355, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '佣金提现审核', 'trade:brokerage-withdraw:audit', 3, 2, 2355, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-28 02:46:22', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '交易统计', '', 2, 4, 2358, 'trade', 'fa-solid:credit-card', 'statistics/trade/index', 'TradeStatistics', 0, b'1', b'1', b'1', '', '2023-09-30 03:22:40', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '交易统计查询', 'statistics:trade:query', 3, 1, 2359, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-30 03:22:40', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '交易统计导出', 'statistics:trade:export', 3, 2, 2359, '', '', '', NULL, 0, b'1', b'1', b'1', '', '2023-09-30 03:22:40', '', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '订单核销', 'trade:order:pick-up', 3, 10, 2076, '', '', '', '', 0, b'1', b'1', b'1', '1', '2023-10-14 17:11:58', '1', '2024-04-02 10:13:52', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '订单查询', 'trade:order:query', 3, 1, 2076, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-01-16 08:52:00', '1', '2024-04-02 10:13:54', b'0', 2);
+INSERT INTO `mall-feifan`.`system_menu`( `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `category_id`) VALUES ( '订单更新', 'trade:order:update', 3, 2, 2076, '', '', '', '', 0, b'1', b'1', b'1', '1', '2024-01-16 08:52:21', '1', '2024-04-02 10:13:54', b'0', 2);
+
+
+
+
+
+
+