技术栈

Appgallery connect

开发准备

现在我们的app功能已经趋近完善,bug和缺失的细节也越来越少了,我们继续对app进行优化,首先是我们的积分页面,我们只实现了全部的积分展示内容,对收入和支出的积分明细并没有进行展示,这里我们要实现一下,然后就是我们的优惠券,我们已过期的优惠券并没有修改状态为已过期。

功能分析

要实现积分列表的细分展示,首先我们就要从获取的全部数据中筛选出对应type的数据,在对应的自定义组件和列表中展示,针对已经过期的优惠券,在进入页面时,我们先查询出所有的数据,再根据日期对优惠券的类型进行修改,把修改后的数据展示到列表上

代码实现

首先我们实现积分获取展示列表

import { PointsInfo } from '../../../entity/PointsInfo'@Component
export struct GetPoints {@Prop  pointsList:PointsInfo[]=[]@State flag:boolean=falseaboutToAppear(): void {this.pointsList=filterPointsByType(this.pointsList)this.flag=true}@BuilderrecordList(){List({ space: 10 }) {ForEach(this.pointsList, (item:PointsInfo) => {ListItem() {this.allItem(item)}})}.backgroundColor("#f7f7f7").padding({ top: 10 }).sticky(StickyStyle.Header)}@BuilderallItem(item:PointsInfo){Row({space:10}){Image(item.points_type=='0'?$r('app.media.shouru'):$r('app.media.duihuan')).height(35).width(35).objectFit(ImageFit.Contain).interpolation(ImageInterpolation.High).borderRadius(25)Column({space:10}){Text(item.points_type=='0'?"获得":"兑换").fontColor("#333333").fontSize(16)Text(item.address).fontColor("#999999").fontSize(14)}.alignItems(HorizontalAlign.Start)Blank()Column({space:10}){Text(item.points_type=='0'?"$"+item.points:"-$"+item.points).fontColor(item.points_type=='0'?"#00B644":"#EC2400").fontSize(16).margin({top:1})Text(item.create_time).fontColor("#999999").fontSize(14).margin({top:1})}.alignItems(HorizontalAlign.End)}.justifyContent(FlexAlign.SpaceBetween).padding({left:12,right:12}).width('100%').alignItems(VerticalAlign.Center).height(71).backgroundColor(Color.White)}build() {Column() {if (this.flag){this.recordList()}}.height('100%').layoutWeight(1).width('100%')}
}function filterPointsByType(pointsList: PointsInfo[]): PointsInfo[] {return pointsList.filter(item => item.points_type === '0');
}

我们实现了一个筛选方法,在进入页面的时候把筛选的数据添加到list组件中进行展示。接下来我们如法炮制,实现兑换积分列表

import { PointsInfo } from '../../../entity/PointsInfo'@Component
export struct OutPoints {@Prop  pointsList:PointsInfo[]=[]@State flag:boolean=falseaboutToAppear(): void {this.pointsList=filterPointsByType(this.pointsList)this.flag=true}@BuilderrecordList(){List({ space: 10 }) {ForEach(this.pointsList, (item:PointsInfo) => {ListItem() {this.allItem(item)}})}.backgroundColor("#f7f7f7").padding({ top: 10 }).sticky(StickyStyle.Header)}@BuilderallItem(item:PointsInfo){Row({space:10}){Image(item.points_type=='0'?$r('app.media.shouru'):$r('app.media.duihuan')).height(35).width(35).objectFit(ImageFit.Contain).interpolation(ImageInterpolation.High).borderRadius(25)Column({space:10}){Text(item.points_type=='0'?"获得":"兑换").fontColor("#333333").fontSize(16)Text(item.address).fontColor("#999999").fontSize(14)}.alignItems(HorizontalAlign.Start)Blank()Column({space:10}){Text(item.points_type=='0'?"$"+item.points:"-$"+item.points).fontColor(item.points_type=='0'?"#00B644":"#EC2400").fontSize(16).margin({top:1})Text(item.create_time).fontColor("#999999").fontSize(14).margin({top:1})}.alignItems(HorizontalAlign.End)}.justifyContent(FlexAlign.SpaceBetween).padding({left:12,right:12}).width('100%').alignItems(VerticalAlign.Center).height(71).backgroundColor(Color.White)}build() {Column() {if (this.flag){this.recordList()}}.height('100%').layoutWeight(1).width('100%')}
}function filterPointsByType(pointsList: PointsInfo[]): PointsInfo[] {return pointsList.filter(item => item.points_type === '1');
}

接下来我们实现优惠券过期条目的优化逻辑,我们根据优惠券的截止日期与当前日期进行对比,然后修改过期优惠券的type。

  thisTime(): 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}`;}compareDateTime(time1: string, time2: string): 1 | -1 | 0 {const date1 = new Date(time1.replace(' ', 'T')); // 转换为ISO格式const date2 = new Date(time2.replace(' ', 'T'));const timestamp1 = date1.getTime();const timestamp2 = date2.getTime();if (timestamp1 > timestamp2) return 1;if (timestamp1 < timestamp2) return -1;return 0;
}async aboutToAppear(): Promise<void> {const value = await StorageUtils.getAll('user');if (value != "") {this.user=JSON.parse(value)}let databaseZone = cloudDatabase.zone('default');let condition = new cloudDatabase.DatabaseQuery(coupon_mall);condition.equalTo("user_id",this.user?.user_id)let listData = await databaseZone.query(condition);let json = JSON.stringify(listData)let data:CouponMall[]= JSON.parse(json)this.couponList = data.filter(item =>this.compareDateTime(this.thisTime(), item.end_time) !== 1);}

我们通过时间对比再筛选列表,就完成了我们的业务优化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86281.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86281.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/86281.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(七)Dockerfile文件20个命令大全详解

目录 1. FROM 基于基础镜像构建 1.1 FROM 指令开头 1.2 ARG和FROM使用 1.3 FROM可以多个 1.4 AS name 1.5 tag和digest 2. RUN 执行任何命令 2.1 shell和exec两种使用方式 2.2 [OPTIONS]参数 3. CMD 指定默认执行命令 3.1 使用格式shell和exec两种使用方式 3.2 只…

攻防世界-MISC-4-2

知识点 1.字频分析 步骤 下载附件是一段文本&#xff0c; 在线网站处理&#xff1a;quipqiup - cryptoquip and cryptogram solver flag{classical-cipher_is_not_security_hs}

Nordic nRF54L15 SoC对包含电池监测、中断处理和电源轨控制的定制 nPM1300 示例

1&#xff1a;以下是适用于 nRF Connect SDK (NCS) 的基于 Zephyr 的示例应用程序&#xff0c;展示了&#xff1a; 读取电池电压和状态处理来自 nPM1300 的中断&#xff08;例如&#xff0c;电池或电源轨事件&#xff09;控制电源轨&#xff08;通过 GPIO 启用/禁用&#xff0…

MySQL 单机部署

文章目录 1、准备阶段1.1、部署规划1.2、硬件准备1.3、软件准备1.4、环境清理 2、实施阶段2.1、操作系统实施2.2、数据库部署实施 3、完成 1、准备阶段 1.1、部署规划 本次部署用于测试环境&#xff0c;单机模式&#xff0c;不需要主备&#xff1b;MySQL数据库版本要MySQL5.7…

小程序学习笔记:实现上拉触底加载随机颜色案例全解析

在前端开发中&#xff0c;上拉触底加载数据是一个常见的交互需求。今天&#xff0c;我们就来详细探讨如何实现一个上拉触底加载随机颜色的案例&#xff0c;帮助大家更好地理解相关技术的应用。 案例效果展示 在这个案例里&#xff0c;我们最终要实现的效果是这样的&#xff1…

Java+GcExcel,生成自定义工作表

引言 在当今数字化办公和数据处理的时代&#xff0c;电子表格的应用无处不在。对于 Java 开发人员来说&#xff0c;如何高效地创建、操作和处理兼容 Microsoft Excel 的电子表格是一个常见的需求。GcExcel Java 作为葡萄城表格解决方案中的后端表格组件&#xff0c;为 Java 开…

跨平台C++软件开发之基本数据类型介绍

跨平台C软件开发过程中&#xff0c;原生数据类型的字节宽度差异是一个常见且关键的问题&#xff0c;不同操作系统、编译器、硬件架构可能会为相同的数据类型分配不同的字节数&#xff0c;这可能导致代码在移植过程中出现未定义的行为或兼容性问题。本文简要介绍C原生数据类型字…

Java编程中的单例模式

在Java中实现单例模式有几种方式&#xff0c;但最常见的是懒汉式和饿汉式。我们先来看一个简单的懒汉式实现&#xff1a; public class Singleton {private static Singleton instance;private Singleton() {} // 构造方法私有化&#xff0c;防止外部实例化public static Sin…

原生微信小程序网络请求与上传接口封装实战指南

本文基于微信小程序原生 API&#xff0c;封装 request 和 uploadFile 接口&#xff0c;最终实现统一请求管理、请求拦截、错误处理等能力。 &#x1f4e6; 一、为什么要封装网络请求&#xff1f; 微信小程序提供了 wx.request 和 wx.uploadFile 原生 API&#xff0c;但直接使用…

软件测试基础知识详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、软件测试定义 软件测试是指在规定的条件下对程序进行操作&#xff0c;以发现程序错误&#xff0c;衡量软件质量&#xff0c;并对其是否能满足设计要求进行…

Spring Boot 文件上传大小配置错误解决方案

问题描述 在Spring Boot应用中出现以下错误&#xff1a; Failed to bind properties under spring.servlet.multipart.max-file-size’ to org.springframework.util.unit.Datasize Property:spring.servlet.multipart.max-file-sizeValue: 10Mb Origin: URL [file:./applicat…

Matplotlib绘制矩阵图,plt.matshow/imshow 与 ax.pcolor(pcolormesh)方法的使用

文章目录 plt.matshow离散colorbar连续colorbar ax.pcolor简单应用综合应用 import matplotlib.pyplot as plt import numpy as np from matplotlib.colors import ListedColormap#data np.random.seed(42) data np.random.rand(4, 4)plt.matshow 可以把下面的matshow换成ims…

关于 ARM64 汇编:调用流程与栈帧结构解析

一、ARM64 函数调用分析&#xff08;汇编级&#xff09; 寄存器规则&#xff08;AArch64 ABI&#xff09; 用途寄存器参数传递x0 ~ x7返回值x0&#xff08;最多两个&#xff1a;x0、x1&#xff09;栈指针sp链接寄存器x30&#xff08;lr&#xff09;帧指针x29&#xff08;fp&a…

Kafka vs RabbitMQ vs Redis:消息中间件全面对比与选型指南

Kafka vs RabbitMQ vs Redis&#xff1a;消息中间件全面对比与选型指南 一、各中间件消息流转全过程Kafka 消息流转全过程&#xff08;含机制详解&#xff09;1. 核心组件2. 流程详解 RabbitMQ 消息流转全过程&#xff08;含机制详解&#xff09;1. 核心组件2. 流程详解 Redis …

【代码级指南】从Zero-shot到Chain-of-Thought:Prompt工程全栈技术解析​

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。 从理论到实践&#xff0c;掌握Zero-shot/Few-shot Prompt设计精髓。 一、Prompt Engineering 核心概念图解 Prompt Engineering 三大支柱 二、Prompt 设计基础框架 1. Prompt 核心四要素 prompt_template "&q…

sizeof()函数无法计算形参指针指向的字符串大小

给定的代码中&#xff0c;func() 函数打印的 name_len 是 指针的大小&#xff0c;而不是字符串的长度。具体原因如下&#xff1a; 代码分析 #include <stdio.h> #include <string.h>void func(char *name) {printf("name_len:%d", sizeof(name)); // 打…

Python打卡:Day37

知识点回顾&#xff1a; 过拟合的判断&#xff1a;测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint&#xff0c;还包含训练状态 早停策略 浙大疏锦行

Android 9.0(API 28)后字重设置

在 Android 应用中设置字体字重&#xff08;Font Weight&#xff09;可以通过多种方式实现&#xff0c;下面详细介绍各种方法及其适用场景。 1. 使用 XML 属性设置字重 1.1 基本字重设置&#xff08;API 1&#xff09; <TextViewandroid:layout_width"wrap_content&…

WebRTC(十):RTP和SRTP

RTP&#xff08;Real-time Transport Protocol&#xff09; 作用 RTP 用于传输实时媒体流&#xff08;如音频、视频&#xff09;&#xff0c;它不提供可靠传输&#xff0c;而是关注低延迟、高实时性。 报文结构 整体结构 RTP 报文由以下部分组成&#xff1a; RTP Header …

微服务架构下面临的安全、合规审计挑战

微服务架构在带来敏捷性、可扩展性等优势的同时&#xff0c;也给安全和合规审计带来了巨大的挑战。这些挑战主要源于微服务的 分布式特性、动态性以及数量庞大 等特点。 以下是微服务架构下安全和合规审计面临的具体挑战 一、安全审计挑战 1. 攻击面扩大和复杂性增加 服务数…