《仿盒马》app开发技术分享-- 逻辑优化第三弹(83)

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

技术栈

Appgallery connect

开发准备

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

功能分析

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

代码实现

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

import {
    PointsInfo } from '../../../entity/PointsInfo'


@Component
export struct GetPoints {
   
  @Prop  pointsList:PointsInfo[]=[]
  @State flag:boolean=false

  aboutToAppear(): void {
   
    this.pointsList=filterPointsByType(this.pointsList)
    this.flag=true
  }

  @Builder
  recordList(){
   
    List({
    space: 10 }) {
   
      ForEach(this.pointsList, (item:PointsInfo) => {
   
        ListItem() {
   
          this.allItem(item)
        }

      })
    }
    .backgroundColor("#f7f7f7").padding({
    top: 10 })
    .sticky(StickyStyle.Header)
  }

  @Builder
  allItem(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=false

  aboutToAppear(): void {
   
    this.pointsList=filterPointsByType(this.pointsList)
    this.flag=true
  }

  @Builder
  recordList(){
   
    List({
    space: 10 }) {
   
      ForEach(this.pointsList, (item:PointsInfo) => {
   
        ListItem() {
   
          this.allItem(item)
        }

      })
    }
    .backgroundColor("#f7f7f7").padding({
    top: 10 })
    .sticky(StickyStyle.Header)
  }

  @Builder
  allItem(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
    );
  }

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

相关文章
|
JSON Dart 安全
Flutter App混淆加固、保护与优化原理
Flutter App混淆加固、保护与优化原理
238 0
|
架构师 Java
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
200 0
|
Web App开发 数据安全/隐私保护 iOS开发
app优化ios,iOS app上架流程问题集锦,ASO新手小白必看(上)
app优化ios,iOS app上架流程问题集锦,ASO新手小白必看(上)
|
3月前
|
存储
《仿盒马》app开发技术分享--未完成订单列表展示逻辑优化(61)
上一节我们实现订单与优惠券的联合提交时,我去到订单列表页面查看生成的订单信息,发现现在的订单从信息展示到价格计算全都是有问题的。所以紧急的把对应的问题修改一下。
183 70
|
3月前
|
数据库
《仿盒马》app开发技术分享-- 优惠券逻辑优化(58)
我们已经实现了优惠券的领取和展示,现在已经趋近于一个完整的电商应用了,但是这时候问题又来了,我们领取完优惠券之后,我们的新用户优惠券模块依然存在,他并没有消失,既然我们是从云数据库中查询的数据,那么我们需要找到一个字段跟他对应起来,来实现新用户领券后关闭这个模块的展示,同时我们在未登录的时候他也要保持隐藏,登录后能实现优惠券的领取。然后在结算的时候得出有几张符合的券能用
96 9
|
3月前
《仿盒马》app开发技术分享-- 个人中心页优化(62)
上一节我们实现了订单逻辑的优化,现在我们的app功能更加的完善了,并且随着我们的迭代逻辑疏漏越来越少,现在我们继续进行优化,在之前的业务逻辑中我们的个人中心页面展示了用户的余额以及积分商城入口,这里我们要展示余额准确的值,积分商城的入口我们修改为积分相关的功能入口。并且展示当前账号的积分余额
78 0
|
3月前
|
存储 安全
《仿盒马》app开发技术分享-- 购物车逻辑优化(39)
我们的app主要购物功能已经开发的相对来说比较完善了,接下来就针对各个功能的逻辑性进行迭代和修改,让我们的程序更加的健壮,减少一些逻辑上的bug
74 0
|
9月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
654 5
|
10月前
|
传感器 iOS开发 UED
探索iOS生态系统:从App Store优化到用户体验提升
本文旨在深入探讨iOS生态系统的多个方面,特别是如何通过App Store优化(ASO)和改进用户体验来提升应用的市场表现。不同于常规摘要仅概述文章内容的方式,我们将直接进入主题,首先介绍ASO的重要性及其对开发者的意义;接着分析当前iOS平台上用户行为的变化趋势以及这些变化如何影响应用程序的设计思路;最后提出几点实用建议帮助开发者更好地适应市场环境,增强自身竞争力。
|
10月前
|
数据采集 网络协议 算法
移动端弱网优化专题(十四):携程APP移动网络优化实践(弱网识别篇)
本文从方案设计、代码开发到技术落地,详尽的分享了携程在移动端弱网识别方面的实践经验,如果你也有类似需求,这篇文章会是一个不错的实操指南。
256 1

热门文章

最新文章