user.rb 5.2 KB

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