Recharge.php 7.0 KB

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