ContractController.php 3.1 KB

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