劲创营---任务项目
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

479 行
17 KiB

  1. package hdl
  2. import (
  3. "applet/app/comm/db"
  4. "applet/app/comm/e"
  5. "applet/app/comm/svc"
  6. "applet/app/comm/utils"
  7. md2 "applet/app/operator/md"
  8. "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/implement"
  9. "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models"
  10. "fmt"
  11. "github.com/gin-gonic/gin"
  12. "time"
  13. )
  14. func CenterBase(c *gin.Context) {
  15. user := svc.GetUser(c)
  16. allTaskCount, _ := svc.MasterDb(c).Where("uid=?", user.Info.Uid).Count(&models.CampTaskOperatorTask{})
  17. sql := `SELECT SUM(ctupor.amount) as amount,SUM(IF(ctupor.uid=%d,ctupo.payment,0)) as own_payment,SUM(IF(ctupor.uid=%d,1,0)) as own_count,SUM(IF(ctupor.uid=%d,ctupor.amount,0)) as own_amount,ctupor.level FROM camp_task_user_promotion_order_relate ctupor
  18. LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid
  19. WHERE ctupor.oid in(select oid from camp_task_user_promotion_order_relate where uid=%d ) GROUP BY ctupor.level`
  20. sql = fmt.Sprintf(sql, user.Info.Uid, user.Info.Uid, user.Info.Uid, user.Info.Uid)
  21. nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql)
  22. var firstAmount float64 = 0
  23. var secondAmount float64 = 0
  24. var ownAmount float64 = 0
  25. var count = 0
  26. var sum float64 = 0
  27. for _, v := range nativeString {
  28. if v["level"] == "0" {
  29. firstAmount += utils.StrToFloat64(v["amount"])
  30. }
  31. if v["level"] == "1" {
  32. secondAmount += utils.StrToFloat64(v["amount"])
  33. }
  34. ownAmount += utils.StrToFloat64(v["own_amount"])
  35. sum += utils.StrToFloat64(v["own_payment"])
  36. count += utils.StrToInt(v["own_count"])
  37. }
  38. firstLv := "0"
  39. secondLv := "0"
  40. thirdLv := "0"
  41. sql1 := `SELECT COUNT(*) as count,u.level FROM user_relate ur
  42. LEFT JOIN user u on u.uid=ur.uid
  43. WHERE ur.parent_uid=%d GROUP BY u.level`
  44. sql1 = fmt.Sprintf(sql1, user.Info.Uid)
  45. nativeString1, _ := db.QueryNativeString(svc.MasterDb(c), sql)
  46. for _, v := range nativeString1 {
  47. if v["level"] == "0" {
  48. firstLv = v["count"]
  49. }
  50. if v["level"] == "1" {
  51. secondLv = v["count"]
  52. }
  53. if v["level"] == "2" {
  54. thirdLv = v["count"]
  55. }
  56. }
  57. totalList := []map[string]string{
  58. {"name": "名下团长", "value": secondLv, "unit": "人", "type": "", "is_light": "0"},
  59. {"name": "名下普通用户", "value": firstLv, "unit": "人", "type": "", "is_light": "0"},
  60. {"name": "佣金总金额", "value": utils.Float64ToStr(sum), "unit": "¥", "type": "", "is_light": "1"},
  61. {"name": "推广总订单数", "value": utils.IntToStr(count), "unit": "", "type": "", "is_light": "0"},
  62. {"name": "我的分成", "value": utils.Float64ToStr(ownAmount), "unit": "¥", "type": "", "is_light": "1"},
  63. }
  64. if user.Info.Level == 3 {
  65. totalList = []map[string]string{
  66. {"name": "名下运营商", "value": thirdLv, "unit": "人", "type": "operator_detail", "is_light": "0"},
  67. {"name": "佣金总金额", "value": utils.Float64ToStr(sum), "unit": "¥", "type": "", "is_light": "1"},
  68. {"name": "推广总订单数", "value": utils.IntToStr(count), "unit": "", "type": "", "is_light": "0"},
  69. {"name": "我的分成", "value": utils.Float64ToStr(ownAmount), "unit": "¥", "type": "", "is_light": "1"},
  70. {"name": "项目数据", "value": "", "unit": "", "type": "project_detail", "is_light": "0"},
  71. }
  72. }
  73. myTask := make([]map[string]string, 0)
  74. NewCampTaskOperatorTaskDb := implement.NewCampTaskOperatorTaskDb(svc.MasterDb(c))
  75. myTaskList, _, _ := NewCampTaskOperatorTaskDb.FindCampTaskOperatorTaskGroup(user.Info.Uid, 1, 5, "")
  76. if myTaskList != nil {
  77. for _, v := range myTaskList {
  78. tmp := map[string]string{
  79. "id": utils.IntToStr(v.CampTaskOperatorTask.TaskId),
  80. "name": v.Name,
  81. "icon": svc.ImageFormat(c, v.Logo),
  82. }
  83. myTask = append(myTask, tmp)
  84. }
  85. }
  86. res := map[string]interface{}{
  87. "total_list": totalList,
  88. "my_task_count": utils.Int64ToStr(allTaskCount),
  89. "my_task": myTask,
  90. }
  91. e.OutSuc(c, res, nil)
  92. return
  93. }
  94. func CenterList(c *gin.Context) {
  95. var args md2.OperatorTaskReq
  96. if err := c.ShouldBindJSON(&args); err != nil {
  97. e.OutErr(c, e.ERR_INVALID_ARGS)
  98. return
  99. }
  100. user := svc.GetUser(c)
  101. where := ""
  102. if args.SettleStateType != "" {
  103. where += " and ctupo.settle_state=" + args.SettleStateType
  104. }
  105. if args.Cid != "" {
  106. where += " and ctl.first_cid=" + args.Cid
  107. }
  108. if args.TaskId != "" {
  109. where += " and ctupo.task_id=" + args.TaskId
  110. }
  111. if args.ApplyType != "" {
  112. where += " and ctupo.state=" + args.ApplyType
  113. }
  114. if args.StartTime != "" {
  115. where += " and ctupo.create_time>='" + args.StartTime + "'"
  116. }
  117. if args.EndTime != "" {
  118. where += " and ctupo.create_time<>>='" + args.EndTime + "'"
  119. }
  120. sqlCount := `select count(*) as count FROM camp_task_user_promotion_order_relate ctupor
  121. LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid
  122. LEFT JOIN camp_task_list ctl on ctupo.task_id=ctl.id
  123. WHERE ctupor.uid=%d %s`
  124. sqlCount = fmt.Sprintf(sqlCount, user.Info.Uid, where)
  125. nativeStringCount, _ := db.QueryNativeString(svc.MasterDb(c), sqlCount)
  126. var total = 0
  127. hotTask := make([]map[string]string, 0)
  128. for _, v := range nativeStringCount {
  129. total = utils.StrToInt(v["count"])
  130. }
  131. sql := `select ctl.name as task_name,ul.level_name,ctc.name as cate_name,ctupo.payment,ctupor.oid,ctupo.name as user_name,ctupo.phone as user_phone,
  132. ctupo.state,ctupo.settle_state,ctupo.create_time,ctupor.amount
  133. FROM camp_task_user_promotion_order_relate ctupor
  134. LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid
  135. LEFT JOIN camp_task_list ctl on ctupo.task_id=ctl.id
  136. LEFT JOIN user_level ul on ctupo.user_lv=ul.id
  137. LEFT JOIN camp_task_cate ctc on ctl.first_cid=ctc.id
  138. WHERE ctupor.uid=%d %s order by ctupo.id desc %s`
  139. sql = fmt.Sprintf(sql, user.Info.Uid, where, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size)
  140. nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql)
  141. stateType := []string{"审核中", "审核通过", "审核拒绝"}
  142. settleStateType := []string{"未结算", "结算成功", "结算失败"}
  143. for _, v := range nativeString {
  144. tmp := map[string]string{
  145. "task_name": v["task_name"],
  146. "level_name": v["level_name"],
  147. "cate_name": v["cate_name"],
  148. "oid": v["oid"],
  149. "user_name": v["user_name"],
  150. "user_phone": v["user_phone"],
  151. "state": v["state"],
  152. "state_str": stateType[utils.StrToInt(v["state"])],
  153. "settle_state_str": settleStateType[utils.StrToInt(v["settle_state"])],
  154. "settle_state": v["settle_state"],
  155. "create_time": v["create_time"],
  156. "amount": v["amount"],
  157. }
  158. hotTask = append(hotTask, tmp)
  159. }
  160. task := make([]map[string]string, 0)
  161. taskList := make([]models.CampTaskList, 0)
  162. svc.MasterDb(c).Where("is_delete=?", 0).OrderBy("sort desc,id desc").Find(&taskList)
  163. for _, v := range taskList {
  164. tmp := map[string]string{
  165. "name": v.Name, "value": utils.IntToStr(v.Id),
  166. }
  167. task = append(task, tmp)
  168. }
  169. taskCate := make([]map[string]string, 0)
  170. taskCateList := make([]models.CampTaskCate, 0)
  171. svc.MasterDb(c).Where(" is_show=?", 1).OrderBy("sort desc,id desc").Find(&taskCateList)
  172. for _, v := range taskCateList {
  173. if v.Pid > 0 {
  174. continue
  175. }
  176. tmp := map[string]string{
  177. "name": v.Name, "value": utils.IntToStr(v.Id),
  178. }
  179. taskCate = append(taskCate, tmp)
  180. }
  181. res := map[string]interface{}{
  182. "cate_list": taskCate,
  183. "task_cate_list": task,
  184. "settle_state_type": []map[string]string{
  185. {"name": "未结算", "value": "0"},
  186. {"name": "已结算", "value": "1"},
  187. {"name": "结算拒绝", "value": "2"},
  188. },
  189. "state_type": []map[string]string{
  190. {"name": "未审核", "value": "0"},
  191. {"name": "审核成功", "value": "1"},
  192. {"name": "审核拒绝", "value": "2"},
  193. },
  194. "total": total, "list": hotTask,
  195. }
  196. e.OutSuc(c, res, nil)
  197. return
  198. }
  199. func CenterOperatorList(c *gin.Context) {
  200. var args md2.OperatorTaskReq
  201. if err := c.ShouldBindJSON(&args); err != nil {
  202. e.OutErr(c, e.ERR_INVALID_ARGS)
  203. return
  204. }
  205. user := svc.GetUser(c)
  206. total := 0
  207. hotTask := make([]map[string]string, 0)
  208. sql := `SELECT
  209. u.nickname,
  210. u.uid,
  211. u.level_expire_at,
  212. u.level_arrive_at,
  213. COUNT(CASE WHEN u1.level = 0 THEN 1 END) as firstLv,
  214. COUNT(CASE WHEN u1.level = 1 THEN 1 END) as secondLv
  215. FROM user_relate ur
  216. LEFT JOIN user u ON u.uid = ur.uid
  217. LEFT JOIN user_relate ur1 ON ur1.parent_uid = ur.uid
  218. LEFT JOIN user u1 ON u1.uid = ur1.uid
  219. WHERE ur.parent_uid = %d AND u.level = 2
  220. GROUP BY u.uid, u.nickname, u.level_expire_at, u.level_arrive_at
  221. ORDER BY u.uid DESC %s`
  222. sql = fmt.Sprintf(sql, user.Info.Uid, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size)
  223. nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql)
  224. for _, v := range nativeString {
  225. timer := "0天"
  226. leave := utils.TimeStdParseUnix(v["level_expire_at"]) - time.Now().Unix()
  227. if leave > 0 {
  228. timer = utils.Int64ToStr(leave/86400) + "天"
  229. }
  230. if v["level_expire_at"] == v["level_arrive_at"] {
  231. timer = "永久"
  232. }
  233. commission, _ := svc.MasterDb(c).Where("uid=?", v["uid"]).Sum(&models.CampTaskUserPromotionOrderRelate{}, "amount")
  234. orderCount, _ := svc.MasterDb(c).Where("uid=?", v["uid"]).Count(&models.CampTaskUserPromotionOrderRelate{})
  235. tmp := map[string]string{
  236. "uid": v["uid"],
  237. "nickname": v["nickname"],
  238. "timer": timer,
  239. "first_lv_count": v["firstLv"],
  240. "second_lv_count": v["secondLv"],
  241. "order_count": utils.Int64ToStr(orderCount),
  242. "commission": utils.Float64ToStr(commission),
  243. }
  244. hotTask = append(hotTask, tmp)
  245. }
  246. sqlCount := `SELECT COUNT(*) as count,u.level FROM user_relate ur
  247. LEFT JOIN user u on u.uid=ur.uid
  248. WHERE ur.parent_uid=%d and u.level=2`
  249. sqlCount = fmt.Sprintf(sqlCount, user.Info.Uid)
  250. nativeStringCount, _ := db.QueryNativeString(svc.MasterDb(c), sqlCount)
  251. for _, v := range nativeStringCount {
  252. total = utils.StrToInt(v["count"])
  253. }
  254. res := map[string]interface{}{
  255. "total": total, "list": hotTask,
  256. }
  257. e.OutSuc(c, res, nil)
  258. return
  259. }
  260. func CenterOperatorDetailList(c *gin.Context) {
  261. var args md2.OperatorTaskReq
  262. if err := c.ShouldBindJSON(&args); err != nil {
  263. e.OutErr(c, e.ERR_INVALID_ARGS)
  264. return
  265. }
  266. total := 0
  267. hotTask := make([]map[string]string, 0)
  268. sql := `SELECT u.nickname,u.uid,u.phone,u.create_at
  269. FROM user_relate ur
  270. LEFT JOIN user u on u.uid=ur.uid
  271. WHERE ur.parent_uid=%s and u.level=%s order by u.uid desc %s`
  272. sql = fmt.Sprintf(sql, args.Uid, args.Level, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size)
  273. nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql)
  274. for _, v := range nativeString {
  275. tmp := map[string]string{
  276. "uid": v["uid"],
  277. "nickname": v["nickname"],
  278. "phone": v["phone"],
  279. "create_time": v["create_at"],
  280. }
  281. hotTask = append(hotTask, tmp)
  282. }
  283. sqlCount := `SELECT COUNT(*) as count,u.level FROM user_relate ur
  284. LEFT JOIN user u on u.uid=ur.uid
  285. WHERE ur.parent_uid=%s and u.level=%s`
  286. sqlCount = fmt.Sprintf(sqlCount, args.Uid, args.Level)
  287. nativeStringCount, _ := db.QueryNativeString(svc.MasterDb(c), sqlCount)
  288. for _, v := range nativeStringCount {
  289. total = utils.StrToInt(v["count"])
  290. }
  291. res := map[string]interface{}{
  292. "total": total, "list": hotTask,
  293. }
  294. e.OutSuc(c, res, nil)
  295. return
  296. }
  297. func CenterOperatorDetailTaskList(c *gin.Context) {
  298. var args md2.OperatorTaskReq
  299. if err := c.ShouldBindJSON(&args); err != nil {
  300. e.OutErr(c, e.ERR_INVALID_ARGS)
  301. return
  302. }
  303. where := ""
  304. if args.SettleStateType != "" {
  305. where += " and ctupo.settle_state=" + args.SettleStateType
  306. }
  307. if args.Cid != "" {
  308. where += " and ctl.first_cid=" + args.Cid
  309. }
  310. if args.TaskId != "" {
  311. where += " and ctupo.task_id=" + args.TaskId
  312. }
  313. if args.ApplyType != "" {
  314. where += " and ctupo.state=" + args.ApplyType
  315. }
  316. if args.StartTime != "" {
  317. where += " and ctupo.create_time>='" + args.StartTime + "'"
  318. }
  319. if args.EndTime != "" {
  320. where += " and ctupo.create_time<>>='" + args.EndTime + "'"
  321. }
  322. sqlCount := `select count(*) as count FROM camp_task_user_promotion_order_relate ctupor
  323. LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid
  324. LEFT JOIN camp_task_list ctl on ctupo.task_id=ctl.id
  325. WHERE ctupor.uid=%s %s`
  326. sqlCount = fmt.Sprintf(sqlCount, args.Uid, where)
  327. nativeStringCount, _ := db.QueryNativeString(svc.MasterDb(c), sqlCount)
  328. var total = 0
  329. hotTask := make([]map[string]string, 0)
  330. for _, v := range nativeStringCount {
  331. total = utils.StrToInt(v["count"])
  332. }
  333. sql := `select ctl.name as task_name,ul.level_name,ctc.name as cate_name,ctupo.payment,ctupor.oid,ctupo.name as user_name,ctupo.phone as user_phone,
  334. ctupo.state,ctupo.settle_state,ctupo.create_time,ctupor.amount
  335. FROM camp_task_user_promotion_order_relate ctupor
  336. LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid
  337. LEFT JOIN camp_task_list ctl on ctupo.task_id=ctl.id
  338. LEFT JOIN user_level ul on ctupo.user_lv=ul.id
  339. LEFT JOIN camp_task_cate ctc on ctl.first_cid=ctc.id
  340. WHERE ctupor.uid=%s %s order by ctupo.id desc %s`
  341. sql = fmt.Sprintf(sql, args.Uid, where, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size)
  342. nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql)
  343. stateType := []string{"审核中", "审核通过", "审核拒绝"}
  344. settleStateType := []string{"未结算", "结算成功", "结算失败"}
  345. for _, v := range nativeString {
  346. tmp := map[string]string{
  347. "task_name": v["task_name"],
  348. "level_name": v["level_name"],
  349. "cate_name": v["cate_name"],
  350. "oid": v["oid"],
  351. "user_name": v["user_name"],
  352. "user_phone": v["user_phone"],
  353. "state": v["state"],
  354. "state_str": stateType[utils.StrToInt(v["state"])],
  355. "settle_state_str": settleStateType[utils.StrToInt(v["settle_state"])],
  356. "settle_state": v["settle_state"],
  357. "create_time": v["create_time"],
  358. "amount": v["amount"],
  359. }
  360. hotTask = append(hotTask, tmp)
  361. }
  362. task := make([]map[string]string, 0)
  363. taskList := make([]models.CampTaskList, 0)
  364. svc.MasterDb(c).Where("is_delete=?", 0).OrderBy("sort desc,id desc").Find(&taskList)
  365. for _, v := range taskList {
  366. tmp := map[string]string{
  367. "name": v.Name, "value": utils.IntToStr(v.Id),
  368. }
  369. task = append(task, tmp)
  370. }
  371. taskCate := make([]map[string]string, 0)
  372. taskCateList := make([]models.CampTaskCate, 0)
  373. svc.MasterDb(c).Where(" is_show=?", 1).OrderBy("sort desc,id desc").Find(&taskCateList)
  374. for _, v := range taskCateList {
  375. if v.Pid > 0 {
  376. continue
  377. }
  378. tmp := map[string]string{
  379. "name": v.Name, "value": utils.IntToStr(v.Id),
  380. }
  381. taskCate = append(taskCate, tmp)
  382. }
  383. res := map[string]interface{}{
  384. "cate_list": taskCate,
  385. "task_cate_list": task,
  386. "settle_state_type": []map[string]string{
  387. {"name": "未结算", "value": "0"},
  388. {"name": "已结算", "value": "1"},
  389. {"name": "结算拒绝", "value": "2"},
  390. },
  391. "state_type": []map[string]string{
  392. {"name": "未审核", "value": "0"},
  393. {"name": "审核成功", "value": "1"},
  394. {"name": "审核拒绝", "value": "2"},
  395. },
  396. "total": total, "list": hotTask,
  397. }
  398. e.OutSuc(c, res, nil)
  399. return
  400. }
  401. func CenterOperatorProjectList(c *gin.Context) {
  402. var args md2.OperatorTaskReq
  403. if err := c.ShouldBindJSON(&args); err != nil {
  404. e.OutErr(c, e.ERR_INVALID_ARGS)
  405. return
  406. }
  407. user := svc.GetUser(c)
  408. where := ""
  409. if args.ApplyType != "" {
  410. where += " and ctpul.state=" + args.ApplyType
  411. }
  412. if args.StartTime != "" {
  413. where += " and ctpul.create_time>='" + args.StartTime + "'"
  414. }
  415. if args.EndTime != "" {
  416. where += " and ctpul.create_time<>>='" + args.EndTime + "'"
  417. }
  418. sqlCount := `select count(*) as count FROM camp_task_project_user_like ctpul
  419. WHERE uid in(select uid from user_relate where parent_uid=%d) %s`
  420. sqlCount = fmt.Sprintf(sqlCount, user.Info.Uid, where)
  421. nativeStringCount, _ := db.QueryNativeString(svc.MasterDb(c), sqlCount)
  422. var total = 0
  423. hotTask := make([]map[string]string, 0)
  424. for _, v := range nativeStringCount {
  425. total = utils.StrToInt(v["count"])
  426. }
  427. sql := `select ctpul.state,ctpl.name as project_name,u.nickname,u.phone,ctpul.create_time,ctpul.remark,ctpul.id
  428. FROM camp_task_project_user_like ctpul
  429. LEFT JOIN camp_task_project ctpl on ctpul.project_id=ctpl.id
  430. LEFT JOIN user u on ctpul.uid=u.uid
  431. WHERE ctpul.uid in(select uid from user_relate where parent_uid=%d) %s order by ctpul.id desc %s`
  432. sql = fmt.Sprintf(sql, user.Info.Uid, where, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size)
  433. nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql)
  434. for _, v := range nativeString {
  435. tmp := map[string]string{
  436. "project_name": v["project_name"],
  437. "id": v["id"],
  438. "user_name": v["nickname"],
  439. "user_phone": v["phone"],
  440. "create_time": v["create_time"],
  441. "remark": v["remark"],
  442. }
  443. hotTask = append(hotTask, tmp)
  444. }
  445. res := map[string]interface{}{
  446. "total": total, "list": hotTask,
  447. }
  448. e.OutSuc(c, res, nil)
  449. return
  450. }
  451. func CenterOperatorProjectDel(c *gin.Context) {
  452. var args map[string]string
  453. if err := c.ShouldBindJSON(&args); err != nil {
  454. e.OutErr(c, e.ERR_INVALID_ARGS)
  455. return
  456. }
  457. svc.MasterDb(c).Where("id=?", args["id"]).Delete(&models.CampTaskProjectUserLike{})
  458. e.OutSuc(c, "success", nil)
  459. return
  460. }
  461. func CenterOperatorProjectRemark(c *gin.Context) {
  462. var args map[string]string
  463. if err := c.ShouldBindJSON(&args); err != nil {
  464. e.OutErr(c, e.ERR_INVALID_ARGS)
  465. return
  466. }
  467. svc.MasterDb(c).Where("id=?", args["id"]).Cols("remark").Update(&models.CampTaskProjectUserLike{Remark: args["remark"]})
  468. e.OutSuc(c, "success", nil)
  469. return
  470. }