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

鸿蒙小林
• 阅读 5

技术栈 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=''
      }

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

点赞
收藏
评论区
推荐文章
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 个人中心页or静态头像选择(业务逻辑)(22)
技术栈Appgalleryconnect开发准备上一节我们实现了登录页面的业务逻辑,并且成功的实现了数据的查询,同时我们新增了用户首选项的工具类,现在主界面往登录页面跳转,登录成功后我们关闭登录页面,这时候我们就会回到个人中心页面,那么现在我们的业务逻辑是
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 确认订单页(业务逻辑)(30)
技术栈Appgalleryconnect开发准备上一节我们实现了确认订单页的页面绘制和价格计算优惠计算,订单列表展示等功能,这一节我们来实现确认订单页的整个业务逻辑。首先我们要实现的就是地址的选择,然后把我们计算的价格,商品列表等数据保存起来,然后我们开始
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 回收金查询页面(48)
技术栈Appgalleryconnect开发准备上一节我们实现了查看当前账号下的预收益,以及当下收益,并且展示了已完成订单的列表,现在我们可以针对收益来做更多的内容了,在之前的开发中我们在个人中心页面实现了一个静态的金额展示,后续我们将会在这里展示当前账号
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 回收金提现(53)
技术栈Appgalleryconnect开发准备上一节我们实现了银行卡的绑定跟回显,这一节我们要真正的实现银行卡提现的功能了,在这之前我们还需要对提现页的业务逻辑进行更进一步的优化,同时为了方便我们去进行数据间的交互,我们在个人信息模块新增了金额和积分的字
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 我的积分页(63)
技术栈Appgalleryconnect开发准备上一节我们实现了个人中心页面的业务逻辑优化,成功的在用户登陆退出状态下展示对应的组件内容,这一节我们来实现app中另外一个比较重要的模块积分模块。功能分析因为我们的回收订单是跟回收金积分是绑定的,我们在完成回
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 兑换订单列表框架(75)
技术栈Appgalleryconnect开发准备上一节我们针对订单兑换的业务逻辑进行了完善,成功的在兑换物品之后修改了用户信息的修改,新增了积分消费的记录。这一节我们实现订单创建之后进入的列表展示页框架。功能分析兑换商品的订单列表框架我们选择使用tabs,
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 兑换商品取消订单&取消列表展示(77)
技术栈Appgalleryconnect开发准备上一节我们实现了兑换订单待发货列表的展示逻辑,成功的在列表中展示出来,我们在订单条目中新增了两个按钮,确认揽收与取消订单,这一节我们要实现的功能是订单的取消,以及订单取消后取消列表的展示功能分析要实现订单取消
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 逻辑优化第一弹(81)
技术栈Appgalleryconnect开发准备随着上一节我们兑换商品订单相关逻辑的实现,我们的app功能已经更加的完善了,接下来我们开始对整个app缺失的小功能以及对已有的功能bug进行优化和逻辑的新增,这一节我们新增的功能是,商城订单的揽收功能,兑换订
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 逻辑优化第二弹(82)
技术栈Appgalleryconnect开发准备这一节我们继续对我们已有的业务逻辑进行优化,在积分兑换完商品后我们回到积分展示页面发现积分的数量并没有减少,而是重新进入才会发生变化,上一节我们实现商城订单的确认揽收之后继续在待收货页面实现确认揽收按钮的业务
鸿蒙小林 鸿蒙小林
11小时前
《仿盒马》app开发技术分享-- 逻辑优化第三弹(83)
技术栈Appgalleryconnect开发准备现在我们的app功能已经趋近完善,bug和缺失的细节也越来越少了,我们继续对app进行优化,首先是我们的积分页面,我们只实现了全部的积分展示内容,对收入和支出的积分明细并没有进行展示,这里我们要实现一下,然后