## 運費模板
### 商城應用
在亞米商城系統中,商家在添加商品時,【配送方式】選擇商家配送時,需要選擇相應的運費模板。

在【門店管理】-【運費模板】中,可新增商品所需要的運費模板。

### 數據庫設計
#### 整體實體類關系如下圖:

#### model實體類:
##### 運費模板類(tz_transport)
```java
@Data
@TableName("tz_transport")
public class Transport{
/**
* 運費模板id
*/
@TableId
@ApiModelProperty(value = "運費模板id",required=true)
private Long transportId;
/**
* 運費模板名稱
*/
@ApiModelProperty(value = "運費模板名稱",required=true)
private String transName;
/**
* 店鋪id
*/
@ApiModelProperty(value = "店鋪id",required=true)
private Long shopId;
/**
* 參考 TransportChargeType
* 收費方式(0 按件數,1 按重量 2 按體積)
*/
@ApiModelProperty(value = "收費方式(0 按件數,1 按重量 2 按體積)",required=true)
private Integer chargeType;
/**
* 是否包郵 0:不包郵 1:包郵
*/
@ApiModelProperty(value = "是否包郵 0:不包郵 1:包郵",required=true)
private Integer isFreeFee;
/**
* 是否含有包郵條件
*/
@ApiModelProperty(value = "是否含有包郵條件",required=true)
private Integer hasFreeCondition;
/**
* 創建時間
*/
@ApiModelProperty(value = "創建時間",required=true)
private Date createTime;
}
```
- `transportId` ,運費模板id
- `transName`,運費模板名稱,存在多個運費模板時,方便商家選擇更好的運費模板
- `shopId`,店鋪id,可擴展為B2B2C模式
- `isFreeFee`,是否包郵,如果商家選擇了包郵,則不需要后面的其他操作
- `chargeType`,收費方式可分為按件數、按重量 、按體積,影響運費項表中`firstPiece`、`continuousFee`的單位
- `hasFreeCondition`,是否包含包郵條件,勾選后,商家可以設定指定包郵的地區與條件

- `createTime` , 創建模板時間
##### 運費項(tz_transfee)
```java
@Data
@TableName("tz_transfee")
public class Transfee {
/**
* 運費項id
*/
@TableId
@ApiModelProperty(value = "運費項id",required=true)
private Long transfeeId;
/**
* 運費模板id
*/
@ApiModelProperty(value = "運費模板id",required=true)
private Long transportId;
/**
* 續件數量
*/
@ApiModelProperty(value = "續件數量",required=true)
private Double continuousPiece;
/**
* 首件數量
*/
@ApiModelProperty(value = "首件數量",required=true)
private Double firstPiece;
/**
* 續件費用
*/
@ApiModelProperty(value = "續件費用",required=true)
private Double continuousFee;
/**
* 首件費用
*/
@ApiModelProperty(value = "首件費用",required=true)
private Double firstFee;
}
```

點擊【點擊添加可配送的區域和運費】可在模板中新增一條運費項記錄,運費模板與運費項為一對多關系。
+ `transfeeId`, 運費項目id
+ `transportId` ,運費模板id,表明所屬于哪個運費模板
+ `firstPiece`,首件數量\重量\體積,根據運費模板中的收費方式而定
+ `firstFee`,首重費用
+ `continuousPiece`,續件數量
+ `continuousFee`,續件費用
##### 運費項關聯城市表(tz_transcity)
```java
@Data
@TableName("tz_transcity")
public class Transcity implements Serializable {
@TableId
private Long transcityId;
/**
* 運費項id
*/
private Long transfeeId;
/**
* 城市id
*/
private Long cityId;
}
```

運費項可以根據需求指定特定區域的進行設置,運費項表與運費項關聯城市表之間為一對多的關系,設定的區域優先于所有地區。
+ `transcityId` , 模板項關聯城市ID
+ `transfeeId` ,關聯的模板項目ID
+ `cityId` , 關聯亞米商城系統中的區域管理模塊
##### 指定條件包郵項表(tz_transfee_free)
```java
@Data
@TableName("tz_transfee_free")
public class TransfeeFree {
/**
* 指定條件包郵項id
*/
@TableId
@ApiModelProperty(value = "指定條件包郵項id",required=true)
private Long transfeeFreeId;
/**
* 運費模板id
*/
@ApiModelProperty(value = "運費模板id",required=true)
private Long transportId;
/**
* 包郵方式 (0 滿x件/重量/體積包郵 1滿金額包郵 2滿x件/重量/體積且滿金額包郵)
*/
@ApiModelProperty(value = "包郵方式 (0 滿x件/重量/體積包郵 1滿金額包郵 2滿x件/重量/體積且滿金額包郵)",required=true)
private Integer freeType;
/**
* 需滿金額
*/
@ApiModelProperty(value = "需滿金額",required=true)
private Double amount;
/**
* 包郵x件/重量/體積
*/
@ApiModelProperty(value = "包郵x件/重量/體積",required=true)
private Double piece;
}
```

在運費模板中,還可以指定區域進行包郵,運費模板表與指定條件包郵項表為一對多關系。
+ `transfeeFreeId` 指定條件包郵項id
+ `transportId` 所關聯的運費模板id
+ `freeType`包郵條件可分為 滿x件/重量/體積包郵 、滿金額包郵 、滿x件/重量/體積且滿金額包郵
+ `amount`需滿金額 --條件
+ `piece`包郵x件/重量/體積 --條件
##### 指定條件包郵城市項表(tz_transcity_free)
```java
@Data
@TableName("tz_transcity_free")
public class TranscityFree implements Serializable {
private static final long serialVersionUID = 2579465286635831076L;
/**
* 指定條件包郵城市項id
*/
@TableId
private Long transcityFreeId;
/**
* 指定條件包郵項id
*/
private Long transfeeFreeId;
/**
* 城市id
*/
private Long freeCityId;
}
```

指定條件包郵城市項表與運費項關聯城市表同理,可以根據需求選擇特定區域,當滿足包郵條件時對買家訂單進行包郵,指定條件包郵項表與指定條件包郵城市項表之間為一對多的關系。
- `transcityFreeId` , 指定條件包郵城市項ID
- `transfeeFreeId`,指定條件包郵項id
- `freeCityId` , 關聯亞米商城系統中區域管理模塊的城市ID
**注意**:需要【指定條件包郵】勾選中,模板中指定條件的包郵項才可生效。
- 開發環境準備
- 基本開發手冊
- 項目目錄結構
- 權限管理
- 通用分頁表格
- Swagger文檔
- undertow容器
- 對xss攻擊的防御
- 分布式鎖
- 統一的系統日志
- 統一驗證
- 統一異常處理
- 文件上傳下載
- 一對多、多對多分頁
- 認證與授權
- 從授權開始看源碼
- 自己寫個授權的方法-開源版
- 商城表設計
- 商品信息
- 商品分組
- 購物車
- 訂單
- 地區管理
- 運費模板
- 接口設計
- 必讀
- 購物車的設計
- 訂單設計-確認訂單
- 訂單設計-提交訂單
- 訂單設計-支付
- 生產環境
- nginx安裝與跨域配置
- 安裝mysql
- 安裝redis
- 傳統方式部署項目
- docker
- 使用docker部署商城
- centos jdk安裝
- docker centos 安裝
- Docker Compose 安裝與卸載
- docker 鏡像的基本操作
- docker 容器的基本操作
- 通過yum安裝maven
- 常見問題