Harmonyos5应用开发实战——业务功能工具函数封装(part2)

113 阅读1分钟
3. 订单处理

封装了订单相关的操作函数,如提交订单、取消订单、获取订单列表等。在提交订单时,会将购物车中的商品信息进行整理并发送给后端。

export function addDnOrderUtil(list: Array<CarGoodInfo>, params: AddDnOrderReq): Promise<number> {
  return new Promise((resolve, reject) => {
    let sz = list?.map((carGood: CarGoodInfo) => {
      return {
        id: carGood.goodId,
        img: carGood.logo,
        money: carGood.money,
        name: carGood.name,
        num: carGood.num,
        spec: carGood.spec,
        combination: carGood.combination,
      } as GoodReq
    }) as Array<GoodReq>
    let req = {
      tableId: AppStorage.get('tableId') as string,
      userId: AppStorage.get('userId') as string,
      storeId: AppStorage.get('storeId') as string,
      money: params.money,
      reductionMoney: params.reductionMoney,
      discount: '0',
      mjMoney: params.mjMoney,
      xyhMoney: params.xyhMoney,
      note: params.note,
      type: 2,
      formId: 1,
      formId2: 1,
      payType: 0,
      sz: JSON.stringify(sz),
      tableware: AppStorage.get('dinerNum') as number,
      yhqMoney: params.yhqMoney ?? '0',
      couponId: params.couponId,
      orderType: params.orderType,
      boxMoney: params.orderType === OrderTypeEnum.STORE_DINING ? 0 : params.boxMoney, // orderType为0堂食,无打包费;为4外带,有打包费
    } as AddDnOrderReq
    HttpRequestApi.addDnOrder(req).then((resp: number) => {
      if (resp) {
        console.info(`AddDnOrderUtil resp:${JSON.stringify(resp)}.`);
        getMyCarUtil()
        resolve(resp)
      } else {
        console.error(`AddDnOrderUtil error: ${JSON.stringify(resp)}.`);
        reject(resp)
      }
    })
      .catch((e: BusinessError) => {
        console.error(`AddDnOrderUtil error: ${JSON.stringify(e)}.`);
        reject(e)
      })
  })
}
4. 其他功能

还封装了一些实用工具函数,如复制字符串、拨打电话、支付操作等。这些函数利用了 HarmonyOS 提供的系统能力,为用户提供了更好的交互体验。

export function copyString(param: string) {
  let pasteData: pasteboard.PasteData =
    pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, param)
  let systemPasteboard: pasteboard.SystemPasteboard = pasteboard.getSystemPasteboard();
  systemPasteboard.setData(pasteData)
    .then(() => {
      console.info('succeeded in setting PasteData. ')
      promptAction.showToast({
        message: $r('app.string.copy_success'),
        duration: 2000,
      });
    })
    .catch((err: BusinessError) => {
      console.error(`faild to set PasteData, ${JSON.stringify(err)}`)
    })
}

通过这些工具函数的封装,在 HarmonyOS 5 应用开发中可以更加高效地实现各种业务功能,同时也方便了代码的管理和维护。