zoukankan      html  css  js  c++  java
  • 那天面试有这样的一道题,我今天感觉是应该再补充一下

    已经给BOSS发送了过去

    问题:设计一个用户登陆的模块,应该包含哪些表,需要记录每次用户登陆的时间,以及需要将100日内没登陆的用户(精确到0点)进行冷冻账号处理.

    当时没有太接触过相关类美团类app的用户表设计,所以依旧按照了传统管理程序的用户表设计,
    现在稍微追加一下,即:

    sys_users: 用户表,用户登陆主要账户密码
    user_id(bigint 20) PK
    user_name(varchar 255)
    user_password(varchar 300)
    user_salt(varchar 255)
    create_time(date)
    update_time(date)
    delete_flag(tinyint)
    
    
    sys_users_info: 用户信息表,通过FK关联sys_users
    user_info_id(bigint 20) PK
    user_id(bigint 20) FK
    user_nickname(varchar 255)
    user_truename(varchar 255)
    user_email(varchar 255)
    user_gas(bigint 20) 
    (用户权重,就像汽车要加汽油一样,将结合用户购买会员等级,购买时长来加权使得该值更大,
    默认值100,用户注册后,如无会员无等级,每过一天如无登陆-1,不为0登陆后再回到100.
    购买会员后则根据月份*等级*100+*默认值100做为该值预先-去的指数,
    具体算法可以细细考究.最终用户会员到期后,才开始减默认值100权重.)
    user_profile(varchar 255)
    ...其它用户信息相关,如果地址是有多个,需要追加sys_users_address表
    create_time(date)
    update_time(date)
    delete_flag(tinyint)
    
    
    sys_users_logs: 该表记录每次用户登陆时间
    user_log_id(bigint 20) PK
    user_id(bigint 20) FK
    user_log_type(tinyint 1) 用户日志类型 0:通用日志 1:每日登陆日志 2:按次登陆日志
    login_time(date) 登陆时间
    记录了用户每次的登陆时间
    login_date(date) 登陆日期 
    (有login_date的话,即某日用户登陆后,一是写入log_type1,二是写入log_type2,
    而用户于当天再次登陆多次,查看是否已经有了type1,有则只记录每次的type2
    同样该值也可以结合job用来发出提醒用户连续几日未登陆请来看看的提示)
    记录用户于某一天是否有过登陆
    login_ip(varchar 255)
    login_device(varchar 255) 用户登陆设备
    create_time(date)
    update_time(date)
    delete_flag(tinyint)
    
    
    sys_users_room: 该表记录用户临时冷板凳和永久冷藏 (以NBA球员术语来说)
    user_room_id(bigint 20) PK
    user_id(bigint 20) FK
    frozen_code(tinyint 1) 0:默认 1:临时封禁 2:永久封禁 
    (根据job任务将user_gas为0的用户加入frozen,而判断到用户user_gas稍微不足时,
    如值到了10,7等,可以发出通知,请用户登陆.)
    如果记录到
    warm_time(date) 临时封禁的解禁时间,以job形式每日更新frozen_code值到0与否
    create_time(date)
    update_time(date)
    delete_flag(tinyint)
    
    
    sys_users_grade: 用户等级表,记录用户是否购买会员,购买了多久等,其实这个表如果一开始就知道是电商类,
    其实加入到users也未尝不可
    grade_id(bigint 20) PK
    user_id(bigint 20) FK
    member_level(tinyint 1) 0:无会员 1:铜牌会员 2:银牌会员 3:金牌会员 4:钻石会员 5:黑卡会员 6:软件股东
    member_month(bigint 10) 购买会员的月数
    create_time(date)
    update_time(date)
    delete_flag(tinyint)
    
    
  • 相关阅读:
    SpringMVC文件下载
    Servlet3.0文件上传
    SpringMVC拦截器的使用(入门)
    SpringMVC文件上传
    SpringMVC后台数据校验
    SpringMVC@InitBinder使用方法
    C++ this指针
    C++ 析构函数
    C++ 构造函数
    C++ 成员函数的实现
  • 原文地址:https://www.cnblogs.com/ukzq/p/14855273.html
Copyright © 2011-2022 走看看