order.rb 12 KB

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