通過二進制位處理多種選擇的業務類型

項目情況

  • 對接了多個錢包項目,各個錢包直接各種業務收費標準不一樣
  • 比如 A錢包充值收錢少 B錢包提現收錢少,A錢包某幾天提現免費
  • 需要實時更改選中的錢包渠道,此時用二進制剛好

上代碼

建表

CREATE TABLE `wallet_channel_config`  (
  `id` bigint(64) NOT NULL AUTO_INCREMENT,
  `channel_code` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '渠道標識',
  `channel_name` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '渠道名稱',
  `weight` int(11) NULL DEFAULT NULL COMMENT '權重',
  `status` int(11) NULL DEFAULT NULL COMMENT '狀態',
  `handler` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '解析器',
  `tags` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '進制碼',
  `tag` int(11) NULL DEFAULT NULL COMMENT '值',
  `create_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  `update_at` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新時間',
  PRIMARY KEY (`id`) USING BTREE,
  INDEX `idx_channel_code`(`channel_code`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1000 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '錢包渠道配置表' ROW_FORMAT = Dynamic;


表結構及數據
在這裏插入圖片描述

TranType

public enum TranType {

    DEPOSIT("deposit",1,"充值"),

    WITHDRAW("withdraw",2,"提現"),

    VALID_ADD("withdraw",4,"校驗地址合法性"),
    
    TEST("withdraw",8,"測試添加");


    private String code;

    private Integer value;

    private String name;

    TransactionType(String code, Integer value,String name){
        this.code = code;
        this.value = value;
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public Integer getValue() {
        return value;
    }

    public String getName() {
        return name;
    }}

枚舉裏面設定了三種業務類型,數據庫通過 tags設定了四種類型

  • 查詢合法性
    在這裏插入圖片描述
  • 測試 選擇
    在這裏插入圖片描述
  • 提現
    在這裏插入圖片描述
    這樣通過進制選擇合適的配置 效率剛剛的

java

    if ((ping.getStatus() & status) == 0) {
            status += ping.getStatus();
        }
3 & 1 =13 & 2 =23 & 4 =0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章