|
@@ -74,7 +74,7 @@ func AddUsePerson(this *entmanageapplication.AddUsePersonReq) *entmanageapplicat
|
|
|
})
|
|
|
}
|
|
|
JyMysql.UpdateOrDeleteBySql(`update `+EntnicheWaitEmpower+` set use_count = use_count + 1 where id = ?`, this.WaitEmpowerId)
|
|
|
- addPower(this.WaitEmpowerId, entUserId)
|
|
|
+ addPower(this.WaitEmpowerId, entUserId, this.EntId)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -177,20 +177,22 @@ func BuyProductList(this *entmanageapplication.BuyProductListReq) *entmanageappl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func addPower(waitEmpowerId int64, entUserId int) {
|
|
|
+func addPower(waitEmpowerId int64, entUserId int, entId int64) {
|
|
|
data := JyMysql.FindOne(EntnicheOrder, map[string]interface{}{"wait_empower_id": waitEmpowerId}, "", "")
|
|
|
if data != nil && len(*data) > 0 {
|
|
|
orderId := common.Int64All((*data)["order_id"])
|
|
|
orderData := JyMysql.FindOne(Order, map[string]interface{}{"id": orderId}, "", "")
|
|
|
if orderData != nil && len(*orderData) > 0 {
|
|
|
productType := common.ObjToString((*orderData)["product_type"])
|
|
|
- userId := getUserId(entUserId)
|
|
|
+
|
|
|
+ posititonId := getPositionId(entUserId)
|
|
|
+
|
|
|
if productType == "VIP订阅" {
|
|
|
- log.Println("开通超级订阅", userId)
|
|
|
- openPowerVip(*orderData, userId)
|
|
|
+ log.Println("开通超级订阅", posititonId)
|
|
|
+ setRule(1, int64(entUserId), entId, *orderData, posititonId)
|
|
|
} else if productType == "大会员" {
|
|
|
- log.Println("开通大会员", userId)
|
|
|
- openPowerBig(*orderData, userId)
|
|
|
+ log.Println("开通大会员", posititonId)
|
|
|
+ setRule(2, int64(entUserId), entId, *orderData, posititonId)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -422,7 +424,7 @@ func StartSubVip(phone string, area map[string]interface{}, newBuyset SubvipBuyS
|
|
|
})
|
|
|
|
|
|
go func() {
|
|
|
- MergeKws(userId)
|
|
|
+ // MergeKws(userId)
|
|
|
RedisDel(userId)
|
|
|
}()
|
|
|
if isOk {
|
|
@@ -432,18 +434,19 @@ func StartSubVip(phone string, area map[string]interface{}, newBuyset SubvipBuyS
|
|
|
}
|
|
|
|
|
|
// 初始化vip订阅关键词
|
|
|
-func MergeKws(userId string) {
|
|
|
- if userId == "" { //11-11 取消此操作
|
|
|
+func MergeKws(entId, entUserId int64) {
|
|
|
+ if entUserId == 0 || entId == 0 { //11-11 取消此操作
|
|
|
return
|
|
|
}
|
|
|
- data, ok := Mgo.FindById("user", userId, `{"o_jy":1,"o_vipjy":1}`)
|
|
|
- var o_vipjy map[string]interface{}
|
|
|
+ data, ok := Mgo.FindOneByField("entniche_rule", map[string]interface{}{"i_entid": entId, "i_userid": entUserId}, `{"o_entniche":1,"_id":1}`)
|
|
|
+ var o_entniche map[string]interface{}
|
|
|
if ok && data != nil && len(*data) > 0 {
|
|
|
- o_vipjy, _ = (*data)["o_vipjy"].(map[string]interface{})
|
|
|
- a_items, _ := o_vipjy["a_items"].([]interface{})
|
|
|
+ o_entniche, _ = (*data)["o_entniche"].(map[string]interface{})
|
|
|
+ a_items, _ := o_entniche["a_items"].([]interface{})
|
|
|
if a_items == nil { //首次
|
|
|
- Mgo.UpdateById("user", userId, map[string]interface{}{
|
|
|
- "$set": map[string]interface{}{"o_vipjy.i_matchway": 1, "o_vipjy.i_ratemode": 1, "o_vipjy.i_wxpush": 1, "o_vipjy.i_apppush": 1, "o_vipjy.i_projectmatch": 0, "o_vipjy.a_infotype": []string{}, "o_vipjy.a_items": []string{}, "o_vipjy.l_modifydate": time.Now().Unix()},
|
|
|
+ _id := mongodb.BsonIdToSId((*data)["_id"])
|
|
|
+ Mgo.UpdateById("entniche_rule", _id, map[string]interface{}{
|
|
|
+ "$set": map[string]interface{}{"o_entniche.i_matchway": 1, "o_entniche.i_ratemode": 1, "o_entniche.i_wxpush": 1, "o_entniche.i_apppush": 1, "o_entniche.i_projectmatch": 0, "o_entniche.a_infotype": []string{}, "o_entniche.a_items": []string{}, "o_entniche.l_modifydate": time.Now().Unix()},
|
|
|
})
|
|
|
}
|
|
|
}
|
|
@@ -459,62 +462,258 @@ func delPower(id int64) {
|
|
|
if eOData != nil && len(*eOData) > 0 {
|
|
|
orderId := common.Int64All((*eOData)["order_id"])
|
|
|
orderData := JyMysql.FindOne(Order, map[string]interface{}{"id": orderId}, "", "")
|
|
|
+ set := map[string]interface{}{}
|
|
|
if orderData != nil && len(*orderData) > 0 {
|
|
|
productType := common.ObjToString((*orderData)["product_type"])
|
|
|
- userId := getUserId(entUserId)
|
|
|
+ entId := common.Int64All((*orderData)["ent_id"])
|
|
|
if productType == "VIP订阅" {
|
|
|
- Mgo.UpdateById("user", userId, map[string]interface{}{"$unset": map[string]interface{}{"i_vip_status": 1, "l_vip_starttime": 1, "l_vip_endtime": 1}})
|
|
|
+ set["l_vip_endtime"] = time.Now().Unix()
|
|
|
} else if productType == "大会员" {
|
|
|
- Mgo.UpdateById("user", userId, map[string]interface{}{"$unset": map[string]interface{}{"i_member_status": 1, "i_member_starttime": 1, "i_member_endtime": 1}})
|
|
|
- JyMysql.Update(BigServiceUser, map[string]interface{}{"s_userid": userId}, map[string]interface{}{"i_status": -1})
|
|
|
+ posititonId := getPositionId(entUserId)
|
|
|
+ set["i_member_endtime"] = time.Now().Unix()
|
|
|
+ JyMysql.Update(BigServiceUser, map[string]interface{}{"s_userid": posititonId}, map[string]interface{}{"i_status": -1})
|
|
|
}
|
|
|
- RedisDel(userId)
|
|
|
+
|
|
|
+ Mgo.Update("ent_user", map[string]interface{}{
|
|
|
+ "i_entid": entId,
|
|
|
+ "i_userid": entUserId,
|
|
|
+ }, map[string]interface{}{
|
|
|
+ "$set": set,
|
|
|
+ }, true, false)
|
|
|
+ // RedisDel(userId)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func getUserId(entUserId int) string {
|
|
|
- data := JyMysql.FindOne(EntnicheUser, map[string]interface{}{"id": entUserId}, "", "")
|
|
|
- userId := ""
|
|
|
- now := time.Now()
|
|
|
- if data != nil && len(*data) > 0 {
|
|
|
- phone := common.ObjToString((*data)["phone"])
|
|
|
- userData, ok := Mgo.FindOne("user", map[string]interface{}{"s_phone": phone})
|
|
|
- if ok && userData != nil && len(*userData) > 0 {
|
|
|
- userId = mongodb.BsonIdToSId((*userData)["_id"])
|
|
|
- } else {
|
|
|
- userDatas, oks := Mgo.FindOne("user", map[string]interface{}{"s_m_phone": phone})
|
|
|
- if oks && userDatas != nil && len(*userDatas) > 0 {
|
|
|
- userId = mongodb.BsonIdToSId((*userDatas)["_id"])
|
|
|
+//获取用户信息
|
|
|
+//return 职位id
|
|
|
+func getPositionId(entUserId int) int64 {
|
|
|
+ ctx, _ := context.WithTimeout(context.Background(), 2*time.Second)
|
|
|
+ res, _ := UserCenterRpc.IdentityByEntUserId(ctx, &usercenter.IdentityReq{
|
|
|
+ Id: int64(entUserId),
|
|
|
+ })
|
|
|
+ log.Println(res)
|
|
|
+ return res.PositionId
|
|
|
+}
|
|
|
+
|
|
|
+//订阅设置
|
|
|
+//types:1超级订阅 2大会员
|
|
|
+func setRule(types int64, entUserId, entId int64, orderData map[string]interface{}, posititonId int64) bool {
|
|
|
+ //订阅设置
|
|
|
+ query := map[string]interface{}{
|
|
|
+ "i_entid": entId,
|
|
|
+ "i_userid": entUserId,
|
|
|
+ }
|
|
|
+ //orderData相关权益
|
|
|
+ set := map[string]interface{}{}
|
|
|
+ setEntUser := map[string]interface{}{}
|
|
|
+ //超级订阅
|
|
|
+ if types == 1 {
|
|
|
+ set, setEntUser = vipSetMap(orderData)
|
|
|
+ } else if types == 2 {
|
|
|
+ set, setEntUser = memberSetMap(posititonId, orderData)
|
|
|
+ }
|
|
|
+
|
|
|
+ ok1 := Mgo.Update("entniche_rule", query, map[string]interface{}{
|
|
|
+ "$set": set,
|
|
|
+ }, true, false)
|
|
|
+ ok2 := Mgo.Update("ent_user", query, map[string]interface{}{
|
|
|
+ "$set": setEntUser,
|
|
|
+ }, true, false)
|
|
|
+
|
|
|
+ go func() {
|
|
|
+ MergeKws(entId, entUserId)
|
|
|
+ // RedisDel(userId)
|
|
|
+ }()
|
|
|
+ return ok1 && ok2
|
|
|
+}
|
|
|
+
|
|
|
+//
|
|
|
+func vipSetMap(orderData map[string]interface{}) (set map[string]interface{}, setEntUser map[string]interface{}) {
|
|
|
+ set, setEntUser = map[string]interface{}{}, map[string]interface{}{}
|
|
|
+ startTime := common.ObjToString(orderData["vip_starttime"])
|
|
|
+ endTime := common.ObjToString(orderData["vip_endtime"])
|
|
|
+ Date_Full_Layout := "2006-01-02 15:04:05"
|
|
|
+ startdate, _ := time.ParseInLocation(Date_Full_Layout, startTime, time.Local)
|
|
|
+ enddate, _ := time.ParseInLocation(Date_Full_Layout, endTime, time.Local)
|
|
|
+
|
|
|
+ dataType := 1
|
|
|
+ if startdate.Unix() > time.Now().Unix() {
|
|
|
+ dataType = 2
|
|
|
+ }
|
|
|
+ //为用户开通超级订阅权限
|
|
|
+ //是否开通超级订阅 -1 试用到期 -2 正式到期 1 试用 2 开通
|
|
|
+ isTrial := false
|
|
|
+ if dataType == 2 {
|
|
|
+ isTrial = true
|
|
|
+ }
|
|
|
+
|
|
|
+ setEntUser["l_createtime"] = time.Now().Unix()
|
|
|
+ setEntUser["l_vip_starttime"] = startdate.Unix()
|
|
|
+ setEntUser["l_vip_endtime"] = enddate.Unix()
|
|
|
+ setEntUser["i_vip_status"] = common.If(isTrial, -2, 2) //1试用 2正式 -2 试用到期
|
|
|
+ vms := VipSimpleMsg{}
|
|
|
+ json.Unmarshal([]byte(common.ObjToString(orderData["filter"])), &vms)
|
|
|
+
|
|
|
+ set = map[string]interface{}{
|
|
|
+ "o_entniche": map[string]interface{}{
|
|
|
+ "i_trial": -1, //已激活试用
|
|
|
+ "o_area": *vms.Area, //设置地区
|
|
|
+ "o_buyset": *vms.NewBuyset, //购买内容 城市、省份、行业数量
|
|
|
+ "a_buyerclass": []interface{}{}, //设置行业
|
|
|
+ },
|
|
|
+ "i_vip_expire_tip": 0, //消息提示初始化
|
|
|
+ "i_type": 1,
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func memberSetMap(userId int64, orderData map[string]interface{}) (set map[string]interface{}, setEntUser map[string]interface{}) {
|
|
|
+ set, setEntUser = map[string]interface{}{}, map[string]interface{}{}
|
|
|
+ filterMap := common.ObjToMap(orderData["filter"])
|
|
|
+ level := common.IntAll((*filterMap)["level"])
|
|
|
+ comboId := common.IntAll((*filterMap)["comboId"])
|
|
|
+ payCycle := common.IntAll((*filterMap)["cycle"])
|
|
|
+ serversId := common.ObjToString((*filterMap)["serversId"])
|
|
|
+ startTime := common.ObjToString(orderData["vip_starttime"])
|
|
|
+ endTime := common.ObjToString(orderData["vip_endtime"])
|
|
|
+ tmp := "2006-01-02 15:04:05"
|
|
|
+ startdate, _ := time.ParseInLocation(tmp, startTime, time.Local)
|
|
|
+ enddate, _ := time.ParseInLocation(tmp, endTime, time.Local)
|
|
|
+ serverMap := GetServerPid()
|
|
|
+ dataType := 1
|
|
|
+ if startdate.Unix() > time.Now().Unix() {
|
|
|
+ dataType = 2
|
|
|
+ }
|
|
|
+ set = map[string]interface{}{
|
|
|
+ "o_member_jy": map[string]interface{}{
|
|
|
+ "i_wxpush": 1,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ setEntUser = map[string]interface{}{
|
|
|
+ "i_member_status": common.If(dataType == 1, level, -level),
|
|
|
+ "i_member_starttime": startdate.Unix(),
|
|
|
+ "i_member_endtime": enddate.Unix(),
|
|
|
+ "i_mainaccount": 1,
|
|
|
+ "l_createtime": time.Now().Unix(),
|
|
|
+ }
|
|
|
+ if comboId != 0 {
|
|
|
+ datas := JyMysql.FindOne("bigmember_combo", map[string]interface{}{"id": comboId}, "", "")
|
|
|
+ if datas == nil || len(*datas) == 0 {
|
|
|
+ log.Println("未找到此套餐")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ s_servers := common.ObjToString((*datas)["s_servers"])
|
|
|
+ for _, s := range strings.Split(s_servers, ",") {
|
|
|
+ serverId, _ := strconv.Atoi(s)
|
|
|
+ mainId := serverId
|
|
|
+ if serverMap[serverId] != 0 {
|
|
|
+ serverId = serverMap[serverId]
|
|
|
+ }
|
|
|
+ serverData := JyMysql.FindOne("bigmember_service", map[string]interface{}{"id": mainId}, "", "")
|
|
|
+ frequency := 0
|
|
|
+ if serverData != nil && len(*serverData) > 0 {
|
|
|
+ if serverId == 11 || serverId == 15 {
|
|
|
+ if serverId == 15 {
|
|
|
+ if payCycle >= 12 {
|
|
|
+ frequency = (payCycle / 12 * common.IntAll((*serverData)["s_count_year"])) + (payCycle % 12 * common.IntAll((*serverData)["s_count_month"]))
|
|
|
+ } else {
|
|
|
+ frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ frequency = common.IntAll((*serverData)["s_count_month"])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sqls := "select * from bigmember_service_user where s_serviceid = ? and s_userid = ? and i_status = -1"
|
|
|
+ serverDatas := JyMysql.SelectBySql(sqls, serverId, userId)
|
|
|
+ if serverDatas != nil && len(*serverDatas) > 0 {
|
|
|
+ i_status := common.If(dataType == 1, 0, 1)
|
|
|
+ sql := "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
|
|
|
+ status1 := JyMysql.UpdateOrDeleteBySql(sql, fmt.Sprint(frequency), time.Now().Format(tmp), startdate.Format(tmp), enddate.Format(tmp), fmt.Sprint(i_status), serverId, userId)
|
|
|
+ if status1 < 0 {
|
|
|
+ log.Println("新建服务-更新服务表出错", userId)
|
|
|
+ return
|
|
|
+ }
|
|
|
} else {
|
|
|
- ctx, _ := context.WithTimeout(context.Background(), 2*time.Second)
|
|
|
- res, _ := UserCenterRpc.UserAdd(ctx, &usercenter.UserAddReq{
|
|
|
- Appid: "10000",
|
|
|
- Phone: phone,
|
|
|
- })
|
|
|
- data := map[string]interface{}{
|
|
|
- "i_appid": 2,
|
|
|
- "s_phone": phone,
|
|
|
- "s_password": "",
|
|
|
- "l_registedate": now.Unix(),
|
|
|
- "i_ts_guide": 2,
|
|
|
- "o_jy": map[string]interface{}{
|
|
|
- "i_wxpush": 1,
|
|
|
- "i_apppush": 1,
|
|
|
- "i_ratemode": 2,
|
|
|
- "l_modifydate": now.Unix(),
|
|
|
- },
|
|
|
- "s_regsource": "qmx_admin",
|
|
|
- "base_user_id": res.Data.Id,
|
|
|
+ insert := map[string]interface{}{
|
|
|
+ "s_smainid": mainId,
|
|
|
+ "s_userid": userId,
|
|
|
+ "s_serviceid": serverId,
|
|
|
+ "i_frequency": frequency,
|
|
|
+ "l_starttime": startdate.Format(tmp),
|
|
|
+ "l_endtime": enddate.Format(tmp),
|
|
|
+ "i_status": common.If(dataType == 1, 0, 1),
|
|
|
+ "l_createtime": time.Now().Format(tmp),
|
|
|
+ "l_updatetime": time.Now().Format(tmp),
|
|
|
+ }
|
|
|
+ order_id := JyMysql.Insert(BigServiceUser, insert)
|
|
|
+ if order_id > 0 {
|
|
|
+ log.Println("用户服务表插入成功", userId)
|
|
|
+ } else {
|
|
|
+ log.Println("用户服务表插入失败", userId)
|
|
|
+ return
|
|
|
}
|
|
|
- _id := Mgo.Save("user", data)
|
|
|
- log.Println("新增用户", _id)
|
|
|
- if _id != "" {
|
|
|
- userId = _id
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for _, s := range strings.Split(serversId, ",") {
|
|
|
+ serverId, _ := strconv.Atoi(s)
|
|
|
+ mainId := serverId
|
|
|
+ if serverMap[serverId] != 0 {
|
|
|
+ serverId = serverMap[serverId]
|
|
|
+ }
|
|
|
+ serverData := JyMysql.FindOne("bigmember_service", map[string]interface{}{"id": mainId}, "", "")
|
|
|
+ frequency := 0
|
|
|
+ if serverData != nil && len(*serverData) > 0 {
|
|
|
+ if serverId == 11 || serverId == 15 {
|
|
|
+ if serverId == 15 {
|
|
|
+ if payCycle >= 12 {
|
|
|
+ frequency = (payCycle / 12 * common.IntAll((*serverData)["s_count_year"])) + (payCycle % 12 * common.IntAll((*serverData)["s_count_month"]))
|
|
|
+ } else {
|
|
|
+ frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ frequency = payCycle * common.IntAll((*serverData)["s_count_month"])
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ frequency = common.IntAll((*serverData)["s_count_month"])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sqls := "select * from bigmember_service_user where s_serviceid = ? and s_userid = ? and i_status = -1"
|
|
|
+ serverDatas := JyMysql.SelectBySql(sqls, serverId, userId)
|
|
|
+ if serverDatas != nil && len(*serverDatas) > 0 {
|
|
|
+ i_status := common.If(dataType == 1, 0, 1)
|
|
|
+ sql := "update bigmember_service_user set i_frequency = ?,l_updatetime = ?,l_starttime = ?,l_endtime = ?,i_status = ? where s_serviceid = ? and s_userid = ?"
|
|
|
+ status1 := JyMysql.UpdateOrDeleteBySql(sql, fmt.Sprint(frequency), time.Now().Format(tmp), startdate.Format(tmp), enddate.Format(tmp), fmt.Sprint(i_status), serverId, userId)
|
|
|
+ if status1 < 0 {
|
|
|
+ log.Println("新建服务-更新服务表出错")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ insert := map[string]interface{}{
|
|
|
+ "s_userid": userId,
|
|
|
+ "s_smainid": mainId,
|
|
|
+ "s_serviceid": serverId,
|
|
|
+ "i_frequency": frequency,
|
|
|
+ "l_starttime": startdate.Format(tmp),
|
|
|
+ "l_endtime": enddate.Format(tmp),
|
|
|
+ "i_status": common.If(dataType == 1, 0, 1),
|
|
|
+ "l_createtime": time.Now().Format(tmp),
|
|
|
+ "l_updatetime": time.Now().Format(tmp),
|
|
|
+ }
|
|
|
+ order_id := JyMysql.Insert(BigServiceUser, insert)
|
|
|
+ if order_id > 0 {
|
|
|
+ log.Println("用户服务表插入成功", userId)
|
|
|
+ } else {
|
|
|
+ log.Println("用户服务表插入失败")
|
|
|
+ return
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return userId
|
|
|
+ return
|
|
|
}
|