首页 > 其他分享 >兑换码的设计

兑换码的设计

时间:2023-08-22 15:44:59浏览次数:31  
标签:comment kind 导出 cdk 兑换 设计 null

先上表结构图, 我这里用的MySQL数据库, 表结构如下

对应建表SQL:

create table cdk(
    id int(11) unsigned not null primary key auto_increment,
    cdk varchar(16) not null comment '兑换码',
    cdk_kind tinyint not null comment '兑换类型 1-会员卡, 2-优惠券, 3-优惠券包',
    cdk_kind_no varchar(32) not null comment '兑换类型编号',
    cdk_status tinyint not null default 1 comment '兑换码使用状态 1-未使用, 2-已使用',
    cdk_export_status tinyint not null default 1 comment '兑换码导出状态 1-未导出, 2-已导出',
    act_account_id int(11) comment '使用人',
    act_time datetime comment '使用时间',
    gen_account_id int(11) comment '生成人',
    gen_time datetime comment '生成时间',
    export_account_id int(11) comment '导出人',
    export_time datetime comment '导出时间',
    valid_time datetime comment '有效期开始时间',
    expire_time datetime comment '有效期失效时间',
    remark text comment '备注',
    create_time datetime not null default current_timestamp comment '创建时间',
    update_time datetime not null default current_timestamp on update CURRENT_TIMESTAMP comment '更新时间',
    unique key(cdk)
)engine=innodb comment '兑换码';

设计说明
1.兑换码与兑换商品类型:
一个表中可以维护所有可以通过兑换码兑换的商品的兑换码, 使用cdk_kind区分不同的商品类型, 使用cdk_kind_no区分某个商品下更具体的商品. 比如你平台共有两种会员卡, 编号分别为"VIP"和"SVIP", 则cdk_kind=1, cdk_kind_no分别为"VIP"和"SVIP".

cdk字段为兑换码, 这里是此字段单独作为唯一索引. 另有方案可以用cdk字段与cdk_kind一起做联合唯一索引.
cdk字段单独做唯一索引, 则只需要设计一个兑换页面, 换到什么就是什么, 当然也可以多个兑换入口页面, 调同一个接口就行;
cdk字段与cdk_kind做联合唯一索引时, 意味着同一个兑换码在不同的地方可以兑换不同的商品, 需要多个入口或者一个入口时需要选择兑换的商品类型.

2.兑换码兑换之后, 对应记录由1-未使用状态变为2-已使用状态.

3.导出状态, 即为兑换码是否出库的状态. 刚生成出来时为1-未导出状态, 可以通过从管理后台下载到excel等方式出库, 出库后及改为2-已导出状态, 标识这个兑换码已经有人预定了, 不能重复给另一个人.
同时, 管理后台最好设计兑换码不可见, 即不在页面展示兑换码的号码, 避免能见到的人把未导出状态的码直接给出去使用, 也可以避免有人将别人已导出但未使用的码提前使用.

4.兑换码可以设计有效期开始和结束时间, 时间范围内才可以兑换. 可以用在某些特定的场景下. 比如某个会员卡需要一周之后才上线, 但可以提前将其兑换码上线. 指定一周之后才生效.

5.为避免多个人同时导出兑换码的冲突, 建议遵循谁生成谁导出的原则, 即设计中的gen_account_id-生成人字段与export_account_id-导出人字段, 与当前登录的的账号id一致.
假如有用户a和用户b两个人在几乎同时操作导出, 用户a需要100个, 用户b需要10个, 在用户a生成了100个的时候, 用户b发现库中有足够的未导出状态的码, 则可能自己不会生成, 而是把用户a生成的100个中的10个抢先导出了. 而如果遵循"谁生成谁导出"则可以避免此类问题.

标签:comment,kind,导出,cdk,兑换,设计,null
From: https://www.cnblogs.com/forest-xs/p/17648663.html

相关文章

  • API的幂等性设计
    一、背景    平台部分API需要保证接口的幂等性,防止业务频繁刷API导致资源浪费,或者不小心重发消息影响业务。二、解释    接口的幂等,指一个操作重复执行N次得到的结果与执行一次是相等的。比如在HTTP请求中,Get请求,得到的结果是相同的。但POST和PATCH的接口,每次请......
  • QuarkXPress 2023(版面编辑设计) 19.2(55820)中文版
    QuarkXPress2023是Quark公司推出的一款专业的排版和设计软件。它是QuarkXPress系列的最新版本,引入了许多令人兴奋的功能和改进。点击获取QuarkXPress2023 下面将详细介绍QuarkXPress2023的主要特点和优势。多通道混合:QuarkXPress2023具备了独特的多通道混合功能。用户......
  • 掌握CSS布局技巧,打造响应式网页设计
    1.引言在当今互联网时代,响应式网页设计已经成为了一种必备的技能。随着移动设备的普及和多样化,用户对于网页的访问方式也越来越多样化。因此,我们需要掌握CSS布局技巧,以便能够打造出适应不同设备和屏幕尺寸的响应式网页设计。2.CSS布局技巧2.1媒体查询媒体查询是CSS3中的一个......
  • 直播带货源码,Android studio设计app登录界面
    直播带货源码,Androidstudio设计app登录界面TextView:用于显示标题和“用户名"和"密码"的提示;标题设置   <TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="登录页面"    a......
  • 基于JAVA的二手手机回收系统-计算机毕业设计源码+LW文档
    摘要随着信息技术的发展,基于web模式的购物系统逐渐普及,网上购物是一种新型的商务模式,其工作流程和经营模式受到了欢迎。电子商务可以适应现代化快节奏的生活方式,满足各类人群足不出户的在线购物,利用商城使得买卖双方完成线上交易,提高了购买效率。但随着网购二手手机数量的增多,存......
  • 在线外语学习平台-计算机毕业设计源码+LW文档
    提要信息化的迅速发展,对人们的衣食住行产生了很大影响。越来越多的人习惯并依赖于通过信息技术和智能化的形式来处理日常各类事物。为了满足学生用户日常学习的需要,以及适应现代化课程教学管理的需求,决定开发在线外语学习平台。帮助学生在线学习,提高效率。在线外语学习平台的开发......
  • 基于JAVA+MySQL技术智能服装推荐系统的设计与实现-计算机毕业设计源码+LW文档
    1.开题依据1.1研究的目的意义在过去到现在,消费方式从物物交换到以通俗认知中的“货币”购买物品,再到如今的网上支付交易,实物物流运输到达我们的手上。购物方式从实体店的消费模式,转到了网上店铺的交易。相信很多人在现实生活中都有过实体店购物的消费的体验,在实体店消费需要安排......
  • 趣解设计原则之单一职责(论一个小老板的发家史)
    一、前言今天我们来聊一聊设计原则中的单一职责,还是按照惯例,先介绍一下含义,然后呢,我们再来讲一个小故事。**单一职责(SRP:SingleReposibilityPrinciple)**的定义:一个类或者模块只负责完成一个职责。二、小故事今天登场的主角,是一个叫阿明的小老板,他从小就经商,很有头脑。他经......
  • 设计原理图:FMC141-四路 250Msps 16bits AD FMC子卡
     一、产品概述:   本板卡基于 FMC 标准板卡,实现 4 路 16-bit/250Msps ADC 功能。遵循 VITA 57 标准,板卡可以直接与xilinx公司或者本公司 FPGA 载板连接使用。板卡 ADC 器件采用 ADI 公司 AD9467 芯片,用户可以通过 FMC 接口配置芯片工作状......
  • 学生公寓管理系统设计-计算机毕业设计源码+LW文档
    1.1研究背景教育是国家发展的基石,随着目前经济快速的发展,国家也更加重视教育事业,大力发展义务教育并提升高等教育。随着高校扩招的推进,高校宿舍的数量越来越多,宿舍信息和学生管理也变得越来越困难。在传统的宿舍管理中,高校往往通过大量的人力和物力进行管理,通过手工记录宿舍信息,统......