account_order_change.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580
  1. package main
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "fmt"
  6. "go.uber.org/zap"
  7. "gorm.io/gorm"
  8. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  9. "jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
  10. "time"
  11. )
  12. // dealAllDataAccountOrderChangeRecord 处理归集后-存量业绩表更表-dwd_f_account_order_change
  13. func dealAllDataAccountOrderChangeRecord() {
  14. // 数据分为二部分;1、业绩变更表-jianyu.order_sale_record
  15. //2、退款表 -data_analysis.refund_record
  16. log.Info("dealAllDataAccountOrderChangeRecord ", zap.String("处理归集后的业绩变更表", "处理开始"))
  17. allDataOrderSaleRecordForAccountOrderChange() //业绩变更表数据处理
  18. allDataRefundRecordForAccountOrderChange() //退款表数据处理
  19. log.Info("dealAllDataAccountOrderChangeRecord ", zap.String("处理归集后的业绩变更表", "处理完毕"))
  20. }
  21. // allDataOrderSaleRecordForAccountOrderChange 业绩变更表数据处理-order_sale_record
  22. func allDataOrderSaleRecordForAccountOrderChange() {
  23. defer func() {
  24. if r := recover(); r != nil {
  25. log.Info("Panic recovered", zap.Any("reason", r))
  26. }
  27. log.Info("aaaaaaaaaaaa")
  28. }()
  29. var total int64
  30. JianyuDB.Debug().Model(&OrderSaleRecord{}).Where("state IN ?", []string{"1", "-1"}).Where("autoUpdate < ?", "2024-10-16").Count(&total)
  31. log.Info("allDataOrderSaleRecordForAccountOrderChange", zap.Any("OrderSaleRecord 总数是", total))
  32. rowsPerPage := 100 // 每页的数量
  33. totalPages := (int(total) / rowsPerPage) + 1 //总页数
  34. for page := 0; page < totalPages; page++ {
  35. offset := page * rowsPerPage
  36. rows, err := JianyuDB.Debug().Model(&OrderSaleRecord{}).Where("state IN ?", []string{"1", "-1"}).Where("autoUpdate < ?", "2024-10-16").Order("id desc").Offset(offset).Limit(rowsPerPage).Rows()
  37. defer func() {
  38. err = rows.Close()
  39. if err != nil {
  40. log.Info("Err rows.Close", zap.Error(err))
  41. }
  42. }()
  43. log.Info("allDataOrderSaleRecordForAccountOrderChange", zap.Any("current page ", page))
  44. for rows.Next() {
  45. var order_sale_record OrderSaleRecord // 原来业绩表更
  46. var account_order_change DwdFAccountOrderChange // 归集后的业绩变更表
  47. var data_exOrder DataexportOrder //原来的订单表
  48. var account_order DwdFAccountOrder //归集后的订单表
  49. var user1 DwdFUserbaseBaseinfo //个人用户表
  50. //var returnRecord ReturnMoneyRecord //原来的回款表
  51. var returnRecords []ReturnMoneyRecord //原来的回款表
  52. var contract Contract //合同表
  53. // ScanRows 方法用于将一行记录扫描至结构体
  54. err = JianyuDB.ScanRows(rows, &order_sale_record)
  55. if err != nil {
  56. log.Info("allDataOrderSaleRecordForAccountOrderChange,ScanRows err ", zap.Error(err))
  57. }
  58. //订单编号不为空
  59. if order_sale_record.Ordercode != "" {
  60. // 业务逻辑...
  61. account_order_change.OrderCode = order_sale_record.Ordercode
  62. if order_sale_record.SalerName == "-" {
  63. account_order_change.SalerName = "运营"
  64. } else {
  65. account_order_change.SalerName = order_sale_record.SalerName
  66. }
  67. account_order_change.SalerDept = order_sale_record.SalerDept
  68. // 原来订单表
  69. err = AnalysisDB.Model(DataexportOrder{}).Where("order_code =? ", order_sale_record.Ordercode).First(&data_exOrder).Error
  70. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  71. log.Info("allDataOrderSaleRecordForAccountOrderChange", zap.Error(err))
  72. }
  73. // 处理后的订单归集表
  74. err = AnalysisDB.Model(DwdFAccountOrder{}).Where("order_code =? ", order_sale_record.Ordercode).First(&account_order).Error
  75. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  76. log.Info("allDataOrderSaleRecordForAccountOrderChange", zap.Error(err))
  77. }
  78. // 合同
  79. err = AnalysisDB.Where("order_code = ? ", data_exOrder.OrderCode).First(&contract).Error
  80. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  81. log.Info("allDataOrderSaleRecordForAccountOrderChange", zap.Error(err))
  82. }
  83. account_order_change.CompanyName = data_exOrder.CompanyName
  84. if len(data_exOrder.UserID) > 20 { // 个人身份
  85. err = JianyuSubjectDB.Where("userid = ? ", data_exOrder.UserID).First(&user1).Error
  86. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  87. log.Info("allDataOrderSaleRecordForAccountOrderChange", zap.Error(err))
  88. }
  89. account_order_change.UserRegtime = user1.LRegistedate
  90. } else {
  91. // 企业身份
  92. //企业身份
  93. rs := new(struct {
  94. PositionId int `gorm:"column:position_id"`
  95. LRegistedate *time.Time `gorm:"column:l_registedate"`
  96. })
  97. if data_exOrder.UserID != "" {
  98. sql := fmt.Sprintf(`SELECT im.position_id,ub.l_registedate FROM
  99. (SELECT userid,position_id FROM Jianyu_subjectdb.dwd_f_userbase_id_mapping WHERE position_id = %s) im
  100. LEFT JOIN Jianyu_subjectdb.dwd_f_userbase_baseinfo ub
  101. ON im.userid=ub.userid`, data_exOrder.UserID)
  102. err = JianyuSubjectDB.Raw(sql).Scan(&rs).Error
  103. if err != nil {
  104. log.Info("处理用户订单表数据", zap.String("查询企业用户注册时间失败", data_exOrder.UserID))
  105. }
  106. account_order_change.UserRegtime = rs.LRegistedate
  107. }
  108. }
  109. //
  110. account_order_change.CreateTime = data_exOrder.CreateTime
  111. account_order_change.SaleTime = order_sale_record.StatisticsTime
  112. account_order_change.ChangeReason = order_sale_record.ChangeReason
  113. account_order_change.OriginalPrice = data_exOrder.OriginalPrice
  114. filter := data_exOrder.Filter
  115. filterMap := make(map[string]interface{})
  116. err := json.Unmarshal([]byte(filter), &filterMap)
  117. if err != nil {
  118. log.Info("allDataOrderSaleRecordForAccountOrderChange, filter.json.Unmarshal", zap.Error(err))
  119. }
  120. account_order_change.ContractMoney = util.IntAll(filterMap["originalAmount"])
  121. account_order_change.Commission = data_exOrder.Commission
  122. account_order_change.ProceduresMoney = data_exOrder.ProceduresMoney
  123. account_order_change.ReceivableAmount = account_order_change.ContractMoney - account_order_change.Commission - account_order_change.ProceduresMoney
  124. account_order_change.ChangeValue = order_sale_record.ChangeValue
  125. //累计已收
  126. if data_exOrder.IsBackstageOrder == 0 {
  127. account_order_change.TotalReceived = util.IntAll(filterMap["originalAmount"])
  128. } else if data_exOrder.IsBackstageOrder == 1 {
  129. err = AnalysisDB.Where("order_code = ? ", data_exOrder.OrderCode).Find(&returnRecords).Error
  130. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  131. log.Info("allDataOrderSaleRecordForAccountOrderChange", zap.Error(err))
  132. }
  133. totalMoney := 0
  134. if len(returnRecords) > 0 {
  135. for _, v := range returnRecords {
  136. totalMoney += v.ReturnMoney
  137. }
  138. }
  139. account_order_change.TotalReceived = totalMoney
  140. }
  141. //
  142. account_order_change.ProductType = data_exOrder.ProductType
  143. if data_exOrder.ProductType == "大会员" || data_exOrder.ProductType == "大会员-子账号" || data_exOrder.ProductType == "大会员-补充包" {
  144. switch util.IntAll(filterMap["level"]) {
  145. case 1:
  146. account_order_change.DataSpec = "专家版"
  147. case 2:
  148. account_order_change.DataSpec = "智慧版"
  149. case 3:
  150. account_order_change.DataSpec = "商机版"
  151. case 4:
  152. account_order_change.DataSpec = "试用版"
  153. case 5:
  154. account_order_change.DataSpec = "定制版"
  155. case 6:
  156. account_order_change.DataSpec = "商机版2.0"
  157. case 7:
  158. account_order_change.DataSpec = "专家版2.0"
  159. }
  160. } else {
  161. account_order_change.DataSpec = data_exOrder.DataSpec
  162. }
  163. //订单状态
  164. if data_exOrder.RefundStatus == 1 || data_exOrder.RefundStatus == 2 {
  165. account_order_change.OrderStatus = "已完成"
  166. } else {
  167. switch data_exOrder.OrderStatus {
  168. case 1:
  169. account_order_change.OrderStatus = "已完成"
  170. case -1:
  171. account_order_change.OrderStatus = "逻辑删除"
  172. case -2:
  173. account_order_change.OrderStatus = "已取消"
  174. case -3:
  175. account_order_change.OrderStatus = "已取消"
  176. case 0:
  177. account_order_change.OrderStatus = "未完成"
  178. }
  179. }
  180. // refund_status 回款状态
  181. if data_exOrder.IsBackstageOrder == 0 {
  182. if account_order.OrderStatus == "已支付" {
  183. account_order_change.RefundStatus = "全额回款"
  184. } else {
  185. account_order_change.RefundStatus = "未回款"
  186. }
  187. } else if data_exOrder.IsBackstageOrder == 1 {
  188. switch data_exOrder.ReturnStatus {
  189. case 1:
  190. account_order_change.ReturnStatus = "全额回款"
  191. case 2:
  192. account_order_change.ReturnStatus = "部分回款"
  193. case 0:
  194. account_order_change.ReturnStatus = "未回款"
  195. }
  196. }
  197. //退款状态
  198. switch data_exOrder.RefundStatus {
  199. case 1:
  200. account_order_change.ReturnStatus = "全额回款"
  201. case 2:
  202. account_order_change.ReturnStatus = "部分回款"
  203. case 0:
  204. account_order_change.ReturnStatus = "未回款"
  205. }
  206. //付费类型 vip_type
  207. if data_exOrder.ProductType == "大会员" || data_exOrder.ProductType == "大会员-子账号" || data_exOrder.ProductType == "大会员-补充包" {
  208. //付费类型 VipType
  209. switch util.IntAll(filterMap["recordPayType"]) {
  210. case 1:
  211. account_order_change.VipType = "购买"
  212. case 2:
  213. account_order_change.VipType = "续费"
  214. case 3:
  215. account_order_change.VipType = "升级"
  216. case 4:
  217. account_order_change.VipType = "试用"
  218. }
  219. } else {
  220. switch data_exOrder.VipType {
  221. case 0:
  222. account_order_change.VipType = "购买"
  223. case 1:
  224. account_order_change.VipType = "续费"
  225. case 2:
  226. account_order_change.VipType = "升级"
  227. case 3:
  228. account_order_change.VipType = "试用"
  229. }
  230. }
  231. //
  232. account_order_change.UserPhone = data_exOrder.UserPhone
  233. account_order_change.UserID = data_exOrder.UserID
  234. account_order_change.VipStarttime = data_exOrder.VipStarttime
  235. account_order_change.VipEndtime = data_exOrder.VipEndtime
  236. //合同
  237. if contract.ContractStatus == 1 {
  238. account_order_change.ContractStatus = "已签协议"
  239. } else if contract.ContractStatus == 0 {
  240. account_order_change.ContractStatus = "未签协议"
  241. }
  242. account_order_change.ContractCode = contract.ContractCode
  243. account_order_change.ContractTime = contract.ContractTime
  244. //签约主体
  245. if data_exOrder.SigningSubject == "h01" {
  246. account_order_change.SigningSubject = "北京剑鱼信息技术有限公司"
  247. } else if data_exOrder.SigningSubject == "h02" {
  248. account_order_change.SigningSubject = "北京拓普丰联信息科技股份有限公司"
  249. }
  250. account_order_change.OrderChannel = data_exOrder.OrderChannel
  251. account_order_change.DistributionChannel = data_exOrder.DistributionChannel
  252. if data_exOrder.IsBackstageOrder == 0 {
  253. account_order_change.IsBackstageOrder = "否"
  254. } else if data_exOrder.IsBackstageOrder == 1 {
  255. account_order_change.IsBackstageOrder = "是"
  256. }
  257. //付款方式
  258. switch data_exOrder.PayWay {
  259. case "ali", "ali_app", "ali_pc": //ali、ali_app、ali_pc 处理为“支付宝”
  260. account_order_change.PayWay = "支付宝"
  261. case "wx", "wx_app", "wx_js", "wx_pc": // wx、wx_app、wx_js、wx_pc 处理为“微信”
  262. account_order_change.PayWay = "微信"
  263. case "transferAccounts":
  264. account_order_change.PayWay = "对公转账"
  265. default:
  266. account_order_change.PayWay = data_exOrder.PayWay
  267. }
  268. //
  269. account_order_change.OrderSaleRecordID = order_sale_record.ID
  270. //生成订单数据
  271. err = AnalysisDB.Create(&account_order_change).Error
  272. if err != nil {
  273. log.Info("allDataOrderSaleRecordForAccountOrderChange Create ", zap.Error(err))
  274. }
  275. }
  276. }
  277. }
  278. log.Info("allDataOrderSaleRecordForAccountOrderChange 迭代结束", zap.Int64("数据总量", total))
  279. }
  280. // allDataRefundRecordForAccountOrderChange 退款表数据处理 -refund_record
  281. func allDataRefundRecordForAccountOrderChange() {
  282. defer func() {
  283. if r := recover(); r != nil {
  284. log.Info("Panic recovered", zap.Any("reason", r))
  285. }
  286. log.Info("aaaaaaaaaaaa")
  287. }()
  288. var total int64
  289. AnalysisDB.Debug().Model(&RefundRecord{}).Where("refund_time < ?", "2024-10-16").Count(&total)
  290. log.Info("allDataRefundRecordForAccountOrderChange", zap.Any("RefundRecord 退款表 总数是", total))
  291. rowsPerPage := 100 // 每页的数量
  292. totalPages := (int(total) / rowsPerPage) + 1 //总页数
  293. for page := 0; page < totalPages; page++ {
  294. offset := page * rowsPerPage
  295. rows, err := AnalysisDB.Debug().Model(&RefundRecord{}).Where("refund_time < ?", "2024-10-16").Order("id desc").Offset(offset).Limit(rowsPerPage).Rows()
  296. defer func() {
  297. err = rows.Close()
  298. if err != nil {
  299. log.Info("Err rows.Close", zap.Error(err))
  300. }
  301. }()
  302. log.Info("allDataRefundRecordForAccountOrderChange", zap.Any("current page ", page))
  303. for rows.Next() {
  304. var refund_record RefundRecord //原来退款表
  305. var order_sale_record OrderSaleRecord // 原来业绩变更表
  306. var account_order_change DwdFAccountOrderChange // 归集后的业绩变更表
  307. var data_exOrder DataexportOrder //原来的订单表
  308. var account_order DwdFAccountOrder //归集后的订单表
  309. var user1 DwdFUserbaseBaseinfo //个人用户表
  310. //var returnRecord ReturnMoneyRecord //原来的回款表
  311. var returnRecords []ReturnMoneyRecord //原来的回款表
  312. var contract Contract //合同表
  313. // ScanRows 方法用于将一行记录扫描至结构体
  314. err = AnalysisDB.ScanRows(rows, &refund_record)
  315. if err != nil {
  316. log.Info("allDataRefundRecordForAccountOrderChange,ScanRows err ", zap.Error(err))
  317. }
  318. //退款表订单编号不为空
  319. if refund_record.OrderCode != "" {
  320. // 业务逻辑...
  321. // 1.原来订单表
  322. err = AnalysisDB.Model(DataexportOrder{}).Where("order_code =? ", refund_record.OrderCode).First(&data_exOrder).Error
  323. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  324. log.Info("allDataRefundRecordForAccountOrderChange", zap.Error(err))
  325. }
  326. //2.业绩变更表
  327. err = JianyuDB.Debug().Where("ordercode = ? ", refund_record.OrderCode).Order("id desc").First(&order_sale_record).Error
  328. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  329. log.Info("allDataRefundRecordForAccountOrderChange", zap.Error(err))
  330. }
  331. //3. 处理后的订单归集表
  332. err = AnalysisDB.Model(DwdFAccountOrder{}).Where("order_code =? ", refund_record.OrderCode).First(&account_order).Error
  333. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  334. log.Info("allDataRefundRecordForAccountOrderChange", zap.Error(err))
  335. }
  336. //4. 合同
  337. err = AnalysisDB.Where("order_code = ? ", refund_record.OrderCode).First(&contract).Error
  338. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  339. log.Info("dealAllDataOrderSaleRecord", zap.Error(err))
  340. }
  341. //订单编号
  342. account_order_change.OrderCode = refund_record.OrderCode
  343. if order_sale_record.SalerName == "-" {
  344. account_order_change.SalerName = "运营"
  345. } else {
  346. account_order_change.SalerName = order_sale_record.SalerName
  347. }
  348. account_order_change.SalerDept = order_sale_record.SalerDept
  349. account_order_change.CompanyName = data_exOrder.CompanyName //公司名称
  350. if len(data_exOrder.UserID) > 20 { // 个人身份
  351. err = JianyuSubjectDB.Where("userid = ? ", data_exOrder.UserID).First(&user1).Error
  352. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  353. log.Info("allDataRefundRecordForAccountOrderChange", zap.Error(err))
  354. }
  355. account_order_change.UserRegtime = user1.LRegistedate
  356. } else {
  357. // 企业身份
  358. //企业身份
  359. rs := new(struct {
  360. PositionId int `gorm:"column:position_id"`
  361. LRegistedate *time.Time `gorm:"column:l_registedate"`
  362. })
  363. if data_exOrder.UserID != "" {
  364. sql := fmt.Sprintf(`SELECT im.position_id,ub.l_registedate FROM
  365. (SELECT userid,position_id FROM Jianyu_subjectdb.dwd_f_userbase_id_mapping WHERE position_id = %s) im
  366. LEFT JOIN Jianyu_subjectdb.dwd_f_userbase_baseinfo ub
  367. ON im.userid=ub.userid`, data_exOrder.UserID)
  368. err = JianyuSubjectDB.Raw(sql).Scan(&rs).Error
  369. if err != nil {
  370. log.Info("处理用户订单表数据", zap.String("查询企业用户注册时间失败", data_exOrder.UserID))
  371. }
  372. account_order_change.UserRegtime = rs.LRegistedate
  373. }
  374. }
  375. //
  376. account_order_change.CreateTime = data_exOrder.CreateTime
  377. account_order_change.SaleTime = refund_record.RefundTime //业绩统计日期
  378. account_order_change.ChangeReason = refund_record.RefundReason //变更类型
  379. account_order_change.OriginalPrice = data_exOrder.OriginalPrice //标准售价
  380. filter := data_exOrder.Filter
  381. filterMap := make(map[string]interface{})
  382. err := json.Unmarshal([]byte(filter), &filterMap)
  383. if err != nil {
  384. log.Info("allDataRefundRecordForAccountOrderChange, filter.json.Unmarshal", zap.Error(err))
  385. }
  386. account_order_change.ContractMoney = util.IntAll(filterMap["originalAmount"]) // 合同金额
  387. account_order_change.Commission = data_exOrder.Commission //佣金
  388. account_order_change.ProceduresMoney = data_exOrder.ProceduresMoney
  389. account_order_change.ReceivableAmount = account_order_change.ContractMoney - account_order_change.Commission - account_order_change.ProceduresMoney
  390. account_order_change.ChangeValue = 0 - refund_record.RefundMoney //业绩变动额
  391. //累计已收
  392. if data_exOrder.IsBackstageOrder == 0 {
  393. account_order_change.TotalReceived = util.IntAll(filterMap["originalAmount"])
  394. } else if data_exOrder.IsBackstageOrder == 1 {
  395. err = AnalysisDB.Where("order_code = ? ", data_exOrder.OrderCode).Find(&returnRecords).Error
  396. if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
  397. log.Info("allDataRefundRecordForAccountOrderChange", zap.Error(err))
  398. }
  399. totalMoney := 0
  400. if len(returnRecords) > 0 {
  401. for _, v := range returnRecords {
  402. totalMoney += v.ReturnMoney
  403. }
  404. }
  405. account_order_change.TotalReceived = totalMoney
  406. }
  407. //
  408. account_order_change.ProductType = data_exOrder.ProductType
  409. if data_exOrder.ProductType == "大会员" || data_exOrder.ProductType == "大会员-子账号" || data_exOrder.ProductType == "大会员-补充包" {
  410. switch util.IntAll(filterMap["level"]) {
  411. case 1:
  412. account_order_change.DataSpec = "专家版"
  413. case 2:
  414. account_order_change.DataSpec = "智慧版"
  415. case 3:
  416. account_order_change.DataSpec = "商机版"
  417. case 4:
  418. account_order_change.DataSpec = "试用版"
  419. case 5:
  420. account_order_change.DataSpec = "定制版"
  421. case 6:
  422. account_order_change.DataSpec = "商机版2.0"
  423. case 7:
  424. account_order_change.DataSpec = "专家版2.0"
  425. }
  426. } else {
  427. account_order_change.DataSpec = data_exOrder.DataSpec
  428. }
  429. //订单状态
  430. if data_exOrder.RefundStatus == 1 || data_exOrder.RefundStatus == 2 {
  431. account_order_change.OrderStatus = "已支付"
  432. } else {
  433. switch data_exOrder.OrderStatus {
  434. case 1:
  435. account_order_change.OrderStatus = "已支付"
  436. case -1:
  437. account_order_change.OrderStatus = "逻辑删除"
  438. case -2:
  439. account_order_change.OrderStatus = "已取消"
  440. case -3:
  441. account_order_change.OrderStatus = "已退款"
  442. case 0:
  443. account_order_change.OrderStatus = "未支付"
  444. }
  445. }
  446. // refund_status 回款状态
  447. if data_exOrder.IsBackstageOrder == 0 {
  448. if account_order.OrderStatus == "已支付" {
  449. account_order_change.RefundStatus = "全额回款"
  450. } else {
  451. account_order_change.RefundStatus = "未回款"
  452. }
  453. } else if data_exOrder.IsBackstageOrder == 1 {
  454. switch data_exOrder.ReturnStatus {
  455. case 1:
  456. account_order_change.ReturnStatus = "全额回款"
  457. case 2:
  458. account_order_change.ReturnStatus = "部分回款"
  459. case 0:
  460. account_order_change.ReturnStatus = "未回款"
  461. }
  462. }
  463. //退款状态
  464. switch data_exOrder.RefundStatus {
  465. case 1:
  466. account_order_change.ReturnStatus = "全额回款"
  467. case 2:
  468. account_order_change.ReturnStatus = "部分回款"
  469. case 0:
  470. account_order_change.ReturnStatus = "未回款"
  471. }
  472. //付费类型 vip_type
  473. if data_exOrder.ProductType == "大会员" || data_exOrder.ProductType == "大会员-子账号" || data_exOrder.ProductType == "大会员-补充包" {
  474. //付费类型 VipType
  475. switch util.IntAll(filterMap["recordPayType"]) {
  476. case 1:
  477. account_order_change.VipType = "购买"
  478. case 2:
  479. account_order_change.VipType = "续费"
  480. case 3:
  481. account_order_change.VipType = "升级"
  482. case 4:
  483. account_order_change.VipType = "试用"
  484. }
  485. } else {
  486. switch data_exOrder.VipType {
  487. case 0:
  488. account_order_change.VipType = "购买"
  489. case 1:
  490. account_order_change.VipType = "续费"
  491. case 2:
  492. account_order_change.VipType = "升级"
  493. case 3:
  494. account_order_change.VipType = "试用"
  495. }
  496. }
  497. //
  498. account_order_change.UserPhone = data_exOrder.UserPhone
  499. account_order_change.UserID = data_exOrder.UserID
  500. account_order_change.VipStarttime = data_exOrder.VipStarttime
  501. account_order_change.VipEndtime = data_exOrder.VipEndtime
  502. //合同
  503. if contract.ContractStatus == 1 {
  504. account_order_change.ContractStatus = "已签协议"
  505. } else if contract.ContractStatus == 0 {
  506. account_order_change.ContractStatus = "未签协议"
  507. }
  508. account_order_change.ContractCode = contract.ContractCode
  509. account_order_change.ContractTime = contract.ContractTime
  510. //签约主体
  511. if data_exOrder.SigningSubject == "h01" {
  512. account_order_change.SigningSubject = "北京剑鱼信息技术有限公司"
  513. } else if data_exOrder.SigningSubject == "h02" {
  514. account_order_change.SigningSubject = "北京拓普丰联信息科技股份有限公司"
  515. }
  516. account_order_change.OrderChannel = data_exOrder.OrderChannel
  517. account_order_change.DistributionChannel = data_exOrder.DistributionChannel
  518. if data_exOrder.IsBackstageOrder == 0 {
  519. account_order_change.IsBackstageOrder = "否"
  520. } else if data_exOrder.IsBackstageOrder == 1 {
  521. account_order_change.IsBackstageOrder = "是"
  522. }
  523. //付款方式
  524. switch data_exOrder.PayWay {
  525. case "ali", "ali_app", "ali_pc": //ali、ali_app、ali_pc 处理为“支付宝”
  526. account_order_change.PayWay = "支付宝"
  527. case "wx", "wx_app", "wx_js", "wx_pc": // wx、wx_app、wx_js、wx_pc 处理为“微信”
  528. account_order_change.PayWay = "微信"
  529. case "transferAccounts":
  530. account_order_change.PayWay = "对公转账"
  531. default:
  532. account_order_change.PayWay = data_exOrder.PayWay
  533. }
  534. //
  535. account_order_change.RefundRecordID = refund_record.ID //退款表ID
  536. //生成订单数据
  537. err = AnalysisDB.Create(&account_order_change).Error
  538. if err != nil {
  539. log.Info("allDataRefundRecordForAccountOrderChange Create ", zap.Error(err))
  540. }
  541. }
  542. }
  543. }
  544. log.Info("allDataRefundRecordForAccountOrderChange 迭代结束", zap.Int64("数据总量", total))
  545. }