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

举报
yd_215151764 发表于 2025/06/30 09:57:19 2025/06/30
【摘要】 ## 技术栈Appgallery connect## 开发准备上一篇文章中我们实现了项目端云一体化金刚区活动模块,数据也成功的从云端获取,并且我们跟ScrollBar进行关联,能够让用户直观的查看当前滑动的位置。现在我们开始继续向下,随着我们首页的内容越来越多,我们如果因为某些业务需要进行调整和下线,想隐藏和关掉某些模块,就需要每次在打包的时候进行处理,这很明显会非常的麻烦,现在我们通过一张...


## 技术栈
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}`);

}

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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。