|
- 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
|