劲创营---任务项目
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

163 linhas
4.4 KiB

  1. package svc
  2. import (
  3. "applet/app/comm/e"
  4. "applet/app/comm/svc"
  5. "applet/app/comm/utils"
  6. "applet/app/store/md"
  7. "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models"
  8. "encoding/json"
  9. "github.com/gin-gonic/gin"
  10. "strings"
  11. "time"
  12. )
  13. func ProjectList(c *gin.Context) {
  14. var args md.ProjectReq
  15. if err := c.ShouldBindJSON(&args); err != nil {
  16. e.OutErr(c, e.ERR_INVALID_ARGS)
  17. return
  18. }
  19. res := ProjectComm(c, args)
  20. e.OutSuc(c, res, nil)
  21. return
  22. }
  23. func ProjectDetail(c *gin.Context) {
  24. var args md.ProjectReq
  25. if err := c.ShouldBindJSON(&args); err != nil {
  26. e.OutErr(c, e.ERR_INVALID_ARGS)
  27. return
  28. }
  29. args.P = "1"
  30. list := ProjectComm(c, args)
  31. res := map[string]interface{}{}
  32. if len(list) > 0 {
  33. res = list[0]
  34. }
  35. e.OutSuc(c, res, nil)
  36. return
  37. }
  38. func ProjectLikeList(c *gin.Context) {
  39. var args md.ProjectReq
  40. if err := c.ShouldBindJSON(&args); err != nil {
  41. e.OutErr(c, e.ERR_INVALID_ARGS)
  42. return
  43. }
  44. var project models.CampTaskProject
  45. svc.MasterDb(c).Where("id=?", project.Id).Get(&project)
  46. args.Id = ""
  47. args.Cid = utils.IntToStr(project.Cid)
  48. list := ProjectComm(c, args)
  49. res := map[string]interface{}{}
  50. if len(list) > 0 {
  51. res = list[0]
  52. }
  53. e.OutSuc(c, res, nil)
  54. return
  55. }
  56. func ProjectLike(c *gin.Context) {
  57. var args md.ProjectReq
  58. if err := c.ShouldBindJSON(&args); err != nil {
  59. e.OutErr(c, e.ERR_INVALID_ARGS)
  60. return
  61. }
  62. user := svc.GetUser(c)
  63. count, _ := svc.MasterDb(c).Where("uid=? and project_id=?", user.Info.Uid, args.Id).Count(&models.CampTaskProjectUserLike{})
  64. if count > 0 {
  65. e.OutErr(c, 400, e.NewErr(400, "意向已提交,负责人将与您对接"))
  66. return
  67. }
  68. var data = models.CampTaskProjectUserLike{
  69. Uid: user.Info.Uid,
  70. ProjectId: utils.StrToInt(args.Id),
  71. CreateTime: time.Now(),
  72. }
  73. svc.MasterDb(c).Insert(&data)
  74. var CampTaskProject models.CampTaskProject
  75. svc.MasterDb(c).Where("id=?", args.Id).Get(&CampTaskProject)
  76. CampTaskProject.SuccessNum++
  77. svc.MasterDb(c).Where("id=?", CampTaskProject.Id).Cols("success_num").Update(&CampTaskProject)
  78. e.OutSuc(c, "success", nil)
  79. return
  80. }
  81. func ProjectComm(c *gin.Context, args md.ProjectReq) []map[string]interface{} {
  82. args.Size = "10"
  83. list := make([]map[string]interface{}, 0)
  84. var data = make([]models.CampTaskProject, 0)
  85. sess := svc.MasterDb(c).Where("state=?", 1)
  86. if args.Cid != "" {
  87. sess.And("cid=?", args.Cid)
  88. }
  89. if args.Keyword != "" {
  90. sess.And("name like ?", "%"+args.Keyword+"%")
  91. }
  92. if args.Id != "" {
  93. sess.And("id=?", args.Id)
  94. }
  95. if args.Price != "" {
  96. ex := strings.Split(args.Price, "_")
  97. sess.And("money>=?", ex[0])
  98. sess.And("money<?", ex[1])
  99. }
  100. sort := "id desc"
  101. if args.Sort != "" {
  102. sort = strings.ReplaceAll(args.Sort, "_", " ")
  103. }
  104. sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy(sort).Find(&data)
  105. cate := make([]models.CampTaskProjectCate, 0)
  106. svc.MasterDb(c).Where("1=1").Find(&cate)
  107. user, _ := svc.GetDefaultUser(c, c.GetHeader("Authorization"))
  108. instructions := svc.SysCfgGet(c, "camp_instructions")
  109. for _, v := range data {
  110. enterpriseInfo := make(map[string]string)
  111. json.Unmarshal([]byte(v.EnterpriseInfo), &enterpriseInfo)
  112. enterpriseInfo1 := map[string]string{
  113. "name": enterpriseInfo["name"],
  114. "user_name": enterpriseInfo["user_name"],
  115. "address": enterpriseInfo["address"],
  116. }
  117. img := make([]string, 0)
  118. json.Unmarshal([]byte(v.Img), &img)
  119. firstImg := ""
  120. if len(img) > 0 {
  121. firstImg = img[0]
  122. }
  123. detailInfo := make([]string, 0)
  124. json.Unmarshal([]byte(v.DetailInfo), &detailInfo)
  125. label := make([]string, 0)
  126. json.Unmarshal([]byte(v.Label), &label)
  127. tmp := map[string]interface{}{
  128. "year": v.CreateTime.Format("2006") + "年",
  129. "id": utils.IntToStr(v.Id),
  130. "name": v.Name,
  131. "money": utils.Comm(v.Money),
  132. "img": firstImg,
  133. "video_info": v.VideoInfo,
  134. "img_list": img,
  135. "detail_info": detailInfo,
  136. "create_time": v.CreateTime.Format("2006-01-02 15:04:05"),
  137. "enterprise_info": enterpriseInfo1,
  138. "cate_name": "",
  139. "adv_word": v.AdvWord,
  140. "label": label,
  141. "is_like": "0",
  142. "instructions": instructions,
  143. }
  144. if user != nil {
  145. count, _ := svc.MasterDb(c).Where("uid=? and project_id=?", user.Info.Uid, v.Id).Count(&models.CampTaskProjectUserLike{})
  146. if count > 0 {
  147. tmp["is_like"] = "1"
  148. }
  149. }
  150. for _, v1 := range cate {
  151. if v1.Id == v.Cid {
  152. tmp["cate_name"] = v1.Name
  153. }
  154. }
  155. list = append(list, tmp)
  156. }
  157. return list
  158. }