package svc import ( "applet/app/comm/e" "applet/app/comm/svc" "applet/app/comm/utils" "applet/app/operator/md" "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" "encoding/json" "github.com/gin-gonic/gin" "time" ) func ProjectSelect(c *gin.Context) { var args md.ProjectListSelectReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } user := svc.GetUser(c) var project = make([]models.CampTaskProject, 0) svc.MasterDb(c).Where("is_must=1 and state=1").Find(&project) for _, v := range project { if utils.InArr(utils.IntToStr(v.Id), args.Ids) == false { e.OutErr(c, 400, e.NewErr(400, "《"+v.Name+"》未选择")) return } } isCanSelect := "0" sess := svc.MasterDb(c).NewSession() defer sess.Close() sess.Begin() var data models.CampTaskProjectOperatorLike sess.Where("uid=?", user.Info.Uid).Desc("id").Get(&data) if data.State == 3 || data.Id == 0 || data.CreateTime.Unix()+365 < time.Now().Unix() { isCanSelect = "1" } if isCanSelect != "1" { sess.Rollback() e.OutErr(c, 400, e.NewErr(400, "您不能选择")) return } no := data.No + 1 if data.State == 3 { no = data.No update, _ := sess.Where("no=? and uid=?", no, user.Info.Uid).Delete(&models.CampTaskProjectOperatorLike{}) if update == 0 { sess.Rollback() e.OutErr(c, 400, e.NewErr(400, "提交失败")) return } } for _, v := range args.Ids { var tmp = models.CampTaskProjectOperatorLike{ Uid: user.Info.Uid, ProjectId: utils.StrToInt(v), CreateTime: time.Now(), No: no, } insert, _ := sess.Insert(&tmp) if insert == 0 { sess.Rollback() e.OutErr(c, 400, e.NewErr(400, "提交失败")) return } } sess.Commit() e.OutSuc(c, "success", nil) return } func ProjectList(c *gin.Context) { var args md.ProjectListReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } user := svc.GetUser(c) isCanSelect := "0" var data models.CampTaskProjectOperatorLike svc.MasterDb(c).Where("uid=?", user.Info.Uid).Desc("id").Get(&data) if data.State == 3 || data.Id == 0 || data.CreateTime.Unix()+365 < time.Now().Unix() { isCanSelect = "1" } hotTask := make([]map[string]interface{}, 0) var hotTaskList []models.CampTaskProject sess := svc.MasterDb(c).Where("state=?", 1) if args.Cid != "" { sess.And("cid=?", args.Cid) } total, _ := sess.Limit(utils.StrToInt(args.P), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("is_must desc,id desc").FindAndCount(&hotTaskList) cate := make([]models.CampTaskProjectCate, 0) svc.MasterDb(c).Where("1=1").Find(&cate) for _, v := range hotTaskList { enterpriseInfo := make(map[string]string) json.Unmarshal([]byte(v.EnterpriseInfo), &enterpriseInfo) enterpriseInfo1 := map[string]string{ "name": enterpriseInfo["name"], "user_name": enterpriseInfo["user_name"], "address": enterpriseInfo["address"], } img := make([]string, 0) json.Unmarshal([]byte(v.Img), &img) firstImg := "" if len(img) > 0 { firstImg = img[0] } detailInfo := make([]string, 0) json.Unmarshal([]byte(v.DetailInfo), &detailInfo) tmp := map[string]interface{}{ "year": v.CreateTime.Format("2006") + "年", "id": utils.IntToStr(v.Id), "name": v.Name, "cid": utils.IntToStr(v.Cid), "money": v.Money, "img": firstImg, "video_info": v.VideoInfo, "img_list": img, "detail_info": detailInfo, "create_time": v.CreateTime.Format("2006-01-02 15:04:05"), "enterprise_info": enterpriseInfo1, "cate_name": "", "adv_word": v.AdvWord, "is_must": utils.IntToStr(v.IsMust), } for _, v1 := range cate { if v1.Id == v.Cid { tmp["cate_name"] = v1.Name } } hotTask = append(hotTask, tmp) } taskCate := make([]map[string]string, 0) taskCateList := make([]models.CampTaskProjectCate, 0) svc.MasterDb(c).Where("is_show=?", 1).OrderBy("sort desc,id desc").Find(&taskCateList) for _, v := range taskCateList { tmp := map[string]string{ "name": v.Name, "value": utils.IntToStr(v.Id), } taskCate = append(taskCate, tmp) } res := map[string]interface{}{ "cate_list": taskCate, "is_can_select": isCanSelect, "total": total, "list": hotTask, } e.OutSuc(c, res, nil) return }