一、項目準備
模塊化開發的好處?
高內聚,低耦合
並行開發,提高開發的效率
如何劃分?
業務層次
功能劃分
重複使用
(一)、工程創建
構建工具:gradle
(二)、數據庫設計
管理端
產品表
訂單表
(三)、創建表
create table product(
id VARCHAR(50) not null comment '產品編號',
name VARCHAR(50) not null comment '產品名稱',
threshold_amount DECIMAL(15,3) not null comment '起步金額',
step_amount DECIMAL(15,3) not null comment '投資步長',
lock_term SMALLINT not null comment '鎖定期',
reward_rate DECIMAL(15,3) not null comment '收益率,0-100 百分比值',
status VARCHAR(20) not null comment '狀態,AUDINTING:審覈中,IN_SELL:銷售 中,LOCKED:暫停銷售,FINISHED:已結束',
memo VARCHAR(200) comment '備註',
create_at datetime comment '創建時間',
create_user VARCHAR(20) comment '創建者',
update_at datetime comment '更新時間',
update_user VARCHAR(20) comment '更新者',
PRIMARY KEY(id)
)ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
create table order_t(
order_id VARCHAR(50) not null comment '訂單編號',
chan_id VARCHAR(50) not null comment '渠道編號',
product_id VARCHAR(50) not null comment '產品編號',
chan_user_id VARCHAR(50) not null comment '渠道用戶編號',
order_type VARCHAR(50) not null comment '類型,APPLY:申購,REDEEM:贖回',
order_status VARCHAR(50) not null comment '狀態,INIT:初始化,PROCESS:處理 中,SUCCESS:成功,FAIL:失敗',
outer_order_id VARCHAR(50) not null comment '外部訂單編號',
amount DECIMAL(15,3) not null comment '金額',
memo VARCHAR(200) comment '備註',
create_at datetime comment '創建時間',
update_at datetime comment '更新時間',
PRIMARY KEY(order_id)
)ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
(四)、Entity模塊
package com.qwl.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.math.BigDecimal;
import java.util.Date;
/**
* 產品
*/
@Entity
public class Product {
@Id
private String id;
private String name;
private String status;
//起投金額
private BigDecimal threshouldAmount;
//投資步長
private BigDecimal stepAmount;
//鎖定期
private Integer lockTerm;
//收益率
private BigDecimal rewardRate;
private String memo;
private Date createAt;
private Date updateAt;
private String createUser;
private String updateUser;
//get set toString
}
package com.qwl.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.math.BigDecimal;
import java.util.Date;
/**
* 訂單
*/
@Entity(name = "order_t")
public class Order {
@Id
private String orderId;
//渠道id
private String chanId;
private String chanUserId;
private String orderType;
private String productId;
private BigDecimal amount;
private String outerOrderId;
private String orderStatus;
private String memo;
private Date createAt;
private Date updateAt;
//get set toString
}
(五)、enums
package com.qwl.entity.enums;
/**
* 訂單狀態
*/
public enum OrderStatus {
INIT("初始化"),
PROCESS("處理中"),
SUCCESS("成功"),
FAIL("失敗");
private String desc;
OrderStatus(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
}
package com.qwl.entity.enums;
/**
* 訂單狀態
*/
public enum OrderType {
APPLY("申購"),
REDEEM("贖回");
private String desc;
OrderType(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
}
package com.qwl.entity.enums;
/**
* 產品狀態
*/
public enum ProductStatus {
AUDITING("審覈中"),
IN_SELL("銷售中"),
LOCKED("暫停銷售"),
FINISHED("已結束");
private String desc;
ProductStatus(String desc){
this.desc = desc;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}