فهرست منبع

联系人、记录等

lipenghui 5 ماه پیش
والد
کامیت
41d65c6082
34فایلهای تغییر یافته به همراه1955 افزوده شده و 1 حذف شده
  1. 7 0
      yudao-module-supplier/yudao-module-supplier-api/src/main/java/cn/iocoder/yudao/module/supplier/enums/ErrorCodeConstant.java
  2. 5 1
      yudao-module-supplier/yudao-module-supplier-biz/pom.xml
  3. 97 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/ConnectRecordController.java
  4. 95 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/ContactController.java
  5. 97 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/CoreProductController.java
  6. 101 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/SupplierController.java
  7. 46 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ConnectRecordPageReqVO.java
  8. 55 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ConnectRecordRespVO.java
  9. 39 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ConnectRecordSaveReqVO.java
  10. 46 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ContactPageReqVO.java
  11. 55 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ContactRespVO.java
  12. 39 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ContactSaveReqVO.java
  13. 34 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/CoreProductPageReqVO.java
  14. 39 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/CoreProductRespVO.java
  15. 27 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/CoreProductSaveReqVO.java
  16. 71 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/SupplierPageReqVO.java
  17. 87 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/SupplierRespVO.java
  18. 66 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/SupplierSaveReqVO.java
  19. 63 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/dataobject/product/ConnectRecordDO.java
  20. 63 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/dataobject/product/ContactDO.java
  21. 47 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/dataobject/product/CoreProductDO.java
  22. 98 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/dataobject/product/SupplierDO.java
  23. 34 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/mysql/product/ConnectRecordMapper.java
  24. 34 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/mysql/product/ContactMapper.java
  25. 30 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/mysql/product/CoreProductMapper.java
  26. 42 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/mysql/product/SupplierMapper.java
  27. 56 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/ConnectRecordService.java
  28. 82 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/ConnectRecordServiceImpl.java
  29. 56 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/ContactService.java
  30. 75 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/ContactServiceImpl.java
  31. 55 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/CoreProductService.java
  32. 75 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/CoreProductServiceImpl.java
  33. 57 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/SupplierService.java
  34. 82 0
      yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/SupplierServiceImpl.java

+ 7 - 0
yudao-module-supplier/yudao-module-supplier-api/src/main/java/cn/iocoder/yudao/module/supplier/enums/ErrorCodeConstant.java

@@ -0,0 +1,7 @@
+package cn.iocoder.yudao.module.supplier.enums;
+
+import cn.iocoder.yudao.framework.common.exception.ErrorCode;
+
+public interface ErrorCodeConstant{
+    ErrorCode NOT_EXISTS = new ErrorCode( 122, "供应商主数据不存在");
+}

+ 5 - 1
yudao-module-supplier/yudao-module-supplier-biz/pom.xml

@@ -22,7 +22,11 @@
             <artifactId>yudao-module-supplier-api</artifactId>
             <version>${revision}</version>
         </dependency>
-
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-module-system-biz</artifactId>
+            <version>2.4.1-jdk8-SNAPSHOT</version>
+        </dependency>
         <!-- Web 相关 -->
         <dependency>
             <groupId>cn.iocoder.boot</groupId>

+ 97 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/ConnectRecordController.java

@@ -0,0 +1,97 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product;
+
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ConnectRecordPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ConnectRecordRespVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ConnectRecordSaveReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.ConnectRecordDO;
+import cn.iocoder.yudao.module.supplier.service.product.ConnectRecordService;
+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.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+
+@Tag(name = "管理后台 - 供应商联系记录")
+@RestController
+@RequestMapping("/supplier/connect-record")
+@Validated
+public class ConnectRecordController {
+
+    @Resource
+    private ConnectRecordService connectRecordService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建供应商联系记录")
+    @PreAuthorize("@ss.hasPermission('supplier:connect-record:create')")
+    public CommonResult<Long> createConnectRecord(@Valid @RequestBody ConnectRecordSaveReqVO createReqVO) {
+        return success(connectRecordService.createConnectRecord(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新供应商联系记录")
+    @PreAuthorize("@ss.hasPermission('supplier:connect-record:update')")
+    public CommonResult<Boolean> updateConnectRecord(@Valid @RequestBody ConnectRecordSaveReqVO updateReqVO) {
+        connectRecordService.updateConnectRecord(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除供应商联系记录")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('supplier:connect-record:delete')")
+    public CommonResult<Boolean> deleteConnectRecord(@RequestParam("id") Long id) {
+        connectRecordService.deleteConnectRecord(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得供应商联系记录")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('supplier:connect-record:query')")
+    public CommonResult<ConnectRecordRespVO> getConnectRecord(@RequestParam("id") Long id) {
+        ConnectRecordDO connectRecord = connectRecordService.getConnectRecord(id);
+        return success(BeanUtils.toBean(connectRecord, ConnectRecordRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得供应商联系记录分页")
+    @PreAuthorize("@ss.hasPermission('supplier:connect-record:query')")
+    public CommonResult<PageResult<ConnectRecordRespVO>> getConnectRecordPage(@Valid ConnectRecordPageReqVO pageReqVO) {
+        PageResult<ConnectRecordDO> pageResult = connectRecordService.getConnectRecordPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, ConnectRecordRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出供应商联系记录 Excel")
+    @PreAuthorize("@ss.hasPermission('supplier:connect-record:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportConnectRecordExcel(@Valid ConnectRecordPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<ConnectRecordDO> list = connectRecordService.getConnectRecordPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "供应商联系记录.xls", "数据", ConnectRecordRespVO.class,
+                        BeanUtils.toBean(list, ConnectRecordRespVO.class));
+    }
+
+}

+ 95 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/ContactController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ContactPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ContactRespVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ContactSaveReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.ContactDO;
+import cn.iocoder.yudao.module.supplier.service.product.ContactService;
+import cn.iocoder.yudao.module.supplier.service.product.ProductService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+
+@Tag(name = "管理后台 - 供应商联系人")
+@RestController
+@RequestMapping("/supplier/contact")
+@Validated
+public class ContactController {
+
+    @Resource
+    private ContactService contactService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建供应商联系人")
+    @PreAuthorize("@ss.hasPermission('supplier:contact:create')")
+    public CommonResult<Long> createContact(@Valid @RequestBody ContactSaveReqVO createReqVO) {
+        return success(contactService.createContact(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新供应商联系人")
+    @PreAuthorize("@ss.hasPermission('supplier:contact:update')")
+    public CommonResult<Boolean> updateContact(@Valid @RequestBody ContactSaveReqVO updateReqVO) {
+        contactService.updateContact(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除供应商联系人")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('supplier:contact:delete')")
+    public CommonResult<Boolean> deleteContact(@RequestParam("id") Long id) {
+        contactService.deleteContact(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得供应商联系人")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('supplier:contact:query')")
+    public CommonResult<ContactRespVO> getContact(@RequestParam("id") Long id) {
+        ContactDO contact = contactService.getContact(id);
+        return success(BeanUtils.toBean(contact, ContactRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得供应商联系人分页")
+    @PreAuthorize("@ss.hasPermission('supplier:contact:query')")
+    public CommonResult<PageResult<ContactRespVO>> getContactPage(@Valid ContactPageReqVO pageReqVO) {
+        PageResult<ContactDO> pageResult = contactService.getContactPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, ContactRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出供应商联系人 Excel")
+    @PreAuthorize("@ss.hasPermission('supplier:contact:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportContactExcel(@Valid ContactPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<ContactDO> list = contactService.getContactPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "供应商联系人.xls", "数据", ContactRespVO.class,
+                        BeanUtils.toBean(list, ContactRespVO.class));
+    }
+
+}

+ 97 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/CoreProductController.java

@@ -0,0 +1,97 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product;
+
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.CoreProductPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.CoreProductRespVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.CoreProductSaveReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.CoreProductDO;
+import cn.iocoder.yudao.module.supplier.service.product.CoreProductService;
+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.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+
+@Tag(name = "管理后台 - 供应商核心产品")
+@RestController
+@RequestMapping("/supplier/core-product")
+@Validated
+public class CoreProductController {
+
+    @Resource
+    private CoreProductService coreProductService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建供应商核心产品")
+    @PreAuthorize("@ss.hasPermission('supplier:core-product:create')")
+    public CommonResult<Long> createCoreProduct(@Valid @RequestBody CoreProductSaveReqVO createReqVO) {
+        return success(coreProductService.createCoreProduct(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新供应商核心产品")
+    @PreAuthorize("@ss.hasPermission('supplier:core-product:update')")
+    public CommonResult<Boolean> updateCoreProduct(@Valid @RequestBody CoreProductSaveReqVO updateReqVO) {
+        coreProductService.updateCoreProduct(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除供应商核心产品")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('supplier:core-product:delete')")
+    public CommonResult<Boolean> deleteCoreProduct(@RequestParam("id") Long id) {
+        coreProductService.deleteCoreProduct(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得供应商核心产品")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('supplier:core-product:query')")
+    public CommonResult<CoreProductRespVO> getCoreProduct(@RequestParam("id") Long id) {
+        CoreProductDO coreProduct = coreProductService.getCoreProduct(id);
+        return success(BeanUtils.toBean(coreProduct, CoreProductRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得供应商核心产品分页")
+    @PreAuthorize("@ss.hasPermission('supplier:core-product:query')")
+    public CommonResult<PageResult<CoreProductRespVO>> getCoreProductPage(@Valid CoreProductPageReqVO pageReqVO) {
+        PageResult<CoreProductDO> pageResult = coreProductService.getCoreProductPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, CoreProductRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出供应商核心产品 Excel")
+    @PreAuthorize("@ss.hasPermission('supplier:core-product:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportCoreProductExcel(@Valid CoreProductPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<CoreProductDO> list = coreProductService.getCoreProductPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "供应商核心产品.xls", "数据", CoreProductRespVO.class,
+                        BeanUtils.toBean(list, CoreProductRespVO.class));
+    }
+
+}

+ 101 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/SupplierController.java

@@ -0,0 +1,101 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.SupplierPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.SupplierRespVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.SupplierSaveReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.SupplierDO;
+import cn.iocoder.yudao.module.supplier.service.product.SupplierService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+
+@Tag(name = "管理后台 - 供应商主数据")
+@RestController
+@RequestMapping("/supplier/base/")
+@Validated
+public class SupplierController {
+
+    @Resource
+    private SupplierService supplierService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建供应商主数据")
+    @PreAuthorize("@ss.hasPermission('supplier:base:create')")
+    public CommonResult<Long> create(@Valid @RequestBody SupplierSaveReqVO createReqVO) {
+        return success(supplierService.create(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新供应商主数据")
+    @PreAuthorize("@ss.hasPermission('supplier:base:update')")
+    public CommonResult<Boolean> update(@Valid @RequestBody SupplierSaveReqVO updateReqVO) {
+        supplierService.update(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除供应商主数据")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('supplier:base:delete')")
+    public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
+        supplierService.delete(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得供应商主数据")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('supplier:base:query')")
+    public CommonResult<SupplierRespVO> get(@RequestParam("id") Long id) {
+        SupplierDO supplierDO = supplierService.get(id);
+        return success(BeanUtils.toBean(supplierDO, SupplierRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得供应商主数据分页")
+    @PreAuthorize("@ss.hasPermission('supplier:base:query')")
+    public CommonResult<PageResult<SupplierRespVO>> getPage(@Valid SupplierPageReqVO pageReqVO) {
+        PageResult<SupplierDO> pageResult = supplierService.getPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, SupplierRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出供应商主数据 Excel")
+    @PreAuthorize("@ss.hasPermission('supplier:base:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportExcel(@Valid SupplierPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<SupplierDO> list = supplierService.getPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "供应商主数据.xls", "数据", SupplierRespVO.class,
+                        BeanUtils.toBean(list, SupplierRespVO.class));
+    }
+
+    @GetMapping("all")
+    @Operation(summary = "获取所有供应商信息")
+    @PreAuthorize("@ss.hasPermission('supplier:base:all')")
+    public CommonResult<List<SupplierRespVO>> getAll() {
+        List<SupplierDO> all = supplierService.getAll();
+        return success(BeanUtils.toBean(all, SupplierRespVO.class));
+    }
+}

+ 46 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ConnectRecordPageReqVO.java

@@ -0,0 +1,46 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.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 ConnectRecordPageReqVO extends PageParam {
+
+    @Schema(description = "供应商id", example = "14963")
+    private Long supplierId;
+
+    @Schema(description = "我方联系人id", example = "13744")
+    private Long userId;
+
+    @Schema(description = "我方联系人姓名", example = "王五")
+    private String username;
+
+    @Schema(description = "供应商联系人id", example = "7832")
+    private Long contactId;
+
+    @Schema(description = "供应商联系人姓名", example = "李四")
+    private String contactName;
+
+    @Schema(description = "联系原因", example = "不喜欢")
+    private String reason;
+
+    @Schema(description = "交流内容")
+    private String content;
+
+    @Schema(description = "附件")
+    private String urls;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 55 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ConnectRecordRespVO.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+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 ConnectRecordRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "29624")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "供应商id", example = "14963")
+    @ExcelProperty("供应商id")
+    private Long supplierId;
+
+    @Schema(description = "我方联系人id", example = "13744")
+    @ExcelProperty("我方联系人id")
+    private Long userId;
+
+    @Schema(description = "我方联系人姓名", example = "王五")
+    @ExcelProperty("我方联系人姓名")
+    private String username;
+
+    @Schema(description = "供应商联系人id", example = "7832")
+    @ExcelProperty("供应商联系人id")
+    private Long contactId;
+
+    @Schema(description = "供应商联系人姓名", example = "李四")
+    @ExcelProperty("供应商联系人姓名")
+    private String contactName;
+
+    @Schema(description = "联系原因", example = "不喜欢")
+    @ExcelProperty("联系原因")
+    private String reason;
+
+    @Schema(description = "交流内容")
+    @ExcelProperty("交流内容")
+    private String content;
+
+    @Schema(description = "附件")
+    @ExcelProperty("附件")
+    private String urls;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 39 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ConnectRecordSaveReqVO.java

@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.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 ConnectRecordSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "29624")
+    private Long id;
+
+    @Schema(description = "供应商id", example = "14963")
+    private Long supplierId;
+
+    @Schema(description = "我方联系人id", example = "13744")
+    private Long userId;
+
+    @Schema(description = "我方联系人姓名", example = "王五")
+    private String username;
+
+    @Schema(description = "供应商联系人id", example = "7832")
+    private Long contactId;
+
+    @Schema(description = "供应商联系人姓名", example = "李四")
+    private String contactName;
+
+    @Schema(description = "联系原因", example = "不喜欢")
+    private String reason;
+
+    @Schema(description = "交流内容")
+    private String content;
+
+    @Schema(description = "附件")
+    private String urls;
+
+}

+ 46 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ContactPageReqVO.java

@@ -0,0 +1,46 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.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 ContactPageReqVO extends PageParam {
+
+    @Schema(description = "供应商id", example = "16668")
+    private Long supplierId;
+
+    @Schema(description = "姓名", example = "张三")
+    private String name;
+
+    @Schema(description = "职务")
+    private String position;
+
+    @Schema(description = "电话")
+    private String telephone;
+
+    @Schema(description = "邮箱")
+    private String email;
+
+    @Schema(description = "联系人负责的产品/业务模块  关联产品id 逗号分隔")
+    private Long productIds;
+
+    @Schema(description = "联系人负责的产品/业务模块  关联产品名称 逗号分隔")
+    private String productNames;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 55 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ContactRespVO.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+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 ContactRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "26280")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "供应商id", example = "16668")
+    @ExcelProperty("供应商id")
+    private Long supplierId;
+
+    @Schema(description = "姓名", example = "张三")
+    @ExcelProperty("姓名")
+    private String name;
+
+    @Schema(description = "职务")
+    @ExcelProperty("职务")
+    private String position;
+
+    @Schema(description = "电话")
+    @ExcelProperty("电话")
+    private String telephone;
+
+    @Schema(description = "邮箱")
+    @ExcelProperty("邮箱")
+    private String email;
+
+    @Schema(description = "联系人负责的产品/业务模块  关联产品id 逗号分隔")
+    @ExcelProperty("联系人负责的产品/业务模块  关联产品id 逗号分隔")
+    private Long productIds;
+
+    @Schema(description = "联系人负责的产品/业务模块  关联产品名称 逗号分隔")
+    @ExcelProperty("联系人负责的产品/业务模块  关联产品名称 逗号分隔")
+    private String productNames;
+
+    @Schema(description = "备注", example = "随便")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 39 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/ContactSaveReqVO.java

@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.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 ContactSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "26280")
+    private Long id;
+
+    @Schema(description = "供应商id", example = "16668")
+    private Long supplierId;
+
+    @Schema(description = "姓名", example = "张三")
+    private String name;
+
+    @Schema(description = "职务")
+    private String position;
+
+    @Schema(description = "电话")
+    private String telephone;
+
+    @Schema(description = "邮箱")
+    private String email;
+
+    @Schema(description = "联系人负责的产品/业务模块  关联产品id 逗号分隔")
+    private Long productIds;
+
+    @Schema(description = "联系人负责的产品/业务模块  关联产品名称 逗号分隔")
+    private String productNames;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+}

+ 34 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/CoreProductPageReqVO.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.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 CoreProductPageReqVO extends PageParam {
+
+    @Schema(description = "供应商id", example = "21079")
+    private Long supplierId;
+
+    @Schema(description = "产品id", example = "1462")
+    private Long productId;
+
+    @Schema(description = "产品名称", example = "张三")
+    private String productName;
+
+    @Schema(description = "优势介绍")
+    private String advantage;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 39 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/CoreProductRespVO.java

@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+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 CoreProductRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "8078")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "供应商id", example = "21079")
+    @ExcelProperty("供应商id")
+    private Long supplierId;
+
+    @Schema(description = "产品id", example = "1462")
+    @ExcelProperty("产品id")
+    private Long productId;
+
+    @Schema(description = "产品名称", example = "张三")
+    @ExcelProperty("产品名称")
+    private String productName;
+
+    @Schema(description = "优势介绍")
+    @ExcelProperty("优势介绍")
+    private String advantage;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 27 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/CoreProductSaveReqVO.java

@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.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 CoreProductSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "8078")
+    private Long id;
+
+    @Schema(description = "供应商id", example = "21079")
+    private Long supplierId;
+
+    @Schema(description = "产品id", example = "1462")
+    private Long productId;
+
+    @Schema(description = "产品名称", example = "张三")
+    private String productName;
+
+    @Schema(description = "优势介绍")
+    private String advantage;
+
+}

+ 71 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/SupplierPageReqVO.java

@@ -0,0 +1,71 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.vo;
+
+import lombok.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.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 SupplierPageReqVO extends PageParam {
+
+    @Schema(description = "供应商编号 自动生成")
+    private String code;
+
+    @Schema(description = "供应商名称", example = "张三")
+    private String name;
+
+    @Schema(description = "供应商分类")
+    private String classification;
+
+    @Schema(description = "公司类型", example = "1")
+    private String type;
+
+    @Schema(description = "供应商性质")
+    private String nature;
+
+    @Schema(description = "社会信用代码")
+    private String creditCode;
+
+    @Schema(description = "纳税人识别号")
+    private String tin;
+
+    @Schema(description = "法人")
+    private String corporation;
+
+    @Schema(description = "成立日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] incorporationDate;
+
+    @Schema(description = "公司地址")
+    private String address;
+
+    @Schema(description = "经营范围")
+    private String bizScope;
+
+    @Schema(description = "注册资金 单位:万元")
+    private BigDecimal registeredCapital;
+
+    @Schema(description = "年营业额 单位:万元")
+    private BigDecimal annualTurnove;
+
+    @Schema(description = "公司规模 数据字典")
+    private String size;
+
+    @Schema(description = "商品状态: 1 草稿 2活动 3 关闭", example = "1")
+    private Integer status;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 87 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/SupplierRespVO.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 供应商主数据 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class SupplierRespVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2791")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "供应商编号 自动生成")
+    @ExcelProperty("供应商编号 自动生成")
+    private String code;
+
+    @Schema(description = "供应商名称", example = "张三")
+    @ExcelProperty("供应商名称")
+    private String name;
+
+    @Schema(description = "供应商分类")
+    @ExcelProperty("供应商分类")
+    private String classification;
+
+    @Schema(description = "公司类型", example = "1")
+    @ExcelProperty("公司类型")
+    private String type;
+
+    @Schema(description = "供应商性质")
+    @ExcelProperty("供应商性质")
+    private String nature;
+
+    @Schema(description = "社会信用代码")
+    @ExcelProperty("社会信用代码")
+    private String creditCode;
+
+    @Schema(description = "纳税人识别号")
+    @ExcelProperty("纳税人识别号")
+    private String tin;
+
+    @Schema(description = "法人")
+    @ExcelProperty("法人")
+    private String corporation;
+
+    @Schema(description = "成立日期")
+    @ExcelProperty("成立日期")
+    private LocalDateTime incorporationDate;
+
+    @Schema(description = "公司地址")
+    @ExcelProperty("公司地址")
+    private String address;
+
+    @Schema(description = "经营范围")
+    @ExcelProperty("经营范围")
+    private String bizScope;
+
+    @Schema(description = "注册资金 单位:万元")
+    @ExcelProperty("注册资金 单位:万元")
+    private BigDecimal registeredCapital;
+
+    @Schema(description = "年营业额 单位:万元")
+    @ExcelProperty("年营业额 单位:万元")
+    private BigDecimal annualTurnove;
+
+    @Schema(description = "公司规模 数据字典")
+    @ExcelProperty("公司规模 数据字典")
+    private String size;
+
+    @Schema(description = "商品状态: 1 草稿 2活动 3 关闭", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("商品状态: 1 草稿 2活动 3 关闭")
+    private Integer status;
+
+    @Schema(description = "备注", example = "随便")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 66 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/vo/SupplierSaveReqVO.java

@@ -0,0 +1,66 @@
+package cn.iocoder.yudao.module.supplier.controller.admin.product.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import javax.validation.constraints.*;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 供应商主数据新增/修改 Request VO")
+@Data
+public class SupplierSaveReqVO {
+
+    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2791")
+    private Long id;
+
+    @Schema(description = "供应商编号 自动生成")
+    private String code;
+
+    @Schema(description = "供应商名称", example = "张三")
+    private String name;
+
+    @Schema(description = "供应商分类")
+    private String classification;
+
+    @Schema(description = "公司类型", example = "1")
+    private String type;
+
+    @Schema(description = "供应商性质")
+    private String nature;
+
+    @Schema(description = "社会信用代码")
+    private String creditCode;
+
+    @Schema(description = "纳税人识别号")
+    private String tin;
+
+    @Schema(description = "法人")
+    private String corporation;
+
+    @Schema(description = "成立日期")
+    private LocalDateTime incorporationDate;
+
+    @Schema(description = "公司地址")
+    private String address;
+
+    @Schema(description = "经营范围")
+    private String bizScope;
+
+    @Schema(description = "注册资金 单位:万元")
+    private BigDecimal registeredCapital;
+
+    @Schema(description = "年营业额 单位:万元")
+    private BigDecimal annualTurnove;
+
+    @Schema(description = "公司规模 数据字典")
+    private String size;
+
+    @Schema(description = "商品状态: 1 草稿 2活动 3 关闭", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "商品状态: 1 草稿 2活动 3 关闭不能为空")
+    private Integer status;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+}

+ 63 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/dataobject/product/ConnectRecordDO.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.supplier.dal.dataobject.product;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 供应商联系记录 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("supplier_connect_record")
+@KeySequence("supplier_connect_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ConnectRecordDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 供应商id
+     */
+    private Long supplierId;
+    /**
+     * 我方联系人id
+     */
+    private Long userId;
+    /**
+     * 我方联系人姓名
+     */
+    private String username;
+    /**
+     * 供应商联系人id
+     */
+    private Long contactId;
+    /**
+     * 供应商联系人姓名
+     */
+    private String contactName;
+    /**
+     * 联系原因
+     */
+    private String reason;
+    /**
+     * 交流内容
+     */
+    private String content;
+    /**
+     * 附件
+     */
+    private String urls;
+
+}

+ 63 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/dataobject/product/ContactDO.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.supplier.dal.dataobject.product;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 供应商联系人 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("supplier_contact")
+@KeySequence("supplier_contact_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ContactDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 供应商id
+     */
+    private Long supplierId;
+    /**
+     * 姓名
+     */
+    private String name;
+    /**
+     * 职务
+     */
+    private String position;
+    /**
+     * 电话
+     */
+    private String telephone;
+    /**
+     * 邮箱
+     */
+    private String email;
+    /**
+     * 联系人负责的产品/业务模块  关联产品id 逗号分隔
+     */
+    private Long productIds;
+    /**
+     * 联系人负责的产品/业务模块  关联产品名称 逗号分隔
+     */
+    private String productNames;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 47 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/dataobject/product/CoreProductDO.java

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.supplier.dal.dataobject.product;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 供应商核心产品 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("supplier_core_product")
+@KeySequence("supplier_core_product_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CoreProductDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 供应商id
+     */
+    private Long supplierId;
+    /**
+     * 产品id
+     */
+    private Long productId;
+    /**
+     * 产品名称
+     */
+    private String productName;
+    /**
+     * 优势介绍
+     */
+    private String advantage;
+
+}

+ 98 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/dataobject/product/SupplierDO.java

@@ -0,0 +1,98 @@
+package cn.iocoder.yudao.module.supplier.dal.dataobject.product;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 供应商主数据 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("supplier")
+@KeySequence("supplier_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SupplierDO extends BaseDO {
+
+    /**
+     * 主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 供应商编号 自动生成
+     */
+    private String code;
+    /**
+     * 供应商名称
+     */
+    private String name;
+    /**
+     * 供应商分类
+     */
+    private String classification;
+    /**
+     * 公司类型
+     */
+    private String type;
+    /**
+     * 供应商性质
+     */
+    private String nature;
+    /**
+     * 社会信用代码
+     */
+    private String creditCode;
+    /**
+     * 纳税人识别号
+     */
+    private String tin;
+    /**
+     * 法人
+     */
+    private String corporation;
+    /**
+     * 成立日期
+     */
+    private LocalDateTime incorporationDate;
+    /**
+     * 公司地址
+     */
+    private String address;
+    /**
+     * 经营范围
+     */
+    private String bizScope;
+    /**
+     * 注册资金 单位:万元
+     */
+    private BigDecimal registeredCapital;
+    /**
+     * 年营业额 单位:万元
+     */
+    private BigDecimal annualTurnove;
+    /**
+     * 公司规模 数据字典
+     */
+    private String size;
+    /**
+     * 商品状态: 1 草稿 2活动 3 关闭
+     */
+    private Integer status;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 34 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/mysql/product/ConnectRecordMapper.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.supplier.dal.mysql.product;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ConnectRecordPageReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.ConnectRecordDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 供应商联系记录 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface ConnectRecordMapper extends BaseMapperX<ConnectRecordDO> {
+
+    default PageResult<ConnectRecordDO> selectPage(ConnectRecordPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ConnectRecordDO>()
+                .eqIfPresent(ConnectRecordDO::getSupplierId, reqVO.getSupplierId())
+                .eqIfPresent(ConnectRecordDO::getUserId, reqVO.getUserId())
+                .likeIfPresent(ConnectRecordDO::getUsername, reqVO.getUsername())
+                .eqIfPresent(ConnectRecordDO::getContactId, reqVO.getContactId())
+                .likeIfPresent(ConnectRecordDO::getContactName, reqVO.getContactName())
+                .eqIfPresent(ConnectRecordDO::getReason, reqVO.getReason())
+                .eqIfPresent(ConnectRecordDO::getContent, reqVO.getContent())
+                .eqIfPresent(ConnectRecordDO::getUrls, reqVO.getUrls())
+                .betweenIfPresent(ConnectRecordDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(ConnectRecordDO::getId));
+    }
+
+}

+ 34 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/mysql/product/ContactMapper.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.supplier.dal.mysql.product;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ContactPageReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.ContactDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 供应商联系人 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface ContactMapper extends BaseMapperX<ContactDO> {
+
+    default PageResult<ContactDO> selectPage(ContactPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ContactDO>()
+                .eqIfPresent(ContactDO::getSupplierId, reqVO.getSupplierId())
+                .likeIfPresent(ContactDO::getName, reqVO.getName())
+                .eqIfPresent(ContactDO::getPosition, reqVO.getPosition())
+                .eqIfPresent(ContactDO::getTelephone, reqVO.getTelephone())
+                .eqIfPresent(ContactDO::getEmail, reqVO.getEmail())
+                .eqIfPresent(ContactDO::getProductIds, reqVO.getProductIds())
+                .eqIfPresent(ContactDO::getProductNames, reqVO.getProductNames())
+                .eqIfPresent(ContactDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(ContactDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(ContactDO::getId));
+    }
+
+}

+ 30 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/mysql/product/CoreProductMapper.java

@@ -0,0 +1,30 @@
+package cn.iocoder.yudao.module.supplier.dal.mysql.product;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.CoreProductPageReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.CoreProductDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 供应商核心产品 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface CoreProductMapper extends BaseMapperX<CoreProductDO> {
+
+    default PageResult<CoreProductDO> selectPage(CoreProductPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<CoreProductDO>()
+                .eqIfPresent(CoreProductDO::getSupplierId, reqVO.getSupplierId())
+                .eqIfPresent(CoreProductDO::getProductId, reqVO.getProductId())
+                .likeIfPresent(CoreProductDO::getProductName, reqVO.getProductName())
+                .eqIfPresent(CoreProductDO::getAdvantage, reqVO.getAdvantage())
+                .betweenIfPresent(CoreProductDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(CoreProductDO::getId));
+    }
+
+}

+ 42 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/dal/mysql/product/SupplierMapper.java

@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.module.supplier.dal.mysql.product;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.SupplierPageReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.SupplierDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 供应商主数据 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface SupplierMapper extends BaseMapperX<SupplierDO> {
+
+    default PageResult<SupplierDO> selectPage(SupplierPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<SupplierDO>()
+                .eqIfPresent(SupplierDO::getCode, reqVO.getCode())
+                .likeIfPresent(SupplierDO::getName, reqVO.getName())
+                .eqIfPresent(SupplierDO::getClassification, reqVO.getClassification())
+                .eqIfPresent(SupplierDO::getType, reqVO.getType())
+                .eqIfPresent(SupplierDO::getNature, reqVO.getNature())
+                .eqIfPresent(SupplierDO::getCreditCode, reqVO.getCreditCode())
+                .eqIfPresent(SupplierDO::getTin, reqVO.getTin())
+                .eqIfPresent(SupplierDO::getCorporation, reqVO.getCorporation())
+                .betweenIfPresent(SupplierDO::getIncorporationDate, reqVO.getIncorporationDate())
+                .eqIfPresent(SupplierDO::getAddress, reqVO.getAddress())
+                .eqIfPresent(SupplierDO::getBizScope, reqVO.getBizScope())
+                .eqIfPresent(SupplierDO::getRegisteredCapital, reqVO.getRegisteredCapital())
+                .eqIfPresent(SupplierDO::getAnnualTurnove, reqVO.getAnnualTurnove())
+                .eqIfPresent(SupplierDO::getSize, reqVO.getSize())
+                .eqIfPresent(SupplierDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(SupplierDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(SupplierDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(SupplierDO::getId));
+    }
+
+}

+ 56 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/ConnectRecordService.java

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.supplier.service.product;
+
+import java.util.*;
+import javax.validation.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ConnectRecordPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ConnectRecordSaveReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.ConnectRecordDO;
+
+/**
+ * 供应商联系记录 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface ConnectRecordService {
+
+    /**
+     * 创建供应商联系记录
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createConnectRecord(@Valid ConnectRecordSaveReqVO createReqVO);
+
+    /**
+     * 更新供应商联系记录
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateConnectRecord(@Valid ConnectRecordSaveReqVO updateReqVO);
+
+    /**
+     * 删除供应商联系记录
+     *
+     * @param id 编号
+     */
+    void deleteConnectRecord(Long id);
+
+    /**
+     * 获得供应商联系记录
+     *
+     * @param id 编号
+     * @return 供应商联系记录
+     */
+    ConnectRecordDO getConnectRecord(Long id);
+
+    /**
+     * 获得供应商联系记录分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 供应商联系记录分页
+     */
+    PageResult<ConnectRecordDO> getConnectRecordPage(ConnectRecordPageReqVO pageReqVO);
+
+}

+ 82 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/ConnectRecordServiceImpl.java

@@ -0,0 +1,82 @@
+package cn.iocoder.yudao.module.supplier.service.product;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.security.core.LoginUser;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ConnectRecordPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ConnectRecordSaveReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.ConnectRecordDO;
+import cn.iocoder.yudao.module.supplier.dal.mysql.product.ConnectRecordMapper;
+import cn.iocoder.yudao.module.supplier.enums.ErrorCodeConstant;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
+import cn.iocoder.yudao.module.system.service.user.AdminUserService;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * 供应商联系记录 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class ConnectRecordServiceImpl implements ConnectRecordService {
+
+    @Resource
+    private ConnectRecordMapper connectRecordMapper;
+    @Resource
+    private AdminUserService adminUserService;
+
+    @Override
+    public Long createConnectRecord(ConnectRecordSaveReqVO createReqVO) {
+        // 插入
+        ConnectRecordDO connectRecord = BeanUtils.toBean(createReqVO, ConnectRecordDO.class);
+        LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
+        Long id = loginUser.getId();
+        AdminUserDO user = adminUserService.getUser(id);
+        connectRecord.setUserId(id);
+        connectRecord.setUsername(user.getUsername());
+        connectRecordMapper.insert(connectRecord);
+        // 返回
+        return connectRecord.getId();
+    }
+
+    @Override
+    public void updateConnectRecord(ConnectRecordSaveReqVO updateReqVO) {
+        // 校验存在
+        validateConnectRecordExists(updateReqVO.getId());
+        // 更新
+        ConnectRecordDO updateObj = BeanUtils.toBean(updateReqVO, ConnectRecordDO.class);
+        connectRecordMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteConnectRecord(Long id) {
+        // 校验存在
+        validateConnectRecordExists(id);
+        // 删除
+        connectRecordMapper.deleteById(id);
+    }
+
+    private void validateConnectRecordExists(Long id) {
+        if (connectRecordMapper.selectById(id) == null) {
+            throw exception(ErrorCodeConstant.NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public ConnectRecordDO getConnectRecord(Long id) {
+        return connectRecordMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<ConnectRecordDO> getConnectRecordPage(ConnectRecordPageReqVO pageReqVO) {
+        return connectRecordMapper.selectPage(pageReqVO);
+    }
+
+}

+ 56 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/ContactService.java

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.supplier.service.product;
+
+import java.util.*;
+import javax.validation.*;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ContactPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ContactSaveReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.ContactDO;
+
+/**
+ * 供应商联系人 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface ContactService {
+
+    /**
+     * 创建供应商联系人
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createContact(@Valid ContactSaveReqVO createReqVO);
+
+    /**
+     * 更新供应商联系人
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateContact(@Valid ContactSaveReqVO updateReqVO);
+
+    /**
+     * 删除供应商联系人
+     *
+     * @param id 编号
+     */
+    void deleteContact(Long id);
+
+    /**
+     * 获得供应商联系人
+     *
+     * @param id 编号
+     * @return 供应商联系人
+     */
+    ContactDO getContact(Long id);
+
+    /**
+     * 获得供应商联系人分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 供应商联系人分页
+     */
+    PageResult<ContactDO> getContactPage(ContactPageReqVO pageReqVO);
+
+}

+ 75 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/ContactServiceImpl.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.supplier.service.product;
+
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ContactPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.ContactSaveReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.ContactDO;
+import cn.iocoder.yudao.module.supplier.dal.mysql.product.ContactMapper;
+import cn.iocoder.yudao.module.supplier.enums.ErrorCodeConstant;
+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.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * 供应商联系人 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class ContactServiceImpl implements ContactService {
+
+    @Resource
+    private ContactMapper contactMapper;
+
+    @Override
+    public Long createContact(ContactSaveReqVO createReqVO) {
+        // 插入
+        ContactDO contact = BeanUtils.toBean(createReqVO, ContactDO.class);
+        contactMapper.insert(contact);
+        // 返回
+        return contact.getId();
+    }
+
+    @Override
+    public void updateContact(ContactSaveReqVO updateReqVO) {
+        // 校验存在
+        validateContactExists(updateReqVO.getId());
+        // 更新
+        ContactDO updateObj = BeanUtils.toBean(updateReqVO, ContactDO.class);
+        contactMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteContact(Long id) {
+        // 校验存在
+        validateContactExists(id);
+        // 删除
+        contactMapper.deleteById(id);
+    }
+
+    private void validateContactExists(Long id) {
+        if (contactMapper.selectById(id) == null) {
+            throw exception(ErrorCodeConstant.NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public ContactDO getContact(Long id) {
+        return contactMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<ContactDO> getContactPage(ContactPageReqVO pageReqVO) {
+        return contactMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/CoreProductService.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.supplier.service.product;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.CoreProductPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.CoreProductSaveReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.CoreProductDO;
+
+import javax.validation.Valid;
+
+/**
+ * 供应商核心产品 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface CoreProductService {
+
+    /**
+     * 创建供应商核心产品
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createCoreProduct(@Valid CoreProductSaveReqVO createReqVO);
+
+    /**
+     * 更新供应商核心产品
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateCoreProduct(@Valid CoreProductSaveReqVO updateReqVO);
+
+    /**
+     * 删除供应商核心产品
+     *
+     * @param id 编号
+     */
+    void deleteCoreProduct(Long id);
+
+    /**
+     * 获得供应商核心产品
+     *
+     * @param id 编号
+     * @return 供应商核心产品
+     */
+    CoreProductDO getCoreProduct(Long id);
+
+    /**
+     * 获得供应商核心产品分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 供应商核心产品分页
+     */
+    PageResult<CoreProductDO> getCoreProductPage(CoreProductPageReqVO pageReqVO);
+
+}

+ 75 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/CoreProductServiceImpl.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.supplier.service.product;
+
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.CoreProductPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.CoreProductSaveReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.CoreProductDO;
+import cn.iocoder.yudao.module.supplier.dal.mysql.product.CoreProductMapper;
+import cn.iocoder.yudao.module.supplier.enums.ErrorCodeConstant;
+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.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * 供应商核心产品 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class CoreProductServiceImpl implements CoreProductService {
+
+    @Resource
+    private CoreProductMapper coreProductMapper;
+
+    @Override
+    public Long createCoreProduct(CoreProductSaveReqVO createReqVO) {
+        // 插入
+        CoreProductDO coreProduct = BeanUtils.toBean(createReqVO, CoreProductDO.class);
+        coreProductMapper.insert(coreProduct);
+        // 返回
+        return coreProduct.getId();
+    }
+
+    @Override
+    public void updateCoreProduct(CoreProductSaveReqVO updateReqVO) {
+        // 校验存在
+        validateCoreProductExists(updateReqVO.getId());
+        // 更新
+        CoreProductDO updateObj = BeanUtils.toBean(updateReqVO, CoreProductDO.class);
+        coreProductMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteCoreProduct(Long id) {
+        // 校验存在
+        validateCoreProductExists(id);
+        // 删除
+        coreProductMapper.deleteById(id);
+    }
+
+    private void validateCoreProductExists(Long id) {
+        if (coreProductMapper.selectById(id) == null) {
+            throw exception(ErrorCodeConstant.NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public CoreProductDO getCoreProduct(Long id) {
+        return coreProductMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<CoreProductDO> getCoreProductPage(CoreProductPageReqVO pageReqVO) {
+        return coreProductMapper.selectPage(pageReqVO);
+    }
+
+}

+ 57 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/SupplierService.java

@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.module.supplier.service.product;
+
+import javax.validation.*;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.SupplierPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.SupplierSaveReqVO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.SupplierDO;
+
+import java.util.List;
+
+/**
+ * 供应商主数据 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface SupplierService {
+
+    /**
+     * 创建供应商主数据
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long create(@Valid SupplierSaveReqVO createReqVO);
+
+    /**
+     * 更新供应商主数据
+     *
+     * @param updateReqVO 更新信息
+     */
+    void update(@Valid SupplierSaveReqVO updateReqVO);
+
+    /**
+     * 删除供应商主数据
+     *
+     * @param id 编号
+     */
+    void delete(Long id);
+
+    /**
+     * 获得供应商主数据
+     *
+     * @param id 编号
+     * @return 供应商主数据
+     */
+    SupplierDO get(Long id);
+
+    /**
+     * 获得供应商主数据分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 供应商主数据分页
+     */
+    PageResult<SupplierDO> getPage(SupplierPageReqVO pageReqVO);
+
+    List<SupplierDO> getAll();
+}

+ 82 - 0
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/service/product/SupplierServiceImpl.java

@@ -0,0 +1,82 @@
+package cn.iocoder.yudao.module.supplier.service.product;
+
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.SupplierPageReqVO;
+import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.SupplierSaveReqVO;
+import cn.iocoder.yudao.module.supplier.dal.dataobject.product.SupplierDO;
+import cn.iocoder.yudao.module.supplier.dal.mysql.product.SupplierMapper;
+import cn.iocoder.yudao.module.supplier.enums.ErrorCodeConstant;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+
+import java.util.Collections;
+import java.util.List;
+import java.util.UUID;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+
+/**
+ * 供应商主数据 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class SupplierServiceImpl implements SupplierService {
+
+    @Resource
+    private SupplierMapper supplierMapper;
+
+    @Override
+    public Long create(SupplierSaveReqVO createReqVO) {
+        // 插入
+        SupplierDO supplierDO = BeanUtils.toBean(createReqVO, SupplierDO.class);
+        supplierDO.setCode(UUID.randomUUID().toString());
+        supplierMapper.insert(supplierDO);
+        // 返回
+        return supplierDO.getId();
+    }
+
+    @Override
+    public void update(SupplierSaveReqVO updateReqVO) {
+        // 校验存在
+        validateExists(updateReqVO.getId());
+        // 更新
+        SupplierDO updateObj = BeanUtils.toBean(updateReqVO, SupplierDO.class);
+        supplierMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void delete(Long id) {
+        // 校验存在
+        validateExists(id);
+        // 删除
+        supplierMapper.deleteById(id);
+    }
+
+    private void validateExists(Long id) {
+        if (supplierMapper.selectById(id) == null) {
+            throw exception(ErrorCodeConstant.NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public SupplierDO get(Long id) {
+        return supplierMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<SupplierDO> getPage(SupplierPageReqVO pageReqVO) {
+        return supplierMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public List<SupplierDO> getAll() {
+        return supplierMapper.selectList();
+    }
+
+}