company_contract.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. package company
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "time"
  6. )
  7. type CompanyContract struct {
  8. CompanyContractId int `orm:"column(company_contract_id);pk" description:"客户合同id"`
  9. ContractType string `description:"合同类型:枚举值:'新签合同','续约合同','补充协议'"`
  10. ProductId int `description:"产品id"`
  11. ProductName string `description:"产品名称"`
  12. CompanyId int `description:"客户id"`
  13. CompanyProductId int `description:"客户产品id"`
  14. ContractCode string `description:"合同编码"`
  15. StartDate string `description:"合同开始时间"`
  16. EndDate string `description:"合同结束时间"`
  17. Money float64 `description:"合同金额"`
  18. PayMethod string `description:"支付方式"`
  19. PayChannel string `description:"支付渠道"`
  20. ImgUrl string `description:"合同图片,多个用#隔开"`
  21. CreateTime time.Time `description:"合同创建时间"`
  22. ModifyTime time.Time `description:"合同修改时间"`
  23. Status int `description:"状态"`
  24. Source string `description:"合同来源,枚举值:上传附件、系统合同,默认上传附件"`
  25. PackageType int `description:"套餐类型,0:无,1:大套餐,2:小套餐"`
  26. RaiPackageType int `description:"权益套餐类型: 0-无; 1-70w大套餐; 2-45w大套餐"`
  27. }
  28. // 新增客户合同
  29. func AddCompanyContract(item *CompanyContract) (lastId int64, err error) {
  30. o := orm.NewOrm()
  31. lastId, err = o.Insert(item)
  32. return
  33. }
  34. func GetCompanyContractByCompanyId(companyId int) (items []*CompanyContract, err error) {
  35. o := orm.NewOrm()
  36. sql := `SELECT * FROM company_contract WHERE company_id =? ORDER BY modify_time DESC `
  37. _, err = o.Raw(sql, companyId).QueryRows(&items)
  38. return
  39. }
  40. func GetCompanyContractCode() (companyCode string, err error) {
  41. var num int
  42. o := orm.NewOrm()
  43. sql := `SELECT COUNT(1) AS num FROM company_contract`
  44. err = o.Raw(sql).QueryRow(&num)
  45. if err != nil {
  46. return
  47. }
  48. companyCode = "HZ" + time.Now().Format("20060102") + fmt.Sprintf("%03d", num)
  49. return
  50. }
  51. type CompanyContractPermission struct {
  52. Id int `orm:"column(id);pk" description:"客户合同id"`
  53. CompanyId int `description:"客户id"`
  54. CompanyContractId int `description:"合同id"`
  55. ChartPermissionId int `description:"权限id"`
  56. IsUpgrade int `description:"是否升级,1是,0否"`
  57. ExpensiveYx int `description:"权益研选: 0-3w; 1-5w"`
  58. StartDate string `description:"开始日期"`
  59. EndDate string `description:"结束日期"`
  60. CreateTime time.Time `description:"创建时间"`
  61. ModifyTime time.Time `description:"修改时间"`
  62. }
  63. // 新增客户合同
  64. func AddCompanyContractPermission(item *CompanyContractPermission) (err error) {
  65. o := orm.NewOrm()
  66. _, err = o.Insert(item)
  67. return
  68. }
  69. // MultiAddCompanyContractPermission 批量新增客户合同权限
  70. func MultiAddCompanyContractPermission(items []*CompanyContractPermission) (err error) {
  71. if len(items) == 0 {
  72. return
  73. }
  74. o := orm.NewOrm()
  75. _, err = o.InsertMulti(len(items), items)
  76. return
  77. }
  78. type CompanyContractPermissionLog struct {
  79. Id int `orm:"column(id);pk" description:"客户合同id"`
  80. CompanyId int `description:"客户id"`
  81. CompanyContractId int `description:"合同id"`
  82. ChartPermissionId string `description:"权限id"`
  83. StartDate string `description:"开始日期"`
  84. EndDate string `description:"结束日期"`
  85. CreateTime time.Time `description:"创建时间"`
  86. ModifyTime time.Time `description:"修改时间"`
  87. LogCreateTime time.Time
  88. }
  89. // 新增客户合同
  90. func AddCompanyContractPermissionLog(item *CompanyContractPermissionLog) (err error) {
  91. o := orm.NewOrm()
  92. _, err = o.Insert(item)
  93. return
  94. }
  95. // MultiAddCompanyContractPermissionLog 批量新增客户合同权限日志
  96. func MultiAddCompanyContractPermissionLog(items []*CompanyContractPermissionLog) (err error) {
  97. if len(items) == 0 {
  98. return
  99. }
  100. o := orm.NewOrm()
  101. _, err = o.InsertMulti(len(items), items)
  102. return
  103. }
  104. func GetCompanyContractPermissionCheck(companyId, permissionId int) (count int, err error) {
  105. o := orm.NewOrm()
  106. sql := `SELECT COUNT(1) AS count FROM company_contract_permission AS a WHERE a.company_id=? AND a.chart_permission_id=? `
  107. err = o.Raw(sql, companyId, permissionId).QueryRow(&count)
  108. return
  109. }
  110. func GetCompanyContractPermissionCheckByContractId(companyId, companyContractId, permissionId int) (count int, err error) {
  111. o := orm.NewOrm()
  112. sql := `SELECT COUNT(1) AS count FROM company_contract_permission AS a WHERE a.company_id=? AND company_contract_id=? AND a.chart_permission_id=? `
  113. err = o.Raw(sql, companyId, companyContractId, permissionId).QueryRow(&count)
  114. return
  115. }
  116. // GetCompanyContractPermissionByCompanyContractId 根据合同ID获取开通的权限
  117. func GetCompanyContractPermissionByCompanyContractId(companyContractId int) (items []*CompanyContractPermission, err error) {
  118. o := orm.NewOrm()
  119. sql := `SELECT * FROM company_contract_permission WHERE company_contract_id =? ORDER BY modify_time DESC `
  120. _, err = o.Raw(sql, companyContractId).QueryRows(&items)
  121. return
  122. }
  123. // 根据合同id集合字符串获取权限列表数据
  124. type CompanyContractPermissionName struct {
  125. Id int `orm:"column(id);pk" description:"客户合同id"`
  126. CompanyId int `description:"客户id"`
  127. CompanyContractId int `description:"合同id"`
  128. ChartPermissionId int `description:"权限id"`
  129. ChartPermissionName string `description:"权限名称"`
  130. PermissionName string `description:"权限名称"`
  131. PermissionRemark string `description:"权限备注"`
  132. ClassifyName string `description:"权限分类名称"`
  133. StartDate string `description:"开始日期"`
  134. EndDate string `description:"结束日期"`
  135. CreateTime time.Time `json:"-" description:"创建时间"`
  136. ModifyTime time.Time `json:"-" description:"修改时间"`
  137. IsUpgrade int `description:"是否升级,1是,0否"`
  138. }
  139. // 根据企业客户id获取已经审核通过的合同列表
  140. func GetCompanyContractListByCompanyId(companyId int, condition string, pars []interface{}) (items []*CompanyContract, err error) {
  141. o := orm.NewOrm()
  142. sql := `SELECT * FROM company_contract WHERE company_id =? `
  143. if condition != "" {
  144. sql += condition
  145. }
  146. sql += " ORDER BY modify_time DESC"
  147. _, err = o.Raw(sql, companyId, pars).QueryRows(&items)
  148. return
  149. }
  150. // 根据合同Id集合获取合同的权限列表
  151. func GetCompanyContractPermissionListByContractIds(companyContractIds string) (list []*CompanyContractPermissionName, err error) {
  152. o := orm.NewOrm()
  153. sql := `SELECT a.*,b.permission_name,b.remark permission_remark,b.chart_permission_name,b.classify_name FROM company_contract_permission AS a left join chart_permission b on a.chart_permission_id = b.chart_permission_id WHERE company_contract_id in (` + companyContractIds + `) `
  154. _, err = o.Raw(sql).QueryRows(&list)
  155. return
  156. }
  157. // GetCompanyContractDetailByCompanyContractId 根据客户合同id获取合同信息
  158. func GetCompanyContractDetailByCompanyContractId(companyContractId int) (item *CompanyContract, err error) {
  159. o := orm.NewOrm()
  160. sql := `SELECT * FROM company_contract WHERE company_contract_id =? ORDER BY modify_time DESC `
  161. err = o.Raw(sql, companyContractId).QueryRow(&item)
  162. return
  163. }
  164. // GetCompanyContractPermissionListByContractId 根据合同Id获取合同的权限列表
  165. func GetCompanyContractPermissionListByContractId(companyContractId int) (list []*CompanyContractPermissionName, err error) {
  166. o := orm.NewOrm()
  167. sql := `SELECT a.*,b.chart_permission_name,b.classify_name FROM company_contract_permission AS a left join chart_permission b on a.chart_permission_id = b.chart_permission_id WHERE company_contract_id =? `
  168. _, err = o.Raw(sql, companyContractId).QueryRows(&list)
  169. return
  170. }
  171. func GetCompanyContractUpgradePermissionCheckByContractId(companyId, companyContractId, permissionId, isUpgrade int) (count int, err error) {
  172. o := orm.NewOrm()
  173. sql := `SELECT COUNT(1) AS count FROM company_contract_permission AS a WHERE a.company_id=? AND company_contract_id=? AND a.chart_permission_id=? AND a.is_upgrade=? `
  174. err = o.Raw(sql, companyId, companyContractId, permissionId, isUpgrade).QueryRow(&count)
  175. return
  176. }
  177. type CompanyContractResp struct {
  178. CompanyContractId int `orm:"column(company_contract_id);pk" description:"客户合同id"`
  179. ContractType string `description:"合同类型:枚举值:'新签合同','续约合同','补充协议'"`
  180. ProductId int `description:"产品id"`
  181. ProductName string `description:"产品名称"`
  182. CompanyId int `description:"客户id"`
  183. CompanyProductId int `description:"客户产品id"`
  184. ContractCode string `description:"合同编码"`
  185. StartDate string `description:"合同开始时间"`
  186. EndDate string `description:"合同结束时间"`
  187. Money float64 `description:"合同金额"`
  188. PayMethod string `description:"支付方式"`
  189. PayChannel string `description:"支付渠道"`
  190. ImgUrl string `description:"合同图片,多个用#隔开"`
  191. CreateTime time.Time `description:"合同创建时间"`
  192. ModifyTime time.Time `description:"合同修改时间"`
  193. Status int `description:"状态"`
  194. Source string `description:"合同来源,枚举值:上传附件、系统合同,默认上传附件"`
  195. PackageType int `description:"套餐类型,0:无,1:大套餐,2:小套餐"`
  196. RaiPackageType int `description:"权益套餐类型: 0-无; 1-70w大套餐; 2-45w大套餐"`
  197. PermissionName string `description:"权限名"`
  198. }
  199. // 获取合同列表
  200. func GetCompanyContractList(condition string, pars []interface{}) (items []*CompanyContractResp, err error) {
  201. o := orm.NewOrm()
  202. sql := `SELECT * FROM company_contract WHERE 1 = 1 `
  203. if condition != "" {
  204. sql += condition
  205. }
  206. _, err = o.Raw(sql, pars).QueryRows(&items)
  207. return
  208. }
  209. // 获取合同对应的权限列表
  210. func GetCompanyContractPermissionList(condition string, pars []interface{}) (items []*CompanyContractPermission, err error) {
  211. o := orm.NewOrm()
  212. sql := `SELECT * FROM company_contract_permission WHERE 1 = 1 `
  213. if condition != "" {
  214. sql += condition
  215. }
  216. _, err = o.Raw(sql, pars).QueryRows(&items)
  217. return
  218. }
  219. // 通过ID获取详情
  220. func GetCompanyContracDetail(condition string, pars []interface{}) (item *CompanyContractResp, err error) {
  221. o := orm.NewOrm()
  222. sql := `SELECT * FROM company_contract WHERE 1= 1 ` + condition
  223. err = o.Raw(sql, pars).QueryRow(&item)
  224. return
  225. }
  226. type GetCompanyContractDetailResp struct {
  227. Detail *CompanyContractResp
  228. }
  229. // UpdateCompanyContractPackageDifference 更改合同与上一份合同金额对比信息
  230. func UpdateCompanyContractPackageDifference(packageDifference string, companyContractId int) (err error) {
  231. o := orm.NewOrm()
  232. sql := `UPDATE company_contract SET package_difference = ? WHERE company_contract_id=? `
  233. _, err = o.Raw(sql, packageDifference, companyContractId).Exec()
  234. return
  235. }