ContractController.php 3.4 KB

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