ContractController.php 3.1 KB

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