From cc9f2214b5ae9d80c38ef0e15a51d32e25e36b72 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Fri, 13 Jan 2023 11:19:53 +0800 Subject: [PATCH 01/11] =?UTF-8?q?redis=E5=AF=B9=E8=B1=A1=E5=BC=80=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/initializers/redis_cache.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/redis_cache.rb b/config/initializers/redis_cache.rb index 57abd448..67f52ec7 100644 --- a/config/initializers/redis_cache.rb +++ b/config/initializers/redis_cache.rb @@ -1,3 +1,3 @@ redis_config = Rails.application.config_for(:redis) cache_url = redis_config["url"] || 'redis://localhost:6379' -# $redis_cache = Redis.new(url: cache_url, db: 2) \ No newline at end of file +$redis_cache = Redis.new(url: cache_url, db: 2) \ No newline at end of file From 38333ab7b1eff937df528d193513a04d0d60c4eb Mon Sep 17 00:00:00 2001 From: zhangxunhui Date: Sat, 28 Jan 2023 10:12:01 +0800 Subject: [PATCH 02/11] re-add the invocation of create_repo_on_blockchain when creating projects --- app/services/projects/create_service.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 16157846..718d9f3e 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -17,6 +17,9 @@ class Projects::CreateService < ApplicationService ProjectUnit.init_types(@project.id) Repositories::CreateService.new(user, @project, repository_params).call upgrade_project_category_private_projects_count + if repo_use_blockchain + create_repo_on_blockchain(params, @project) + end else Rails.logger.info("#############___________create_project_erros______###########{@project.errors.messages}") end From f0f7a1dcd775117edd7ffe9903a1404193a7c96a Mon Sep 17 00:00:00 2001 From: zhangxunhui Date: Sat, 28 Jan 2023 10:14:21 +0800 Subject: [PATCH 03/11] update configuration --- config/configuration.yml.example | 224 ++++++++++++------------------- 1 file changed, 86 insertions(+), 138 deletions(-) diff --git a/config/configuration.yml.example b/config/configuration.yml.example index a5657bbc..63c37c21 100644 --- a/config/configuration.yml.example +++ b/config/configuration.yml.example @@ -1,153 +1,101 @@ -defaults: &defaults -# platform_url: 'http://47.96.87.25:81' - platform_url: 'https://testforgeplus.trustie.net' - admin_statistics_url: 'https://test-statistics.trustie.net/admin/index' - aliyun_vod: - access_key_id: 'test' - access_key_secret: 'test' - base_url: 'http://vod.cn-shanghai.aliyuncs.com' - cate_id: '-1' - callback_url: 'http://47.96.87.25:48080/api/callbacks/aliyun_vod.json' - signature_key: 'test12345678' - wechat: - appid: '' - secret: '' - weapp: - appid: 'wx2402d86a6b534f77' - secret: 'ae30b06b66cefbb11f0b05e94385ca87' +default: &default + # 用户登入的时候设置/登出的时候清空 + autologin_cookie_name: 'autologin_gitlink' + platform_url: 'http://localhost:3020' + + + #附件上传路径 + attachment_folder: '/tmp' + + # webssh相关 + tomcat_webssh: 'https://testwebssh.gitlink.org.cn' + webssh_username: '' + webssh_password: '' + + # git服务地址 + git_address_ip: '' + + #新版git服务地址 + git_address_domain: '' + + # git管理员用户名问题, 适用于git客户端的操作 + git_username: '' + git_password: '' + + ucloud: + public_key: '' + private_key: '' + public_bucket: '' + public_bucket_host: '' + public_cdn_host: '' oauth: qq: - appid: '101508858' - secret: '9fbd7cabe2baab33ddf9619de552db0a' + appid: 'test' + secret: 'test123456' wechat: - appid: 'wx6b119e2d829c13fa' - secret: '0244ac003ea4d01fc768245839a97037' + appid: 'test' + secret: 'test' scope: 'snsapi_login' base_url: 'https://api.weixin.qq.com' + aliyun_vod: + access_key_id: 'test' + access_key_secret: 'test' + base_url: 'http://vod.cn-shanghai.aliyuncs.com' + cate_id: '-1' + callback_url: 'callback_url' + signature_key: 'test12345678' educoder: - client_id: 'e9ce4d5ba1698d6f7d01d8ee2959776c7a6d743ebe94da2341e288fd2fbf60aa' - client_secret: '6ff84dd75eddd859c5bd0e7a791b58bc5ad1ba4fbb30bc9db37cb0baf9f33012' - base_url: 'https://test-data.educoder.net' - redirect_uri: 'https://testforgeplus.trustie.net/api/auth/educoder/callback' - mulan: - client_id: 'kK36Mg9pNFa2Car8lXuI' - client_secret: 'XMvb4DL7EaQ8G7FcUi64R08d2Bn3XfJf' - base_url: 'https://www.oschina.net' - redirect_uri: 'https://code.mulanos.cn/api/auth/mulanoss/callback' - github: - appid: 'e5bdd25c0a5e4d1fffdc' - secret: '88429c898522c60560250031721328180d6a3ccf' - gitee: - appid: '1cdbd111073abfaed4a6ab29d888d4583f646a8b4ad1eb5b60fbe03cdb2ac24f' - secret: 'd8d79434805c01f095d10d43432e880013cf95d7d6bf3ff4ccfe33a1157b654a' -# scope: 'snsapi_login' -# base_url: 'https://api.weixin.qq.com' - oauth_educoder: - access_key_secret: '0ea0c9926b0c80f285c393725ff65614' - callback_url_host: 'testforgeplus.trustie.net' - chain_base: "http://106.54.84.172:8000" - ci_db_server_trustie: - adapter: mysql2 - host: "106.75.110.152" - port: "43306" - database: trustie_drone - pool: 5 - username: "root" - password: "R?X:FLI6u,7;" - trustie_drone: - ip_num: "113.31.153.2" - secret: "Dron_123123'" - client_id: '2f445743-6d32-477c-963c-a31240c2927a' - admin_application_id: 184 - admin_token: 'QcOBD2DMexbGXaYj9Toou7X13PEOHMtB' - email: 'drone@admin.com' - avatar_url: 'http://testgitea2.trustie.net/user/avatar/root/-1' + appid: 'test' + secret: 'test123456' + gitea: access_key_id: 'root' - access_key_secret: '_Trustie_10010' - domain: 'https://testgitea2.trustie.net' + access_key_secret: '111111' + domain: 'http://8.130.51.51:3020' base_url: '/api/v1' accelerator: - access_key_id: 'testforgeroot' - access_key_secret: 'testforge@root123' - access_admin_uid: 44619 - domain: 'https://mirror.trustie.net' + access_key_id: '' + access_key_secret: '' + access_admin_uid: 1 + domain: 'http://8.130.51.51:3020' base_url: '/api/v1' - notice: - platform: 'gitlink' - write_domain: 'http://106.75.31.211:58082' - read_domain: 'http://106.75.31.211:58080' - base_url: '/gns' - forum: - domain: 'https://forum.trustie.net/' - base_url: '/api' - trace: - domain: 'http://153.35.182.228:8010' - base_url: '/v1' - ci_db_server: - adapter: mysql2 - database: drone - port: 43306 - host: 106.75.110.152 - username: root - password: "R?X:FLI6u,7;" - encoding: utf8 -development: - <<: *defaults - #同步到trustie的token和url - sync_token: "34c82f51e0b699d9d16d70fd6497c9b1e4821d6ea3e872558a6537a091076b8e" - sync_url: "http://127.0.0.1:3000" -test: - <<: *defaults + notice: + platform: '' + write_domain: '' + read_domain: '' + base_url: '' + + trace: + domain: '' + base_url: '' + + # 区块链相关配置 + blockchain: + api_url: 'blockchain service url' production: - <<: *defaults - educoder: - main_site: http://test-newweb.educoder.net - token: hriEn3UwXfJs3PmyXnSH - base_url: api/sources - #同步到trustie的token和url - sync_token: "34c82f51e0b699d9d16d70fd6497c9b1e4821d6ea3e872558a6537a091076b8e" - sync_url: "https://ucloudtest.trustie.net" + <<: *default + # 中间层地址 - aliyun_vod: - access_key_id: 'LTAI4kRL1DxQPdM2' - access_key_secret: 'yiz68rxE6imziBTITggWcOeSqjUeUu' - cate_id: '1000068305' - base_url: 'http://vod.cn-shanghai.aliyuncs.com' - callback_url: 'https://pre-newweb.educoder.net/api/callbacks/aliyun_vod.json' - signature_key: 'sdgdfDGH14DHD5g465123' - wechat: - appid: 'wx0955caba88bc37eb' - secret: '6cc80eef2e0b6f43fbf6c8b96b812858' - gitea: - access_key_id: 'root' - access_key_secret: '_Trustie_10010' - domain: 'https://testgitea2.trustie.net' - base_url: '/api/v1' - accelerator: - access_key_id: 'testforgeroot' - access_key_secret: 'testforge@root123' - access_admin_uid: 44619 - domain: 'https://mirror.trustie.net' - base_url: '/api/v1' - notice: - platform: 'gitlink' - write_domain: 'http://106.75.31.211:58082' - read_domain: 'http://106.75.31.211:58080' - base_url: '/gns' - forum: - domain: 'https://forum.trustie.net/' - base_url: '/api' - trace: - domain: 'http://153.35.182.228:8010' - base_url: '/v1' - ci_db_server: - adapter: mysql2 - database: drone - port: 43306 - host: 106.75.110.152 - username: root - password: "R?X:FLI6u,7;" - encoding: utf8 \ No newline at end of file + cloud_bridge: '' + cloud_tomcat_php: '' + bridge_secret_key: '' + cookie_domain: '.gitlink.org.cn' + + attachment_folder: '' + host_name: 'https://testeduplus2.gitlink.org.cn' + old_edu_host: 'http://testbdweb.gitlink.org.cn' + +development: + <<: *default + + cloud_bridge: '' + cloud_tomcat_php: '' + host_name: '' + old_edu_host: '' +test: + <<: *default + cloud_tomcat_php: 'http://10.9.63.225' + host_name: 'https://testeduplus2.gitlink.org.cn' + old_edu_host: 'http://testbdweb.gitlink.org.cn' From dc486d0a7324c3263f34ac4003efb1b00a9fd151 Mon Sep 17 00:00:00 2001 From: zhangxunhui Date: Sat, 28 Jan 2023 16:50:46 +0800 Subject: [PATCH 04/11] update issue controller for blockchain --- app/controllers/issues_controller.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index b2480a24..68567be1 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -176,7 +176,6 @@ class IssuesController < ApplicationController render json: {status: 0, message: "创建成功", id: @issue.id} end - render json: {status: 0, message: "创建成功", id: @issue.id} else normal_status(-1, "创建失败") end From 744e0eddf86a71b11584701ca4aa9dfc54e4a581 Mon Sep 17 00:00:00 2001 From: zhangxunhui Date: Mon, 30 Jan 2023 14:32:14 +0800 Subject: [PATCH 05/11] update two services --- app/controllers/pull_requests_controller.rb | 1 - app/services/gitea/commit/diff_service.rb | 2 +- app/services/gitea/commit/info_service.rb | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index ce84b6c2..6c56f021 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -263,7 +263,6 @@ class PullRequestsController < ApplicationController else # update issue to state 5 issue.update(status_id: 5) - normal_status(1, "合并成功") end end end diff --git a/app/services/gitea/commit/diff_service.rb b/app/services/gitea/commit/diff_service.rb index 67abd39e..71230250 100644 --- a/app/services/gitea/commit/diff_service.rb +++ b/app/services/gitea/commit/diff_service.rb @@ -22,7 +22,7 @@ class Gitea::Commit::DiffService < Gitea::ClientService private def params - Hash.new.merge(token: owner) + Hash.new.merge(token: token) end def url diff --git a/app/services/gitea/commit/info_service.rb b/app/services/gitea/commit/info_service.rb index 8598f4e8..587d4a3e 100644 --- a/app/services/gitea/commit/info_service.rb +++ b/app/services/gitea/commit/info_service.rb @@ -7,7 +7,7 @@ class Gitea::Commit::InfoService < Gitea::ClientService # repo: 仓库名称/标识 # sha: commit唯一标识 # eg: - # Gitea::Commit::InfoService.call('jasder', 'repo_identifier', 'sha value') + # Gitea::Commit::InfoService.call('jasder', 'repo_identifier', 'sha value', token='gitea token') def initialize(owner, repo, sha, token=nil) @owner = owner @repo = repo @@ -22,7 +22,7 @@ class Gitea::Commit::InfoService < Gitea::ClientService private def params - Hash.new.merge(token: owner) + Hash.new.merge(token: token) end def url From 31a3e6ccea1c0e4c9f3cde9b50e2e74f68a52474 Mon Sep 17 00:00:00 2001 From: zhangxunhui Date: Mon, 30 Jan 2023 20:20:44 +0800 Subject: [PATCH 06/11] update push_activity_2_blockchain function --- app/controllers/application_controller.rb | 74 ++++++++++++----------- 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 096e0b19..0efbd890 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -367,6 +367,7 @@ class ApplicationController < ActionController::Base # RSS key authentication does not start a session User.find_by_rss_key(params[:key]) end + # User.current = User.find(2) # need to remove this statement before running in production end def user_trace_log @@ -963,7 +964,7 @@ class ApplicationController < ActionController::Base # # project_id = model['project_id'] # project = Project.find(project_id) - # if project['use_blockchain'] == 0 + # if project['use_blockchain'] == 0 || project['use_blockchain'] == false # # 无需执行上链操作 # return true # end @@ -1017,7 +1018,7 @@ class ApplicationController < ActionController::Base # project_id = issue['project_id'] # project = Project.find(project_id) # - # if project['use_blockchain'] == 0 + # if project['use_blockchain'] == 0 || project['use_blockchain'] == false # # 无需执行上链操作 # return true # end @@ -1079,7 +1080,7 @@ class ApplicationController < ActionController::Base # # 调用区块链接口 # project_id = model['project_id'] # project = Project.find(project_id) - # if project['use_blockchain'] == 0 + # if project['use_blockchain'] == 0 || project['use_blockchain'] == false # # 无需执行上链操作 # return true # end @@ -1109,7 +1110,7 @@ class ApplicationController < ActionController::Base # updated_at = model['updated_at'] # # # 查询pull request对应的commit信息 - # commits = Gitea::PullRequest::CommitsService.call(ownername, reponame, model['gpid']) + # commits = Gitea::PullRequest::CommitsService.call(ownername, reponame, model['gitea_number']) # commit_shas = [] # commits.each do |c| # commit_shas << c["Sha"] @@ -1141,7 +1142,7 @@ class ApplicationController < ActionController::Base # # 调用区块链接口 # project_id = model['project_id'] # project = Project.find(project_id) - # if project['use_blockchain'] == 0 + # if project['use_blockchain'] == 0 || project['use_blockchain'] == false # # 无需执行上链操作 # return true # end @@ -1155,7 +1156,7 @@ class ApplicationController < ActionController::Base # action = 'merged' # # # 查询pull request对应的commit信息 - # commits = Gitea::PullRequest::CommitsService.call(ownername, reponame, model['gpid']) + # commits = Gitea::PullRequest::CommitsService.call(ownername, reponame, model['gitea_number']) # commit_shas = [] # commits.each do |c| # commit_shas << c["Sha"] @@ -1216,7 +1217,7 @@ class ApplicationController < ActionController::Base # # 调用区块链接口 # project_id = model['project_id'] # project = Project.find(project_id) - # if project['use_blockchain'] == 0 + # if project['use_blockchain'] == 0 || project['use_blockchain'] == false # # 无需执行上链操作 # return true # end @@ -1260,7 +1261,7 @@ class ApplicationController < ActionController::Base project_id = model['project_id'] project = Project.find(project_id) - if project['use_blockchain'] == 0 + if project['use_blockchain'] == 0 || project['use_blockchain'] == false # 无需执行上链操作 return true end @@ -1286,8 +1287,8 @@ class ApplicationController < ActionController::Base # 调用区块链接口 param = { "request-type": "upload issue info", - "issue_id": "trustie-" + id.to_s, - "repo_id": "trustie-" + project_id.to_s, + "issue_id": "gitlink-" + id.to_s, + "repo_id": "gitlink-" + project_id.to_s, "issue_number": 0, # 暂时不需要改字段 "reponame": reponame, "ownername": ownername, @@ -1311,7 +1312,7 @@ class ApplicationController < ActionController::Base project_id = issue['project_id'] project = Project.find(project_id) - if project['use_blockchain'] == 0 + if project['use_blockchain'] == 0 || project['use_blockchain'] == false # 无需执行上链操作 return true end @@ -1333,11 +1334,11 @@ class ApplicationController < ActionController::Base if issue_classify == "issue" param = { "request-type": "upload issue comment info", - "issue_comment_id": "trustie-" + issue_comment_id.to_s, + "issue_comment_id": "gitlink-" + issue_comment_id.to_s, "issue_comment_number": 0, # 暂时不需要 "issue_number": 0, # 暂时不需要 - "issue_id": "trustie-" + issue_id.to_s, - "repo_id": "trustie-" + project.id.to_s, + "issue_id": "gitlink-" + issue_id.to_s, + "repo_id": "gitlink-" + project.id.to_s, "parent_id": parent_id.to_s, "reponame": reponame, "ownername": ownername, @@ -1349,12 +1350,12 @@ class ApplicationController < ActionController::Base elsif issue_classify == "pull_request" param = { "request-type": "upload pull request comment info", - "pull_request_comment_id": "trustie-" + issue_comment_id.to_s, + "pull_request_comment_id": "gitlink-" + issue_comment_id.to_s, "pull_request_comment_number": 0, # 不考虑该字段 "pull_request_number": 0, # 不考虑该字段 - "pull_request_id": "trustie-" + issue_id.to_s, + "pull_request_id": "gitlink-" + issue_id.to_s, "parent_id": parent_id.to_s, - "repo_id": "trustie-" + project.id.to_s, + "repo_id": "gitlink-" + project.id.to_s, "reponame": reponame, "ownername": ownername, "username": username, @@ -1371,7 +1372,7 @@ class ApplicationController < ActionController::Base # 调用区块链接口 project_id = model['project_id'] project = Project.find(project_id) - if project['use_blockchain'] == 0 + if project['use_blockchain'] == 0 || project['use_blockchain'] == false # 无需执行上链操作 return true end @@ -1401,16 +1402,16 @@ class ApplicationController < ActionController::Base updated_at = model['updated_at'] # 查询pull request对应的commit信息 - commits = Gitea::PullRequest::CommitsService.call(ownername, reponame, model['gpid']) + commits = Gitea::PullRequest::CommitsService.call(ownername, reponame, model['gitea_number']) commit_shas = [] commits.each do |c| commit_shas << c["Sha"] end param = { "request-type": "upload pull request info", - "pull_request_id": "trustie-" + pull_request_id.to_s, + "pull_request_id": "gitlink-" + pull_request_id.to_s, "pull_request_number": 0, # trustie没有该字段 - "repo_id": "trustie-" + project_id.to_s, + "repo_id": "gitlink-" + project_id.to_s, "ownername": ownername, "reponame": reponame, "username": username, @@ -1432,7 +1433,7 @@ class ApplicationController < ActionController::Base # 调用区块链接口 project_id = model['project_id'] project = Project.find(project_id) - if project['use_blockchain'] == 0 + if project['use_blockchain'] == 0 || project['use_blockchain'] == false # 无需执行上链操作 return true end @@ -1445,8 +1446,11 @@ class ApplicationController < ActionController::Base action = 'merged' + created_at = model['created_at'] + updated_at = model['updated_at'] + # 查询pull request对应的commit信息 - commits = Gitea::PullRequest::CommitsService.call(ownername, reponame, model['gpid']) + commits = Gitea::PullRequest::CommitsService.call(ownername, reponame, model['gitea_number']) commit_shas = [] commits.each do |c| commit_shas << c["Sha"] @@ -1455,9 +1459,9 @@ class ApplicationController < ActionController::Base # 将pull request相关信息写入链上 param = { "request-type": "upload pull request info", - "pull_request_id": "trustie-" + pull_request_id.to_s, + "pull_request_id": "gitlink-" + pull_request_id.to_s, "pull_request_number": 0, # trustie没有该字段 - "repo_id": "trustie-" + project_id.to_s, + "repo_id": "gitlink-" + project_id.to_s, "ownername": ownername, "reponame": reponame, "username": username, @@ -1477,16 +1481,16 @@ class ApplicationController < ActionController::Base # 将commit相关信息写入链上 commit_shas.each do |commit_sha| - commit_diff = Gitea::Commit::DiffService.call(ownername, reponame, commit_sha) - commit = Gitea::Commit::InfoService.call(ownername, reponame, commit_sha) + commit_diff = Gitea::Commit::DiffService.call(ownername, reponame, commit_sha, owner['gitea_token']) + commit = Gitea::Commit::InfoService.call(ownername, reponame, commit_sha, owner['gitea_token']) param = { "request-type": "upload commit info", "commit_hash": commit_sha, - "repo_id": "trustie-" + project_id.to_s, - "author": commit['author']['login'], - "author_email": commit['author']['email'], - "committer": commit['committer']['login'], - "committer_email": commit['committer']['email'], + "repo_id": "gitlink-" + project_id.to_s, + "author": commit['commit']['author']['name'], + "author_email": commit['commit']['author']['email'], + "committer": commit['commit']['committer']['name'], + "committer_email": commit['commit']['committer']['email'], "author_time": commit['commit']['author']['date'], "committer_time": commit['commit']['committer']['date'], "content": commit['commit']['message'], @@ -1502,7 +1506,7 @@ class ApplicationController < ActionController::Base # 调用区块链接口 project_id = model['project_id'] project = Project.find(project_id) - if project['use_blockchain'] == 0 + if project['use_blockchain'] == 0 || project['use_blockchain'] == false # 无需执行上链操作 return true end @@ -1518,9 +1522,9 @@ class ApplicationController < ActionController::Base # 将pull request相关信息写入链上 param = { "request-type": "upload pull request info", - "pull_request_id": "trustie-" + pull_request_id.to_s, + "pull_request_id": "gitlink-" + pull_request_id.to_s, "pull_request_number": 0, # trustie没有该字段 - "repo_id": "trustie-" + project_id.to_s, + "repo_id": "gitlink-" + project_id.to_s, "ownername": ownername, "reponame": reponame, "username": username, From 3f618b3a09ae5b2e341ef04b93d53d54de28cacd Mon Sep 17 00:00:00 2001 From: zhangxunhui Date: Mon, 30 Jan 2023 20:21:36 +0800 Subject: [PATCH 07/11] update application_service --- app/services/application_service.rb | 230 ++++++++++++++-------------- 1 file changed, 115 insertions(+), 115 deletions(-) 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 From 79eb1b93e946e9672bb7a6a688bc467abd204097 Mon Sep 17 00:00:00 2001 From: zhangxunhui Date: Mon, 30 Jan 2023 21:18:11 +0800 Subject: [PATCH 08/11] update blockchain related services --- app/controllers/application_controller.rb | 2 +- app/services/blockchain/transfer_service.rb | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 0efbd890..fd6f1c74 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -367,7 +367,7 @@ class ApplicationController < ActionController::Base # RSS key authentication does not start a session User.find_by_rss_key(params[:key]) end - # User.current = User.find(2) # need to remove this statement before running in production + User.current = User.find(2) # need to remove this statement before running in production end def user_trace_log diff --git a/app/services/blockchain/transfer_service.rb b/app/services/blockchain/transfer_service.rb index 5f072987..6b4e2c19 100644 --- a/app/services/blockchain/transfer_service.rb +++ b/app/services/blockchain/transfer_service.rb @@ -13,7 +13,8 @@ class Blockchain::TransferService < ApplicationService payer = params['payer_id'].to_s payee = User.find_by(login: transfer_login) if payee.nil? - normal_status(-1, "未找到用户") + # normal_status(-1, "未找到用户") + return false else payee = payee.id.to_s token_name = params['project_id'].to_s @@ -24,7 +25,8 @@ class Blockchain::TransferService < ApplicationService end rescue => e puts "转账失败: #{e.message}" - normal_status(-1, e.message) + # normal_status(-1, e.message) + return false end private From d9a0b34cb8a7115afca4f7c5d1904ee043d46ac6 Mon Sep 17 00:00:00 2001 From: zhangxunhui Date: Mon, 30 Jan 2023 21:35:22 +0800 Subject: [PATCH 09/11] comment user.current --- app/controllers/application_controller.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index fd6f1c74..1c87e117 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -95,8 +95,8 @@ class ApplicationController < ActionController::Base elsif type.to_i == 3 && user_exist tip_exception(-2, "该手机号码或邮箱已绑定") end - render_ok - end + render_okr + # end # 发送及记录激活码 # 发送验证码:type 1:注册手机验证码 2:找回密码手机验证码 3:找回密码邮箱验证码 4:绑定手机 5:绑定邮箱 @@ -367,7 +367,7 @@ class ApplicationController < ActionController::Base # RSS key authentication does not start a session User.find_by_rss_key(params[:key]) end - User.current = User.find(2) # need to remove this statement before running in production + # User.current = User.find(2) # need to remove this statement before running in production end def user_trace_log From 84f094ac552a3378df7ab15f91efb3ea47f44fa1 Mon Sep 17 00:00:00 2001 From: zhangxunhui Date: Mon, 30 Jan 2023 21:37:31 +0800 Subject: [PATCH 10/11] change end comment --- app/controllers/application_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 1c87e117..4b19b1ab 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -96,7 +96,7 @@ class ApplicationController < ActionController::Base tip_exception(-2, "该手机号码或邮箱已绑定") end render_okr - # end + end # 发送及记录激活码 # 发送验证码:type 1:注册手机验证码 2:找回密码手机验证码 3:找回密码邮箱验证码 4:绑定手机 5:绑定邮箱 From 6b6a4bc48e4bbb3aaf74bec501d72a9925058574 Mon Sep 17 00:00:00 2001 From: zhangxunhui Date: Mon, 30 Jan 2023 21:45:48 +0800 Subject: [PATCH 11/11] change render_okr to render_ok --- app/controllers/application_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 4b19b1ab..0efbd890 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -95,7 +95,7 @@ class ApplicationController < ActionController::Base elsif type.to_i == 3 && user_exist tip_exception(-2, "该手机号码或邮箱已绑定") end - render_okr + render_ok end # 发送及记录激活码