order.rb 10 KB

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