diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 33d2e109..262efb00 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -65,6 +65,15 @@ class ApplicationController < ActionController::Base include Redmine::MenuManager::MenuController helper Redmine::MenuManager::MenuHelper + def ecloud_auth ucloud_user_id + euser = EcloudUser.where("id =? and opttype not in(3, 5)", ucloud_user_id).first + if euser.present? # 开通过业务 + # + else + false + end + end + def ec_public_auth major_school unless User.current.admin? || major_school.template_major || major_school.school.users.where(:id => User.current.id).count > 0 || major_school.ec_major_school_users.where(:user_id => User.current.id).count > 0 || diff --git a/app/controllers/ecloud_controller.rb b/app/controllers/ecloud_controller.rb index 0201fd73..edf568a9 100644 --- a/app/controllers/ecloud_controller.rb +++ b/app/controllers/ecloud_controller.rb @@ -59,10 +59,14 @@ class EcloudController < ApplicationController create_product_params(params['productparas'], ecloud.try(:id)) if params['productparas'].present? # 为管理员添加一条记录 # 开通的时候都是用户的opttype也是0 - EcloudUser.create!(custid: params['custid'], opttype: params['opttype'], userid: params['userid'], - username: params['username'], useralias: params['useralias'], - mobile: params['mobile'], email: params['email'], begintime: params['begintime'], - endtime: params['endtime']) + # 如果管理员已经存在,则不用重复开通 + euser = EcloudUser.where(id: params['userid'], custid: params['custid']).first + unless euser + EcloudUser.create!(custid: params['custid'], opttype: params['opttype'], userid: params['userid'], + username: params['username'], useralias: params['useralias'], + mobile: params['mobile'], email: params['email'], begintime: params['begintime'], + endtime: params['endtime']) + end elsif params['opttype'] == 2 # 试用转商用 # 变更企业/个人业务 # 业务列表:注销业务(注销试用的套餐),另一个业务项的操作代码是:新增业务(开通商用的套餐) # 需要通过产品服务编号和业务编码来区分哪个产品 diff --git a/app/models/ecloud_users.rb b/app/models/ecloud_users.rb index 9266adb7..99da0df2 100644 --- a/app/models/ecloud_users.rb +++ b/app/models/ecloud_users.rb @@ -1,3 +1,4 @@ class EcloudUser < ActiveRecord::Base + # opttype: # user['opttype']: 操作类型0:开通;1:变更;3: 取消授权;4:暂停;5:恢复; attr_accessible :begintime, :email, :endtime, :mobile, :opttype, :paras, :useralias, :userid, :username, :custid end diff --git a/db/migrate/20190314080802_create_shixun_student_works.rb b/db/migrate/20190314080805_create_shixun_student_works.rb similarity index 86% rename from db/migrate/20190314080802_create_shixun_student_works.rb rename to db/migrate/20190314080805_create_shixun_student_works.rb index 49106739..b4a606ba 100644 --- a/db/migrate/20190314080802_create_shixun_student_works.rb +++ b/db/migrate/20190314080805_create_shixun_student_works.rb @@ -1,3 +1,4 @@ +# encoding: utf-8 class CreateShixunStudentWorks < ActiveRecord::Migration DCODES = %W(2 3 4 5 6 7 8 9 a b c f e f g h i j k l m n o p q r s t u v w x y z) @@ -13,16 +14,16 @@ class CreateShixunStudentWorks < ActiveRecord::Migration end def up - ActiveRecord::Base.transaction do - begin - works = StudentWork.where("myshixun_id != 0 and myshixun_id not in (select id from myshixuns) and (work_score is null or work_score = 0)") - works.update_all(:myshixun_id => 0, :work_status => 0, :work_score => nil, :final_score => nil, - :cost_time => 0, :update_time => nil, :compelete_status => 0, :commit_time => nil) + works = StudentWork.where("myshixun_id != 0 and myshixun_id not in (select id from myshixuns) and (work_score is null or work_score = 0)") + works.update_all(:myshixun_id => 0, :work_status => 0, :work_score => nil, :final_score => nil, + :cost_time => 0, :update_time => nil, :compelete_status => 0, :commit_time => nil) - shixun_works = StudentWork.where("myshixun_id != 0 and myshixun_id not in (select id from myshixuns) and work_score > 0") - shixun_works.each do |work| - shixun = work.homework_common.try(:homework_commons_shixuns).try(:shixun) - user = work.user + shixun_works = StudentWork.where("myshixun_id != 0 and myshixun_id not in (select id from myshixuns) and work_score > 0") + shixun_works.each do |work| + shixun = work.homework_common.try(:homework_commons_shixuns).try(:shixun) + user = work.user + begin + ActiveRecord::Base.transaction do if shixun.present? && user.present? myshixun = Myshixun.where(:user_id => user.id, :shixun_id => shixun.id).first if myshixun.blank?