package Api import ( "encoding/json" "github.com/aarongao/tools" "github.com/gin-gonic/gin" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo/options" "letu/DB" "letu/Lib/Auth" "math" "regexp" "strconv" "time" ) // @Title 增加投诉 // @Description 投诉 - 增加投诉 // @Accept json // @Produce json // @Param Mobile 18616619599 string true "联系电话" // @Param Name 高先生 string true "姓名" // @Param Code 123456 string true "验证码" // @Param Sex 男 string true "性别" // @Param ScenicId 5e1ed07524e03431008b4572 string true "景区id" // @Param Type 1 string true "类型" // @Param Content 卫生不干净 string true "投诉内容" // @Param Image ["http://www.xx.com/123.jpg","http://www.xx.com/123.jpg"] string true "照片数组" // @Success 200 {object} tools.ResponseSeccess "{"errcode":0,"result":"ok"}" // @Failure 500 {object} tools.ResponseError "{"errcode":1,"errmsg":"错误原因"}" // @Router /CreateComplaint? [post] func CreateComplaint(c *gin.Context) { c.Header("Access-Control-Allow-Origin", c.Request.Header.Get("Origin")) c.Header("Access-Control-Allow-Credentials", "true") reg := regexp.MustCompile(Regular) if !reg.MatchString(c.PostForm("Mobile")) { c.JSON(200, tools.ResponseError{ 1, "手机号格式不正确", }) return } if c.PostForm("Mobile") == "" { c.JSON(200, tools.ResponseError{ 1, "手机号为空", }) return } // 检查验证码 cacheCode := DB.Redis.Get("code_" + c.PostForm("Mobile")) if cacheCode != c.PostForm("Code") { c.JSON(200, tools.ResponseError{ 1, "验证码不正确", }) return } var images []string json.Unmarshal([]byte(c.PostForm("Image")), &images) objectID := primitive.NewObjectID() DB.CComplaint.InsertOne(tools.GetContext(), DB.SComplaint{ &objectID, c.PostForm("Type"), c.PostForm("ScenicId"), c.PostForm("Mobile"), c.PostForm("Name"), c.PostForm("Sex"), c.PostForm("Content"), images, "未处理", time.Now().Unix(), }) c.JSON(200, tools.ResponseSeccess{ 0, "ok", }) } // @Title 查询所有投诉 // @Description 投诉 - 查询所有投诉 // @Accept json // @Produce json // @Param ScenicId 5e1ed07524e03431008b4572 string true "景区id" // @Param Page 1 int true "当前第几页" // @Success 200 {object} tools.ResponseSeccess "" // @Failure 500 {object} tools.ResponseError "{"errcode":1,"errmsg":"错误原因"}" // @Router /AllComplaint? [get] func AllComplaint(c *gin.Context) { c.Header("Access-Control-Allow-Origin", c.Request.Header.Get("Origin")) c.Header("Access-Control-Allow-Credentials", "true") total, _ := DB.CComplaint.CountDocuments(tools.GetContext(), bson.M{"ScenicId": c.Query("ScenicId")}) limit, _ := strconv.ParseInt(c.Query("Limit"), 10, 64) if limit == 0 { limit = 50 } currPage, _ := strconv.ParseInt(c.Query("Page"), 10, 64) if currPage == 0 { currPage = 1 } skip := (currPage - 1) * limit var aComplaint = []bson.M{} cur, err := DB.CComplaint.Find(tools.GetContext(), bson.M{"ScenicId": c.Query("ScenicId")}, &options.FindOptions{Limit: &limit, Skip: &skip, Sort: bson.M{"_id": -1}}) defer cur.Close(tools.GetContext()) if err == nil { for cur.Next(tools.GetContext()) { var e bson.M cur.Decode(&e) aComplaint = append(aComplaint, e) } } c.JSON(200, tools.Page{ 0, total, currPage, int64(math.Ceil(float64(total) / float64(limit))), limit, aComplaint, }) } // @Title 处理投诉 // @Description 处理投诉 // @Accept json // @Produce json // @Param id 5dfb03070a9ac17ac7a82054 string true "投诉id" // @Param ScenicId wgergejfwe string true "景区id" // @Param Token wgergejfwe string true "用户token" // @Success 200 {object} tools.ResponseSeccess "{"errcode":0,"result":"ok"}" // @Failure 500 {object} tools.ResponseError "{"errcode":1,"errmsg":"错误原因"}" // @Router /HandleComplaint? [post] func HandleComplaint(c *gin.Context) { c.Header("Access-Control-Allow-Origin", c.Request.Header.Get("Origin")) c.Header("Access-Control-Allow-Credentials", "true") _user, _ := c.Get("UserInfo") user := _user.(*DB.SMember) err := Auth.CheckScenicAuth(c.PostForm("ScenicId"), user) if err != nil { c.JSON(200, tools.ResponseError{ 401, "没有权限", }) return } objectID, _ := primitive.ObjectIDFromHex(c.PostForm("id")) _, err = DB.CComplaint.UpdateOne(tools.GetContext(), bson.M{"_id": objectID}, bson.M{"$set": bson.M{ "State": "已处理", }}, ) c.JSON(200, tools.ResponseSeccess{ 0, "ok", }) }