|
@@ -0,0 +1,140 @@
|
|
|
|
+package matcher
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "fmt"
|
|
|
|
+ "testing"
|
|
|
|
+
|
|
|
|
+ util "app.yhyue.com/moapp/jybase/common"
|
|
|
|
+ "app.yhyue.com/moapp/jybase/logger"
|
|
|
|
+ . "app.yhyue.com/moapp/jybase/mongodb"
|
|
|
|
+ . "bp.jydev.jianyu360.cn/BaseService/pushpkg/p"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+func TestMatch(t *testing.T) {
|
|
|
|
+ m := &matchJob{}
|
|
|
|
+ m.mgo = &MongodbSim{
|
|
|
|
+ MongodbAddr: "192.168.3.206:27080",
|
|
|
|
+ Size: 2,
|
|
|
|
+ DbName: "qfw",
|
|
|
|
+ }
|
|
|
|
+ m.mgo.InitPool()
|
|
|
|
+ bidMgo := &MongodbSim{
|
|
|
|
+ MongodbAddr: "192.168.3.206:27002",
|
|
|
|
+ Size: 2,
|
|
|
|
+ DbName: "qfw",
|
|
|
|
+ UserName: "jyDevGroup",
|
|
|
|
+ Password: "jy@DevGroup",
|
|
|
|
+ }
|
|
|
|
+ bidMgo.InitPool()
|
|
|
|
+ query := map[string]interface{}{
|
|
|
|
+ "_id": map[string]interface{}{
|
|
|
|
+ "$in": ToObjectIds([]string{"665cc37666cf0db42a7f7981"}),
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ datas, _ := LoadBidding(bidMgo, "qfw_data", "bidding", 0, false, query, nil)
|
|
|
|
+ m.Start(datas)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+type matchJob struct {
|
|
|
|
+ mgo *MongodbSim
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (m *matchJob) Start(datas *[]map[string]interface{}) {
|
|
|
|
+ defer util.Catch()
|
|
|
|
+ allSubSet := NewPayUser()
|
|
|
|
+ //标题匹配
|
|
|
|
+ title_key := make(map[string]*[]*UserInfo)
|
|
|
|
+ title_notkey := make(map[string]*[]*UserInfo)
|
|
|
|
+ title_pjob := &KeyDfa{
|
|
|
|
+ Key_user: &title_key,
|
|
|
|
+ Notkey_user: &title_notkey,
|
|
|
|
+ }
|
|
|
|
+ //正文匹配
|
|
|
|
+ detail_key := make(map[string]*[]*UserInfo)
|
|
|
|
+ detail_notkey := make(map[string]*[]*UserInfo)
|
|
|
|
+ detail_pjob := &KeyDfa{
|
|
|
|
+ Key_user: &detail_key,
|
|
|
|
+ Notkey_user: &detail_notkey,
|
|
|
|
+ }
|
|
|
|
+ //附件匹配
|
|
|
|
+ filetext_key := make(map[string]*[]*UserInfo)
|
|
|
|
+ filetext_notkey := make(map[string]*[]*UserInfo)
|
|
|
|
+ filetext_pjob := &KeyDfa{
|
|
|
|
+ Key_user: &filetext_key,
|
|
|
|
+ Notkey_user: &filetext_notkey,
|
|
|
|
+ }
|
|
|
|
+ //项目名称/标的物匹配
|
|
|
|
+ pnp_key := make(map[string]*[]*UserInfo)
|
|
|
|
+ pnp_notkey := make(map[string]*[]*UserInfo)
|
|
|
|
+ pnp_pjob := &KeyDfa{
|
|
|
|
+ Key_user: &pnp_key,
|
|
|
|
+ Notkey_user: &pnp_notkey,
|
|
|
|
+ }
|
|
|
|
+ m.LoadMySubSet(allSubSet, title_pjob, detail_pjob, filetext_pjob, pnp_pjob)
|
|
|
|
+ //
|
|
|
|
+ title_pjob.CreateDaf()
|
|
|
|
+ detail_pjob.CreateDaf()
|
|
|
|
+ filetext_pjob.CreateDaf()
|
|
|
|
+ pnp_pjob.CreateDaf()
|
|
|
|
+ allSubSet.Title_KeyDfa = title_pjob
|
|
|
|
+ allSubSet.Detail_KeyDfa = detail_pjob
|
|
|
|
+ allSubSet.Filetext_KeyDfa = filetext_pjob
|
|
|
|
+ allSubSet.PnP_KeyDfa = pnp_pjob
|
|
|
|
+ //
|
|
|
|
+ allSubSet.Match(1, datas)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//我的订阅设置
|
|
|
|
+func (m *matchJob) LoadMySubSet(allSubSet *PayUser, title_pjob, detail_pjob, filetext_pjob, pnp_pjob *KeyDfa) {
|
|
|
|
+ defer util.Catch()
|
|
|
|
+ sess := m.mgo.GetMgoConn()
|
|
|
|
+ defer m.mgo.DestoryMongoConn(sess)
|
|
|
|
+ query := map[string]interface{}{
|
|
|
|
+ "_id": StringTOBsonId("665a8ba6842ed1e25c138ac7"),
|
|
|
|
+ }
|
|
|
|
+ logger.Info("我的订阅设置", query)
|
|
|
|
+ it := sess.DB("qfw").C("entniche_rule").Find(query).Select(map[string]interface{}{
|
|
|
|
+ "i_entid": 1,
|
|
|
|
+ "i_deptid": 1,
|
|
|
|
+ "i_userid": 1,
|
|
|
|
+ "o_entniche": 1,
|
|
|
|
+ "i_type": 1,
|
|
|
|
+ }).Iter()
|
|
|
|
+ for temp := make(map[string]interface{}); it.Next(&temp); {
|
|
|
|
+ entId := util.IntAll(temp["i_entid"])
|
|
|
|
+ userId := util.IntAll(temp["i_userid"])
|
|
|
|
+ user := &UserInfo{
|
|
|
|
+ Entniche: &Entniche{
|
|
|
|
+ UserId: userId,
|
|
|
|
+ IsNew: 1,
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ subSetType := util.IntAllDef(temp["i_type"], -1)
|
|
|
|
+ subSet, _ := temp["o_entniche"].(map[string]interface{})
|
|
|
|
+ user.GetSubSet(subSetType == 2, fmt.Sprint(userId), subSet)
|
|
|
|
+ if user.SubSet.Switch == 0 {
|
|
|
|
+ logger.Info("订阅开关没有开启,过滤掉", entId, userId)
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ if subSetType == 2 && len(user.SubSet.Keys) == 0 {
|
|
|
|
+ logger.Info("过滤掉,没有关键词", entId, userId)
|
|
|
|
+ continue
|
|
|
|
+ } else if subSetType != 2 && len(user.SubSet.Keys) == 0 && user.SubSet.Subtype == nil && user.SubSet.Area == nil && user.SubSet.Buyerclass == nil {
|
|
|
|
+ logger.Info("没有订阅,过滤掉", entId, userId)
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ if subSetType == 2 {
|
|
|
|
+ user.PushSet.SubSet.RateMode = 0
|
|
|
|
+ }
|
|
|
|
+ m.InitSubSet(allSubSet, user, title_pjob, detail_pjob, filetext_pjob, pnp_pjob)
|
|
|
|
+ allSubSet.Users[user] = true
|
|
|
|
+ temp = make(map[string]interface{})
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (m *matchJob) InitSubSet(allSubSet *PayUser, user *UserInfo, title_pjob, detail_pjob, filetext_pjob, pnp_pjob *KeyDfa) {
|
|
|
|
+ user.AddBuyerclass(&allSubSet.BuyerclassUsers)
|
|
|
|
+ user.AddAreaCityDistrict(&allSubSet.AreaUsers, &allSubSet.CityUsers, &allSubSet.DistrictUsers)
|
|
|
|
+ user.AddSubtype(&allSubSet.SubtypeUsers)
|
|
|
|
+ user.MakeKeyUserByMatchMode(title_pjob, detail_pjob, filetext_pjob, pnp_pjob)
|
|
|
|
+}
|