为了实现这些功能需求,我们需要设计多个数据库表来存储相关的数据,并编写相应的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
}
这些示例代码仅覆盖了一小部分功能,您还需要根据实际需求扩展和完善其他的业务逻辑。如果您需要更详细的实现,请告知我。