## 技术栈
Appgallery connect
开发准备
这一节我们继续对我们已有的业务逻辑进行优化,在积分兑换完商品后我们回到积分展示页面发现积分的数量并没有减少,而是重新进入才会发生变化,上一节我们实现商城订单的确认揽收之后继续在待收货页面实现确认揽收按钮的业务逻辑。
功能分析
要实现积分的实时变化,我们需要在page页面的生命周期onpageshow中实现积分信息的获取,待收货页面我们要新增一个确认收货按钮并实现数据库逻辑的修改,数据修改完成后我们对数据列表进行刷新,记得修改orderstatus的状态,这会影响到我们对数据的筛选
代码实现
首先我们在积分页面实现每次页面展示都请求数据
@State user: User|null=null;
@State userInfo:UserInfo|null=null;
async onPageShow(): Promise<void> {
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 data: UserInfo[] = JSON.parse(json)
this.userInfo = data[0]
this.points = data[0].points
hilog.error(0x0000, 'testTag', `Failed to query data, code: ${data}`);
}
}
}
然后我们在商品订单待收货列表新增确认收货按钮
Text("确认收货")
.fontColor(Color.Black)
.fontSize(12)
.padding(5)
.borderRadius(10)
.backgroundColor(Color.Pink)
.onClick(async ()=>{
let orderPush=new order_list()
orderPush.id=item.id
orderPush.user_id=this.user!.user_id
orderPush.order_product_id=item.order_product_id
orderPush.order_code=item.order_code
orderPush.order_status=2
orderPush.order_remark=item.order_remark
orderPush.address=item.address
orderPush.nickname=item.nickname
orderPush.phone=item.phone
orderPush.order_create_time=item.order_create_time
orderPush.order_pay_time=item.order_pay_time
orderPush.order_delivery_time=item.order_delivery_time
let num = await databaseZone.upsert(orderPush);
if (num>0) {
this.onRefresh()
showToast("收货成功")
}
})
到这里我们就实现了对应的业务逻辑优化了