《仿盒马》app开发技术分享-- 个人中心页优化(62)

简介: 上一节我们实现了订单逻辑的优化,现在我们的app功能更加的完善了,并且随着我们的迭代逻辑疏漏越来越少,现在我们继续进行优化,在之前的业务逻辑中我们的个人中心页面展示了用户的余额以及积分商城入口,这里我们要展示余额准确的值,积分商城的入口我们修改为积分相关的功能入口。并且展示当前账号的积分余额

技术栈
Appgallery connect

开发准备
上一节我们实现了订单逻辑的优化,现在我们的app功能更加的完善了,并且随着我们的迭代逻辑疏漏越来越少,现在我们继续进行优化,在之前的业务逻辑中我们的个人中心页面展示了用户的余额以及积分商城入口,这里我们要展示余额准确的值,积分商城的入口我们修改为积分相关的功能入口。并且展示当前账号的积分余额

功能分析
因为我们的tabs切换之后会触发组件内的刷新请求逻辑,所以我们需要根据当前的用户id查询出userinfo的信息,然后展示到页面上,同时当用户退出登陆,我们需要给积分和余额一个默认状态。

代码实现
首先我们在个人中心页面查询出对应的userinfo信息

  async onRefresh(): Promise<void> {
   
    if (this.currentIndexCheck==this.currentIndex) {
   
      const value = await StorageUtils.getAll('user');
      if (value != "") {
   
        this.user=JSON.parse(value)
        if (this.user!=null) {
   
          let databaseZone = cloudDatabase.zone('default');
          let condition = new cloudDatabase.DatabaseQuery(user_info);
          condition.equalTo("user_id",this.user?.user_id)
          let listData = await databaseZone.query(condition);
          let json = JSON.stringify(listData)
          let data2:UserInfo[]= JSON.parse(json)
          this.userInfo=data2[0]
          hilog.error(0x0000, 'testTag', `Failed to query data, code: ${
   data2}`);
        }
      }else {
   
        this.userInfo=null
        this.user=null
      }
      this.flag=true
    }
  }

查出信息之后我们定义两个变量去接收余额跟积分的值,给他们一个默认空值

 @State money:string=''
  @State score:string=''

给定义的变量赋值,接收对应的参数值

  let databaseZone = cloudDatabase.zone('default');
          let condition = new cloudDatabase.DatabaseQuery(user_info);
          condition.equalTo("user_id",this.user?.user_id)
          let listData = await databaseZone.query(condition);
          let json = JSON.stringify(listData)
          let data2:UserInfo[]= JSON.parse(json)
          this.userInfo=data2[0]
          hilog.error(0x0000, 'testTag', `Failed to query data, code: ${
   data2}`);
          this.money=String(data2[0].money)
          this.score=String(data2[0].points)

把接收到的数据填充到组件上

  Row(){
   
              Row(){
   
                Image($r('app.media.balance'))
                  .margin({
   left:8})
                  .height(34)
                  .width(34)
                  .objectFit(ImageFit.Contain)
                  .interpolation(ImageInterpolation.High)
                Column(){
   
                  Text(this.money!=''?"¥"+this.money:"--")
                    .fontSize(14)
                    .fontColor($r('app.color.color_333'))
                  Row(){
   
                    Text("余额")
                      .fontSize(13)
                      .fontColor($r('app.color.color_999'))

                    Image($r('app.media.back_right_recycle'))
                      .margin({
   left:6})
                      .height(14)
                      .width(14)
                      .objectFit(ImageFit.Contain)
                      .interpolation(ImageInterpolation.High)
                  }
                }
                .alignItems(HorizontalAlign.Start)
                .margin({
   left:13})
                .onClick(()=>{
   
                  router.pushUrl({url:'pages/recycle/money/RecycleMoneyPage'})
                })
              }
              .width('40%')
              Divider()
                .vertical(true)
                .height('100%').margin({
   top:5,bottom:5})
                .margin({
   left:20})
              Row(){
   
                Image($r('app.media.points'))
                  .height(34)
                  .width(34)
                  .objectFit(ImageFit.Contain)
                  .interpolation(ImageInterpolation.High)
                Column(){
   
                  Text(this.score!=''?"$"+this.score:"--")
                    .fontSize(14)
                    .fontColor($r('app.color.color_333'))
                  Row(){
   
                    Text("积分")
                      .fontSize(13)
                      .fontColor($r('app.color.color_reds'))
                    Image($r('app.media.back_right_recycle'))
                      .margin({
   left:6})
                      .height(14)
                      .width(14)
                      .objectFit(ImageFit.Contain)
                      .interpolation(ImageInterpolation.High)
                  }

                }
                .margin({
   left:8})
                .alignItems(HorizontalAlign.Start)
              }
              .margin({
   left:8})
              .alignItems(VerticalAlign.Center)
              .width('40%')

            }
            .justifyContent(FlexAlign.Start)
            .height(80)
            .width('100%')
            .padding(8)
            .margin({
   top:40})
            .backgroundColor(Color.White)
            .borderRadius(8)

现在我们已经完成了数据的填充,但是当我们用户在个人中心页面进入退出页面点击了退出,我们的数据并不会去修改,所以我们还需要在接收退出状态的emitter出把变量置空

 if (value != "") {
   
        this.user = JSON.parse(value)
        if (this.user != null) {
   
          let databaseZone = cloudDatabase.zone('default');
          let condition = new cloudDatabase.DatabaseQuery(user_info);
          condition.equalTo("user_id", this.user?.user_id)
          let listData = await databaseZone.query(condition);
          let json = JSON.stringify(listData)
          let data2: UserInfo[] = JSON.parse(json)
          this.userInfo = data2[0]
          hilog.error(0x0000, 'testTag', `Failed to query data, code: ${
   data2}`);
        }
      }else {
   
        this.userInfo=null
        this.user=null
        this.money=''
        this.score=''
      }

这样我们的个人中心页面逻辑也就变得完善了

相关文章
|
2月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
541 139
|
JSON Dart 安全
Flutter App混淆加固、保护与优化原理
Flutter App混淆加固、保护与优化原理
264 0
|
架构师 Java
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
278 0
|
2月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
271 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
3月前
|
存储 前端开发 安全
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
实现“永久登录”:针对蜻蜓Q系统的用户体验优化方案(前端uni-app+后端Laravel详解)-优雅草卓伊凡
214 5
|
6月前
|
存储
《仿盒马》app开发技术分享--未完成订单列表展示逻辑优化(61)
上一节我们实现订单与优惠券的联合提交时,我去到订单列表页面查看生成的订单信息,发现现在的订单从信息展示到价格计算全都是有问题的。所以紧急的把对应的问题修改一下。
248 70
|
6月前
|
数据库
《仿盒马》app开发技术分享-- 优惠券逻辑优化(58)
我们已经实现了优惠券的领取和展示,现在已经趋近于一个完整的电商应用了,但是这时候问题又来了,我们领取完优惠券之后,我们的新用户优惠券模块依然存在,他并没有消失,既然我们是从云数据库中查询的数据,那么我们需要找到一个字段跟他对应起来,来实现新用户领券后关闭这个模块的展示,同时我们在未登录的时候他也要保持隐藏,登录后能实现优惠券的领取。然后在结算的时候得出有几张符合的券能用
119 9
|
6月前
《仿盒马》app开发技术分享-- 逻辑优化第三弹(83)
现在我们的app功能已经趋近完善,bug和缺失的细节也越来越少了,我们继续对app进行优化,首先是我们的积分页面,我们只实现了全部的积分展示内容,对收入和支出的积分明细并没有进行展示,这里我们要实现一下,然后就是我们的优惠券,我们已过期的优惠券并没有修改状态为已过期。
122 0
|
6月前
|
存储 安全
《仿盒马》app开发技术分享-- 购物车逻辑优化(39)
我们的app主要购物功能已经开发的相对来说比较完善了,接下来就针对各个功能的逻辑性进行迭代和修改,让我们的程序更加的健壮,减少一些逻辑上的bug
98 0
|
12月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
874 4

热门文章

最新文章