劲创营---任务项目
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.
 
 
 

252 lines
8.3 KiB

  1. package svc
  2. import (
  3. "applet/app/comm/db"
  4. "applet/app/comm/e"
  5. "applet/app/comm/svc"
  6. "applet/app/comm/utils"
  7. "applet/app/operator/md"
  8. "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/lib/comm_plan"
  9. md2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md"
  10. svc2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/svc"
  11. "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/implement"
  12. "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models"
  13. "encoding/json"
  14. "fmt"
  15. "github.com/gin-gonic/gin"
  16. "time"
  17. )
  18. func TaskUp(c *gin.Context) {
  19. var args map[string]string
  20. if err := c.ShouldBindJSON(&args); err != nil {
  21. e.OutErr(c, e.ERR_INVALID_ARGS)
  22. return
  23. }
  24. user := svc.GetUser(c)
  25. update, _ := svc.MasterDb(c).Where("task_id=? and uid=?", args["id"], user.Info.Uid).Count(&models.CampTaskOperatorTask{})
  26. if update > 0 {
  27. e.OutErr(c, 400, e.NewErr(400, "该任务已上架"))
  28. return
  29. }
  30. var data = models.CampTaskOperatorTask{
  31. TaskId: utils.StrToInt(args["id"]),
  32. Uid: user.Info.Uid,
  33. CreateTime: time.Now(),
  34. }
  35. insert, _ := svc.MasterDb(c).Insert(&data)
  36. if insert == 0 {
  37. e.OutErr(c, 400, e.NewErr(400, "上架失败"))
  38. return
  39. }
  40. e.OutSuc(c, "success", nil)
  41. return
  42. }
  43. func TaskDown(c *gin.Context) {
  44. var args map[string]string
  45. if err := c.ShouldBindJSON(&args); err != nil {
  46. e.OutErr(c, e.ERR_INVALID_ARGS)
  47. return
  48. }
  49. user := svc.GetUser(c)
  50. update, _ := svc.MasterDb(c).Where("task_id=? and uid=?", args["id"], user.Info.Uid).Delete(&models.CampTaskOperatorTask{})
  51. if update == 0 {
  52. e.OutErr(c, 400, e.NewErr(400, "下架失败"))
  53. return
  54. }
  55. e.OutSuc(c, "success", nil)
  56. return
  57. }
  58. func TaskList(c *gin.Context) {
  59. var args md.TaskListReq
  60. if err := c.ShouldBindJSON(&args); err != nil {
  61. e.OutErr(c, e.ERR_INVALID_ARGS)
  62. return
  63. }
  64. user := svc.GetUser(c)
  65. hotTask := make([]map[string]interface{}, 0)
  66. var hotTaskList []models.CampTaskList
  67. sess := svc.MasterDb(c).Where("up_down_state=?", 1)
  68. if args.Cid != "" {
  69. sess.And("first_cid=?", args.Cid)
  70. }
  71. if args.SettleType != "" {
  72. sess.And("settle_type=?", args.SettleType)
  73. }
  74. total, _ := sess.Limit(utils.StrToInt(args.P), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("success_num desc,id desc").FindAndCount(&hotTaskList)
  75. for _, v := range hotTaskList {
  76. label := make([]string, 0)
  77. DetailInfo := make([]string, 0)
  78. tmp := map[string]interface{}{
  79. "id": utils.IntToStr(v.Id),
  80. "is_check": "0",
  81. "name": v.Name,
  82. "price": v.Price,
  83. "num": utils.IntToStr(v.Num),
  84. "icon": svc.ImageFormat(c, v.Logo),
  85. "timer": v.StartTime.Format("2006-01-02") + "至" + v.EndTime.Format("2006-01-02"),
  86. "detail_info": DetailInfo,
  87. "label": label,
  88. }
  89. taskDetailDb := implement.NewCampTaskDetailDb(svc.MasterDb(c))
  90. taskDetail, _ := taskDetailDb.GetCampTaskDetailById(utils.IntToStr(v.Id))
  91. if taskDetail != nil {
  92. json.Unmarshal([]byte(taskDetail.DetailInfo), &DetailInfo)
  93. tmp["detail_info"] = DetailInfo
  94. }
  95. json.Unmarshal([]byte(v.Label), &label)
  96. counts, _ := svc.MasterDb(c).Where("uid=? and task_id=?", user.Info.Uid, v.Id).Count(&models.CampTaskOperatorTask{})
  97. if counts > 0 {
  98. tmp["is_check"] = "1"
  99. }
  100. hotTask = append(hotTask, tmp)
  101. }
  102. taskCate := make([]map[string]string, 0)
  103. taskCateList := make([]models.CampTaskCate, 0)
  104. svc.MasterDb(c).Where(" is_show=?", 1).OrderBy("sort desc,id desc").Find(&taskCateList)
  105. for _, v := range taskCateList {
  106. if v.Pid > 0 {
  107. continue
  108. }
  109. tmp := map[string]string{
  110. "name": v.Name, "value": utils.IntToStr(v.Id),
  111. }
  112. taskCate = append(taskCate, tmp)
  113. }
  114. res := map[string]interface{}{
  115. "cate_list": taskCate,
  116. "settle_type": []map[string]string{
  117. {"name": "T+1", "value": "0"},
  118. {"name": "T+7", "value": "1"},
  119. {"name": "月结", "value": "2"},
  120. },
  121. "total": total, "list": hotTask,
  122. }
  123. e.OutSuc(c, res, nil)
  124. return
  125. }
  126. func TaskDetail(c *gin.Context) {
  127. var args md.TaskListReq
  128. if err := c.ShouldBindJSON(&args); err != nil {
  129. e.OutErr(c, e.ERR_INVALID_ARGS)
  130. return
  131. }
  132. user := svc.GetUser(c)
  133. var hotTaskList models.CampTaskList
  134. svc.MasterDb(c).Where("id=?", args.Id).Get(&hotTaskList)
  135. label := make([]string, 0)
  136. DetailInfo := make([]string, 0)
  137. tmp := map[string]interface{}{
  138. "id": utils.IntToStr(hotTaskList.Id),
  139. "is_check": "0",
  140. "name": hotTaskList.Name,
  141. "price": hotTaskList.Price,
  142. "num": utils.IntToStr(hotTaskList.Num),
  143. "icon": svc.ImageFormat(c, hotTaskList.Logo),
  144. "timer": hotTaskList.StartTime.Format("2006-01-02") + "至" + hotTaskList.EndTime.Format("2006-01-02"),
  145. "detail_info": DetailInfo,
  146. "label": label,
  147. }
  148. taskDetailDb := implement.NewCampTaskDetailDb(svc.MasterDb(c))
  149. taskDetail, _ := taskDetailDb.GetCampTaskDetailById(utils.IntToStr(hotTaskList.Id))
  150. if taskDetail != nil {
  151. json.Unmarshal([]byte(taskDetail.DetailInfo), &DetailInfo)
  152. tmp["detail_info"] = DetailInfo
  153. }
  154. json.Unmarshal([]byte(hotTaskList.Label), &label)
  155. counts, _ := svc.MasterDb(c).Where("uid=? and task_id=?", user.Info.Uid, hotTaskList.Id).Count(&models.CampTaskOperatorTask{})
  156. if counts > 0 {
  157. tmp["is_check"] = "1"
  158. }
  159. e.OutSuc(c, tmp, nil)
  160. return
  161. }
  162. func TaskUpList(c *gin.Context) {
  163. var args md.OperatorTaskReq
  164. if err := c.ShouldBindJSON(&args); err != nil {
  165. e.OutErr(c, e.ERR_INVALID_ARGS)
  166. return
  167. }
  168. user := svc.GetUser(c)
  169. sqlCount := `select count(*) as count FROM camp_task_operator_task
  170. WHERE uid=%d `
  171. sqlCount = fmt.Sprintf(sqlCount, user.Info.Uid)
  172. nativeStringCount, _ := db.QueryNativeString(svc.MasterDb(c), sqlCount)
  173. var total = 0
  174. hotTask := make([]map[string]string, 0)
  175. for _, v := range nativeStringCount {
  176. total = utils.StrToInt(v["count"])
  177. }
  178. sql := `select ctl.name as task_name,ctl.price as price,ctot.create_time,ctl.up_down_state,ctl.is_delete,ctot.id,ctot.task_id
  179. FROM camp_task_operator_task ctot
  180. LEFT JOIN camp_task_list ctl on ctot.task_id=ctl.id
  181. WHERE ctot.uid=%d order by ctot.id desc %s`
  182. sql = fmt.Sprintf(sql, user.Info.Uid, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size)
  183. nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql)
  184. plan, commission1, virtualCoinMoneyRate := svc2.GetAllPlan(svc.MasterDb(c), c.GetString("mid"))
  185. rmd := &md2.CommissionParam{}
  186. cfg, _ := svc2.GetPlanCfg(svc.MasterDb(c), "camp_task", c.GetString("mid"), plan, commission1, virtualCoinMoneyRate, rmd)
  187. for _, v := range nativeString {
  188. firstPrice := "0"
  189. secondPrice := "0"
  190. if cfg != nil {
  191. fee, _, _, _ := svc2.CommFee(utils.StrToFloat64(v["price"]), cfg, "commission", rmd)
  192. tmpPrice, _, _, _ := comm_plan.CalReturnAmountAndRatio(0, 0, 0, "own", fee, 0, cfg)
  193. firstPrice = utils.Float64ToStr(tmpPrice)
  194. tmpPrice1, _, _, _ := comm_plan.CalReturnAmountAndRatio(1, 0, 0, "own", fee, 0, cfg)
  195. secondPrice = utils.Float64ToStr(tmpPrice1)
  196. }
  197. orderCount := "0"
  198. commission := "0"
  199. sql1 := `select COUNT(*) as count,SUM(ctupor.amount) as amount
  200. FROM camp_task_user_promotion_order_relate ctupor
  201. LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid
  202. WHERE ctupor.uid=%d and ctupo.task_id=%s`
  203. sql1 = fmt.Sprintf(sql1, user.Info.Uid, v["task_id"])
  204. queryNativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql1)
  205. for _, v1 := range queryNativeString {
  206. orderCount = v1["count"]
  207. commission = v1["amount"]
  208. }
  209. tmp := map[string]string{
  210. "task_name": v["task_name"],
  211. "id": v["id"],
  212. "base_price": v["price"],
  213. "first_price": firstPrice,
  214. "second_price": secondPrice,
  215. "create_time": v["create_time"],
  216. "order_count": orderCount,
  217. "commission": commission,
  218. }
  219. hotTask = append(hotTask, tmp)
  220. }
  221. task := make([]map[string]string, 0)
  222. taskList := make([]models.CampTaskList, 0)
  223. svc.MasterDb(c).Where("state=?", 1).OrderBy("sort desc,id desc").Find(&taskList)
  224. for _, v := range taskList {
  225. tmp := map[string]string{
  226. "name": v.Name, "value": utils.IntToStr(v.Id),
  227. }
  228. task = append(task, tmp)
  229. }
  230. taskCate := make([]map[string]string, 0)
  231. taskCateList := make([]models.CampTaskCate, 0)
  232. svc.MasterDb(c).Where(" is_show=?", 1).OrderBy("sort desc,id desc").Find(&taskCateList)
  233. for _, v := range taskCateList {
  234. if v.Pid > 0 {
  235. continue
  236. }
  237. tmp := map[string]string{
  238. "name": v.Name, "value": utils.IntToStr(v.Id),
  239. }
  240. taskCate = append(taskCate, tmp)
  241. }
  242. res := map[string]interface{}{
  243. "total": total, "list": hotTask,
  244. }
  245. e.OutSuc(c, res, nil)
  246. return
  247. }