第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

《仿盒馬》app開發(fā)技術(shù)分享-- 領(lǐng)取優(yōu)惠券(56)

標(biāo)簽:
鴻蒙 HarmonyOS

技术栈

Appgallery connect

开发准备

在之前的功能开发中,我们有些功能只有展示的能力并没有与云端产生任何的交互,后续经过我们的迭代,更多的能力有了交互能力,这一节我们就要开始着手给那些静态展示的模块添加业务逻辑,我们现在要实现的是首页的新人优惠券的领取

功能分析

新人优惠券我们在创建的时候给他赋予了一些字段,分别对应了优惠券的id,面额,最小可用金额等,那我们既然需要跟用户进行绑定,还是需要新建一个优惠券的表,把优惠券已有的数据填充进去,并且添加上userid,方便我们按用户查

代码实现

首先我们创建对应的优惠券表,进行字段的定义

{
  "objectTypeName": "coupon_mall",
  "fields": [
    {"fieldName": "id", "fieldType": "Integer", "notNull": true, "belongPrimaryKey": true},
    {"fieldName": "user_id", "fieldType": "Integer"},
    {"fieldName": "coupon_id", "fieldType": "Integer", "notNull": true, "defaultValue": 0},
    {"fieldName": "price", "fieldType": "Double"},
    {"fieldName": "type", "fieldType": "Integer"},
    {"fieldName": "limit_amount", "fieldType": "Double"},
    {"fieldName": "start_time", "fieldType": "String"},
    {"fieldName": "end_time", "fieldType": "String"},
    {"fieldName": "type_str", "fieldType": "String"},
    {"fieldName": "txt", "fieldType": "String"}

  ],
  "indexes": [
    {"indexName": "field1Index", "indexList": [{"fieldName":"id","sortType":"ASC"}]}
  ],
  "permissions": [
    {"role": "World", "rights": ["Read", "Upsert", "Delete"]},
    {"role": "Authenticated", "rights": ["Read", "Upsert", "Delete"]},
    {"role": "Creator", "rights": ["Read", "Upsert", "Delete"]},
    {"role": "Administrator", "rights": ["Read", "Upsert", "Delete"]}
  ]
}

添加完我们需要的字段后,我们生成对应的实体和db类

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

class coupon_mall extends cloudDatabase.DatabaseObject {
  public id: number;
  public user_id: number;
  public coupon_id = 0;
  public price: number;
  public type: number;
  public limit_amount: number;
  public start_time: string;
  public end_time: string;
  public type_str: string;
  public txt: string;

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

export { coupon_mall };



/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2020-2023. All rights reserved.
 * Generated by the CloudDB ObjectType compiler. DO NOT EDIT!
 */

class CouponMall {
    id: number;
    user_id: number;
    coupon_id: number = 0;
    price: number;
    type: number;
    limit_amount: number;
    start_time: string;
    end_time: string;
    type_str: string;
    txt: string;

    constructor() {
    }


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

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

    setUser_id(user_id: number): void {
        this.user_id = user_id;
    }

    getUser_id(): number  {
        return this.user_id;
    }

    setCoupon_id(coupon_id: number): void {
        this.coupon_id = coupon_id;
    }

    getCoupon_id(): number  {
        return this.coupon_id;
    }

    setPrice(price: number): void {
        this.price = price;
    }

    getPrice(): number  {
        return this.price;
    }

    setType(type: number): void {
        this.type = type;
    }

    getType(): number  {
        return this.type;
    }

    setLimit_amount(limit_amount: number): void {
        this.limit_amount = limit_amount;
    }

    getLimit_amount(): number  {
        return this.limit_amount;
    }

    setStart_time(start_time: string): void {
        this.start_time = start_time;
    }

    getStart_time(): string  {
        return this.start_time;
    }

    setEnd_time(end_time: string): void {
        this.end_time = end_time;
    }

    getEnd_time(): string  {
        return this.end_time;
    }

    setType_str(type_str: string): void {
        this.type_str = type_str;
    }

    getType_str(): string  {
        return this.type_str;
    }

    setTxt(txt: string): void {
        this.txt = txt;
    }

    getTxt(): string  {
        return this.txt;
    }

}

export { CouponMall };

都生成之后我们在首页的新人优惠券模块,立即领取按钮添加对应的逻辑,因为券有多张,所以我们需要循环获取,并且上传到云数据库

import { coupon_mall } from "../clouddb/coupon_mall"
import { couponInfo } from "../entity/couponInfo"
import { homeNewPeopleCoupon } from "../entity/homeNewPeopleCoupon"
import { cloudDatabase } from "@kit.CloudFoundationKit"
import { hilog } from "@kit.PerformanceAnalysisKit"
import showToast from "../utils/ToastUtils"
import { StorageUtils } from "../utils/StorageUtils"
import { User } from "../entity/User"

@Component
@Preview
export struct CouponComponent {
  @Link home_activity:homeNewPeopleCoupon|null
  @Link couponList:couponInfo[]
  @State user: User|null=null

  async aboutToAppear(): Promise<void> {
    const value = await StorageUtils.getAll('user');
    if (value!='') {
      this.user=JSON.parse(value)
    }
  }

  build() {
    Column() {
      Row() {
        Text(this.home_activity?.title)
          .fontSize(20)
          .fontColor('#FF0000')

        Text(this.home_activity?.msg)
          .fontSize(14)
          .fontColor('#888888')
          .margin({left:10})
      }
      .width('100%')
      .padding(16)

      List({ space: 10 }) {
        ForEach(this.couponList, (item:couponInfo) => {
          ListItem() {
            Column() {
              Text(item.price)
                .fontSize(22)
                .fontColor('#FF4444')
                .margin({ bottom: 8 })

              Text(item.type)
                .fontSize(12)
                .fontColor('#FF4444')
            }
            .padding(10)
            .backgroundColor("#ffffff")
            .borderRadius(8)
          }
        })
      }
      .margin({left:50})
      .listDirection(Axis.Horizontal)
      .width('100%')
      .height(80)

      Button('立即领取', { type: ButtonType.Normal })
        .width(240)
        .height(40)
        .backgroundColor('#FF0000')
        .fontColor(Color.White)
        .borderRadius(20)
        .margin({ bottom: 16 })
        .onClick(async ()=>{
          for (let i = 0; i < this.couponList.length; i++) {
            let coupon=new coupon_mall()
            coupon.id=Math.floor(Math.random() * 1000000);
            coupon.user_id=this.user!.user_id
            coupon.coupon_id=this.couponList[i].coupon_id
            coupon.price=Number(this.couponList[i].price)
            coupon.type=0
            coupon.limit_amount=this.couponList[i].limit_amount
            coupon.start_time=this.creatTime()
            coupon.end_time=this.endTime()
            coupon.type_str=this.couponList[i].type
            coupon.txt="全场商品通用"
            let databaseZone = cloudDatabase.zone('default');
            let num = await databaseZone.upsert(coupon);
            hilog.info(0x0000, 'testTag', `Succeeded in upserting data, result: ${num}`);
            if (num>0) {
              showToast("优惠券领取成功")
            }
          }
        })
    }
    .backgroundColor("#fffce2be")
    .width('95%')
    .margin({top:10})
    .borderRadius(20)
  }

  creatTime(): string {
    const now = new Date();

    const year = now.getFullYear();
    const month = String(now.getMonth() + 1).padStart(2, '0');
    const day = String(now.getDate()).padStart(2, '0');
    const hours = String(now.getHours()).padStart(2, '0');
    const minutes = String(now.getMinutes()).padStart(2, '0');
    const seconds = String(now.getSeconds()).padStart(2, '0');

    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  }

  endTime(): string {
    const now = new Date();

    const year = now.getFullYear();
    const month = String(now.getMonth() + 1).padStart(2, '0');
    const day = String(now.getDate()).padStart(2, '0');
    const hours = String(now.getHours()).padStart(2, '0');
    const minutes = String(now.getMinutes()).padStart(2, '0');
    const seconds = String(now.getSeconds()).padStart(2, '0');

    return `${year}-${month}-${day+7} ${hours}:${minutes}:${seconds}`;
  }
}
點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消