activity_points.go 68 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901
  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. // 用户报名专项调研活动扣点处理
  132. func SpecialActivityPointsBillSignupAddSpecial(activityId, uid int) (err error) {
  133. defer func() {
  134. if err != nil {
  135. fmt.Println(err)
  136. msg := fmt.Sprint("activityId:", activityId, "userId:", uid)
  137. go utils.SendAlarmMsg("用户报名专项调研活动扣点处理,写入Redis队列消息失败 SpecialActivityPointsBillSignupAddSpecial :"+err.Error()+msg, 2)
  138. }
  139. }()
  140. //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
  141. log := &models.YanXuanActivityPointsRedis{UserId: uid, ActivityId: activityId, SourceType: 9, RegisterPlatform: utils.REGISTER_PLATFORM, Source: 1, CreateTime: time.Now()}
  142. if utils.Re == nil {
  143. err = utils.Rc.LPush(utils.CYGX_YANXUAN_POINTS_KEY, log)
  144. if err != nil {
  145. fmt.Println("YanXuanActivityPointsRedis LPush Err:" + err.Error())
  146. }
  147. }
  148. return
  149. }
  150. // 用户取消报名专项调研活动扣点处理
  151. func ActivityPointsBillSignupCancelSpecial(activityId, uid int) (err error) {
  152. defer func() {
  153. if err != nil {
  154. fmt.Println(err)
  155. msg := fmt.Sprint("activityId:", activityId, "userId:", uid)
  156. go utils.SendAlarmMsg("用户取消报名专项调研活动扣点处理,写入Redis队列消息失败 ActivityPointsBillSignupCancelSpecial :"+err.Error()+msg, 2)
  157. }
  158. }()
  159. //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
  160. log := &models.YanXuanActivityPointsRedis{UserId: uid, ActivityId: activityId, SourceType: 10, RegisterPlatform: utils.REGISTER_PLATFORM, Source: 1, CreateTime: time.Now()}
  161. if utils.Re == nil {
  162. err = utils.Rc.LPush(utils.CYGX_YANXUAN_POINTS_KEY, log)
  163. if err != nil {
  164. fmt.Println("YanXuanActivityPointsRedis LPush Err:" + err.Error())
  165. }
  166. }
  167. return
  168. }
  169. // YanXuanActivityPointsBillReduce 处理研选活动扣点
  170. func YanXuanActivityPointsBillReduce() (err error) {
  171. for {
  172. //SourceType int `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
  173. utils.Rc.Brpop(utils.CYGX_YANXUAN_POINTS_KEY, func(b []byte) {
  174. var log models.YanXuanActivityPointsRedis
  175. if err := json.Unmarshal(b, &log); err != nil {
  176. fmt.Println("json unmarshal wrong!")
  177. go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+err.Error()+string(b), 2)
  178. }
  179. switch log.SourceType {
  180. case 1:
  181. go YanXuanActivityPointsBillSignupAddReduce(log)
  182. fmt.Println("1:报名")
  183. break
  184. case 2:
  185. go YanXuanActivityPointsBillSignupCancelReduce(log)
  186. fmt.Println(" 2:取消报名")
  187. break
  188. case 3:
  189. go YanXuanActivityPointsBillActivityEditReduce(log)
  190. fmt.Println("3:活动编辑")
  191. break
  192. case 4:
  193. go YanXuanActivityPointsBillActivityPublishAndCancelReduce(log)
  194. fmt.Println("4:活动发布、取消发布")
  195. break
  196. case 5:
  197. go YanXuanActivityPointsBillSubmitMeetingReduce(log)
  198. fmt.Println("5:活动到会研选扣点处理。")
  199. case 6:
  200. //go YanXuanCompanyApprovalReduce(log)
  201. fmt.Println("6:研选审批通过的时候研选扣点更新。")
  202. break
  203. case 7:
  204. //go YanXuanCompanyCompanyTryOutReduce(log)
  205. fmt.Println("7:正式专试用定时任务更新研选扣点。")
  206. break
  207. case 8:
  208. //go YanXuanActivityVivoPointsBillSignupReduce(log)
  209. fmt.Println("8:播放研选扣点音视频。")
  210. break
  211. case 9:
  212. go YanXuanActivityPointsBillSignupAddReduceSpecial(log)
  213. fmt.Println("9:报名专项调研活动。")
  214. break
  215. case 10:
  216. go SpecialActivityPointsBillSignupCancelReduce(log)
  217. fmt.Println(" 10:取消报名专项调研活动")
  218. break
  219. case 11:
  220. go ActivitySpecialCompanyApprovalReduce(log)
  221. fmt.Println("11:合同审批通过的时候,专项调研点数更新。")
  222. break
  223. case 12:
  224. go ActivitySpecialPointsBillSubmitMeetingReduce(log)
  225. fmt.Println("12,专项调研活动提交到会点数更新。")
  226. break
  227. default:
  228. fmt.Println(string(b))
  229. go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+string(b), 2)
  230. }
  231. })
  232. }
  233. }
  234. // 1:用户报名
  235. func YanXuanActivityPointsBillSignupAddReduce(log models.YanXuanActivityPointsRedis) (err error) {
  236. defer func() {
  237. if err != nil {
  238. fmt.Println(err)
  239. go utils.SendAlarmMsg("用户报名活动扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
  240. }
  241. }()
  242. //加2000毫秒的延迟
  243. time.Sleep(2 * time.Second)
  244. activityId := log.ActivityId
  245. userId := log.UserId
  246. activtyPayTotal := GetCygxOrderVirtualAssetdCountTotal(userId, activityId) // 单场付费活动不处理扣点明细
  247. if activtyPayTotal > 0 {
  248. return
  249. }
  250. //获取活动是否扣点以及扣点规则明细
  251. activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
  252. if e != nil && e.Error() != utils.ErrNoRow() {
  253. err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
  254. return
  255. }
  256. if activityPointsSetDetail == nil {
  257. return
  258. }
  259. if activityPointsSetDetail.UserPointsNum == 0 || activityPointsSetDetail.PointsType != 1 {
  260. return // 如果不是报名即扣点的这种形式,那么就不做任何处理
  261. }
  262. activityInfo, e := models.GetAddActivityInfoById(activityId)
  263. if e != nil {
  264. err = errors.New("GetAddActivityInfoById" + e.Error())
  265. return
  266. }
  267. user, e := models.GetWxUserItemByUserId(userId)
  268. if e != nil {
  269. err = errors.New("GetWxUserItemByUserId" + e.Error())
  270. return
  271. }
  272. companyId := user.CompanyId
  273. //判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
  274. total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
  275. if e != nil {
  276. err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
  277. return
  278. }
  279. var companyPointsNum float64
  280. if total == 0 {
  281. companyPointsNum = 0
  282. itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
  283. itemPointsCompany.CompanyId = companyId
  284. itemPointsCompany.CompanyName = user.CompanyName
  285. itemPointsCompany.CreateTime = time.Now()
  286. itemPointsCompany.ModifyTime = time.Now()
  287. e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
  288. if e != nil {
  289. err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
  290. return
  291. }
  292. } else {
  293. // 获取用户所在公司剩余的点
  294. companyPointsNum, e = models.GetCygxActivitySpecialPermissionPoints(user.CompanyId)
  295. if e != nil && e.Error() != utils.ErrNoRow() {
  296. err = errors.New("GetCygxActivitySpecialPermissionPoints, Err: " + e.Error())
  297. return
  298. }
  299. }
  300. //获取需要添加的流水信息
  301. var items []*models.CygxActivitySpecialTripBill
  302. item := new(models.CygxActivitySpecialTripBill)
  303. item.UserId = user.UserId
  304. item.ActivityId = activityId
  305. item.CreateTime = time.Now()
  306. item.Mobile = user.Mobile
  307. item.Email = user.Email
  308. item.CompanyId = user.CompanyId
  309. item.CompanyName = user.CompanyName
  310. item.RealName = user.RealName
  311. item.BillDetailed = -activityPointsSetDetail.UserPointsNum
  312. item.RegisterPlatform = log.RegisterPlatform
  313. item.AdminId = log.AdminId
  314. item.Source = log.Source
  315. item.ChartPermissionId = activityInfo.ChartPermissionId
  316. item.ChartPermissionName = activityInfo.ChartPermissionName
  317. item.DoType = 1
  318. item.Content = activityInfo.ActivityName + "--报名"
  319. item.Total = fmt.Sprint(companyPointsNum-activityPointsSetDetail.UserPointsNum, "次")
  320. item.TableSource = utils.CYGX_OBJ_ACTIVITY
  321. items = append(items, item)
  322. //更新对应机构的剩余点数
  323. var itemCompanys []*models.CygxActivitySpecialPermissionPoints
  324. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  325. itemCompany.CompanyId = user.CompanyId
  326. itemCompany.Points = companyPointsNum - activityPointsSetDetail.UserPointsNum
  327. itemCompany.ModifyTime = time.Now()
  328. itemCompanys = append(itemCompanys, itemCompany)
  329. err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
  330. return
  331. }
  332. // 2:用户取消报名
  333. func YanXuanActivityPointsBillSignupCancelReduce(log models.YanXuanActivityPointsRedis) (err error) {
  334. defer func() {
  335. if err != nil {
  336. fmt.Println(err)
  337. go utils.SendAlarmMsg("用户取消报名扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
  338. }
  339. }()
  340. activityId := log.ActivityId
  341. userId := log.UserId
  342. activtyPayTotal := GetCygxOrderVirtualAssetdCountTotal(userId, activityId) // 单场付费活动不处理扣点明细
  343. if activtyPayTotal > 0 {
  344. return
  345. }
  346. //获取活动是否扣点以及扣点规则明细
  347. activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
  348. if e != nil && e.Error() != utils.ErrNoRow() {
  349. err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
  350. return
  351. }
  352. if activityPointsSetDetail == nil {
  353. return
  354. }
  355. if activityPointsSetDetail.UserPointsNum == 0 || activityPointsSetDetail.PointsType != 1 {
  356. return // 如果不是报名即扣点的这种形式,那么就不做任何处理
  357. }
  358. activityInfo, e := models.GetAddActivityInfoById(activityId)
  359. if e != nil {
  360. err = errors.New("GetAddActivityInfoById" + e.Error())
  361. return
  362. }
  363. user, e := models.GetWxUserItemByUserId(userId)
  364. if e != nil {
  365. err = errors.New("GetWxUserItemByUserId" + e.Error())
  366. return
  367. }
  368. // 获取用户所在公司剩余的点
  369. companyPointsNum, e := models.GetCygxActivitySpecialPermissionPoints(user.CompanyId)
  370. if e != nil && e.Error() != utils.ErrNoRow() {
  371. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  372. return
  373. }
  374. //查询最新的一条针对这个用户的扣点记录
  375. var condition string
  376. var pars []interface{}
  377. condition += ` AND activity_id = ? AND user_id = ? AND table_source = 'activity' AND bill_detailed < 0 ORDER BY id DESC LIMIT 1 `
  378. pars = append(pars, activityId, userId)
  379. activityPointsBillDetail, e := models.GetCygxActivitySpecialTripBillByCondition(condition, pars)
  380. if e != nil {
  381. err = errors.New("GetCygxActivitySpecialTripBillByCondition" + e.Error())
  382. return
  383. }
  384. //获取需要添加的流水信息
  385. var items []*models.CygxActivitySpecialTripBill
  386. item := new(models.CygxActivitySpecialTripBill)
  387. item.UserId = user.UserId
  388. item.ActivityId = activityId
  389. item.CreateTime = time.Now()
  390. item.Mobile = user.Mobile
  391. item.Email = user.Email
  392. item.CompanyId = user.CompanyId
  393. item.CompanyName = user.CompanyName
  394. item.RealName = user.RealName
  395. item.BillDetailed = -activityPointsBillDetail.BillDetailed
  396. item.RegisterPlatform = log.RegisterPlatform
  397. item.AdminId = log.AdminId
  398. item.Source = log.Source
  399. item.ChartPermissionId = activityInfo.ChartPermissionId
  400. item.ChartPermissionName = activityInfo.ChartPermissionName
  401. item.DoType = 2
  402. item.Content = activityInfo.ActivityName + "--取消报名"
  403. item.Total = fmt.Sprint(companyPointsNum-activityPointsBillDetail.BillDetailed, "次")
  404. item.TableSource = utils.CYGX_OBJ_ACTIVITY
  405. items = append(items, item)
  406. //更新对应机构的剩余点数
  407. var itemCompanys []*models.CygxActivitySpecialPermissionPoints
  408. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  409. itemCompany.CompanyId = user.CompanyId
  410. itemCompany.Points = companyPointsNum - activityPointsBillDetail.BillDetailed
  411. itemCompany.ModifyTime = time.Now()
  412. itemCompanys = append(itemCompanys, itemCompany)
  413. err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
  414. return
  415. }
  416. // 3:活动编辑
  417. func YanXuanActivityPointsBillActivityEditReduce(log models.YanXuanActivityPointsRedis) (err error) {
  418. defer func() {
  419. if err != nil {
  420. fmt.Println(err)
  421. go utils.SendAlarmMsg("用户报名活动扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
  422. }
  423. }()
  424. activityId := log.ActivityId
  425. //获取活动是否扣点以及扣点规则明细
  426. activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
  427. if e != nil && e.Error() != utils.ErrNoRow() {
  428. err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
  429. return
  430. }
  431. if activityPointsSetDetail == nil {
  432. return
  433. }
  434. if activityPointsSetDetail.CompanyPointsNum == 0 {
  435. return // 如果不是办会人,即扣点的这种形式,那么就不做任何处理
  436. }
  437. comapnyId := activityPointsSetDetail.CompanyId
  438. activityInfo, e := models.GetAddActivityInfoByActivityId(activityId)
  439. if e != nil {
  440. err = errors.New("GetAddActivityInfoByActivityId" + e.Error())
  441. return
  442. }
  443. if activityInfo.PublishStatus == 0 {
  444. return // 未发布的活动不做处理
  445. }
  446. comapny, e := models.GetCompanyById(comapnyId)
  447. if e != nil {
  448. err = errors.New("GetCompanyById" + e.Error())
  449. return
  450. }
  451. // 获取用户所在公司剩余的点
  452. companyPointsNum, e := models.GetCompanyPoints(comapny.CompanyId)
  453. if e != nil && e.Error() != utils.ErrNoRow() {
  454. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  455. return
  456. }
  457. //查询最新的一条针对这个公司的扣点记录
  458. var condition string
  459. var pars []interface{}
  460. condition += ` AND activity_id = ? AND company_id = ? AND mobile = '' AND table_source = 'activity' AND bill_detailed < 0 ORDER BY id DESC LIMIT 1 `
  461. pars = append(pars, activityId, comapnyId)
  462. activityPointsBillDetail, e := models.GetCygxActivitySpecialTripBillByCondition(condition, pars)
  463. if e != nil && e.Error() != utils.ErrNoRow() {
  464. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  465. return
  466. }
  467. var items []*models.CygxActivitySpecialTripBill
  468. item := new(models.CygxActivitySpecialTripBill)
  469. var itemCompanys []*models.CygxActivitySpecialPermissionPoints
  470. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  471. if activityPointsBillDetail == nil { //如果是空的就添加
  472. //获取需要添加的流水信息
  473. //item.UserId = user.UserId
  474. item.ActivityId = activityId
  475. item.CreateTime = time.Now()
  476. //item.Mobile = user.Mobile
  477. //item.Email = user.Email
  478. item.CompanyId = comapny.CompanyId
  479. item.CompanyName = comapny.CompanyName
  480. //item.RealName = user.RealName
  481. item.BillDetailed = -activityPointsSetDetail.CompanyPointsNum
  482. item.RegisterPlatform = log.RegisterPlatform
  483. item.AdminId = log.AdminId
  484. item.Source = log.Source
  485. item.ChartPermissionId = activityInfo.ChartPermissionId
  486. item.DoType = 1
  487. item.Content = activityInfo.ActivityName + "--办会"
  488. //item.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
  489. item.Total = fmt.Sprint(companyPointsNum-activityPointsSetDetail.CompanyPointsNum, "次")
  490. item.TableSource = utils.CYGX_OBJ_ACTIVITY
  491. items = append(items, item)
  492. //更新对应机构的剩余点数
  493. itemCompany.CompanyId = comapny.CompanyId
  494. itemCompany.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
  495. itemCompany.ModifyTime = time.Now()
  496. itemCompanys = append(itemCompanys, itemCompany)
  497. e = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
  498. if e != nil && e.Error() != utils.ErrNoRow() {
  499. err = errors.New("AddCygxActivitySpecialTripBillMulti, Err: " + e.Error())
  500. return
  501. }
  502. } else {
  503. //如果存在就进行对比修改
  504. if activityPointsSetDetail.CompanyPointsNum != -activityPointsBillDetail.BillDetailed {
  505. item.Id = activityPointsBillDetail.Id
  506. item.BillDetailed = -activityPointsSetDetail.CompanyPointsNum
  507. item.Total = fmt.Sprint(companyPointsNum-activityPointsBillDetail.BillDetailed-activityPointsSetDetail.CompanyPointsNum, "次")
  508. items = append(items, item)
  509. //更新对应机构的剩余点数
  510. itemCompany.CompanyId = comapny.CompanyId
  511. itemCompany.Points = companyPointsNum - activityPointsBillDetail.BillDetailed - activityPointsSetDetail.CompanyPointsNum
  512. itemCompany.ModifyTime = time.Now()
  513. itemCompanys = append(itemCompanys, itemCompany)
  514. e = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
  515. if e != nil && e.Error() != utils.ErrNoRow() {
  516. err = errors.New("AddCygxActivitySpecialTripBillMulti, Err: " + e.Error())
  517. return
  518. }
  519. }
  520. }
  521. return
  522. }
  523. // 4:活动发布取消发布
  524. func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanActivityPointsRedis) (err error) {
  525. defer func() {
  526. if err != nil {
  527. fmt.Println(err)
  528. go utils.SendAlarmMsg("活动发布扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
  529. }
  530. }()
  531. activityId := log.ActivityId
  532. publishStatus := log.PublishStatus
  533. //comapnyId := log.ComapnyId
  534. //获取活动是否扣点以及扣点规则明细
  535. activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
  536. if e != nil && e.Error() != utils.ErrNoRow() {
  537. err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
  538. return
  539. }
  540. if activityPointsSetDetail == nil {
  541. return
  542. }
  543. if activityPointsSetDetail.CompanyPointsNum == 0 && activityPointsSetDetail.PointsType == 2 {
  544. //if activityPointsSetDetail.CompanyPointsNum == 0 {
  545. return // 如果不是办会人扣点,且对用户是到会扣点的这种形式,那么就不做任何处理
  546. }
  547. activityInfo, e := models.GetAddActivityInfoByActivityId(activityId)
  548. if e != nil {
  549. err = errors.New("GetAddActivityInfoByActivityId" + e.Error())
  550. return
  551. }
  552. comapnyId := activityPointsSetDetail.CompanyId
  553. var items []*models.CygxActivitySpecialTripBill
  554. var itemCompanys []*models.CygxActivitySpecialPermissionPoints
  555. mapCompanyPoints := make(map[int]float64) //一组公司的剩余点数
  556. if publishStatus == 1 {
  557. fmt.Println("//活动发布")
  558. if comapnyId > 0 {
  559. comapny, e := models.GetCompanyById(comapnyId)
  560. if e != nil {
  561. err = errors.New("GetCompanyById" + e.Error())
  562. return
  563. }
  564. // 获取用户所在公司剩余的点
  565. companyPointsNum, e := models.GetCompanyPoints(comapny.CompanyId)
  566. if e != nil && e.Error() != utils.ErrNoRow() {
  567. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  568. return
  569. }
  570. item := new(models.CygxActivitySpecialTripBill)
  571. item.ActivityId = activityId
  572. item.CreateTime = time.Now()
  573. //item.Mobile = user.Mobile
  574. //item.Email = user.Email
  575. item.CompanyId = comapny.CompanyId
  576. item.CompanyName = comapny.CompanyName
  577. //item.RealName = user.RealName
  578. item.BillDetailed = -activityPointsSetDetail.CompanyPointsNum
  579. item.RegisterPlatform = log.RegisterPlatform
  580. item.AdminId = log.AdminId
  581. item.Source = log.Source
  582. item.ChartPermissionId = activityInfo.ChartPermissionId
  583. item.ChartPermissionName = activityInfo.ChartPermissionName
  584. item.DoType = 1
  585. item.Content = activityInfo.ActivityName + "--办会"
  586. //item.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
  587. item.Total = fmt.Sprint(companyPointsNum-activityPointsSetDetail.CompanyPointsNum, "次")
  588. item.TableSource = utils.CYGX_OBJ_ACTIVITY
  589. items = append(items, item)
  590. //更新对应机构的剩余点数
  591. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  592. itemCompany.CompanyId = comapny.CompanyId
  593. itemCompany.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
  594. itemCompany.ModifyTime = time.Now()
  595. itemCompanys = append(itemCompanys, itemCompany)
  596. mapCompanyPoints[comapnyId] = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
  597. }
  598. if activityPointsSetDetail.UserPointsNum > 0 && activityPointsSetDetail.PointsType == 1 {
  599. //如果扣点形式选的是报名即扣点,那么就对已经报名的用户所在机构进行扣点
  600. var condition string
  601. var pars []interface{}
  602. condition = ` AND do_fail_type = 0 AND activity_id = ?`
  603. pars = append(pars, activityId)
  604. listSignup, e := models.GetActivitySignupList(condition, pars)
  605. if e != nil && e.Error() != utils.ErrNoRow() {
  606. err = errors.New("GetActivitySignupList, Err: " + e.Error())
  607. return
  608. }
  609. var companyIds []int
  610. if len(listSignup) > 0 {
  611. for _, v := range listSignup {
  612. companyIds = append(companyIds, v.CompanyId)
  613. }
  614. pars = make([]interface{}, 0)
  615. condition = ` AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
  616. pars = append(pars, companyIds)
  617. //获取这些公司剩余的点数
  618. conpanyList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
  619. if e != nil && e.Error() != utils.ErrNoRow() {
  620. err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err: " + e.Error())
  621. return
  622. }
  623. for _, v := range conpanyList {
  624. if mapCompanyPoints[v.CompanyId] == 0 {
  625. mapCompanyPoints[v.CompanyId] = v.Points
  626. }
  627. }
  628. for _, user := range listSignup {
  629. item := new(models.CygxActivitySpecialTripBill)
  630. item.ActivityId = activityId
  631. item.CreateTime = time.Now()
  632. item.Mobile = user.Mobile
  633. item.UserId = user.UserId
  634. item.Email = user.Email
  635. item.CompanyId = user.CompanyId
  636. item.CompanyName = user.CompanyName
  637. item.RealName = user.RealName
  638. item.BillDetailed = -activityPointsSetDetail.UserPointsNum
  639. item.RegisterPlatform = log.RegisterPlatform
  640. item.AdminId = log.AdminId
  641. item.Source = log.Source
  642. item.ChartPermissionId = activityInfo.ChartPermissionId
  643. item.DoType = 1
  644. item.Content = activityInfo.ActivityName + "--发布活动"
  645. mapCompanyPoints[user.CompanyId] -= activityPointsSetDetail.UserPointsNum //通过map处理机构剩余点数
  646. //item.Points = mapCompanyPoints[user.CompanyId]
  647. item.Total = fmt.Sprint(mapCompanyPoints[user.CompanyId], "次")
  648. item.TableSource = utils.CYGX_OBJ_ACTIVITY
  649. items = append(items, item)
  650. //更新对应机构的剩余点数
  651. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  652. itemCompany.CompanyId = user.CompanyId
  653. itemCompany.Points = mapCompanyPoints[user.CompanyId]
  654. itemCompany.ModifyTime = time.Now()
  655. itemCompanys = append(itemCompanys, itemCompany)
  656. mapCompanyPoints[user.CompanyId] = mapCompanyPoints[user.CompanyId]
  657. }
  658. }
  659. }
  660. } else {
  661. fmt.Println("//活动取消发布")
  662. //活动取消发布
  663. if comapnyId > 0 {
  664. comapny, e := models.GetCompanyById(comapnyId)
  665. if e != nil {
  666. err = errors.New("GetCompanyById" + e.Error())
  667. return
  668. }
  669. // 获取用户所在公司剩余的点
  670. companyPointsNum, e := models.GetCompanyPoints(comapny.CompanyId)
  671. if e != nil && e.Error() != utils.ErrNoRow() {
  672. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  673. return
  674. }
  675. item := new(models.CygxActivitySpecialTripBill)
  676. item.ActivityId = activityId
  677. item.CreateTime = time.Now()
  678. //item.Mobile = user.Mobile
  679. //item.Email = user.Email
  680. item.CompanyId = comapny.CompanyId
  681. item.CompanyName = comapny.CompanyName
  682. //item.RealName = user.RealName
  683. item.BillDetailed = activityPointsSetDetail.CompanyPointsNum
  684. item.RegisterPlatform = log.RegisterPlatform
  685. item.AdminId = log.AdminId
  686. item.Source = log.Source
  687. item.ChartPermissionId = activityInfo.ChartPermissionId
  688. item.DoType = 2
  689. item.Content = activityInfo.ActivityName + "--取消办会"
  690. //item.Points = companyPointsNum + activityPointsSetDetail.CompanyPointsNum
  691. item.Total = fmt.Sprint(companyPointsNum+activityPointsSetDetail.CompanyPointsNum, "次")
  692. item.TableSource = utils.CYGX_OBJ_ACTIVITY
  693. items = append(items, item)
  694. //更新对应机构的剩余点数
  695. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  696. itemCompany.CompanyId = comapny.CompanyId
  697. itemCompany.Points = companyPointsNum + activityPointsSetDetail.CompanyPointsNum
  698. itemCompany.ModifyTime = time.Now()
  699. itemCompanys = append(itemCompanys, itemCompany)
  700. mapCompanyPoints[comapnyId] = companyPointsNum + activityPointsSetDetail.CompanyPointsNum
  701. }
  702. if activityPointsSetDetail.UserPointsNum > 0 && activityPointsSetDetail.PointsType == 1 {
  703. //如果扣点形式选的是报名即扣点,那么就对已经报名的用户所在机构进行返点
  704. var condition string
  705. var pars []interface{}
  706. condition = ` AND do_fail_type = 0 AND activity_id = ?`
  707. pars = append(pars, activityId)
  708. listSignup, e := models.GetActivitySignupList(condition, pars)
  709. if e != nil && e.Error() != utils.ErrNoRow() {
  710. err = errors.New("GetActivitySignupList, Err: " + e.Error())
  711. return
  712. }
  713. var companyIds []int
  714. if len(listSignup) > 0 {
  715. for _, v := range listSignup {
  716. companyIds = append(companyIds, v.CompanyId)
  717. }
  718. pars = make([]interface{}, 0)
  719. condition = ` AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
  720. pars = append(pars, companyIds)
  721. //获取这些公司剩余的点数
  722. conpanyList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
  723. if e != nil && e.Error() != utils.ErrNoRow() {
  724. err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err: " + e.Error())
  725. return
  726. }
  727. for _, v := range conpanyList {
  728. if mapCompanyPoints[v.CompanyId] == 0 {
  729. mapCompanyPoints[v.CompanyId] = v.Points
  730. }
  731. }
  732. pars = make([]interface{}, 0)
  733. condition = ` AND activity_id = ? AND table_source = 'activity' `
  734. pars = append(pars, activityId)
  735. //获取扣点的流水记录
  736. activityPointsBillList, e := models.GetCygxActivitySpecialTripBill(condition, pars)
  737. if e != nil && e.Error() != utils.ErrNoRow() {
  738. err = errors.New("GetCygxActivitySpecialTripBill" + e.Error())
  739. return
  740. }
  741. mapUserBill := make(map[int]bool)
  742. for _, v := range activityPointsBillList {
  743. mapUserBill[v.UserId] = true
  744. }
  745. for _, user := range listSignup {
  746. if !mapUserBill[user.UserId] {
  747. continue // 如果用户的扣点记录不存在,那么就不进行返点处理
  748. }
  749. item := new(models.CygxActivitySpecialTripBill)
  750. item.ActivityId = activityId
  751. item.CreateTime = time.Now()
  752. item.Mobile = user.Mobile
  753. item.UserId = user.UserId
  754. item.Email = user.Email
  755. item.CompanyId = user.CompanyId
  756. item.CompanyName = user.CompanyName
  757. item.RealName = user.RealName
  758. item.BillDetailed = activityPointsSetDetail.UserPointsNum
  759. item.RegisterPlatform = log.RegisterPlatform
  760. item.AdminId = log.AdminId
  761. item.Source = log.Source
  762. item.ChartPermissionId = activityInfo.ChartPermissionId
  763. item.DoType = 2
  764. item.Content = activityInfo.ActivityName + "--取消活动"
  765. mapCompanyPoints[user.CompanyId] += activityPointsSetDetail.UserPointsNum //通过map处理机构剩余点数
  766. //item.Points = mapCompanyPoints[user.CompanyId]
  767. item.Total = fmt.Sprint(mapCompanyPoints[user.CompanyId], "次")
  768. item.TableSource = utils.CYGX_OBJ_ACTIVITY
  769. items = append(items, item)
  770. //更新对应机构的剩余点数
  771. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  772. itemCompany.CompanyId = user.CompanyId
  773. itemCompany.Points = mapCompanyPoints[user.CompanyId]
  774. itemCompany.ModifyTime = time.Now()
  775. itemCompanys = append(itemCompanys, itemCompany)
  776. //mapCompanyPoints[user.CompanyId] = item.Points
  777. }
  778. }
  779. }
  780. }
  781. e = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
  782. if e != nil && e.Error() != utils.ErrNoRow() {
  783. err = errors.New("AddCygxActivitySpecialTripBillMulti, Err: " + e.Error())
  784. return
  785. }
  786. return
  787. }
  788. //func init() {
  789. // log := models.YanXuanActivityPointsRedis{ActivityId: 2385, SourceType: 5, RegisterPlatform: utils.REGISTER_PLATFORM, Source: 4, CreateTime: time.Now()}
  790. // YanXuanActivityPointsBillSubmitMeetingReduce(log)
  791. //}
  792. // 5:活动到会研选扣点处理
  793. func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPointsRedis) (err error) {
  794. //func YanXuanActivityPointsBillSubmitMeetingReduce(activityId int) (err error) {
  795. defer func() {
  796. if err != nil {
  797. fmt.Println(err)
  798. go utils.SendAlarmMsg("活动到会研选扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "adminId", log.AdminId), 2)
  799. }
  800. }()
  801. time.Sleep(5 * time.Second) //添加五秒的延迟
  802. activityId := log.ActivityId
  803. //获取活动是否扣点以及扣点规则明细
  804. activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
  805. if e != nil && e.Error() != utils.ErrNoRow() {
  806. err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
  807. return
  808. }
  809. if activityPointsSetDetail == nil {
  810. return
  811. }
  812. if activityPointsSetDetail.PointsType != 2 {
  813. return // 如果不是到会即扣点,的这种形式,那么就不做任何处理
  814. }
  815. activityInfo, e := models.GetAddActivityInfoByActivityId(activityId)
  816. if e != nil {
  817. err = errors.New("GetAddActivityInfoByActivityId" + e.Error())
  818. return
  819. }
  820. var companyIds []int
  821. mapCompanyPoints := make(map[int]float64) //一组公司的剩余点数
  822. var condition string
  823. var pars []interface{}
  824. condition += ` AND activity_id = ? `
  825. pars = append(pars, activityId)
  826. //获取提交到会的人员信息
  827. signUpDetailList, e := models.GetSignupDetailList(condition, pars)
  828. if e != nil && e.Error() != utils.ErrNoRow() {
  829. err = errors.New("GetSignupDetailList" + e.Error())
  830. return
  831. }
  832. if len(signUpDetailList) == 0 {
  833. return
  834. }
  835. for _, v := range signUpDetailList {
  836. companyIds = append(companyIds, v.CompanyId)
  837. companyId := v.CompanyId
  838. //判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
  839. total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
  840. if e != nil {
  841. err = errors.New("GetCygxActivitySpecialPermissionPointsCountByCompanyId, Err: " + e.Error())
  842. return
  843. }
  844. if total == 0 {
  845. itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
  846. itemPointsCompany.CompanyId = companyId
  847. itemPointsCompany.CompanyName = v.CompanyName
  848. itemPointsCompany.CreateTime = time.Now()
  849. itemPointsCompany.ModifyTime = time.Now()
  850. e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
  851. if e != nil {
  852. err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
  853. return
  854. }
  855. }
  856. }
  857. //return
  858. pars = make([]interface{}, 0)
  859. condition = ` AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
  860. pars = append(pars, companyIds)
  861. //获取这些公司剩余的点数
  862. conpanyList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
  863. if e != nil && e.Error() != utils.ErrNoRow() {
  864. err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err: " + e.Error())
  865. return
  866. }
  867. pars = make([]interface{}, 0)
  868. condition = ` AND activity_id = ? AND table_source = 'activity' AND mobile != '' ORDER BY id DESC `
  869. pars = append(pars, activityId)
  870. //获取扣点的流水记录
  871. activityPointsBillList, e := models.GetCygxActivitySpecialTripBill(condition, pars)
  872. if e != nil && e.Error() != utils.ErrNoRow() {
  873. err = errors.New("GetCygxActivitySpecialTripBill" + e.Error())
  874. return
  875. }
  876. mapActivityPointsBill := make(map[string]*models.CygxActivitySpecialTripBill)
  877. for _, v := range activityPointsBillList { //获取这场活动,某个手机号最后一次的扣点记录
  878. if mapActivityPointsBill[v.Mobile] == nil {
  879. mapActivityPointsBill[v.Mobile] = v
  880. }
  881. }
  882. //return
  883. for _, v := range conpanyList {
  884. if v.CompanyId != 0 {
  885. mapCompanyPoints[v.CompanyId] = v.Points
  886. }
  887. }
  888. //return
  889. var items []*models.CygxActivitySpecialTripBill
  890. var itemCompanys []*models.CygxActivitySpecialPermissionPoints
  891. for _, user := range signUpDetailList {
  892. item := new(models.CygxActivitySpecialTripBill)
  893. item.ActivityId = activityId
  894. item.CreateTime = time.Now()
  895. item.UserId = user.UserId
  896. item.Mobile = user.Mobile
  897. item.Email = user.Email
  898. item.CompanyId = user.CompanyId
  899. item.CompanyName = user.CompanyName
  900. item.RealName = user.RealName
  901. item.RegisterPlatform = log.RegisterPlatform
  902. item.AdminId = log.AdminId
  903. item.Source = log.Source
  904. item.ChartPermissionId = activityInfo.ChartPermissionId
  905. if user.IsMeeting == 1 {
  906. //如果没有扣点记录就对他们进行扣点处理
  907. if mapActivityPointsBill[user.Mobile] == nil || mapActivityPointsBill[user.Mobile].BillDetailed > 0 {
  908. points := mapCompanyPoints[user.CompanyId] - activityPointsSetDetail.UserPointsNum
  909. item.BillDetailed = -activityPointsSetDetail.UserPointsNum
  910. item.DoType = 1
  911. item.Content = activityInfo.ActivityName + "--活动到会"
  912. item.Total = fmt.Sprint(points, "次")
  913. item.TableSource = utils.CYGX_OBJ_ACTIVITY
  914. //item.Points = mapCompanyPoints[user.CompanyId] - activityPointsSetDetail.UserPointsNum
  915. items = append(items, item)
  916. //更新对应机构的剩余点数
  917. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  918. itemCompany.CompanyId = user.CompanyId
  919. itemCompany.Points = points
  920. itemCompany.ModifyTime = time.Now()
  921. itemCompanys = append(itemCompanys, itemCompany)
  922. mapCompanyPoints[user.CompanyId] = points
  923. }
  924. } else {
  925. ////第二次提交改成未到会的,对其进行返点处理
  926. if mapActivityPointsBill[user.Mobile] != nil && mapActivityPointsBill[user.Mobile].BillDetailed < 0 {
  927. fmt.Println("取消到会了")
  928. points := mapCompanyPoints[user.CompanyId] + activityPointsSetDetail.UserPointsNum
  929. item.BillDetailed = activityPointsSetDetail.UserPointsNum
  930. item.DoType = 2
  931. item.Content = activityInfo.ActivityName + "--活动取消到会"
  932. //item.Points =points
  933. item.Total = fmt.Sprint(points, "次")
  934. item.TableSource = utils.CYGX_OBJ_ACTIVITY
  935. items = append(items, item)
  936. //更新对应机构的剩余点数
  937. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  938. itemCompany.CompanyId = user.CompanyId
  939. itemCompany.Points = points
  940. itemCompany.ModifyTime = time.Now()
  941. itemCompanys = append(itemCompanys, itemCompany)
  942. mapCompanyPoints[user.CompanyId] = points
  943. }
  944. }
  945. }
  946. e = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
  947. if e != nil && e.Error() != utils.ErrNoRow() {
  948. err = errors.New("AddCygxActivitySpecialTripBillMulti, Err: " + e.Error())
  949. return
  950. }
  951. return
  952. }
  953. // 6:研选审批通过的时候研选扣点更新
  954. func YanXuanCompanyApprovalReduce(log models.YanXuanActivityPointsRedis) (err error) {
  955. time.Sleep(5 * time.Second) // 延迟5秒处理
  956. defer func() {
  957. if err != nil {
  958. fmt.Println(err)
  959. go utils.SendAlarmMsg("研选审批通过的时候研选扣点更新,处理Redis队列消息失败:"+err.Error()+fmt.Sprint(log), 2)
  960. }
  961. }()
  962. comapnyId := log.ComapnyId
  963. companyContractId := log.CompanyContractId
  964. comapnyDetail, e := models.GetCompanyById(comapnyId)
  965. if e != nil {
  966. err = errors.New("GetCompanyById" + e.Error())
  967. return
  968. }
  969. total, e := models.GetCygxActivityPointsCompanyCountByCompanyId(comapnyId)
  970. if e != nil {
  971. err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
  972. return
  973. }
  974. //查询研选的权限状态
  975. var condition string
  976. var pars []interface{}
  977. condition += " AND company_id = ? AND company_contract_id =? AND chart_permission_id = ? ORDER BY id DESC LIMIT 1 "
  978. pars = append(pars, comapnyId, companyContractId, utils.YAN_XUAN_KOU_DIAN_BAO_ID)
  979. companyPointDetail, e := company.GetCompanyContractPermissionDetail(condition, pars)
  980. if e != nil && e.Error() != utils.ErrNoRow() {
  981. err = errors.New("GetCompanyContractPermissionDetail, Err: " + e.Error())
  982. return
  983. }
  984. if companyPointDetail == nil {
  985. return // 如果不存在就不做研选扣点处理
  986. }
  987. //获取最近的一条审批合同信息
  988. //newCompanyApprovalDetail, e := company.GetCompanyApprovalById(comapnyId)
  989. //if e != nil && e.Error() != utils.ErrNoRow() {
  990. // err = errors.New("GetCompanyApprovalById, Err: " + e.Error())
  991. // return
  992. //}
  993. //if newCompanyApprovalDetail == nil {
  994. // return
  995. //}
  996. //companyContractId := newCompanyApprovalDetail.CompanyContractId
  997. //totalYxPerminssion, e := company.GetCompanyContractPermissionCheck(companyContractId, utils.CHART_PERMISSION_ID_YANXUAN)
  998. //if e != nil {
  999. // err = errors.New("GetCompanyContractPermissionCheck, Err: " + e.Error())
  1000. // return
  1001. //}
  1002. //// 如果最新的审批合同里没有研选的权限,那么就不做处理
  1003. //if totalYxPerminssion == 0 {
  1004. // return
  1005. //}
  1006. var billDetailed float64
  1007. var content string
  1008. //ExpensiveYx int `description:"权益研选: 0->3w; 1->5w;2->10W"` 3W3次、5W 15次,20w:40次 ,
  1009. //if companyReportPermissionDetail.ExpensiveYx == 1 {
  1010. // billDetailed = 15
  1011. // content = "买方研选(5W)转正"
  1012. //} else if companyReportPermissionDetail.ExpensiveYx == 2 {
  1013. // billDetailed = 40
  1014. // content = "买方研选(10w)转正"
  1015. //} else {
  1016. // billDetailed = 3
  1017. // content = "买方研选(3W)转正"
  1018. //}
  1019. // 获取用户所在公司剩余的点
  1020. companyPointsNum, e := models.GetCompanyPoints(comapnyId)
  1021. if e != nil && e.Error() != utils.ErrNoRow() {
  1022. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  1023. return
  1024. }
  1025. billDetailed = companyPointDetail.Points + companyPointsNum
  1026. content = "签约研选扣点包"
  1027. //获取需要添加的流水信息
  1028. var items []*models.CygxActivityPointsBill
  1029. item := new(models.CygxActivityPointsBill)
  1030. //item.UserId = user.UserId
  1031. //item.ActivityId = activityId
  1032. item.CreateTime = time.Now()
  1033. //item.Mobile = user.Mobile
  1034. //item.Email = user.Email
  1035. item.CompanyId = comapnyDetail.CompanyId
  1036. item.CompanyName = comapnyDetail.CompanyName
  1037. //item.RealName = user.RealName
  1038. item.BillDetailed = billDetailed
  1039. item.RegisterPlatform = log.RegisterPlatform
  1040. item.AdminId = log.AdminId
  1041. item.Source = log.Source
  1042. //item.ChartPermissionId = activityInfo.ChartPermissionId
  1043. item.DoType = 2
  1044. item.Content = content
  1045. item.Points = billDetailed
  1046. items = append(items, item)
  1047. //更新对应机构的剩余点数
  1048. var itemCompanys []*models.CygxActivityPointsCompany
  1049. itemCompany := new(models.CygxActivityPointsCompany)
  1050. itemCompany.CompanyId = comapnyDetail.CompanyId
  1051. itemCompany.CompanyName = comapnyDetail.CompanyName
  1052. itemCompany.Points = item.Points
  1053. itemCompany.CreateTime = time.Now()
  1054. itemCompany.ModifyTime = time.Now()
  1055. itemCompanys = append(itemCompanys, itemCompany)
  1056. //判断是否存在记录,如果有就一个新增一个修改,如果没有就同时新增
  1057. if total == 0 {
  1058. err = models.AddCygxActivityPointsBillAndCompanyMulti(items, itemCompanys)
  1059. } else {
  1060. err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
  1061. }
  1062. return
  1063. }
  1064. // 7:正式专试用定时任务更新研选扣点
  1065. func YanXuanCompanyCompanyTryOutReduce(log models.YanXuanActivityPointsRedis) (err error) {
  1066. defer func() {
  1067. if err != nil {
  1068. fmt.Println(err)
  1069. go utils.SendAlarmMsg("正式专试用定时任务更新研选扣点更新,处理Redis队列消息失败:"+err.Error()+fmt.Sprint(log), 2)
  1070. }
  1071. }()
  1072. comapnyId := log.ComapnyId
  1073. comapny, e := models.GetCompanyById(comapnyId)
  1074. if e != nil {
  1075. err = errors.New("GetCompanyById" + e.Error())
  1076. return
  1077. }
  1078. // 获取用户所在公司剩余的点
  1079. companyPointsNum, e := models.GetCompanyPoints(comapnyId)
  1080. if e != nil && e.Error() != utils.ErrNoRow() {
  1081. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  1082. return
  1083. }
  1084. if companyPointsNum <= 0 {
  1085. return
  1086. }
  1087. //获取需要添加的流水信息
  1088. var items []*models.CygxActivityPointsBill
  1089. item := new(models.CygxActivityPointsBill)
  1090. //item.UserId = user.UserId
  1091. //item.ActivityId = activityId
  1092. item.CreateTime = time.Now()
  1093. //item.Mobile = user.Mobile
  1094. //item.Email = user.Email
  1095. item.CompanyId = comapny.CompanyId
  1096. item.CompanyName = comapny.CompanyName
  1097. //item.RealName = user.RealName
  1098. item.BillDetailed = -companyPointsNum
  1099. item.RegisterPlatform = log.RegisterPlatform
  1100. item.AdminId = log.AdminId
  1101. item.Source = log.Source
  1102. //item.ChartPermissionId = activityInfo.ChartPermissionId
  1103. item.DoType = 2
  1104. item.Content = "研选扣点包到期清零"
  1105. item.Points = 0
  1106. items = append(items, item)
  1107. //更新对应机构的剩余点数
  1108. var itemCompanys []*models.CygxActivityPointsCompany
  1109. itemCompany := new(models.CygxActivityPointsCompany)
  1110. itemCompany.CompanyId = comapny.CompanyId
  1111. itemCompany.Points = 0
  1112. itemCompany.CreateTime = time.Now()
  1113. itemCompany.ModifyTime = time.Now()
  1114. itemCompanys = append(itemCompanys, itemCompany)
  1115. err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
  1116. return
  1117. }
  1118. // 8:用户观看音视频研选扣点处理
  1119. func YanXuanActivityVivoPointsBillSignupReduce(log models.YanXuanActivityPointsRedis) (err error) {
  1120. //func YanXuanActivityPointsBillSubmitMeetingReduce(activityId int) (err error) {
  1121. defer func() {
  1122. if err != nil {
  1123. fmt.Println(err)
  1124. go utils.SendAlarmMsg("用户观看音视频研选扣点处理,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "UserId", log.UserId), 2)
  1125. }
  1126. }()
  1127. activityId := log.ActivityId
  1128. userId := log.UserId
  1129. //获取活动是否扣点以及扣点规则明细
  1130. vivoPointsSetDetail, e := models.GetCygxActivityVivoPointsSetByActivityId(activityId)
  1131. if e != nil && e.Error() != utils.ErrNoRow() {
  1132. err = errors.New("GetCygxActivityVivoPointsSetByActivityId" + e.Error())
  1133. return
  1134. }
  1135. if vivoPointsSetDetail == nil {
  1136. return
  1137. }
  1138. var vivoName string
  1139. activityInfo, e := models.GetAddActivityInfoByActivityId(activityId)
  1140. if e != nil {
  1141. err = errors.New("GetAddActivityInfoByActivityId" + e.Error())
  1142. return
  1143. }
  1144. totalVi, e := models.GetCygxActivityVideoCount(activityId)
  1145. if e != nil {
  1146. err = errors.New("GetCygxActivityVideoCount" + e.Error())
  1147. return
  1148. }
  1149. if totalVi > 0 {
  1150. activityVideoInfo, e := models.GetCygxActivityVideoByActivityId(activityId)
  1151. if e != nil {
  1152. err = errors.New("GetCygxActivityVideoByActivityId, Err: " + e.Error())
  1153. return
  1154. }
  1155. vivoName = activityVideoInfo.VideoName // 视频名称
  1156. } else {
  1157. totalVo, e := models.GetCygxActivityVoiceCount(activityId)
  1158. if e != nil {
  1159. err = errors.New("GetCygxActivityVoiceCount" + e.Error())
  1160. return
  1161. }
  1162. if totalVo > 0 {
  1163. activityVoiceInfo, e := models.GetCygxActivityVoiceByActivityId(activityId)
  1164. if e != nil {
  1165. err = errors.New("GetCygxActivityVoiceByActivityId, Err: " + e.Error())
  1166. return
  1167. }
  1168. vivoName = activityVoiceInfo.VoiceName // 音频名称
  1169. }
  1170. }
  1171. user, e := models.GetWxUserItemByUserId(userId)
  1172. if e != nil {
  1173. err = errors.New("GetWxUserItemByUserId" + e.Error())
  1174. return
  1175. }
  1176. // 获取用户所在公司剩余的点
  1177. companyPointsNum, e := models.GetCompanyPoints(user.CompanyId)
  1178. if e != nil && e.Error() != utils.ErrNoRow() {
  1179. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  1180. return
  1181. }
  1182. //获取需要添加的流水信息
  1183. var items []*models.CygxActivityPointsBill
  1184. item := new(models.CygxActivityPointsBill)
  1185. item.UserId = user.UserId
  1186. item.ActivityId = activityId
  1187. item.CreateTime = time.Now()
  1188. item.Mobile = user.Mobile
  1189. item.Email = user.Email
  1190. item.CompanyId = user.CompanyId
  1191. item.CompanyName = user.CompanyName
  1192. item.RealName = user.RealName
  1193. item.BillDetailed = -vivoPointsSetDetail.PointsNum
  1194. item.RegisterPlatform = log.RegisterPlatform
  1195. item.AdminId = log.AdminId
  1196. item.Source = log.Source
  1197. item.ChartPermissionId = activityInfo.ChartPermissionId
  1198. item.DoType = 1
  1199. item.Content = "查看活动回放-" + vivoName
  1200. item.Points = companyPointsNum - vivoPointsSetDetail.PointsNum
  1201. items = append(items, item)
  1202. //更新对应机构的剩余点数
  1203. var itemCompanys []*models.CygxActivityPointsCompany
  1204. itemCompany := new(models.CygxActivityPointsCompany)
  1205. itemCompany.CompanyId = user.CompanyId
  1206. itemCompany.Points = item.Points
  1207. itemCompany.ModifyTime = time.Now()
  1208. itemCompanys = append(itemCompanys, itemCompany)
  1209. err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
  1210. return
  1211. }
  1212. // 9:用户报名(专项调研活动)
  1213. func YanXuanActivityPointsBillSignupAddReduceSpecial(log models.YanXuanActivityPointsRedis) (err error) {
  1214. defer func() {
  1215. if err != nil {
  1216. fmt.Println(err)
  1217. go utils.SendAlarmMsg("用户报名活动扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
  1218. }
  1219. }()
  1220. //加2000毫秒的延迟
  1221. time.Sleep(2 * time.Second)
  1222. activityId := log.ActivityId
  1223. userId := log.UserId
  1224. activityInfo, e := models.GetCygxActivitySpecialDetail(activityId)
  1225. if e != nil {
  1226. err = errors.New("GetCygxActivitySpecialDetail" + e.Error())
  1227. return
  1228. }
  1229. user, e := models.GetWxUserItemByUserId(userId)
  1230. if e != nil {
  1231. err = errors.New("GetWxUserItemByUserId" + e.Error())
  1232. return
  1233. }
  1234. companyId := user.CompanyId
  1235. //判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
  1236. total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
  1237. if e != nil {
  1238. err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
  1239. return
  1240. }
  1241. var companyPointsNum float64
  1242. if total == 0 {
  1243. companyPointsNum = 0
  1244. itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
  1245. itemPointsCompany.CompanyId = companyId
  1246. itemPointsCompany.CompanyName = user.CompanyName
  1247. itemPointsCompany.CreateTime = time.Now()
  1248. itemPointsCompany.ModifyTime = time.Now()
  1249. e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
  1250. if e != nil {
  1251. err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
  1252. return
  1253. }
  1254. } else {
  1255. // 获取用户所在公司剩余的点
  1256. companyPointsNum, e = models.GetCygxActivitySpecialPermissionPoints(user.CompanyId)
  1257. if e != nil && e.Error() != utils.ErrNoRow() {
  1258. err = errors.New("GetCygxActivitySpecialPermissionPoints, Err: " + e.Error())
  1259. return
  1260. }
  1261. }
  1262. //获取需要添加的流水信息
  1263. var items []*models.CygxActivitySpecialTripBill
  1264. itemBill := new(models.CygxActivitySpecialTripBill)
  1265. itemBill.UserId = user.UserId
  1266. itemBill.ActivityId = activityInfo.ActivityId
  1267. itemBill.CreateTime = time.Now()
  1268. itemBill.Mobile = user.Mobile
  1269. itemBill.Email = user.Email
  1270. itemBill.CompanyId = user.CompanyId
  1271. itemBill.CompanyName = user.CompanyName
  1272. itemBill.RealName = user.RealName
  1273. itemBill.Source = 1
  1274. itemBill.DoType = 1
  1275. itemBill.BillDetailed = -1 // 流水减一
  1276. itemBill.RegisterPlatform = utils.REGISTER_PLATFORM
  1277. itemBill.ChartPermissionId = activityInfo.ChartPermissionId
  1278. itemBill.ChartPermissionName = activityInfo.ChartPermissionName
  1279. itemBill.Content = activityInfo.ResearchTheme + "--报名"
  1280. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime)
  1281. //48小时之内的取消也扣除一次参会记录
  1282. if time.Now().Add(+time.Hour * 48).After(resultTime) {
  1283. itemBill.BillDetailed = 0 //48小时之内,取消报名之后二次报名,不扣除流水记录
  1284. }
  1285. itemBill.Total = fmt.Sprint(companyPointsNum+itemBill.BillDetailed, "次")
  1286. itemBill.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
  1287. items = append(items, itemBill)
  1288. //更新对应机构的剩余点数
  1289. var itemCompanys []*models.CygxActivitySpecialPermissionPoints
  1290. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  1291. itemCompany.CompanyId = user.CompanyId
  1292. itemCompany.Points = companyPointsNum + itemBill.BillDetailed
  1293. itemCompany.ModifyTime = time.Now()
  1294. itemCompanys = append(itemCompanys, itemCompany)
  1295. err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
  1296. return
  1297. }
  1298. // 10:用户取消报名(专项调研活动)
  1299. func SpecialActivityPointsBillSignupCancelReduce(log models.YanXuanActivityPointsRedis) (err error) {
  1300. defer func() {
  1301. if err != nil {
  1302. fmt.Println(err)
  1303. go utils.SendAlarmMsg("用户取消报名扣点,处理Redis队列消息失败 SpecialActivityPointsBillSignupCancelReduce:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
  1304. }
  1305. }()
  1306. activityId := log.ActivityId
  1307. userId := log.UserId
  1308. activityInfo, e := models.GetCygxActivitySpecialDetail(activityId)
  1309. if e != nil {
  1310. err = errors.New("GetAddActivityInfoById" + e.Error())
  1311. return
  1312. }
  1313. user, e := models.GetWxUserItemByUserId(userId)
  1314. if e != nil {
  1315. err = errors.New("GetWxUserItemByUserId" + e.Error())
  1316. return
  1317. }
  1318. // 获取用户所在公司剩余的点
  1319. companyPointsNum, e := models.GetCygxActivitySpecialPermissionPoints(user.CompanyId)
  1320. if e != nil && e.Error() != utils.ErrNoRow() {
  1321. err = errors.New("GetCompanyPoints, Err: " + e.Error())
  1322. return
  1323. }
  1324. //获取需要添加的流水信息
  1325. var items []*models.CygxActivitySpecialTripBill
  1326. //流水记录表
  1327. itemBill := new(models.CygxActivitySpecialTripBill)
  1328. itemBill.UserId = user.UserId
  1329. itemBill.ActivityId = activityInfo.ActivityId
  1330. itemBill.CreateTime = time.Now()
  1331. itemBill.Mobile = user.Mobile
  1332. itemBill.Email = user.Email
  1333. itemBill.CompanyId = user.CompanyId
  1334. itemBill.CompanyName = user.CompanyName
  1335. itemBill.RealName = user.RealName
  1336. itemBill.Source = 1
  1337. itemBill.DoType = 2
  1338. itemBill.BillDetailed = 1 // 流水加一
  1339. itemBill.RegisterPlatform = log.RegisterPlatform
  1340. itemBill.ChartPermissionId = activityInfo.ChartPermissionId
  1341. itemBill.ChartPermissionName = activityInfo.ChartPermissionName
  1342. resultTime := utils.StrTimeToTime(activityInfo.ActivityTime)
  1343. //48小时之内的取消也扣除一次参会记录
  1344. if time.Now().Add(+time.Hour * 48).After(resultTime) {
  1345. itemBill.BillDetailed = 0 //48小时之内取消的活动扣点不返回
  1346. }
  1347. itemBill.Total = fmt.Sprint(companyPointsNum+itemBill.BillDetailed, "次")
  1348. itemBill.Content = activityInfo.ResearchTheme + "--取消报名"
  1349. itemBill.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
  1350. items = append(items, itemBill)
  1351. //更新对应机构的剩余点数
  1352. var itemCompanys []*models.CygxActivitySpecialPermissionPoints
  1353. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  1354. itemCompany.CompanyId = user.CompanyId
  1355. itemCompany.Points = companyPointsNum + itemBill.BillDetailed
  1356. itemCompany.ModifyTime = time.Now()
  1357. itemCompanys = append(itemCompanys, itemCompany)
  1358. err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
  1359. return
  1360. }
  1361. // 11:合同审批通过的时候,专项调研点数更新
  1362. func ActivitySpecialCompanyApprovalReduce(log models.YanXuanActivityPointsRedis) (err error) {
  1363. time.Sleep(5 * time.Second) // 延迟5秒处理
  1364. defer func() {
  1365. if err != nil {
  1366. fmt.Println(err)
  1367. go utils.SendAlarmMsg("研选审批通过的时候研选扣点更新,处理Redis队列消息失败:"+err.Error()+fmt.Sprint(log), 2)
  1368. }
  1369. }()
  1370. companyId := log.ComapnyId
  1371. companyContractId := log.CompanyContractId
  1372. comapnyDetail, e := models.GetCompanyById(companyId)
  1373. if e != nil {
  1374. err = errors.New("GetCompanyById" + e.Error())
  1375. return
  1376. }
  1377. //判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
  1378. total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
  1379. if e != nil {
  1380. err = errors.New("GetCygxActivitySpecialPermissionPointsCountByCompanyId, Err: " + e.Error())
  1381. return
  1382. }
  1383. var companyPointsNum float64
  1384. if total == 0 {
  1385. companyPointsNum = 0
  1386. itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
  1387. itemPointsCompany.CompanyId = companyId
  1388. itemPointsCompany.CompanyName = comapnyDetail.CompanyName
  1389. itemPointsCompany.CreateTime = time.Now()
  1390. itemPointsCompany.ModifyTime = time.Now()
  1391. e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
  1392. if e != nil {
  1393. err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
  1394. return
  1395. }
  1396. } else {
  1397. // 获取用户所在公司剩余的点
  1398. companyPointsNum, e = models.GetCygxActivitySpecialPermissionPoints(companyId)
  1399. if e != nil && e.Error() != utils.ErrNoRow() {
  1400. err = errors.New("GetCygxActivitySpecialPermissionPoints, Err: " + e.Error())
  1401. return
  1402. }
  1403. }
  1404. companyPoints, e := company.GetCompanyContractPermissionPointsCount(companyContractId)
  1405. if e != nil && e.Error() != utils.ErrNoRow() {
  1406. err = errors.New("GetCompanyContractPermissionPointsCount, Err: " + e.Error())
  1407. return
  1408. }
  1409. //获取需要添加的流水信息
  1410. var items []*models.CygxActivitySpecialTripBill
  1411. if companyPoints > 0 {
  1412. companyPointsNum += companyPoints
  1413. itemBill := new(models.CygxActivitySpecialTripBill)
  1414. itemBill.CreateTime = time.Now()
  1415. itemBill.CompanyId = comapnyDetail.CompanyId
  1416. itemBill.CompanyName = comapnyDetail.CompanyName
  1417. itemBill.Source = 2
  1418. itemBill.DoType = 2
  1419. itemBill.Way = 3
  1420. itemBill.RegisterPlatform = log.RegisterPlatform
  1421. itemBill.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
  1422. itemBill.BillDetailed = companyPoints
  1423. itemBill.Total = fmt.Sprint(companyPointsNum, "次")
  1424. itemBill.Content = "路演/专项点数转正"
  1425. items = append(items, itemBill)
  1426. }
  1427. // 获取合同信息-套餐信息
  1428. companyContract, e := company.GetCompanyContractById(companyContractId)
  1429. if e != nil {
  1430. err = errors.New("GetCompanyContractById, Err: " + e.Error())
  1431. return
  1432. }
  1433. itemBill := new(models.CygxActivitySpecialTripBill)
  1434. itemBill.CreateTime = time.Now()
  1435. itemBill.CompanyId = comapnyDetail.CompanyId
  1436. itemBill.CompanyName = comapnyDetail.CompanyName
  1437. itemBill.Source = 2
  1438. itemBill.DoType = 2
  1439. itemBill.Way = 3
  1440. itemBill.RegisterPlatform = log.RegisterPlatform
  1441. itemBill.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
  1442. packageType := companyContract.RaiPackageType
  1443. if packageType > 0 {
  1444. packageTypeMap := map[int]float64{1: 16, 2: 12}
  1445. totalTrip := packageTypeMap[packageType]
  1446. itemBill.BillDetailed = totalTrip
  1447. companyPointsNum += totalTrip
  1448. itemBill.Total = fmt.Sprint(itemBill.BillDetailed) + "次"
  1449. if packageType == 2 {
  1450. itemBill.Content = "45w大套餐转正"
  1451. } else {
  1452. itemBill.Content = "70w大套餐转正"
  1453. }
  1454. itemBill.Total = fmt.Sprint(companyPointsNum, "次")
  1455. items = append(items, itemBill)
  1456. } else {
  1457. var condition string
  1458. var pars []interface{}
  1459. pars = make([]interface{}, 0)
  1460. condition = " AND company_contract_id = ? AND is_upgrade = 1 "
  1461. pars = append(pars, companyContractId)
  1462. list, e := company.GetCompanyContractPermissionList(condition, pars) // 获取带有升级的权限
  1463. if e != nil && e.Error() != utils.ErrNoRow() {
  1464. err = errors.New("GetCompanyContractPermissionList, Err: " + e.Error())
  1465. return
  1466. }
  1467. if len(list) > 0 {
  1468. //获取权益主观权限
  1469. listRaiSubjectivity, e := models.GetChartPermissionListRaiSubjectivity()
  1470. if e != nil && e.Error() != utils.ErrNoRow() {
  1471. err = errors.New("GetChartPermissionListRaiSubjectivity, Err: " + e.Error())
  1472. }
  1473. mapRaiSubjectivity := make(map[int]bool)
  1474. mapPermissionName := make(map[int]string)
  1475. for _, v := range listRaiSubjectivity {
  1476. mapRaiSubjectivity[v.ChartPermissionId] = true
  1477. mapPermissionName[v.ChartPermissionId] = v.ChartPermissionName
  1478. }
  1479. for _, v := range list {
  1480. //如果是升级则加点
  1481. if v.IsUpgrade == 1 && mapRaiSubjectivity[v.ChartPermissionId] {
  1482. itemBill.BillDetailed += 4
  1483. companyPointsNum += 4
  1484. }
  1485. }
  1486. itemBill.Total = fmt.Sprint(companyPointsNum, "次")
  1487. itemBill.Content = "行业升级套餐转正"
  1488. items = append(items, itemBill)
  1489. }
  1490. }
  1491. //更新对应机构的剩余点数
  1492. var itemCompanys []*models.CygxActivitySpecialPermissionPoints
  1493. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  1494. itemCompany.CompanyId = comapnyDetail.CompanyId
  1495. itemCompany.Points = companyPointsNum
  1496. itemCompany.ModifyTime = time.Now()
  1497. itemCompanys = append(itemCompanys, itemCompany)
  1498. err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
  1499. return
  1500. }
  1501. //func init() {
  1502. // ActivitySpecialPointsBillSubmitMeetingReduce(93)
  1503. //}
  1504. // 12: 专项调活动提交到会扣点处理
  1505. func ActivitySpecialPointsBillSubmitMeetingReduce(log models.YanXuanActivityPointsRedis) (err error) {
  1506. //func ActivitySpecialPointsBillSubmitMeetingReduce(activityId int) (err error) {
  1507. defer func() {
  1508. if err != nil {
  1509. fmt.Println(err)
  1510. go utils.SendAlarmMsg("专项调活动提交到会扣点处理,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "adminId", log.AdminId), 2)
  1511. }
  1512. }()
  1513. time.Sleep(5 * time.Second) //添加五秒的延迟
  1514. activityId := log.ActivityId
  1515. activityInfo, e := models.GetCygxActivitySpecialDetail(activityId)
  1516. if e != nil {
  1517. err = errors.New("GetCygxActivitySpecialDetail" + e.Error())
  1518. return
  1519. }
  1520. var companyIds []int
  1521. mapCompanyPoints := make(map[int]float64) //一组公司的剩余点数
  1522. var condition string
  1523. var pars []interface{}
  1524. condition += ` AND activity_id = ? `
  1525. pars = append(pars, activityId)
  1526. //获取提交到会的人员信息
  1527. signUpDetailList, e := models.GetCygxActivitySpecialmeetingDetailList(condition, pars)
  1528. if e != nil && e.Error() != utils.ErrNoRow() {
  1529. err = errors.New("GetSignupDetailList" + e.Error())
  1530. return
  1531. }
  1532. if len(signUpDetailList) == 0 {
  1533. return
  1534. }
  1535. for _, v := range signUpDetailList {
  1536. companyIds = append(companyIds, v.CompanyId)
  1537. companyId := v.CompanyId
  1538. //判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
  1539. total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
  1540. if e != nil {
  1541. err = errors.New("GetCygxActivitySpecialPermissionPointsCountByCompanyId, Err: " + e.Error())
  1542. return
  1543. }
  1544. if total == 0 {
  1545. itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
  1546. itemPointsCompany.CompanyId = companyId
  1547. itemPointsCompany.CompanyName = v.CompanyName
  1548. itemPointsCompany.CreateTime = time.Now()
  1549. itemPointsCompany.ModifyTime = time.Now()
  1550. e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
  1551. if e != nil {
  1552. err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
  1553. return
  1554. }
  1555. }
  1556. }
  1557. pars = make([]interface{}, 0)
  1558. condition = ` AND activity_id = ? AND table_source = 'activityspecial' AND mobile != '' ORDER BY id DESC `
  1559. pars = append(pars, activityId)
  1560. //获取扣点的流水记录
  1561. activityPointsBillList, e := models.GetCygxActivitySpecialTripBill(condition, pars)
  1562. if e != nil && e.Error() != utils.ErrNoRow() {
  1563. err = errors.New("GetCygxActivitySpecialTripBill" + e.Error())
  1564. return
  1565. }
  1566. mapActivityPointsBill := make(map[string]*models.CygxActivitySpecialTripBill)
  1567. var itemsOld []*models.CygxActivitySpecialTripBill // 之前扣过点的流水记录
  1568. for _, v := range activityPointsBillList { //获取这场活动,某个手机号最后一次的扣点记录
  1569. if mapActivityPointsBill[v.Mobile] == nil {
  1570. mapActivityPointsBill[v.Mobile] = v
  1571. if v.BillDetailed < 0 {
  1572. itemsOld = append(itemsOld, v)
  1573. }
  1574. }
  1575. companyIds = append(companyIds, v.CompanyId)
  1576. }
  1577. //return
  1578. pars = make([]interface{}, 0)
  1579. condition = ` AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
  1580. pars = append(pars, companyIds)
  1581. //获取这些公司剩余的点数
  1582. conpanyList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
  1583. if e != nil && e.Error() != utils.ErrNoRow() {
  1584. err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err: " + e.Error())
  1585. return
  1586. }
  1587. //return
  1588. for _, v := range conpanyList {
  1589. if v.CompanyId != 0 {
  1590. mapCompanyPoints[v.CompanyId] = v.Points
  1591. }
  1592. }
  1593. //return
  1594. var items []*models.CygxActivitySpecialTripBill
  1595. var itemCompanys []*models.CygxActivitySpecialPermissionPoints
  1596. mapMeetUserId := make(map[int]bool)
  1597. for _, user := range signUpDetailList {
  1598. mapMeetUserId[user.UserId] = true
  1599. item := new(models.CygxActivitySpecialTripBill)
  1600. item.ActivityId = activityId
  1601. item.CreateTime = time.Now()
  1602. item.UserId = user.UserId
  1603. item.Mobile = user.Mobile
  1604. item.Email = user.Email
  1605. item.CompanyId = user.CompanyId
  1606. item.CompanyName = user.CompanyName
  1607. item.RealName = user.RealName
  1608. item.RegisterPlatform = log.RegisterPlatform
  1609. item.AdminId = log.AdminId
  1610. item.Source = log.Source
  1611. item.ChartPermissionId = activityInfo.ChartPermissionId
  1612. item.ChartPermissionName = activityInfo.ChartPermissionName
  1613. if user.IsMeeting == 1 {
  1614. //如果没有扣点记录就对他们进行扣点处理
  1615. if mapActivityPointsBill[user.Mobile] == nil || mapActivityPointsBill[user.Mobile].BillDetailed > 0 {
  1616. points := mapCompanyPoints[user.CompanyId] - 1
  1617. item.BillDetailed = -1
  1618. item.DoType = 1
  1619. item.Content = activityInfo.ResearchTheme + "--活动到会"
  1620. item.Total = fmt.Sprint(points, "次")
  1621. item.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
  1622. //item.Points = mapCompanyPoints[user.CompanyId] - activityPointsSetDetail.UserPointsNum
  1623. items = append(items, item)
  1624. //更新对应机构的剩余点数
  1625. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  1626. itemCompany.CompanyId = user.CompanyId
  1627. itemCompany.Points = points
  1628. itemCompany.ModifyTime = time.Now()
  1629. itemCompanys = append(itemCompanys, itemCompany)
  1630. mapCompanyPoints[user.CompanyId] = points
  1631. }
  1632. }
  1633. //else {
  1634. // ////第二次提交改成未到会的,对其进行返点处理
  1635. // if mapActivityPointsBill[user.Mobile] != nil && mapActivityPointsBill[user.Mobile].BillDetailed < 0 {
  1636. // fmt.Println("取消到会了")
  1637. // points := mapCompanyPoints[user.CompanyId] + 1
  1638. // item.BillDetailed = 1
  1639. // item.DoType = 2
  1640. // item.Content = activityInfo.ResearchTheme + "--活动取消到会"
  1641. // //item.Points =points
  1642. // item.Total = fmt.Sprint(points, "次")
  1643. // item.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
  1644. // items = append(items, item)
  1645. //
  1646. // //更新对应机构的剩余点数
  1647. // itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  1648. // itemCompany.CompanyId = user.CompanyId
  1649. // itemCompany.Points = points
  1650. // itemCompany.ModifyTime = time.Now()
  1651. // itemCompanys = append(itemCompanys, itemCompany)
  1652. // mapCompanyPoints[user.CompanyId] = points
  1653. // }
  1654. //}
  1655. }
  1656. if len(itemsOld) > 0 {
  1657. for _, user := range itemsOld {
  1658. if mapMeetUserId[user.UserId] {
  1659. continue
  1660. }
  1661. item := new(models.CygxActivitySpecialTripBill)
  1662. item.ActivityId = activityId
  1663. item.CreateTime = time.Now()
  1664. item.UserId = user.UserId
  1665. item.Mobile = user.Mobile
  1666. item.Email = user.Email
  1667. item.CompanyId = user.CompanyId
  1668. item.CompanyName = user.CompanyName
  1669. item.RealName = user.RealName
  1670. item.RegisterPlatform = log.RegisterPlatform
  1671. item.AdminId = log.AdminId
  1672. item.Source = log.Source
  1673. item.ChartPermissionId = activityInfo.ChartPermissionId
  1674. item.ChartPermissionName = activityInfo.ChartPermissionName
  1675. points := mapCompanyPoints[user.CompanyId] + 1
  1676. item.BillDetailed = 1
  1677. item.DoType = 2
  1678. item.Content = activityInfo.ResearchTheme + "--活动取消到会"
  1679. //item.Points =points
  1680. item.Total = fmt.Sprint(points, "次")
  1681. item.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
  1682. items = append(items, item)
  1683. //更新对应机构的剩余点数
  1684. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  1685. itemCompany.CompanyId = user.CompanyId
  1686. itemCompany.Points = points
  1687. itemCompany.ModifyTime = time.Now()
  1688. itemCompanys = append(itemCompanys, itemCompany)
  1689. mapCompanyPoints[user.CompanyId] = points
  1690. }
  1691. }
  1692. e = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
  1693. if e != nil && e.Error() != utils.ErrNoRow() {
  1694. err = errors.New("AddCygxActivitySpecialTripBillMulti, Err: " + e.Error())
  1695. return
  1696. }
  1697. return
  1698. }
  1699. //func init() {
  1700. // initCygx14_5_01()
  1701. //}
  1702. func initCygx14_5_01() {
  1703. // 获取流水信息
  1704. var condition string
  1705. var pars []interface{}
  1706. condition += ` AND points != 0 `
  1707. list, err := models.GetCygxActivityPointsCompanyList(condition, pars)
  1708. if err != nil {
  1709. fmt.Println(err)
  1710. return
  1711. }
  1712. for _, v := range list {
  1713. fmt.Println("v.CompanyId", v.CompanyId)
  1714. companyId := v.CompanyId
  1715. total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
  1716. if e != nil {
  1717. err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
  1718. return
  1719. }
  1720. var companyPointsNum float64
  1721. if total == 0 {
  1722. companyPointsNum = 0
  1723. itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
  1724. itemPointsCompany.CompanyId = companyId
  1725. itemPointsCompany.CompanyName = v.CompanyName
  1726. itemPointsCompany.CreateTime = time.Now()
  1727. itemPointsCompany.ModifyTime = time.Now()
  1728. e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
  1729. if e != nil {
  1730. err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
  1731. return
  1732. }
  1733. } else {
  1734. // 获取用户所在公司剩余的点
  1735. companyPointsNum, e = models.GetCygxActivitySpecialPermissionPoints(v.CompanyId)
  1736. if e != nil && e.Error() != utils.ErrNoRow() {
  1737. err = errors.New("GetCygxActivitySpecialPermissionPoints, Err: " + e.Error())
  1738. return
  1739. }
  1740. }
  1741. //获取需要添加的流水信息
  1742. var items []*models.CygxActivitySpecialTripBill
  1743. itemBill := new(models.CygxActivitySpecialTripBill)
  1744. itemBill.CreateTime = time.Now()
  1745. itemBill.CompanyId = v.CompanyId
  1746. itemBill.CompanyName = v.CompanyName
  1747. itemBill.Source = 3
  1748. itemBill.DoType = 0
  1749. itemBill.BillDetailed = v.Points / 2 // 流水减一
  1750. //itemBill.RegisterPlatform = utils.REGISTER_PLATFORM
  1751. itemBill.Content = "研选点数清零,1/2比例折算进专项/路演点数"
  1752. itemBill.Total = fmt.Sprint(companyPointsNum+itemBill.BillDetailed, "次")
  1753. itemBill.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
  1754. items = append(items, itemBill)
  1755. //更新对应机构的剩余点数
  1756. var itemCompanys []*models.CygxActivitySpecialPermissionPoints
  1757. itemCompany := new(models.CygxActivitySpecialPermissionPoints)
  1758. itemCompany.CompanyId = v.CompanyId
  1759. itemCompany.Points = companyPointsNum + itemBill.BillDetailed
  1760. itemCompany.ModifyTime = time.Now()
  1761. itemCompanys = append(itemCompanys, itemCompany)
  1762. err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
  1763. }
  1764. fmt.Println("enddd145")
  1765. }