0092 DiscountType、DiscountLimitationType、Discount
DiscountType类,通过该枚举的一个指定成员,指定的一个/类商品进行折扣计算操作。
DiscountLimitationType类,通过该枚举的一个指定成员,指定一种类型的用户才可享受商品的折扣。
Discount类,通过该类及其属性成员实例,对程序中的商品实体实例执行折扣操作提供数据支撑。
0093 DiscountMapping、DiscountProductMapping、IDiscountSupported
DiscountMapping类,通过该类及其属性成员实例,构建程序中实体实例与折扣实体实例映射关系,实现折扣操作与相应实体的业务逻辑的耦合。
DiscountProductMapping类,继承于DiscountMapping类,通过该类及其属性成员实例,构建程序中实体实例与折扣实体实例映射关系,实现折扣操作与商品实体的业务逻辑的耦合。
注意:
在实现业务的逻辑中折扣操作是与商品直接相关联的,nopCommerce程序所需要做到的是定义并实现该关联关系,所以nopCommerce程序中所定义的任何与折扣相关的类及其逻辑实现,从本质上来说都是必须与商品相关的定义实现提供相应的数据支撑,即从程序业务逻辑的实现上折扣与商品存在有天然的且必须的耦合关系。
IIDiscountSupported接口,用于继承于该接口的具体实现类来与折扣操作进行业务逻辑的耦合(这里主要指:商品实体)。
0094 MediaSettings、Download
MediaSettings类,程序通过该类及其属性成员的默认值,对程序中的图片进行设置及限定。
Download类,程序通过该类及其属性成员,对客户端的下载操作进行设置。
0095 PictureType、Picture、PictureBinary、PictureHashItem
PictureType类,通过该枚举的一个指定成员,指定图片的类型(商品图片/头型图片)。
Picture类,通过该类及其属性成员实例,对程序中的图片文件进行相应的设置。
PictureBinary类,通过该类及其属性成员实例,把图片文件以二进制文件流的格式持久化存储到数据库表的指定字段中。
PictureHashItem类,通过该类及其属性成员实例,该实例以哈希格式和算法把数据库中的二进制图片数据在指定页面上以图片的形式显示出来。
0096 DiscountBuilder、DiscountProductMappingBuilder
DiscountBuilder类,该类通过对父类中同名方法进行覆写,对语言实体类、属性成员进行约束关系和规则进行相应的定义,并把这些约束有关系和规则的定义,映射到相应的数据库中新生成的一个折扣表及其字段上。
DiscountProductMappingBuilder类,该类通过对父类中同名方法进行覆写,对语言实体类、属性成员进行约束关系和规则进行相应的定义,并把这些约束有关系和规则的定义,映射到相应的数据库中新生成的一个折扣商品映射表及其字段上。
注意:
由于当前在示例程序中并没有定义商品实体类,为了程序的正常执行,注释掉了该类中商品实体类的相关语句。
0097 DownloadBuilder、PictureBinaryBuilder、PictureBuilder
DownloadBuilder类,该类通过对父类中同名方法进行覆写,对语言实体类、属性成员进行约束关系和规则进行相应的定义,并把这些约束有关系和规则的定义,映射到相应的数据库中新生成的一个下载表及其字段上。
PictureBinaryBuilder类,该类通过对父类中同名方法进行覆写,对语言实体类、属性成员进行约束关系和规则进行相应的定义,并把这些约束有关系和规则的定义,映射到相应的数据库中新生成的一个图片二进制文件表及其字段上。
PictureBuilder类,该类通过对父类中同名方法进行覆写,对语言实体类、属性成员进行约束关系和规则进行相应的定义,并把这些约束有关系和规则的定义,映射到相应的数据库中新生成的一个图片表及其字段上。
- 重构Nop.Data.Migrations.SchemaMigration类,定义语句:
<1>、_migrationManager.BuildTable<Download>(Create);
<2>、_migrationManager.BuildTable<Picture>(Create);
<3>、_migrationManager.BuildTable<PictureBinary>(Create);
<4>、_migrationManager.BuildTable<Discount>(Create);
<5>、_migrationManager.BuildTable<DiscountProductMapping>(Create);
注意:
上述5行语句必须按照当前顺序进行定义,否则在自动生成数据库、表及其约束规则时,会产生逻辑异常,而导致自动生成数据库、表及其约束规则的自动生操作失败。
2、重构Nop.Services.Installation.InstallationService.InstallSettingsAsync方法,把多媒体设置默认设置数据持久化到设置表中。
3、按F5执行程序,在数据库中自动生成折扣表、折扣商品映射表、下载表、图片二进制文件表和图片表,及其把多媒体设置实例默认数据自动持久化到设置表中。
对以上功能更为具体实现和注释见: 21-09-17_Nop_4.40.3(029_折扣与多媒体定义实现完成,所有页面正常显示)。