《仿盒马》app开发技术分享-- 首页模块配置(4)

简介: 云数据库

技术栈

Appgallery connect

开发准备

上一篇文章中我们实现了项目端云一体化金刚区活动模块,数据也成功的从云端获取,并且我们跟ScrollBar进行关联,能够让用户直观的查看当前滑动的位置。现在我们开始继续向下,随着我们首页的内容越来越多,我们如果因为某些业务需要进行调整和下线,想隐藏和关掉某些模块,就需要每次在打包的时候进行处理,这很明显会非常的麻烦,现在我们通过一张表来对首页的整个模块进行控制,这样每次做展示的时候去进行查询当前状态来实现想要的效果。

代码实现
首先我们先创建一个表把所有的关联id 以及模块的状态字段定义一下

{
"objectTypeName": "home_activity_setting",
"fields": [
{"fieldName": "id", "fieldType": "Integer", "notNull": true, "belongPrimaryKey": true},
{"fieldName": "poster_id", "fieldType": "Integer"},
{"fieldName": "banner_id", "fieldType": "Integer"},
{"fieldName": "good_left_id", "fieldType": "Integer"},
{"fieldName": "good_right_id", "fieldType": "Integer"},
{"fieldName": "goods_list_id", "fieldType": "Integer"},
{"fieldName": "new_people_status", "fieldType": "Boolean"},
{"fieldName": "split_layout_status", "fieldType": "Boolean"},
{"fieldName": "banner_status", "fieldType": "Boolean"},
{"fieldName": "goods_list_status", "fieldType": "Boolean"}

],
"indexes": [
{"indexName": "field1IndexId", "indexList": [{"fieldName":"id","sortType":"ASC"}]}
],
"permissions": [
{"role": "World", "rights": ["Read"]},
{"role": "Authenticated", "rights": ["Read", "Upsert"]},
{"role": "Creator", "rights": ["Read", "Upsert", "Delete"]},
{"role": "Administrator", "rights": ["Read", "Upsert", "Delete"]}
]
}
然后我们创建数据

{
"cloudDBZoneName": "default",
"objectTypeName": "home_activity_setting",
"objects": [
{
"id": 1,
"poster_id": 1,
"banner_id": 1,
"good_left_id": 1,
"good_right_id": 1,
"goods_list_id": 1,
"new_people_status": true,
"split_layout_status": true,
"banner_status": true,
"goods_list_status": true
}
]
}
现在进行实体类的创建

export class HomeActivitySetting {
id: number;
poster_id: number;
banner_id: number;
good_left_id: number;
good_right_id: number;
goods_list_id: number;
new_people_status: boolean;
split_layout_status: boolean;
banner_status: boolean;
goods_list_status: boolean;

constructor() {
}

getFieldTypeMap():  Map<string, string> {
    let fieldTypeMap = new Map<string, string>();
    fieldTypeMap.set('id', 'Integer');
    fieldTypeMap.set('poster_id', 'Integer');
    fieldTypeMap.set('banner_id', 'Integer');
    fieldTypeMap.set('good_left_id', 'Integer');
    fieldTypeMap.set('good_right_id', 'Integer');
    fieldTypeMap.set('goods_list_id', 'Integer');
    fieldTypeMap.set('new_people_status', 'Boolean');
    fieldTypeMap.set('split_layout_status', 'Boolean');
    fieldTypeMap.set('banner_status', 'Boolean');
    fieldTypeMap.set('goods_list_status', 'Boolean');
    return fieldTypeMap;
}

getClassName(): string {
    return 'home_activity_setting';
}

getPrimaryKeyList(): string[] {
    let primaryKeyList: string[] = [];
    primaryKeyList.push('id');
    return primaryKeyList;
}

getIndexList(): string[] {
    let indexList: string[] = [];
    indexList.push('id');
    return indexList;
}

getEncryptedFieldList(): string[] {
    let encryptedFieldList: string[] = [];
    return encryptedFieldList;
}

setId(id: number): void {
    this.id = id;
}

getId(): number  {
    return this.id;
}

setPoster_id(poster_id: number): void {
    this.poster_id = poster_id;
}

getPoster_id(): number  {
    return this.poster_id;
}

setBanner_id(banner_id: number): void {
    this.banner_id = banner_id;
}

getBanner_id(): number  {
    return this.banner_id;
}

setGood_left_id(good_left_id: number): void {
    this.good_left_id = good_left_id;
}

getGood_left_id(): number  {
    return this.good_left_id;
}

setGood_right_id(good_right_id: number): void {
    this.good_right_id = good_right_id;
}

getGood_right_id(): number  {
    return this.good_right_id;
}

setGoods_list_id(goods_list_id: number): void {
    this.goods_list_id = goods_list_id;
}

getGoods_list_id(): number  {
    return this.goods_list_id;
}

setNew_people_status(new_people_status: boolean): void {
    this.new_people_status = new_people_status;
}

getNew_people_status(): boolean  {
    return this.new_people_status;
}

setSplit_layout_status(split_layout_status: boolean): void {
    this.split_layout_status = split_layout_status;
}

getSplit_layout_status(): boolean  {
    return this.split_layout_status;
}

setBanner_status(banner_status: boolean): void {
    this.banner_status = banner_status;
}

getBanner_status(): boolean  {
    return this.banner_status;
}

setGoods_list_status(goods_list_status: boolean): void {
    this.goods_list_status = goods_list_status;
}

getGoods_list_status(): boolean  {
    return this.goods_list_status;
}

static parseFrom(inputObject: any): HomeActivitySetting {
    let result = new HomeActivitySetting();
    if (!inputObject) {
        return result;
    }
    if (inputObject.id) {
        result.id = inputObject.id;
    }
    if (inputObject.poster_id) {
        result.poster_id = inputObject.poster_id;
    }
    if (inputObject.banner_id) {
        result.banner_id = inputObject.banner_id;
    }
    if (inputObject.good_left_id) {
        result.good_left_id = inputObject.good_left_id;
    }
    if (inputObject.good_right_id) {
        result.good_right_id = inputObject.good_right_id;
    }
    if (inputObject.goods_list_id) {
        result.goods_list_id = inputObject.goods_list_id;
    }
    if (inputObject.new_people_status) {
        result.new_people_status = inputObject.new_people_status;
    }
    if (inputObject.split_layout_status) {
        result.split_layout_status = inputObject.split_layout_status;
    }
    if (inputObject.banner_status) {
        result.banner_status = inputObject.banner_status;
    }
    if (inputObject.goods_list_status) {
        result.goods_list_status = inputObject.goods_list_status;
    }
    return result;
}

}

db类
import { cloudDatabase } from '@kit.CloudFoundationKit';

class home_activity_setting extends cloudDatabase.DatabaseObject {
public id: number;
public poster_id: number;
public banner_id: number;
public good_left_id: number;
public good_right_id: number;
public goods_list_id: number;
public new_people_status: boolean;
public split_layout_status: boolean;
public banner_status: boolean;
public goods_list_status: boolean;

public naturalbase_ClassName(): string {
return 'home_activity_setting';
}
}

export { home_activity_setting };

创建完成之后,记得要在开发工具中把数据提交到云端,我们把数据提交到云端后,可以看到数据提交成功并且表也已经创建完成

进行数据查询
let databaseZone = cloudDatabase.zone('default');
let condition3 = new cloudDatabase.DatabaseQuery(home_activity_setting);

let listData3 = await databaseZone.query(condition3);
let json3 = JSON.stringify(listData3)
let data3:HomeActivitySetting[]= JSON.parse(json3)
this.homeActivity=data3
} catch (err) {
hilog.error(0x0000, 'testTag', Failed to query data, code: ${err.code}, message: ${err.message});

}

数据也已经查询成功,接下来我们直接运行程序,可以看到金刚区是在显示中的,接下来我们修改金刚区的状态,再执行一下,可以看到金刚区已经不见了,到这里我们首页模块的显示隐藏配置已经实现了。

相关文章
|
21天前
|
数据库
《仿盒马》app开发技术分享-- 确认订单页(业务逻辑)(30)
上一节我们实现了确认订单页的页面绘制和价格计算优惠计算,订单列表展示等功能,这一节我们来实现确认订单页的整个业务逻辑。首先我们要实现的就是地址的选择,然后把我们计算的价格,商品列表等数据保存起来,然后我们开始创建订单表实体类等,把这些数据提交到订单表中
31 3
|
21天前
《仿盒马》app开发技术分享-- 确认订单页(数据展示)(29)
上一节我们实现了地址的添加,那么有了地址之后我们接下来的重点就可以放到订单生成上了,我们在购物车页面,点击结算会跳转到一个 订单确认页面,在这个页面我们需要有地址选择、加购列表展示、价格计算、优惠计算、商品数量展示等信息。
32 3
|
21天前
|
存储 定位技术 数据库
《仿盒马》app开发技术分享-- 新增地址(28)
上一节我们实现了地图选点,获取当前位置,在地图上添加标记,根据当前的定位获取poi地址列表等功能,这些全部都为了我们这一节而铺垫,这一节我们要实现的是新增地址,把我们的用户信息,填写收件人、门牌号、手机号、经纬度、详细地址等信息添加到我们的云数据库中,然后在地址查询列表里展示出来。
28 2
|
21天前
|
定位技术
《仿盒马》app开发技术分享-- 地图选点(27)
上一节我们实现了地图的简单展示,这一节我们要实现的内容是,根据展示的地图,实现当前定位功能,当前位置的poi地址功能,以及列表的展示,给地图添加标记,展示自己的当前定位
36 4
|
21天前
|
定位技术 API
《仿盒马》app开发技术分享-- 原生地图展示(26)
上一节我们实现了获取当前用户的位置,并且成功的拿到了经纬度,这一节我们就要根据拿到的经纬度,结合我们其他的知识点来实现地图的展示。
43 4
|
21天前
|
前端开发 定位技术
《仿盒马》app开发技术分享-- 定位获取(25)
上一节我们实现了地址管理页面的数据查询和展示,接下来我们要实现的功能是地址添加相关的,我们想实现的功能是地图选点,那么在地图选点之前我们要做的就是先获取用户当前的定位。获取定位后我们拿到经纬度和其他信息,然后在对应的地图上展示。
26 0
|
21天前
|
JSON 前端开发 数据库
《仿盒马》app开发技术分享-- 地址管理页(24)
上一节我们实现了个人信息页面的信息展示和页面修改,并且实现了数据的同步修改,这一节我们来实现电商应用里比较重要的模块,地址模块。首先我们来实现地址的展示。
26 0
|
21天前
|
JSON 前端开发 数据库
《仿盒马》app开发技术分享-- 个人信息页(23)
上一节我们实现了个人中心的业务逻辑,实现了个人信息修改后的动态更换,而且实现了一个静态的头像选择弹窗,但是这个弹窗我们并没有使用。这一节我们在个人信息页面就会使用到这个弹窗并且还涉及其他的弹窗。以及信息的同步展示和修改
29 0
|
21天前
|
前端开发
《仿盒马》app开发技术分享-- 个人中心页or静态头像选择(业务逻辑)(22)
上一节我们实现了登录页面的业务逻辑,并且成功的实现了数据的查询,同时我们新增了用户首选项的工具类,现在主界面往登录页面跳转,登录成功后我们关闭登录页面,这时候我们就会回到个人中心页面,那么现在我们的业务逻辑是一种什么样的形式?登录成功后我们需要显示用户的信息,并且在下次登录时依旧展示个人信息。同时我们还新增了一个头像选择的静态弹窗,丰富个人信息页面
25 1
|
21天前
|
存储 缓存 前端开发
《仿盒马》app开发技术分享-- 用户登录页(业务逻辑)(21)
上一节我们实现了静态的用户登录页,这一节我们需要给他添加上业务逻辑,实现跟云数据库的互通,同时跟整个应用关联起来,因为我们还没有实现用户的注册页面,所以这里我们在云数据库的用户数据插入暂时先不做同用户名的校验,我们在云端先插入几条数据,暂时专注于查询即可
33 5

热门文章

最新文章