123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>service: Go Coverage Report</title>
- <style>
- body {
- background: black;
- color: rgb(80, 80, 80);
- }
- body, pre, #legend span {
- font-family: Menlo, monospace;
- font-weight: bold;
- }
- #topbar {
- background: black;
- position: fixed;
- top: 0; left: 0; right: 0;
- height: 42px;
- border-bottom: 1px solid rgb(80, 80, 80);
- }
- #content {
- margin-top: 50px;
- }
- #nav, #legend {
- float: left;
- margin-left: 10px;
- }
- #legend {
- margin-top: 12px;
- }
- #nav {
- margin-top: 10px;
- }
- #legend span {
- margin: 0 5px;
- }
- .cov0 { color: rgb(192, 0, 0) }
- .cov1 { color: rgb(128, 128, 128) }
- .cov2 { color: rgb(116, 140, 131) }
- .cov3 { color: rgb(104, 152, 134) }
- .cov4 { color: rgb(92, 164, 137) }
- .cov5 { color: rgb(80, 176, 140) }
- .cov6 { color: rgb(68, 188, 143) }
- .cov7 { color: rgb(56, 200, 146) }
- .cov8 { color: rgb(44, 212, 149) }
- .cov9 { color: rgb(32, 224, 152) }
- .cov10 { color: rgb(20, 236, 155) }
- </style>
- </head>
- <body>
- <div id="topbar">
- <div id="nav">
- <select id="files">
-
- <option value="file0">jyBXSubscribe/rpc/model/service/entity.go (0.0%)</option>
-
- <option value="file1">jyBXSubscribe/rpc/model/service/matchjob.go (0.0%)</option>
-
- <option value="file2">jyBXSubscribe/rpc/model/service/subscribe.go (57.1%)</option>
-
- </select>
- </div>
- <div id="legend">
- <span>not tracked</span>
-
- <span class="cov0">not covered</span>
- <span class="cov8">covered</span>
-
- </div>
- </div>
- <div id="content">
-
- <pre class="file" id="file0" style="display: none">package service
- import (
- util "app.yhyue.com/moapp/jybase/common"
- . "app.yhyue.com/moapp/jybase/mongodb"
- "app.yhyue.com/moapp/jybase/mysql"
- "github.com/zeromicro/go-zero/core/logx"
- )
- func ClearEnt() <span class="cov0" title="0">{
- Ents = map[int]*Ent{}
- EntUsers = map[int]*EntUser{}
- EntUserDept = map[int]*EntDeptUser{}
- EntDeptUsers = map[int][]*EntDeptUser{}
- EntRuleUsers = map[string][]*EntRuleUser{}
- EntUserRules = map[int][]*EntRuleUser{}
- EntDepts = map[int]*EntDept{}
- EntParentDept = map[int][]*EntDeptParent{}
- EntChildDept = map[int][]*EntDeptParent{}
- EntDeptDis = map[int][]*EntDistribute{}
- }</span>
- //
- func InitEnt(mysql *mysql.Mysql, mgo *MongodbSim, dbName string, entId, entUserId int) <span class="cov0" title="0">{
- InitEnts(mysql, entId)
- InitEntUsers(mysql, entUserId)
- InitEntDeptUsers(mysql, entUserId)
- InitEntRuleUsers(mysql, entUserId)
- InitEntDepts(mysql, entId)
- InitEntDeptParents(mysql, entId)
- InitEntDistribute(mgo, dbName, entId)
- }</span>
- ///////////////////////
- var Ents = map[int]*Ent{}
- type Ent struct {
- Id int
- Model int
- Name string
- DeptParent map[int][]int
- IsNew int
- }
- func InitEnts(Mysql *mysql.Mysql, entId int) <span class="cov0" title="0">{
- list := Mysql.SelectBySql("select id,model,name from entniche_info where id=? and isNew=1 and status=1 and model in (1,2)", entId)
- if list == nil </span><span class="cov0" title="0">{
- return
- }</span>
- <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
- id := util.IntAll(v["id"])
- Ents[id] = &Ent{
- Id: id,
- Model: util.IntAll(v["model"]),
- Name: util.ObjToString(v["name"]),
- }
- }</span>
- <span class="cov0" title="0">logx.Info("entniche_info加载完成!")</span>
- }
- var EntDepts = map[int]*EntDept{}
- type EntDept struct {
- Id int
- Pid int
- Name string
- Nodiff int
- Subdis int
- }
- func InitEntDepts(Mysql *mysql.Mysql, entId int) <span class="cov0" title="0">{
- list := Mysql.SelectBySql(`select id,name,pid,subdis,nodiff from entniche_department where ent_id=?`, entId)
- if list == nil </span><span class="cov0" title="0">{
- return
- }</span>
- <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
- id := util.IntAll(v["id"])
- EntDepts[id] = &EntDept{
- Id: id,
- Pid: util.IntAll(v["pid"]),
- Nodiff: util.IntAll(v["nodiff"]),
- Subdis: util.IntAll(v["subdis"]),
- Name: util.ObjToString(v["name"]),
- }
- }</span>
- <span class="cov0" title="0">logx.Info("entniche_department加载完成!")</span>
- }
- var EntUsers = map[int]*EntUser{}
- type EntUser struct {
- Id int
- Name string
- Mail string
- Phone string
- Power int
- }
- func InitEntUsers(Mysql *mysql.Mysql, entUserId int) <span class="cov0" title="0">{
- list := Mysql.SelectBySql(`select id,name,mail,phone,power from entniche_user where id=?`, entUserId)
- if list == nil </span><span class="cov0" title="0">{
- return
- }</span>
- <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
- id := util.IntAll(v["id"])
- EntUsers[id] = &EntUser{
- Id: id,
- Name: util.ObjToString(v["name"]),
- Mail: util.ObjToString(v["mail"]),
- Phone: util.ObjToString(v["phone"]),
- Power: util.IntAll(v["power"]),
- }
- }</span>
- <span class="cov0" title="0">logx.Info("entniche_user加载完成!")</span>
- }
- //我所有的父部门
- var EntParentDept = map[int][]*EntDeptParent{}
- //我所有的子部门
- var EntChildDept = map[int][]*EntDeptParent{}
- type EntDeptParent struct {
- Id int
- Pid int
- }
- func InitEntDeptParents(Mysql *mysql.Mysql, entId int) <span class="cov0" title="0">{
- list := Mysql.SelectBySql(`select a.id,a.pid from entniche_department_parent a inner join entniche_department b on (a.id=b.id and b.ent_id=?)`, entId)
- if list == nil </span><span class="cov0" title="0">{
- return
- }</span>
- <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
- id := util.IntAll(v["id"])
- pid := util.IntAll(v["pid"])
- EntParentDept[id] = append(EntParentDept[id], &EntDeptParent{
- Id: id,
- Pid: pid,
- })
- EntChildDept[pid] = append(EntChildDept[pid], &EntDeptParent{
- Id: id,
- Pid: pid,
- })
- }</span>
- <span class="cov0" title="0">logx.Info("entniche_department_parent加载完成!")</span>
- }
- var EntUserDept = map[int]*EntDeptUser{}
- var EntDeptUsers = map[int][]*EntDeptUser{}
- type EntDeptUser struct {
- UserId int
- DeptId int
- }
- func InitEntDeptUsers(Mysql *mysql.Mysql, entUserId int) <span class="cov0" title="0">{
- list := Mysql.SelectBySql(`select dept_id,user_id from entniche_department_user where user_id=?`, entUserId)
- if list == nil </span><span class="cov0" title="0">{
- return
- }</span>
- <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
- user_id := util.IntAll(v["user_id"])
- dept_id := util.IntAll(v["dept_id"])
- entDeptUser := &EntDeptUser{
- UserId: user_id,
- DeptId: dept_id,
- }
- EntUserDept[user_id] = entDeptUser
- EntDeptUsers[dept_id] = append(EntDeptUsers[dept_id], entDeptUser)
- }</span>
- <span class="cov0" title="0">logx.Info("entniche_department_user加载完成!")</span>
- }
- var EntRuleUsers = map[string][]*EntRuleUser{}
- var EntUserRules = map[int][]*EntRuleUser{}
- type EntRuleUser struct {
- UserId int
- RuleId string
- }
- func InitEntRuleUsers(Mysql *mysql.Mysql, entUserId int) <span class="cov0" title="0">{
- list := Mysql.SelectBySql(`select user_id,rule_id from entniche_user_rule where user_id=?`, entUserId)
- if list == nil </span><span class="cov0" title="0">{
- return
- }</span>
- <span class="cov0" title="0">for _, v := range *list </span><span class="cov0" title="0">{
- ruleId := util.ObjToString(v["rule_id"])
- userId := util.IntAll(v["user_id"])
- entRuleUser := &EntRuleUser{
- UserId: userId,
- RuleId: ruleId,
- }
- EntRuleUsers[ruleId] = append(EntRuleUsers[ruleId], entRuleUser)
- EntUserRules[userId] = append(EntUserRules[userId], entRuleUser)
- }</span>
- <span class="cov0" title="0">logx.Info("entniche_user_rule加载完成!")</span>
- }
- var EntDeptDis = map[int][]*EntDistribute{}
- type EntDistribute struct {
- Id string
- DeptId int
- Area map[string]interface{}
- Buyerclass []interface{}
- Items []string
- }
- func InitEntDistribute(mgo *MongodbSim, dbName string, entId int) <span class="cov0" title="0">{
- sess := mgo.GetMgoConn()
- defer mgo.DestoryMongoConn(sess)
- it := sess.DB(dbName).C("entniche_distribute").Find(map[string]interface{}{
- "i_status": map[string]interface{}{"$ne": 1},
- "i_entid": entId,
- }).Select(map[string]interface{}{
- "_id": 1,
- "i_entid": 1,
- "i_deptid": 1,
- "a_items": 1,
- "o_area": 1,
- "a_buyerclass": 1,
- }).Iter()
- for temp := make(map[string]interface{}); it.Next(&temp); </span><span class="cov0" title="0">{
- if temp["i_deptid"] == nil </span><span class="cov0" title="0">{
- continue</span>
- }
- <span class="cov0" title="0">deptId := util.IntAll(temp["i_deptid"])
- a_items, _ := temp["a_items"].([]interface{})
- o_area, _ := temp["o_area"].(map[string]interface{})
- a_buyerclass, _ := temp["a_buyerclass"].([]interface{})
- EntDeptDis[deptId] = append(EntDeptDis[deptId], &EntDistribute{
- Id: BsonIdToSId(temp["_id"]),
- DeptId: deptId,
- Area: o_area,
- Buyerclass: a_buyerclass,
- Items: util.ObjArrToStringArr(a_items),
- })
- temp = make(map[string]interface{})</span>
- }
- }
- </pre>
-
- <pre class="file" id="file1" style="display: none">package service
- import (
- util "app.yhyue.com/moapp/jybase/common"
- . "app.yhyue.com/moapp/jybase/mongodb"
- "app.yhyue.com/moapp/jybase/mysql"
- "github.com/zeromicro/go-zero/core/logx"
- IC "jyBXSubscribe/rpc/init"
- )
- var Mysql *mysql.Mysql
- var Mgo *MongodbSim
- //用户基本信息
- type UserInfo struct {
- Entniche *Entniche
- SubSet map[string]interface{}
- }
- //
- type Entniche struct {
- EntId int //企业id
- EntName string //企业名称
- DeptId int //部门id
- DeptName string //部门名称
- DisId string //分发id
- UserId int
- }
- type MatchJob struct {
- }
- func (m *MatchJob) Start(entId, entUserId int) (map[string]interface{}, int) <span class="cov0" title="0">{
- defer util.Catch()
- defer ClearEnt()
- InitEnt(IC.MainMysql, &IC.Mgo, "qfw", entId, entUserId)
- users := m.LoadSubSet(entId)
- return FinalSub(entUserId, users), EntUserDept[entUserId].DeptId
- }</span>
- func (m *MatchJob) LoadSubSet(entId int) map[*UserInfo]bool <span class="cov0" title="0">{
- defer util.Catch()
- Users := map[*UserInfo]bool{}
- sess := Mgo.GetMgoConn()
- defer Mgo.DestoryMongoConn(sess)
- it := sess.DB("qfw").C("entniche_rule").Find(map[string]interface{}{
- "i_entid": entId,
- }).Select(map[string]interface{}{
- "i_entid": 1,
- "i_deptid": 1,
- "i_userid": 1,
- "o_entniche": 1,
- }).Iter()
- for _temp := make(map[string]interface{}); it.Next(&_temp); </span><span class="cov0" title="0">{
- func(temp map[string]interface{}) </span><span class="cov0" title="0">{
- entId := util.IntAll(temp["i_entid"])
- deptId := util.IntAll(temp["i_deptid"])
- userId := util.IntAll(temp["i_userid"])
- if entId == 0 || (deptId == 0 && userId == 0) </span><span class="cov0" title="0">{
- return
- }</span> else<span class="cov0" title="0"> if Ents[entId] == nil </span><span class="cov0" title="0">{
- logx.Info("没有找到该企业", entId)
- return
- }</span>
- <span class="cov0" title="0">entName := Ents[entId].Name
- if deptId > 0 && EntDepts[deptId] == nil </span><span class="cov0" title="0">{
- logx.Info("没有找到该部门", entName, entId, deptId)
- return
- }</span>
- <span class="cov0" title="0">deptName := ""
- if EntDepts[deptId] != nil </span><span class="cov0" title="0">{
- deptName = EntDepts[deptId].Name
- }</span>
- <span class="cov0" title="0">subSet, _ := temp["o_entniche"].(map[string]interface{})
- if subSet == nil || len(subSet) == 0 </span><span class="cov0" title="0">{
- logx.Info("订阅设置为空,过滤掉", entName, entId, deptName, deptId, userId)
- return
- }</span>
- //
- <span class="cov0" title="0">if deptId > 0 </span><span class="cov0" title="0">{ //部门订阅
- if Ents[entId].Model != 1 </span><span class="cov0" title="0">{
- logx.Info("不是统一订阅模式,过滤掉", entName, entId, deptName, deptId)
- return
- }</span> else<span class="cov0" title="0"> if EntDepts[deptId] == nil </span><span class="cov0" title="0">{
- logx.Info("没有找到该部门,过滤掉", entName, entId, deptName, deptId)
- return
- }</span> else<span class="cov0" title="0"> if EntDepts[deptId].Subdis == 0 </span><span class="cov0" title="0">{
- logx.Info("该部门的订阅分发没有开启,过滤掉", entName, entId, deptName, deptId)
- return
- }</span> else<span class="cov0" title="0"> if EntDepts[deptId].Nodiff == 0 && EntDeptDis[deptId] == nil </span><span class="cov0" title="0">{
- logx.Info("该部门开启了订阅分发,没有开启全员无差别接收,但是没有分发规则,过滤掉", entName, entId, deptName, deptId)
- return
- }</span>
- //如果我的上级部门打开了订阅分发,并且开启了全员无差别接收,本部门规则无效
- <span class="cov0" title="0">for _, dept := range EntParentDept[deptId] </span><span class="cov0" title="0">{
- if EntDepts[dept.Pid].Subdis == 1 && EntDepts[dept.Pid].Nodiff == 1 </span><span class="cov0" title="0">{
- logx.Info("我的上级部门", dept.Pid, "开启了订阅分发和全员无差别,过滤掉", entName, entId, deptName, deptId)
- return
- }</span>
- }
- } else<span class="cov0" title="0"> if userId > 0 </span><span class="cov0" title="0">{ //个人订阅
- if Ents[entId].Model != 2 </span><span class="cov0" title="0">{
- logx.Info("不是个人订阅模式,过滤掉", entName, entId, userId)
- return
- }</span> else<span class="cov0" title="0"> if EntUsers[userId] == nil </span><span class="cov0" title="0">{
- logx.Info("没有找到该用户,过滤掉", entName, entId, userId)
- return
- }</span> else<span class="cov0" title="0"> if EntUsers[userId].Power == 0 </span><span class="cov0" title="0">{
- logx.Info("该用户没有权限,过滤掉", entName, entId, userId)
- return
- }</span>
- }
- <span class="cov0" title="0">user := &UserInfo{
- Entniche: &Entniche{
- EntId: entId,
- EntName: entName,
- DeptId: deptId,
- DeptName: deptName,
- UserId: userId,
- },
- SubSet: subSet,
- }
- logx.Info("加载订阅设置", "entId", entId, "entName", entName, "deptId", deptId, "deptName", deptName, "userId", userId)
- Users[user] = true
- if deptId <= 0 </span><span class="cov0" title="0">{
- return
- }</span>
- //分发规则
- <span class="cov0" title="0">if EntDepts[deptId].Nodiff == 1 </span><span class="cov0" title="0">{
- logx.Info("该部门开启了全员无差别,分发规则无效", entName, entId, deptName, deptId)
- return
- }</span> else<span class="cov0" title="0"> if EntDeptDis[deptId] == nil </span><span class="cov0" title="0">{
- logx.Info("该部门没有分发规则", entName, entId, deptName, deptId)
- return
- }</span>
- <span class="cov0" title="0">itemMap := map[string]interface{}{}
- items, _ := subSet["a_items"].([]interface{})
- for _, v := range items </span><span class="cov0" title="0">{
- item, _ := v.(map[string]interface{})
- if item == nil </span><span class="cov0" title="0">{
- continue</span>
- }
- <span class="cov0" title="0">item_name, _ := item["s_item"].(string)
- if item_name == "" </span><span class="cov0" title="0">{
- continue</span>
- }
- <span class="cov0" title="0">itemMap[item_name] = item</span>
- }
- <span class="cov0" title="0">for _, dis := range EntDeptDis[deptId] </span><span class="cov0" title="0">{
- child_items := []interface{}{}
- for _, item_name := range dis.Items </span><span class="cov0" title="0">{
- if itemMap[item_name] == nil </span><span class="cov0" title="0">{
- continue</span>
- }
- <span class="cov0" title="0">child_items = append(child_items, itemMap[item_name])</span>
- }
- <span class="cov0" title="0">child_subSet := map[string]interface{}{}
- if len(dis.Buyerclass) > 0 </span><span class="cov0" title="0">{
- child_subSet["a_buyerclass"] = dis.Buyerclass
- }</span>
- <span class="cov0" title="0">if len(dis.Area) > 0 </span><span class="cov0" title="0">{
- child_subSet["o_area"] = dis.Area
- }</span>
- <span class="cov0" title="0">if len(child_items) > 0 </span><span class="cov0" title="0">{
- child_subSet["a_items"] = child_items
- }</span>
- <span class="cov0" title="0">if len(child_subSet) == 0 </span><span class="cov0" title="0">{
- continue</span>
- }
- <span class="cov0" title="0">child_user := &UserInfo{
- Entniche: &Entniche{
- EntId: user.Entniche.EntId,
- EntName: user.Entniche.EntName,
- DeptId: user.Entniche.DeptId,
- DeptName: user.Entniche.DeptName,
- DisId: dis.Id,
- },
- SubSet: child_subSet,
- }
- Users[child_user] = true</span>
- }
- }(_temp)
- <span class="cov0" title="0">_temp = make(map[string]interface{})</span>
- }
- <span class="cov0" title="0">return Users</span>
- }
- func FinalSub(entUserId int, users map[*UserInfo]bool) map[string]interface{} <span class="cov0" title="0">{
- for k, _ := range users </span><span class="cov0" title="0">{
- if k.Entniche.DeptId > 0 </span><span class="cov0" title="0">{
- k.Entniche.DeptName = EntDepts[k.Entniche.DeptId].Name
- staffIds := GetDeptUserIds(&UserInfo{
- Entniche: &Entniche{
- EntId: k.Entniche.EntId,
- EntName: k.Entniche.EntName,
- DeptId: k.Entniche.DeptId,
- DeptName: k.Entniche.DeptName,
- DisId: k.Entniche.DisId,
- },
- })
- if staffIds == nil </span><span class="cov0" title="0">{
- continue</span>
- }
- <span class="cov0" title="0">if staffIds[entUserId] </span><span class="cov0" title="0">{
- return k.SubSet
- }</span>
- } else<span class="cov0" title="0"> if k.Entniche.UserId > 0 </span><span class="cov0" title="0">{
- return k.SubSet
- }</span> else<span class="cov0" title="0"> {
- continue</span>
- }
- }
- <span class="cov0" title="0">return nil</span>
- }
- func GetDeptUserIds(ui *UserInfo) map[int]bool <span class="cov0" title="0">{
- if EntDepts[ui.Entniche.DeptId].Subdis == 0 </span><span class="cov0" title="0">{
- logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, "没有开启订阅分发,过滤掉")
- return nil
- }</span> else<span class="cov0" title="0"> if EntDepts[ui.Entniche.DeptId].Nodiff == 0 && ui.Entniche.DisId == "" </span><span class="cov0" title="0">{
- logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, "没有开启全员无差别接收,并且没有分发规则,过滤掉")
- return nil
- }</span>
- //对我的对着生效的用户
- <span class="cov0" title="0">myIds := map[int]bool{}
- //打开了全员无差别,下面所有员工都生效
- if EntDepts[ui.Entniche.DeptId].Nodiff == 1 </span><span class="cov0" title="0">{
- for _, v := range EntDeptUsers[ui.Entniche.DeptId] </span><span class="cov0" title="0">{
- myIds[v.UserId] = true
- }</span>
- <span class="cov0" title="0">for _, v := range EntChildDept[ui.Entniche.DeptId] </span><span class="cov0" title="0">{
- for _, vv := range EntDeptUsers[v.Id] </span><span class="cov0" title="0">{
- myIds[vv.UserId] = true
- }</span>
- }
- <span class="cov0" title="0">logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, "该部门打开了全员无差别", len(myIds), "人接收")</span>
- } else<span class="cov0" title="0"> if ui.Entniche.DisId != "" </span><span class="cov0" title="0">{
- for _, v := range EntRuleUsers[ui.Entniche.DisId] </span><span class="cov0" title="0">{
- myIds[v.UserId] = true
- }</span>
- <span class="cov0" title="0">logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, "该规则开启了订阅分发", ui.Entniche.DisId, "规则分发了", len(myIds), "人")</span>
- }
- //我的上级部门,过滤掉本部门的人
- <span class="cov0" title="0">for _, v := range EntParentDept[ui.Entniche.DeptId] </span><span class="cov0" title="0">{
- //看我的上级部门,有没有开启订阅分发
- if EntDepts[v.Pid].Subdis == 0 </span><span class="cov0" title="0">{
- continue</span>
- }
- //看我的上级部门,有没有全员无差别接收
- <span class="cov0" title="0">if EntDepts[v.Pid].Nodiff == 1 </span><span class="cov0" title="0">{
- logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, ui.Entniche.DisId, "上级部门", v.Pid, "打开了全员无差别开关,过滤掉")
- return nil
- }</span>
- //看我的上级部门,有没有对我设置规则
- <span class="cov0" title="0">for _, vv := range EntDeptDis[v.Pid] </span><span class="cov0" title="0">{
- for _, vvv := range EntRuleUsers[vv.Id] </span><span class="cov0" title="0">{
- _, ok := myIds[vvv.UserId]
- if !ok </span><span class="cov0" title="0">{
- continue</span>
- }
- <span class="cov0" title="0">delete(myIds, vvv.UserId)
- logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, "上级部门", v.Pid, "对我设置的有", vvv.RuleId, "分发规则,此规则作废", vvv.UserId)</span>
- }
- }
- }
- <span class="cov0" title="0">logx.Info(ui.Entniche.EntName, ui.Entniche.EntId, ui.Entniche.DeptName, ui.Entniche.DeptId, ui.Entniche.DisId, "该规则匹配到", len(myIds), "人")
- return myIds</span>
- }
- </pre>
-
- <pre class="file" id="file2" style="display: none">// @Description 订阅设置相关
- package service
- import (
- "errors"
- "jyBXSubscribe/entity"
- "log"
- "strconv"
- "app.yhyue.com/moapp/jybase/common"
- "app.yhyue.com/moapp/jybase/mongodb"
- "github.com/zeromicro/go-zero/core/logx"
- )
- //
- type SubseribeService struct {
- Mgo *mongodb.MongodbSim
- UserId string //mongodb 的用户id
- Types string //订阅信息产品类型 超级订阅、大会员、商机管理、免费订阅...
- Area map[string]interface{} //地区
- Buyerclass []string //采购单位类型
- Items []map[string]interface{} //关键词
- Infotype []string //信息类型
- Matchway string //匹配方式 1标题 2正文
- Projectmatch string //项目匹配 1开始 0关闭
- Ratemode string // 1:实时推送,2:每天9点推送,3:每周推送,4:每月推送 5:每日推送两次
- Apppush string //app推送 1开启 0关闭
- Mailpush string //邮箱推送 1开启 0关闭
- Mail string //邮箱
- }
- // @description 订阅设置相关修改
- // @param SubseribeService 用户信息相关
- // @return int64 是否成功 1成功 -1失败
- // @return error 错误信息
- //TODO 后期需要实现 查询各个身份的订阅设置修改[目前只实现了超级订阅]
- func (this *SubseribeService) Update() (int64, error) <span class="cov8" title="1">{
- if this.UserId == "" </span><span class="cov8" title="1">{
- return -1, errors.New(entity.UPDATE_ERROR_MSG)
- }</span>
- //查询条件
- <span class="cov8" title="1">query := map[string]interface{}{
- "_id": mongodb.StringTOBsonId(this.UserId),
- }
- //查询字段
- fields := `{"i_vip_status":1,"o_vipjy":1}`
- //查询用户信息
- r, ok := this.Mgo.FindOneByField(entity.User, query, fields)
- if !ok || r == nil || len(*r) == 0 </span><span class="cov0" title="0">{
- logx.Error("未找到用户")
- return -1, errors.New(entity.UPDATE_ERROR_MSG)
- }</span>
- //判断用户权益
- <span class="cov8" title="1">vip_status := common.Int64All((*r)["i_vip_status"])
- if vip_status <= 0 </span><span class="cov0" title="0">{
- logx.Error("用户暂无权益")
- return -1, errors.New(entity.UPDATE_ERROR_MSG)
- }</span>
- //权益通过,获取要修改的参数
- <span class="cov8" title="1">setMap := map[string]interface{}{}
- if this.Area != nil </span><span class="cov8" title="1">{
- setMap["o_vipjy.o_area"] = this.Area
- }</span>
- <span class="cov8" title="1">if this.Buyerclass != nil </span><span class="cov0" title="0">{
- setMap["o_vipjy.a_buyerclass"] = this.Buyerclass
- }</span>
- <span class="cov8" title="1">if this.Items != nil </span><span class="cov8" title="1">{
- setMap["o_vipjy.a_items"] = this.Items
- }</span>
- <span class="cov8" title="1">if this.Infotype != nil </span><span class="cov0" title="0">{
- setMap["o_vipjy.a_infotype"] = this.Infotype
- }</span>
- <span class="cov8" title="1">if this.Matchway != "" </span><span class="cov0" title="0">{
- i_matchway, _ := strconv.Atoi(this.Matchway)
- setMap["o_vipjy.i_matchway"] = i_matchway
- }</span>
- <span class="cov8" title="1">if this.Projectmatch != "" </span><span class="cov0" title="0">{
- i_projectmatch, _ := strconv.Atoi(this.Projectmatch)
- setMap["o_vipjy.i_projectmatch"] = i_projectmatch
- }</span>
- <span class="cov8" title="1">if this.Ratemode != "" </span><span class="cov0" title="0">{
- i_ratemode, _ := strconv.Atoi(this.Ratemode)
- setMap["o_vipjy.i_ratemode"] = i_ratemode
- }</span>
- <span class="cov8" title="1">if this.Apppush != "" </span><span class="cov0" title="0">{
- i_apppush, _ := strconv.Atoi(this.Apppush)
- setMap["o_vipjy.i_apppush"] = i_apppush
- }</span>
- <span class="cov8" title="1">if this.Mailpush != "" </span><span class="cov0" title="0">{
- i_mailpush, _ := strconv.Atoi(this.Mailpush)
- setMap["o_vipjy.i_mailpush"] = i_mailpush
- }</span>
- <span class="cov8" title="1">if this.Mail != "" </span><span class="cov0" title="0">{
- setMap["o_vipjy.s_email"] = this.Mail
- }</span>
- <span class="cov8" title="1">log.Println(setMap)
- if ok := this.Mgo.UpdateById(entity.User, this.UserId, map[string]interface{}{
- "$set": setMap,
- }); ok </span><span class="cov8" title="1">{
- return 1, nil
- }</span>
- <span class="cov0" title="0">return -1, errors.New(entity.UPDATE_ERROR_MSG)</span>
- }
- </pre>
-
- </div>
- </body>
- <script>
- (function() {
- var files = document.getElementById('files');
- var visible;
- files.addEventListener('change', onChange, false);
- function select(part) {
- if (visible)
- visible.style.display = 'none';
- visible = document.getElementById(part);
- if (!visible)
- return;
- files.value = part;
- visible.style.display = 'block';
- location.hash = part;
- }
- function onChange() {
- select(files.value);
- window.scrollTo(0, 0);
- }
- if (location.hash != "") {
- select(location.hash.substr(1));
- }
- if (!visible) {
- select("file0");
- }
- })();
- </script>
- </html>
|