activity_points.go 77 KB

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