• 记录
    • 目录结构
    • 使用指南
      • 1.创建你的记录实体类
      • 2.添加记录
      • 3.进一步封装 service

    记录

    version

    描述:

    目录结构

    1. .
    2. ├── Controller
    3. ├── Install
    4. ├── Libs 核心实现库
    5. ├── Records 记录实体类
    6. ├── Model
    7. ├── Service 服务
    8. └── Uninstall

    使用指南

    1.创建你的记录实体类

    Record/Records/ 目录下创建消息实体类,并继承 Record\Libs\Record

    1. <?php
    2. namespace Record\Records;
    3. use Record\Libs\Record;
    4. class TradeRecord extends Record {
    5. public $table_name = 'RecordTrade';
    6. public function __construct($to, $target_type, $target) {
    7. $this->setTo($to);
    8. $this->setTargetType($target_type);
    9. $this->setTarget($target);
    10. }
    11. }

    2.添加记录

    使用 Record\Service\RecordService::createRrcord($record) 添加消息

    1. <?php
    2. namespace Record\Controller;
    3. use Common\Controller\AdminBase;
    4. use Record\Records\TradeRecord;
    5. use Record\Service\RecordService;
    6. use Record\Service\TradeRecordService;
    7. class TestController extends AdminBase {
    8. public function index() {
    9. $recode = new TradeRecord('1', 'wxpay', '1232122');
    10. $recode->setIncome(100);
    11. $this->ajaxReturn(RecordService::createRrcord($recode));
    12. // $this->ajaxReturn(TradeRecordService::createTradeRecord('1', 'wxpay', '1232122', 100, 50));
    13. }
    14. }

    3.进一步封装 service

    1. <?php
    2. namespace Record\Service;
    3. use Record\Libs\Record;
    4. use Record\Model\RecordModel;
    5. use System\Service\BaseService;
    6. class RecordService extends BaseService {
    7. static function createRrcord(Record $record) {
    8. //获取上一条合法的record id
    9. $where['status'] = RecordModel::STATUS_VAILD;
    10. $where['to'] = $record->getTo();
    11. $where['to_type'] = $record->getToType();
    12. $last_vaild_record = M($record->table_name)->where($where)->order('id desc')->find();
    13. $last_vaild_balance = self::getBalance($record)['data']; //获取最近的余额信息
    14. $data = [
    15. 'parent_id' => $last_vaild_record ? $last_vaild_record['id'] : 0,
    16. 'to' => $record->getTo(),
    17. 'to_type' => $record->getToType(),
    18. 'from' => $record->getFrom(),
    19. 'from_type' => $record->getFromType(),
    20. 'target' => $record->getTarget(),
    21. 'target_type' => $record->getTargetType(),
    22. 'income' => $record->getIncome(),
    23. 'pay' => $record->getPay(),
    24. 'balance' => ($last_vaild_balance + $record->getIncome() - $record->getPay()),//计算当前记录的余额
    25. 'detail' => $record->getDetail(),
    26. 'status' => $record->getStatus(),
    27. 'create_time' => time(),
    28. 'remark' => $record->getRemark()
    29. ];
    30. $result = M($record->table_name)->add($data);
    31. if ($result) {
    32. return self::createReturn(true, $result);
    33. }
    34. return self::createReturn(false, null, '操作失败');
    35. }
    36. static function getBalance(Record $record) {
    37. $where = [
    38. 'to' => $record->getTo(),
    39. 'to_type' => $record->getToType(),
    40. 'status' => RecordModel::STATUS_VAILD
    41. ];
    42. $lists = M($record->table_name)->field('income,pay')->where($where)->select();
    43. $total = 0;
    44. for ($i = 0; $i < count($lists); $i++) {
    45. $total = $total + $lists[$i]['income'] - +$lists[$i]['pay'];
    46. }
    47. return self::createReturn(true, $total, 'ok');
    48. }
    49. }