Recharge.php 7.0 KB

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