order.rb 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. #encoding=UTF-8
  2. require 'json'
  3. require 'rest-client'
  4. class Order < ActiveRecord::Base
  5. has_paper_trail
  6. self.table_name = 'orders'
  7. validates_presence_of :user_id,:total_price,:order_id
  8. #belongs_to :user, :foreign_key => :user_id
  9. belongs_to :wx_user, :foreign_key => :wx_user_id
  10. has_many :order_details
  11. before_save :before_save
  12. #after_update :after_update
  13. def before_save
  14. if self.express_company.length>0
  15. express = ExpressCompany.where("express_company = ?", self.express_company).first
  16. if !express.blank?
  17. self.express_code = express.express_code
  18. end
  19. end
  20. end
  21. def after_update
  22. test_redis = Redis.new(:host=>"r-wz9dtt12y12ns2b97gpd.redis.rds.aliyuncs.com",:db=>"0",:user=>"root",:password=>"Fohow123!@#")
  23. redis = Redis.new(:host=>"r-wz9dtt12y12ns2b97gpd.redis.rds.aliyuncs.com",:db=>"0",:user=>"root",:password=>"Fohow123!@#")
  24. orderKey= format("order_model.GetOrderByOId:%s",self.order_id)
  25. redis.del(orderKey)
  26. test_redis.del(orderKey)
  27. end
  28. STATUS_ENUM = [["未支付","unpay"],["已关闭","closed"],["待确认","unconfirmed"],["处理中","processing"],["已完成","complete"],["待收货","dispatch"],["已退款","refunded"]]
  29. TYPE_ENUM = [["普通",0],["秒杀",1],["店长",2],["积分",3]]
  30. EXP_ENUM = []
  31. expressCompanys = ExpressCompany.order("id asc")
  32. expressCompanys.each do |exp|
  33. a=[exp.express_company,exp.express_company]
  34. EXP_ENUM.push(a)
  35. end
  36. PAY_WAY_ENUM = [
  37. ["微信支付","weixinpay"],
  38. ["提货券支付","balance"],
  39. ["积分支付","cent"],
  40. ]
  41. SOURCE_ENUM = [["小程序","xcx"],["公众号","gzh"],["第五创系统","d5c_sys"]]
  42. def user_tel
  43. linkUser = User.where("id = ?", self.user_id).first
  44. if !linkUser.blank?
  45. if linkUser.is_black_user
  46. return linkUser.tel + " 【黑名单】"
  47. else
  48. return linkUser.tel
  49. end
  50. else
  51. return "不存在"
  52. end
  53. end
  54. def w_user
  55. if !wx_user.blank?
  56. return wx_user.nickname
  57. else
  58. return "--"
  59. end
  60. end
  61. def merchant
  62. tmp = "-"
  63. prod = Product.where("id = ?", self.product_id).first
  64. if !prod.blank?
  65. merchant = Merchant.where("id = ?", prod.merchant_id).first
  66. if !merchant.blank?
  67. tmp = merchant.name
  68. end
  69. end
  70. return tmp
  71. end
  72. def total_price_format
  73. total_price_f = self.total_price!=0 ? (self.total_price/100.0) :0
  74. return total_price_f.to_s
  75. end
  76. def paied_price_format
  77. case self.pay_way
  78. when "weixinpay"
  79. paied_price_f = self.paied_price!=0 ? ((self.paied_price)/100.0) :0
  80. return paied_price_f.to_s # + "元"
  81. when "balance"
  82. paied_price_f = self.paied_price!=0 ? ((self.paied_price)/100.0) :0
  83. return paied_price_f.to_s #+ "提货券"
  84. when "integral"
  85. paied_price_f = self.paied_price!=0 ? ((self.paied_price)/100.0) :0
  86. return paied_price_f.to_s #+ "提货券"
  87. end
  88. end
  89. def cent_price_format
  90. paied_price_f = self.cent_price!=0 ? ((self.cent_price)/100.0) :0
  91. return paied_price_f.to_s #+ "提货券"
  92. end
  93. def coupon_price_format
  94. coupon_price_f = self.coupon_price!=0 ? ((self.coupon_price)/100.0) :0
  95. return coupon_price_f.to_s
  96. end
  97. rails_admin do
  98. navigation_label '商品管理'
  99. weight -240
  100. list do
  101. filters [:order_id,:status,:pay_way,:receive_time,:wx_user_id,:paied_time]
  102. field :id do
  103. visible false
  104. end
  105. field :order_id
  106. field :order_type, :enum do
  107. filterable true
  108. enum do
  109. TYPE_ENUM
  110. end
  111. end
  112. field :user_id do
  113. visible false
  114. filterable true
  115. end
  116. field :wx_user_id do
  117. filterable true
  118. end
  119. field :wx_user
  120. field :user_tel do
  121. # visible false
  122. end
  123. field :total_price do
  124. visible false
  125. end
  126. field :freight do
  127. visible true
  128. label "运费(元)"
  129. formatted_value do
  130. value!=0 ? (value/100.0):0
  131. end
  132. end
  133. field :total_price_format do
  134. visible true
  135. end
  136. field :total_price_format do
  137. visible true
  138. end
  139. field :coupon_price_format
  140. field :cent_price_format
  141. field :paied_price_format do
  142. visible true
  143. end
  144. field :trade_no do
  145. visible false
  146. end
  147. field :status, :enum do
  148. enum do
  149. STATUS_ENUM
  150. end
  151. end
  152. field :pay_way, :enum do
  153. enum do
  154. PAY_WAY_ENUM
  155. end
  156. end
  157. field :source, :enum do
  158. visible false
  159. enum do
  160. SOURCE_ENUM
  161. end
  162. end
  163. field :paied_at do
  164. formatted_value do
  165. (value == 0 || value == nil) ? Time.at(0) : Time.at(value)
  166. end
  167. end
  168. field :paied_time do
  169. visible false
  170. end
  171. field :contact
  172. field :tel
  173. field :address
  174. field :express_company
  175. field :express_order_no
  176. field :dispatch_time
  177. field :receive_time do
  178. # visible false
  179. end
  180. field :order_remark do
  181. visible false
  182. end
  183. #field :order_details
  184. field :remark
  185. field :created_at do
  186. visible false
  187. end
  188. end
  189. show do
  190. field :id
  191. field :order_id
  192. field :wx_user
  193. field :wx_user_id
  194. field :freight do
  195. visible true
  196. label "运费(元)"
  197. formatted_value do
  198. value!=0 ? (value/100.0):0
  199. end
  200. end
  201. field :coupon_price_format
  202. field :cent_price_format
  203. field :paied_price_format
  204. field :buy_price
  205. field :trade_no
  206. field :status, :enum do
  207. enum do
  208. STATUS_ENUM
  209. end
  210. end
  211. field :pay_way, :enum do
  212. enum do
  213. PAY_WAY_ENUM
  214. end
  215. end
  216. field :source, :enum do
  217. enum do
  218. SOURCE_ENUM
  219. end
  220. end
  221. field :paied_at do
  222. formatted_value do
  223. (value == 0 || value == nil) ? Time.at(0) : Time.at(value)
  224. end
  225. end
  226. field :tel
  227. field :address
  228. field :contact
  229. field :express_company
  230. field :express_order_no
  231. field :remark
  232. field :order_remark
  233. field :dispatch_time
  234. field :receive_time
  235. field :order_details
  236. field :created_at
  237. field :updated_at
  238. end
  239. edit do
  240. field :order_id
  241. field :wx_user_id
  242. field :user_id
  243. field :total_price
  244. field :paied_price
  245. field :paied_at
  246. field :buy_price
  247. field :paied_price
  248. field :cent_price
  249. field :freight
  250. field :trade_no
  251. field :status, :enum do
  252. enum do
  253. STATUS_ENUM
  254. end
  255. end
  256. field :pay_way, :enum do
  257. enum do
  258. PAY_WAY_ENUM
  259. end
  260. end
  261. field :source, :enum do
  262. enum do
  263. SOURCE_ENUM
  264. end
  265. end
  266. field :tel
  267. field :address
  268. field :contact
  269. #field :express_company
  270. field :express_company, :enum do
  271. enum do
  272. EXP_ENUM
  273. end
  274. end
  275. field :express_order_no
  276. field :remark
  277. field :order_remark
  278. field :dispatch_time
  279. end
  280. export do
  281. include_all_fields
  282. field :freight do
  283. visible true
  284. label "运费(元)"
  285. formatted_value do
  286. value!=0 ? (value/100.0):0
  287. end
  288. end
  289. field :status, :enum do
  290. enum do
  291. STATUS_ENUM
  292. end
  293. end
  294. field :pay_way, :enum do
  295. enum do
  296. PAY_WAY_ENUM
  297. end
  298. end
  299. field :source, :enum do
  300. enum do
  301. SOURCE_ENUM
  302. end
  303. end
  304. field :paied_at do
  305. formatted_value do
  306. (value == 0 || value == nil) ? Time.at(0) : Time.at(value)
  307. end
  308. end
  309. end
  310. end
  311. end