RechargeController.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace app\admin\controller\notify;
  3. use app\admin\service\notify\RechargeService;
  4. use app\model\Member;
  5. use app\model\MemberAccount;
  6. use app\model\PayDetail;
  7. use support\Db;
  8. use support\exception\BusinessException;
  9. use support\Request;
  10. class RechargeController
  11. {
  12. public function paySuccess(Request $request)
  13. {
  14. $id = $request->post('pay_id', null);
  15. if (!$id) {
  16. return json_fail('参数异常');
  17. }
  18. $payDetail = PayDetail::find($id);
  19. if ($payDetail->pay_status != 'SUCCESS') {
  20. return json_fail("支付状态异常");
  21. }
  22. $extendJson = [];
  23. if (!empty($payDetail->pay_extend_json)) {
  24. $extendJson = json_decode($payDetail->pay_extend_json, true);
  25. if (isset($extendJson['notify']) && $extendJson['notify'] == 'success') {
  26. return json_success('处理完成');
  27. }
  28. }
  29. try {
  30. Db::beginTransaction();
  31. $extendJson['notify'] = 'success';
  32. $payDetail->pay_extend_json = json_encode($extendJson);
  33. $payDetail->save();
  34. // 赠送比例
  35. $addedNbr = RechargeService::disposeOrder($payDetail->join_pay_order_id);
  36. // 赠送金额累加到 账户表 member_account_added
  37. MemberAccount::where('join_account_member_id', $payDetail->join_pay_member_id)
  38. ->where('member_account_classify', 'CASH')
  39. ->increment('member_account_added', $payDetail->pay_amount * $addedNbr);
  40. MemberAccount::where('join_account_member_id', $payDetail->join_pay_member_id)
  41. ->where('member_account_classify', 'CASH')
  42. ->increment('member_account_income', floatval($payDetail->pay_amount));
  43. // 根据最新的数据,更新用户等级
  44. $member = Member::find($payDetail->join_pay_member_id);
  45. $roleId = RechargeService::disposeRole($payDetail->join_pay_member_id, $payDetail->pay_amount);
  46. if ($roleId && $member->join_member_role_id != $roleId) {
  47. $member->join_member_role_id = $roleId;
  48. $member->save();
  49. // 处理增值套包、组件
  50. RechargeService::disposeAdded($roleId, $payDetail->join_pay_member_id);
  51. }
  52. Db::commit();
  53. return json_success('success');
  54. } catch (BusinessException $e) {
  55. dump($e->getMessage());
  56. Db::rollBack();
  57. return json_fail('处理失败');
  58. } catch (\Exception $e) {
  59. dump($e->getMessage());
  60. Db::rollBack();
  61. return json_fail('处理失败');
  62. }
  63. }
  64. }