|
|
@@ -955,6 +955,8 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time, |
|
|
|
return err |
|
|
|
} |
|
|
|
userNewAddActivity := make(map[int64]map[int64]int64) |
|
|
|
userAcitvateJsonMap := make(map[int64]map[int64]int64) |
|
|
|
userCurrentDayRegistMap := make(map[int64]map[int64]int64) |
|
|
|
ParaWeight := getParaWeight() |
|
|
|
userMetrics := make(map[string]int) |
|
|
|
var indexTotal int64 |
|
|
@@ -1028,7 +1030,10 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time, |
|
|
|
log.Info("has activity." + userRecord.Name) |
|
|
|
addUserToMap(userNewAddActivity, userRecord.CreatedUnix, dateRecord.ID) |
|
|
|
} |
|
|
|
|
|
|
|
if userRecord.IsActive { |
|
|
|
addUserToMap(userAcitvateJsonMap, userRecord.CreatedUnix, dateRecord.ID) |
|
|
|
} |
|
|
|
addUserToMap(userCurrentDayRegistMap, userRecord.CreatedUnix, dateRecord.ID) |
|
|
|
} |
|
|
|
|
|
|
|
indexTotal += PAGE_SIZE |
|
|
@@ -1064,36 +1069,61 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time, |
|
|
|
} |
|
|
|
statictisSess.Insert(&useMetrics) |
|
|
|
//update new user activity |
|
|
|
updateNewUserAcitivity(userNewAddActivity, statictisSess) |
|
|
|
updateNewUserAcitivity(userNewAddActivity, userAcitvateJsonMap, userCurrentDayRegistMap, statictisSess) |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func updateNewUserAcitivity(currentUserActivity map[int64]map[int64]int64, statictisSess *xorm.Session) { |
|
|
|
for key, value := range currentUserActivity { |
|
|
|
func updateNewUserAcitivity(currentUserActivity map[int64]map[int64]int64, userAcitvateJsonMap map[int64]map[int64]int64, userCurrentDayRegistMap map[int64]map[int64]int64, statictisSess *xorm.Session) { |
|
|
|
for key, value := range userCurrentDayRegistMap { |
|
|
|
useMetrics := &UserMetrics{CountDate: key} |
|
|
|
userAcitvateValue := userAcitvateJsonMap[key] |
|
|
|
HuodongValue := currentUserActivity[key] |
|
|
|
has, err := statictisSess.Get(useMetrics) |
|
|
|
if err == nil && has { |
|
|
|
userIdArrays := strings.Split(useMetrics.HasActivityUserJson, ",") |
|
|
|
for _, userIdStr := range userIdArrays { |
|
|
|
userIdInt, err := strconv.ParseInt(userIdStr, 10, 64) |
|
|
|
if err == nil { |
|
|
|
value[userIdInt] = userIdInt |
|
|
|
} |
|
|
|
} |
|
|
|
userIdArray := "" |
|
|
|
for _, tmpValue := range value { |
|
|
|
userIdArray += fmt.Sprint(tmpValue) + "," |
|
|
|
} |
|
|
|
useMetrics.HasActivityUser = len(value) |
|
|
|
if len(userIdArray) > 0 { |
|
|
|
useMetrics.HasActivityUserJson = userIdArray[0 : len(userIdArray)-1] |
|
|
|
} |
|
|
|
updateSql := "update public.user_metrics set has_activity_user_json='" + useMetrics.HasActivityUserJson + "',regist_activity_user=" + fmt.Sprint(useMetrics.HasActivityUser) + " where count_date=" + fmt.Sprint(key) |
|
|
|
ActivityUserArray, HuodongTotal := setUniqueUserId(useMetrics.HasActivityUserJson, HuodongValue) |
|
|
|
useMetrics.HasActivityUser = HuodongTotal |
|
|
|
useMetrics.HasActivityUserJson = ActivityUserArray |
|
|
|
|
|
|
|
useMetrics.CurrentDayRegistUser = len(value) |
|
|
|
|
|
|
|
RegistUserArray, lenRegistUser := setUniqueUserId(useMetrics.ActivityUserJson, userAcitvateValue) |
|
|
|
useMetrics.ActivityUserJson = RegistUserArray |
|
|
|
useMetrics.ActivateRegistUser = lenRegistUser |
|
|
|
|
|
|
|
updateSql := "update public.user_metrics set has_activity_user_json='" + useMetrics.HasActivityUserJson + |
|
|
|
"',regist_activity_user=" + fmt.Sprint(useMetrics.HasActivityUser) + |
|
|
|
",activity_user_json='" + useMetrics.ActivityUserJson + "'" + |
|
|
|
",activate_regist_user=" + fmt.Sprint(useMetrics.ActivateRegistUser) + |
|
|
|
",not_activate_regist_user=" + fmt.Sprint(useMetrics.CurrentDayRegistUser-useMetrics.ActivateRegistUser) + |
|
|
|
",current_day_regist_user=" + fmt.Sprint(useMetrics.CurrentDayRegistUser) + |
|
|
|
" where count_date=" + fmt.Sprint(key) |
|
|
|
|
|
|
|
statictisSess.Exec(updateSql) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func setUniqueUserId(jsonString string, value map[int64]int64) (string, int) { |
|
|
|
if value == nil { |
|
|
|
value = make(map[int64]int64, 0) |
|
|
|
} |
|
|
|
userIdArrays := strings.Split(jsonString, ",") |
|
|
|
for _, userIdStr := range userIdArrays { |
|
|
|
userIdInt, err := strconv.ParseInt(userIdStr, 10, 64) |
|
|
|
if err == nil { |
|
|
|
value[userIdInt] = userIdInt |
|
|
|
} |
|
|
|
} |
|
|
|
userIdArray := "" |
|
|
|
for _, tmpValue := range value { |
|
|
|
userIdArray += fmt.Sprint(tmpValue) + "," |
|
|
|
} |
|
|
|
if len(userIdArray) > 0 { |
|
|
|
return userIdArray[0 : len(userIdArray)-1], len(value) |
|
|
|
} |
|
|
|
return userIdArray, len(value) |
|
|
|
} |
|
|
|
|
|
|
|
func addUserToMap(currentUserActivity map[int64]map[int64]int64, registDate timeutil.TimeStamp, userId int64) { |
|
|
|
CountDateTime := time.Date(registDate.Year(), registDate.AsTime().Month(), registDate.AsTime().Day(), 0, 1, 0, 0, registDate.AsTime().Location()) |
|
|
|
CountDate := CountDateTime.Unix() |
|
|
@@ -1104,7 +1134,6 @@ func addUserToMap(currentUserActivity map[int64]map[int64]int64, registDate time |
|
|
|
} else { |
|
|
|
currentUserActivity[CountDate][userId] = userId |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func setUserMetrics(userMetrics map[string]int, user *User, start_time int64, end_time int64, dateRecord UserBusinessAnalysis) { |
|
|
|