activity_points.go 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094
  1. package services
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "fmt"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/models/company"
  8. "hongze/hongze_cygx/utils"
  9. "strconv"
  10. "time"
  11. )
  12. //func init() {
  13. // GetActivityPointsAll()
  14. //}
  15. // GetActivityPointsByUserAllMap 获取所有针对用户扣点的活动
  16. func GetActivityPointsByUserAllMap() (mapResp map[int]bool) {
  17. var err error
  18. defer func() {
  19. if err != nil {
  20. fmt.Println(err)
  21. go utils.SendAlarmMsg("GetActivityPointsByUserAllMap,Err:"+err.Error(), 2)
  22. }
  23. }()
  24. var condition string
  25. var pars []interface{}
  26. //获取所有研选类型的活动
  27. condition = ` AND chart_permission_id = ` + strconv.Itoa(utils.CHART_PERMISSION_ID_YANXUAN)
  28. listActivity, e := models.GetActivityListByCondition(condition, pars)
  29. if e != nil {
  30. err = errors.New("GetActivityListByCondition, Err: " + e.Error())
  31. return
  32. }
  33. var activityIds []int
  34. condition = ""
  35. pars = make([]interface{}, 0)
  36. for _, v := range listActivity {
  37. activityIds = append(activityIds, v.ActivityId)
  38. }
  39. condition += ` AND points_object IN (1,3) `
  40. condition += ` AND activity_id IN (` + utils.GetOrmInReplace(len(activityIds)) + `) `
  41. pars = append(pars, activityIds)
  42. list, e := models.GetCygxActivityPointsSetList(condition, pars, 0, 0)
  43. if e != nil {
  44. err = errors.New("GetCygxActivityPointsSetList, Err: " + e.Error())
  45. return
  46. }
  47. mapResp = make(map[int]bool, 0)
  48. for _, v := range list {
  49. mapResp[v.ActivityId] = true
  50. }
  51. return
  52. }
  53. // GetActivityPointsAll 获取所有带有扣点的活动
  54. func GetActivityPointsAll() (mapResp map[int]bool, err error) {
  55. defer func() {
  56. if err != nil {
  57. fmt.Println(err)
  58. go utils.SendAlarmMsg("获取所有带有扣点的活动失败"+err.Error(), 2)
  59. }
  60. }()
  61. var condition string
  62. var pars []interface{}
  63. mapResp = make(map[int]bool, 0)
  64. list, e := models.GetCygxActivityPointsSetList(condition, pars, 0, 0)
  65. if e != nil && e.Error() != utils.ErrNoRow() {
  66. err = errors.New("GetCygxActivityPointsSetList,Err: " + e.Error())
  67. return
  68. }
  69. for _, v := range list {
  70. mapResp[v.ActivityId] = true
  71. }
  72. return
  73. }
  74. // 用户报名添加到处理研选扣点
  75. func YanXuanActivityPointsBillSignupAdd(activityId, uid int) (err error) {
  76. defer func() {
  77. if err != nil {
  78. fmt.Println(err)
  79. msg := fmt.Sprint("activityId:", activityId, "userId:", uid)
  80. go utils.SendAlarmMsg("用户报名添加到处理研选扣点,写入Redis队列消息失败:"+err.Error()+msg, 2)
  81. }
  82. }()
  83. //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
  84. log := &models.YanXuanActivityPointsRedis{UserId: uid, ActivityId: activityId, SourceType: 1, RegisterPlatform: utils.REGISTER_PLATFORM, Source: 1, CreateTime: time.Now()}
  85. if utils.Re == nil {
  86. err := utils.Rc.LPush(utils.CYGX_YANXUAN_POINTS_KEY, log)
  87. if err != nil {
  88. fmt.Println("YanXuanActivityPointsRedis LPush Err:" + err.Error())
  89. }
  90. }
  91. return
  92. }
  93. // 用户取消报名添加到处理研选扣点
  94. func YanXuanActivityPointsBillSignupCancel(activityId, uid int) (err error) {
  95. defer func() {
  96. if err != nil {
  97. fmt.Println(err)
  98. msg := fmt.Sprint("activityId:", activityId, "userId:", uid)
  99. go utils.SendAlarmMsg("用户取消报名添加到处理研选扣点,写入Redis队列消息失败:"+err.Error()+msg, 2)
  100. }
  101. }()
  102. //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
  103. log := &models.YanXuanActivityPointsRedis{UserId: uid, ActivityId: activityId, SourceType: 2, RegisterPlatform: utils.REGISTER_PLATFORM, Source: 1, CreateTime: time.Now()}
  104. if utils.Re == nil {
  105. err := utils.Rc.LPush(utils.CYGX_YANXUAN_POINTS_KEY, log)
  106. if err != nil {
  107. fmt.Println("YanXuanActivityPointsRedis LPush Err:" + err.Error())
  108. }
  109. }
  110. return
  111. }
  112. // 5 活动到会研选扣点处理
  113. func YanXuanActivityPointsBillSubmitMeeting(activityId, adminId int) (err error) {
  114. defer func() {
  115. if err != nil {
  116. fmt.Println(err)
  117. msg := fmt.Sprint("activityId:", activityId)
  118. go utils.SendAlarmMsg("活动到会研选扣点处理,写入Redis队列消息失败:"+err.Error()+msg, 2)
  119. }
  120. }()
  121. //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。6:研选审批通过的时候研选扣点更新、 7:正式专试用定时任务更新研选扣点"`
  122. log := &models.YanXuanActivityPointsRedis{ActivityId: activityId, SourceType: 5, AdminId: adminId, Source: 2, CreateTime: time.Now()}
  123. if utils.Re == nil {
  124. err := utils.Rc.LPush(utils.CYGX_YANXUAN_POINTS_KEY, log)
  125. if err != nil {
  126. fmt.Println("YanXuanActivityPointsRedis LPush Err:" + err.Error())
  127. }
  128. }
  129. return
  130. }
  131. // YanXuanActivityPointsBillReduce 处理研选活动扣点
  132. func YanXuanActivityPointsBillReduce() (err error) {
  133. for {
  134. //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
  135. utils.Rc.Brpop(utils.CYGX_YANXUAN_POINTS_KEY, func(b []byte) {
  136. var log models.YanXuanActivityPointsRedis
  137. if err := json.Unmarshal(b, &log); err != nil {
  138. fmt.Println("json unmarshal wrong!")
  139. go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+err.Error()+string(b), 2)
  140. }
  141. switch log.SourceType {
  142. case 1:
  143. go YanXuanActivityPointsBillSignupAddReduce(log)
  144. fmt.Println("1:报名")
  145. break
  146. case 2:
  147. go YanXuanActivityPointsBillSignupCancelReduce(log)
  148. fmt.Println(" 2:取消报名")
  149. break
  150. case 3:
  151. go YanXuanActivityPointsBillActivityEditReduce(log)
  152. fmt.Println("3:活动编辑")
  153. break
  154. case 4:
  155. go YanXuanActivityPointsBillActivityPublishAndCancelReduce(log)
  156. fmt.Println("4:活动发布、取消发布")
  157. break
  158. case 5:
  159. go YanXuanActivityPointsBillSubmitMeetingReduce(log)
  160. fmt.Println("5:活动到会研选扣点处理。")
  161. case 6:
  162. go YanXuanCompanyApprovalReduce(log)
  163. fmt.Println("6:研选审批通过的时候研选扣点更新。")
  164. break
  165. case 7:
  166. go YanXuanCompanyCompanyTryOutReduce(log)
  167. fmt.Println("7:正式专试用定时任务更新研选扣点。")
  168. break
  169. default:
  170. fmt.Println(string(b))
  171. go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+string(b), 2)
  172. }
  173. })
  174. }
  175. }
  176. // 1:用户报名
  177. func YanXuanActivityPointsBillSignupAddReduce(log models.YanXuanActivityPointsRedis) (err error) {
  178. defer func() {
  179. if err != nil {
  180. fmt.Println(err)
  181. go utils.SendAlarmMsg("用户报名活动扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
  182. }
  183. }()
  184. //加2000毫秒的延迟
  185. time.Sleep(2 * time.Second)
  186. activityId := log.ActivityId
  187. userId := log.UserId
  188. activtyPayTotal := GetCygxOrderVirtualAssetdCountTotal(userId, activityId) // 单场付费活动不处理扣点明细
  189. if activtyPayTotal > 0 {
  190. return
  191. }
  192. //获取活动是否扣点以及扣点规则明细
  193. activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
  194. if e != nil && e.Error() != utils.ErrNoRow() {
  195. err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
  196. return
  197. }
  198. if activityPointsSetDetail == nil {
  199. return
  200. }
  201. if activityPointsSetDetail.UserPointsNum == 0 || activityPointsSetDetail.PointsType != 1 {
  202. return // 如果不是报名即扣点的这种形式,那么就不做任何处理
  203. }
  204. activityInfo, e := models.GetAddActivityInfoById(activityId)
  205. if e != nil {
  206. err = errors.New("GetAddActivityInfoById" + e.Error())
  207. return
  208. }
  209. user, e := models.GetWxUserItemByUserId(userId)
  210. if e != nil {
  211. err = errors.New("GetWxUserItemByUserId" + e.Error())
  212. return
  213. }
  214. companyId := user.CompanyId
  215. //判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
  216. total, e := models.GetCygxActivityPointsCompanyCountByCompanyId(companyId)
  217. if e != nil {
  218. err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
  219. return
  220. }
  221. var companyPointsNum float64
  222. if total == 0 {
  223. companyPointsNum = 0
  224. itemPointsCompany := new(models.CygxActivityPointsCompany)
  225. itemPointsCompany.CompanyId = companyId
  226. itemPointsCompany.CompanyName = user.CompanyName
  227. itemPointsCompany.CreateTime = time.Now()
  228. itemPointsCompany.ModifyTime = time.Now()
  229. e = models.AddCygxActivityPointsCompany(itemPointsCompany)
  230. if e != nil {
  231. err = errors.New("AddCygxActivityPointsCompany, Err: " + e.Error())
  232. return
  233. }
  234. } else {
  235. // 获取用户所在公司剩余的点
  236. companyPointsNum, e = models.GetCompanyPoints(user.CompanyId)
  237. if e != nil && e.Error() != utils.ErrNoRow() {
  238. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  239. return
  240. }
  241. }
  242. //获取需要添加的流水信息
  243. var items []*models.CygxActivityPointsBill
  244. item := new(models.CygxActivityPointsBill)
  245. item.UserId = user.UserId
  246. item.ActivityId = activityId
  247. item.CreateTime = time.Now()
  248. item.Mobile = user.Mobile
  249. item.Email = user.Email
  250. item.CompanyId = user.CompanyId
  251. item.CompanyName = user.CompanyName
  252. item.RealName = user.RealName
  253. item.BillDetailed = -activityPointsSetDetail.UserPointsNum
  254. item.RegisterPlatform = log.RegisterPlatform
  255. item.AdminId = log.AdminId
  256. item.Source = log.Source
  257. item.ChartPermissionId = activityInfo.ChartPermissionId
  258. item.DoType = 1
  259. item.Content = activityInfo.ActivityName + "--报名"
  260. item.Points = companyPointsNum - activityPointsSetDetail.UserPointsNum
  261. items = append(items, item)
  262. //更新对应机构的剩余点数
  263. var itemCompanys []*models.CygxActivityPointsCompany
  264. itemCompany := new(models.CygxActivityPointsCompany)
  265. itemCompany.CompanyId = user.CompanyId
  266. itemCompany.Points = item.Points
  267. itemCompany.ModifyTime = time.Now()
  268. itemCompanys = append(itemCompanys, itemCompany)
  269. err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
  270. return
  271. }
  272. // 2:用户取消报名
  273. func YanXuanActivityPointsBillSignupCancelReduce(log models.YanXuanActivityPointsRedis) (err error) {
  274. defer func() {
  275. if err != nil {
  276. fmt.Println(err)
  277. go utils.SendAlarmMsg("用户取消报名扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
  278. }
  279. }()
  280. activityId := log.ActivityId
  281. userId := log.UserId
  282. activtyPayTotal := GetCygxOrderVirtualAssetdCountTotal(userId, activityId) // 单场付费活动不处理扣点明细
  283. if activtyPayTotal > 0 {
  284. return
  285. }
  286. //获取活动是否扣点以及扣点规则明细
  287. activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
  288. if e != nil && e.Error() != utils.ErrNoRow() {
  289. err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
  290. return
  291. }
  292. if activityPointsSetDetail == nil {
  293. return
  294. }
  295. if activityPointsSetDetail.UserPointsNum == 0 || activityPointsSetDetail.PointsType != 1 {
  296. return // 如果不是报名即扣点的这种形式,那么就不做任何处理
  297. }
  298. activityInfo, e := models.GetAddActivityInfoById(activityId)
  299. if e != nil {
  300. err = errors.New("GetAddActivityInfoById" + e.Error())
  301. return
  302. }
  303. user, e := models.GetWxUserItemByUserId(userId)
  304. if e != nil {
  305. err = errors.New("GetWxUserItemByUserId" + e.Error())
  306. return
  307. }
  308. // 获取用户所在公司剩余的点
  309. companyPointsNum, e := models.GetCompanyPoints(user.CompanyId)
  310. if e != nil && e.Error() != utils.ErrNoRow() {
  311. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  312. return
  313. }
  314. //查询最新的一条针对这个用户的扣点记录
  315. var condition string
  316. var pars []interface{}
  317. condition += ` AND activity_id = ? AND user_id = ? AND bill_detailed < 0 ORDER BY id DESC LIMIT 1 `
  318. pars = append(pars, activityId, userId)
  319. activityPointsBillDetail, e := models.GetCygxActivityPointsBillDetailByCondition(condition, pars)
  320. if e != nil {
  321. err = errors.New("activityPointsBillDetail" + e.Error())
  322. return
  323. }
  324. //获取需要添加的流水信息
  325. var items []*models.CygxActivityPointsBill
  326. item := new(models.CygxActivityPointsBill)
  327. item.UserId = user.UserId
  328. item.ActivityId = activityId
  329. item.CreateTime = time.Now()
  330. item.Mobile = user.Mobile
  331. item.Email = user.Email
  332. item.CompanyId = user.CompanyId
  333. item.CompanyName = user.CompanyName
  334. item.RealName = user.RealName
  335. item.BillDetailed = -activityPointsBillDetail.BillDetailed
  336. item.RegisterPlatform = log.RegisterPlatform
  337. item.AdminId = log.AdminId
  338. item.Source = log.Source
  339. item.ChartPermissionId = activityInfo.ChartPermissionId
  340. item.DoType = 2
  341. item.Content = activityInfo.ActivityName + "--取消报名"
  342. item.Points = companyPointsNum - activityPointsBillDetail.BillDetailed
  343. items = append(items, item)
  344. //更新对应机构的剩余点数
  345. var itemCompanys []*models.CygxActivityPointsCompany
  346. itemCompany := new(models.CygxActivityPointsCompany)
  347. itemCompany.CompanyId = user.CompanyId
  348. itemCompany.Points = item.Points
  349. itemCompany.ModifyTime = time.Now()
  350. itemCompanys = append(itemCompanys, itemCompany)
  351. err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
  352. return
  353. }
  354. // 3:活动编辑
  355. func YanXuanActivityPointsBillActivityEditReduce(log models.YanXuanActivityPointsRedis) (err error) {
  356. defer func() {
  357. if err != nil {
  358. fmt.Println(err)
  359. go utils.SendAlarmMsg("用户报名活动扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
  360. }
  361. }()
  362. activityId := log.ActivityId
  363. //获取活动是否扣点以及扣点规则明细
  364. activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
  365. if e != nil && e.Error() != utils.ErrNoRow() {
  366. err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
  367. return
  368. }
  369. if activityPointsSetDetail == nil {
  370. return
  371. }
  372. if activityPointsSetDetail.CompanyPointsNum == 0 {
  373. return // 如果不是办会人,即扣点的这种形式,那么就不做任何处理
  374. }
  375. comapnyId := activityPointsSetDetail.CompanyId
  376. activityInfo, e := models.GetAddActivityInfoByActivityId(activityId)
  377. if e != nil {
  378. err = errors.New("GetAddActivityInfoByActivityId" + e.Error())
  379. return
  380. }
  381. if activityInfo.PublishStatus == 0 {
  382. return // 未发布的活动不做处理
  383. }
  384. comapny, e := models.GetCompanyById(comapnyId)
  385. if e != nil {
  386. err = errors.New("GetCompanyById" + e.Error())
  387. return
  388. }
  389. // 获取用户所在公司剩余的点
  390. companyPointsNum, e := models.GetCompanyPoints(comapny.CompanyId)
  391. if e != nil && e.Error() != utils.ErrNoRow() {
  392. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  393. return
  394. }
  395. //查询最新的一条针对这个公司的扣点记录
  396. var condition string
  397. var pars []interface{}
  398. condition += ` AND activity_id = ? AND company_id = ? AND mobile = '' AND bill_detailed < 0 ORDER BY id DESC LIMIT 1 `
  399. pars = append(pars, activityId, comapnyId)
  400. activityPointsBillDetail, e := models.GetCygxActivityPointsBillDetailByCondition(condition, pars)
  401. if e != nil && e.Error() != utils.ErrNoRow() {
  402. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  403. return
  404. }
  405. var items []*models.CygxActivityPointsBill
  406. item := new(models.CygxActivityPointsBill)
  407. var itemCompanys []*models.CygxActivityPointsCompany
  408. itemCompany := new(models.CygxActivityPointsCompany)
  409. if activityPointsBillDetail == nil { //如果是空的就添加
  410. //获取需要添加的流水信息
  411. //item.UserId = user.UserId
  412. item.ActivityId = activityId
  413. item.CreateTime = time.Now()
  414. //item.Mobile = user.Mobile
  415. //item.Email = user.Email
  416. item.CompanyId = comapny.CompanyId
  417. item.CompanyName = comapny.CompanyName
  418. //item.RealName = user.RealName
  419. item.BillDetailed = -activityPointsSetDetail.CompanyPointsNum
  420. item.RegisterPlatform = log.RegisterPlatform
  421. item.AdminId = log.AdminId
  422. item.Source = log.Source
  423. item.ChartPermissionId = activityInfo.ChartPermissionId
  424. item.DoType = 1
  425. item.Content = activityInfo.ActivityName + "--办会"
  426. item.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
  427. items = append(items, item)
  428. //更新对应机构的剩余点数
  429. itemCompany.CompanyId = comapny.CompanyId
  430. itemCompany.Points = item.Points
  431. itemCompany.ModifyTime = time.Now()
  432. itemCompanys = append(itemCompanys, itemCompany)
  433. e = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
  434. if e != nil && e.Error() != utils.ErrNoRow() {
  435. err = errors.New("AddCygxActivityPointsBillMulti, Err: " + e.Error())
  436. return
  437. }
  438. } else {
  439. //如果存在就进行对比修改
  440. if activityPointsSetDetail.CompanyPointsNum != -activityPointsBillDetail.BillDetailed {
  441. item.Id = activityPointsBillDetail.Id
  442. item.BillDetailed = -activityPointsSetDetail.CompanyPointsNum
  443. item.Points = companyPointsNum - activityPointsBillDetail.BillDetailed - activityPointsSetDetail.CompanyPointsNum
  444. items = append(items, item)
  445. //更新对应机构的剩余点数
  446. itemCompany.CompanyId = comapny.CompanyId
  447. itemCompany.Points = item.Points
  448. itemCompany.ModifyTime = time.Now()
  449. itemCompanys = append(itemCompanys, itemCompany)
  450. e = models.UpdateCygxActivityPointsBillMulti(items, itemCompanys)
  451. if e != nil && e.Error() != utils.ErrNoRow() {
  452. err = errors.New("UpdateCygxActivityPointsBillMulti, Err: " + e.Error())
  453. return
  454. }
  455. }
  456. }
  457. return
  458. }
  459. // 4:活动发布取消发布
  460. func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanActivityPointsRedis) (err error) {
  461. defer func() {
  462. if err != nil {
  463. fmt.Println(err)
  464. go utils.SendAlarmMsg("活动发布扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
  465. }
  466. }()
  467. activityId := log.ActivityId
  468. publishStatus := log.PublishStatus
  469. //comapnyId := log.ComapnyId
  470. //获取活动是否扣点以及扣点规则明细
  471. activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
  472. if e != nil && e.Error() != utils.ErrNoRow() {
  473. err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
  474. return
  475. }
  476. if activityPointsSetDetail == nil {
  477. return
  478. }
  479. if activityPointsSetDetail.CompanyPointsNum == 0 && activityPointsSetDetail.PointsType == 2 {
  480. //if activityPointsSetDetail.CompanyPointsNum == 0 {
  481. return // 如果不是办会人扣点,且对用户是到会扣点的这种形式,那么就不做任何处理
  482. }
  483. activityInfo, e := models.GetAddActivityInfoByActivityId(activityId)
  484. if e != nil {
  485. err = errors.New("GetAddActivityInfoByActivityId" + e.Error())
  486. return
  487. }
  488. comapnyId := activityPointsSetDetail.CompanyId
  489. var items []*models.CygxActivityPointsBill
  490. var itemCompanys []*models.CygxActivityPointsCompany
  491. mapCompanyPoints := make(map[int]float64) //一组公司的剩余点数
  492. if publishStatus == 1 {
  493. fmt.Println("//活动发布")
  494. if comapnyId > 0 {
  495. comapny, e := models.GetCompanyById(comapnyId)
  496. if e != nil {
  497. err = errors.New("GetCompanyById" + e.Error())
  498. return
  499. }
  500. // 获取用户所在公司剩余的点
  501. companyPointsNum, e := models.GetCompanyPoints(comapny.CompanyId)
  502. if e != nil && e.Error() != utils.ErrNoRow() {
  503. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  504. return
  505. }
  506. item := new(models.CygxActivityPointsBill)
  507. item.ActivityId = activityId
  508. item.CreateTime = time.Now()
  509. //item.Mobile = user.Mobile
  510. //item.Email = user.Email
  511. item.CompanyId = comapny.CompanyId
  512. item.CompanyName = comapny.CompanyName
  513. //item.RealName = user.RealName
  514. item.BillDetailed = -activityPointsSetDetail.CompanyPointsNum
  515. item.RegisterPlatform = log.RegisterPlatform
  516. item.AdminId = log.AdminId
  517. item.Source = log.Source
  518. item.ChartPermissionId = activityInfo.ChartPermissionId
  519. item.DoType = 1
  520. item.Content = activityInfo.ActivityName + "--办会"
  521. item.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
  522. items = append(items, item)
  523. //更新对应机构的剩余点数
  524. itemCompany := new(models.CygxActivityPointsCompany)
  525. itemCompany.CompanyId = comapny.CompanyId
  526. itemCompany.Points = item.Points
  527. itemCompany.ModifyTime = time.Now()
  528. itemCompanys = append(itemCompanys, itemCompany)
  529. mapCompanyPoints[comapnyId] = item.Points
  530. }
  531. if activityPointsSetDetail.UserPointsNum > 0 && activityPointsSetDetail.PointsType == 1 {
  532. //如果扣点形式选的是报名即扣点,那么就对已经报名的用户所在机构进行扣点
  533. var condition string
  534. var pars []interface{}
  535. condition = ` AND do_fail_type = 0 AND activity_id = ?`
  536. pars = append(pars, activityId)
  537. listSignup, e := models.GetActivitySignupList(condition, pars)
  538. if e != nil && e.Error() != utils.ErrNoRow() {
  539. err = errors.New("GetActivitySignupList, Err: " + e.Error())
  540. return
  541. }
  542. var companyIds []int
  543. if len(listSignup) > 0 {
  544. for _, v := range listSignup {
  545. companyIds = append(companyIds, v.CompanyId)
  546. }
  547. pars = make([]interface{}, 0)
  548. condition = ` AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
  549. pars = append(pars, companyIds)
  550. //获取这些公司剩余的点数
  551. conpanyList, e := models.GetCygxActivityPointsCompanyList(condition, pars)
  552. if e != nil && e.Error() != utils.ErrNoRow() {
  553. err = errors.New("GetCygxActivityPointsCompanyList, Err: " + e.Error())
  554. return
  555. }
  556. for _, v := range conpanyList {
  557. if mapCompanyPoints[v.CompanyId] == 0 {
  558. mapCompanyPoints[v.CompanyId] = v.Points
  559. }
  560. }
  561. for _, user := range listSignup {
  562. item := new(models.CygxActivityPointsBill)
  563. item.ActivityId = activityId
  564. item.CreateTime = time.Now()
  565. item.Mobile = user.Mobile
  566. item.UserId = user.UserId
  567. item.Email = user.Email
  568. item.CompanyId = user.CompanyId
  569. item.CompanyName = user.CompanyName
  570. item.RealName = user.RealName
  571. item.BillDetailed = -activityPointsSetDetail.UserPointsNum
  572. item.RegisterPlatform = log.RegisterPlatform
  573. item.AdminId = log.AdminId
  574. item.Source = log.Source
  575. item.ChartPermissionId = activityInfo.ChartPermissionId
  576. item.DoType = 1
  577. item.Content = activityInfo.ActivityName + "--发布活动"
  578. mapCompanyPoints[user.CompanyId] -= activityPointsSetDetail.UserPointsNum //通过map处理机构剩余点数
  579. item.Points = mapCompanyPoints[user.CompanyId]
  580. items = append(items, item)
  581. //更新对应机构的剩余点数
  582. itemCompany := new(models.CygxActivityPointsCompany)
  583. itemCompany.CompanyId = user.CompanyId
  584. itemCompany.Points = item.Points
  585. itemCompany.ModifyTime = time.Now()
  586. itemCompanys = append(itemCompanys, itemCompany)
  587. mapCompanyPoints[user.CompanyId] = item.Points
  588. }
  589. }
  590. }
  591. } else {
  592. fmt.Println("//活动取消发布")
  593. //活动取消发布
  594. if comapnyId > 0 {
  595. comapny, e := models.GetCompanyById(comapnyId)
  596. if e != nil {
  597. err = errors.New("GetCompanyById" + e.Error())
  598. return
  599. }
  600. // 获取用户所在公司剩余的点
  601. companyPointsNum, e := models.GetCompanyPoints(comapny.CompanyId)
  602. if e != nil && e.Error() != utils.ErrNoRow() {
  603. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  604. return
  605. }
  606. item := new(models.CygxActivityPointsBill)
  607. item.ActivityId = activityId
  608. item.CreateTime = time.Now()
  609. //item.Mobile = user.Mobile
  610. //item.Email = user.Email
  611. item.CompanyId = comapny.CompanyId
  612. item.CompanyName = comapny.CompanyName
  613. //item.RealName = user.RealName
  614. item.BillDetailed = activityPointsSetDetail.CompanyPointsNum
  615. item.RegisterPlatform = log.RegisterPlatform
  616. item.AdminId = log.AdminId
  617. item.Source = log.Source
  618. item.ChartPermissionId = activityInfo.ChartPermissionId
  619. item.DoType = 2
  620. item.Content = activityInfo.ActivityName + "--取消办会"
  621. item.Points = companyPointsNum + activityPointsSetDetail.CompanyPointsNum
  622. items = append(items, item)
  623. //更新对应机构的剩余点数
  624. itemCompany := new(models.CygxActivityPointsCompany)
  625. itemCompany.CompanyId = comapny.CompanyId
  626. itemCompany.Points = item.Points
  627. itemCompany.ModifyTime = time.Now()
  628. itemCompanys = append(itemCompanys, itemCompany)
  629. mapCompanyPoints[comapnyId] = item.Points
  630. }
  631. if activityPointsSetDetail.UserPointsNum > 0 && activityPointsSetDetail.PointsType == 1 {
  632. //如果扣点形式选的是报名即扣点,那么就对已经报名的用户所在机构进行返点
  633. var condition string
  634. var pars []interface{}
  635. condition = ` AND do_fail_type = 0 AND activity_id = ?`
  636. pars = append(pars, activityId)
  637. listSignup, e := models.GetActivitySignupList(condition, pars)
  638. if e != nil && e.Error() != utils.ErrNoRow() {
  639. err = errors.New("GetActivitySignupList, Err: " + e.Error())
  640. return
  641. }
  642. var companyIds []int
  643. if len(listSignup) > 0 {
  644. for _, v := range listSignup {
  645. companyIds = append(companyIds, v.CompanyId)
  646. }
  647. pars = make([]interface{}, 0)
  648. condition = ` AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
  649. pars = append(pars, companyIds)
  650. //获取这些公司剩余的点数
  651. conpanyList, e := models.GetCygxActivityPointsCompanyList(condition, pars)
  652. if e != nil && e.Error() != utils.ErrNoRow() {
  653. err = errors.New("GetCygxActivityPointsCompanyList, Err: " + e.Error())
  654. return
  655. }
  656. for _, v := range conpanyList {
  657. if mapCompanyPoints[v.CompanyId] == 0 {
  658. mapCompanyPoints[v.CompanyId] = v.Points
  659. }
  660. }
  661. pars = make([]interface{}, 0)
  662. condition = ` AND activity_id = ? `
  663. pars = append(pars, activityId)
  664. //获取扣点的流水记录
  665. activityPointsBillList, e := models.GetCygxActivityPointsBillList(condition, pars)
  666. if e != nil && e.Error() != utils.ErrNoRow() {
  667. err = errors.New("GetCygxActivityPointsBillList" + e.Error())
  668. return
  669. }
  670. mapUserBill := make(map[int]bool)
  671. for _, v := range activityPointsBillList {
  672. mapUserBill[v.UserId] = true
  673. }
  674. for _, user := range listSignup {
  675. if !mapUserBill[user.UserId] {
  676. continue // 如果用户的扣点记录不存在,那么就不进行返点处理
  677. }
  678. item := new(models.CygxActivityPointsBill)
  679. item.ActivityId = activityId
  680. item.CreateTime = time.Now()
  681. item.Mobile = user.Mobile
  682. item.UserId = user.UserId
  683. item.Email = user.Email
  684. item.CompanyId = user.CompanyId
  685. item.CompanyName = user.CompanyName
  686. item.RealName = user.RealName
  687. item.BillDetailed = activityPointsSetDetail.UserPointsNum
  688. item.RegisterPlatform = log.RegisterPlatform
  689. item.AdminId = log.AdminId
  690. item.Source = log.Source
  691. item.ChartPermissionId = activityInfo.ChartPermissionId
  692. item.DoType = 2
  693. item.Content = activityInfo.ActivityName + "--取消活动"
  694. mapCompanyPoints[user.CompanyId] += activityPointsSetDetail.UserPointsNum //通过map处理机构剩余点数
  695. item.Points = mapCompanyPoints[user.CompanyId]
  696. items = append(items, item)
  697. //更新对应机构的剩余点数
  698. itemCompany := new(models.CygxActivityPointsCompany)
  699. itemCompany.CompanyId = user.CompanyId
  700. itemCompany.Points = item.Points
  701. itemCompany.ModifyTime = time.Now()
  702. itemCompanys = append(itemCompanys, itemCompany)
  703. mapCompanyPoints[user.CompanyId] = item.Points
  704. }
  705. }
  706. }
  707. }
  708. e = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
  709. if e != nil && e.Error() != utils.ErrNoRow() {
  710. err = errors.New("AddCygxActivityPointsBillMulti, Err: " + e.Error())
  711. return
  712. }
  713. return
  714. }
  715. //func init() {
  716. // log := models.YanXuanActivityPointsRedis{ActivityId: 2385, SourceType: 5, RegisterPlatform: utils.REGISTER_PLATFORM, Source: 4, CreateTime: time.Now()}
  717. // YanXuanActivityPointsBillSubmitMeetingReduce(log)
  718. //}
  719. // 5:活动到会研选扣点处理
  720. func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPointsRedis) (err error) {
  721. //func YanXuanActivityPointsBillSubmitMeetingReduce(activityId int) (err error) {
  722. defer func() {
  723. if err != nil {
  724. fmt.Println(err)
  725. go utils.SendAlarmMsg("活动到会研选扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "adminId", log.AdminId), 2)
  726. }
  727. }()
  728. activityId := log.ActivityId
  729. //获取活动是否扣点以及扣点规则明细
  730. activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
  731. if e != nil && e.Error() != utils.ErrNoRow() {
  732. err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
  733. return
  734. }
  735. if activityPointsSetDetail == nil {
  736. return
  737. }
  738. if activityPointsSetDetail.PointsType != 2 {
  739. return // 如果不是到会即扣点,的这种形式,那么就不做任何处理
  740. }
  741. activityInfo, e := models.GetAddActivityInfoByActivityId(activityId)
  742. if e != nil {
  743. err = errors.New("GetAddActivityInfoByActivityId" + e.Error())
  744. return
  745. }
  746. var companyIds []int
  747. mapCompanyPoints := make(map[int]float64) //一组公司的剩余点数
  748. var condition string
  749. var pars []interface{}
  750. condition += ` AND activity_id = ? AND is_meeting = 1 `
  751. pars = append(pars, activityId)
  752. //获取提交到会的人员信息
  753. signUpDetailList, e := models.GetSignupDetailList(condition, pars)
  754. if e != nil && e.Error() != utils.ErrNoRow() {
  755. err = errors.New("GetSignupDetailList" + e.Error())
  756. return
  757. }
  758. if len(signUpDetailList) == 0 {
  759. return
  760. }
  761. for _, v := range signUpDetailList {
  762. companyIds = append(companyIds, v.CompanyId)
  763. }
  764. //return
  765. pars = make([]interface{}, 0)
  766. condition = ` AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
  767. pars = append(pars, companyIds)
  768. //获取这些公司剩余的点数
  769. conpanyList, e := models.GetCygxActivityPointsCompanyList(condition, pars)
  770. if e != nil && e.Error() != utils.ErrNoRow() {
  771. err = errors.New("GetCygxActivityPointsCompanyList, Err: " + e.Error())
  772. return
  773. }
  774. pars = make([]interface{}, 0)
  775. condition = ` AND activity_id = ? AND mobile != '' `
  776. pars = append(pars, activityId)
  777. //获取扣点的流水记录
  778. activityPointsBillList, e := models.GetCygxActivityPointsBillList(condition, pars)
  779. if e != nil && e.Error() != utils.ErrNoRow() {
  780. err = errors.New("GetCygxActivityPointsBillList" + e.Error())
  781. return
  782. }
  783. mapActivityPointsBill := make(map[string]*models.CygxActivityPointsBill)
  784. for _, v := range activityPointsBillList {
  785. mapActivityPointsBill[v.Mobile] = v
  786. }
  787. //return
  788. for _, v := range conpanyList {
  789. if v.CompanyId != 0 {
  790. mapCompanyPoints[v.CompanyId] = v.Points
  791. }
  792. }
  793. //return
  794. var items []*models.CygxActivityPointsBill
  795. var itemCompanys []*models.CygxActivityPointsCompany
  796. for _, user := range signUpDetailList {
  797. item := new(models.CygxActivityPointsBill)
  798. item.ActivityId = activityId
  799. item.CreateTime = time.Now()
  800. item.UserId = user.UserId
  801. item.Mobile = user.Mobile
  802. item.Email = user.Email
  803. item.CompanyId = user.CompanyId
  804. item.CompanyName = user.CompanyName
  805. item.RealName = user.RealName
  806. item.RegisterPlatform = log.RegisterPlatform
  807. item.AdminId = log.AdminId
  808. item.Source = log.Source
  809. item.ChartPermissionId = activityInfo.ChartPermissionId
  810. //如果没有扣点记录就对他们进行扣点处理
  811. if mapActivityPointsBill[user.Mobile] == nil {
  812. item.BillDetailed = -activityPointsSetDetail.UserPointsNum
  813. item.DoType = 1
  814. item.Content = activityInfo.ActivityName + "--活动到会"
  815. item.Points = mapCompanyPoints[user.CompanyId] - activityPointsSetDetail.UserPointsNum
  816. items = append(items, item)
  817. //更新对应机构的剩余点数
  818. itemCompany := new(models.CygxActivityPointsCompany)
  819. itemCompany.CompanyId = user.CompanyId
  820. itemCompany.Points = item.Points
  821. itemCompany.ModifyTime = time.Now()
  822. itemCompanys = append(itemCompanys, itemCompany)
  823. mapCompanyPoints[user.CompanyId] = item.Points
  824. } else {
  825. //第二次提交改成未到会的,对其进行返点处理
  826. if mapActivityPointsBill[user.Mobile].BillDetailed < 0 {
  827. item.BillDetailed = activityPointsSetDetail.UserPointsNum
  828. item.DoType = 2
  829. item.Content = activityInfo.ActivityName + "--活动取消到会"
  830. item.Points = mapCompanyPoints[user.CompanyId] + activityPointsSetDetail.UserPointsNum
  831. items = append(items, item)
  832. //更新对应机构的剩余点数
  833. itemCompany := new(models.CygxActivityPointsCompany)
  834. itemCompany.CompanyId = user.CompanyId
  835. itemCompany.Points = item.Points
  836. itemCompany.ModifyTime = time.Now()
  837. itemCompanys = append(itemCompanys, itemCompany)
  838. mapCompanyPoints[user.CompanyId] = item.Points
  839. }
  840. }
  841. }
  842. e = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
  843. if e != nil && e.Error() != utils.ErrNoRow() {
  844. err = errors.New("AddCygxActivityPointsBillMulti, Err: " + e.Error())
  845. return
  846. }
  847. return
  848. }
  849. // 6:研选审批通过的时候研选扣点更新
  850. func YanXuanCompanyApprovalReduce(log models.YanXuanActivityPointsRedis) (err error) {
  851. time.Sleep(5 * time.Second) // 延迟5秒处理
  852. defer func() {
  853. if err != nil {
  854. fmt.Println(err)
  855. go utils.SendAlarmMsg("研选审批通过的时候研选扣点更新,处理Redis队列消息失败:"+err.Error()+fmt.Sprint(log), 2)
  856. }
  857. }()
  858. comapnyId := log.ComapnyId
  859. companyContractId := log.CompanyContractId
  860. comapnyDetail, e := models.GetCompanyById(comapnyId)
  861. if e != nil {
  862. err = errors.New("GetCompanyById" + e.Error())
  863. return
  864. }
  865. total, e := models.GetCygxActivityPointsCompanyCountByCompanyId(comapnyId)
  866. if e != nil {
  867. err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
  868. return
  869. }
  870. //查询研选的权限状态
  871. var condition string
  872. var pars []interface{}
  873. condition += " AND company_id = ? AND company_contract_id =? AND chart_permission_id = ? ORDER BY id DESC LIMIT 1 "
  874. pars = append(pars, comapnyId, companyContractId, utils.YAN_XUAN_KOU_DIAN_BAO_ID)
  875. companyPointDetail, e := company.GetCompanyContractPermissionDetail(condition, pars)
  876. if e != nil && e.Error() != utils.ErrNoRow() {
  877. err = errors.New("GetCompanyContractPermissionDetail, Err: " + e.Error())
  878. return
  879. }
  880. if companyPointDetail == nil {
  881. return // 如果不存在就不做研选扣点处理
  882. }
  883. //获取最近的一条审批合同信息
  884. //newCompanyApprovalDetail, e := company.GetCompanyApprovalById(comapnyId)
  885. //if e != nil && e.Error() != utils.ErrNoRow() {
  886. // err = errors.New("GetCompanyApprovalById, Err: " + e.Error())
  887. // return
  888. //}
  889. //if newCompanyApprovalDetail == nil {
  890. // return
  891. //}
  892. //companyContractId := newCompanyApprovalDetail.CompanyContractId
  893. //totalYxPerminssion, e := company.GetCompanyContractPermissionCheck(companyContractId, utils.CHART_PERMISSION_ID_YANXUAN)
  894. //if e != nil {
  895. // err = errors.New("GetCompanyContractPermissionCheck, Err: " + e.Error())
  896. // return
  897. //}
  898. //// 如果最新的审批合同里没有研选的权限,那么就不做处理
  899. //if totalYxPerminssion == 0 {
  900. // return
  901. //}
  902. var billDetailed float64
  903. var content string
  904. //ExpensiveYx int `description:"权益研选: 0->3w; 1->5w;2->10W"` 3W3次、5W 15次,20w:40次 ,
  905. //if companyReportPermissionDetail.ExpensiveYx == 1 {
  906. // billDetailed = 15
  907. // content = "买方研选(5W)转正"
  908. //} else if companyReportPermissionDetail.ExpensiveYx == 2 {
  909. // billDetailed = 40
  910. // content = "买方研选(10w)转正"
  911. //} else {
  912. // billDetailed = 3
  913. // content = "买方研选(3W)转正"
  914. //}
  915. // 获取用户所在公司剩余的点
  916. companyPointsNum, e := models.GetCompanyPoints(comapnyId)
  917. if e != nil && e.Error() != utils.ErrNoRow() {
  918. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  919. return
  920. }
  921. billDetailed = companyPointDetail.Points + companyPointsNum
  922. content = "签约研选扣点包"
  923. //获取需要添加的流水信息
  924. var items []*models.CygxActivityPointsBill
  925. item := new(models.CygxActivityPointsBill)
  926. //item.UserId = user.UserId
  927. //item.ActivityId = activityId
  928. item.CreateTime = time.Now()
  929. //item.Mobile = user.Mobile
  930. //item.Email = user.Email
  931. item.CompanyId = comapnyDetail.CompanyId
  932. item.CompanyName = comapnyDetail.CompanyName
  933. //item.RealName = user.RealName
  934. item.BillDetailed = billDetailed
  935. item.RegisterPlatform = log.RegisterPlatform
  936. item.AdminId = log.AdminId
  937. item.Source = log.Source
  938. //item.ChartPermissionId = activityInfo.ChartPermissionId
  939. item.DoType = 2
  940. item.Content = content
  941. item.Points = billDetailed
  942. items = append(items, item)
  943. //更新对应机构的剩余点数
  944. var itemCompanys []*models.CygxActivityPointsCompany
  945. itemCompany := new(models.CygxActivityPointsCompany)
  946. itemCompany.CompanyId = comapnyDetail.CompanyId
  947. itemCompany.CompanyName = comapnyDetail.CompanyName
  948. itemCompany.Points = item.Points
  949. itemCompany.CreateTime = time.Now()
  950. itemCompany.ModifyTime = time.Now()
  951. itemCompanys = append(itemCompanys, itemCompany)
  952. //判断是否存在记录,如果有就一个新增一个修改,如果没有就同时新增
  953. if total == 0 {
  954. err = models.AddCygxActivityPointsBillAndCompanyMulti(items, itemCompanys)
  955. } else {
  956. err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
  957. }
  958. return
  959. }
  960. // 7:正式专试用定时任务更新研选扣点
  961. func YanXuanCompanyCompanyTryOutReduce(log models.YanXuanActivityPointsRedis) (err error) {
  962. defer func() {
  963. if err != nil {
  964. fmt.Println(err)
  965. go utils.SendAlarmMsg("正式专试用定时任务更新研选扣点更新,处理Redis队列消息失败:"+err.Error()+fmt.Sprint(log), 2)
  966. }
  967. }()
  968. comapnyId := log.ComapnyId
  969. comapny, e := models.GetCompanyById(comapnyId)
  970. if e != nil {
  971. err = errors.New("GetCompanyById" + e.Error())
  972. return
  973. }
  974. // 获取用户所在公司剩余的点
  975. companyPointsNum, e := models.GetCompanyPoints(comapnyId)
  976. if e != nil && e.Error() != utils.ErrNoRow() {
  977. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  978. return
  979. }
  980. if companyPointsNum <= 0 {
  981. return
  982. }
  983. //获取需要添加的流水信息
  984. var items []*models.CygxActivityPointsBill
  985. item := new(models.CygxActivityPointsBill)
  986. //item.UserId = user.UserId
  987. //item.ActivityId = activityId
  988. item.CreateTime = time.Now()
  989. //item.Mobile = user.Mobile
  990. //item.Email = user.Email
  991. item.CompanyId = comapny.CompanyId
  992. item.CompanyName = comapny.CompanyName
  993. //item.RealName = user.RealName
  994. item.BillDetailed = -companyPointsNum
  995. item.RegisterPlatform = log.RegisterPlatform
  996. item.AdminId = log.AdminId
  997. item.Source = log.Source
  998. //item.ChartPermissionId = activityInfo.ChartPermissionId
  999. item.DoType = 2
  1000. item.Content = "研选扣点包到期清零"
  1001. item.Points = 0
  1002. items = append(items, item)
  1003. //更新对应机构的剩余点数
  1004. var itemCompanys []*models.CygxActivityPointsCompany
  1005. itemCompany := new(models.CygxActivityPointsCompany)
  1006. itemCompany.CompanyId = comapny.CompanyId
  1007. itemCompany.Points = 0
  1008. itemCompany.CreateTime = time.Now()
  1009. itemCompany.ModifyTime = time.Now()
  1010. itemCompanys = append(itemCompanys, itemCompany)
  1011. err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
  1012. return
  1013. }