OrderLib.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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\OrderInfo;
  17. use app\model\api\User as UserModel;
  18. use app\model\api\UserDetail as UserDetailModel;
  19. use app\model\api\Sys as SysModel;
  20. use think\facade\Db;
  21. class OrderLib
  22. {
  23. /**
  24. * 支付反馈
  25. * @param $orderId
  26. * @return bool|string
  27. * @throws \think\db\exception\DataNotFoundException
  28. * @throws \think\db\exception\DbException
  29. * @throws \think\db\exception\ModelNotFoundException
  30. */
  31. public function orderPay($payOn,$payDataInfo="")
  32. {
  33. $payTradeData = (new PayTrade)->where('pay_no', $payOn)->find();
  34. if (empty($payTradeData)) {
  35. return false;
  36. }
  37. //已支付
  38. if ($payTradeData['status'] == 1) {
  39. return false;
  40. }
  41. $userData = (new UserModel)->where('uid', $payTradeData['uid'])->find();
  42. if(empty($userData)){
  43. return false;
  44. }
  45. //处理支付成功
  46. PayTrade::beginTrans();
  47. try {
  48. (new PayTrade)->where('id', $payTradeData['id'])->update(['status' => 1, 'pay_time' => time(),'pay_json' => $payDataInfo]);
  49. //购买模板
  50. if($payTradeData["type"]=="temp"){
  51. $tempOrderData = (new ShowTemplateOrder)->where("id",$payTradeData['o_id'])->find();
  52. if(empty($tempOrderData)){
  53. PayTrade::rollbackTrans();
  54. return false;
  55. }
  56. (new ShowTemplateOrder)->where("id",$payTradeData['o_id'])->update(['status' => 1, 'pay_time' => time()]);
  57. //验证用户是否已经购买过当前模板
  58. $count = (new UserShowTemplate)->where("uid",$userData['uid'])->where("show_template_id",$tempOrderData["show_template_id"])->count();
  59. if($count<=0){
  60. (new UserShowTemplate)->insert([
  61. "uid" => $tempOrderData["uid"],
  62. "show_template_id" => $tempOrderData["show_template_id"],
  63. "start_time" => time(),
  64. "end_time" => time()+100*365*24*60*60,//100年
  65. "is_default" => 0,
  66. ]);
  67. }
  68. //添加消费记录
  69. if(in_array($payTradeData["pay_type"],["alipay","wxpay"])){
  70. (new UserDetailModel)->consumeLog($payTradeData['uid'],$payTradeData["money"],"show_temp_buy","购买名片模板");
  71. }
  72. PayTrade::commitTrans();
  73. return true;
  74. }
  75. //商城订单
  76. if($payTradeData["type"]=="shop"){
  77. (new Order)->where("id",$payTradeData['o_id'])->update(['status' => 1, 'pay_time' => time()]);
  78. PayTrade::commitTrans();
  79. return true;
  80. }
  81. PayTrade::commitTrans();
  82. } catch (DbException $dbException) {
  83. PayTrade::rollbackTrans();
  84. return false;
  85. }
  86. //后台管理人员支付直接返回
  87. if($payTradeData["pay_type"]=="system"){
  88. return true;
  89. }
  90. return true;
  91. }
  92. }