class ApplicationQuery include Callable private def strip_param(key) params[key].to_s.strip.presence end # find all the repos that a user has tokens def find_repo_with_token(user_id, page=1, limit=10) params = { "request-type": "query user balance of all repos by page", "username": user_id.to_s, "page": page.to_i, "page_num": limit.to_i }.to_json resp_body = Blockchain::InvokeBlockchainApi.call(params) if resp_body['status'] != 0 raise "区块链接口请求失败." else token_list = resp_body['UserBalanceList'].nil? ? [] : resp_body['UserBalanceList'] return token_list, resp_body['total_count'] end end # find one repo that a user has tokens def find_one_balance(user_id, project_id) # return 3 statuses: UnknownErr/ResUserNotExisted/Success params = { "request-type": "query user balance of single repo", "username": user_id.to_s, "token_name": project_id.to_s }.to_json resp_body = Blockchain::InvokeBlockchainApi.call(params) if resp_body['status'] == 0 return resp_body['balance'] elsif resp_body['status'] == 100 return 0 # 找不到用户返回0 else raise "区块链接口请求失败." end end # query the basic info of a repository def find_blockchain_repo_info(project_id) params = { "request-type": "query repo basic info", "token_name": project_id.to_s }.to_json resp_body = Blockchain::InvokeBlockchainApi.call(params) if resp_body['status'] == 0 return resp_body else raise "区块链接口请求失败." end end end