mcu_hi3321_watch/tjd/ui/app/alipay/TjdUiAppAlipayModel.cpp
2025-05-26 20:15:20 +08:00

233 lines
8.3 KiB
C++

#include "TjdUiAppAlipayModel.h"
#include "TjdUiAppAlipayPresenter.h"
#include "sql_setting.h"
#include "sys_config.h"
namespace TJD {
#define ENABLE_PRINT_INFO 1
#if ENABLE_PRINT_INFO
#define static_print_info(...) sys_ui_log_i(__VA_ARGS__) // 一般信息打印宏控制
#define static_print_warn(...) sys_ui_log_w(__VA_ARGS__) // 警告信息打印一般常开
#define static_print_error(...) sys_ui_log_e(__VA_ARGS__) // 错误信息打印一般常开
#define static_print_debug(...) sys_ui_log_d(__VA_ARGS__) // 调试信息打印一般常开
#else
#define static_print_info(...)
#define static_print_warn(...)
#define static_print_error(...)
#define static_print_debug(...)
#endif
#define ALIPAY_GET_BIND_STR_LENGTH 256
TjdUiAppAlipayModel::TjdUiAppAlipayModel() : alipayApi(alipay_svr_get_api()) {}
void AlipayMsgCallBack(uint32_t msgId, uint32_t actionRes)
{
if (msgId == ALIPAY_MSG_UPDATA_TRANS_LIST) {
TjdUiAppAlipayPresenter::AlipayMsgTransListCallBackProcFunc(actionRes);
} else if (msgId == ALIPAY_MSG_UPDATA_SPECIAL_CARD) {
TjdUiAppAlipayPresenter::AlipayMsgTransSpeCardCallBackProcFunc(actionRes);
}
return;
}
uint32_t TjdUiAppAlipayModel::AlipayDriverInit(void)
{
uint32_t ret = uapi_alipay_svr_init();
if (ret != 0) {
static_print_error("AlipayDriverInit uapi_alipay_svr_init failure.");
return ret;
}
return 0;
}
bool TjdUiAppAlipayModel::AlipayInitModel(void)
{
transCode_ = (uint8_t *)malloc(ALIPAY_TRANS_CODE_MAX_LEN);
if (transCode_ == nullptr) {
static_print_info("AlipayModel::AlipayInitModel transCode_ alloc failure.");
return false;
}
uint32_t retCode = svr_alipay_init_trans_context();
if (retCode != 0) {
free(transCode_);
static_print_info("AlipayModel::AlipayInitModel svr_alipay_init_trans_context failure.");
return false;
}
svr_alipay_register_cb(AlipayMsgCallBack);
svr_alipay_create_task();
return true;
}
void TjdUiAppAlipayModel::AlipayEnterLpm(void) { alipayApi->enter_lpm(); }
void TjdUiAppAlipayModel::AlipayExitLpm(void) { alipayApi->exit_lpm(); }
void TjdUiAppAlipayModel::AlipayDeinitModel(void)
{
static_print_info("AlipayModel::AlipayDeinitModel in.");
if (transCode_ != nullptr) {
free(transCode_);
transCode_ = nullptr;
}
svr_alipay_deinit_trans_context();
svr_alipay_destroy_task();
return;
}
int32_t TjdUiAppAlipayModel::AlipayGetBindCode(uint8_t *bindStr)
{
int32_t bindStrLen = ALIPAY_GET_BIND_STR_LENGTH;
return alipayApi->get_bind_str(bindStr, &bindStrLen);
}
void TjdUiAppAlipayModel::AlipayStartBind(void) { alipayApi->bind_start(); }
void TjdUiAppAlipayModel::AlipayBindFinish(void) { alipayApi->bind_finish(); }
void TjdUiAppAlipayModel::AlipayUnbind(void)
{
int32_t ret = alipayApi->remove_bind();
if (ret == 0) {
bindFlag_ = false;
};
}
bool TjdUiAppAlipayModel::AlipayGetBindState(void) { return alipayApi->get_bind_state(); }
int32_t TjdUiAppAlipayModel::AlipayGetBindStatus(int32_t &bindStatus)
{
return alipayApi->get_bind_status(&bindStatus);
}
void TjdUiAppAlipayModel::AlipaySetBindFlag(bool bindFlag) { bindFlag_ = bindFlag; }
int32_t TjdUiAppAlipayModel::AlipayTransGetCardNum(void)
{
mc_alipay_trans_context_t *alipayTransContext = svr_alipay_get_trans_context();
return alipayTransContext->card_len;
}
uint32_t TjdUiAppAlipayModel::AlipayGetCardNum(void) { return cardNum_; }
void TjdUiAppAlipayModel::AlipaySetCardSum(uint32_t cardSum) { cardSum_ = cardSum; }
uint32_t TjdUiAppAlipayModel::AlipayGetCardSum(void) { return cardSum_; }
void TjdUiAppAlipayModel::AlipaySetSwitchIndex(uint32_t switchIndex) { switchIndex_ = switchIndex; }
mc_alipay_trans_card_info_t *TjdUiAppAlipayModel::AlipayTransGetCardList(void)
{
mc_alipay_trans_context_t *alipayTransContext = svr_alipay_get_trans_context();
return alipayTransContext->card_info;
}
int32_t TjdUiAppAlipayModel::AlipayGetTransCode(uint32_t index)
{
cardInfo_ = AlipayTransGetCardList();
memset_s(transCode_, ALIPAY_TRANS_CODE_MAX_LEN, 0, ALIPAY_TRANS_CODE_MAX_LEN);
memset_s(cardTitle_, ALIPAY_TRANS_CARD_MEMBER_LEN, 0, ALIPAY_TRANS_CARD_MEMBER_LEN);
transCodeLen_ = ALIPAY_TRANS_CODE_MAX_LEN;
int32_t ret = alipayApi->get_transcode(&cardInfo_[index], transCode_, &transCodeLen_);
if (ret == 0) {
memcpy_s(cardTitle_, ALIPAY_TRANS_CARD_MEMBER_LEN, cardInfo_[index].title, ALIPAY_TRANS_CARD_MEMBER_LEN);
}
return ret;
}
int32_t TjdUiAppAlipayModel::AlipayGetPayCode(uint8_t *payStr)
{
uint32_t payStrLen = 20;
return alipayApi->get_pay_str(payStr, &payStrLen);
}
int32_t TjdUiAppAlipayModel::AlipayGetOnlineTranslist()
{
cardInfo_ = AlipayTransGetCardList();
mc_alipay_trans_card_info_t *onLineList = nullptr;
onLineList =
(mc_alipay_trans_card_info_t *)malloc(sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH);
if (onLineList == nullptr) {
static_print_error("AlipayModel::AlipayGetOnlineTranslist alloc fail.");
return -1;
}
memset_s(onLineList, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH, 0,
sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH);
uint32_t onListSize = sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH;
uint32_t onLineNum = 0;
int32_t ret = alipayApi->get_online_translist(onLineList, &onListSize, &onLineNum);
static_print_debug("AlipayModel::AlipayGetOnlineTranslist ret:%u,num:%u.", ret, onLineNum);
if (ret == 0) {
memset_s(cardInfo_, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH, 0,
sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH);
memcpy_s(cardInfo_, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH, onLineList, onListSize);
cardSum_ = onLineNum;
}
free(onLineList);
onLineList = nullptr;
return ret;
}
int32_t TjdUiAppAlipayModel::AlipayUpdateTransCard(uint32_t index)
{
int32_t ret = alipayApi->update_trans_cardinfo(&cardInfo_[index]);
static_print_debug("AlipayModel::AlipayUpdateTransCard in:%u.", ret);
return ret;
}
int32_t TjdUiAppAlipayModel::AlipayCheckTransCard(uint32_t index)
{
mc_alipay_tans_card_status_t cardStatus = {};
int32_t ret = alipayApi->check_trans_cartstatus(&cardInfo_[index], &cardStatus);
static_print_debug("AlipayModel::AlipayCheckTransCard in:%u.", ret);
if (cardStatus.card_exits && cardStatus.remain_use_count >= ALIPAY_TRANS_CARD_MIN_VALID_NUM) {
return 0;
}
return -1;
}
int32_t TjdUiAppAlipayModel::AlipayGetLocalTranslist()
{
cardInfo_ = AlipayTransGetCardList();
memset_s(cardInfo_, sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH, 0,
sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH);
uint32_t localListSize = sizeof(mc_alipay_trans_card_info_t) * ALIPAY_TRANS_CARD_MAX_LENGTH;
return alipayApi->get_local_translist(cardInfo_, &localListSize, &cardSum_);
}
int32_t TjdUiAppAlipayModel::AlipayGetLastTranscode()
{
memset_s(transCode_, ALIPAY_TRANS_CODE_MAX_LEN, 0, ALIPAY_TRANS_CODE_MAX_LEN);
memset_s(cardTitle_, ALIPAY_TRANS_CARD_MEMBER_LEN, 0, ALIPAY_TRANS_CARD_MEMBER_LEN);
uint32_t len = ALIPAY_TRANS_CODE_MAX_LEN;
return alipayApi->get_last_transcode(cardTitle_, transCode_, &len);
}
uint8_t *TjdUiAppAlipayModel::AlipayGetTransCode(void) { return transCode_; }
uint32_t TjdUiAppAlipayModel::AlipayGetTransCodeLen(void) { return transCodeLen_; }
char *TjdUiAppAlipayModel::AlipayGetCardTitle(uint32_t index) { return cardInfo_[index].title; }
char *TjdUiAppAlipayModel::AlipayGetCardTitle(void) { return cardTitle_; }
bool TjdUiAppAlipayModel::IsChinese(void) { return sql_setting_get_language() == language_enum::LANGUAGE_CHINESE; }
int32_t TjdUiAppAlipayModel::AlipayGetNickName(uint8_t *nickName)
{
uint32_t nickNameLen = 128;
return alipayApi->get_nickname(nickName, &nickNameLen);
}
int32_t TjdUiAppAlipayModel::AlipayGetIdName(uint8_t *idStr)
{
uint32_t idStrLen = 128;
return alipayApi->get_logon_id(idStr, &idStrLen);
}
} // namespace TJD