- 1.2 环境搭建&安装
- 1.3 项目说明
- 1.4 路由说明
- 1.5 目录结构
- 2.1 模板
- 2.1.1 前台模板
- 2.1.2 后台模板
- 2.1.3 模板标签
- 2.1.3.1 content内容标签
- 2.1.3.2 spf内容标签
- 2.1.3.3 tags内容标签
- 2.1.3.4 comment评论标签
- 2.1.3.5 position推荐位标签
- 2.1.3.6 get数据获取标签
- 2.1.3.7 template模板引入标签
- 2.1.3.8 navigate导航标签
- 2.1.3.9 pre上一篇标签
- 2.1.3.10 next下一篇标签
- 2.1.3.11 blockcache区块缓存标签
- 2.2 行为管理
- 2.2.1 行为规则
- 2.2.2 使用方法
- 2.2.3 测试Behaivor
- 2.3 模块开发
- 2.4.1 权限
- 2.4.2 框架页
- 2.4.3 消息中心
- 2.4.4 登录页安全
- 2.5 请求缓存
- 3.1 Auth
- 3.1.1 通用授权
- 3.1.2 自动登录授权
- 3.1.3 开放平台授权
- 3.2 Wechat
- 3.2.2 v2.x
- 3.3 Area
- 3.3.1 中国区域
- 3.3.2 中国高校
- 3.4 Sms
- 3.4.1 v3
- 3.4.2 v2
- 3.5 Cron
- 3.6 Transport
- 3.6.1 使用
- 3.6.2 最佳实践
- 3.7 Message
- 3.8 Record
- 3.8.1 数据结构
- 3.8.2 使用指南
- 3.9 Wxapp
- 3.10 Log
- 3.11 Alipay
- 3.12 Unionpay
- 3.13 Oss
- 3.14 Chart
- 3.15 Queue
- 3.16 Mirror
- 3.17 Wap
- 3.18 Shop
- 3.19 Search
- 3.20 Addons
- 3.21 Collection
- 3.22 Comment
- 3.23 Domain
- 3.24 Form
- 3.25 Link
- 3.26 Vote
- 3.27 Member
- 4.1 规范和约定
- 4.2 部署指南
- 4.3 常见错误
- 4.4 开发Tips汇总
- 4.4.1 模块
- 4.4.2 自定义后台iconfont
- 4.4.3 自定义成功(失败)页面
- 4.4.4 自定义栏目列表搜索条件
- 4.4.5 根据管理员的权限显示
- 4.5 数据库的存储引擎
- 4.6 行为管理最佳实践
- 4.7 性能优化
- 4.8 ThinkPHP
- 4.8.1 模型
- 4.9.1 发送邮件
- 5.1 系统函数
- 5.2 技术栈
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
3.8 Record
记录
描述:
目录结构
.
├── Controller
├── Install
├── Libs 核心实现库
├── Records 记录实体类
├── Model
├── Service 服务
└── Uninstall
使用指南
1.创建你的记录实体类
在 Record/Records/
目录下创建消息实体类,并继承 Record\Libs\Record
类
<?php
namespace Record\Records;
use Record\Libs\Record;
class TradeRecord extends Record {
public $table_name = 'RecordTrade';
public function __construct($to, $target_type, $target) {
$this->setTo($to);
$this->setTargetType($target_type);
$this->setTarget($target);
}
}
2.添加记录
使用 Record\Service\RecordService::createRrcord($record)
添加消息
<?php
namespace Record\Controller;
use Common\Controller\AdminBase;
use Record\Records\TradeRecord;
use Record\Service\RecordService;
use Record\Service\TradeRecordService;
class TestController extends AdminBase {
public function index() {
$recode = new TradeRecord('1', 'wxpay', '1232122');
$recode->setIncome(100);
$this->ajaxReturn(RecordService::createRrcord($recode));
// $this->ajaxReturn(TradeRecordService::createTradeRecord('1', 'wxpay', '1232122', 100, 50));
}
}
3.进一步封装 service
<?php
namespace Record\Service;
use Record\Libs\Record;
use Record\Model\RecordModel;
use System\Service\BaseService;
class RecordService extends BaseService {
static function createRrcord(Record $record) {
//获取上一条合法的record id
$where['status'] = RecordModel::STATUS_VAILD;
$where['to'] = $record->getTo();
$where['to_type'] = $record->getToType();
$last_vaild_record = M($record->table_name)->where($where)->order('id desc')->find();
$last_vaild_balance = self::getBalance($record)['data']; //获取最近的余额信息
$data = [
'parent_id' => $last_vaild_record ? $last_vaild_record['id'] : 0,
'to' => $record->getTo(),
'to_type' => $record->getToType(),
'from' => $record->getFrom(),
'from_type' => $record->getFromType(),
'target' => $record->getTarget(),
'target_type' => $record->getTargetType(),
'income' => $record->getIncome(),
'pay' => $record->getPay(),
'balance' => ($last_vaild_balance + $record->getIncome() - $record->getPay()),//计算当前记录的余额
'detail' => $record->getDetail(),
'status' => $record->getStatus(),
'create_time' => time(),
'remark' => $record->getRemark()
];
$result = M($record->table_name)->add($data);
if ($result) {
return self::createReturn(true, $result);
}
return self::createReturn(false, null, '操作失败');
}
static function getBalance(Record $record) {
$where = [
'to' => $record->getTo(),
'to_type' => $record->getToType(),
'status' => RecordModel::STATUS_VAILD
];
$lists = M($record->table_name)->field('income,pay')->where($where)->select();
$total = 0;
for ($i = 0; $i < count($lists); $i++) {
$total = $total + $lists[$i]['income'] - +$lists[$i]['pay'];
}
return self::createReturn(true, $total, 'ok');
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论