AppController.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Appadapter\Adapter;
  4. use Illuminate\Http\Request;
  5. use App\Http\Controllers\Controller;
  6. use \App\Http\Models;
  7. use Illuminate\Support\Facades\DB;
  8. use \Exception;
  9. use App\Http\Appadapter\PartySign;
  10. use Monolog\Logger;
  11. use Monolog\Handler\StreamHandler;
  12. /**
  13. * 第三方管理类
  14. *
  15. *
  16. */
  17. /**
  18. * Class AppController
  19. * 用于接收第三方通知(eg:用户下线)
  20. * @package App\Http\Controllers\Api
  21. */
  22. class AppController extends Controller
  23. {
  24. public $logger;
  25. /**
  26. * 构造函数
  27. *
  28. * @access public
  29. * @param mixed $req 数据传输
  30. * @return array JsonString
  31. */
  32. public function __construct() {
  33. $this->logger = new Logger('app');
  34. $this->logger->pushHandler(new StreamHandler(storage_path('logs/app.log'), Logger::WARNING));
  35. }
  36. /**
  37. * 接收app发来的下线通知
  38. */
  39. public function loginOut(Request $req){
  40. $input = $req->input();
  41. $this->logger->addWarning('loginOut get:'.json_encode($input));
  42. if(!isset($input['money']) || !preg_match('/^[0-9]{1,8}(.[0-9]{1,2})?$/', $input['money'])){
  43. $this->logger->addError('loginOut out: status -201;请传入正确的金额');
  44. return toJson(-201, '请传入正确的金额', []);
  45. }
  46. $money = $req->input('money');
  47. $appUsername = $req->input('username');
  48. $appUserModel = new Models\AppUser();
  49. $appUserInfo = $appUserModel->where('app_username',$appUsername)->first();
  50. $mathches = array();
  51. $re = preg_match('/^t(\d+)_([\w\W]+)_a(\d+)$/', $appUsername, $mathches);
  52. if(empty($mathches)){
  53. $this->logger->addError('loginOut out:-202, 用户名不能被识别');
  54. return toJson(-202, '用户名不能被识别', []);
  55. }
  56. $partyId = $mathches[1];
  57. $appId = $mathches[3];
  58. $partyUserName = $mathches[2];
  59. $appModel = new Models\App;
  60. $appInfo = $appModel->where('id', $appId)->first();
  61. DB::beginTransaction();
  62. //更新额度
  63. /*$result = $partyModel->where('id', $partyInfo['id'])->update(array(
  64. 'balance' => $partyInfo['balance'] - $money
  65. ));
  66. if($result === false){
  67. $appUserModel->rollBack();
  68. return toJson(-4, '系统繁忙', []);
  69. }*/
  70. //更新额度
  71. $result = $appModel->where('id', $appId)->update(array(
  72. 'balance' => $appInfo['balance'] - $money
  73. ));
  74. if($result === false){
  75. DB::rollBack();
  76. $this->logger->addError('loginOut out:-104, 更新额度失败');
  77. return toJson(-104, '系统繁忙', []);
  78. }
  79. //记录日志
  80. $result = $balanceLogModel = new Models\BalanceLog();
  81. $balanceLogModel->insert([
  82. 'type' => 2,
  83. 'money' => $money,
  84. 'app_id' => $appInfo['id'],
  85. 'app_username' => $appUsername,
  86. 'party_id' =>$partyId,
  87. 'party_username' => $partyUserName,
  88. ]);
  89. if($result === false){
  90. $appUserModel->rollBack();
  91. $this->logger->addError('loginOut out:-104, 记录日志失败');
  92. return toJson(-104, '系统繁忙', []);
  93. }
  94. DB::commit();
  95. //TODO 调用第三方平台登出接口,更新第三方额度
  96. }
  97. public function getToken(Request $request){
  98. $data = $request->input();
  99. $secret = 'abcds';
  100. $partySign = new PartySign($secret);
  101. $data = $partySign->signString($data);
  102. return $data;
  103. }
  104. }