@@ -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, | |||
@@ -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" ` | |||
@@ -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 | |||
} |
@@ -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 | |||
} |
@@ -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" ` | |||
} |
@@ -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) // 新增 | |||
} |
@@ -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 | |||
@@ -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服务参数 | |||
@@ -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") | |||
} |
@@ -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") | |||
} |