123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646
  1. package luckdraw
  2. import (
  3. "errors"
  4. "fmt"
  5. "spaceofcheng/services/models"
  6. "spaceofcheng/services/models/activityinfo"
  7. "spaceofcheng/services/models/course"
  8. "spaceofcheng/services/models/luckdraw"
  9. "spaceofcheng/services/models/model"
  10. "spaceofcheng/services/service"
  11. "spaceofcheng/services/utils"
  12. "time"
  13. "github.com/astaxie/beego"
  14. )
  15. // LuckdrawServ 系统处理
  16. type LuckdrawServ struct {
  17. ctx *utils.Context
  18. dao *luckdraw.LuckDrawDao
  19. courseDAO *course.CourseDAO
  20. adao *activityinfo.ActivityinfoDao
  21. }
  22. // NewLuckdrawServ 初始化
  23. func NewLuckdrawServ(ctx *utils.Context) *LuckdrawServ {
  24. return &LuckdrawServ{
  25. ctx: ctx,
  26. dao: luckdraw.NewDAO(ctx),
  27. courseDAO: course.NewCourseDAO(ctx),
  28. adao: activityinfo.NewActivityinfoDao(ctx),
  29. }
  30. }
  31. // GetLuckDrawTpl 获取抽奖模板
  32. func (s *LuckdrawServ) GetLuckDrawTpl() ([]model.TaLuckdrawTpl, error) {
  33. org := s.ctx.Get("org").(model.SysOrg)
  34. tpls, err := s.dao.GetLuckDrawTpl(org.OrgId)
  35. return tpls, err
  36. }
  37. // GetLuckDrawList 获取抽奖列表
  38. func (s *LuckdrawServ) GetLuckDrawList(caseids, name, status string, page, pageSize int) (map[string]interface{}, error) {
  39. if pageSize == 0 {
  40. pageSize = service.PAGENUM
  41. }
  42. if page == 0 {
  43. page = 1
  44. }
  45. list, err := s.dao.GetLuckDrawList(caseids, name, status, page, pageSize)
  46. if err != nil {
  47. utils.LogError("获取抽奖信息失败: " + err.Error())
  48. return nil, errors.New("获取抽奖信息失败")
  49. }
  50. total, err := s.dao.GetLuckDrawCount(caseids, name, status)
  51. if err != nil {
  52. utils.LogError("获取抽奖信息失败: " + err.Error())
  53. return nil, errors.New("获取抽奖信息失败")
  54. }
  55. return map[string]interface{}{
  56. "list": list,
  57. "pagesize": pageSize,
  58. "pagenum": total,
  59. "page": page,
  60. }, nil
  61. }
  62. // GetLuckDrawRecordList 获取抽奖记录列表
  63. func (s *LuckdrawServ) GetLuckDrawRecordList(luckdrawid, tel string, page, pageSize int) (map[string]interface{}, error) {
  64. if pageSize == 0 {
  65. pageSize = service.PAGENUM
  66. }
  67. if page == 0 {
  68. page = 1
  69. }
  70. list, err := s.dao.GetLuckDrawRecord(luckdrawid, tel, page, pageSize)
  71. if err != nil {
  72. utils.LogError("获取抽奖记录信息失败: " + err.Error())
  73. return nil, errors.New("获取抽奖记录信息失败")
  74. }
  75. total, err := s.dao.GetLuckDrawRecordCount(luckdrawid, tel)
  76. if err != nil {
  77. utils.LogError("获取抽奖记录信息失败: " + err.Error())
  78. return nil, errors.New("获取抽奖记录信息失败")
  79. }
  80. return map[string]interface{}{
  81. "list": list,
  82. "pagesize": pageSize,
  83. "pagenum": total,
  84. "page": page,
  85. }, nil
  86. }
  87. func (s *LuckdrawServ) GetLuckDrawRecordExcel(id, tel string) ([]luckdraw.RecordWithPhone, error) {
  88. list, err := s.dao.GetLuckDrawRecordExcel(id, tel)
  89. if err != nil {
  90. utils.LogError("获取抽奖记录Excel失败: " + err.Error())
  91. return nil, errors.New("获取抽奖记录Excel失败")
  92. }
  93. return list, nil
  94. }
  95. // GetLuckDrawShareList 获取抽奖分享记录列表
  96. func (s *LuckdrawServ) GetLuckDrawShareList(luckdrawid, tel string, page, pageSize int) (map[string]interface{}, error) {
  97. if pageSize == 0 {
  98. pageSize = service.PAGENUM
  99. }
  100. if page == 0 {
  101. page = 1
  102. }
  103. list, err := s.dao.GetLuckDrawShare(luckdrawid, tel, page, pageSize)
  104. if err != nil {
  105. utils.LogError("获取抽奖分享记录信息失败: " + err.Error())
  106. return nil, errors.New("获取抽奖分享记录信息失败")
  107. }
  108. total, err := s.dao.GetLuckDrawShareCount(luckdrawid, tel)
  109. if err != nil {
  110. utils.LogError("获取抽奖分享记录信息失败: " + err.Error())
  111. return nil, errors.New("获取抽奖分享记录信息失败")
  112. }
  113. return map[string]interface{}{
  114. "list": list,
  115. "pagesize": pageSize,
  116. "pagenum": total,
  117. "page": page,
  118. }, nil
  119. }
  120. // GetLuckDrawInfoByID 获取单个抽奖记录
  121. func (s *LuckdrawServ) GetLuckDrawInfoByID(luckdrawid string) (*luckdraw.LuckDrawInfo, error) {
  122. info, err := s.dao.GetLuckDrawInfoByID(luckdrawid)
  123. if err != nil {
  124. utils.LogError("获取抽奖信息失败: " + err.Error())
  125. return nil, errors.New("获取抽奖信息失败")
  126. }
  127. return info, nil
  128. }
  129. // SaveLuckDraw 保存抽奖信息
  130. func (s *LuckdrawServ) SaveLuckDraw(luckdraw *luckdraw.LuckDrawInfo) (*model.TaLuckdraw, error) {
  131. if luckdraw.CaseId == "" {
  132. return nil, utils.LogError("请选择所属案场!")
  133. }
  134. if luckdraw.Name == "" {
  135. return nil, utils.LogError("请输入活动标题!")
  136. }
  137. if luckdraw.BeginDate.IsZero() || luckdraw.EndDate.IsZero() {
  138. return nil, utils.LogError("请选择活动时间!")
  139. }
  140. if luckdraw.TplId == "" {
  141. return nil, utils.LogError("请选择活动模板!")
  142. }
  143. if luckdraw.LuckdrawRule == "" {
  144. return nil, utils.LogError("请填写规则说明!")
  145. }
  146. if luckdraw.ActivityMainImg == "" {
  147. return nil, utils.LogError("请上传活动主图")
  148. }
  149. var newInfo *model.TaLuckdraw
  150. var err error
  151. var info = model.TaActivityShareInfo{
  152. ActivityMainImg: luckdraw.ActivityMainImg,
  153. ActivityTitle: luckdraw.ActivityTitle,
  154. ActivityType: models.ACTIVITY_LUCK,
  155. ShareContent: luckdraw.ShareContent,
  156. ShareImg: luckdraw.ShareImg,
  157. }
  158. beego.Error(info)
  159. if luckdraw.Id == "" {
  160. org := s.ctx.Get("org").(model.SysOrg)
  161. luckdraw.OrgId = org.OrgId
  162. user := s.ctx.Get("user").(model.SysUser)
  163. luckdraw.CreateUser = user.UserId
  164. newInfo, err = s.dao.InsertLuckdraw(luckdraw.TaLuckdraw)
  165. if err != nil {
  166. utils.LogError("保存抽奖信息失败: " + err.Error())
  167. return nil, errors.New("保存抽奖信息失败")
  168. }
  169. info.ActivityId = newInfo.Id
  170. err = s.adao.AddActivityInfo(info)
  171. if err != nil {
  172. utils.LogError("保存抽奖信息失败: " + err.Error())
  173. return nil, errors.New("保存抽奖信息失败")
  174. }
  175. } else {
  176. beego.Error("____________joinNum___________")
  177. beego.Error(luckdraw.JoinNum)
  178. if luckdraw.JoinedNum > 0 {
  179. var cols = []string{
  180. "name",
  181. "luckdraw_rule",
  182. "remark",
  183. }
  184. err = s.dao.UpdateLuckDraw(luckdraw.TaLuckdraw, cols)
  185. if err != nil {
  186. utils.LogError("更新抽奖信息失败: " + err.Error())
  187. return nil, errors.New("更新抽奖信息失败")
  188. }
  189. err = s.dao.UpdatePrizeDesc(luckdraw.Prizes)
  190. if err != nil {
  191. utils.LogError("更新抽奖信息失败: " + err.Error())
  192. return nil, errors.New("更新抽奖信息失败")
  193. }
  194. info.ActivityId = luckdraw.Id
  195. err = s.adao.DeleteInfo(info.ActivityId)
  196. if err != nil {
  197. utils.LogError("更新抽奖信息失败: " + err.Error())
  198. return nil, errors.New("更新抽奖信息失败")
  199. }
  200. err = s.adao.AddActivityInfo(info)
  201. if err != nil {
  202. utils.LogError("更新抽奖信息失败: " + err.Error())
  203. return nil, errors.New("更新抽奖信息失败")
  204. }
  205. return &luckdraw.TaLuckdraw, nil
  206. }
  207. var cols = []string{
  208. "name",
  209. "tpl_id",
  210. "luckdraw_rule",
  211. "begin_date",
  212. "end_date",
  213. "case_id",
  214. "remark",
  215. "join_num",
  216. "join_type",
  217. "num_type",
  218. "num_interval",
  219. "luckdraw_num",
  220. "share_type",
  221. "share_add_num",
  222. "is_sys_luckdraw",
  223. "is_internal_default"}
  224. err = s.dao.UpdateLuckDraw(luckdraw.TaLuckdraw, cols)
  225. if err != nil {
  226. utils.LogError("更新抽奖信息失败: " + err.Error())
  227. return nil, errors.New("更新抽奖信息失败")
  228. }
  229. newInfo = &luckdraw.TaLuckdraw
  230. info.ActivityId = newInfo.Id
  231. err = s.adao.DeleteInfo(info.ActivityId)
  232. if err != nil {
  233. utils.LogError("更新抽奖信息失败: " + err.Error())
  234. return nil, errors.New("更新抽奖信息失败")
  235. }
  236. err = s.adao.AddActivityInfo(info)
  237. // 删除奖品内定信息
  238. err = s.dao.DelLuckDrawDefault(luckdraw.Id)
  239. if err != nil {
  240. utils.LogError("删除抽奖内定信息失败: " + err.Error())
  241. return nil, errors.New("更新抽奖信息失败")
  242. }
  243. // 删除抽奖图片信息
  244. err = s.dao.DelLuckDrawImgs(luckdraw.Id)
  245. if err != nil {
  246. utils.LogError("删除抽奖图片信息失败: " + err.Error())
  247. return nil, errors.New("更新抽奖信息失败")
  248. }
  249. // 删除奖品信息
  250. err = s.dao.DelLuckDrawPrize(luckdraw.Id)
  251. if err != nil {
  252. utils.LogError("删除奖品信息失败: " + err.Error())
  253. return nil, errors.New("更新奖品信息失败")
  254. }
  255. // 删除该抽奖对应的设置信息
  256. err = s.dao.DelLuckDrawSet(luckdraw.Id)
  257. if err != nil {
  258. utils.LogError("删除奖品信息失败: " + err.Error())
  259. return nil, errors.New("更新奖品信息失败")
  260. }
  261. }
  262. // 保存抽奖图片信息
  263. err = s.dao.SaveLuckDrawImgs(luckdraw.Imgs, newInfo.Id)
  264. if err != nil {
  265. utils.LogError("保存抽奖图片信息失败: " + err.Error())
  266. return nil, errors.New("保存抽奖图片信息失败")
  267. }
  268. // 保存奖品信息
  269. err = s.dao.SaveLuckDrawPrizes(luckdraw.Prizes, newInfo)
  270. if err != nil {
  271. utils.LogError("保存奖品信息失败: " + err.Error())
  272. return nil, errors.New("保存奖品信息失败:" + err.Error())
  273. }
  274. return newInfo, nil
  275. }
  276. // OpenLuckDraw 启动游戏
  277. func (s *LuckdrawServ) OpenLuckDraw(id string) error {
  278. ld, err := s.dao.GetLuckDrawByID(id)
  279. if err != nil {
  280. utils.LogError("获取游戏信息失败: " + err.Error())
  281. return errors.New("获取游戏信息失败")
  282. }
  283. if ld.Status != models.STATUS_READY {
  284. return errors.New("游戏状态异常,请刷新后重试!")
  285. }
  286. var luckdraw = model.TaLuckdraw{
  287. Id: id,
  288. Status: models.STATUS_NORMAL,
  289. }
  290. err = s.dao.UpdateLuckDraw(luckdraw, []string{
  291. "status",
  292. })
  293. return err
  294. }
  295. // StopLuckDraw 暂停游戏
  296. func (s *LuckdrawServ) StopLuckDraw(id string) error {
  297. // 判断
  298. ld, err := s.dao.GetLuckDrawByID(id)
  299. if err != nil {
  300. utils.LogError("获取游戏信息失败: " + err.Error())
  301. return errors.New("获取游戏信息失败")
  302. }
  303. if ld.Status != models.STATUS_NORMAL {
  304. return errors.New("游戏状态异常,请刷新后重试!")
  305. }
  306. var luckdraw = model.TaLuckdraw{
  307. Id: id,
  308. Status: models.STATUS_READY,
  309. }
  310. err = s.dao.UpdateLuckDraw(luckdraw, []string{
  311. "status",
  312. })
  313. return err
  314. }
  315. // DelLuckDraw 删除游戏
  316. func (s *LuckdrawServ) DelLuckDraw(id string) error {
  317. // 判断
  318. ld, err := s.dao.GetLuckDrawByID(id)
  319. if err != nil {
  320. utils.LogError("获取游戏信息失败: " + err.Error())
  321. return errors.New("获取游戏信息失败")
  322. }
  323. if ld.Status != models.STATUS_READY {
  324. return errors.New("游戏状态异常,请刷新后重试!")
  325. }
  326. var luckdraw = model.TaLuckdraw{
  327. Id: id,
  328. Status: models.STATUS_DEL,
  329. }
  330. err = s.dao.UpdateLuckDraw(luckdraw, []string{
  331. "status",
  332. })
  333. return err
  334. }
  335. // GetLuckDraw 获取抽奖信息
  336. func (s *LuckdrawServ) GetLuckDraw(id string) (*luckdraw.LuckDraw, error) {
  337. luck, err := s.dao.GetLuckDraw(id)
  338. if err != nil {
  339. return nil, err
  340. }
  341. return luck, nil
  342. }
  343. // LuckDraw 抽奖
  344. func (s *LuckdrawServ) LuckDraw(id string, user *model.TaCustomer) (*model.TaLuckdrawPrize, *model.TaPrizeDetail, error) {
  345. prize, prizeDetail, recored, err := s.dao.LuckDraw(id, user)
  346. if err != nil {
  347. utils.LogError("抽奖失败:", err)
  348. return nil, nil, err
  349. }
  350. utils.LogInfo("抽奖记录ID: " + recored.Id)
  351. custQRCode := model.TaCustomerCourseQrcode{
  352. CustomerCourseId: recored.Id,
  353. CustomerQrcode: utils.GenerateQRCode(),
  354. CreateDate: time.Now(),
  355. Status: models.STATUS_NORMAL,
  356. QrcodeType: models.QRCODE_TYPE_PRIZE,
  357. }
  358. if err := s.courseDAO.SaveCustomerCourseQrcode(&custQRCode); err != nil {
  359. utils.LogError("插入中奖二维码失败: " + err.Error())
  360. return nil, nil, errors.New("写入中奖二维码失败")
  361. }
  362. if prize.IsReality == models.BOOL_TRUE {
  363. // 推送微信消息
  364. userMap := s.ctx.Get("userMap").(model.TaUserMapping)
  365. clienturl := s.ctx.Get("clienturl").(string)
  366. tplID := s.ctx.Get("tplid").(string)
  367. cs, err := models.GetCaseByID(recored.CaseId)
  368. if err != nil {
  369. utils.LogError("推送微信消息失败, 查询案场信息出错: " + err.Error())
  370. // 但是不返回错误
  371. return nil, nil, nil
  372. }
  373. caseName := cs.CaseName
  374. remarkTpl := "请在%s日前, 前往%s兑换"
  375. message := utils.Message{
  376. To: utils.ClientID{ID: userMap.Openid},
  377. Data: map[string]interface{}{
  378. "orgid": recored.OrgId,
  379. "tplid": tplID,
  380. "link": clienturl,
  381. "data": map[string]string{
  382. "first": "中奖成功提醒",
  383. "keyword1": prize.PrizeName,
  384. "keyword2": time.Now().Local().Format("2006-01-02"),
  385. "remark": fmt.Sprintf(remarkTpl, recored.VerificationEnd.Format("2006-01-02"), caseName),
  386. },
  387. },
  388. }
  389. go utils.SendWechat(message)
  390. }
  391. return prize, prizeDetail, nil
  392. }
  393. func (s *LuckdrawServ) PrizeWriteOff(recordid string, userid string) error {
  394. err := s.dao.PrizeWriteOff(recordid, userid)
  395. if err != nil {
  396. utils.LogError("奖品核销失败: " + err.Error())
  397. return errors.New("奖品核销失败")
  398. }
  399. return nil
  400. }
  401. func (s *LuckdrawServ) GetWinning(prizes []model.TaLuckdrawPrize) (*model.TaLuckdrawPrize, error) {
  402. prize, err := s.dao.GetWinning(prizes)
  403. if err != nil {
  404. return nil, err
  405. }
  406. return prize, nil
  407. }
  408. func (s *LuckdrawServ) GetLuckDrawByID(id string) (*luckdraw.LuckDraw, error) {
  409. luck, err := s.dao.GetLuckDrawByID(id)
  410. if err != nil {
  411. utils.LogError("获取抽奖信息失败: " + err.Error())
  412. return nil, errors.New("获取抽奖信息失败")
  413. }
  414. return luck, nil
  415. }
  416. func (s *LuckdrawServ) GetCaseAddressByLuckDarw(luckdraw string) (string, error) {
  417. address, err := s.dao.GetCaseAddressByLuckDarw(luckdraw)
  418. if err != nil {
  419. utils.LogError("获取案场地址失败: " + err.Error())
  420. return "", errors.New("获取案场地址失败")
  421. }
  422. return address, nil
  423. }
  424. func (s *LuckdrawServ) UpdateLuckDrawEndDate(id string) error {
  425. err := s.dao.UpdateLuckDrawEndDate(id)
  426. if err != nil {
  427. utils.LogError("更新活动结束时间失败: " + err.Error())
  428. return errors.New("更新活动结束时间失败")
  429. }
  430. return nil
  431. }
  432. func (s *LuckdrawServ) GetPrizes(luckdrawid string) ([]model.TaLuckdrawPrize, error) {
  433. prize, err := s.dao.GetPrizes(luckdrawid)
  434. if err != nil {
  435. utils.LogError("获取奖品信息失败: " + err.Error())
  436. return nil, errors.New("获取奖品信息失败")
  437. }
  438. return prize, nil
  439. }
  440. func (s *LuckdrawServ) UpdateStock(prize *model.TaLuckdrawPrize) error {
  441. err := s.dao.UpdateStock(prize)
  442. if err != nil {
  443. utils.LogError("修改库存失败: " + err.Error())
  444. return errors.New("修改库存失败")
  445. }
  446. return nil
  447. }
  448. func (s *LuckdrawServ) GetPrizeStock(luckdrawid string) ([]model.TaLuckdrawPrize, error) {
  449. prize, err := s.dao.GetPrizeStock(luckdrawid)
  450. if err != nil {
  451. utils.LogError("判断奖项库存失败: " + err.Error())
  452. return nil, errors.New("判断奖项库存失败")
  453. }
  454. return prize, nil
  455. }
  456. func (s *LuckdrawServ) GetPrizeByID(id string) (model.TaLuckdrawPrize, error) {
  457. prize, err := s.dao.GetPrizeByID(id)
  458. if err != nil {
  459. utils.LogError("根据id获取奖品信息失败: " + err.Error())
  460. return prize, errors.New("根据id获取奖品信息失败")
  461. }
  462. return prize, nil
  463. }
  464. func (s *LuckdrawServ) SaveRecord(record model.TaLuckdrawRecord) (*model.TaLuckdrawRecord, error) {
  465. newRecord, err := s.dao.SaveRecord(record)
  466. if err != nil {
  467. utils.LogError("保存抽奖记录失败: " + err.Error())
  468. return nil, errors.New("保存抽奖记录失败")
  469. }
  470. return newRecord, nil
  471. }
  472. func (s *LuckdrawServ) GetPrizeDetail(prizeid string) ([]model.TaPrizeDetail, error) {
  473. detail, err := s.dao.GetPrizeDetail(prizeid)
  474. if err != nil {
  475. utils.LogError("获取未领取的奖品详情失败: " + err.Error())
  476. return nil, errors.New("获取未领取的奖品详情失败")
  477. }
  478. return detail, nil
  479. }
  480. func (s *LuckdrawServ) UpdatePrizeDetail(detail model.TaPrizeDetail) error {
  481. err := s.dao.UpdatePrizeDetail(detail)
  482. if err != nil {
  483. utils.LogError("更新库存明细为已领取失败: " + err.Error())
  484. return errors.New("更新库存明细为已领取失败")
  485. }
  486. return nil
  487. }
  488. func (s *LuckdrawServ) UpdateRecord(record *luckdraw.LuckInfo) error {
  489. err := s.dao.UpdateRecord(record)
  490. if err != nil {
  491. utils.LogError("核销更新抽奖记录表失败: " + err.Error())
  492. return errors.New("核销更新抽奖记录表失败")
  493. }
  494. return nil
  495. }
  496. func (s *LuckdrawServ) SaveWirteOff(writeoff model.TaLuckdrawWriteoff) (*model.TaLuckdrawWriteoff, error) {
  497. newWriteoff, err := s.dao.SaveWirteOff(writeoff)
  498. if err != nil {
  499. utils.LogError("保存核销信息失败: " + err.Error())
  500. return nil, errors.New("保存核销信息失败")
  501. }
  502. return newWriteoff, nil
  503. }
  504. func (s *LuckdrawServ) GetUserRecordByLuckDraw(userid string, luckdrawid string) ([]model.TaLuckdrawRecord, error) {
  505. record, err := s.dao.GetUserRecordByLuckDraw(userid, luckdrawid)
  506. if err != nil {
  507. utils.LogError("获取用户的抽奖信息失败: " + err.Error())
  508. return nil, errors.New("获取用户的抽奖信息失败")
  509. }
  510. return record, nil
  511. }
  512. // GetUserLuckDrawByLuckDraw 获取用户抽奖信息
  513. func (s *LuckdrawServ) GetUserLuckDrawByLuckDraw(user model.TaCustomer, luckdrawid string) (*model.TaLuckdrawRecord, *model.TaLuckdrawCustomer, error) {
  514. // 获取用户抽奖设置信息
  515. customerSet, err := s.dao.GetUserLuckDrawSet(user, luckdrawid)
  516. if err != nil {
  517. utils.LogError("获取用户抽奖设置失败: " + err.Error())
  518. return nil, nil, errors.New("获取用户抽奖设置失败")
  519. }
  520. record, err := s.dao.GetUserLuckDrawByLuckDraw(user.CustomerId, luckdrawid)
  521. if err != nil {
  522. utils.LogError("获取用户的抽奖信息失败: " + err.Error())
  523. return nil, nil, errors.New("获取用户的抽奖信息失败")
  524. }
  525. return record, customerSet, nil
  526. }
  527. func (s *LuckdrawServ) GetDetailByRecord(recordid string) (*model.TaPrizeDetail, error) {
  528. detail, err := s.dao.GetDetailByRecord(recordid)
  529. if err != nil {
  530. utils.LogError("获取detail失败: " + err.Error())
  531. return nil, errors.New("获取detail失败")
  532. }
  533. return detail, nil
  534. }
  535. func (s *LuckdrawServ) GetUserLuckDraw(userid string) ([]luckdraw.UserRecord, error) {
  536. record, err := s.dao.GetUserLuckDraw(userid)
  537. if err != nil {
  538. utils.LogError("获取用户的抽奖信息失败: " + err.Error())
  539. return nil, errors.New("获取用户的抽奖信息失败")
  540. }
  541. return record, nil
  542. }
  543. func (s *LuckdrawServ) GetRecordByLuckDraw(luckdrawid string) ([]model.TaLuckdrawRecord, error) {
  544. record, err := s.dao.GetRecordByLuckDraw(luckdrawid)
  545. if err != nil {
  546. utils.LogError("获取抽奖记录失败: " + err.Error())
  547. return nil, errors.New("获取抽奖记录失败")
  548. }
  549. return record, nil
  550. }
  551. func (s *LuckdrawServ) GetRecordByID(id string) (*luckdraw.LuckInfo, error) {
  552. record, err := s.dao.GetRecordByID(id)
  553. if err != nil {
  554. utils.LogError("获取抽奖记录明细失败: " + err.Error())
  555. return nil, errors.New("获取抽奖记录明细失败")
  556. }
  557. return record, nil
  558. }
  559. func (s *LuckdrawServ) GetUserByTel(tel string) (*model.SysUser, error) {
  560. user, err := s.dao.GetUserByTel(tel)
  561. if err != nil {
  562. utils.LogError("根据 tel 获取用户人员信息失败: " + err.Error())
  563. return nil, errors.New("根据 tel 获取用户人员信息失败")
  564. }
  565. return user, nil
  566. }
  567. func (s *LuckdrawServ) SaveLuckDrawShareData(dt *model.TaShareLuckyRecord) error {
  568. err := s.dao.SaveLuckDrawShareData(dt)
  569. if err != nil {
  570. utils.LogError("保存用户分享信息失败: " + err.Error())
  571. return errors.New("保存用户分享信息失败")
  572. }
  573. return nil
  574. }
  575. func (s *LuckdrawServ) GetLuckDrawShareData(luckID, from, to, caseID string) ([]model.TaShareLuckyRecord, error) {
  576. share, err := s.dao.GetLuckDrawShareData(luckID, from, to, caseID)
  577. if err != nil {
  578. utils.LogError("获取抽奖分享失败: " + err.Error())
  579. return nil, errors.New("获取抽奖分享失败")
  580. }
  581. return share, nil
  582. }
  583. // UpdateShareNum 更新抽奖次数
  584. func (s *LuckdrawServ) UpdateShareNum(luckdraw *luckdraw.LuckDraw, fromid string) error {
  585. err := s.dao.UpdateShareNum(luckdraw, fromid)
  586. return err
  587. }