package hdl import ( "applet/app/comm/db" "applet/app/comm/e" "applet/app/comm/svc" "applet/app/comm/utils" md2 "applet/app/operator/md" "applet/app/store/md" "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/implement" "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" "fmt" "github.com/gin-gonic/gin" "time" ) func CenterBase(c *gin.Context) { user := svc.GetUser(c) allTaskCount, _ := svc.MasterDb(c).Where("uid=?", user.Info.Uid).Count(&models.CampTaskOperatorTask{}) 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 LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid WHERE ctupor.oid in(select oid from camp_task_user_promotion_order_relate where uid=%d ) GROUP BY ctupor.level` sql = fmt.Sprintf(sql, user.Info.Uid, user.Info.Uid, user.Info.Uid, user.Info.Uid) nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) var firstAmount float64 = 0 var secondAmount float64 = 0 var ownAmount float64 = 0 var count = 0 var sum float64 = 0 for _, v := range nativeString { if v["level"] == "0" { firstAmount += utils.StrToFloat64(v["amount"]) } if v["level"] == "1" { secondAmount += utils.StrToFloat64(v["amount"]) } ownAmount += utils.StrToFloat64(v["own_amount"]) sum += utils.StrToFloat64(v["own_payment"]) count += utils.StrToInt(v["own_count"]) } firstLv := "0" secondLv := "0" thirdLv := "0" sql1 := `SELECT COUNT(*) as count,u.level FROM user_relate ur LEFT JOIN user u on u.uid=ur.uid WHERE ur.parent_uid=%d GROUP BY u.level` sql1 = fmt.Sprintf(sql1, user.Info.Uid) nativeString1, _ := db.QueryNativeString(svc.MasterDb(c), sql) for _, v := range nativeString1 { if v["level"] == "0" { firstLv = v["count"] } if v["level"] == "1" { secondLv = v["count"] } if v["level"] == "2" { thirdLv = v["count"] } } totalList := []map[string]string{ {"name": "名下团长", "value": secondLv, "unit": "人", "type": "", "is_light": "0"}, {"name": "名下普通用户", "value": firstLv, "unit": "人", "type": "", "is_light": "0"}, {"name": "佣金总金额", "value": utils.Float64ToStr(sum), "unit": "¥", "type": "", "is_light": "1"}, {"name": "推广总订单数", "value": utils.IntToStr(count), "unit": "", "type": "", "is_light": "0"}, {"name": "我的分成", "value": utils.Float64ToStr(ownAmount), "unit": "¥", "type": "", "is_light": "1"}, } if user.Info.Level == 3 { totalList = []map[string]string{ {"name": "名下运营商", "value": thirdLv, "unit": "人", "type": "operator_detail", "is_light": "0"}, {"name": "佣金总金额", "value": utils.Float64ToStr(sum), "unit": "¥", "type": "", "is_light": "1"}, {"name": "推广总订单数", "value": utils.IntToStr(count), "unit": "", "type": "", "is_light": "0"}, {"name": "我的分成", "value": utils.Float64ToStr(ownAmount), "unit": "¥", "type": "", "is_light": "1"}, {"name": "项目数据", "value": "", "unit": "", "type": "project_detail", "is_light": "0"}, } } myTask := make([]map[string]string, 0) NewCampTaskOperatorTaskDb := implement.NewCampTaskOperatorTaskDb(svc.MasterDb(c)) myTaskList, _, _ := NewCampTaskOperatorTaskDb.FindCampTaskOperatorTaskGroup(user.Info.Uid, 1, 5, "") if myTaskList != nil { for _, v := range myTaskList { tmp := map[string]string{ "id": utils.IntToStr(v.CampTaskOperatorTask.TaskId), "name": v.Name, "icon": svc.ImageFormat(c, v.Logo), } myTask = append(myTask, tmp) } } res := map[string]interface{}{ "total_list": totalList, "my_task_count": utils.Int64ToStr(allTaskCount), "my_task": myTask, } e.OutSuc(c, res, nil) return } func CenterList(c *gin.Context) { var args md2.OperatorTaskReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } user := svc.GetUser(c) where := "" if args.SettleStateType != "" { where += " and ctupo.settle_state=" + args.SettleStateType } if args.Cid != "" { where += " and ctl.first_cid=" + args.Cid } if args.TaskId != "" { where += " and ctupo.task_id=" + args.TaskId } if args.ApplyType != "" { where += " and ctupo.state=" + args.ApplyType } if args.StartTime != "" { where += " and ctupo.create_time>='" + args.StartTime + "'" } if args.EndTime != "" { where += " and ctupo.create_time<>>='" + args.EndTime + "'" } sqlCount := `select count(*) as count FROM camp_task_user_promotion_order_relate ctupor LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid LEFT JOIN camp_task_list ctl on ctupo.task_id=ctl.id WHERE ctupor.uid=%d %s` sqlCount = fmt.Sprintf(sqlCount, user.Info.Uid, where) nativeStringCount, _ := db.QueryNativeString(svc.MasterDb(c), sqlCount) var total = 0 hotTask := make([]map[string]string, 0) for _, v := range nativeStringCount { total = utils.StrToInt(v["count"]) } 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, ctupo.state,ctupo.settle_state,ctupo.create_time,ctupor.amount FROM camp_task_user_promotion_order_relate ctupor LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid LEFT JOIN camp_task_list ctl on ctupo.task_id=ctl.id LEFT JOIN user_level ul on ctupo.user_lv=ul.id LEFT JOIN camp_task_cate ctc on ctl.first_cid=ctc.id WHERE ctupor.uid=%d %s order by ctupo.id desc %s` sql = fmt.Sprintf(sql, user.Info.Uid, where, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size) nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) stateType := []string{"审核中", "审核通过", "审核拒绝"} settleStateType := []string{"未结算", "结算成功", "结算失败"} for _, v := range nativeString { tmp := map[string]string{ "task_name": v["task_name"], "level_name": v["level_name"], "cate_name": v["cate_name"], "oid": v["oid"], "user_name": v["user_name"], "user_phone": v["user_phone"], "state": v["state"], "state_str": stateType[utils.StrToInt(v["state"])], "settle_state_str": settleStateType[utils.StrToInt(v["settle_state"])], "settle_state": v["settle_state"], "create_time": v["create_time"], "amount": v["amount"], } hotTask = append(hotTask, tmp) } task := make([]map[string]string, 0) taskList := make([]models.CampTaskList, 0) svc.MasterDb(c).Where("is_delete=?", 0).OrderBy("sort desc,id desc").Find(&taskList) for _, v := range taskList { tmp := map[string]string{ "name": v.Name, "value": utils.IntToStr(v.Id), } task = append(task, tmp) } taskCate := make([]map[string]string, 0) taskCateList := make([]models.CampTaskCate, 0) svc.MasterDb(c).Where(" is_show=?", 1).OrderBy("sort desc,id desc").Find(&taskCateList) for _, v := range taskCateList { if v.Pid > 0 { continue } tmp := map[string]string{ "name": v.Name, "value": utils.IntToStr(v.Id), } taskCate = append(taskCate, tmp) } res := map[string]interface{}{ "cate_list": taskCate, "task_cate_list": task, "settle_state_type": []map[string]string{ {"name": "未结算", "value": "0"}, {"name": "已结算", "value": "1"}, {"name": "结算拒绝", "value": "2"}, }, "state_type": []map[string]string{ {"name": "未审核", "value": "0"}, {"name": "审核成功", "value": "1"}, {"name": "审核拒绝", "value": "2"}, }, "total": total, "list": hotTask, } e.OutSuc(c, res, nil) return } func CenterOperatorList(c *gin.Context) { var args md2.OperatorTaskReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } user := svc.GetUser(c) total := 0 hotTask := make([]map[string]string, 0) sql := `SELECT u.nickname, u.uid, u.level_expire_at, u.level_arrive_at, COUNT(CASE WHEN u1.level = 0 THEN 1 END) as firstLv, COUNT(CASE WHEN u1.level = 1 THEN 1 END) as secondLv FROM user_relate ur LEFT JOIN user u ON u.uid = ur.uid LEFT JOIN user_relate ur1 ON ur1.parent_uid = ur.uid LEFT JOIN user u1 ON u1.uid = ur1.uid WHERE ur.parent_uid = %d AND u.level = 2 GROUP BY u.uid, u.nickname, u.level_expire_at, u.level_arrive_at ORDER BY u.uid DESC %s` sql = fmt.Sprintf(sql, user.Info.Uid, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size) nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) for _, v := range nativeString { timer := "0天" leave := utils.TimeStdParseUnix(v["level_expire_at"]) - time.Now().Unix() if leave > 0 { timer = utils.Int64ToStr(leave/86400) + "天" } if v["level_expire_at"] == v["level_arrive_at"] { timer = "永久" } commission, _ := svc.MasterDb(c).Where("uid=?", v["uid"]).Sum(&models.CampTaskUserPromotionOrderRelate{}, "amount") orderCount, _ := svc.MasterDb(c).Where("uid=?", v["uid"]).Count(&models.CampTaskUserPromotionOrderRelate{}) tmp := map[string]string{ "uid": v["uid"], "nickname": v["nickname"], "timer": timer, "first_lv_count": v["firstLv"], "second_lv_count": v["secondLv"], "order_count": utils.Int64ToStr(orderCount), "commission": utils.Float64ToStr(commission), } hotTask = append(hotTask, tmp) } sqlCount := `SELECT COUNT(*) as count,u.level FROM user_relate ur LEFT JOIN user u on u.uid=ur.uid WHERE ur.parent_uid=%d and u.level=2` sqlCount = fmt.Sprintf(sqlCount, user.Info.Uid) nativeStringCount, _ := db.QueryNativeString(svc.MasterDb(c), sql) for _, v := range nativeStringCount { total = utils.StrToInt(v["count"]) } res := map[string]interface{}{ "total": total, "list": hotTask, } e.OutSuc(c, res, nil) return } func CenterOperatorDetailList(c *gin.Context) { var args md2.OperatorTaskReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } total := 0 hotTask := make([]map[string]string, 0) sql := `SELECT u.nickname,u.uid,u.phone,u.create_at FROM user_relate ur LEFT JOIN user u on u.uid=ur.uid WHERE ur.parent_uid=%s and u.level=%s order by u.uid desc %s` sql = fmt.Sprintf(sql, args.Uid, args.Level, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size) nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) for _, v := range nativeString { tmp := map[string]string{ "uid": v["uid"], "nickname": v["nickname"], "phone": v["phone"], "create_time": v["create_at"], } hotTask = append(hotTask, tmp) } sqlCount := `SELECT COUNT(*) as count,u.level FROM user_relate ur LEFT JOIN user u on u.uid=ur.uid WHERE ur.parent_uid=%s and u.level=%s` sqlCount = fmt.Sprintf(sqlCount, args.Uid, args.Level) nativeStringCount, _ := db.QueryNativeString(svc.MasterDb(c), sqlCount) for _, v := range nativeStringCount { total = utils.StrToInt(v["count"]) } res := map[string]interface{}{ "total": total, "list": hotTask, } e.OutSuc(c, res, nil) return } func CenterOperatorDetailTaskList(c *gin.Context) { var args md2.OperatorTaskReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } where := "" if args.SettleStateType != "" { where += " and ctupo.settle_state=" + args.SettleStateType } if args.Cid != "" { where += " and ctl.first_cid=" + args.Cid } if args.TaskId != "" { where += " and ctupo.task_id=" + args.TaskId } if args.ApplyType != "" { where += " and ctupo.state=" + args.ApplyType } if args.StartTime != "" { where += " and ctupo.create_time>='" + args.StartTime + "'" } if args.EndTime != "" { where += " and ctupo.create_time<>>='" + args.EndTime + "'" } sqlCount := `select count(*) as count FROM camp_task_user_promotion_order_relate ctupor LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid LEFT JOIN camp_task_list ctl on ctupo.task_id=ctl.id WHERE ctupor.uid=%s %s` sqlCount = fmt.Sprintf(sqlCount, args.Uid, where) nativeStringCount, _ := db.QueryNativeString(svc.MasterDb(c), sqlCount) var total = 0 hotTask := make([]map[string]string, 0) for _, v := range nativeStringCount { total = utils.StrToInt(v["count"]) } 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, ctupo.state,ctupo.settle_state,ctupo.create_time,ctupor.amount FROM camp_task_user_promotion_order_relate ctupor LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid LEFT JOIN camp_task_list ctl on ctupo.task_id=ctl.id LEFT JOIN user_level ul on ctupo.user_lv=ul.id LEFT JOIN camp_task_cate ctc on ctl.first_cid=ctc.id WHERE ctupor.uid=%s %s order by ctupo.id desc %s` sql = fmt.Sprintf(sql, args.Uid, where, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size) nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) stateType := []string{"审核中", "审核通过", "审核拒绝"} settleStateType := []string{"未结算", "结算成功", "结算失败"} for _, v := range nativeString { tmp := map[string]string{ "task_name": v["task_name"], "level_name": v["level_name"], "cate_name": v["cate_name"], "oid": v["oid"], "user_name": v["user_name"], "user_phone": v["user_phone"], "state": v["state"], "state_str": stateType[utils.StrToInt(v["state"])], "settle_state_str": settleStateType[utils.StrToInt(v["settle_state"])], "settle_state": v["settle_state"], "create_time": v["create_time"], "amount": v["amount"], } hotTask = append(hotTask, tmp) } task := make([]map[string]string, 0) taskList := make([]models.CampTaskList, 0) svc.MasterDb(c).Where("is_delete=?", 0).OrderBy("sort desc,id desc").Find(&taskList) for _, v := range taskList { tmp := map[string]string{ "name": v.Name, "value": utils.IntToStr(v.Id), } task = append(task, tmp) } taskCate := make([]map[string]string, 0) taskCateList := make([]models.CampTaskCate, 0) svc.MasterDb(c).Where(" is_show=?", 1).OrderBy("sort desc,id desc").Find(&taskCateList) for _, v := range taskCateList { if v.Pid > 0 { continue } tmp := map[string]string{ "name": v.Name, "value": utils.IntToStr(v.Id), } taskCate = append(taskCate, tmp) } res := map[string]interface{}{ "cate_list": taskCate, "task_cate_list": task, "settle_state_type": []map[string]string{ {"name": "未结算", "value": "0"}, {"name": "已结算", "value": "1"}, {"name": "结算拒绝", "value": "2"}, }, "state_type": []map[string]string{ {"name": "未审核", "value": "0"}, {"name": "审核成功", "value": "1"}, {"name": "审核拒绝", "value": "2"}, }, "total": total, "list": hotTask, } e.OutSuc(c, res, nil) return } func CenterOperatorProjectList(c *gin.Context) { var args md2.OperatorTaskReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } user := svc.GetUser(c) where := "" if args.ApplyType != "" { where += " and ctpul.state=" + args.ApplyType } if args.StartTime != "" { where += " and ctpul.create_time>='" + args.StartTime + "'" } if args.EndTime != "" { where += " and ctpul.create_time<>>='" + args.EndTime + "'" } sqlCount := `select count(*) as count FROM camp_task_project_user_like ctpul WHERE uid in(select uid from user_relate where parent_uid=%d) %s` sqlCount = fmt.Sprintf(sqlCount, user.Info.Uid, where) nativeStringCount, _ := db.QueryNativeString(svc.MasterDb(c), sqlCount) var total = 0 hotTask := make([]map[string]string, 0) for _, v := range nativeStringCount { total = utils.StrToInt(v["count"]) } sql := `select ctpul.state,ctpl.name as project_name,u.nickname,u.phone,ctpul.create_time,ctpul.remark,ctpul.id FROM camp_task_project_user_like ctpul LEFT JOIN camp_task_project_list ctpl on ctpul.project_id=ctpl.id LEFT JOIN user u on ctpul.uid=u.uid WHERE ctpul.uid in(select uid from user_relate where parent_uid=%d) %s order by ctpul.id desc %s` sql = fmt.Sprintf(sql, args.Uid, where, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size) nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) stateType := []string{"审核中", "审核通过", "审核拒绝"} for _, v := range nativeString { tmp := map[string]string{ "project_name": v["project_name"], "id": v["id"], "user_name": v["nickname"], "user_phone": v["phone"], "state": v["state"], "state_str": stateType[utils.StrToInt(v["state"])], "create_time": v["create_time"], "remark": v["remark"], } hotTask = append(hotTask, tmp) } res := map[string]interface{}{ "state_type": []map[string]string{ {"name": "未审核", "value": "0"}, {"name": "审核成功", "value": "1"}, {"name": "审核拒绝", "value": "2"}, }, "total": total, "list": hotTask, } e.OutSuc(c, res, nil) return } func CenterOperatorProjectDel(c *gin.Context) { var args md.DirectorDelReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } svc.MasterDb(c).In("id", args.Ids).Delete(&models.CampTaskProjectUserLike{}) e.OutSuc(c, "success", nil) return } func CenterOperatorProjectRemark(c *gin.Context) { var args md.DirectorDelReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } svc.MasterDb(c).In("id", args.Ids).Cols("remark").Update(&models.CampTaskProjectUserLike{Remark: args.Remark}) e.OutSuc(c, "success", nil) return }