| @@ -1,115 +1,115 @@ | |||||
| class ApplicationService | |||||
| include Callable | |||||
| Error = Class.new(StandardError) | |||||
| def regix_emoji content | |||||
| " " if content.blank? | |||||
| regex = /[^a-zA-Z0-9\u4E00-\u9FFF]/ | |||||
| content.gsub(regex, '') | |||||
| end | |||||
| private | |||||
| def strip(str) | |||||
| str.to_s.strip.presence | |||||
| end | |||||
| def str_to_boolean str | |||||
| ActiveModel::Type::Boolean.new.cast str | |||||
| end | |||||
| # author: zxh | |||||
| # blockchain创建项目相关api | |||||
| def invoke_blockchain_api(uri, params) | |||||
| begin | |||||
| uri = URI.parse(URI.encode(uri.strip)) | |||||
| res = Net::HTTP.start(uri.host, uri.port) do |http| | |||||
| req = Net::HTTP::Post.new(uri) | |||||
| req['Content-Type'] = 'application/json' | |||||
| req.body = params | |||||
| http.request(req) | |||||
| end | |||||
| if res.code.to_i != 200 | |||||
| puts '区块链接口请求失败.' | |||||
| return false | |||||
| else | |||||
| res_body = JSON.parse(res.body) | |||||
| if res_body.has_key?("status") && res_body["status"] == 0 | |||||
| else | |||||
| puts '区块链接口请求出错.' | |||||
| return false | |||||
| end | |||||
| end | |||||
| return true | |||||
| rescue Exception => e | |||||
| puts '区块链接口请求失败.' | |||||
| return false | |||||
| end | |||||
| end | |||||
| # params: params from index.js page | |||||
| def create_repo_on_blockchain(params, project) | |||||
| username = params['user_id'].to_s | |||||
| token_name = project.id.to_s | |||||
| total_supply = params['blockchain_token_all'].to_i | |||||
| token_balance = [[username, (total_supply * params['blockchain_init_token'].to_i / 100).to_i]] | |||||
| param = { | |||||
| "request-type": "create repo", | |||||
| "username": username, | |||||
| "token_name": token_name, | |||||
| "total_supply": total_supply, | |||||
| "token_balance": token_balance | |||||
| }.to_json | |||||
| invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param) | |||||
| end | |||||
| def transfer_balance_on_blockchain(payer, payee, token_name, amount) | |||||
| param = { | |||||
| "request-type": "transfer amount", | |||||
| "payer": payer, | |||||
| "payee": payee, | |||||
| "token_name": token_name, | |||||
| "amount": amount | |||||
| }.to_json | |||||
| results = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param) | |||||
| return results | |||||
| end | |||||
| def lock_balance_on_blockchain(username, tokenname, amount) | |||||
| param = { | |||||
| "request-type": "lock user balance", | |||||
| "username": username, | |||||
| "token_name": tokenname, | |||||
| "amount": amount | |||||
| }.to_json | |||||
| results = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param) | |||||
| return results | |||||
| end | |||||
| def unlock_balance_on_blockchain(username, tokenname, amount) | |||||
| param = { | |||||
| "request-type": "unlock user balance", | |||||
| "username": username, | |||||
| "token_name": tokenname, | |||||
| "amount": amount | |||||
| }.to_json | |||||
| results = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param) | |||||
| return results | |||||
| end | |||||
| def phone_mail_type value | |||||
| value =~ /^1\d{10}$/ ? 1 : 0 | |||||
| end | |||||
| end | |||||
| class ApplicationService | |||||
| include Callable | |||||
| Error = Class.new(StandardError) | |||||
| def regix_emoji content | |||||
| " " if content.blank? | |||||
| regex = /[^a-zA-Z0-9\u4E00-\u9FFF]/ | |||||
| content.gsub(regex, '') | |||||
| end | |||||
| private | |||||
| def strip(str) | |||||
| str.to_s.strip.presence | |||||
| end | |||||
| def str_to_boolean str | |||||
| ActiveModel::Type::Boolean.new.cast str | |||||
| end | |||||
| # author: zxh | |||||
| # blockchain创建项目相关api | |||||
| def invoke_blockchain_api(uri, params) | |||||
| begin | |||||
| uri = URI.parse(URI.encode(uri.strip)) | |||||
| res = Net::HTTP.start(uri.host, uri.port) do |http| | |||||
| req = Net::HTTP::Post.new(uri) | |||||
| req['Content-Type'] = 'application/json' | |||||
| req.body = params | |||||
| http.request(req) | |||||
| end | |||||
| if res.code.to_i != 200 | |||||
| puts '区块链接口请求失败.' | |||||
| return false | |||||
| else | |||||
| res_body = JSON.parse(res.body) | |||||
| if res_body.has_key?("status") && res_body["status"] == 0 | |||||
| else | |||||
| puts '区块链接口请求出错.' | |||||
| return false | |||||
| end | |||||
| end | |||||
| return true | |||||
| rescue Exception => e | |||||
| puts '区块链接口请求失败.' | |||||
| return false | |||||
| end | |||||
| end | |||||
| # params: params from index.js page | |||||
| def create_repo_on_blockchain(params, project) | |||||
| username = params['user_id'].to_s | |||||
| token_name = project.id.to_s | |||||
| total_supply = params['blockchain_token_all'].to_i | |||||
| token_balance = [[username, (total_supply * params['blockchain_init_token'].to_i / 100).to_i]] | |||||
| param = { | |||||
| "request-type": "create repo", | |||||
| "username": username, | |||||
| "token_name": token_name, | |||||
| "total_supply": total_supply, | |||||
| "token_balance": token_balance | |||||
| }.to_json | |||||
| invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param) | |||||
| end | |||||
| def transfer_balance_on_blockchain(payer, payee, token_name, amount) | |||||
| param = { | |||||
| "request-type": "transfer amount", | |||||
| "payer": payer, | |||||
| "payee": payee, | |||||
| "token_name": token_name, | |||||
| "amount": amount | |||||
| }.to_json | |||||
| results = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param) | |||||
| return results | |||||
| end | |||||
| def lock_balance_on_blockchain(username, tokenname, amount) | |||||
| param = { | |||||
| "request-type": "lock user balance", | |||||
| "username": username, | |||||
| "token_name": tokenname, | |||||
| "amount": amount | |||||
| }.to_json | |||||
| results = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param) | |||||
| return results | |||||
| end | |||||
| def unlock_balance_on_blockchain(username, tokenname, amount) | |||||
| param = { | |||||
| "request-type": "unlock user balance", | |||||
| "username": username, | |||||
| "token_name": tokenname, | |||||
| "amount": amount | |||||
| }.to_json | |||||
| results = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param) | |||||
| return results | |||||
| end | |||||
| def phone_mail_type value | |||||
| value =~ /^1\d{10}$/ ? 1 : 0 | |||||
| end | |||||
| end | |||||