设计了一个轻量级的用户资金表和操作流程,希望得到大家的指证,先谢过。
一、用户资金的变动表的表结构,大致有下面几个字段:
1.用户ID
2.余额
3.增加量
4.减少量
5.记录生成时间
6.校验码
7.校验码过期时间
二、操作函数:
1.取用户资金的最近一条记录:
function A(用户ID) {
return $arrRow;
}
2.写校验码:
function B(用户ID) {
$arrRow = A(用户ID);
if ($arrRow的校验码是空 || 校验码时间过期) {
$str = 校验码;
$int = 校验码过期时间;
更新arrRow到数据库
return $str;
}
return false;
}
3.变动资金:
function C(用户ID, 校验码, 增加量, 减少量) {
$arrRow = A(用户ID);
if ($arrRow的校验码 == 校验码 && 校验码没有过期) {
计算余额;
插入一条新的数据到数据库,此新数据里没有校验码和校验码过期时间;
return true;
}
return false;
}
三、用户充值/消费记录流程:
新的校验码 = function B(用户ID);
if (false !== 新的校验码) {
结果 = function C(用户ID, 新的校验码, 增加量. 减少量);
}
在数据库中存放一个数据版本字段, 在每次更新之前, 一定确保你手里的版本和数据库版本一致, 才能继续. 每次更新时, 同时把版本+1
比如你这里的校验码,就可以当做数据版本.
update table set mony=mony+50 where id=1 and 数据版本=你的校验码
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。