.NET重构(六):删除用户和结账的理解
导读:这是第二回机房了,第一回不明不白,不清不楚的就过去了(相对),这一回,有了新的发现。就是在用户删除的时候,涉及到的一些逻辑问题,以及结账时的数据来源问题。
一、用户删除
问题:第一次机房,包括重构。我觉得很多人都会在删除用户的时候,毫不犹豫的就将用户给删了,最多判断一下是不是系统管理员,是不是正在登录使用的用户。从功能上来看,这很合理,并没有任何差错。但结合整个系统来看,这个问题就大了。
原因:目前做的系统,在结账的时候,是遍历所有操作员。这时候问题就有了,如果在删除用户的时候,直接把操作员给删了,而没有判断是否有未结账的,那么,在结账的时候,那个被删掉的操作员将再也无法结账。也就是说系统会有一部分的账目不知所踪。这是不合理的。
解决办法:1,在删除用户的时候,对用户的结账状态进行判断,如果存在未结账的,就不允许删除,提醒管理员首先对该操作员的账目进行结算。
2,在删除用户的时候,并不真正的删除用户(PS:原则上,数据库中的表数据也是不允许删除的),而是将状态改为未使用(类似学生的上机卡)。那么在这个时候,就必须在UserInfo表里增添一个字段,记录其的使用状态。
个人观点:我比较支持第二种方法。首先,如果我作为一个管理员,我要删除那个用户,又各种原因不让删,然后还要先结账。我会觉得麻烦。如果,采取第二种方案,那么我就不必想结账的问题,直接删除,然后将状态改为未使用。如果真要删除,可以在结完账之后,删除那些未使用的用户(存储过程,一点都不麻烦)。
以上是自己在重构的过程中,关于用户删除的一些理解。
二、操作员结账
关于操作员结账,我想说明的只有一个数据:消费金额。当时和师傅存在争议,但最终我采取了自己的那种方案,因为如果我是系统的使用者,我不认为师傅说的那个数据更有参考价值。
算法分歧:
1,师傅的意见:消费金额就是结账当天的上机消费金额。也就是直接去上机表里查当天的上机记录,然后循环相加消费金额。
2,我的意见:消费金额=上期卡内余额+应收金额(充值金额—退卡金额)—本期卡内余额
直接结果:
1,照师傅的意见,得到的消费金额,永远都是正的,就是说永远都在盈利,都在进账赚钱。
2,照我的算法,有时候消费金额会存在负值。而导致负值是一个什么原因,并不是那天没有人上机消费,而只能说明一个问题:当天,会员的退卡量很多。也就是说我的机房锐减了很多消费者。
结论:如果我是一个机房的所有者,我会更愿意采取第二种方案。消费金额是用来干嘛的,我需要从消费金额,来看我的机房的运营情况。当然也有人说需要通过消费金额来看盈利情况,但我更侧重通过应收金额(也就是实际收到的钱)来看盈利情况。我认为,这样的算法得到的数据才是更有价值的。当我发现那天的消费金额很低,或者成负数。但那天又有很多人来上网。那时候,我不应该感到高兴,而是感到危机:因为,我的会员人数在减少。这个信号说明:我需要想办法去挽救我的既有客户,以及争取新的客户。如果永远看到的只有正值的消费金额,那么会有一种错觉,永远都在赚钱。可事实呢?
另外,还有人说:本期余额=应收金额+消费金额(上机记录统计的金额)。其实,我也不明白为什么要这样算,这样算会有一部分的钱,被重复计算。因为:应收金额=充值金额—退卡金额,这是真正得到的钱。而前面算的本期余额中,消费金额其实就是充值金额之内的。他将充值金额重复计算,会造成盈利丰厚的错觉。而且很可能账目会出现混乱。因为按数据统计的余额有很多,但实际上的余额,是没有那么多的。
好了,这就是我关于删除用户,以及结账数据的理解。
三、个人感受
那天算了一天的钱,感觉怎么算怎么不对。不过,我第一次算的那个肯定不对。但,我觉得,统计的数据必须要有实际意义实际价值。当然,这也可能是需求的分析出现了分歧。额,我只能说,了解用户的真正需求,真的很重要!
PS:我是持不了家的,就我榆木的脑袋,算钱的本事。唉!
请大家多多指教啦,谢谢!
.NET重构(六):删除用户和结账的理解的更多相关文章
- 【转载】MySQL5.7 添加用户、删除用户与授权
mysql -uroot -proot MySQL5.7 mysql.user表没有password字段改 authentication_string: 一. 创建用户: 命令:CREATE USER ...
- MySQL5.7 添加用户、删除用户与授权
mysql -uroot -proot MySQL5.7 mysql.user表没有password字段改 authentication_string: 一. 创建用户: 命令:CREATE USER ...
- MySQL5.7 添加、删除用户与授权
mysql -uroot -proot 例子: 创建用户mysql> CREATE USER 'xiaoyaoji'@'%' IDENTIFIED BY 'xiaoyaoji';Query OK ...
- MySQL 添加用户、删除用户与授权
mysql -uroot -proot MySQL5.7 mysql.user表没有password字段改 authentication_string: 一. 创建用户: 命令:CREATE USER ...
- mysql5.7创建用户授权删除用户撤销授权
一, 创建用户: 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - ...
- linux用户管理(1)----创建用户(adduser和useradd)和删除用户(userdel)
一.常用命令: (1)创建用户命令两条: adduser useradd (2)用户删除命令: userdel 二.两个用户创建命令之间的区别 adduser: 会自动为创建的用户指定主目录.系统sh ...
- Linux运维六:用户管理及用户权限设置
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...
- linux用户管理之创建用户和删除用户
一.常用命令: (1)创建用户命令两条: adduser useradd (2)用户删除命令: userdel 二.两个用户创建命令之间的区别 adduser: 会自动为创建的用户指定主目录.系统sh ...
- linux新增用户和删除用户
新增用户 新增用户命令:useradd 参数: 参数 说明 -u 指定UID,也就是自定义UID -g 知道GID,也就是初始化用户组,/etc/passwd文件中的第四个字段. -G 后面接用户组的 ...
随机推荐
- url post 请求方法
最近的项目是给手机app 提供方法. 因此 此方法可以进行接口测试 static class HttpClient { static CookieContainer cookies = new Coo ...
- Jenkins在Windows上部署
下载解压安装即可.(注意:不要安装在系统盘) 下载地址:http://mirrors.jenkins-ci.org/war-stable/(官方镜像地址) 去相应目录复制管理员密码粘贴到输入框 选择安 ...
- java.util.concurrent中的常用组件
一. CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. CountDownLatch的一个非常典型的应用场景是:有一个任务想要往下执 ...
- mysqlsla安装和使用介绍
安装mysqlsla源码路径:https://github.com/daniel-nichter/hackmysql.com源码存放路径:/usr/local/src1.获取源码如果没有git命令,请 ...
- APP启动原理
当我们点击一个应用的时候,系统会自动创建一个相应的activity类实例,然后执行Oncreate方法,接着会执行以下两行代码,解释如下: super.onCreate(savedInstanceSt ...
- Clown without borders 2017/1/9
原文 Taking laughter to those who need it most "When will you all return again?"the Croatian ...
- 在一个工程中同时使用Swift和Objective-C
Swift 与 Objective-C 的兼容能力使你可以在同一个工程中同时使用两种语言.你可以用这种叫做 mix and match 的特性来开发基于混合语言的应用,可以用 Swfit 的最新特性实 ...
- 复合词UVa10391(STL简单应用)
一.题目 输入一系列由小写字母组成的单词.输入已按照字典序排序(这句话就是个陷阱),且不超过120000个.找出所有的复合词,即恰好由两个单词连接而成的单词. 二.解题思路 要么枚举两两拼接的情况,O ...
- win7上安装虚拟机并上网
一.安装Workstation Pro 二.下载CentOS-7-x86_64-DVD-1511.iso包 三.创建新的虚拟机,按照向导安装即可 四.使用cd /etc/sysconfig/netwo ...
- 【转】Intellij Idea识别Java Web项目
使用maven生成一个Java项目,手动添加相应的web目录WEB_INF,web.xml等,此时idea没有自动识别为web项目,此时编辑web.xml文件会出现一些不该出现的错误,需要做的就是让i ...