ContractController.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\FrontController;
  4. use App\Models\Contract;
  5. use App\Models\Invest;
  6. use App\Servers\CommonServer;
  7. use App\Servers\RedisDataServer;
  8. use Illuminate\Support\Facades\Auth;
  9. class ContractController extends FrontController
  10. {
  11. public function __construct()
  12. {
  13. parent::__construct();
  14. }
  15. /**
  16. * 获取基本投资信息
  17. * @return \Illuminate\Http\JsonResponse
  18. */
  19. function getInvestData(){
  20. $mId=Auth::id();
  21. $sysAddress=CommonServer::creatServer()->getConfigValue('sys_address');
  22. $num=Contract::where('m_id',$mId)->where('status',2)->count();
  23. $sendNum=Contract::where('m_id',$mId)->where('status',1)->count();
  24. if($num>0){
  25. $investId=2;
  26. }else{
  27. $investId=1;
  28. }
  29. $investData=Invest::where('id',$investId)->select(['id','invest_money'])->first();
  30. if(empty($investData)){
  31. return $this->apiResponseError('信息异常');
  32. }
  33. $investData->{'sysAddress'}=$sysAddress;
  34. $investData->{'sendNum'}=$sendNum;
  35. return $this->apiResponseSuccess('获取信息成功',$investData);
  36. }
  37. /**
  38. * 执行报单
  39. * @return \Illuminate\Http\JsonResponse
  40. */
  41. function setInvest(){
  42. $mId=Auth::id();
  43. $redis_on_name = 'setInvest' . $mId;
  44. $redis_time = RedisDataServer::creatServer()->getData($redis_on_name);
  45. $time=time();
  46. if(!empty($redis_time) && $redis_time >$time-2){
  47. return $this->apiResponseError( '请不要频繁执行');
  48. }
  49. RedisDataServer::creatServer()->setData($redis_on_name,$time,'str',2,false);
  50. $investId=request()->input('id');
  51. $txid=request()->input('txid');
  52. if(empty($investId)){
  53. return $this->apiResponseError('缺少必要参数');
  54. }
  55. if(empty($txid)){
  56. return $this->apiResponseError('缺少必要参数');
  57. }
  58. $num=Contract::where('hash',$txid)->count();
  59. if($num>0){
  60. return $this->apiResponseError('当前交易已执行');
  61. }
  62. $investData=Invest::where('id',$investId)->select(['id','invest_money'])->first();
  63. $contractData=Contract::create([
  64. 'm_id'=>$mId,
  65. 'type'=>$investId,
  66. 'status'=>1,
  67. 'hash'=>$txid,
  68. 'broadcast_data'=>'',
  69. 'money'=>$investData->{'invest_money'},
  70. 'error_msg'=>'',
  71. ]);
  72. if(empty($contractData)){
  73. return $this->apiResponseError('执行失败');
  74. }else{
  75. return $this->apiResponseSuccess('执行成功');
  76. }
  77. }
  78. }