OrderLib.php 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. declare (strict_types=1);
  3. // +----------------------------------------------------------------------
  4. // | [ WE CAN DO IT MORE SIMPLE ]
  5. // +----------------------------------------------------------------------
  6. // | Copyright (c) 2018-2020 rights reserved.
  7. // +----------------------------------------------------------------------
  8. // | 支付结算
  9. // +----------------------------------------------------------------------
  10. // | Date: 2020-08-25 17:23
  11. // +----------------------------------------------------------------------
  12. namespace app\lib;
  13. use app\model\api\PayTrade;
  14. use app\model\api\Order;
  15. use app\model\api\ShowTemplateOrder;
  16. use app\model\api\UserShowTemplate;
  17. use app\model\api\OrderInfo;
  18. use app\model\api\User as UserModel;
  19. use app\model\api\UserDetail as UserDetailModel;
  20. use app\model\api\UserScoreDetail;
  21. use app\model\api\Sys as SysModel;
  22. use think\facade\Db;
  23. class OrderLib
  24. {
  25. /**
  26. * 支付反馈
  27. * @param $orderId
  28. * @return bool|string
  29. * @throws \think\db\exception\DataNotFoundException
  30. * @throws \think\db\exception\DbException
  31. * @throws \think\db\exception\ModelNotFoundException
  32. */
  33. public function orderPay($payOn,$payDataInfo="")
  34. {
  35. $payTradeData = (new PayTrade)->where('pay_no', $payOn)->find();
  36. if (empty($payTradeData)) {
  37. return false;
  38. }
  39. //已支付
  40. if ($payTradeData['status'] == 1) {
  41. return false;
  42. }
  43. $userData = (new UserModel)->where('uid', $payTradeData['uid'])->find();
  44. if(empty($userData)){
  45. return false;
  46. }
  47. //处理支付成功
  48. PayTrade::beginTrans();
  49. try {
  50. (new PayTrade)->where('id', $payTradeData['id'])->update(['status' => 1, 'pay_time' => time(),'pay_json' => $payDataInfo]);
  51. //购买模板
  52. if($payTradeData["type"]=="temp"){
  53. $tempOrderData = (new ShowTemplateOrder)->where("id",$payTradeData['o_id'])->find();
  54. if(empty($tempOrderData)){
  55. PayTrade::rollbackTrans();
  56. return false;
  57. }
  58. (new ShowTemplateOrder)->where("id",$payTradeData['o_id'])->update(['status' => 1, 'pay_time' => time()]);
  59. //验证并绑定当前模板
  60. (new UserShowTemplate)->userBindTemp($tempOrderData["show_template_id"],$tempOrderData['uid']);
  61. //添加消费记录
  62. if(in_array($payTradeData["pay_type"],["alipay","wxpay"])){
  63. // (new UserDetailModel)->consumeLog($payTradeData['uid'],$payTradeData["money"],"show_temp_buy","购买名片模板");
  64. }
  65. PayTrade::commitTrans();
  66. return true;
  67. }
  68. //商城订单
  69. if($payTradeData["type"]=="shop"){
  70. (new Order)->where("id",$payTradeData['o_id'])->update(['status' => 1, 'pay_time' => time()]);
  71. PayTrade::commitTrans();
  72. return true;
  73. }
  74. //商城积分支付订单
  75. if($payTradeData["type"]=="shop_score"){
  76. (new Order)->where("id",$payTradeData['o_id'])->update(['status' => 1, 'pay_time' => time()]);
  77. PayTrade::commitTrans();
  78. return true;
  79. }
  80. PayTrade::commitTrans();
  81. } catch (DbException $dbException) {
  82. PayTrade::rollbackTrans();
  83. return false;
  84. }
  85. //后台管理人员支付直接返回
  86. if($payTradeData["pay_type"]=="system"){
  87. return true;
  88. }
  89. return true;
  90. }
  91. }