user.rb 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  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 :province
  60. field :city
  61. field :signup_channel_id
  62. # field :sign_up_channel
  63. field :signup_ip
  64. field :invite_id
  65. field :age
  66. field :is_black_user
  67. field :created_at
  68. # field :updated_at
  69. end
  70. show do
  71. field :id
  72. field :nickname
  73. field :real_name
  74. field :identity_card
  75. field :is_certification
  76. field :tel
  77. # field :pwd
  78. # field :trade_pwd
  79. field :birthday
  80. field :city
  81. field :country
  82. field :province
  83. field :sex, :enum do
  84. enum do
  85. SEX_ENUM
  86. end
  87. end
  88. field :age
  89. field :head do
  90. formatted_value do
  91. bindings[:view].tag(:img,{:src => bindings[:object].get_head,
  92. :style => 'width: 100px;height: 100px;cursor: pointer;display: block;max-width: 100px',
  93. :onClick => "javascript:window.open('#{bindings[:object].get_head}')"})
  94. end
  95. end
  96. field :invite_id
  97. field :signup_channel_id
  98. field :signup_ip
  99. field :age
  100. field :is_black_user
  101. field :bank_name
  102. field :bank_account
  103. field :account_name
  104. field :created_at
  105. field :updated_at
  106. end
  107. edit do
  108. field :real_name
  109. field :identity_card
  110. field :is_certification
  111. field :tel
  112. #field :pwd
  113. field :trade_pwd
  114. field :birthday
  115. field :nickname
  116. field :city
  117. field :country
  118. field :province
  119. field :sex, :enum do
  120. enum do
  121. SEX_ENUM
  122. end
  123. end
  124. field :age
  125. field :v_head, :file_upload do
  126. pretty_value do
  127. bindings[:view].tag(:img, {:src => bindings[:object].get_head,
  128. :class => 'preview'})
  129. end
  130. end
  131. field :invite_id
  132. field :signup_ip
  133. field :signup_channel_id
  134. field :bank_name
  135. field :bank_account
  136. field :account_name
  137. field :is_black_user
  138. end
  139. end
  140. def get_head
  141. url = "http://#{Ali::Oss::CDN_URL_FOR_HOST}/#{self.head}"
  142. return url
  143. end
  144. def v_head=file
  145. unless file.blank?
  146. clear_head
  147. file_name = "#{UUID.new.generate[0...8].downcase}.jpg"
  148. file_path = "#{IMG_STORE_PATH}/#{file_name}"
  149. Ali::Oss.store(Ali::Oss::BUCKET_NAME_PUBLIC_READ, file_path, file.read)
  150. self.head = file_path
  151. self.save
  152. end
  153. end
  154. def clear_head
  155. file_path = "#{self.head}"
  156. Ali::Oss.delete_object(Ali::Oss::BUCKET_NAME_PUBLIC_READ, file_path)
  157. end
  158. def after_destroy
  159. clear_head
  160. end
  161. def getProvince
  162. if self.province.blank?
  163. wx_user = WxUser.where("user_id =?", self.id).first
  164. if !wx_user.blank?
  165. self.signup_channel_id = wx_user.parent_signup_channel
  166. self.save
  167. end
  168. end
  169. return self.province
  170. end
  171. def getNickname
  172. needUpdate = false
  173. wxUser = WxUser.where("user_id = ?", self.id).first
  174. return "-" if wxUser.blank?
  175. if self.nickname == "" && wxUser.nickname != ""
  176. self.nickname = wxUser.nickname
  177. needUpdate = true if !needUpdate
  178. end
  179. if self.sex == 0 && wxUser.sex != 0
  180. self.sex = wxUser.sex
  181. needUpdate = true if !needUpdate
  182. end
  183. if self.country = "" && wxUser.country != ""
  184. self.country = wxUser.country
  185. needUpdate = true if !needUpdate
  186. end
  187. if self.province = "" && wxUser.province != ""
  188. self.province = wxUser.province
  189. needUpdate = true if !needUpdate
  190. end
  191. if self.city = "" && wxUser.city != ""
  192. self.city = wxUser.city
  193. needUpdate = true if !needUpdate
  194. end
  195. self.save if needUpdate
  196. return self.nickname
  197. end
  198. end