user.rb 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. # encoding:utf-8
  2. #会员表
  3. require 'digest/md5'
  4. class User < ActiveRecord::Base
  5. has_paper_trail
  6. self.table_name = "users"
  7. belongs_to :parent_signup_channel, :foreign_key => :signup_channel_id
  8. after_update :after_update
  9. after_create :after_create
  10. after_destroy :after_destroy
  11. attr_accessor :sub, :wx_user, :v_head, :getNickname, :getProvince
  12. validates :tel , uniqueness: true
  13. # validates :pwd , :trade_pwd , presence: true
  14. # vaildates_numericality_of :tel
  15. # def wx_user
  16. # wx_user = WxUser.where("user_id = ?", self.id).first
  17. # if !wx_user.blank?
  18. # return wx_user.nickname
  19. # else
  20. # return "未关联"
  21. # end
  22. # end
  23. # def sub
  24. # wx_user = WxUser.where("user_id = ?", self.id).first
  25. # if !wx_user.blank?
  26. # return wx_user.subscribe
  27. # end
  28. # end
  29. def after_update
  30. test_redis = Redis.new(:host=>"r-wz9dtt12y12ns2b97gpd.redis.rds.aliyuncs.com",:db=>"0",:user=>"root",:password=>"Fohow123!@#")
  31. redis = Redis.new(:host=>"r-wz9dtt12y12ns2b97gpd.redis.rds.aliyuncs.com",:db=>"0",:user=>"root",:password=>"Fohow123!@#")
  32. userKey= format("user_model.GetKeyByUserId:%d",self.id)
  33. redis.del(userKey)
  34. test_redis.del(userKey)
  35. end
  36. def after_create
  37. md5_trade_pwd = Digest::MD5.hexdigest(self.trade_pwd)
  38. self.trade_pwd = md5_trade_pwd
  39. self.save
  40. end
  41. SEX_ENUM= [["未知","0"], ["男性","1"], ["女性", "2"]]
  42. IMG_STORE_PATH = "user"
  43. rails_admin do
  44. navigation_label '用户管理'
  45. weight -400
  46. list do
  47. filters [:id,:tel]
  48. # include_all_fields
  49. field :id
  50. field :nickname
  51. field :getNickname
  52. field :real_name
  53. field :sex, :enum do
  54. enum do
  55. SEX_ENUM
  56. end
  57. end
  58. # field :age
  59. field :head do
  60. formatted_value do
  61. bindings[:view].tag(:img,{:src => bindings[:object].get_head,
  62. :style => 'width: 100px;height: 100px;cursor: pointer;display: block;max-width: 100px',
  63. :onClick => "javascript:window.open('#{bindings[:object].get_head}')"})
  64. end
  65. end
  66. field :tel
  67. field :province
  68. field :city
  69. field :signup_channel_id
  70. # field :sign_up_channel
  71. field :signup_ip
  72. field :invite_id
  73. field :age
  74. field :is_black_user
  75. field :created_at
  76. # field :updated_at
  77. end
  78. show do
  79. field :id
  80. field :nickname
  81. field :real_name
  82. field :identity_card
  83. field :is_certification
  84. field :tel
  85. # field :pwd
  86. # field :trade_pwd
  87. field :birthday
  88. field :city
  89. field :country
  90. field :province
  91. field :sex, :enum do
  92. enum do
  93. SEX_ENUM
  94. end
  95. end
  96. field :age
  97. field :head do
  98. formatted_value do
  99. bindings[:view].tag(:img,{:src => bindings[:object].get_head,
  100. :style => 'width: 100px;height: 100px;cursor: pointer;display: block;max-width: 100px',
  101. :onClick => "javascript:window.open('#{bindings[:object].get_head}')"})
  102. end
  103. end
  104. field :invite_id
  105. field :signup_channel_id
  106. field :signup_ip
  107. field :age
  108. field :is_black_user
  109. field :bank_name
  110. field :bank_account
  111. field :account_name
  112. field :created_at
  113. field :updated_at
  114. end
  115. edit do
  116. field :real_name
  117. field :identity_card
  118. field :is_certification
  119. field :tel
  120. #field :pwd
  121. field :trade_pwd
  122. field :birthday
  123. field :nickname
  124. field :city
  125. field :country
  126. field :province
  127. field :sex, :enum do
  128. enum do
  129. SEX_ENUM
  130. end
  131. end
  132. field :age
  133. field :v_head, :file_upload do
  134. pretty_value do
  135. bindings[:view].tag(:img, {:src => bindings[:object].get_head,
  136. :class => 'preview'})
  137. end
  138. end
  139. field :invite_id
  140. field :signup_ip
  141. field :signup_channel_id
  142. field :bank_name
  143. field :bank_account
  144. field :account_name
  145. field :is_black_user
  146. end
  147. end
  148. def get_head
  149. url = "http://#{Ali::Oss::CDN_URL_FOR_HOST}/#{self.head}"
  150. return url
  151. end
  152. def v_head=file
  153. unless file.blank?
  154. clear_head
  155. file_name = "#{UUID.new.generate[0...8].downcase}.jpg"
  156. file_path = "#{IMG_STORE_PATH}/#{file_name}"
  157. Ali::Oss.store(Ali::Oss::BUCKET_NAME_PUBLIC_READ, file_path, file.read)
  158. self.head = file_path
  159. self.save
  160. end
  161. end
  162. def clear_head
  163. file_path = "#{self.head}"
  164. Ali::Oss.delete_object(Ali::Oss::BUCKET_NAME_PUBLIC_READ, file_path)
  165. end
  166. def after_destroy
  167. clear_head
  168. end
  169. def getProvince
  170. if self.province.blank?
  171. wx_user = WxUser.where("user_id =?", self.id).first
  172. if !wx_user.blank?
  173. self.signup_channel_id = wx_user.parent_signup_channel
  174. self.save
  175. end
  176. end
  177. return self.province
  178. end
  179. def getNickname
  180. needUpdate = false
  181. wxUser = WxUser.where("user_id = ?", self.id).first
  182. return "-" if wxUser.blank?
  183. if self.nickname == "" && wxUser.nickname != ""
  184. self.nickname = wxUser.nickname
  185. needUpdate = true if !needUpdate
  186. end
  187. if self.sex == 0 && wxUser.sex != 0
  188. self.sex = wxUser.sex
  189. needUpdate = true if !needUpdate
  190. end
  191. if self.country = "" && wxUser.country != ""
  192. self.country = wxUser.country
  193. needUpdate = true if !needUpdate
  194. end
  195. if self.province = "" && wxUser.province != ""
  196. self.province = wxUser.province
  197. needUpdate = true if !needUpdate
  198. end
  199. if self.city = "" && wxUser.city != ""
  200. self.city = wxUser.city
  201. needUpdate = true if !needUpdate
  202. end
  203. self.save if needUpdate
  204. return self.nickname
  205. end
  206. end