@@ -0,0 +1,124 @@ | |||
package hdl | |||
import ( | |||
"applet/app/admin/lib/validate" | |||
"applet/app/admin/md" | |||
"applet/app/db" | |||
"applet/app/e" | |||
"github.com/gin-gonic/gin" | |||
"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 | |||
} | |||
sess := db.Db.Desc("suggested_feedback.id") | |||
if req.StartCreateAt != "" { | |||
sess.And("suggested_feedback.create_at >= ?", req.StartCreateAt) | |||
} | |||
if req.EndCreateAt != "" { | |||
sess.And("suggested_feedback.create_at <= ?", req.EndCreateAt) | |||
} | |||
if req.State == 1 { | |||
sess.And("suggested_feedback.reply_date !=\"\" ") | |||
} | |||
if req.State == 2 { | |||
sess.And("suggested_feedback.reply_date =\"\" ") | |||
} | |||
if req.Name != "" { | |||
sess.And("user_identity.name like ?", "%"+req.Name+"%") | |||
} | |||
if req.Phone != "" { | |||
sess.And("user.phone like ?", "%"+req.Phone+"%") | |||
} | |||
var m []*db.SuggestedFeedbackWithUserIdentity | |||
count, err := sess. | |||
Join("LEFT", "user_identity", "suggested_feedback.user_identity_id = user_identity.id"). | |||
Join("LEFT", "enterprise", "enterprise.id = user_identity.enterprise_id"). | |||
Join("LEFT", "user", "user.id = user_identity.uid"). | |||
Limit(req.Limit, (req.Page-1)*req.Limit).FindAndCount(&m) | |||
if err != nil { | |||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||
return | |||
} | |||
var resp []md.SuggestedFeedbackListResp | |||
for _, v := range m { | |||
kind := 2 | |||
if v.SuggestedFeedback.ReplyDate != "" { | |||
kind = 1 | |||
} | |||
resp = append(resp, md.SuggestedFeedbackListResp{ | |||
EnterpriseId: v.Enterprise.Id, | |||
EnterpriseName: v.Enterprise.Name, | |||
Uid: v.User.Id, | |||
UserIdentityId: v.UserIdentity.Id, | |||
UserIdentityKind: v.UserIdentity.Kind, | |||
UserIdentityName: v.UserIdentity.Name, | |||
Phone: v.User.Phone, | |||
Nickname: v.User.Nickname, | |||
Content: v.SuggestedFeedback.Content, | |||
Kind: kind, | |||
ReplyContent: v.SuggestedFeedback.ReplyContent, | |||
ReplyDate: v.SuggestedFeedback.ReplyDate, | |||
CreateAt: v.SuggestedFeedback.CreateAt, | |||
UpdateAt: v.SuggestedFeedback.UpdateAt, | |||
}) | |||
} | |||
e.OutSuc(c, map[string]interface{}{ | |||
"list": resp, | |||
"total": count, | |||
"kind_list": []map[string]interface{}{ | |||
{ | |||
"name": "已回复", | |||
"value": 1, | |||
}, | |||
{ | |||
"name": "未回复", | |||
"value": 2, | |||
}, | |||
}, | |||
}, nil) | |||
return | |||
} | |||
func SuggestedFeedbackReply(c *gin.Context) { | |||
var req md.ReplySuggestedFeedbackReq | |||
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() | |||
suggestedFeedback, err := suggestedFeedbackDb.GetSuggestedFeedback(req.Id) | |||
if err != nil { | |||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||
return | |||
} | |||
if suggestedFeedback == nil { | |||
e.OutErr(c, e.ERR_NO_DATA, "未查询到对应记录") | |||
return | |||
} | |||
now := time.Now() | |||
suggestedFeedback.ReplyContent = req.ReplyContent | |||
suggestedFeedback.ReplyDate = now.Format("2006-01-02 15:04:05") | |||
suggestedFeedback.UpdateAt = now.Format("2006-01-02 15:04:05") | |||
_, err = suggestedFeedbackDb.SuggestedFeedbackUpdate(suggestedFeedback, "reply_date", "reply_content", "update_at") | |||
if err != nil { | |||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||
return | |||
} | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} |
@@ -0,0 +1,33 @@ | |||
package md | |||
type SuggestedFeedbackListReq struct { | |||
Name string `json:"name" label:"姓名"` | |||
Phone string `json:"phone" label:"电话"` | |||
State int `json:"state" label:"状态"` | |||
StartCreateAt string `json:"start_create_at" label:"开始-创建时间"` | |||
EndCreateAt string `json:"end_create_at" label:"截止-创建时间"` | |||
Limit int `json:"limit" binding:"required"` | |||
Page int `json:"page" binding:"required"` | |||
} | |||
type SuggestedFeedbackListResp struct { | |||
EnterpriseId int `json:"enterprise_id" ` | |||
EnterpriseName string `json:"enterprise_name" ` | |||
Uid int `json:"uid" ` | |||
UserIdentityId int `json:"user_identity_id" ` | |||
UserIdentityKind int `json:"user_identity_kind" ` | |||
UserIdentityName string `json:"user_identity_name" ` | |||
Phone string `json:"phone" label:"联系电话"` | |||
Nickname string `json:"nickname" label:"姓名"` | |||
Content string `json:"content" label:"建议内容"` | |||
Kind int `json:"kind" label:"回复状态"` | |||
ReplyContent string `json:"reply_content" label:"回复内容"` | |||
ReplyDate string `json:"reply_date"` | |||
CreateAt string `json:"create_at"` | |||
UpdateAt string `json:"update_at"` | |||
} | |||
type ReplySuggestedFeedbackReq struct { | |||
Id int `json:"id" binding:"required" label:"公司id"` | |||
ReplyContent string `json:"reply_content" label:"内容"` | |||
} |
@@ -0,0 +1,97 @@ | |||
package db | |||
import ( | |||
"applet/app/db/model" | |||
"applet/app/utils/logx" | |||
"reflect" | |||
"xorm.io/xorm" | |||
) | |||
type SuggestedFeedbackDb struct { | |||
Db *xorm.Engine `json:"db"` | |||
} | |||
func (suggestedFeedbackDb *SuggestedFeedbackDb) Set() { // set方法 | |||
suggestedFeedbackDb.Db = Db | |||
} | |||
func (suggestedFeedbackDb *SuggestedFeedbackDb) GetSuggestedFeedback(id int) (m *model.SuggestedFeedback, err error) { | |||
m = new(model.SuggestedFeedback) | |||
has, err := suggestedFeedbackDb.Db.Where("id =?", id).Get(m) | |||
if err != nil { | |||
return nil, logx.Error(err) | |||
} | |||
if has == false { | |||
return nil, nil | |||
} | |||
return m, nil | |||
} | |||
func (suggestedFeedbackDb *SuggestedFeedbackDb) FindSuggestedFeedbackById(ids interface{}) (*[]model.SuggestedFeedback, error) { | |||
var m []model.SuggestedFeedback | |||
if err := suggestedFeedbackDb.Db.In("id", ids).Desc("sort").Find(&m); err != nil { | |||
return nil, logx.Error(err) | |||
} | |||
return &m, nil | |||
} | |||
func (suggestedFeedbackDb *SuggestedFeedbackDb) FindSuggestedFeedback(limit, start int) (*[]model.SuggestedFeedback, error) { | |||
var m []model.SuggestedFeedback | |||
if limit == 0 || start == 0 { | |||
if err := suggestedFeedbackDb.Db.Asc("sort").Find(&m); err != nil { | |||
return nil, logx.Error(err) | |||
} | |||
} else { | |||
if err := suggestedFeedbackDb.Db.Asc("sort").Limit(limit, start).Find(m); err != nil { | |||
return nil, logx.Error(err) | |||
} | |||
} | |||
return &m, nil | |||
} | |||
func (suggestedFeedbackDb *SuggestedFeedbackDb) GetSuggestedFeedbackByName(name string) (m *model.SuggestedFeedback, err error) { | |||
m = new(model.SuggestedFeedback) | |||
has, err := suggestedFeedbackDb.Db.Where("name =?", name).Get(m) | |||
if err != nil { | |||
return nil, logx.Error(err) | |||
} | |||
if has == false { | |||
return nil, nil | |||
} | |||
return m, nil | |||
} | |||
func (suggestedFeedbackDb *SuggestedFeedbackDb) SuggestedFeedbackInsert(m *model.SuggestedFeedback) (int, error) { | |||
_, err := suggestedFeedbackDb.Db.InsertOne(m) | |||
if err != nil { | |||
return 0, err | |||
} | |||
return m.Id, nil | |||
} | |||
func (suggestedFeedbackDb *SuggestedFeedbackDb) SuggestedFeedbackUpdate(m *model.SuggestedFeedback, columns ...string) (int64, error) { | |||
affected, err := suggestedFeedbackDb.Db.Where("id =?", m.Id).Cols(columns...).Update(m) | |||
if err != nil { | |||
return 0, err | |||
} | |||
return affected, nil | |||
} | |||
func (suggestedFeedbackDb *SuggestedFeedbackDb) SuggestedFeedbackDelete(id interface{}) (int64, error) { | |||
if reflect.TypeOf(id).Kind() == reflect.Slice { | |||
return Db.In("id", id).Delete(model.SuggestedFeedback{}) | |||
} else { | |||
return Db.Where("id = ?", id).Delete(model.SuggestedFeedback{}) | |||
} | |||
} | |||
type SuggestedFeedbackWithUserIdentity struct { | |||
model.SuggestedFeedback `xorm:"extends"` | |||
model.UserIdentity `xorm:"extends"` | |||
model.Enterprise `xorm:"extends"` | |||
model.User `xorm:"extends"` | |||
} | |||
func (SuggestedFeedbackWithUserIdentity) TableName() string { | |||
return "suggested_feedback" | |||
} |
@@ -0,0 +1,13 @@ | |||
package model | |||
type SuggestedFeedback 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)"` | |||
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"` | |||
} |
@@ -61,6 +61,11 @@ func rNotice(r *gin.RouterGroup) { | |||
r.DELETE("/delete/:id", hdl2.NoticeDelete) | |||
} | |||
func rSuggestedFeedback(r *gin.RouterGroup) { | |||
r.POST("/list", hdl2.SuggestedFeedbackList) | |||
r.POST("/reply", hdl2.SuggestedFeedbackReply) | |||
} | |||
func rBanner(r *gin.RouterGroup) { | |||
r.GET("/list", hdl2.BannerList) | |||
r.POST("/add", hdl2.BannerAdd) | |||
@@ -291,17 +296,18 @@ func AdminRoute(r *gin.RouterGroup) { | |||
r.Use(mw.CheckPermission) //检测权限 | |||
rHomePage(r.Group("/homePage")) //首页 | |||
rCompany(r.Group("/company")) //公司管理 | |||
rNotice(r.Group("/notice")) //公告管理 | |||
rBanner(r.Group("/banner")) //轮播图管理 | |||
rEnterprise(r.Group("/enterprise")) //校企管理 | |||
rEnterpriseManage(r.Group("/enterpriseManage")) //校企管理详情 | |||
rRole(r.Group("/role")) //权限管理 | |||
rSetCenter(r.Group("/setCenter")) //设置中心 | |||
rUser(r.Group("/user")) //用户管理 | |||
rAuditCenter(r.Group("/auditCenter")) //审核中心 | |||
rFinanceManage(r.Group("/financeManage")) //财务管理 | |||
rDeviceManage(r.Group("/deviceManage")) //设备管理 | |||
rDataStatistics(r.Group("/dataStatistics")) //数据统计 | |||
rHomePage(r.Group("/homePage")) //首页 | |||
rCompany(r.Group("/company")) //公司管理 | |||
rNotice(r.Group("/notice")) //公告管理 | |||
rSuggestedFeedback(r.Group("/suggestedFeedback")) //反馈建议 | |||
rBanner(r.Group("/banner")) //轮播图管理 | |||
rEnterprise(r.Group("/enterprise")) //校企管理 | |||
rEnterpriseManage(r.Group("/enterpriseManage")) //校企管理详情 | |||
rRole(r.Group("/role")) //权限管理 | |||
rSetCenter(r.Group("/setCenter")) //设置中心 | |||
rUser(r.Group("/user")) //用户管理 | |||
rAuditCenter(r.Group("/auditCenter")) //审核中心 | |||
rFinanceManage(r.Group("/financeManage")) //财务管理 | |||
rDeviceManage(r.Group("/deviceManage")) //设备管理 | |||
rDataStatistics(r.Group("/dataStatistics")) //数据统计 | |||
} |