achievement.go
4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package models
import (
"fmt"
"opp/internal/utils"
"time"
"github.com/astaxie/beego/orm"
)
type Achievement struct {
Id int64 `orm:"column(id);pk" description:"id 主键"`
CompanyId int64 `orm:"column(company_id);null" description:"公司编号 表company.id"`
UserCompanyId int64 `orm:"column(user_company_id)" description:"把握人 表user_company.id id"`
ChanceTypeId int `orm:"column(chance_type_id);null" description:"表chance_type.id 机会类型 "`
AuditTemplateId int `orm:"column(audit_template_id);null" description:"表audit_template.id 所属审批模板编号"`
SourceContent string `orm:"column(source_content);null" description:"成果详情文本"`
GraspScore float64 `orm:"column(grasp_score);digits(4);decimals(1)" description:"把握分"`
UserGraspScore float64 `orm:"column(user_grasp_score);digits(4);decimals(1)" description:"把握人得分"`
UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"`
CreateAt time.Time `orm:"column(create_at);type(timestamp)" description:"创建时间"`
ViewTotal int `orm:"column(view_total);null" description:"查看总数"`
CommentTotal int `orm:"column(comment_total);null" description:"评论总数"`
ZanTotal int `orm:"column(zan_total);null" description:"点赞总数"`
Status int8 `orm:"column(status);null" description:"机会状态 1:开启 2:关闭 0:删除"`
}
func (t *Achievement) TableName() string {
return "achievement"
}
func init() {
orm.RegisterModel(new(Achievement))
}
// GetAchievementById retrieves Achievement by Id. Returns error if
// Id doesn't exist
func GetAchievementById(id int64) (v *Achievement, err error) {
o := orm.NewOrm()
v = &Achievement{Id: id}
if err = o.Read(v); err == nil {
return v, nil
}
return nil, err
}
// UpdateAchievement updates Achievement by Id and returns error if
// the record to be updated doesn't exist
func UpdateAchievementById(m *Achievement) (err error) {
o := orm.NewOrm()
v := Achievement{Id: m.Id}
// ascertain id exists in the database
if err = o.Read(&v); err == nil {
var num int64
if num, err = o.Update(m); err == nil {
fmt.Println("Number of records updated in database:", num)
}
}
return
}
//成果列表
//@uid 成果把握人
//@cid 公司编号
//@lastId 最后编号
//@chanceTypeId 机会一级分类编号
//@departmentId 部门编号
func GetAchievementAll(uid, cid int64, chanceTypeId int, lastId int64, departmentId []int, pageSize int, v interface{}) (total int, err error) {
var filter = utils.NewSqlExutor()
filter.Where(fmt.Sprintf("company_id=%v", cid))
filter.Where("status=1")
if lastId > 0 {
filter.Where(fmt.Sprintf("id<%v", lastId))
}
if chanceTypeId > 0 {
filter.Where(fmt.Sprintf("chance_type_id =%v", chanceTypeId))
}
if len(departmentId) > 0 {
filter.Where(fmt.Sprintf("department_id in (%v)", utils.JoinInts(departmentId, ",")))
}
if uid > 0 {
filter.Where(fmt.Sprintf("user_company_id =%v", uid))
}
sql := fmt.Sprintf(`
select id,user_company_id,create_at,source_content,audit_template_id,chance_type_id,grasp_score,user_grasp_score,comment_total,zan_total,view_total,images from achievement
%v
order by create_at desc
limit %v
`, filter.WhereString(), pageSize)
sqlCount := fmt.Sprintf(`
select count(0) from achievement
%v
`, filter.WhereString())
if err = utils.ExecuteQueryOne(&total, sqlCount); err != nil {
return
}
if v != nil {
if err = utils.ExecuteQueryAll(v, sql); err != nil {
return
}
}
return
}
//成果详情
func GetCommAchievementItemOrmId(id int64, v interface{}) (err error) {
o := orm.NewOrm()
sql := "select * from achievement where id=?"
if _, err = o.Raw(sql, id).QueryRows(v); err == nil {
return nil
}
return err
}
//获取成果统计
func GetAchievementStatisticByChanceType(uid int64, v interface{}) (err error) {
o := orm.NewOrm()
sql := `select a.*,b.name from (
select chance_type_id,count(0) total from achievement where user_company_id =?
group by chance_type_id
)a inner join chance_type b on a.chance_type_id = b.id
order by sort_num`
if _, err = o.Raw(sql, uid).QueryRows(v); err == nil {
return nil
}
return err
}