pdcj设计

为了实现这些功能需求,我们需要设计多个数据库表来存储相关的数据,并编写相应的Java代码来处理业务逻辑。下面是各个功能需求对应的MySQL表结构以及部分Java代码示例。

商品设置管理

商品分类管理
  • 商品分类表 (product_categories)
    CREATE TABLE product_categories (
        id INT AUTO_INCREMENT PRIMARY KEY,
        category_name VARCHAR(255) NOT NULL,
        category_code VARCHAR(50) NOT NULL,
        parent_id INT DEFAULT NULL,
        FOREIGN KEY (parent_id) REFERENCES product_categories(id)
    );
    
单位维护
  • 单位表 (units)
    CREATE TABLE units (
        id INT AUTO_INCREMENT PRIMARY KEY,
        unit_name VARCHAR(50) NOT NULL
    );
    
未上架商品
  • 商品表 (products)
    CREATE TABLE products (
        id INT AUTO_INCREMENT PRIMARY KEY,
        category_id INT NOT NULL,
        product_code VARCHAR(50) NOT NULL,
        product_name VARCHAR(255) NOT NULL,
        market_price DECIMAL(10, 2),
        unit_id INT NOT NULL,
        main_image VARCHAR(255),
        carousel_images TEXT,
        details TEXT,
        status ENUM('NOT_LISTED', 'LISTED') DEFAULT 'NOT_LISTED',
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        FOREIGN KEY (category_id) REFERENCES product_categories(id),
        FOREIGN KEY (unit_id) REFERENCES units(id)
    );
    
已上架商品
  • 商品状态表 (product_status)
    CREATE TABLE product_status (
        id INT AUTO_INCREMENT PRIMARY KEY,
        product_id INT NOT NULL,
        listed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        status ENUM('LISTED', 'DELISTED') DEFAULT 'LISTED',
        FOREIGN KEY (product_id) REFERENCES products(id)
    );
    

交易设置管理

交易日程设置
  • 交易日历表 (trading_calendar)

    CREATE TABLE trading_calendar (
        id INT AUTO_INCREMENT PRIMARY KEY,
        date DATE NOT NULL,
        status ENUM('OPEN', 'CLOSED') NOT NULL,
        preparation_time TIME,
        opening_time TIME,
        closing_time TIME,
        settlement_time TIME,
        settlement_completion_time TIME
    );
    
  • 暂停节表 (pause_periods)

    CREATE TABLE pause_periods (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        start_time TIME,
        end_time TIME
    );
    

市场开休市管理

  • 市场表 (markets)
    CREATE TABLE markets (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        trading_days VARCHAR(255) NOT NULL,
        status ENUM('OPEN', 'CLOSED') NOT NULL,
        next_trading_day DATE
    );
    

市场参数设置

  • 市场参数表 (market_parameters)
    CREATE TABLE market_parameters (
        id INT AUTO_INCREMENT PRIMARY KEY,
        group_deposit_algorithm ENUM('FIXED', 'RATIO') NOT NULL,
        purchase_deposit_value DECIMAL(10, 2),
        purchase_fee_algorithm ENUM('FIXED', 'RATIO') NOT NULL,
        purchase_fee_value DECIMAL(10, 2),
        sale_fee_algorithm ENUM('FIXED', 'RATIO') NOT NULL,
        sale_fee_value DECIMAL(10, 2),
        interest_rate DECIMAL(10, 8)
    );
    

拼单团购管理

团购设置
  • 团购设置表 (group_buying_settings)
    CREATE TABLE group_buying_settings (
        id INT AUTO_INCREMENT PRIMARY KEY,
        code VARCHAR(50) NOT NULL,
        name VARCHAR(255) NOT NULL,
        product_category_id INT NOT NULL,
        product_id INT NOT NULL,
        minimum_quantity DECIMAL(10, 2),
        formation_condition DECIMAL(10, 2),
        start_time DATETIME,
        end_time DATETIME,
        display_end_time DATETIME,
        status ENUM('UNSTARTED', 'ONGOING', 'COMPLETED') NOT NULL,
        description TEXT,
        FOREIGN KEY (product_category_id) REFERENCES product_categories(id),
        FOREIGN KEY (product_id) REFERENCES products(id)
    );
    
团购参与详情
  • 团购参与表 (group_buying_participants)
    CREATE TABLE group_buying_participants (
        id INT AUTO_INCREMENT PRIMARY KEY,
        group_buying_setting_id INT NOT NULL,
        user_code VARCHAR(50) NOT NULL,
        user_name VARCHAR(255) NOT NULL,
        order_quantity DECIMAL(10, 2),
        status ENUM('PENDING_FORMATION', 'FORMED', 'EXPIRED') NOT NULL,
        deposit_amount DECIMAL(10, 2),
        formation_amount DECIMAL(10, 2),
        order_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        FOREIGN KEY (group_buying_setting_id) REFERENCES group_buying_settings(id)
    );
    

集采订单管理

采购管理
  • 采购订单表 (purchase_orders)
    CREATE TABLE purchase_orders (
        id INT AUTO_INCREMENT PRIMARY KEY,
        product_category_id INT NOT NULL,
        product_id INT NOT NULL,
        unit_price DECIMAL(10, 2),
        total_quantity DECIMAL(10, 2),
        total_amount DECIMAL(10, 2),
        total_deposit DECIMAL(10, 2),
        status ENUM('PENDING_PURCHASE', 'PURCHASED') NOT NULL,
        FOREIGN KEY (product_category_id) REFERENCES product_categories(id),
        FOREIGN KEY (product_id) REFERENCES products(id)
    );
    
发货订单管理
  • 发货订单表 (shipping_orders)
    CREATE TABLE shipping_orders (
        id INT AUTO_INCREMENT PRIMARY KEY,
        order_number VARCHAR(50) NOT NULL,
        product_category_id INT NOT NULL,
        product_id INT NOT NULL,
        buyer_code VARCHAR(50) NOT NULL,
        buyer_name VARCHAR(255) NOT NULL,
        seller_code VARCHAR(50) NOT NULL,
        seller_name VARCHAR(255) NOT NULL,
        unit_price DECIMAL(10, 2),
        quantity DECIMAL(10, 2),
        deposit_amount DECIMAL(10, 2),
        status ENUM('WAITING_PAYMENT', 'WAITING_SHIPPING', 'WAITING_RECEIPT', 'COMPLETED') NOT NULL,
        FOREIGN KEY (product_category_id) REFERENCES product_categories(id),
        FOREIGN KEY (product_id) REFERENCES products(id)
    );
    

供求信息管理

集采预购信息
  • 集采预购信息表 (pre_purchase_info)
    CREATE TABLE pre_purchase_info (
        id INT AUTO_INCREMENT PRIMARY KEY,
        product_category_id INT NOT NULL,
        product_id INT NOT NULL,
        pre_purchase_date DATE,
        pre_purchase_unit_price DECIMAL(10, 2),
        pre_purchase_quantity DECIMAL(10, 2),
        total_price DECIMAL(10, 2),
        contact_person VARCHAR(255),
        contact_phone VARCHAR(50),
        other_info TEXT,
        publish_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        status ENUM('PENDING_ACCEPTANCE', 'ACCEPTED') NOT NULL,
        FOREIGN KEY (product_category_id) REFERENCES product_categories(id),
        FOREIGN KEY (product_id) REFERENCES products(id)
    );
    
销售报价信息
  • 销售报价信息表 (sales_quotes)
    CREATE TABLE sales_quotes (
        id INT AUTO_INCREMENT PRIMARY KEY,
        product_category_id INT NOT NULL,
        product_id INT NOT NULL,
        pre_sale_date DATE,
        pre_sale_unit_price DECIMAL(10, 2),
        pre_sale_quantity DECIMAL(10, 2),
        total_price DECIMAL(10, 2),
        contact_person VARCHAR(255),
        contact_phone VARCHAR(50),
        other_info TEXT,
        publish_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
        status ENUM('PENDING_ACCEPTANCE', 'ACCEPTED') NOT NULL,
        FOREIGN KEY (product_category_id) REFERENCES product_categories(id),
        FOREIGN KEY (product_id) REFERENCES products(id)
    );
    

Java示例代码

商品分类管理 - 新增分类
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Service
public class ProductCategoryService {

    @PersistenceContext
    private EntityManager entityManager;

    @Autowired
    private ProductCategoryRepository productCategoryRepository;

    public void addProductCategory(String categoryName, String categoryCode) {
        ProductCategory category = new ProductCategory();
        category.setCategoryName(categoryName);
        category.setCategoryCode(categoryCode);
        productCategoryRepository.save(category);
    }
}

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class ProductCategory {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    private String categoryName;
    private String categoryCode;
    private Integer parentId;

    // Getters and setters
}
商品管理 - 新增商品
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Service
public class ProductService {

    @PersistenceContext
    private EntityManager entityManager;

    @Autowired
    private ProductRepository productRepository;

    @Autowired
    private UnitRepository unitRepository;

    public void addProduct(int categoryId, String productCode, String productName, double marketPrice, int unitId, String mainImage, String carouselImages, String details) {
        Product product = new Product();
        product.setCategoryId(categoryId);
        product.setProductCode(productCode);
        product.setProductName(productName);
        product.setMarketPrice(marketPrice);
        product.setUnitId(unitId);
        product.setMainImage(mainImage);
        product.setCarouselImages(carouselImages);
        product.setDetails(details);
        product.setStatus("NOT_LISTED");
        productRepository.save(product);
    }
}

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    private int categoryId;
    private String productCode;
    private String productName;
    private double marketPrice;
    private int unitId;
    private String mainImage;
    private String carouselImages;
    private String details;
    private String status;

    // Getters and setters
}
商品管理 - 上架商品
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Service
public class ProductService {

    @PersistenceContext
    private EntityManager entityManager;

    @Autowired
    private ProductRepository productRepository;

    public void listProduct(int productId) {
        Product product = productRepository.findById(productId).orElse(null);
        if (product != null) {
            product.setStatus("LISTED");
            productRepository.save(product);
        }
    }
}
市场参数设置 - 修改参数
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Service
public class MarketParameterService {

    @PersistenceContext
    private EntityManager entityManager;

    @Autowired
    private MarketParameterRepository marketParameterRepository;

    public void updateMarketParameters(String groupDepositAlgorithm, Double purchaseDepositValue, String purchaseFeeAlgorithm, Double purchaseFeeValue, String saleFeeAlgorithm, Double saleFeeValue, Double interestRate) {
        MarketParameters parameters = marketParameterRepository.findById(1L).orElse(null);
        if (parameters != null) {
            parameters.setGroupDepositAlgorithm(groupDepositAlgorithm);
            parameters.setPurchaseDepositValue(purchaseDepositValue);
            parameters.setPurchaseFeeAlgorithm(purchaseFeeAlgorithm);
            parameters.setPurchaseFeeValue(purchaseFeeValue);
            parameters.setSaleFeeAlgorithm(saleFeeAlgorithm);
            parameters.setSaleFeeValue(saleFeeValue);
            parameters.setInterestRate(interestRate);
            marketParameterRepository.save(parameters);
        }
    }
}

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class MarketParameters {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String groupDepositAlgorithm;
    private Double purchaseDepositValue;
    private String purchaseFeeAlgorithm;
    private Double purchaseFeeValue;
    private String saleFeeAlgorithm;
    private Double saleFeeValue;
    private Double interestRate;

    // Getters and setters
}

这些示例代码仅覆盖了一小部分功能,您还需要根据实际需求扩展和完善其他的业务逻辑。如果您需要更详细的实现,请告知我。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海波东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值