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 protected def try_lock(key) raise Error, "请稍后再试!" unless $redis_cache.set(key, 1, nx: true, ex: 60.seconds) end def unlock(key) $redis_cache.del(key) end private def strip(str) str.to_s.strip.presence end def str_to_boolean str ActiveModel::Type::Boolean.new.cast str 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]] params = { "request-type": "create repo", "username": username, "token_name": token_name, "total_supply": total_supply, "token_balance": token_balance }.to_json resp_body = Blockchain::InvokeBlockchainApi.call(params) if resp_body['status'] != 0 raise "区块链接口请求失败." end end def transfer_balance_on_blockchain(payer, payee, token_name, amount) params = { "request-type": "transfer amount", "payer": payer, "payee": payee, "token_name": token_name, "amount": amount }.to_json resp_body = Blockchain::InvokeBlockchainApi.call(params) if resp_body['status'] == 5 or resp_body['status'] == 106 or resp_body['status'] == 105 raise resp_body['message'] elsif resp_body['status'] != 0 raise "区块链接口请求失败." else end end def lock_balance_on_blockchain(username, tokenname, amount) params = { "request-type": "lock user balance", "username": username, "token_name": tokenname, "amount": amount }.to_json resp_body = Blockchain::InvokeBlockchainApi.call(params) if resp_body['status'] == 5 or resp_body['status'] == 106 or resp_body['status'] == 103 raise resp_body['message'] elsif resp_body['status'] != 0 raise "区块链接口请求失败." else end end def unlock_balance_on_blockchain(username, tokenname, amount) params = { "request-type": "unlock user balance", "username": username, "token_name": tokenname, "amount": amount }.to_json resp_body = Blockchain::InvokeBlockchainApi.call(params) if resp_body['status'] == 5 or resp_body['status'] == 106 or resp_body['status'] == 104 raise resp_body['message'] elsif resp_body['status'] != 0 raise "区块链接口请求失败." else end end def phone_mail_type value value =~ /^1\d{10}$/ ? 1 : 0 end end