趣买单数据库设计

admins表存储的是后台管理员的账户信息,用来登入admin.nmgpay.cn/admin
level 并没有使用
uname 为登入的用户名
password_pub 为密码,明文,并没有加密
其余字段如非必要,可以空置不必实现

 create_table "admins",  do |t|
    t.string   "level",               limit: 255
    t.string   "uname",               limit: 255
    t.datetime "remember_created_at"
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.datetime "created_at",    null: false
    t.datetime "updated_at",   null: false
    t.integer  "sign_in_count",       limit: 4,   default: 0, null: false
    t.string   "current_sign_in_ip",  limit: 255
    t.string   "last_sign_in_ip",     limit: 255
    t.string   "password_pub",        limit: 255
end

agents表存储的代理商信息,和user 一对多关联,一个user可以拥有多个agents, 用agents 里面的 user_id 关联users表

  create_table "agents",  do |t|
    #  商户名称
    t.string   "agent_name",         limit: 255
    #  渠道号码,现在并没有使用,可为空
    t.string   "channel_code",       limit: 255
    #  商户手机号码
    t.string   "mobile",             limit: 255
    # 银行卡号
    t.string   "bank_card",          limit: 255
    # 现在没有使用,微信使用的是user的 uid 存储openid
    t.string   "openid",             limit: 255
    # 身份证号码
    t.string   "id_code",            limit: 255
    # 状态,有初始,普通用户,认证中,认证用户状态
    t.string   "status",             limit: 255
    # 法人姓名
    t.string   "owner_name",         limit: 255
    # 身份证照片
    t.string   "id_photo",           limit: 255
    # 法人照片
    t.string   "owner_photo",        limit: 255
    # 法人银行账号姓名
    t.string   "owner_account_name", limit: 255
    # 所属区,没有使用
    t.string   "district",           limit: 255
    # 所属行业
    t.string   "business",           limit: 255
    # 实体名称
    t.string   "business_name",      limit: 255
    # 实体所在地区
    t.string   "business_district",  limit: 255
    # 实体所在地址
    t.string   "business_addr",      limit: 255
    # 实体照片
    t.string   "business_photo",     limit: 255
    # 公司名称
    t.string   "company_name",       limit: 255
    # 公司认证照片
    t.string   "company_cert_photo", limit: 255
    # T0交易默认费率 
    t.decimal  "tzero_rate",  precision: 10, scale: 2, default: 5.0
    # T0交易每日限额
    t.decimal  "tzero_quant_each",  precision: 10,    default: 30000
    # T0交易每月限额
    t.decimal  "tzero_quant_month",  precision: 10,  default: 1000000
   # T1交易默认费率
    t.decimal  "tone_rate", precision: 10, scale: 2, default: 3.0
    # T1交易每日限额
    t.decimal  "tone_quant_each", precision: 10,  default: 1000
     # T0交易每月限额
    t.decimal  "tone_quant_month", precision: 10, default:1000000
    # 银行支行联行号
    t.string   "bank_code",          limit: 255
    # 银行卡正面照片
    t.string   "bank_card_photo",    limit: 255
    # 身份证背面照片
    t.string   "id_photo_back",      limit: 255
    # 代理商关联的微信用户的id
    t.string   "user_id",            limit: 255
    # 代理商可以拥有的收银点的上限
    t.integer  "shop_limit",         limit: 4,      default: 1
    # 认证状态, 默认为“初始”
    t.string   "cert_status",        limit: 255,       default: "init"
    # 微信公众号appid(支付时使用)
    t.string   "app_id",             limit: 255
    微信公众号秘钥(支付时使用)
    t.string   "app_secret",         limit: 255
    t.string   "app_token",          limit: 255
    # 来源渠道,目前没有使用
    t.string   "channel",            limit: 255
    # 钱方账户的 appcode
    t.string   "appcode_qpay",       limit: 255
    # 钱方账户的 秘钥
    t.string   "appsecret_qpay",     limit: 255
    # 中信威富通账户的 appcode
    t.string   "appcode_citic",      limit: 255
    # 中信威富通账户的 appcode
    t.string   "appsecret_citic",    limit: 255
    # 商户所属代理商的id
    t.integer  "dealer_id",          limit: 4
    # 代理商开户银行分行名称
    t.string   "bank_branch",        limit: 255
    #代理商所在的省
    t.string   "province",           limit: 255
    #代理商所在的城市
    t.string   "city",               limit: 255
    #代理商开户银行名称
    t.string   "bank_name",          limit: 255
    #代理商开户银行所在的省
    t.string   "bank_province",      limit: 255
    #代理商开户银行所在的市
    t.string   "bank_city",          limit: 255
    # 账户类型 0为对公, 1为对私
    t.string   "account_type",       limit: 255
    #代理商在银行的账户名
    t.string   "account_name",       limit: 255
    # t0交易每笔收取的手续费
    t.decimal  "tzero_fee",      precision: 10, scale: 2, default: 1.0
    # 开户银行预留手机号
    t.string   "bank_mobile",        limit: 255
    # 用户是否开设了威富通T1账户
    t.boolean  "vbill_account"
    # 代理商的 联付 账号
    t.string   "unite_mcht_no",      limit: 255
    #代理商的联付 秘钥
    t.string   "unite_mcht_key",     limit: 255
    t.datetime "created_at",     null: false
    t.datetime "updated_at",    null: false
  end

banks表存储的是银行支行名称, 省市和支行联行号的对应关系,以备开户时查询。

    create_table "banks", force: :cascade do |t|
       # 银行所在省
       t.string   "province",       limit: 255
       # 银行所在城市
       t.string   "city",           limit: 255
       # 银行所在区
       t.string   "district",       limit: 255
       # 银行总行名称
       t.string   "bank_name",      limit: 255
       # 分行名称
       t.string   "branch_name",    limit: 255
       # 银行总行代码
       t.string   "bank_code",      limit: 255
       # 银行分行联行号
       t.string   "branch_code",    limit: 255
       t.datetime "created_at",                 null: false
       t.datetime "updated_at",                 null: false
       # 银行分行名称(前端显示需要截断版)
       t.string    "branch_display", limit: 255
    end

cards表存储的是印刷的二维码牌 和 实际收银点的对应关系,因为二维码牌已经下放,请按照原有的网址路由重新实现。

  create_table "cards", force: :cascade do |t|
    #一个16位的随机字符串, 用来作为外放的二维码的唯一标识
    t.string   "secret_no",  limit: 255
    #一个可读的数字字符串, 用来作为人眼可读的编码。
    t.string   "display_no", limit: 255
    #二维码被绑定的代理商id
    t.integer  "agent_id",   limit: 4
    #二维码被绑定的代理商名称
    t.string   "agent_name", limit: 255
    #二维码被使用状态,默认为 'init'
    t.string   "status",     limit: 255
    #二维码被绑定时间
    t.datetime "bind_time"
    t.datetime "created_at",             null: false
    t.datetime "updated_at",             null: false
    # 在随行付开户时随行付返回的商户编号
    t.string   "mno",        limit: 255
  end

Cashers 表存储了收银员信息,收银员从属于收银点(店铺),一个收银点可以有个多个收银员

 create_table "cashers"  do |t|
   #收银员姓名, 为人名
   t.string   "casher_name", limit: 255
   # 收银员关联的收银点
   t.integer  "shop_id",     limit: 4
   # 收银员手机号
   t.string   "mobile",      limit: 255
   t.datetime "login_time"
   t.datetime "created_at",    null: false
   t.datetime "updated_at",   null: false
   # 收银员绑定微信openid, 有单独的登入逻辑
   t.string   "openid",      limit: 255
   # 收银员是否在岗,如果在岗,其所在岗的收银点的收银通知  将通过模板消息发送给该收银员。 
   t.boolean  "onduty"
end

Certs表存储的是认证请求信息, 逻辑请参考admin中的请求和前端的认证用户逻辑。

  create_table "certs", do |t|
    t.integer  "agent_id",     limit: 4
    #请求的类型,普通用户还是认证用户
    t.string   "cert_type",    limit: 255
    # 通过时间
    t.datetime "approve_time"
    # 请求时间
    t.datetime "request_time"
    t.datetime "created_at",               null: false
    t.datetime "updated_at",               null: false
    # 请求是否被通过
    t.boolean  "certified"
    #拒绝理由
    t.string   "reject_desc",  limit: 255
  end

Cities表存储的是城市码表

  create_table "cities", force: :cascade do |t|
    # 城市名称
    t.string   "city_name",    limit: 255
    # 省的名称
    t.string   "provice_name", limit: 255
    # 省市编码
    t.string   "code",         limit: 255
    # 是否为省
    t.boolean  "is_province"
    t.datetime "created_at",               null: false
    t.datetime "updated_at",               null: false
  end

codes表存储的是印刷的二维码牌 和 代理商的对应关系,因为二维码牌已经下放,请按照原有的网址路由重新实现。

  create_table "codes", force: :cascade do |t|
    t.string   "sys_code",     limit: 255
    t.string   "display_code", limit: 255
    t.string   "dealer_name",  limit: 255
    t.integer  "dealer",       limit: 4
    t.integer  "dealer_lv2",   limit: 4
    t.integer  "dealer_lv3",   limit: 4
    t.integer  "shop",         limit: 4
    t.string   "status",       limit: 255
    t.datetime "created_at",               null: false
    t.datetime "updated_at",               null: false
    t.integer  "dealer_id",    limit: 4
    t.integer  "shop_id",      limit: 4
    t.string   "shop_name",    limit: 255
    t.datetime "bind_time"
    t.string   "bind_status",  limit: 255
  end

Dealers表 存储的是代理商系统的关联关系

  create_table "dealers", force: :cascade do |t|
    t.string   "dealer_name",            limit: 255
    t.string   "password_pub",           limit: 255
    t.string   "dealer_code",            limit: 255
    t.string   "provice",                limit: 255
    t.string   "city",                   limit: 255
    t.string   "contact_person",         limit: 255
    t.string   "contact_tel",            limit: 255
    t.string   "person_id",              limit: 255
    t.string   "address",                limit: 255
    t.string   "bank_name",              limit: 255
    t.string   "bank_card",              limit: 255
    t.integer  "parent_id",              limit: 4
    t.datetime "created_at",                                     null: false
    t.datetime "updated_at",                                     null: false
    t.integer  "current_index",          limit: 4,   default: 1
    t.string   "role",                   limit: 255
    t.string   "reset_password_token",   limit: 255
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          limit: 4,   default: 0, null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip",     limit: 255
    t.string   "last_sign_in_ip",        limit: 255
    t.string   "uname",                  limit: 255
    t.integer  "level",                  limit: 4,   default: 1
  end

payments表存储的是每一笔支付的信息

  create_table "payments", force: :cascade do |t|
    t.string   "openid",          limit: 255
    #金额,单位为元
    t.decimal  "amount",   precision: 10, scale: 2
    t.string   "status",          limit: 255
    t.datetime "reqtime"
    t.datetime "created_at",    null: false
    t.datetime "updated_at",   null: false
    # 我方系统订单号
    t.string   "orderid",         limit: 255
    # 商品描述
    t.string   "desc",            limit: 255
    t.integer  "shop_id",         limit: 4
    t.integer  "casher_id",       limit: 4
    t.string   "casher_name",     limit: 255
    t.string   "agent_name",      limit: 255
    t.string   "channel_name",    limit: 255
    t.string   "app_code",        limit: 255
    t.string   "shop_name",       limit: 255
    t.integer  "agent_id",        limit: 4
    t.string   "sec_no",          limit: 255
    t.string   "channel_orderid", limit: 255
    # 威富通订单号
    t.string   "swift_orderid",   limit: 255
    t.string   "pay_method",      limit: 255
    t.string   "pay_source",      limit: 255
    t.datetime "pay_time"
    # 支付状态
    t.string   "pay_status",      limit: 255
    t.string   "pay_result_info", limit: 255
    t.string   "good_name",       limit: 255
    t.boolean  "is_subscribe"
    t.string   "attach_info",     limit: 255
    t.string   "pay_bank",        limit: 255
    t.string   "user_mark",       limit: 255
    t.string   "pay_end_time",    limit: 255
    # 威富通商户号
    t.string   "wift_mch_id",     limit: 255
  end

codes 表存储的是收益记录

  create_table "profits", force: :cascade do |t|
    #代理商级别
    t.integer  "dealer_level", limit: 4
    #收益类型
    t.string   "profit_type",  limit: 255
    #区段,月 如 201607
    t.string   "period",       limit: 255
    t.string   "status",       limit: 255
    t.decimal  "rate",                     precision: 10, scale: 2
    t.decimal  "limit",                    precision: 10
    t.datetime "created_at",                                        null: false
    t.datetime "updated_at",                                        null: false
    t.string   "channel",      limit: 255
    t.integer  "dealer_id",    limit: 4
  end

shops存储了收银点信息,收银点属于商户,一个商户可以有多个收银点。

 create_table "shops" do |t|
    # 收银点名称
    t.string   "shop_name",       limit: 255
    # 商户id
    t.integer  "agent_id",        limit: 4
    # 收银点固定收银金额
    t.decimal  "fix_amount",         precision: 10, scale: 2
    # 支付方式,暂时无用
    t.string   "pay_method",      limit: 255
    # 收银点固定收银金额
    t.string   "fix_amount_desc", limit: 255
    # 支付码, 为绑定的二维码的secret_no
    t.string   "pay_code",        limit: 255
    t.datetime "created_at",                                           null: false
    t.datetime "updated_at",                                           null: false
    # 微信支付开启状态
    t.string   "wepay_status",    limit: 255
    # 支付宝支付开启状态
    t.string   "alipay_status",   limit: 255
    # 在岗的收银员的openid
    t.string   "onduty_casher",   limit: 255
    # 代理商id
    t.integer  "dealer_id",       limit: 4
  end

用户表存储的是用户的信息,一个用户可以拥有多个商户

  create_table "users", do |t|
    # 此处存储的是openid   
       t.string   "uid",   limit: 255
    # 微信昵称    
       t.string   "nickname",  limit: 255
       t.integer  "sex",  limit: 4
    # 微信头像地址      
       t.string   "avatar",    limit: 255
       t.datetime "created_at",     null: false
       t.datetime "updated_at",    null: false
       t.datetime "birthday"
       t.string   "city",                   limit: 255
       t.string   "province",               limit: 255
    # 一个用户可以拥有的商户的上限
       t.integer  "agent_limit",            limit: 4,                  default: 1
       t.string   "dealer_code",            limit: 255
    end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,090评论 6 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • 即便是周一,好忙的一天,也抽个空赏花散步,偶遇武大一角粉梅,美美的,心情好美。 좋은 날에 꽃과 만난다.
    hyohye阅读 216评论 0 0
  • 待填坑
    nziyouren阅读 280评论 0 0