Recharge.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. namespace app\common\model;
  3. use \think\Db;
  4. /**
  5. * 订单支付模型
  6. */
  7. class Recharge
  8. {
  9. /**
  10. * 支付回调
  11. */
  12. public function goldpaysucc($orderId,$args){
  13. $order = Db::name('pay_order')->where(array('pay_no'=>$orderId,'status'=>2))->find();
  14. if( $order )
  15. {
  16. Db::startTrans();
  17. //更新订单状态
  18. $rs = Db::name('pay_order')->where(['id'=>$order['id']])->update(['status'=>1]);
  19. if(!$rs){
  20. Db::rollback();
  21. filePut('[wallet][paySucc] pay_order update fail'.$orderId);
  22. abort(500,'订单更新失败');
  23. }
  24. //先充值
  25. $result = model('Wallet')->lockChangeAccountRemain($args['user_id'],'gold',$args['gold'],10, '金币充值:'.$orderId,'pay_order',$order['id']);
  26. if($result['status']===false)
  27. {
  28. Db::rollback();
  29. filePut('[wallet][paySucc]网银充值入账更新余额失败 recharge money fail'.$orderId.$result['msg']);
  30. abort(500,'网银充值入账 model wallet recharge money fail');
  31. }
  32. //首充
  33. $first_map = [
  34. 'uid' => $args['user_id'],
  35. 'pg_id' => $args['pg_id'],
  36. ];
  37. $first_check = Db::name('user_paygold_log')->where($first_map)->find();
  38. if(empty($first_check)){
  39. //首充日志
  40. $first_map['createtime'] = time();
  41. $first_log_id = Db::name('user_paygold_log')->insertGetId($first_map);
  42. if(!$first_log_id){
  43. Db::rollback();
  44. abort(500,'首充赠送失败');
  45. }
  46. //送金币
  47. if(isset($args['first_gold']) && $args['first_gold'] > 0){
  48. $result = model('Wallet')->lockChangeAccountRemain($args['user_id'],'gold',$args['first_gold'],14, '金币充值:'.$orderId,'pay_order',$order['id']);
  49. if($result['status']===false)
  50. {
  51. Db::rollback();
  52. filePut('[wallet][paySucc]网银充值入账更新余额失败 recharge money fail'.$orderId.$result['msg']);
  53. abort(500,'网银充值入账 model wallet recharge money fail');
  54. }
  55. }
  56. //送vip
  57. if(isset($args['first_vipdays']) && $args['first_vipdays'] > 0){
  58. $user_info = Db::name('user_wallet')->where('user_id',$args['user_id'])->lock(true)->find();
  59. if($user_info['vip_endtime'] < time()){
  60. //过期了
  61. $vip_endtime = time() + (intval($args['first_vipdays']) * 86400);
  62. }else{
  63. //追加vip
  64. $vip_endtime = $user_info['vip_endtime'] + (intval($args['first_vipdays']) * 86400);
  65. }
  66. $result = Db::name('user_wallet')->where('user_id',$args['user_id'])->update(['vip_endtime'=>$vip_endtime]);
  67. if($result === false)
  68. {
  69. Db::rollback();
  70. filePut('[wallet][paySucc]网银充值入账更新vip时间失败 recharge money fail'.$orderId);
  71. abort(500,'网银充值入账 model wallet recharge money fail');
  72. }
  73. }
  74. }
  75. Db::commit();
  76. return true;
  77. }else{
  78. filePut('[wallet][paySucc]在线支付订单有误 '.$orderId);
  79. abort(500,'model wallet fail');
  80. return false;
  81. }
  82. }
  83. public function vippaysucc($orderId,$args){
  84. $order = Db::name('pay_order')->where(array('pay_no'=>$orderId,'status'=>2))->find();
  85. if( $order )
  86. {
  87. Db::startTrans();
  88. //更新订单状态
  89. $rs = Db::name('pay_order')->where(['id'=>$order['id']])->update(['status'=>1]);
  90. if(!$rs){
  91. Db::rollback();
  92. filePut('[wallet][paySucc] pay_order update fail'.$orderId);
  93. abort(500,'订单更新失败');
  94. }
  95. //先充值
  96. $user_info = Db::name('user_wallet')->where('user_id',$args['user_id'])->lock(true)->find();
  97. if($user_info['vip_endtime'] < time()){
  98. //过期了
  99. $vip_endtime = time() + (intval($args['days']) * 86400);
  100. }else{
  101. //追加vip
  102. $vip_endtime = $user_info['vip_endtime'] + (intval($args['days']) * 86400);
  103. }
  104. $result = Db::name('user_wallet')->where('user_id',$args['user_id'])->update(['vip_endtime'=>$vip_endtime]);
  105. if($result === false)
  106. {
  107. Db::rollback();
  108. filePut('[wallet][paySucc]网银充值入账更新vip时间失败 recharge money fail'.$orderId);
  109. abort(500,'网银充值入账 model wallet recharge money fail');
  110. }
  111. //tag任务赠送金币
  112. //开通VIP 50金币
  113. $task_rs = \app\common\model\TaskLog::tofinish($args['user_id'],9);
  114. if($task_rs === false){
  115. Db::rollback();
  116. $this->error('完成任务赠送奖励失败');
  117. }
  118. Db::commit();
  119. //再扣款
  120. /* Db::startTrans();
  121. //需要更新某个支付表
  122. if(isset($args['payids']) && $args['payids'])
  123. {
  124. logic('Cashier')->paySuccess($args,true);
  125. filePut('[wallet][paySucc] end success '.$orderId);
  126. }
  127. Db::commit();*/
  128. return true;
  129. }else{
  130. filePut('[wallet][paySucc]在线支付订单有误 '.$orderId);
  131. abort(500,'model wallet fail');
  132. return false;
  133. }
  134. }
  135. }