作者 yangfu

模板可见修改 发现分精度问题

  1 +package utils
  2 +
  3 +import (
  4 + "fmt"
  5 + "math"
  6 + "strconv"
  7 +)
  8 +
  9 +func decimal(value float64) float64 {
  10 + return math.Trunc(value*1e1+0.5) * 1e-1
  11 +}
  12 +
  13 +func Decimal(value float64) float64 {
  14 + value = decimal(value)
  15 + value, _ = strconv.ParseFloat(fmt.Sprintf("%.1f", value), 64)
  16 + return value
  17 +}
  1 +package utils
  2 +
  3 +import "testing"
  4 +
  5 +func TestDecimal(t *testing.T) {
  6 + t.Log(Decimal(1.7999999))
  7 + t.Log(Decimal(1.7444444))
  8 + t.Log(Decimal(1.7555555))
  9 + t.Log(Decimal(1.3555555))
  10 + t.Log(Decimal(1.3000001))
  11 +}
@@ -8,20 +8,22 @@ import ( @@ -8,20 +8,22 @@ import (
8 ) 8 )
9 9
10 type AuditTemplate struct { 10 type AuditTemplate struct {
11 - Id int64 `orm:"column(id);pk" description:"唯一编号"`  
12 - CompanyId int `orm:"column(company_id)" description:"公司id"`  
13 - ChanceTypeId int `orm:"column(chance_type_id)" description:"机会类型编号"`  
14 - Name string `orm:"column(name);size(20)" description:"子分类名称"`  
15 - Code string `orm:"column(code);size(50);null" description:"编码"`  
16 - Doc string `orm:"column(doc);size(255)" description:"说明"`  
17 - Icon string `orm:"column(icon);size(255)" description:"图标"`  
18 - NoticeType int8 `orm:"column(notice_type)" description:"通知方式"`  
19 - NoApprover int8 `orm:"column(no_approver)" description:"审核人空时:【1:自动通过】【2:转交给管理员】"`  
20 - SortNum int `orm:"column(sort_num)" description:"自定义排序编号"`  
21 - VisibleType int8 `orm:"column(visible_type)" description:"可见范围 0:所有人 1:指定部门 "`  
22 - EnableStatus int8 `orm:"column(enable_status)" description:"是否有效 1:有效 0:无效"`  
23 - CreateAt time.Time `orm:"column(create_at);type(timestamp)" description:"创建时间"`  
24 - UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"` 11 + Id int64 `orm:"column(id);pk" description:"唯一编号"`
  12 + CompanyId int `orm:"column(company_id)" description:"公司id"`
  13 + ChanceTypeId int `orm:"column(chance_type_id)" description:"机会类型 chance_type.id"`
  14 + Name string `orm:"column(name);size(20)" description:"子分类名称"`
  15 + Doc string `orm:"column(doc);size(255)" description:"说明"`
  16 + Icon string `orm:"column(icon);size(255)" description:"图标"`
  17 + Code string `orm:"column(code);size(50);null" description:" 编码"`
  18 + NoticeType int8 `orm:"column(notice_type)" description:"通知方式"`
  19 + NoApprover int8 `orm:"column(no_approver)" description:"审核人空时:【1:自动通过】【2:转交给管理员】"`
  20 + SortNum int `orm:"column(sort_num)" description:"自定义排序编号"`
  21 + VisibleType int8 `orm:"column(visible_type)" description:"可见范围 0:所有人 1:指定部门 "`
  22 + VisibleObject string `orm:"column(visible_object);size(1000);null" description:"可见的对象 部门 指定人 json"`
  23 + EnableStatus int8 `orm:"column(enable_status)" description:"是否有效 1:有效 0:无效"`
  24 + Example string `orm:"column(example);null" description:"示例"`
  25 + CreateAt time.Time `orm:"column(create_at);type(timestamp)" description:"创建时间"`
  26 + UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"`
25 } 27 }
26 28
27 func (t *AuditTemplate) TableName() string { 29 func (t *AuditTemplate) TableName() string {
@@ -214,8 +214,9 @@ func Templates(header *protocol.RequestHeader, request *protocol.TemplatesReques @@ -214,8 +214,9 @@ func Templates(header *protocol.RequestHeader, request *protocol.TemplatesReques
214 } 214 }
215 for i := range templates { 215 for i := range templates {
216 item := templates[i] 216 item := templates[i]
217 - //TODO:检查模板可见  
218 - // 217 + if !checkVisible(header, item.VisibleObject) {
  218 + continue
  219 + }
219 //查询表单 220 //查询表单
220 if forms, err = models.GetAuditForms(header.CompanyId, item.Id); err != nil { 221 if forms, err = models.GetAuditForms(header.CompanyId, item.Id); err != nil {
221 log.Error(err) 222 log.Error(err)
@@ -227,7 +228,9 @@ func Templates(header *protocol.RequestHeader, request *protocol.TemplatesReques @@ -227,7 +228,9 @@ func Templates(header *protocol.RequestHeader, request *protocol.TemplatesReques
227 Icon: item.Icon, 228 Icon: item.Icon,
228 Doc: item.Doc, 229 Doc: item.Doc,
229 FormList: make([]*protocol.Form, len(forms)), 230 FormList: make([]*protocol.Form, len(forms)),
230 - Link: fmt.Sprintf("%v/#/ability/opportunity?id=%v", beego.AppConfig.String("h5_host"), item.Id), 231 + }
  232 + if len(item.Example) > 0 {
  233 + template.Link = fmt.Sprintf("%v/#/ability/opportunity?id=%v", beego.AppConfig.String("h5_host"), item.Id)
231 } 234 }
232 for j := range forms { 235 for j := range forms {
233 form := forms[j] 236 form := forms[j]
@@ -270,7 +273,9 @@ func Template(header *protocol.RequestHeader, request *protocol.TemplateRequest) @@ -270,7 +273,9 @@ func Template(header *protocol.RequestHeader, request *protocol.TemplateRequest)
270 Icon: item.Icon, 273 Icon: item.Icon,
271 Doc: item.Doc, 274 Doc: item.Doc,
272 FormList: make([]*protocol.Form, len(forms)), 275 FormList: make([]*protocol.Form, len(forms)),
273 - Link: fmt.Sprintf("%v/#/ability/opportunity?id=%v", beego.AppConfig.String("h5_host"), item.Id), 276 + }
  277 + if len(item.Example) > 0 {
  278 + template.Link = fmt.Sprintf("%v/#/ability/opportunity?id=%v", beego.AppConfig.String("h5_host"), item.Id)
274 } 279 }
275 for j := range forms { 280 for j := range forms {
276 form := forms[j] 281 form := forms[j]
@@ -287,6 +292,27 @@ func Template(header *protocol.RequestHeader, request *protocol.TemplateRequest) @@ -287,6 +292,27 @@ func Template(header *protocol.RequestHeader, request *protocol.TemplateRequest)
287 return 292 return
288 } 293 }
289 294
  295 +func checkVisible(header *protocol.RequestHeader, vb string) (result bool) {
  296 + var (
  297 + vObject []*protocol.VisibleObject
  298 + )
  299 + result = true
  300 + if len(vb) == 0 {
  301 + return
  302 + }
  303 + utils.JsonUnmarshal(vb, &vObject)
  304 + if len(vObject) == 0 {
  305 + return
  306 + }
  307 + for i := range vObject {
  308 + if vObject[i].Id == header.UserId {
  309 + return
  310 + }
  311 + }
  312 + result = false
  313 + return
  314 +}
  315 +
290 func checkTemplateIsVisible(header *protocol.RequestHeader, template *models.AuditTemplate) (result bool, err error) { 316 func checkTemplateIsVisible(header *protocol.RequestHeader, template *models.AuditTemplate) (result bool, err error) {
291 //if template.VisibleType == 317 //if template.VisibleType ==
292 return 318 return
@@ -843,7 +869,7 @@ func ChanceCalculateScore(header *protocol.RequestHeader, request *protocol.Chan @@ -843,7 +869,7 @@ func ChanceCalculateScore(header *protocol.RequestHeader, request *protocol.Chan
843 } 869 }
844 sum += scoreConfig.ValueScore.Max * scoreConfig.DiscoveryScore.ValueFactor 870 sum += scoreConfig.ValueScore.Max * scoreConfig.DiscoveryScore.ValueFactor
845 } 871 }
846 - rsp.DiscoveryScore = request.Score.BasicScore*scoreConfig.DiscoveryScore.BasicFactor + request.Score.ExtraScore*scoreConfig.DiscoveryScore.ExtraFactor + request.Score.ValueScore*scoreConfig.DiscoveryScore.ValueFactor 872 + rsp.DiscoveryScore = utils.Decimal(request.Score.BasicScore*scoreConfig.DiscoveryScore.BasicFactor + request.Score.ExtraScore*scoreConfig.DiscoveryScore.ExtraFactor + request.Score.ValueScore*scoreConfig.DiscoveryScore.ValueFactor)
847 rsp.DiscoveryScorePercent = int((rsp.DiscoveryScore / sum) * 100) 873 rsp.DiscoveryScorePercent = int((rsp.DiscoveryScore / sum) * 100)
848 log.Debug(fmt.Sprintf("计算发现-> score_config:%v score:%v 总分:%v 发现分:%v 发现分百分比:%v", common.AssertJson(scoreConfig), common.AssertJson(request.Score), sum, rsp.DiscoveryScore, rsp.DiscoveryScorePercent)) 874 log.Debug(fmt.Sprintf("计算发现-> score_config:%v score:%v 总分:%v 发现分:%v 发现分百分比:%v", common.AssertJson(scoreConfig), common.AssertJson(request.Score), sum, rsp.DiscoveryScore, rsp.DiscoveryScorePercent))
849 //发现分不为0 875 //发现分不为0