diff --git a/app/admin/hdl/hdl_suggested_feedback.go b/app/admin/hdl/hdl_suggested_feedback.go index 8b57686..9cbd63c 100644 --- a/app/admin/hdl/hdl_suggested_feedback.go +++ b/app/admin/hdl/hdl_suggested_feedback.go @@ -57,6 +57,7 @@ func SuggestedFeedbackList(c *gin.Context) { kind = 1 } resp = append(resp, md.SuggestedFeedbackListResp{ + Id: v.SuggestedFeedback.Id, EnterpriseId: v.Enterprise.Id, EnterpriseName: v.Enterprise.Name, Uid: v.User.Id, diff --git a/app/admin/md/md_suggested_feedback.go b/app/admin/md/md_suggested_feedback.go index 9c13785..da81e4f 100644 --- a/app/admin/md/md_suggested_feedback.go +++ b/app/admin/md/md_suggested_feedback.go @@ -11,6 +11,7 @@ type SuggestedFeedbackListReq struct { } type SuggestedFeedbackListResp struct { + Id int `json:"id" ` EnterpriseId int `json:"enterprise_id" ` EnterpriseName string `json:"enterprise_name" ` Uid int `json:"uid" ` diff --git a/app/customer/hdl/hdl_notice.go b/app/customer/hdl/hdl_notice.go index 6317b08..6876e7b 100644 --- a/app/customer/hdl/hdl_notice.go +++ b/app/customer/hdl/hdl_notice.go @@ -19,3 +19,22 @@ func NoticeList(c *gin.Context) { }, nil) return } + +func PopCentralKitchen(c *gin.Context) { + noticeDb := db.NoticeDb{} + noticeDb.Set() + notices, err := noticeDb.GetPopToCentralKitchen() + if err != nil { + e.OutErr(c, e.ERR_DB_ORM, err.Error()) + return + } + var isPop bool + if notices == nil { + isPop = true + } + e.OutSuc(c, map[string]interface{}{ + "data": notices, + "is_pop": isPop, + }, nil) + return +} diff --git a/app/customer/hdl/hdl_suggested_feed_back.go b/app/customer/hdl/hdl_suggested_feed_back.go new file mode 100644 index 0000000..7712636 --- /dev/null +++ b/app/customer/hdl/hdl_suggested_feed_back.go @@ -0,0 +1,109 @@ +package hdl + +import ( + "applet/app/customer/lib/validate" + "applet/app/customer/md" + "applet/app/customer/svc" + "applet/app/db" + "applet/app/db/model" + "applet/app/e" + "fmt" + "github.com/gin-gonic/gin" + "github.com/jinzhu/copier" + "time" +) + +func SuggestedFeedbackList(c *gin.Context) { + var req md.SuggestedFeedbackListReq + err := c.ShouldBindJSON(&req) + if err != nil { + err = validate.HandleValidateErr(err) + err1 := err.(e.E) + e.OutErr(c, err1.Code, err1.Error()) + return + } + if req.Limit == 0 { + req.Limit = 10 + } + if req.Page == 0 { + req.Page = 1 + } + var m []*model.SuggestedFeedback + total, err := db.Db.Where("user_identity_id =?", req.UserIdentityId).Limit(req.Limit, (req.Page-1)*req.Limit).FindAndCount(&m) + type respStruct struct { + Id int `json:"id" xorm:"not null pk autoincr INT(11)"` + Uid int `json:"uid" xorm:"not null comment('用户id') INT(11)"` + UserIdentityId int `json:"user_identity_id" xorm:"not null comment('身份id') INT(11)"` + EnterpriseId int `json:"enterprise_id" xorm:"not null comment('单位id') INT(11)"` + Kind int `json:"kind" ` + Content string `json:"content" xorm:"not null default '' comment('反馈内容') VARCHAR(255)"` + ReplyContent string `json:"reply_content" xorm:"not null default '' comment('回复内容') VARCHAR(255)"` + ReplyDate string `json:"reply_date" xorm:"not null default '' comment('回复时间') CHAR(50)"` + CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"` + UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"` + } + var list []respStruct + for _, v := range m { + var tmp respStruct + err = copier.Copy(&tmp, v) + fmt.Println(err) + kind := 2 + if v.ReplyDate != "" { + kind = 1 + } + tmp.Kind = kind + list = append(list, tmp) + } + e.OutSuc(c, map[string]interface{}{ + "list": list, + "total": total, + "kind_list": []map[string]interface{}{ + { + "name": "已回复", + "value": 1, + }, + { + "name": "未回复", + "value": 2, + }, + }, + }, nil) + return +} + +func SuggestedFeedbackAdd(c *gin.Context) { + var req md.SuggestedFeedbackAddReq + err := c.ShouldBindJSON(&req) + if err != nil { + err = validate.HandleValidateErr(err) + err1 := err.(e.E) + e.OutErr(c, err1.Code, err1.Error()) + return + } + + suggestedFeedbackDb := db.SuggestedFeedbackDb{} + suggestedFeedbackDb.Set() + user := svc.GetUser(c) + now := time.Now() + insertAffected, err := suggestedFeedbackDb.SuggestedFeedbackInsert(&model.SuggestedFeedback{ + Uid: user.Id, + UserIdentityId: req.UserIdentityId, + EnterpriseId: req.EnterpriseId, + Content: req.Content, + ReplyContent: "", + ReplyDate: "", + CreateAt: now.Format("2006-01-02 15:04:05"), + UpdateAt: now.Format("2006-01-02 15:04:05"), + }) + if err != nil { + e.OutErr(c, e.ERR_DB_ORM, err.Error()) + return + } + if insertAffected <= 0 { + e.OutErr(c, e.ERR_DB_ORM, "新增数据失败") + return + } + + e.OutSuc(c, "success", nil) + return +} diff --git a/app/customer/md/md_suggested_feddback.go b/app/customer/md/md_suggested_feddback.go new file mode 100644 index 0000000..68df95b --- /dev/null +++ b/app/customer/md/md_suggested_feddback.go @@ -0,0 +1,12 @@ +package md + +type SuggestedFeedbackListReq struct { + Limit int `json:"limit"` + Page int `json:"page" ` + UserIdentityId int `json:"user_identity_id" ` +} +type SuggestedFeedbackAddReq struct { + UserIdentityId int `json:"user_identity_id" ` + EnterpriseId int `json:"enterprise_id" ` + Content string `json:"content" ` +} diff --git a/app/router/customer_router.go b/app/router/customer_router.go index 8a0e9aa..b206f23 100644 --- a/app/router/customer_router.go +++ b/app/router/customer_router.go @@ -15,6 +15,7 @@ func CustomerInit(r *gin.RouterGroup) { rSelfSupportForSchoolOrder(r.Group("/order/selfSupportForSchool")) rSelfSupportForSchool(r.Group("/selfSupportForSchool")) rUserIdentity(r.Group("/userIdentity")) + rApiSuggestedFeedback(r.Group("/suggestedFeedback")) rTest(r.Group("/test")) r.GET("/sanHu", hdl.SanHu) @@ -61,6 +62,7 @@ func CustomerInit(r *gin.RouterGroup) { r.Group("/notice") { r.GET("notice/list", hdl.NoticeList) + r.GET("notice/popCentralKitchen", hdl.PopCentralKitchen) } r.Group("/banner") @@ -125,3 +127,9 @@ func rUserIdentity(r *gin.RouterGroup) { //用户身份 r.POST("/updateSelfSupportForSchoolUserIdentity", hdl.UpdateSelfSupportForSchoolUserIdentity) // 修改"自营-学校"学生身份信息 r.POST("/updateNursingHomeUserIdentity", hdl.UpdateNursingHomeUserIdentity) // 修改"养老院"身份信息 } + +func rApiSuggestedFeedback(r *gin.RouterGroup) { //反馈建议 + r.Use(mw.Auth) //检测登录状态 + r.POST("/list", hdl.SuggestedFeedbackList) // 列表 + r.POST("/add", hdl.SuggestedFeedbackAdd) // 新增 +} diff --git a/go.mod b/go.mod index 7e37f2b..5cc7372 100644 --- a/go.mod +++ b/go.mod @@ -40,6 +40,7 @@ require ( github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/gookit/color v1.3.6 // indirect + github.com/jinzhu/copier v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/main.go b/main.go index e5d7246..dbfcc41 100644 --- a/main.go +++ b/main.go @@ -30,6 +30,75 @@ func init() { } func main() { + //svc.CentralKitchenForSchoolAlipayTradeFastpayRefundQuery(db.Db) + //var list []model.CentralKitchenForSchoolUserRefundDay + //if err := db.Db.Where("create_at >= '2024-01-15 18:00:00' AND state = 4 and uid < 0").Desc("id").Find(&list); err != nil { + // fmt.Println(err) + //} + // + //var notCanUserIds []int + //for _, v := range list { + // v.RecordsId = -v.RecordsId + // v.OutTradeNo = "-" + v.OutTradeNo + // affected1, err := db.Db.Where("id=?", v.Id).Cols("records_id", "out_trade_no").Update(&v) + // if err != nil { + // fmt.Println(err) + // } + // fmt.Println(">>>>>>>>>>>>>>>>>affected1<<<<<<<<<<<<<<<<<<<", affected1) + // continue + // var mm []model.CentralKitchenForSchoolUserRefundDay + // if err := db.Db.Where("uid = ?", v.Uid).And("state = 1").Desc("records_id").Find(&mm); err != nil { + // fmt.Println(err) + // } + // + // if len(mm) > 0 { + // mmm := new(model.CentralKitchenForSchoolUserWithDay) + // _, err := db.Db.Where("id =?", mm[0].RecordsId).Get(mmm) + // if err != nil { + // fmt.Println(err) + // } + // //if mmm.Date == "2024-01-31" { + // //1、更改当前记录 + // v.Uid = -v.Uid + // affected1, err := db.Db.Where("id=?", v.Id).Cols("uid").Update(&v) + // if err != nil { + // fmt.Println(err) + // } + // fmt.Println(">>>>>>>>>>>>>>>>>affected1<<<<<<<<<<<<<<<<<<<", affected1) + // vv := new(model.CentralKitchenForSchoolUserWithDay) + // _, err = db.Db.Where("id =?", v.RecordsId).Get(vv) + // if err != nil { + // fmt.Println(err) + // } + // vv.State = 2 + // affected11, err := db.Db.Where("id=?", vv.Id).Cols("state").Update(vv) + // if err != nil { + // fmt.Println(err) + // } + // fmt.Println(">>>>>>>>>>>>>>>>>affected11<<<<<<<<<<<<<<<<<<<", affected11) + // + // //2、更改兑换记录 + // mm[0].OutRequestNo = v.OutRequestNo + // mm[0].State = v.State + // mm[0].RefundDate = v.RefundDate + // mm[0].Memo = "exchange" + // affected2, err := db.Db.Where("id=?", mm[0].Id).Cols("out_request_no", "state", "refund_date", "memo").Update(mm[0]) + // if err != nil { + // fmt.Println(err) + // } + // fmt.Println(">>>>>>>>>>>>>>>>>affected2<<<<<<<<<<<<<<<<<<<", affected2) + // mmm.State = 4 + // affected22, err := db.Db.Where("id=?", mmm.Id).Cols("state").Update(mmm) + // if err != nil { + // fmt.Println(err) + // } + // fmt.Println(">>>>>>>>>>>>>>>>>affected22<<<<<<<<<<<<<<<<<<<", affected22) + // + // //} + // } else { + // notCanUserIds = append(notCanUserIds, v.Uid) + // } + //} r := router.Init() //创建路由 srv := &http.Server{ //设置http服务参数 diff --git a/main_back.go b/main_back.go new file mode 100644 index 0000000..1af3a24 --- /dev/null +++ b/main_back.go @@ -0,0 +1,76 @@ +package main + +import ( + "applet/app/db" + "applet/app/db/model" + "context" + "fmt" + "log" + "net/http" + "os" + "os/signal" + "syscall" + "time" + + "applet/app/cfg" + "applet/app/router" +) + +func main1() { + var m []model.CentralKitchenForSchoolUserRefundDay + if err := db.Db.Where("1=1").Desc("id").Find(&m); err != nil { + fmt.Println(err) + } + var alreadyIds = map[int]bool{} + for _, v := range m { + if v.State != 3 && !alreadyIds[v.Id] { + var mm []model.CentralKitchenForSchoolUserRefundDay + if err := db.Db.Where("records_id = ?", v.RecordsId).And("state != 3").And("id != ?", v.Id).Find(&mm); err != nil { + fmt.Println(err) + } + var ids []int + for _, vv := range mm { + if vv.State == 4 { + if v.State == 4 { + fmt.Println(v, vv) + } + ids = append(ids, v.Id) + alreadyIds[v.Id] = true + } else { + ids = append(ids, vv.Id) + alreadyIds[vv.Id] = true + } + } + if len(ids) > 0 { + db.Db.In("id", ids).Delete(model.CentralKitchenForSchoolUserRefundDay{}) + } + } + + } + r := router.Init() //创建路由 + + srv := &http.Server{ //设置http服务参数 + Addr: cfg.SrvAddr, //指定ip和端口 + Handler: r, //指定路由 + } + + go func() { //协程启动监听http服务 + fmt.Println("Listening and serving HTTP on " + cfg.SrvAddr) + if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + log.Fatalf("listen: %s\n", err) + } + }() + + //退出go守护进程 + quit := make(chan os.Signal) + signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) + <-quit + log.Println("Shutting down server...") + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + if err := srv.Shutdown(ctx); err != nil { + log.Fatal("Server forced to shutdown:", err) + } + log.Println("Server exiting") + +} diff --git a/main_copy.go b/main_copy.go new file mode 100644 index 0000000..5a2751c --- /dev/null +++ b/main_copy.go @@ -0,0 +1,75 @@ +package main + +import ( + "applet/app/db" + "applet/app/db/model" + "context" + "fmt" + "log" + "net/http" + "os" + "os/signal" + "syscall" + "time" + + "applet/app/cfg" + "applet/app/router" +) + +func main2() { + var m []model.CentralKitchenForSchoolUserRefundDay + if err := db.Db.Where("create_at >= '2024-01-15 18:00:00' AND state = 4").Desc("id").Find(&m); err != nil { + fmt.Println(err) + } + var canUserIds []int + var onlyCanUserIds []int + var notCanUserIds []int + for _, v := range m { + var mm []model.CentralKitchenForSchoolUserRefundDay + if err := db.Db.Where("uid = ?", v.Uid).And("state = 1").Desc("records_id").Find(&mm); err != nil { + fmt.Println(err) + } + + if len(mm) > 0 { + canUserIds = append(canUserIds, v.Uid) + for _, vv := range mm { + mmm := new(model.CentralKitchenForSchoolUserWithDay) + _, err := db.Db.Where("id =?", vv.RecordsId).Get(mmm) + if err != nil { + fmt.Println(err) + } + if mmm.Date == "2024-01-30" { + onlyCanUserIds = append(onlyCanUserIds, v.Uid) + } + } + } else { + notCanUserIds = append(notCanUserIds, v.Uid) + } + } + r := router.Init() //创建路由 + + srv := &http.Server{ //设置http服务参数 + Addr: cfg.SrvAddr, //指定ip和端口 + Handler: r, //指定路由 + } + + go func() { //协程启动监听http服务 + fmt.Println("Listening and serving HTTP on " + cfg.SrvAddr) + if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + log.Fatalf("listen: %s\n", err) + } + }() + + //退出go守护进程 + quit := make(chan os.Signal) + signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) + <-quit + log.Println("Shutting down server...") + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + if err := srv.Shutdown(ctx); err != nil { + log.Fatal("Server forced to shutdown:", err) + } + log.Println("Server exiting") + +}