clickhouse.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. package main
  2. import (
  3. "fmt"
  4. "go.uber.org/zap"
  5. "jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
  6. "time"
  7. )
  8. // truncateClickhouse 清空Clickhouse数据表
  9. func truncateClickhouse() {
  10. var (
  11. f_order DwdFOrder
  12. f_order_change DwdFOrderChange
  13. f_return DwdFReturn
  14. f_return_change DwdFReturnChange
  15. )
  16. table1 := f_order.TableName()
  17. table2 := f_order_change.TableName()
  18. table3 := f_return.TableName()
  19. table4 := f_return_change.TableName()
  20. // 清空表 1
  21. db, err := ClickhouseDB.DB()
  22. if err != nil {
  23. panic("获取数据库连接对象失败:" + err.Error())
  24. }
  25. s1 := fmt.Sprintf("TRUNCATE TABLE %s.%s", GF.Clickhouse.DB, table1)
  26. _, err = db.Exec(s1)
  27. if err != nil {
  28. log.Info("清空失败", zap.String("数据表", s1))
  29. } else {
  30. log.Info("清空成功", zap.String("数据表", s1))
  31. }
  32. //清空表 2
  33. s2 := fmt.Sprintf("TRUNCATE TABLE %s.%s", GF.Clickhouse.DB, table2)
  34. _, err = db.Exec(s2)
  35. if err != nil {
  36. log.Info("清空失败", zap.String("数据表", s2))
  37. } else {
  38. log.Info("清空成功", zap.String("数据表", s2))
  39. }
  40. //清空表 3
  41. s3 := fmt.Sprintf("TRUNCATE TABLE %s.%s", GF.Clickhouse.DB, table3)
  42. _, err = db.Exec(s3)
  43. if err != nil {
  44. log.Info("清空失败", zap.String("数据表", s3))
  45. } else {
  46. log.Info("清空成功", zap.String("数据表", s3))
  47. }
  48. //清空表 4
  49. s4 := fmt.Sprintf("TRUNCATE TABLE %s.%s", GF.Clickhouse.DB, table4)
  50. _, err = db.Exec(fmt.Sprintf("TRUNCATE TABLE %s", s4))
  51. if err != nil {
  52. log.Info("清空失败", zap.String("数据表", s4))
  53. }
  54. //
  55. log.Info("所有数据表清空完毕", zap.String("数据表是:", fmt.Sprintf("%s,%s,%s,%s", table1, table2, table3, table4)))
  56. }
  57. // DwdFOrder 订单表-Clickhouse
  58. type DwdFOrder struct {
  59. ID int `gorm:"primaryKey"` // 自增 ID
  60. OrderCode string `gorm:"column:order_code"` // 订单编号
  61. SalerName string `gorm:"column:saler_name"` // 销售人员
  62. SalerDept string `gorm:"column:saler_dept"` // 部门
  63. CompanyName string `gorm:"column:company_name"` // 公司名称
  64. UserRegtime *time.Time `gorm:"column:user_regtime"` // 用户注册时间
  65. CreateTime *time.Time `gorm:"column:create_time"` // 订单创建时间
  66. ReturnTime *time.Time `gorm:"column:return_time"` // 回款时间
  67. SaleTime *time.Time `gorm:"column:sale_time"` // 业绩统计
  68. RefundTime *time.Time `gorm:"column:refund_time"` // 退款日期
  69. OriginalPrice int `gorm:"column:original_price"` // 标准售价
  70. ContractMoney int `gorm:"column:contract_money"` // 合同金额
  71. Commission int `gorm:"column:commission"` // 佣金
  72. ProceduresMoney int `gorm:"column:procedures_money"` // 手续费
  73. ReceivableAmount int `gorm:"column:receivable_amount"` // 应收金额
  74. TotalReceived int `gorm:"column:total_received"` // 累计已收
  75. ProductType string `gorm:"column:product_type"` // 产品类型
  76. DataSpec string `gorm:"column:data_spec"` // 规格
  77. OrderStatus string `gorm:"column:order_status"` // 订单状态
  78. ReturnStatus string `gorm:"column:return_status"` // 回款状态
  79. RefundStatus string `gorm:"column:refund_status"` // 退款状态
  80. VipType string `gorm:"column:vip_type"` // 付费类型
  81. UserPhone string `gorm:"column:user_phone"` // 手机号
  82. UserID string `gorm:"column:user_id"` // 用户 ID
  83. VipStarttime *time.Time `gorm:"column:vip_starttime"` // 服务开始时间
  84. VipEndtime *time.Time `gorm:"column:vip_endtime"` // 服务结束时间
  85. ContractStatus string `gorm:"column:contract_status"` // 合同状态
  86. ContractCode string `gorm:"column:contract_code"` // 合同编号
  87. ContractTime *time.Time `gorm:"column:contract_time"` // 合同时间
  88. SigningSubject string `gorm:"column:signing_subject"` // 签约主体
  89. OrderChannel string `gorm:"column:order_channel"` // 下单渠道
  90. DistributionChannel string `gorm:"column:distribution_channel"` // 销售渠道
  91. IsBackstageOrder string `gorm:"column:is_backstage_order"` // 是否是后台订单
  92. PayWay string `gorm:"column:pay_way"` // 付款方式
  93. Comeintime *time.Time `gorm:"column:comeintime;autoCreateTime"` // 入库时间
  94. Updatetime *time.Time `gorm:"column:updatetime;autoUpdateTime"` // 更新时间
  95. }
  96. func (DwdFOrder) TableName() string {
  97. return "dwd_f_order"
  98. }
  99. // DwdFOrderChange 归集后的-剑鱼业绩变更表结构体;
  100. type DwdFOrderChange struct {
  101. ID int `gorm:"primaryKey"`
  102. OrderCode string `gorm:"column:order_code;not null;comment:'订单编号'"`
  103. SalerName string `gorm:"column:saler_name;comment:'销售人员'"`
  104. SalerDept string `gorm:"column:saler_dept;comment:'部门'"`
  105. CompanyName string `gorm:"column:company_name;comment:'公司名称'"`
  106. UserRegtime *time.Time `gorm:"column:user_regtime;comment:'用户注册时间'"`
  107. CreateTime *time.Time `gorm:"column:create_time;comment:'订单创建时间'"`
  108. SaleTime *time.Time `gorm:"column:sale_time;comment:'业绩统计时间'"`
  109. OriginalPrice int `gorm:"column:original_price;comment:'标准售价'"`
  110. ContractMoney int `gorm:"column:contract_money;comment:'合同金额'"`
  111. Commission int `gorm:"column:commission;comment:'佣金'"`
  112. ProceduresMoney int `gorm:"column:procedures_money;comment:'手续费'"`
  113. ReceivableAmount int `gorm:"column:receivable_amount;comment:'应收金额'"`
  114. ChangeValue int `gorm:"column:change_value;comment:'业绩变动额'"`
  115. ChangeReason string `gorm:"column:change_reason;comment:'变更类型'"`
  116. TotalReceived int `gorm:"column:total_received;comment:'累计已收'"`
  117. ProductType string `gorm:"column:product_type;comment:'产品类型'"`
  118. DataSpec string `gorm:"column:data_spec;comment:'规格'"`
  119. OrderStatus string `gorm:"column:order_status;comment:'订单状态'"`
  120. ReturnStatus string `gorm:"column:return_status;comment:'回款状态'"`
  121. RefundStatus string `gorm:"column:refund_status;comment:'退款状态'"`
  122. VipType string `gorm:"column:vip_type;comment:'付费类型'"`
  123. UserPhone string `gorm:"column:user_phone;comment:'手机号'"`
  124. UserID string `gorm:"column:user_id;comment:'用户ID'"`
  125. VipStarttime *time.Time `gorm:"column:vip_starttime;comment:'服务开始时间'"`
  126. VipEndtime *time.Time `gorm:"column:vip_endtime;comment:'服务结束时间'"`
  127. ContractStatus string `gorm:"column:contract_status;comment:'合同状态'"`
  128. ContractCode string `gorm:"column:contract_code;comment:'合同编号'"`
  129. ContractTime *time.Time `gorm:"column:contract_time;comment:'合同时间'"`
  130. SigningSubject string `gorm:"column:signing_subject;comment:'签约主体'"`
  131. OrderChannel string `gorm:"column:order_channel;comment:'下单渠道'"`
  132. DistributionChannel string `gorm:"column:distribution_channel;comment:'销售渠道'"`
  133. IsBackstageOrder string `gorm:"column:is_backstage_order;comment:'是否是后台订单'"`
  134. PayWay string `gorm:"column:pay_way;comment:'付款方式'"`
  135. Comeintime *time.Time `gorm:"column:comeintime;default:CURRENT_TIMESTAMP;comment:'数据进入时间'"`
  136. Updatetime *time.Time `gorm:"column:updatetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;comment:'更新时间'"`
  137. OrderSaleRecordID int `gorm:"column:order_sale_record_id;comment:'业绩变更表ID'"`
  138. RefundRecordID int `gorm:"column:refund_record_id;comment:'退款表ID'"`
  139. }
  140. func (DwdFOrderChange) TableName() string {
  141. return "dwd_f_performance_change"
  142. }
  143. // DwdFReturn 回款表
  144. type DwdFReturn struct {
  145. ID int `gorm:"primaryKey"`
  146. OrderCode string `gorm:"column:order_code;comment:'订单编号'"`
  147. SalerName string `gorm:"column:saler_name;comment:'销售人员'"`
  148. SalerDept string `gorm:"column:saler_dept;comment:'部门'"`
  149. UserPhone string `gorm:"column:user_phone;comment:'用户手机号'"`
  150. CompanyName string `gorm:"column:company_name;comment:'公司名称'"`
  151. ProductType string `gorm:"column:product_type;comment:'产品类型'"`
  152. DataSpec string `gorm:"column:data_spec;comment:'规格'"`
  153. ReturnType string `gorm:"column:return_type;comment:'回款方式'"`
  154. SaleTime *time.Time `gorm:"column:sale_time;comment:'业绩统计日期'"`
  155. ReturnTime *time.Time `gorm:"column:return_time;comment:'回款日期'"`
  156. ReturnMoney int `gorm:"column:return_money;comment:'回款金额'"`
  157. SigningSubject string `gorm:"column:signing_subject;comment:'签约主体'"`
  158. ReturnSubject string `gorm:"column:return_subject;comment:'回款主体'"`
  159. SubjectCheck string `gorm:"column:subject_check;comment:'主体校验'"`
  160. PaymentNumber string `gorm:"column:payment_number;comment:'支付单号'"`
  161. BankFlow string `gorm:"column:bank_flow;comment:'银行流水号'"`
  162. BankName string `gorm:"column:bank_name;comment:'银行名称'"`
  163. OrderChannel string `gorm:"column:order_channel;comment:'下单渠道'"`
  164. DistributionChannel string `gorm:"column:distribution_channel;comment:'销售渠道'"`
  165. RefundStatus string `gorm:"column:refund_status;comment:'退款状态'"`
  166. OperateType string `gorm:"column:operate_type;comment:'关联方式'"`
  167. OperatePerson string `gorm:"column:operate_person;comment:'创建人'"`
  168. ReturnMoneyRecordState int `gorm:"column:return_money_record_state;comment:'数据状态'"`
  169. Comeintime *time.Time `gorm:"column:comeintime;default:CURRENT_TIMESTAMP;comment:'入库时间'"`
  170. Updatetime *time.Time `gorm:"column:updatetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;comment:'更新时间'"`
  171. ReturnMoneyRecordID int `gorm:"column:return_money_record_id;comment:'回款表 id'"`
  172. DataexportOrderID int `gorm:"column:dataexport_order_id;comment:'订单表 id'"`
  173. }
  174. func (DwdFReturn) TableName() string {
  175. return "dwd_f_return"
  176. }
  177. // DwdFReturnChange 回款变更表
  178. type DwdFReturnChange struct {
  179. ID int `gorm:"primaryKey;autoIncrement;comment:'自增唯一标识'"`
  180. OrderCode string `gorm:"column:order_code;comment:'订单编号'"`
  181. SalerName string `gorm:"column:saler_name;comment:'销售人员'"`
  182. SalerDept string `gorm:"column:saler_dept;comment:'部门'"`
  183. UserPhone string `gorm:"column:user_phone;comment:'用户手机号'"`
  184. CompanyName string `gorm:"column:company_name;comment:'公司名称'"`
  185. ProductType string `gorm:"column:product_type;comment:'产品类型'"`
  186. DataSpec string `gorm:"column:data_spec;comment:'规格'"`
  187. ReturnType string `gorm:"column:return_type;comment:'回款方式'"`
  188. SaleTime *time.Time `gorm:"column:sale_time;comment:'业绩变更日期'"`
  189. ReturnTime *time.Time `gorm:"column:return_time;comment:'回款日期'"`
  190. ReturnMoney int `gorm:"column:return_money;comment:'回款金额'"`
  191. ChangeValue int `gorm:"column:change_value;comment:'业绩变动额'"`
  192. ChangeReason string `gorm:"column:change_reason;comment:'变更类型'"`
  193. SigningSubject string `gorm:"column:signing_subject;comment:'签约主体'"`
  194. ReturnSubject string `gorm:"column:return_subject;comment:'回款主体'"`
  195. SubjectCheck string `gorm:"column:subject_check;comment:'主体校验'"`
  196. PaymentNumber string `gorm:"column:payment_number;comment:'支付单号'"`
  197. BankFlow string `gorm:"column:bank_flow;comment:'银行流水号'"`
  198. BankName string `gorm:"column:bank_name;comment:'银行名称'"`
  199. OrderChannel string `gorm:"column:order_channel;comment:'下单渠道'"`
  200. DistributionChannel string `gorm:"column:distribution_channel;comment:'销售渠道'"`
  201. RefundStatus string `gorm:"column:refund_status;comment:'退款状态'"`
  202. OperateType string `gorm:"column:operate_type;comment:'关联方式'"`
  203. OperatePerson string `gorm:"column:operate_person;comment:'创建人'"`
  204. OrderSaleRecordID int `gorm:"column:order_sale_record_id;comment:'业绩变更表 ID'"`
  205. RefundRecordID int `gorm:"column:refund_record_id;comment:'退款表 ID'"`
  206. Comeintime *time.Time `gorm:"column:comeintime;default:CURRENT_TIMESTAMP;comment:'入库时间'"`
  207. Updatetime *time.Time `gorm:"column:updatetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;comment:'更新时间'"`
  208. }
  209. func (DwdFReturnChange) TableName() string {
  210. return "dwd_f_return_change"
  211. }