正在显示
11 个修改的文件
包含
757 行增加
和
4 行删除
| @@ -3,11 +3,11 @@ package controllers | @@ -3,11 +3,11 @@ package controllers | ||
| 3 | import ( | 3 | import ( |
| 4 | "encoding/json" | 4 | "encoding/json" |
| 5 | "fmt" | 5 | "fmt" |
| 6 | + "github.com/astaxie/beego" | ||
| 7 | + "github.com/astaxie/beego/validation" | ||
| 6 | "oppmg/common/log" | 8 | "oppmg/common/log" |
| 7 | "oppmg/protocol" | 9 | "oppmg/protocol" |
| 8 | "strconv" | 10 | "strconv" |
| 9 | - | ||
| 10 | - "github.com/astaxie/beego" | ||
| 11 | ) | 11 | ) |
| 12 | 12 | ||
| 13 | //BaseController 基础 | 13 | //BaseController 基础 |
| @@ -56,3 +56,21 @@ func (this *BaseController) GetUserId() int64 { | @@ -56,3 +56,21 @@ func (this *BaseController) GetUserId() int64 { | ||
| 56 | userid, _ := strconv.ParseInt(fmt.Sprint(v), 10, 64) | 56 | userid, _ := strconv.ParseInt(fmt.Sprint(v), 10, 64) |
| 57 | return userid | 57 | return userid |
| 58 | } | 58 | } |
| 59 | + | ||
| 60 | +//Valid valid struct | ||
| 61 | +func (this *BaseController) Valid(obj interface{}) (result bool, msg *protocol.ResponseMessage) { | ||
| 62 | + /*校验*/ | ||
| 63 | + var err error | ||
| 64 | + valid := validation.Validation{} | ||
| 65 | + result, err = valid.Valid(obj) | ||
| 66 | + if err != nil { | ||
| 67 | + msg = protocol.BadRequestParam("1") | ||
| 68 | + return | ||
| 69 | + } | ||
| 70 | + if !result { | ||
| 71 | + msg = protocol.BadRequestParam("2") | ||
| 72 | + return | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + return | ||
| 76 | +} |
controllers/bulletin.go
0 → 100644
| 1 | +package controllers | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "encoding/json" | ||
| 5 | + "oppmg/common/log" | ||
| 6 | + "oppmg/protocol" | ||
| 7 | + "oppmg/services/bulletin" | ||
| 8 | + "strconv" | ||
| 9 | +) | ||
| 10 | + | ||
| 11 | +type BulletinController struct { | ||
| 12 | + BaseController | ||
| 13 | +} | ||
| 14 | + | ||
| 15 | +//BulletinRelease | ||
| 16 | +//@router /release [post] | ||
| 17 | +func (this *BulletinController) BulletinRelease() { | ||
| 18 | + var msg *protocol.ResponseMessage | ||
| 19 | + defer func() { | ||
| 20 | + this.ResposeJson(msg) | ||
| 21 | + }() | ||
| 22 | + var request *protocol.BulletinReleaseRequest | ||
| 23 | + if err := json.Unmarshal(this.Ctx.Input.RequestBody, &request); err != nil { | ||
| 24 | + log.Error("json 解析失败", err) | ||
| 25 | + msg = protocol.BadRequestParam("1") | ||
| 26 | + return | ||
| 27 | + } | ||
| 28 | + uid := this.GetUserId() | ||
| 29 | + companyId := this.GetCompanyId() | ||
| 30 | + if companyId <= 0 { | ||
| 31 | + msg = protocol.BadRequestParam("1") | ||
| 32 | + return | ||
| 33 | + } | ||
| 34 | + if request.Type != 1 || request.Type != 2 { | ||
| 35 | + msg = protocol.BadRequestParam("1") | ||
| 36 | + log.Error("type error :", request.Type) | ||
| 37 | + return | ||
| 38 | + } | ||
| 39 | + if b, m := this.Valid(request); !b { | ||
| 40 | + msg = m | ||
| 41 | + return | ||
| 42 | + } | ||
| 43 | + rsp, err := bulletin.BulletinRelease(uid, companyId, request) | ||
| 44 | + msg = protocol.NewReturnResponse(rsp, err) | ||
| 45 | + return | ||
| 46 | +} | ||
| 47 | + | ||
| 48 | +//BulletinList | ||
| 49 | +//@router /list [post] | ||
| 50 | +func (this *BulletinController) BulletinList() { | ||
| 51 | + var msg *protocol.ResponseMessage | ||
| 52 | + defer func() { | ||
| 53 | + this.ResposeJson(msg) | ||
| 54 | + }() | ||
| 55 | + var request *protocol.BulletinListRequest | ||
| 56 | + if err := json.Unmarshal(this.Ctx.Input.RequestBody, &request); err != nil { | ||
| 57 | + log.Error("json 解析失败", err) | ||
| 58 | + msg = protocol.BadRequestParam("1") | ||
| 59 | + return | ||
| 60 | + } | ||
| 61 | + if b, m := this.Valid(request); !b { | ||
| 62 | + msg = m | ||
| 63 | + return | ||
| 64 | + } | ||
| 65 | + uid := this.GetUserId() | ||
| 66 | + companyId := this.GetCompanyId() | ||
| 67 | + if companyId <= 0 { | ||
| 68 | + msg = protocol.BadRequestParam("1") | ||
| 69 | + return | ||
| 70 | + } | ||
| 71 | + rsp, err := bulletin.BulletinList(uid, companyId, request) | ||
| 72 | + msg = protocol.NewReturnResponse(rsp, err) | ||
| 73 | +} | ||
| 74 | + | ||
| 75 | +//GetBulletin | ||
| 76 | +func (this *BulletinController) GetBulletin() { | ||
| 77 | + var msg *protocol.ResponseMessage | ||
| 78 | + defer func() { | ||
| 79 | + this.ResposeJson(msg) | ||
| 80 | + }() | ||
| 81 | + var request *protocol.GetBulletinRequest | ||
| 82 | + if err := json.Unmarshal(this.Ctx.Input.RequestBody, &request); err != nil { | ||
| 83 | + log.Error("json 解析失败", err) | ||
| 84 | + msg = protocol.BadRequestParam("1") | ||
| 85 | + return | ||
| 86 | + } | ||
| 87 | + if b, m := this.Valid(request); !b { | ||
| 88 | + msg = m | ||
| 89 | + return | ||
| 90 | + } | ||
| 91 | + param := this.Ctx.Input.Param(":id") | ||
| 92 | + id, _ := strconv.ParseInt(param, 10, 64) | ||
| 93 | + if id == 0 { | ||
| 94 | + msg = protocol.BadRequestParam("1") | ||
| 95 | + return | ||
| 96 | + } | ||
| 97 | + companyId := this.GetCompanyId() | ||
| 98 | + if companyId <= 0 { | ||
| 99 | + msg = protocol.BadRequestParam("1") | ||
| 100 | + return | ||
| 101 | + } | ||
| 102 | + rsp, err := bulletin.GetBulletin(int(id), companyId, request) | ||
| 103 | + msg = protocol.NewReturnResponse(rsp, err) | ||
| 104 | +} | ||
| 105 | + | ||
| 106 | +//UpdateBulletin | ||
| 107 | +//@router /update [post] | ||
| 108 | +func (this *BulletinController) UpdateBulletin() { | ||
| 109 | + var msg *protocol.ResponseMessage | ||
| 110 | + defer func() { | ||
| 111 | + this.ResposeJson(msg) | ||
| 112 | + }() | ||
| 113 | + var request *protocol.UpdateBulletinRequest | ||
| 114 | + if err := json.Unmarshal(this.Ctx.Input.RequestBody, &request); err != nil { | ||
| 115 | + log.Error("json 解析失败", err) | ||
| 116 | + msg = protocol.BadRequestParam("1") | ||
| 117 | + return | ||
| 118 | + } | ||
| 119 | + if b, m := this.Valid(request); !b { | ||
| 120 | + msg = m | ||
| 121 | + return | ||
| 122 | + } | ||
| 123 | + companyId := this.GetCompanyId() | ||
| 124 | + if companyId <= 0 { | ||
| 125 | + msg = protocol.BadRequestParam("1") | ||
| 126 | + return | ||
| 127 | + } | ||
| 128 | + rsp, err := bulletin.UpdateBulletin(companyId, request) | ||
| 129 | + msg = protocol.NewReturnResponse(rsp, err) | ||
| 130 | +} |
models/bulletin.go
0 → 100644
| 1 | +package models | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "time" | ||
| 6 | + | ||
| 7 | + "github.com/astaxie/beego/orm" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +type Bulletin struct { | ||
| 11 | + Id int `orm:"column(id);auto"` | ||
| 12 | + Title string `orm:"column(title);size(2000);null" description:"标题"` | ||
| 13 | + Content string `orm:"column(content);null" description:"内容"` | ||
| 14 | + Cover string `orm:"column(cover);size(255);null" description:"封面地址"` | ||
| 15 | + W int `orm:"column(w);null" description:"宽"` | ||
| 16 | + H int `orm:"column(h);null" description:"高"` | ||
| 17 | + Type int8 `orm:"column(type);null" description:"公告类型(1图+跳转链接、2纯文本)"` | ||
| 18 | + Receiver string `orm:"column(receiver);null" description:"接收者"` | ||
| 19 | + QuestionSwitch int8 `orm:"column(question_switch);null" description:"设置问题开关 (是否有问题)"` | ||
| 20 | + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"` | ||
| 21 | + UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间"` | ||
| 22 | + AllowClose int8 `orm:"column(allow_close);null" description:"允许关闭公告(0允许,1禁止)"` | ||
| 23 | + AllowCondition int8 `orm:"column(allow_condition);null" description:"关闭条件 (1(bit 0):公告内容查看完 2(bit 1):回答完问题)"` | ||
| 24 | + CompanyId int64 `orm:"column(company_id);null" description:"公司Id"` | ||
| 25 | + Status uint8 `orm:"column(status)" description:"状态 1-下架 2-上架"` | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | +func (t *Bulletin) TableName() string { | ||
| 29 | + return "bulletin" | ||
| 30 | +} | ||
| 31 | + | ||
| 32 | +func init() { | ||
| 33 | + orm.RegisterModel(new(Bulletin)) | ||
| 34 | +} | ||
| 35 | + | ||
| 36 | +// AddBulletin insert a new Bulletin into database and returns | ||
| 37 | +// last inserted Id on success. | ||
| 38 | +func AddBulletin(m *Bulletin) (id int64, err error) { | ||
| 39 | + o := orm.NewOrm() | ||
| 40 | + id, err = o.Insert(m) | ||
| 41 | + return | ||
| 42 | +} | ||
| 43 | + | ||
| 44 | +// GetBulletinById retrieves Bulletin by Id. Returns error if | ||
| 45 | +// Id doesn't exist | ||
| 46 | +func GetBulletinById(id int) (v *Bulletin, err error) { | ||
| 47 | + o := orm.NewOrm() | ||
| 48 | + v = &Bulletin{Id: id} | ||
| 49 | + if err = o.Read(v); err == nil { | ||
| 50 | + return v, nil | ||
| 51 | + } | ||
| 52 | + return nil, err | ||
| 53 | +} | ||
| 54 | + | ||
| 55 | +// UpdateBulletin updates Bulletin by Id and returns error if | ||
| 56 | +// the record to be updated doesn't exist | ||
| 57 | +func UpdateBulletinById(m *Bulletin) (err error) { | ||
| 58 | + o := orm.NewOrm() | ||
| 59 | + v := Bulletin{Id: m.Id} | ||
| 60 | + // ascertain id exists in the database | ||
| 61 | + if err = o.Read(&v); err == nil { | ||
| 62 | + var num int64 | ||
| 63 | + if num, err = o.Update(m); err == nil { | ||
| 64 | + fmt.Println("Number of records updated in database:", num) | ||
| 65 | + } | ||
| 66 | + } | ||
| 67 | + return | ||
| 68 | +} | ||
| 69 | + | ||
| 70 | +// DeleteBulletin deletes Bulletin by Id and returns error if | ||
| 71 | +// the record to be deleted doesn't exist | ||
| 72 | +func DeleteBulletin(id int) (err error) { | ||
| 73 | + o := orm.NewOrm() | ||
| 74 | + v := Bulletin{Id: id} | ||
| 75 | + // ascertain id exists in the database | ||
| 76 | + if err = o.Read(&v); err == nil { | ||
| 77 | + var num int64 | ||
| 78 | + if num, err = o.Delete(&Bulletin{Id: id}); err == nil { | ||
| 79 | + fmt.Println("Number of records deleted in database:", num) | ||
| 80 | + } | ||
| 81 | + } | ||
| 82 | + return | ||
| 83 | +} | ||
| 84 | + | ||
| 85 | +func GetBulletins(companyId int64, status int8, page, pageSize int) (v []*Bulletin, total int, err error) { | ||
| 86 | + sql := "select * from bulletin where (status=? or ?==0) and company_id =? order by create_at desc limit ?,?" | ||
| 87 | + o := orm.NewOrm() | ||
| 88 | + if _, err = o.Raw(sql, status, companyId, page-1, pageSize).QueryRows(&v); err != nil { | ||
| 89 | + return | ||
| 90 | + } | ||
| 91 | + | ||
| 92 | + sqlTotal := "select count(1) from bulletin where (status=? or ?==0) and company_id =?" | ||
| 93 | + if _, err = o.Raw(sqlTotal, status, companyId).QueryRows(&total); err != nil { | ||
| 94 | + return | ||
| 95 | + } | ||
| 96 | + return | ||
| 97 | +} |
models/bulletin_question.go
0 → 100644
| 1 | +package models | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "time" | ||
| 6 | + | ||
| 7 | + "github.com/astaxie/beego/orm" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +type BulletinQuestion struct { | ||
| 11 | + Id int `orm:"column(id);auto"` | ||
| 12 | + BulletinId int `orm:"column(bulletin_id);null" description:"公告id"` | ||
| 13 | + Type int8 `orm:"column(type);null" description:"类型:0-单选,1-多选"` | ||
| 14 | + Title string `orm:"column(title);size(2000);null" description:"标题"` | ||
| 15 | + Content string `orm:"column(content);size(2000);null" description:"内容"` | ||
| 16 | + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"` | ||
| 17 | + UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间"` | ||
| 18 | + MustRead int8 `orm:"column(must_read);null" description:"公告内容看完才可以关闭 1:是 0:否"` | ||
| 19 | + MustAnswer int8 `orm:"column(must_answer);null" description:"回答完问题才可以关闭 1:是 0:否"` | ||
| 20 | +} | ||
| 21 | + | ||
| 22 | +func (t *BulletinQuestion) TableName() string { | ||
| 23 | + return "bulletin_question" | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +func init() { | ||
| 27 | + orm.RegisterModel(new(BulletinQuestion)) | ||
| 28 | +} | ||
| 29 | + | ||
| 30 | +// AddBulletinQuestion insert a new BulletinQuestion into database and returns | ||
| 31 | +// last inserted Id on success. | ||
| 32 | +func AddBulletinQuestion(m *BulletinQuestion) (id int64, err error) { | ||
| 33 | + o := orm.NewOrm() | ||
| 34 | + id, err = o.Insert(m) | ||
| 35 | + return | ||
| 36 | +} | ||
| 37 | + | ||
| 38 | +// GetBulletinQuestionById retrieves BulletinQuestion by Id. Returns error if | ||
| 39 | +// Id doesn't exist | ||
| 40 | +func GetBulletinQuestionById(id int) (v *BulletinQuestion, err error) { | ||
| 41 | + o := orm.NewOrm() | ||
| 42 | + v = &BulletinQuestion{Id: id} | ||
| 43 | + if err = o.Read(v); err == nil { | ||
| 44 | + return v, nil | ||
| 45 | + } | ||
| 46 | + return nil, err | ||
| 47 | +} | ||
| 48 | + | ||
| 49 | +// UpdateBulletinQuestion updates BulletinQuestion by Id and returns error if | ||
| 50 | +// the record to be updated doesn't exist | ||
| 51 | +func UpdateBulletinQuestionById(m *BulletinQuestion) (err error) { | ||
| 52 | + o := orm.NewOrm() | ||
| 53 | + v := BulletinQuestion{Id: m.Id} | ||
| 54 | + // ascertain id exists in the database | ||
| 55 | + if err = o.Read(&v); err == nil { | ||
| 56 | + var num int64 | ||
| 57 | + if num, err = o.Update(m); err == nil { | ||
| 58 | + fmt.Println("Number of records updated in database:", num) | ||
| 59 | + } | ||
| 60 | + } | ||
| 61 | + return | ||
| 62 | +} | ||
| 63 | + | ||
| 64 | +// DeleteBulletinQuestion deletes BulletinQuestion by Id and returns error if | ||
| 65 | +// the record to be deleted doesn't exist | ||
| 66 | +func DeleteBulletinQuestion(id int) (err error) { | ||
| 67 | + o := orm.NewOrm() | ||
| 68 | + v := BulletinQuestion{Id: id} | ||
| 69 | + // ascertain id exists in the database | ||
| 70 | + if err = o.Read(&v); err == nil { | ||
| 71 | + var num int64 | ||
| 72 | + if num, err = o.Delete(&BulletinQuestion{Id: id}); err == nil { | ||
| 73 | + fmt.Println("Number of records deleted in database:", num) | ||
| 74 | + } | ||
| 75 | + } | ||
| 76 | + return | ||
| 77 | +} | ||
| 78 | + | ||
| 79 | +func GetBulletinQuestionByBulletinId(id int) (v *BulletinQuestion, err error) { | ||
| 80 | + o := orm.NewOrm() | ||
| 81 | + sql := "select * from bulletin_question where bulletin_id=?" | ||
| 82 | + if err = o.Raw(sql, id).QueryRow(&v); err == nil { | ||
| 83 | + return v, nil | ||
| 84 | + } | ||
| 85 | + return nil, err | ||
| 86 | +} |
models/bulletin_question_answer.go
0 → 100644
| 1 | +package models | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "time" | ||
| 6 | + | ||
| 7 | + "github.com/astaxie/beego/orm" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +type BulletinQuestionAnswer struct { | ||
| 11 | + Id int `orm:"column(id);auto"` | ||
| 12 | + Answer string `orm:"column(answer);null" description:"答案"` | ||
| 13 | + BulletinId int `orm:"column(bulletin_id);null" description:"公告id"` | ||
| 14 | + BulletinQuestionId int `orm:"column(bulletin_question_id);null" description:"公告问题id"` | ||
| 15 | + Uid int64 `orm:"column(uid);null" description:"用户id"` | ||
| 16 | + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"` | ||
| 17 | + UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"更新时间"` | ||
| 18 | +} | ||
| 19 | + | ||
| 20 | +func (t *BulletinQuestionAnswer) TableName() string { | ||
| 21 | + return "bulletin_question_answer" | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | +func init() { | ||
| 25 | + orm.RegisterModel(new(BulletinQuestionAnswer)) | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | +// AddBulletinQuestionAnswer insert a new BulletinQuestionAnswer into database and returns | ||
| 29 | +// last inserted Id on success. | ||
| 30 | +func AddBulletinQuestionAnswer(m *BulletinQuestionAnswer) (id int64, err error) { | ||
| 31 | + o := orm.NewOrm() | ||
| 32 | + id, err = o.Insert(m) | ||
| 33 | + return | ||
| 34 | +} | ||
| 35 | + | ||
| 36 | +// GetBulletinQuestionAnswerById retrieves BulletinQuestionAnswer by Id. Returns error if | ||
| 37 | +// Id doesn't exist | ||
| 38 | +func GetBulletinQuestionAnswerById(id int) (v *BulletinQuestionAnswer, err error) { | ||
| 39 | + o := orm.NewOrm() | ||
| 40 | + v = &BulletinQuestionAnswer{Id: id} | ||
| 41 | + if err = o.Read(v); err == nil { | ||
| 42 | + return v, nil | ||
| 43 | + } | ||
| 44 | + return nil, err | ||
| 45 | +} | ||
| 46 | + | ||
| 47 | +// UpdateBulletinQuestionAnswer updates BulletinQuestionAnswer by Id and returns error if | ||
| 48 | +// the record to be updated doesn't exist | ||
| 49 | +func UpdateBulletinQuestionAnswerById(m *BulletinQuestionAnswer) (err error) { | ||
| 50 | + o := orm.NewOrm() | ||
| 51 | + v := BulletinQuestionAnswer{Id: m.Id} | ||
| 52 | + // ascertain id exists in the database | ||
| 53 | + if err = o.Read(&v); err == nil { | ||
| 54 | + var num int64 | ||
| 55 | + if num, err = o.Update(m); err == nil { | ||
| 56 | + fmt.Println("Number of records updated in database:", num) | ||
| 57 | + } | ||
| 58 | + } | ||
| 59 | + return | ||
| 60 | +} | ||
| 61 | + | ||
| 62 | +// DeleteBulletinQuestionAnswer deletes BulletinQuestionAnswer by Id and returns error if | ||
| 63 | +// the record to be deleted doesn't exist | ||
| 64 | +func DeleteBulletinQuestionAnswer(id int) (err error) { | ||
| 65 | + o := orm.NewOrm() | ||
| 66 | + v := BulletinQuestionAnswer{Id: id} | ||
| 67 | + // ascertain id exists in the database | ||
| 68 | + if err = o.Read(&v); err == nil { | ||
| 69 | + var num int64 | ||
| 70 | + if num, err = o.Delete(&BulletinQuestionAnswer{Id: id}); err == nil { | ||
| 71 | + fmt.Println("Number of records deleted in database:", num) | ||
| 72 | + } | ||
| 73 | + } | ||
| 74 | + return | ||
| 75 | +} |
| @@ -113,3 +113,7 @@ func getUserNameByIds(ids []int64) ([]User, error) { | @@ -113,3 +113,7 @@ func getUserNameByIds(ids []int64) ([]User, error) { | ||
| 113 | } | 113 | } |
| 114 | return users, err | 114 | return users, err |
| 115 | } | 115 | } |
| 116 | + | ||
| 117 | +func GetUserNameByIds(ids []int64) ([]User, error) { | ||
| 118 | + return getUserNameByIds(ids) | ||
| 119 | +} |
| @@ -87,6 +87,6 @@ func GetUserCompanyBy(userid int64, companyId int64) (*UserCompany, error) { | @@ -87,6 +87,6 @@ func GetUserCompanyBy(userid int64, companyId int64) (*UserCompany, error) { | ||
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | func GetUserCompanyByUser(userid int64) ([]UserCompany, error) { | 89 | func GetUserCompanyByUser(userid int64) ([]UserCompany, error) { |
| 90 | - datasql := `` | 90 | + //datasql := `` |
| 91 | return nil, nil | 91 | return nil, nil |
| 92 | } | 92 | } |
protocol/bulletin.go
0 → 100644
| 1 | +package protocol | ||
| 2 | + | ||
| 3 | +/*BulletinRelease */ | ||
| 4 | +type BulletinReleaseRequest struct { | ||
| 5 | + Id int `json:"id"` | ||
| 6 | + Type int `json:"type" valid:"Required"` | ||
| 7 | + Title string `json:"title" valid:"Required"` | ||
| 8 | + Content string `json:"content" valid:"Required"` | ||
| 9 | + AllowClose int `json:"allow_close"` | ||
| 10 | + AllowCondition int `json:"allow_condition"` | ||
| 11 | + QuestionSwitch int `json:"question_switch"` | ||
| 12 | + Receiver []string `json:"receiver" valid:"Required"` | ||
| 13 | + Question Question `json:"question"` | ||
| 14 | + Cover Cover `json:"cover" valid:"Required"` | ||
| 15 | +} | ||
| 16 | +type Question struct { | ||
| 17 | + Id int `json:"id"` | ||
| 18 | + Type int `json:"type" valid:"Required"` | ||
| 19 | + Title string `json:"title" valid:"Required"` | ||
| 20 | + Content []QuestionContent `json:"content" valid:"Required"` | ||
| 21 | +} | ||
| 22 | +type QuestionContent struct { | ||
| 23 | + Id int | ||
| 24 | + Content string | ||
| 25 | +} | ||
| 26 | +type Cover struct { | ||
| 27 | + Path string `json:"path"` | ||
| 28 | + H int `json:"h"` | ||
| 29 | + W int `json:"w"` | ||
| 30 | +} | ||
| 31 | +type BulletinReleaseResponse struct { | ||
| 32 | +} | ||
| 33 | + | ||
| 34 | +/*BulletinList */ | ||
| 35 | +type BulletinListRequest struct { | ||
| 36 | + Status int8 `json:"status"` //1:待上架 2:上架 | ||
| 37 | + Page int `json:"page"` | ||
| 38 | + PageSize int `json:"page_size"` | ||
| 39 | +} | ||
| 40 | +type BulletinListResponse struct { | ||
| 41 | + List []*BulletinItem `json:"list"` | ||
| 42 | + Total int | ||
| 43 | +} | ||
| 44 | + | ||
| 45 | +type BulletinItem struct { | ||
| 46 | + Id int `json:"id"` | ||
| 47 | + Type int8 `json:"type"` | ||
| 48 | + Title string `json:"title"` | ||
| 49 | + Status int8 `json:"status"` | ||
| 50 | + Receiver []string `json:"receiver" valid:"Required"` | ||
| 51 | + CreateAt string `json:"time"` | ||
| 52 | +} | ||
| 53 | + | ||
| 54 | +/*GetBulletin */ | ||
| 55 | +type GetBulletinRequest struct { | ||
| 56 | +} | ||
| 57 | +type GetBulletinResponse struct { | ||
| 58 | + Id int `json:"id"` | ||
| 59 | + Type int `json:"type" valid:"Required"` | ||
| 60 | + Title string `json:"title" valid:"Required"` | ||
| 61 | + Content string `json:"content" valid:"Required"` | ||
| 62 | + AllowClose int `json:"allow_close"` | ||
| 63 | + AllowCondition int `json:"allow_condition"` | ||
| 64 | + QuestionSwitch int `json:"question_switch"` | ||
| 65 | + Receiver []string `json:"receiver" valid:"Required"` | ||
| 66 | + Question Question `json:"question"` | ||
| 67 | + Cover Cover `json:"cover" valid:"Required"` | ||
| 68 | +} | ||
| 69 | + | ||
| 70 | +/*UpdateBulletin */ | ||
| 71 | +type UpdateBulletinRequest struct { | ||
| 72 | + Id int `json:"id" valid:"Required"` | ||
| 73 | + Type int `json:"type" valid:"Required"` | ||
| 74 | + Title string `json:"title" valid:"Required"` | ||
| 75 | + Content string `json:"content" valid:"Required"` | ||
| 76 | + AllowClose int `json:"allow_close"` | ||
| 77 | + AllowCondition int `json:"allow_condition"` | ||
| 78 | + QuestionSwitch int `json:"question_switch"` | ||
| 79 | + Receiver []string `json:"receiver" valid:"Required"` | ||
| 80 | + Question Question `json:"question"` | ||
| 81 | + Cover Cover `json:"cover" valid:"Required"` | ||
| 82 | +} | ||
| 83 | +type UpdateBulletinResponse struct { | ||
| 84 | +} |
| @@ -36,6 +36,12 @@ func init() { | @@ -36,6 +36,12 @@ func init() { | ||
| 36 | beego.NSRouter("/change_company", &controllers.AuthController{}, "post:ChangeCompany"), | 36 | beego.NSRouter("/change_company", &controllers.AuthController{}, "post:ChangeCompany"), |
| 37 | beego.NSRouter("/refresh_token", &controllers.AuthController{}, "post:RefreshToken"), | 37 | beego.NSRouter("/refresh_token", &controllers.AuthController{}, "post:RefreshToken"), |
| 38 | ), | 38 | ), |
| 39 | + beego.NSNamespace("/bulletin", | ||
| 40 | + beego.NSRouter("/release", &controllers.BulletinController{}, "post:BulletinRelease"), | ||
| 41 | + beego.NSRouter("/list", &controllers.BulletinController{}, "post:BulletinList"), | ||
| 42 | + beego.NSRouter("/:id([0-9]+)", &controllers.BulletinController{}, "get:GetBulletin"), | ||
| 43 | + beego.NSRouter("/update", &controllers.BulletinController{}, "get:UpdateBulletin"), | ||
| 44 | + ), | ||
| 39 | ) | 45 | ) |
| 40 | 46 | ||
| 41 | nsAuth := beego.NewNamespace("/auth", | 47 | nsAuth := beego.NewNamespace("/auth", |
| @@ -228,7 +228,7 @@ func LoginAuthByUCenter(account, password string) (protocol.LoginAuthToken, erro | @@ -228,7 +228,7 @@ func LoginAuthByUCenter(account, password string) (protocol.LoginAuthToken, erro | ||
| 228 | uclientReturn ucenter.ResponseLogin | 228 | uclientReturn ucenter.ResponseLogin |
| 229 | ) | 229 | ) |
| 230 | 230 | ||
| 231 | - _, err := models.GetUserByPhone(account) | 231 | + _, err = models.GetUserByPhone(account) |
| 232 | if err != nil { | 232 | if err != nil { |
| 233 | log.Debug("GetUserByPhone(%s) err:%s", account, err) | 233 | log.Debug("GetUserByPhone(%s) err:%s", account, err) |
| 234 | return logintoken, protocol.NewErrWithMessage("10021") | 234 | return logintoken, protocol.NewErrWithMessage("10021") |
services/bulletin/bulletin.go
0 → 100644
| 1 | +package bulletin | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "encoding/json" | ||
| 5 | + orm2 "github.com/astaxie/beego/orm" | ||
| 6 | + "oppmg/common/log" | ||
| 7 | + "oppmg/models" | ||
| 8 | + "oppmg/protocol" | ||
| 9 | + "strconv" | ||
| 10 | + "time" | ||
| 11 | +) | ||
| 12 | + | ||
| 13 | +//发布公告 | ||
| 14 | +func BulletinRelease(uid, companyId int64, request *protocol.BulletinReleaseRequest) (rsp *protocol.BulletinReleaseResponse, err error) { | ||
| 15 | + var ( | ||
| 16 | + bulletin *models.Bulletin | ||
| 17 | + bulletinQuestion *models.BulletinQuestion | ||
| 18 | + receiver, questionContent []byte | ||
| 19 | + id int64 | ||
| 20 | + ) | ||
| 21 | + //TODO:check role_menu | ||
| 22 | + if receiver, err = json.Marshal(request.Receiver); err != nil { | ||
| 23 | + log.Error(err.Error()) | ||
| 24 | + return | ||
| 25 | + } | ||
| 26 | + bulletin = &models.Bulletin{ | ||
| 27 | + Title: request.Title, | ||
| 28 | + Type: int8(request.Type), | ||
| 29 | + Content: request.Content, | ||
| 30 | + Cover: request.Cover.Path, | ||
| 31 | + H: request.Cover.H, | ||
| 32 | + W: request.Cover.W, | ||
| 33 | + Receiver: string(receiver), | ||
| 34 | + QuestionSwitch: int8(request.QuestionSwitch), | ||
| 35 | + AllowCondition: int8(request.AllowCondition), | ||
| 36 | + AllowClose: int8(request.AllowClose), | ||
| 37 | + CompanyId: companyId, | ||
| 38 | + CreateAt: time.Now(), | ||
| 39 | + UpdateAt: time.Now(), | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + orm := orm2.NewOrm() | ||
| 43 | + orm.Begin() | ||
| 44 | + if id, err = orm.Insert(bulletin); err != nil { | ||
| 45 | + log.Error(err.Error()) | ||
| 46 | + orm.Rollback() | ||
| 47 | + } | ||
| 48 | + if request.QuestionSwitch == 1 { | ||
| 49 | + if len(request.Question.Content) == 0 { | ||
| 50 | + err = protocol.NewErrWithMessage("1") | ||
| 51 | + log.Error("BulletinRelease:question.content not empty.", uid) | ||
| 52 | + return | ||
| 53 | + } | ||
| 54 | + if questionContent, err = json.Marshal(request.Question.Content); err != nil { | ||
| 55 | + log.Error(err.Error()) | ||
| 56 | + return | ||
| 57 | + } | ||
| 58 | + bulletinQuestion = &models.BulletinQuestion{ | ||
| 59 | + BulletinId: int(id), | ||
| 60 | + Type: int8(request.Question.Type), | ||
| 61 | + Title: request.Question.Title, | ||
| 62 | + Content: string(questionContent), | ||
| 63 | + CreateAt: time.Now(), | ||
| 64 | + UpdateAt: time.Now(), | ||
| 65 | + } | ||
| 66 | + if _, err = orm.Insert(bulletinQuestion); err != nil { | ||
| 67 | + log.Error(err.Error()) | ||
| 68 | + orm.Rollback() | ||
| 69 | + } | ||
| 70 | + } | ||
| 71 | + //TODO:发送公告消息 | ||
| 72 | + orm.Commit() | ||
| 73 | + rsp = &protocol.BulletinReleaseResponse{} | ||
| 74 | + return | ||
| 75 | +} | ||
| 76 | + | ||
| 77 | +//公告列表 | ||
| 78 | +func BulletinList(uid, companyId int64, request *protocol.BulletinListRequest) (rsp *protocol.BulletinListResponse, err error) { | ||
| 79 | + var ( | ||
| 80 | + list []*models.Bulletin | ||
| 81 | + total int | ||
| 82 | + ) | ||
| 83 | + if request.Page == 0 { | ||
| 84 | + request.Page = 1 | ||
| 85 | + } | ||
| 86 | + if request.PageSize == 0 { | ||
| 87 | + request.PageSize = 20 | ||
| 88 | + } | ||
| 89 | + if list, total, err = models.GetBulletins(companyId, request.Status, request.Page, request.PageSize); err != nil { | ||
| 90 | + log.Error(err.Error()) | ||
| 91 | + return | ||
| 92 | + } | ||
| 93 | + if len(list) == 0 { | ||
| 94 | + return | ||
| 95 | + } | ||
| 96 | + rsp = &protocol.BulletinListResponse{} | ||
| 97 | + for i := range list { | ||
| 98 | + bulletin := list[i] | ||
| 99 | + item := &protocol.BulletinItem{ | ||
| 100 | + Id: bulletin.Id, | ||
| 101 | + Type: bulletin.Type, | ||
| 102 | + Title: bulletin.Title, | ||
| 103 | + Status: int8(bulletin.Status), | ||
| 104 | + //TODO:user | ||
| 105 | + Receiver: []string{}, | ||
| 106 | + CreateAt: bulletin.CreateAt.Format("2006-01-02 15:04:05"), | ||
| 107 | + } | ||
| 108 | + if item.Receiver, err = getUsersName(bulletin.Receiver); err != nil { | ||
| 109 | + log.Error(err.Error()) | ||
| 110 | + continue | ||
| 111 | + } | ||
| 112 | + rsp.List = append(rsp.List, item) | ||
| 113 | + } | ||
| 114 | + rsp.Total = total | ||
| 115 | + return | ||
| 116 | +} | ||
| 117 | + | ||
| 118 | +func getUsers(idsstr string) (v []models.User, err error) { | ||
| 119 | + var idlist []string | ||
| 120 | + var ids []int64 | ||
| 121 | + var id int64 | ||
| 122 | + if err = json.Unmarshal([]byte(idsstr), &idlist); err != nil { | ||
| 123 | + return | ||
| 124 | + } | ||
| 125 | + for i := 0; i < len(idlist); i++ { | ||
| 126 | + if id, err = strconv.ParseInt(idlist[i], 10, 64); err != nil { | ||
| 127 | + return | ||
| 128 | + } | ||
| 129 | + ids = append(ids, id) | ||
| 130 | + } | ||
| 131 | + return models.GetUserNameByIds(ids) | ||
| 132 | +} | ||
| 133 | + | ||
| 134 | +func getUsersName(idsStr string) (v []string, err error) { | ||
| 135 | + var users []models.User | ||
| 136 | + if users, err = getUsers(idsStr); err != nil { | ||
| 137 | + return | ||
| 138 | + } | ||
| 139 | + for i := range users { | ||
| 140 | + v = append(v, users[i].NickName) | ||
| 141 | + } | ||
| 142 | + return | ||
| 143 | +} | ||
| 144 | + | ||
| 145 | +//公告详情 | ||
| 146 | +func GetBulletin(id int, companyId int64, request *protocol.GetBulletinRequest) (rsp *protocol.GetBulletinResponse, err error) { | ||
| 147 | + var ( | ||
| 148 | + bulletin *models.Bulletin | ||
| 149 | + question *models.BulletinQuestion | ||
| 150 | + ) | ||
| 151 | + if bulletin, err = models.GetBulletinById(id); err != nil { | ||
| 152 | + log.Error(err.Error()) | ||
| 153 | + return | ||
| 154 | + } | ||
| 155 | + if bulletin.CompanyId != companyId { | ||
| 156 | + err = protocol.NewErrWithMessage("1") | ||
| 157 | + log.Error("GetBulletin:company not equal:(%v!=%v)", companyId, bulletin.CompanyId) | ||
| 158 | + return | ||
| 159 | + } | ||
| 160 | + rsp = &protocol.GetBulletinResponse{} | ||
| 161 | + rsp = &protocol.GetBulletinResponse{ | ||
| 162 | + Id: bulletin.Id, | ||
| 163 | + Type: int(bulletin.Type), | ||
| 164 | + Title: bulletin.Title, | ||
| 165 | + Content: bulletin.Content, | ||
| 166 | + AllowClose: int(bulletin.AllowClose), | ||
| 167 | + AllowCondition: int(bulletin.AllowCondition), | ||
| 168 | + Cover: protocol.Cover{ | ||
| 169 | + Path: bulletin.Cover, | ||
| 170 | + W: bulletin.W, | ||
| 171 | + H: bulletin.H, | ||
| 172 | + }, | ||
| 173 | + } | ||
| 174 | + if bulletin.QuestionSwitch == 1 { | ||
| 175 | + if question, err = models.GetBulletinQuestionByBulletinId(bulletin.Id); err != nil { | ||
| 176 | + log.Error(err.Error()) | ||
| 177 | + return | ||
| 178 | + } | ||
| 179 | + rsp.QuestionSwitch = int(bulletin.QuestionSwitch) | ||
| 180 | + rsp.Question = protocol.Question{ | ||
| 181 | + Type: int(question.Type), | ||
| 182 | + Title: question.Title, | ||
| 183 | + } | ||
| 184 | + if err = json.Unmarshal([]byte(question.Content), &rsp.Question.Content); err != nil { | ||
| 185 | + log.Error(err.Error()) | ||
| 186 | + return | ||
| 187 | + } | ||
| 188 | + } | ||
| 189 | + if rsp.Receiver, err = getUsersName(bulletin.Receiver); err != nil { | ||
| 190 | + log.Error(err.Error()) | ||
| 191 | + return | ||
| 192 | + } | ||
| 193 | + return | ||
| 194 | +} | ||
| 195 | + | ||
| 196 | +//更新公告 | ||
| 197 | +func UpdateBulletin(companyId int64, request *protocol.UpdateBulletinRequest) (rsp *protocol.UpdateBulletinResponse, err error) { | ||
| 198 | + var ( | ||
| 199 | + bulletin *models.Bulletin | ||
| 200 | + bulletinQuestion *models.BulletinQuestion | ||
| 201 | + receiver, questionContent []byte | ||
| 202 | + ) | ||
| 203 | + if bulletin, err = models.GetBulletinById(request.Id); err != nil { | ||
| 204 | + log.Error(err.Error()) | ||
| 205 | + return | ||
| 206 | + } | ||
| 207 | + if bulletin.CompanyId != companyId { | ||
| 208 | + err = protocol.NewErrWithMessage("1") | ||
| 209 | + log.Error("GetBulletin:company not equal:(%v!=%v)", companyId, bulletin.CompanyId) | ||
| 210 | + return | ||
| 211 | + } | ||
| 212 | + | ||
| 213 | + if receiver, err = json.Marshal(request.Receiver); err != nil { | ||
| 214 | + log.Error(err.Error()) | ||
| 215 | + return | ||
| 216 | + } | ||
| 217 | + //update | ||
| 218 | + { | ||
| 219 | + bulletin.Title = request.Title | ||
| 220 | + bulletin.Type = int8(request.Type) | ||
| 221 | + bulletin.Content = request.Content | ||
| 222 | + bulletin.Cover = request.Cover.Path | ||
| 223 | + bulletin.H = request.Cover.H | ||
| 224 | + bulletin.W = request.Cover.W | ||
| 225 | + bulletin.Receiver = string(receiver) | ||
| 226 | + bulletin.QuestionSwitch = int8(request.QuestionSwitch) | ||
| 227 | + bulletin.AllowCondition = int8(request.AllowCondition) | ||
| 228 | + bulletin.AllowClose = int8(request.AllowClose) | ||
| 229 | + bulletin.UpdateAt = time.Now() | ||
| 230 | + if err = models.UpdateBulletinById(bulletin); err != nil { | ||
| 231 | + log.Error(err.Error()) | ||
| 232 | + return | ||
| 233 | + } | ||
| 234 | + } | ||
| 235 | + | ||
| 236 | + if bulletin.QuestionSwitch == 1 { | ||
| 237 | + if bulletinQuestion, err = models.GetBulletinQuestionByBulletinId(bulletin.Id); err != nil { | ||
| 238 | + log.Error(err.Error()) | ||
| 239 | + return | ||
| 240 | + } | ||
| 241 | + if questionContent, err = json.Marshal(request.Question.Content); err != nil { | ||
| 242 | + log.Error(err.Error()) | ||
| 243 | + return | ||
| 244 | + } | ||
| 245 | + bulletinQuestion.Content = string(questionContent) | ||
| 246 | + bulletinQuestion.Type = int8(request.Question.Type) | ||
| 247 | + if err = models.UpdateBulletinQuestionById(bulletinQuestion); err != nil { | ||
| 248 | + log.Error(err.Error()) | ||
| 249 | + return | ||
| 250 | + } | ||
| 251 | + } | ||
| 252 | + return | ||
| 253 | +} |
-
请 注册 或 登录 后发表评论