order.rb 11 KB

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