diff --git a/app/services/application_service.rb b/app/services/application_service.rb index b68fb704..672c2bae 100644 --- a/app/services/application_service.rb +++ b/app/services/application_service.rb @@ -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