劲创营---任务项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

155 lines
4.0 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. e.OutSuc(c, "success", nil)
  75. return
  76. }
  77. func ProjectComm(c *gin.Context, args md.ProjectReq) []map[string]interface{} {
  78. args.Size = "10"
  79. list := make([]map[string]interface{}, 0)
  80. var data = make([]models.CampTaskProject, 0)
  81. sess := svc.MasterDb(c).Where("state=?", 1)
  82. if args.Cid != "" {
  83. sess.And("cid=?", args.Cid)
  84. }
  85. if args.Id != "" {
  86. sess.And("id=?", args.Id)
  87. }
  88. if args.Price != "" {
  89. ex := strings.Split(args.Price, "_")
  90. sess.And("money>=?", ex[0])
  91. sess.And("money<?", ex[1])
  92. }
  93. sort := "id desc"
  94. if args.Sort != "" {
  95. sort = strings.ReplaceAll(args.Sort, "_", " ")
  96. }
  97. sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy(sort).Find(&data)
  98. cate := make([]models.CampTaskProjectCate, 0)
  99. svc.MasterDb(c).Where("1=1").Find(&cate)
  100. user, _ := svc.GetDefaultUser(c, c.GetHeader("Authorization"))
  101. for _, v := range data {
  102. enterpriseInfo := make(map[string]string)
  103. json.Unmarshal([]byte(v.EnterpriseInfo), &enterpriseInfo)
  104. enterpriseInfo1 := map[string]string{
  105. "name": enterpriseInfo["name"],
  106. "user_name": enterpriseInfo["user_name"],
  107. "address": enterpriseInfo["address"],
  108. }
  109. img := make([]string, 0)
  110. json.Unmarshal([]byte(v.Img), &img)
  111. firstImg := ""
  112. if len(img) > 0 {
  113. firstImg = img[0]
  114. }
  115. detailInfo := make([]string, 0)
  116. json.Unmarshal([]byte(v.DetailInfo), &detailInfo)
  117. label := make([]string, 0)
  118. json.Unmarshal([]byte(v.Label), &label)
  119. tmp := map[string]interface{}{
  120. "year": v.CreateTime.Format("2006") + "年",
  121. "id": utils.IntToStr(v.Id),
  122. "name": v.Name,
  123. "money": utils.Comm(v.Money),
  124. "img": firstImg,
  125. "video_info": v.VideoInfo,
  126. "img_list": img,
  127. "detail_info": detailInfo,
  128. "create_time": v.CreateTime.Format("2006-01-02 15:04:05"),
  129. "enterprise_info": enterpriseInfo1,
  130. "cate_name": "",
  131. "adv_word": v.AdvWord,
  132. "label": label,
  133. "is_like": "0",
  134. }
  135. if user != nil {
  136. count, _ := svc.MasterDb(c).Where("uid=? and project_id=?", user.Info.Uid, v.Id).Count(&models.CampTaskProjectUserLike{})
  137. if count > 0 {
  138. tmp["is_like"] = "1"
  139. }
  140. }
  141. for _, v1 := range cate {
  142. if v1.Id == v.Cid {
  143. tmp["cate_name"] = v1.Name
  144. }
  145. }
  146. list = append(list, tmp)
  147. }
  148. return list
  149. }