order.rb 11 KB

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