zoukankan      html  css  js  c++  java
  • .NET重构(六):删除用户和结账的理解

    导读:这是第二回机房了,第一回不明不白,不清不楚的就过去了(相对),这一回,有了新的发现。就是在用户删除的时候,涉及到的一些逻辑问题,以及结账时的数据来源问题。


    一、用户删除


    问题:第一次机房,包括重构。我觉得很多人都会在删除用户的时候,毫不犹豫的就将用户给删了,最多判断一下是不是系统管理员,是不是正在登录使用的用户。从功能上来看,这很合理,并没有任何差错。但结合整个系统来看,这个问题就大了。


    原因:目前做的系统,在结账的时候,是遍历所有操作员。这时候问题就有了,如果在删除用户的时候,直接把操作员给删了,而没有判断是否有未结账的,那么,在结账的时候,那个被删掉的操作员将再也无法结账。也就是说系统会有一部分的账目不知所踪。这是不合理的。


    解决办法:1,在删除用户的时候,对用户的结账状态进行判断,如果存在未结账的,就不允许删除,提醒管理员首先对该操作员的账目进行结算。

    2,在删除用户的时候,并不真正的删除用户(PS:原则上,数据库中的表数据也是不允许删除的),而是将状态改为未使用(类似学生的上机卡)。那么在这个时候,就必须在UserInfo表里增添一个字段,记录其的使用状态。


    个人观点:我比较支持第二种方法。首先,如果我作为一个管理员,我要删除那个用户,又各种原因不让删,然后还要先结账。我会觉得麻烦。如果,采取第二种方案,那么我就不必想结账的问题,直接删除,然后将状态改为未使用。如果真要删除,可以在结完账之后,删除那些未使用的用户(存储过程,一点都不麻烦)。


    以上是自己在重构的过程中,关于用户删除的一些理解。


    二、操作员结账


    关于操作员结账,我想说明的只有一个数据:消费金额。当时和师傅存在争议,但最终我采取了自己的那种方案,因为如果我是系统的使用者,我不认为师傅说的那个数据更有参考价值。

    算法分歧:

    1,师傅的意见:消费金额就是结账当天的上机消费金额。也就是直接去上机表里查当天的上机记录,然后循环相加消费金额。

    2,我的意见:消费金额=上期卡内余额+应收金额(充值金额—退卡金额)—本期卡内余额

    直接结果:

    1,照师傅的意见,得到的消费金额,永远都是正的,就是说永远都在盈利,都在进账赚钱。

    2,照我的算法,有时候消费金额会存在负值。而导致负值是一个什么原因,并不是那天没有人上机消费,而只能说明一个问题:当天,会员的退卡量很多。也就是说我的机房锐减了很多消费者。


    结论:如果我是一个机房的所有者,我会更愿意采取第二种方案。消费金额是用来干嘛的,我需要从消费金额,来看我的机房的运营情况。当然也有人说需要通过消费金额来看盈利情况,但我更侧重通过应收金额(也就是实际收到的钱)来看盈利情况。我认为,这样的算法得到的数据才是更有价值的。当我发现那天的消费金额很低,或者成负数。但那天又有很多人来上网。那时候,我不应该感到高兴,而是感到危机:因为,我的会员人数在减少。这个信号说明:我需要想办法去挽救我的既有客户,以及争取新的客户。如果永远看到的只有正值的消费金额,那么会有一种错觉,永远都在赚钱。可事实呢?


    另外,还有人说:本期余额=应收金额+消费金额(上机记录统计的金额)。其实,我也不明白为什么要这样算,这样算会有一部分的钱,被重复计算。因为:应收金额=充值金额—退卡金额,这是真正得到的钱。而前面算的本期余额中,消费金额其实就是充值金额之内的。他将充值金额重复计算,会造成盈利丰厚的错觉。而且很可能账目会出现混乱。因为按数据统计的余额有很多,但实际上的余额,是没有那么多的。


    好了,这就是我关于删除用户,以及结账数据的理解。


    三、个人感受

    那天算了一天的钱,感觉怎么算怎么不对。不过,我第一次算的那个肯定不对。但,我觉得,统计的数据必须要有实际意义实际价值。当然,这也可能是需求的分析出现了分歧。额,我只能说,了解用户的真正需求,真的很重要!

    PS:我是持不了家的,就我榆木的脑袋,算钱的本事。唉!



    请大家多多指教啦,谢谢!


  • 相关阅读:
    ECMAScript 引用类型Object 对象
    jQuery Form Plugin
    在 PHP5 中使用 DOM 控制 XML
    JavaScript encodeURI()和encodeURIComponent() 函数
    程序员进阶的建议:多看、多写、多交流
    jQuery 取 css zindex 值在各种浏览器中的返回值
    XPath 语法教程(Tutorial_2)
    使用 strpos 需要注意 === 运算符
    关于代码开发规范和原则
    PHP 编写大型网站问题集
  • 原文地址:https://www.cnblogs.com/hhx626/p/6010453.html
Copyright © 2011-2022 走看看