contract_allocation.go 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158
  1. package cygx
  2. import (
  3. "errors"
  4. "fmt"
  5. "hongze/hz_crm_api/models"
  6. "hongze/hz_crm_api/models/company"
  7. "hongze/hz_crm_api/models/cygx"
  8. "hongze/hz_crm_api/models/system"
  9. "hongze/hz_crm_api/services/alarm_msg"
  10. "hongze/hz_crm_api/utils"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. //
  16. //func init() {
  17. // fmt.Println(GetCompanyContractPermissionNameMapBymapCompamy(map[int]string{6991: "1138"}))
  18. //}
  19. // GetCompanyContractPermissionNameMapBymapCompamy 获取合并之后的合同所对应的权限种类名称
  20. func GetCompanyContractPermissionNameMapBymapCompamy(mapCompamy map[int]string) (mapContractResp map[int]string, err error) {
  21. if len(mapCompamy) == 0 {
  22. return
  23. }
  24. mapContracIdCompanyId := make(map[int]int) //建立合同ID与公司ID的map对应关系
  25. var companyContractIds []int
  26. //var companyContractIdGroup string //多个合同ID
  27. for k, v := range mapCompamy {
  28. //companyContractIdGroup += v + ","
  29. sliceContract := strings.Split(v, ",")
  30. for _, compamyContracId := range sliceContract {
  31. companyContractIdInt, _ := strconv.Atoi(compamyContracId)
  32. mapContracIdCompanyId[companyContractIdInt] = k
  33. companyContractIds = append(companyContractIds, companyContractIdInt)
  34. }
  35. }
  36. // 获取单个合同所对应的权限名称
  37. contractPermissionNameMap, e := GetCompanyContractPermissionNameMapById(companyContractIds)
  38. if e != nil {
  39. err = errors.New("GetCompanyContractPermissionNameMapById, Err: " + e.Error())
  40. return
  41. }
  42. mapContractResp = make(map[int]string, 0)
  43. for k, v := range mapCompamy {
  44. sliceContract := strings.Split(v, ",")
  45. for _, compamyContracId := range sliceContract {
  46. companyContractIdInt, _ := strconv.Atoi(compamyContracId)
  47. for k2, v2 := range contractPermissionNameMap {
  48. if companyContractIdInt == k2 {
  49. mapContractResp[k] += v2 + ","
  50. }
  51. }
  52. }
  53. }
  54. for k, v := range mapContractResp {
  55. mapContractResp[k] = strings.TrimRight(v, ",")
  56. }
  57. return
  58. }
  59. // GetCompanyContractPermissionNameMapById 获取合并之后的合同所对应的权限种类名称
  60. func GetCompanyContractPermissionNameMapById(companyContractIds []int) (mapContractResp map[int]string, err error) {
  61. //return
  62. lenArr := len(companyContractIds)
  63. if lenArr == 0 {
  64. return
  65. }
  66. var condition string
  67. var pars []interface{}
  68. condition += " AND company_contract_id IN (" + utils.GetOrmInReplace(lenArr) + ")"
  69. pars = append(pars, companyContractIds)
  70. companyContractList, e := company.GetCompanyContractList(condition, pars)
  71. if e != nil && e.Error() != utils.ErrNoRow() {
  72. err = errors.New("GetCompanyContractList, Err: " + e.Error())
  73. return
  74. }
  75. permissionList, e := models.GetChartPermissionList()
  76. if e != nil && e.Error() != utils.ErrNoRow() {
  77. err = errors.New("GetChartPermissionList, Err: " + e.Error())
  78. return
  79. }
  80. mappermissionName := make(map[int]string)
  81. for _, v := range permissionList {
  82. if v.ProductId == 2 {
  83. mappermissionName[v.ChartPermissionId] = v.Remark
  84. }
  85. }
  86. mapContractIdPerssion := make(map[int]string) //单个合同ID所对应的套餐或者权限名称
  87. for _, v := range companyContractList {
  88. if v.RaiPackageType == 1 {
  89. mapContractIdPerssion[v.CompanyContractId] = "70w套餐,"
  90. }
  91. if v.RaiPackageType == 2 {
  92. mapContractIdPerssion[v.CompanyContractId] = "45w套餐,"
  93. }
  94. }
  95. companyContractPermissionList, e := company.GetCompanyContractPermissionList(condition, pars)
  96. if e != nil && e.Error() != utils.ErrNoRow() {
  97. err = errors.New("GetCompanyContractPermissionList, Err: " + e.Error())
  98. return
  99. }
  100. mapIsUpgrade := make(map[string]bool) //合同ID对应的行业是否有升级
  101. for _, v := range companyContractPermissionList {
  102. //如果开通的不是整个套餐,那么就做单独的子权限处理
  103. if strings.Count(mapContractIdPerssion[(v.CompanyContractId)], "w套餐") == 0 {
  104. if v.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  105. if v.ExpensiveYx == 1 {
  106. mapContractIdPerssion[(v.CompanyContractId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + "(5w),"
  107. } else if v.ExpensiveYx == 2 {
  108. mapContractIdPerssion[(v.CompanyContractId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + "(10w),"
  109. } else {
  110. mapContractIdPerssion[(v.CompanyContractId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + ","
  111. }
  112. } else {
  113. mapContractIdPerssion[(v.CompanyContractId)] += mappermissionName[v.ChartPermissionId] + ","
  114. if v.IsUpgrade == 1 {
  115. //合同ID,权限名称形成唯一的主键索引
  116. perssionName := mappermissionName[v.ChartPermissionId]
  117. perssionName = strings.Replace(perssionName, "(客观)", "", -1)
  118. perssionName = strings.Replace(perssionName, "(主观)", "", -1)
  119. mapIsUpgrade[fmt.Sprint(v.CompanyContractId, "perssionName", perssionName)] = true
  120. }
  121. }
  122. } else {
  123. if v.ChartPermissionId == utils.ZHUAN_JIA_ID {
  124. mapContractIdPerssion[(v.CompanyContractId)] += utils.ZHUAN_JIA_NAME + ","
  125. }
  126. if v.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  127. if v.ExpensiveYx == 1 {
  128. mapContractIdPerssion[(v.CompanyContractId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + "(5w),"
  129. } else if v.ExpensiveYx == 2 {
  130. mapContractIdPerssion[(v.CompanyContractId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + "(10w),"
  131. } else {
  132. mapContractIdPerssion[(v.CompanyContractId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + ","
  133. }
  134. }
  135. if v.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID {
  136. mapContractIdPerssion[(v.CompanyContractId)] += utils.YAN_XUAN_KOU_DIAN_BAO_NAME + ","
  137. }
  138. }
  139. }
  140. //合并客观权限
  141. for k, v := range mapContractIdPerssion {
  142. perssionName := v
  143. if strings.Count(v, utils.YI_YAO_NAME) == 2 {
  144. perssionName = strings.Replace(perssionName, "医药(主观)", "医药", -1)
  145. perssionName = strings.Replace(perssionName, "医药(客观)", "", -1)
  146. }
  147. if strings.Count(v, utils.XIAO_FEI_NAME) == 2 {
  148. perssionName = strings.Replace(perssionName, "消费(主观)", "消费", -1)
  149. perssionName = strings.Replace(perssionName, "消费(客观)", "", -1)
  150. }
  151. if strings.Count(v, utils.KE_JI_NAME) == 2 {
  152. perssionName = strings.Replace(perssionName, "科技(主观)", "科技", -1)
  153. perssionName = strings.Replace(perssionName, "科技(客观)", "", -1)
  154. }
  155. if strings.Count(v, utils.ZHI_ZAO_NAME) == 2 {
  156. perssionName = strings.Replace(perssionName, "智造(主观)", "智造", -1)
  157. perssionName = strings.Replace(perssionName, "智造(客观)", "", -1)
  158. }
  159. perssionName = strings.TrimRight(perssionName, ",")
  160. mapContractIdPerssion[k] = perssionName
  161. }
  162. mapContractResp = make(map[int]string, 0)
  163. //过滤多余的","
  164. for k, v := range mapContractIdPerssion {
  165. sliceName := strings.Split(v, ",")
  166. var nameArr []string
  167. for _, vName := range sliceName {
  168. if vName == "" {
  169. continue
  170. }
  171. if mapIsUpgrade[fmt.Sprint(k, "perssionName", vName)] {
  172. vName += "(升级)"
  173. }
  174. nameArr = append(nameArr, vName)
  175. }
  176. mapContractResp[k] = strings.Join(nameArr, ",")
  177. }
  178. return
  179. }
  180. func GetCompanyContractPermissionNameMapByIds(companyIds []int) (mapContractResp map[int]string, err error) {
  181. //return
  182. lenArr := len(companyIds)
  183. if lenArr == 0 {
  184. return
  185. }
  186. var condition string
  187. var pars []interface{}
  188. condition += " AND company_id IN (" + utils.GetOrmInReplace(lenArr) + ") AND product_id = 2 AND status = '正式' "
  189. pars = append(pars, companyIds)
  190. //获取所有开通买方研选正式试用的客户列表
  191. listCompanyPermission, e := company.GetCompanyReportPermissionList(condition, pars, 0, 0)
  192. if e != nil && e.Error() != utils.ErrNoRow() {
  193. err = errors.New("GetCompanyReportPermissionList, Err: " + e.Error())
  194. return
  195. }
  196. //companyContractList, e := company.GetCompanyContractList(condition, pars)
  197. //if e != nil && e.Error() != utils.ErrNoRow() {
  198. // err = errors.New("GetCompanyContractList, Err: " + e.Error())
  199. // return
  200. //}
  201. permissionList, e := models.GetChartPermissionList()
  202. if e != nil && e.Error() != utils.ErrNoRow() {
  203. err = errors.New("GetChartPermissionList, Err: " + e.Error())
  204. return
  205. }
  206. mappermissionName := make(map[int]string)
  207. for _, v := range permissionList {
  208. if v.ProductId == 2 {
  209. mappermissionName[v.ChartPermissionId] = v.Remark
  210. }
  211. }
  212. mapContractIdPerssion := make(map[int]string) //单个合同ID所对应的套餐或者权限名称
  213. //for _, v := range companyContractList {
  214. // if v.RaiPackageType == 1 {
  215. // mapContractIdPerssion[v.CompanyContractId] = "70w套餐,"
  216. // }
  217. // if v.RaiPackageType == 2 {
  218. // mapContractIdPerssion[v.CompanyContractId] = "45w套餐,"
  219. // }
  220. //}
  221. //
  222. //companyContractPermissionList, e := company.GetCompanyContractPermissionList(condition, pars)
  223. //if e != nil && e.Error() != utils.ErrNoRow() {
  224. // err = errors.New("GetCompanyContractPermissionList, Err: " + e.Error())
  225. // return
  226. //}
  227. mapIsUpgrade := make(map[string]bool) //合同ID对应的行业是否有升级
  228. for _, v := range listCompanyPermission {
  229. //如果开通的不是整个套餐,那么就做单独的子权限处理
  230. if strings.Count(mapContractIdPerssion[(v.CompanyId)], "w套餐") == 0 {
  231. if v.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  232. if v.ExpensiveYx == 1 {
  233. mapContractIdPerssion[(v.CompanyId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + "(5w),"
  234. } else if v.ExpensiveYx == 2 {
  235. mapContractIdPerssion[(v.CompanyId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + "(10w),"
  236. } else {
  237. mapContractIdPerssion[(v.CompanyId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + ","
  238. }
  239. } else {
  240. mapContractIdPerssion[(v.CompanyId)] += mappermissionName[v.ChartPermissionId] + ","
  241. if v.IsUpgrade == 1 {
  242. //合同ID,权限名称形成唯一的主键索引
  243. perssionName := mappermissionName[v.ChartPermissionId]
  244. perssionName = strings.Replace(perssionName, "(客观)", "", -1)
  245. perssionName = strings.Replace(perssionName, "(主观)", "", -1)
  246. mapIsUpgrade[fmt.Sprint(v.CompanyContractId, "perssionName", perssionName)] = true
  247. }
  248. }
  249. } else {
  250. if v.ChartPermissionId == utils.ZHUAN_JIA_ID {
  251. mapContractIdPerssion[(v.CompanyId)] += utils.ZHUAN_JIA_NAME + ","
  252. }
  253. if v.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  254. if v.ExpensiveYx == 1 {
  255. mapContractIdPerssion[(v.CompanyId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + "(5w),"
  256. } else if v.ExpensiveYx == 2 {
  257. mapContractIdPerssion[(v.CompanyId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + "(10w),"
  258. } else {
  259. mapContractIdPerssion[(v.CompanyId)] += utils.CHART_PERMISSION_NAME_MF_YANXUAN + ","
  260. }
  261. }
  262. if v.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID {
  263. mapContractIdPerssion[(v.CompanyId)] += utils.YAN_XUAN_KOU_DIAN_BAO_NAME + ","
  264. }
  265. }
  266. }
  267. //合并客观权限
  268. for k, v := range mapContractIdPerssion {
  269. perssionName := v
  270. if strings.Count(v, utils.YI_YAO_NAME) == 2 {
  271. perssionName = strings.Replace(perssionName, "医药(主观)", "医药", -1)
  272. perssionName = strings.Replace(perssionName, "医药(客观)", "", -1)
  273. }
  274. if strings.Count(v, utils.XIAO_FEI_NAME) == 2 {
  275. perssionName = strings.Replace(perssionName, "消费(主观)", "消费", -1)
  276. perssionName = strings.Replace(perssionName, "消费(客观)", "", -1)
  277. }
  278. if strings.Count(v, utils.KE_JI_NAME) == 2 {
  279. perssionName = strings.Replace(perssionName, "科技(主观)", "科技", -1)
  280. perssionName = strings.Replace(perssionName, "科技(客观)", "", -1)
  281. }
  282. if strings.Count(v, utils.ZHI_ZAO_NAME) == 2 {
  283. perssionName = strings.Replace(perssionName, "智造(主观)", "智造", -1)
  284. perssionName = strings.Replace(perssionName, "智造(客观)", "", -1)
  285. }
  286. perssionName = strings.TrimRight(perssionName, ",")
  287. mapContractIdPerssion[k] = perssionName
  288. }
  289. mapContractResp = make(map[int]string, 0)
  290. //过滤多余的","
  291. for k, v := range mapContractIdPerssion {
  292. sliceName := strings.Split(v, ",")
  293. var nameArr []string
  294. for _, vName := range sliceName {
  295. if vName == "" {
  296. continue
  297. }
  298. if mapIsUpgrade[fmt.Sprint(k, "perssionName", vName)] {
  299. vName += "(升级)"
  300. }
  301. nameArr = append(nameArr, vName)
  302. }
  303. mapContractResp[k] = strings.Join(nameArr, ",")
  304. }
  305. return
  306. }
  307. // GetCompanyPermissionNameStatusMapByCompanyId 通过公司ID,获取公司当下所有权限的状态信息
  308. func GetCompanyPermissionNameStatusMapByCompanyId(companyIds []int) (mapResp map[string]string, err error) {
  309. //return
  310. lenArr := len(companyIds)
  311. if lenArr == 0 {
  312. return
  313. }
  314. var condition string
  315. var pars []interface{}
  316. condition += " AND company_id IN (" + utils.GetOrmInReplace(lenArr) + ") AND product_id = 2 AND status = '正式' "
  317. pars = append(pars, companyIds)
  318. //获取所有开通买方研选正式试用的客户列表
  319. listCompanyPermission, e := company.GetCompanyReportPermissionList(condition, pars, 0, 0)
  320. if e != nil && e.Error() != utils.ErrNoRow() {
  321. err = errors.New("GetCompanyReportPermissionList, Err: " + e.Error())
  322. return
  323. }
  324. //获取行业权限ID与名称的映射关系
  325. permissionList, e := models.GetChartPermissionList()
  326. if e != nil && e.Error() != utils.ErrNoRow() {
  327. err = errors.New("GetChartPermissionList, Err: " + e.Error())
  328. return
  329. }
  330. mapResp = make(map[string]string, 0)
  331. mapChartPermission := make(map[int]string)
  332. for _, v := range permissionList {
  333. mapChartPermission[v.ChartPermissionId] = v.PermissionName
  334. }
  335. for _, v := range listCompanyPermission {
  336. if mapChartPermission[v.ChartPermissionId] == "" {
  337. continue
  338. }
  339. //公司ID与权限名称组成映射关系
  340. mapResp[fmt.Sprint(v.CompanyId, mapChartPermission[v.ChartPermissionId])] = v.Status
  341. }
  342. return
  343. }
  344. // 判断合同审核通过时间是否超过九十天
  345. func GetMapIsGrayByCompanyContractIds(companyContractIds []int) (mapResp map[int]bool, err error) {
  346. lenArr := len(companyContractIds)
  347. if lenArr == 0 {
  348. return
  349. }
  350. var condition string
  351. var pars []interface{}
  352. pars = make([]interface{}, 0)
  353. condition = " AND company_contract_id IN (" + utils.GetOrmInReplace(lenArr) + ") GROUP BY company_contract_id ORDER BY create_time DESC "
  354. pars = append(pars, companyContractIds)
  355. companyContractPermissionList, e := company.GetCompanyContractPermissionList(condition, pars)
  356. if e != nil && e.Error() != utils.ErrNoRow() {
  357. err = errors.New("GetCompanyContractPermissionList, Err: " + e.Error())
  358. return
  359. }
  360. //超过九十天就置灰
  361. timeInit := time.Now().AddDate(0, 0, -180)
  362. mapResp = make(map[int]bool, 0)
  363. for _, v := range companyContractPermissionList {
  364. if v.CreateTime.Before(timeInit) {
  365. mapResp[v.CompanyContractId] = true
  366. }
  367. }
  368. return
  369. }
  370. //func init3() {
  371. // var condition string
  372. // var pars []interface{}
  373. // //默认只查询权益 2023-06-01 之后的合同
  374. // condition += ` AND c.product_id = ? AND a.start_date > ? `
  375. // pars = append(pars, 2, "2023-06-01")
  376. //
  377. // //列表页数据
  378. // list, err := cygx.GetCompanyContractListJoinCompany(condition, pars, 0, 1000)
  379. // if err != nil {
  380. // fmt.Println(err)
  381. // return
  382. // }
  383. //
  384. // for _, v := range list {
  385. // fmt.Println(v.CompanyContractId)
  386. // HandleAllocationCompanyContractByYanXuan(v.CompanyContractId)
  387. // }
  388. //
  389. // fmt.Println(len(list))
  390. //}
  391. // 如果合同只有研选的时候,自动处理派点
  392. func HandleAllocationCompanyContractByYanXuan(companyContractId int) (err error) {
  393. defer func() {
  394. if err != nil {
  395. fmt.Println(err)
  396. go alarm_msg.SendAlarmMsg(fmt.Sprint("如果合同只有研选的时候,自动处理派点失败,Err:", err.Error(), "companyContractId", companyContractId), 2)
  397. }
  398. }()
  399. var condition string
  400. var pars []interface{}
  401. pars = make([]interface{}, 0)
  402. condition = " AND company_contract_id = ? "
  403. pars = append(pars, companyContractId)
  404. companyContractPermissionList, e := company.GetCompanyContractPermissionList(condition, pars)
  405. if e != nil && e.Error() != utils.ErrNoRow() {
  406. err = errors.New("GetCompanyContractPermissionList, Err: " + e.Error())
  407. return
  408. }
  409. if e != nil && e.Error() != utils.ErrNoRow() {
  410. err = errors.New("GetCygxAllocationCompanyContractPermissionListById, Err: " + e.Error())
  411. return
  412. }
  413. if len(companyContractPermissionList) > 2 {
  414. return
  415. }
  416. var expensiveYxmoney float64
  417. //for _, v := range companyContractPermissionList {
  418. // if v.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN {
  419. // err = errors.New("没有发现研选权限: ")
  420. // return
  421. // }
  422. // if v.ExpensiveYx == 1 {
  423. // expensiveYxmoney = 5
  424. // } else if v.ExpensiveYx == 2 {
  425. // expensiveYxmoney = 10
  426. // } else {
  427. // expensiveYxmoney = 3
  428. // }
  429. //}
  430. var items []*cygx.CygxAllocationCompanyContract
  431. var itemsPermission []*cygx.CygxAllocationCompanyContractPermission
  432. for _, v := range companyContractPermissionList {
  433. if v.ChartPermissionId != utils.CHART_PERMISSION_ID_YANXUAN && v.ChartPermissionId != utils.YAN_XUAN_KOU_DIAN_BAO_ID {
  434. return
  435. }
  436. if v.ChartPermissionId == utils.CHART_PERMISSION_ID_YANXUAN {
  437. expensiveYxmoney = 3
  438. }
  439. if v.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID {
  440. expensiveYxmoney = 0.2 * v.Points
  441. }
  442. itemPermission := new(cygx.CygxAllocationCompanyContractPermission)
  443. itemPermission.CompanyContractId = companyContractId
  444. //itemPermission.AdminId = sysUser.AdminId
  445. //itemPermission.AdminName = sysUser.RealName
  446. itemPermission.Proportion = 0
  447. itemPermission.Money = expensiveYxmoney
  448. itemPermission.MoneyAvg = 0
  449. itemPermission.ChartPermissionName = v.PermissionName
  450. itemPermission.CreateTime = time.Now()
  451. itemPermission.ModifyTime = time.Now()
  452. itemsPermission = append(itemsPermission, itemPermission)
  453. item := new(cygx.CygxAllocationCompanyContract)
  454. item.CompanyContractId = companyContractId
  455. //item.AdminId = sysUser.AdminId
  456. //item.AdminName = sysUser.RealName
  457. item.Proportion = 0
  458. item.Money = expensiveYxmoney
  459. item.RealName = v.PermissionName
  460. item.ChartPermissionName = v.PermissionName
  461. item.CreateTime = time.Now()
  462. item.ModifyTime = time.Now()
  463. items = append(items, item)
  464. }
  465. if len(items) == 0 {
  466. return
  467. }
  468. e = cygx.AddAndUpdateCygxAllocationCompanyContract(items, itemsPermission, companyContractId)
  469. if e != nil {
  470. err = errors.New("AddAndUpdateCygxAllocationCompanyContract, Err: " + e.Error())
  471. return
  472. }
  473. return
  474. }
  475. //func init() {
  476. // var condition string
  477. // var pars []interface{}
  478. //
  479. // condition = " AND status = 1 "
  480. //
  481. // list, err := company.GetCompanyContractList(condition, pars)
  482. // if err != nil {
  483. // fmt.Println(err)
  484. // return
  485. // }
  486. // fmt.Println(len(list))
  487. // //return
  488. // for _, v := range list {
  489. // fmt.Println(v.CompanyContractId)
  490. // HandleCompanyContractPackageDifference(v.CompanyContractId)
  491. // }
  492. //
  493. //}
  494. //func init() {
  495. // var condition string
  496. // var pars []interface{}
  497. // condition = " AND product_id = 2 AND package_difference != '' "
  498. // companyContracList, e := company.GetCompanyContracList(condition, pars)
  499. // if e != nil {
  500. // fmt.Println(e)
  501. // return
  502. // }
  503. // for k, v := range companyContracList {
  504. // fmt.Println("k", k, "v.CompanyContractId", v.CompanyContractId)
  505. // HandleCompanyContractPackageDifference(v.CompanyContractId)
  506. // }
  507. //
  508. // fmt.Println("endened")
  509. // //condition = " AND company_contract_id = ? "
  510. // //HandleCompanyContractPackageDifference(3038)
  511. //}
  512. // HandleCompanyContractPackageDifference 更新与上一份合同的金额的对比 '增加套餐','减少套餐','维持套餐'
  513. func HandleCompanyContractPackageDifference(companyContractId int) (err error) {
  514. defer func() {
  515. if err != nil {
  516. fmt.Println(err)
  517. go alarm_msg.SendAlarmMsg(fmt.Sprint("更新与上一份合同的金额的对比 '增加套餐','减少套餐','维持套餐'失败,Err:", err.Error(), "companyContractId", companyContractId), 2)
  518. }
  519. }()
  520. var condition string
  521. var pars []interface{}
  522. condition = " AND company_contract_id = ? "
  523. pars = append(pars, companyContractId)
  524. detail, e := company.GetCompanyContracDetail(condition, pars)
  525. if e != nil {
  526. err = errors.New("GetCompanyContracDetail,detail Err: " + e.Error())
  527. return
  528. }
  529. if detail.ProductId != 2 {
  530. return
  531. }
  532. startYeaar := utils.StrDateToDate(detail.StartDate).Year()
  533. lastYearStartData := fmt.Sprint(startYeaar-1, "-01-01")
  534. lastYearEndData := fmt.Sprint(startYeaar-1, "-12-31")
  535. //fmt.Println(lastYearStartData)
  536. //fmt.Println(lastYearEndData)
  537. //return
  538. //如果不是续约合同就不做对比处理
  539. if detail.ContractType != "续约合同" {
  540. return
  541. }
  542. //获取前一年所有的合同列表
  543. pars = make([]interface{}, 0)
  544. condition = " AND company_id = ? AND company_contract_id < ? AND status = 1 AND product_id = ? AND start_date >= ? AND start_date <= ? "
  545. pars = append(pars, detail.CompanyId, companyContractId, detail.ProductId, lastYearStartData, lastYearEndData)
  546. companyContracList, e := company.GetCompanyContracList(condition, pars)
  547. if e != nil {
  548. err = errors.New("GetCompanyContracList Err: " + e.Error())
  549. return
  550. }
  551. var sumMoney float64
  552. var packageDifference string
  553. for _, v := range companyContracList {
  554. sumMoney += v.Money
  555. }
  556. if detail.Money > sumMoney {
  557. packageDifference = "增加套餐"
  558. } else if detail.Money < sumMoney {
  559. packageDifference = "减少套餐"
  560. } else {
  561. packageDifference = "维持套餐"
  562. }
  563. //fmt.Println(packageDifference)
  564. //return
  565. e = company.UpdateCompanyContractPackageDifference(packageDifference, companyContractId)
  566. if e != nil {
  567. err = errors.New("UpdateCompanyContractPackageDifference, Err: " + e.Error())
  568. return
  569. }
  570. return
  571. }
  572. // HandleCompanyContractTypeByRaiXClass 所有x类试用转正的合同都记为 :打分派点
  573. func HandleCompanyContractTypeByRaiXClass(companyContractId int) (err error) {
  574. defer func() {
  575. if err != nil {
  576. go alarm_msg.SendAlarmMsg(fmt.Sprint(" 所有x类试用转正的合同都记为 :打分派点失败,HandleCompanyContractTypeByRaiXClass Err:", err.Error(), "companyContractId", companyContractId), 2)
  577. }
  578. }()
  579. var condition string
  580. var pars []interface{}
  581. condition = " AND company_contract_id = ? "
  582. pars = append(pars, companyContractId)
  583. detail, e := company.GetCompanyContracDetail(condition, pars)
  584. if e != nil {
  585. err = errors.New("GetCompanyContracDetail,detail Err: " + e.Error())
  586. return
  587. }
  588. companyProduct, e := company.GetCompanyProductByCompanyIdAndProductId(detail.CompanyId, utils.COMPANY_PRODUCT_RAI_ID)
  589. if e != nil {
  590. err = errors.New("GetCompanyProductByCompanyIdAndProductId Err: " + e.Error())
  591. return
  592. }
  593. //权益非永续客户不处理
  594. if companyProduct.Status != utils.COMPANY_STATUS_FOREVER {
  595. return
  596. }
  597. e = company.UpdateCompanyContractType("打分派点", companyContractId)
  598. if e != nil {
  599. err = errors.New("UpdateCompanyContractType, Err: " + e.Error())
  600. return
  601. }
  602. return
  603. }
  604. // HandleCompanyContractPermissionContractType 更新合同权限表中的权限名称,以及对应的行业权限类型(行业新签、行业续约)
  605. func HandleCompanyContractPermissionContractType(companyContractId int) (err error) {
  606. defer func() {
  607. if err != nil {
  608. fmt.Println(err)
  609. go alarm_msg.SendAlarmMsg(fmt.Sprint("更新合同权限表中的权限名称,以及对应的行业权限类型(行业新签、行业续约)失败,HandleCompanyContractPermissionContractType Err:", err.Error(), "companyContractId", companyContractId), 2)
  610. }
  611. }()
  612. var condition string
  613. var pars []interface{}
  614. condition = " AND company_contract_id = ? "
  615. pars = append(pars, companyContractId)
  616. detail, e := company.GetCompanyContracDetail(condition, pars)
  617. if e != nil {
  618. err = errors.New("GetCompanyContracDetail,detail Err: " + e.Error())
  619. return
  620. }
  621. //获取权限ID与名称的map映射
  622. permissionList, e := models.GetChartPermissionList()
  623. if e != nil && e.Error() != utils.ErrNoRow() {
  624. err = errors.New("GetChartPermissionList Err: " + e.Error())
  625. return
  626. }
  627. mapChartPermission := make(map[int]string)
  628. for _, v := range permissionList {
  629. mapChartPermission[v.ChartPermissionId] = v.PermissionName
  630. }
  631. companyId := detail.CompanyId
  632. //如果不是续约合同就不做对比处理
  633. pars = make([]interface{}, 0)
  634. condition = " AND company_contract_id != ? AND company_id = ? "
  635. pars = append(pars, companyContractId, companyId)
  636. //获取历史签约信息
  637. companyContractPermissionListHistory, e := company.GetCompanyContractPermissionList(condition, pars)
  638. if e != nil && e.Error() != utils.ErrNoRow() {
  639. err = errors.New("companyContractPermissionListHistory Err: " + e.Error())
  640. return
  641. }
  642. var mapHistoryPerssionName []string
  643. for _, v := range companyContractPermissionListHistory {
  644. mapHistoryPerssionName = append(mapHistoryPerssionName, mapChartPermission[v.ChartPermissionId])
  645. }
  646. pars = make([]interface{}, 0)
  647. condition = " AND company_contract_id = ? "
  648. pars = append(pars, companyContractId)
  649. //获取当前签约的合同信息
  650. companyContractPermissionLisThis, e := company.GetCompanyContractPermissionList(condition, pars)
  651. if e != nil && e.Error() != utils.ErrNoRow() {
  652. err = errors.New("companyContractPermissionLisThis Err: " + e.Error())
  653. return
  654. }
  655. var items []*company.CompanyContractPermission
  656. for _, v := range companyContractPermissionLisThis {
  657. v.PermissionName = mapChartPermission[v.ChartPermissionId]
  658. if v.PermissionName == "" {
  659. continue
  660. }
  661. //已经存在的属于行业续约、不存在的属于行业新签
  662. if utils.InArrayByStr(mapHistoryPerssionName, v.PermissionName) {
  663. v.ContractType = "行业续约"
  664. } else {
  665. v.ContractType = "行业新签"
  666. }
  667. items = append(items, v)
  668. }
  669. //批量更新合同权限表的权限行业名称,以及签约合同时,当前行业类型(行业续约、行业新签)
  670. e = company.UpdateCompanyContractPermissionMulti(items)
  671. if e != nil {
  672. err = errors.New("UpdateCompanyContractPermissionMulti Err: " + e.Error())
  673. return
  674. }
  675. return
  676. }
  677. func initCRM14_4() {
  678. //func init() {
  679. permissionList, e := models.GetChartPermissionList()
  680. if e != nil && e.Error() != utils.ErrNoRow() {
  681. fmt.Println(permissionList)
  682. return
  683. }
  684. mapChartPermission := make(map[int]string)
  685. for _, v := range permissionList {
  686. mapChartPermission[v.ChartPermissionId] = v.PermissionName
  687. }
  688. var condition string
  689. var pars []interface{}
  690. condition = " AND status = 1 AND product_id = 2 "
  691. companyContractList, e := company.GetCompanyContractList(condition, pars)
  692. if e != nil && e.Error() != utils.ErrNoRow() {
  693. fmt.Println(e)
  694. return
  695. }
  696. fmt.Println(len(companyContractList))
  697. for k, v := range companyContractList {
  698. fmt.Println(k)
  699. HandleCompanyContractPermissionContractType(v.CompanyContractId)
  700. }
  701. //var companyContractIds []int
  702. //for _, v := range companyContractList {
  703. // companyContractIds = append(companyContractIds, v.CompanyContractId)
  704. //}
  705. //condition = " AND company_contract_id IN (" + utils.GetOrmInReplace(len(companyContractIds)) + ") "
  706. //pars = append(pars, companyContractIds)
  707. //
  708. //companyContractPermissionList, e := company.GetCompanyContractPermissionList(condition, pars)
  709. //if e != nil && e.Error() != utils.ErrNoRow() {
  710. // fmt.Println(e)
  711. // return
  712. //}
  713. //
  714. //var items []*company.CompanyContractPermission
  715. //
  716. //for _, v := range companyContractPermissionList {
  717. // v.PermissionName = mapChartPermission[v.ChartPermissionId]
  718. //
  719. // items = append(items, v)
  720. //}
  721. //fmt.Println(len(items))
  722. ////return
  723. //e = company.UpdateCompanyContractPermissionMulti(items)
  724. //if e != nil && e.Error() != utils.ErrNoRow() {
  725. // fmt.Println(e)
  726. // return
  727. //}
  728. }
  729. func initCrm13_2() {
  730. var condition string
  731. var pars []interface{}
  732. condition = " AND chart_permission_id = 31 AND `status` IN ('正式','试用') AND product_id = 2 "
  733. //获取所有开通买方研选正式试用的客户列表
  734. listCompanyPermissionYx, e := company.GetCompanyReportPermissionList(condition, pars, 0, 0)
  735. if e != nil && e.Error() != utils.ErrNoRow() {
  736. fmt.Println(e)
  737. return
  738. }
  739. condition = " AND chart_permission_id = 52 "
  740. listCompanyPermissionKouDian, e := company.GetCompanyReportPermissionList(condition, pars, 0, 0)
  741. if e != nil && e.Error() != utils.ErrNoRow() {
  742. fmt.Println(e)
  743. return
  744. }
  745. mapKoud := make(map[int]bool)
  746. for _, v := range listCompanyPermissionKouDian {
  747. mapKoud[v.CompanyId] = true
  748. }
  749. //var i int
  750. var items []*company.CompanyReportPermission
  751. for k, v := range listCompanyPermissionYx {
  752. if mapKoud[v.CompanyId] {
  753. continue
  754. }
  755. permission := new(company.CompanyReportPermission)
  756. permission.CompanyId = v.CompanyId
  757. permission.ReportPermissionId = v.ReportPermissionId
  758. permission.CreatedTime = time.Now()
  759. permission.LastUpdatedTime = time.Now()
  760. permission.ChartPermissionId = 52
  761. permission.StartDate = v.StartDate
  762. permission.EndDate = v.EndDate
  763. permission.ProductId = 2
  764. permission.ProductName = "权益"
  765. permission.ModifyTime = time.Now()
  766. permission.Status = v.Status
  767. err := company.AddCompanyReportPermission(permission)
  768. if err != nil {
  769. return
  770. }
  771. fmt.Println(k)
  772. items = append(items, permission)
  773. }
  774. fmt.Println(len(items))
  775. }
  776. func initCRM_15_4() {
  777. var conditionAllocation string
  778. var parsAllocation []interface{}
  779. conditionAllocation = " AND company_contract_id IN (SELECT company_contract_id FROM cygx_allocation_company_contract_permission WHERE chart_permission_name LIKE '%研选%') GROUP BY company_contract_id "
  780. allocationCompanyContractPermissionList, err := cygx.GetCygxAllocationCompanyContractPermissionList(conditionAllocation, parsAllocation)
  781. if err != nil {
  782. fmt.Println(err)
  783. return
  784. }
  785. var companyContractIds []int
  786. for _, v := range allocationCompanyContractPermissionList {
  787. companyContractIds = append(companyContractIds, v.CompanyContractId)
  788. }
  789. lenCon := len(companyContractIds)
  790. for _, v := range companyContractIds {
  791. UpdateInitAvg(v)
  792. }
  793. fmt.Println("lenCon", lenCon)
  794. return
  795. }
  796. //func init() {
  797. // UpdateInitAvg(1249)
  798. //}
  799. // 合并研选订阅与研选扣点包,为买方研选
  800. func UpdateInit(companyContractId int) {
  801. fmt.Println(companyContractId)
  802. allocationNames := []string{"董衡", "高亦文", "吴昂迪", "冯柯然", "汪洋"}
  803. fmt.Println(allocationNames)
  804. listPerssion, err := cygx.GetCygxAllocationCompanyContractPermissionListByIdInitYx(companyContractId)
  805. if err != nil {
  806. fmt.Println(err)
  807. return
  808. }
  809. //listUser, err := cygx.GetCygxAllocationCompanyContractListById(companyContractId)
  810. //if err != nil {
  811. // fmt.Println(err)
  812. // return
  813. //}
  814. var totalMoney float64
  815. var items []*cygx.CygxAllocationCompanyContract
  816. var itemsPermission []*cygx.CygxAllocationCompanyContractPermission
  817. //var proportionSum float64 // 校验前端传过来的占比使用
  818. var AdminId int
  819. var AdminName string
  820. for _, v := range listPerssion {
  821. totalMoney += v.Money
  822. AdminId = v.AdminId
  823. AdminName = v.AdminName
  824. }
  825. fmt.Println(totalMoney)
  826. //return
  827. itemPermission := new(cygx.CygxAllocationCompanyContractPermission)
  828. itemPermission.CompanyContractId = companyContractId
  829. itemPermission.AdminId = AdminId
  830. itemPermission.AdminName = AdminName
  831. //itemPermission.Proportion = v.Money / totalMoney * 100
  832. itemPermission.Money = totalMoney
  833. itemPermission.ChartPermissionName = utils.CHART_PERMISSION_NAME_MAI_FANG_YANXUAN
  834. itemPermission.CreateTime = time.Now()
  835. itemPermission.ModifyTime = time.Now()
  836. itemsPermission = append(itemsPermission, itemPermission)
  837. for _, v := range allocationNames {
  838. item := new(cygx.CygxAllocationCompanyContract)
  839. item.CompanyContractId = companyContractId
  840. item.AdminId = AdminId
  841. item.AdminName = AdminName
  842. //item.Proportion =
  843. item.Money = totalMoney / 5
  844. item.RealName = v
  845. item.ChartPermissionName = utils.CHART_PERMISSION_NAME_MAI_FANG_YANXUAN
  846. item.CreateTime = time.Now()
  847. item.ModifyTime = time.Now()
  848. items = append(items, item)
  849. }
  850. fmt.Println(len(items))
  851. fmt.Println(len(itemsPermission))
  852. //return
  853. err = cygx.AddAndUpdateCygxAllocationCompanyContractInit(items, itemsPermission, companyContractId)
  854. fmt.Println(err)
  855. }
  856. func UpdateInitAvg(companyContractId int) {
  857. fmt.Println(companyContractId)
  858. listPerssion, err := cygx.GetCygxAllocationCompanyContractPermissionListByIdInit(companyContractId)
  859. if err != nil {
  860. fmt.Println(err)
  861. return
  862. }
  863. listUser, err := cygx.GetCygxAllocationCompanyContractListById(companyContractId)
  864. if err != nil {
  865. fmt.Println(err)
  866. return
  867. }
  868. var totalMoney float64
  869. var items []*cygx.CygxAllocationCompanyContract
  870. var itemsPermission []*cygx.CygxAllocationCompanyContractPermission
  871. //var proportionSum float64 // 校验前端传过来的占比使用
  872. for _, v := range listPerssion {
  873. totalMoney += v.Money
  874. }
  875. moneyAvg := totalMoney / float64(len(listPerssion))
  876. for _, v := range listPerssion {
  877. itemPermission := new(cygx.CygxAllocationCompanyContractPermission)
  878. itemPermission.CompanyContractId = companyContractId
  879. itemPermission.AdminId = v.AdminId
  880. itemPermission.AdminName = v.AdminName
  881. itemPermission.Proportion = v.Money / totalMoney * 100
  882. itemPermission.Money = v.Money
  883. itemPermission.MoneyAvg = moneyAvg
  884. itemPermission.ChartPermissionName = v.ChartPermissionName
  885. itemPermission.CreateTime = time.Now()
  886. itemPermission.ModifyTime = time.Now()
  887. itemsPermission = append(itemsPermission, itemPermission)
  888. fmt.Println(v.Money, "___", itemPermission.Proportion, "___", v.AllocationCompanyContractId)
  889. err = cygx.Cygx_allocation_company_contract_permissionEdit(itemPermission.Proportion, itemPermission.MoneyAvg, v.AllocationCompanyContractId)
  890. //fmt.Println("AllocationCompanyContractId", v.AllocationCompanyContractId)
  891. if err != nil {
  892. fmt.Println(err)
  893. return
  894. }
  895. }
  896. //return
  897. fmt.Println("研究员修改")
  898. //var userProportionSum float64 // 校验前端传过来的占比使用
  899. for _, v2 := range listUser {
  900. item := new(cygx.CygxAllocationCompanyContract)
  901. item.CompanyContractId = companyContractId
  902. item.AdminId = v2.AdminId
  903. item.AdminName = v2.RealName
  904. item.Proportion = v2.Money / totalMoney * 100
  905. item.Money = v2.Money
  906. item.RealName = v2.RealName
  907. item.ChartPermissionName = v2.ChartPermissionName
  908. item.CreateTime = time.Now()
  909. item.ModifyTime = time.Now()
  910. items = append(items, item)
  911. err = cygx.Cygx_allocation_company_contractEdit(item.Proportion, v2.AllocationCompanyContractId)
  912. fmt.Println("AllocationCompanyContractId", v2.AllocationCompanyContractId)
  913. if err != nil {
  914. fmt.Println(err)
  915. return
  916. }
  917. }
  918. //err = cygx.AddAndUpdateCygxAllocationCompanyContractInit(items, itemsPermission, companyContractId)
  919. //fmt.Println(err)
  920. }
  921. // 权益的合同录分之后自动派点
  922. func UpdateCygxallocationCompanyContractByEnterScore(itemsPermissionEnterScore []*cygx.CygxEnterScorePermission, itemsResearcher []*cygx.CygxEnterScoreResearcher, startDate, endDate string, companyId int, sysUser *system.Admin) {
  923. var err error
  924. defer func() {
  925. if err != nil {
  926. fmt.Println(err)
  927. go alarm_msg.SendAlarmMsg("权益的合同录分之后自动派点失败 UpdateCygxallocationCompanyContractByEnterScore ErrMsg:"+err.Error(), 2)
  928. }
  929. }()
  930. var condition string
  931. var pars []interface{}
  932. condition = " AND status = 1 AND product_id = 2 AND company_id = ? AND start_date <= ? AND end_date <= ? "
  933. pars = append(pars, companyId, startDate, endDate)
  934. companyContractList, e := company.GetCompanyContractList(condition, pars)
  935. if e != nil && e.Error() != utils.ErrNoRow() {
  936. err = errors.New("GetCompanyContractList, Err: " + e.Error())
  937. return
  938. }
  939. if len(companyContractList) == 0 {
  940. err = nil
  941. return
  942. }
  943. var companyContractIds []int
  944. //var companyContractIdMoney []float64 // 合同对应的金额
  945. for _, v := range companyContractList {
  946. companyContractIds = append(companyContractIds, v.CompanyContractId)
  947. }
  948. fmt.Println("companyContractIds", companyContractIds)
  949. var items []*cygx.CygxAllocationCompanyContract
  950. var itemsPermission []*cygx.CygxAllocationCompanyContractPermission
  951. var totalProportionPermission float64 //计算总占比
  952. for _, v := range itemsPermissionEnterScore {
  953. totalProportionPermission += v.Proportion
  954. }
  955. //var totalResearcher float64 //计算研究员的总占比
  956. //for _, v := range itemsResearcher {
  957. // totalResearcher += v.Proportion
  958. //}
  959. for _, vContract := range companyContractList {
  960. for _, v := range itemsPermissionEnterScore {
  961. itemPermission := new(cygx.CygxAllocationCompanyContractPermission)
  962. itemPermission.CompanyContractId = vContract.CompanyContractId
  963. itemPermission.AdminId = sysUser.AdminId
  964. itemPermission.AdminName = sysUser.RealName
  965. itemPermission.Proportion = v.Proportion / totalProportionPermission * 100 // 占比转换
  966. itemPermission.Money = v.Proportion * vContract.Money / 10000 / 100 // 单位转成万
  967. itemPermission.MoneyAvg = vContract.Money / 6 // 目前6个行业
  968. itemPermission.ChartPermissionName = v.ChartPermissionName
  969. itemPermission.CreateTime = time.Now()
  970. itemPermission.ModifyTime = time.Now()
  971. itemsPermission = append(itemsPermission, itemPermission)
  972. }
  973. for _, v := range itemsResearcher {
  974. item := new(cygx.CygxAllocationCompanyContract)
  975. item.CompanyContractId = vContract.CompanyContractId
  976. item.AdminId = sysUser.AdminId
  977. item.AdminName = sysUser.RealName
  978. item.Proportion = v.Proportion / totalProportionPermission * 100 // 占比转换
  979. item.Money = v.Proportion * vContract.Money / 10000 / 100 // 单位转成万
  980. item.RealName = v.RealName
  981. item.ChartPermissionName = v.ChartPermissionName
  982. item.CreateTime = time.Now()
  983. item.ModifyTime = time.Now()
  984. items = append(items, item)
  985. }
  986. }
  987. e = cygx.AddAndUpdateCygxAllocationCompanyContractRai(items, itemsPermission, companyContractIds)
  988. if e != nil {
  989. err = errors.New("AddAndUpdateCygxAllocationCompanyContractRai, Err: " + e.Error())
  990. return
  991. }
  992. return
  993. }
  994. //func init15_4_1() {
  995. // UpdateCygxallocationCompanyContractByEnterScoreInit()
  996. // //"SELECT * FROM company_contract WHERE company_id IN (SELECT company_id FROM company_product WHERE product_id = 2 AND init_status = '永续' ) AND product_id = 2 ;"
  997. //}
  998. func UpdateCygxallocationCompanyContractByEnterScoreInit() {
  999. var condition string
  1000. var pars []interface{}
  1001. listEnterScore, err := cygx.GetCygxEnterScoreList(condition, pars, 0, 999)
  1002. if err != nil {
  1003. fmt.Println(err)
  1004. return
  1005. }
  1006. for _, v := range listEnterScore {
  1007. fmt.Println("v.EnterScoreId", v.EnterScoreId)
  1008. listPermission, err := cygx.GetCygxEnterScorePermissionListById(v.EnterScoreId)
  1009. if err != nil {
  1010. fmt.Println(err)
  1011. return
  1012. }
  1013. listResearcher, err := cygx.GeCygxEnterScoreResearcherListById(v.EnterScoreId)
  1014. if err != nil {
  1015. fmt.Println(err)
  1016. return
  1017. }
  1018. sysUser, err := system.GetSysUserById(v.AdminId)
  1019. if err != nil {
  1020. fmt.Println(err)
  1021. return
  1022. }
  1023. go UpdateCygxallocationCompanyContractByEnterScore(listPermission, listResearcher, v.StartDate, v.EndDate, v.CompanyId, sysUser)
  1024. }
  1025. fmt.Println("END")
  1026. return
  1027. }
  1028. // 根据公司ID获取近四周之内有决策人互动的客户
  1029. func GetCompanyProductIsUserMakerByCompanyIds(companyIds []int) (mapIsUserMakerResp map[int]int) {
  1030. var err error
  1031. defer func() {
  1032. if err != nil {
  1033. go alarm_msg.SendAlarmMsg("根据公司ID获取近四周之内有决策人互动的客户失败 GetCompanyProductIsUserMakerByCompanyIds ErrMsg:"+err.Error(), 2)
  1034. }
  1035. }()
  1036. lenArr := len(companyIds)
  1037. if lenArr == 0 {
  1038. return
  1039. }
  1040. var condition string
  1041. var pars []interface{}
  1042. condition += " AND company_id IN (" + utils.GetOrmInReplace(lenArr) + ") AND product_id = 2 AND status IN ('正式','试用','永续') AND company_id > 1 "
  1043. pars = append(pars, companyIds)
  1044. productList, e := company.GetCompanyProductList(condition, pars)
  1045. if e != nil && e.Error() != utils.ErrNoRow() {
  1046. err = errors.New("GetCompanyProductList, Err: " + e.Error())
  1047. return
  1048. }
  1049. mapIsUserMakerResp = make(map[int]int)
  1050. for _, v := range productList {
  1051. mapIsUserMakerResp[v.CompanyId] = v.IsUserMaker
  1052. }
  1053. return
  1054. }