eta_business.go 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. package eta_business
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "hongze/hz_crm_api/utils"
  6. "strings"
  7. "time"
  8. )
  9. const (
  10. EtaBusinessSigningStatusFirst = iota + 1
  11. EtaBusinessSigningStatusContinue
  12. EtaBusinessSigningStatusTerminate
  13. )
  14. type EtaBusiness struct {
  15. EtaBusinessId int `orm:"column(eta_business_id);pk"`
  16. BusinessName string `description:"商家名称"`
  17. BusinessCode string `description:"商家编码"`
  18. CreditCode string `description:"社会统一信用码"`
  19. RegionType string `description:"所属区域:国内;海外"`
  20. Province string `description:"省份"`
  21. City string `description:"城市"`
  22. Address string `description:"商家地址"`
  23. SellerId int `description:"销售ID"`
  24. SellerName string `description:"销售名称"`
  25. Leader string `description:"决策人"`
  26. IndustryId int `description:"行业ID"`
  27. IndustryName string `description:"行业名称"`
  28. CapitalScale string `description:"资金规模"`
  29. ResearchTeamSize string `description:"研究团队规模"`
  30. UserMax int `description:"用户上限"`
  31. SigningStatus int `description:"签约状态:1-首次签约;2-续约中;3-已终止"`
  32. Enable int `description:"状态:0-禁用;1-启用"`
  33. SigningTime time.Time `description:"当前合约的签约时间"`
  34. ExpiredTime time.Time `description:"当前合约的到期时间"`
  35. CreateTime time.Time `description:"创建时间"`
  36. ModifyTime time.Time `description:"更新时间"`
  37. }
  38. func (m *EtaBusiness) TableName() string {
  39. return "eta_business"
  40. }
  41. func (m *EtaBusiness) PrimaryId() string {
  42. return EtaBusinessColumns.EtaBusinessId
  43. }
  44. var EtaBusinessColumns = struct {
  45. EtaBusinessId string
  46. BusinessName string
  47. BusinessCode string
  48. CreditCode string
  49. RegionType string
  50. Province string
  51. City string
  52. Address string
  53. SellerId string
  54. SellerName string
  55. Leader string
  56. IndustryId string
  57. IndustryName string
  58. CapitalScale string
  59. ResearchTeamSize string
  60. UserMax string
  61. SigningStatus string
  62. Enable string
  63. SigningTime string
  64. ExpiredTime string
  65. CreateTime string
  66. ModifyTime string
  67. }{
  68. EtaBusinessId: "eta_business_id",
  69. BusinessName: "business_name",
  70. BusinessCode: "business_code",
  71. CreditCode: "credit_code",
  72. RegionType: "region_type",
  73. Province: "province",
  74. City: "city",
  75. Address: "address",
  76. SellerId: "seller_id",
  77. SellerName: "seller_name",
  78. Leader: "leader",
  79. IndustryId: "industry_id",
  80. IndustryName: "industry_name",
  81. CapitalScale: "capital_scale",
  82. ResearchTeamSize: "research_team_size",
  83. UserMax: "user_max",
  84. SigningStatus: "signing_status",
  85. Enable: "enable",
  86. SigningTime: "signing_time",
  87. ExpiredTime: "expired_time",
  88. CreateTime: "create_time",
  89. ModifyTime: "modify_time",
  90. }
  91. func (m *EtaBusiness) Create() (err error) {
  92. o := orm.NewOrm()
  93. id, err := o.Insert(m)
  94. if err != nil {
  95. return
  96. }
  97. m.EtaBusinessId = int(id)
  98. return
  99. }
  100. func (m *EtaBusiness) CreateMulti(items []*EtaBusiness) (err error) {
  101. if len(items) == 0 {
  102. return
  103. }
  104. o := orm.NewOrm()
  105. _, err = o.InsertMulti(len(items), items)
  106. return
  107. }
  108. func (m *EtaBusiness) Update(cols []string) (err error) {
  109. o := orm.NewOrm()
  110. _, err = o.Update(m, cols...)
  111. return
  112. }
  113. func (m *EtaBusiness) Del() (err error) {
  114. o := orm.NewOrm()
  115. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  116. _, err = o.Raw(sql, m.EtaBusinessId).Exec()
  117. return
  118. }
  119. func (m *EtaBusiness) GetItemById(id int) (item *EtaBusiness, err error) {
  120. o := orm.NewOrm()
  121. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
  122. err = o.Raw(sql, id).QueryRow(&item)
  123. return
  124. }
  125. func (m *EtaBusiness) GetItemByCondition(condition string, pars []interface{}) (item *EtaBusiness, err error) {
  126. o := orm.NewOrm()
  127. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s LIMIT 1`, m.TableName(), condition)
  128. err = o.Raw(sql, pars).QueryRow(&item)
  129. return
  130. }
  131. func (m *EtaBusiness) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  132. o := orm.NewOrm()
  133. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  134. err = o.Raw(sql, pars).QueryRow(&count)
  135. return
  136. }
  137. func (m *EtaBusiness) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EtaBusiness, err error) {
  138. o := orm.NewOrm()
  139. fields := strings.Join(fieldArr, ",")
  140. if len(fieldArr) == 0 {
  141. fields = `*`
  142. }
  143. order := `ORDER BY create_time DESC`
  144. if orderRule != "" {
  145. order = ` ORDER BY ` + orderRule
  146. }
  147. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  148. _, err = o.Raw(sql, pars).QueryRows(&items)
  149. return
  150. }
  151. // CreateEtaBusinessAndContract 新增商家和签约
  152. func CreateEtaBusinessAndContract(businessItem *EtaBusiness, contractItem *EtaBusinessContract) (err error) {
  153. if businessItem == nil || contractItem == nil {
  154. err = fmt.Errorf("item empty")
  155. return
  156. }
  157. o := orm.NewOrm()
  158. tx, err := o.Begin()
  159. if err != nil {
  160. return
  161. }
  162. defer func() {
  163. if err != nil {
  164. _ = tx.Rollback()
  165. return
  166. }
  167. _ = tx.Commit()
  168. }()
  169. // 商家
  170. businessId, e := tx.Insert(businessItem)
  171. if e != nil {
  172. err = fmt.Errorf("business insert err: %s", e.Error())
  173. return
  174. }
  175. businessItem.EtaBusinessId = int(businessId)
  176. // 签约
  177. contractItem.EtaBusinessId = businessItem.EtaBusinessId
  178. _, e = tx.Insert(contractItem)
  179. if e != nil {
  180. err = fmt.Errorf("contract insert err: %s", e.Error())
  181. }
  182. return
  183. }
  184. // EtaBusinessAddReq 新增商家请求体
  185. type EtaBusinessAddReq struct {
  186. BusinessName string `description:"商家名称"`
  187. CreditCode string `description:"社会统一信用码"`
  188. RegionType string `description:"所属区域:国内;海外"`
  189. Province string `description:"省份"`
  190. City string `description:"城市"`
  191. SellerId int `description:"销售ID"`
  192. SellerName string `description:"销售名称"`
  193. Leader string `description:"决策人"`
  194. IndustryId int `description:"行业ID"`
  195. IndustryName string `description:"行业名称"`
  196. CapitalScale string `description:"资金规模"`
  197. ResearchTeamSize string `description:"研究团队规模"`
  198. UserMax int `description:"用户上限"`
  199. SigningTime string `description:"签约时间"`
  200. ExpiredTime string `description:"到期时间"`
  201. IsCheck bool `description:"是否只做校验而不实际新增(业务操作上基础信息和签约时间分成两个步骤了)"`
  202. }
  203. // EtaBusinessEditReq 编辑商家请求体
  204. type EtaBusinessEditReq struct {
  205. EtaBusinessId int `description:"商家ID"`
  206. Province string `description:"省份"`
  207. City string `description:"城市"`
  208. Leader string `description:"决策人"`
  209. IndustryId int `description:"行业ID"`
  210. IndustryName string `description:"行业名称"`
  211. CapitalScale string `description:"资金规模"`
  212. ResearchTeamSize string `description:"研究团队规模"`
  213. UserMax int `description:"用户上限"`
  214. }
  215. // EtaBusinessSigningReq 商家签约请求体
  216. type EtaBusinessSigningReq struct {
  217. EtaBusinessId int `description:"商家ID"`
  218. SigningTime string `description:"当前合约的签约时间"`
  219. ExpiredTime string `description:"当前合约的到期时间"`
  220. }
  221. // EtaBusinessEnableReq 禁启用商家请求体
  222. type EtaBusinessEnableReq struct {
  223. EtaBusinessId int `description:"商家ID"`
  224. }
  225. // EtaBusinessMoveSellerReq 移动商家销售请求体
  226. type EtaBusinessMoveSellerReq struct {
  227. EtaBusinessId int `description:"商家ID"`
  228. SellerId int `description:"销售ID"`
  229. SellerName string `description:"销售名称"`
  230. }
  231. // CreateEtaBusinessCode 生成ETA商家编码
  232. func CreateEtaBusinessCode() (code string, err error) {
  233. var num int
  234. o := orm.NewOrm()
  235. sql := `SELECT COUNT(1) AS num FROM eta_business WHERE created_time >= ? `
  236. err = o.Raw(sql, time.Now().Format(utils.FormatDate)).QueryRow(&num)
  237. if err != nil {
  238. return
  239. }
  240. code = "BZ" + time.Now().Format("20060102") + fmt.Sprintf("%03d", num)
  241. return
  242. }
  243. // EtaBusinessItem ETA商家信息
  244. type EtaBusinessItem struct {
  245. EtaBusinessId int
  246. BusinessName string `description:"商家名称"`
  247. BusinessCode string `description:"商家编码"`
  248. CreditCode string `description:"社会统一信用码"`
  249. RegionType string `description:"所属区域:国内;海外"`
  250. Address string `description:"商家地址"`
  251. SellerId int `description:"销售ID"`
  252. SellerName string `description:"销售名称"`
  253. Leader string `description:"决策人"`
  254. IndustryId int `description:"行业ID"`
  255. IndustryName string `description:"行业名称"`
  256. CapitalScale string `description:"资金规模"`
  257. ResearchTeamSize string `description:"研究团队规模"`
  258. UserMax int `description:"用户上限"`
  259. SigningStatus int `description:"签约状态:1-首次签约;2-续约中;3-已终止"`
  260. Enable int `description:"状态:0-禁用;1-启用"`
  261. SigningTime string `description:"当前合约的签约时间"`
  262. ExpiredTime string `description:"当前合约的到期时间"`
  263. CreateTime string `description:"创建时间"`
  264. ModifyTime string `description:"更新时间"`
  265. }