public function exchangeTransfer($user_id, $type, $money, $config, $other_id = 0)
{
$r['code'] = ERROR1;
$r['msg'] = L('parameter_error');
$r['result'] = [];
if (intval($user_id) && !empty($money)) {
$uuc_money = M('UucMoney')->where(['user_id'=>$user_id])->find();
if(!$uuc_money && !$this->otherMoneyInit($user_id)){
$r['code'] = ERROR4;
$r['msg'] = $this->logic_error;
return $r;
}
// 互转时给对方账户初始化
if($other_id>0 && !$this->otherMoneyInit($other_id)){
$r['code'] = ERROR5;
$r['msg'] = $this->logic_error;
return $r;
}
$balance = $uuc_money['exchange_money']; // 账户余额
try {
$model = M();
$model->startTrans();
switch($type){
case 1: // 后台充值
if(!$this->exchangeRecharge($user_id, $money, $config)){
throw new Exception($this->logic_error);
}
break;
case 2: // 后台扣除
if(!$this->exchangeDeduction($user_id, $money, $balance, $config)){
throw new Exception($this->logic_error);
}
break;
case 4: // 转出其他用户
if(!$this->exchangeToOtherExchange($user_id, $money, $balance, $config, $other_id)){
throw new Exception($this->logic_error);
}
break;
default:
throw new Exception(L('type_error'));
} $model->commit();
$r['msg'] = L('success_operation');
$r['code'] = SUCCESS;
} catch (Exception $e) {
$model->rollback();
$r['msg'] = $e->getMessage();
$r['code'] = ERROR3;
}
}
return $r;
}

tp3.2 事务的更多相关文章

  1. tp3.2 事务 和 tp5.0事务

    tp3.2: 来源:https://www.kancloud.cn/thinkphp-development/tp323/423369 和: https://blog.csdn.net/mengzuc ...

  2. TP3.2.3 接入银联支付

    TP3.2.3 接入银联支付 项目接入银联支付的过程, 在此记录下,希望能帮助开发盆友平坑. 银联SKD链接:https://open.unionpay.com/ajweb/product/newPr ...

  3. ThinkPHP5 模型 - 事务支持

    使用事务之前,先确保数据库的存储引擎支持事务操作. MyISAM:不支持事务,主要用于读数据提高性能 InnoDB:支持事务.行级锁和并发 Berkeley DB:支持事务 ThinkPHP5 使用事 ...

  4. Spring基于AOP的事务管理

                                  Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...

  5. SQLServer事务同步下如何收缩日志

    事务同步是SQLServer做读写分离的一种常用的方式. 随着业务数据的不断增长,数据库积攒了大量的日志,为了腾出硬盘空间,需要对数据库日志进行清理 订阅数据库的日志清理 因为订阅数据库所有的数据都来 ...

  6. 事务日志已满,原因为“ACTIVE_TRANSACTION”

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 异常处理汇总-数据库系列  http://www.cnblogs.com/dunitia ...

  7. Mysql事务探索及其在Django中的实践(二)

    继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...

  8. Mysql事务探索及其在Django中的实践(一)

    前言 很早就有想开始写博客的想法,一方面是对自己近期所学知识的一些总结.沉淀,方便以后对过去的知识进行梳理.追溯,一方面也希望能通过博客来认识更多相同技术圈的朋友.所幸近期通过了博客园的申请,那么今天 ...

  9. CRL快速开发框架系列教程七(使用事务)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

随机推荐

  1. java 弹出选择目录框(选择文件夹),获取选择的文件夹路径

    java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...

  2. 【译】第十一篇 SQL Server安全审核

    本篇文章是SQL Server安全系列的第十一篇,详细内容请参考原文. SQL Server审核SQL Server审核是指你可以在数据库或服务器实例监控事件.审核日志包含你选择捕获的事件的列表,在服 ...

  3. 关于Scroller的使用

    这篇文章讲解的很详细 https://blog.csdn.net/u011102153/article/details/53337648

  4. P1903 [国家集训队]数颜色 / 维护队列(莫队区间询问+单点修改)

    题目链接:https://www.luogu.org/problemnew/show/P1903 题目大意:中文题目 具体思路:莫队单点修改+区间询问模板题,在原来的区间询问的基础上,我们要记录当前这 ...

  5. code forces 805B (水)

    #include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#inc ...

  6. win7系统查看硬盘序列号步骤

    1.在开始那里输入cmd,打开命令窗口: 2.输入diskpart,按enter键,进入底盘查看选项: 3.输入list disk,按回车键: list disk:查看电脑上有几块硬盘: 输入sele ...

  7. MK64FN1M0xxx12_flash.ld链接文件解析

    1.前言 本文主要对MK64FN1M0xxx12_flash.ld文件进行分析,以此来加深对链接文件的理解 2.文件详解 /* ** ################################# ...

  8. requests库入门12-文件上传和下载

    因为找不到可以演示上传接口,所以只能纯代码了 文件上传 上传文件是在请求中使用files参数,files需要指向一个dict,然后dict里面的键是接口中对应文件名的字段,而值就是打开这个文件读取到内 ...

  9. unity提示can't add script解决办法

    1.脚本有误没有继承unity类. 2.类名文件名不一致. 3.内部逻辑代码有误.

  10. SIFT+BOW 实现图像检索

    原文地址:https://blog.csdn.net/silence2015/article/details/77374910 本文概述 图像检索是图像研究领域中一个重要的话题,广泛应用于医学,电子商 ...