|
@@ -494,7 +494,7 @@ func (f *Front) UserTaskList() {
|
|
|
}
|
|
|
qu.Debug("Query:", query)
|
|
|
count := Mgo.Count(TASKCOLLNAME, query)
|
|
|
- list, _ := Mgo.Find(TASKCOLLNAME, query, nil, nil, false, start, limit)
|
|
|
+ list, _ := Mgo.Find(TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, start, limit)
|
|
|
for _, l := range *list {
|
|
|
if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
|
|
|
personid := qu.ObjToString(l["s_personid"])
|
|
@@ -540,11 +540,25 @@ func (f *Front) UserTaskRetrieve() {
|
|
|
sourceInfo := f.GetString("s_sourceinfo") //数据源表
|
|
|
status := f.GetString("s_status")
|
|
|
userTaskIdStatus := map[string]string{userTaskId: status}
|
|
|
- msg, count, success := RetrieveTaskByUser(sourceInfo, username, userTaskIdStatus)
|
|
|
+ msg, count, success := RetrieveTaskByUser(sourceInfo, username, "已完成", "user", userTaskIdStatus)
|
|
|
//userTask, _ := Mgo.FindById(TASKCOLLNAME, userTaskId, nil)
|
|
|
f.ServeJson(map[string]interface{}{"success": success, "count": count, "msg": msg})
|
|
|
}
|
|
|
|
|
|
+// UserTaskClose 用户任务关闭
|
|
|
+func (f *Front) UserTaskClose() {
|
|
|
+ defer qu.Catch()
|
|
|
+ user := f.GetSession("user").(map[string]interface{})
|
|
|
+ username := qu.ObjToString(user["s_login"])
|
|
|
+ userTaskId := f.GetString("taskid") //用户任务id
|
|
|
+ qu.Debug("User Task Id:", userTaskId)
|
|
|
+ sourceInfo := f.GetString("s_sourceinfo") //数据源表
|
|
|
+ status := f.GetString("s_status")
|
|
|
+ userTaskIdStatus := map[string]string{userTaskId: status}
|
|
|
+ msg, count, success := RetrieveTaskByUser(sourceInfo, username, "已关闭", "user", userTaskIdStatus)
|
|
|
+ f.ServeJson(map[string]interface{}{"success": success, "count": count, "msg": msg})
|
|
|
+}
|
|
|
+
|
|
|
// UpdateSourceInfo 用户分发任务成功后更新数据源表
|
|
|
func UpdateSourceInfo(sourceinfo, groupTaskId string, userTaskIdInfo map[string]Task) {
|
|
|
defer qu.Catch()
|
|
@@ -606,50 +620,71 @@ func UpdateSourceInfo(sourceinfo, groupTaskId string, userTaskIdInfo map[string]
|
|
|
}
|
|
|
|
|
|
// RetrieveTaskByUser 用户收回任务
|
|
|
-func RetrieveTaskByUser(sourceInfo, username string, userTaskIdStatus map[string]string) (allMsg string, allCount int, allSuccess bool) {
|
|
|
+func RetrieveTaskByUser(sourceInfo, username, stype, updateByWhom string, userTaskIdStatus map[string]string) (allMsg string, allCount int, allSuccess bool) {
|
|
|
defer qu.Catch()
|
|
|
allSuccess = true
|
|
|
for taskId, status := range userTaskIdStatus {
|
|
|
+ qu.Debug(taskId, status)
|
|
|
query := map[string]interface{}{
|
|
|
"s_usertaskid": taskId,
|
|
|
"b_istag": false,
|
|
|
}
|
|
|
count := Mgo.Count(sourceInfo, query)
|
|
|
- success := false
|
|
|
qu.Debug("Find Task Id:", taskId, " Retrieve Count:", count)
|
|
|
- if count > 0 {
|
|
|
+ //用户任务要更新的信息
|
|
|
+ taskSet := map[string]interface{}{
|
|
|
+ "s_status": stype,
|
|
|
+ "i_updatetime": time.Now().Unix(),
|
|
|
+ "s_updateperson": username,
|
|
|
+ "s_progress": "100%",
|
|
|
+ "i_completetime": time.Now().Unix(),
|
|
|
+ }
|
|
|
+ if status == "未开始" { //未开始打回的任务手动添加开始时间
|
|
|
+ taskSet["i_starttime"] = time.Now().Unix()
|
|
|
+ }
|
|
|
+ if count > 0 { //更新数据源信息
|
|
|
set := map[string]interface{}{
|
|
|
"i_updatetime": time.Now().Unix(),
|
|
|
"b_isgiveuser": false,
|
|
|
}
|
|
|
- if status == "未开始" { //未开始打回的任务手动添加开始时间
|
|
|
- set["i_starttime"] = time.Now().Unix()
|
|
|
- }
|
|
|
unset := map[string]interface{}{
|
|
|
"s_usertaskid": "",
|
|
|
"s_userid": "",
|
|
|
}
|
|
|
- success = Mgo.Update(sourceInfo, query, map[string]interface{}{"$set": set, "$unset": unset}, false, false)
|
|
|
- qu.Debug("User Task", taskId, "Retrieve Data:", success)
|
|
|
+ if updateByWhom == "group" { //通过用户组收回,更新用户组相关信息
|
|
|
+ set["b_isgivegroup"] = false
|
|
|
+ unset["s_groupid"] = ""
|
|
|
+ unset["s_grouptaskid"] = ""
|
|
|
+ }
|
|
|
+ success := Mgo.Update(sourceInfo, query, map[string]interface{}{"$set": set, "$unset": unset}, false, false)
|
|
|
+ qu.Debug("Update SourceInfo:", success)
|
|
|
if success {
|
|
|
allCount += count
|
|
|
//收回成功,更新task信息
|
|
|
- Mgo.UpdateById(TASKCOLLNAME, taskId, map[string]interface{}{
|
|
|
- "$set": map[string]interface{}{
|
|
|
- "s_status": "已完成",
|
|
|
- "i_updatetime": time.Now().Unix(),
|
|
|
- "s_updateperson": username,
|
|
|
- "s_progress": "100%",
|
|
|
- "i_completetime": time.Now().Unix(),
|
|
|
- },
|
|
|
+ success = Mgo.UpdateById(TASKCOLLNAME, taskId, map[string]interface{}{
|
|
|
+ "$set": taskSet,
|
|
|
"$inc": map[string]interface{}{ //更新数据量
|
|
|
"i_givenum": -count,
|
|
|
},
|
|
|
})
|
|
|
+ if !success {
|
|
|
+ allMsg += "任务ID:" + taskId + "更新数据失败;"
|
|
|
+ allSuccess = false
|
|
|
+ }
|
|
|
+ qu.Debug("Update:", taskId, success)
|
|
|
} else {
|
|
|
- allMsg += "任务ID:" + taskId + "更新失败"
|
|
|
+ allMsg += "任务ID:" + taskId + "更新数据源失败;"
|
|
|
+ allSuccess = false
|
|
|
+ }
|
|
|
+ } else { //没有要收回的数据,只更新任务信息
|
|
|
+ success := Mgo.UpdateById(TASKCOLLNAME, taskId, map[string]interface{}{
|
|
|
+ "$set": taskSet,
|
|
|
+ })
|
|
|
+ if !success {
|
|
|
+ allMsg += "任务ID:" + taskId + "更新数据失败;"
|
|
|
allSuccess = false
|
|
|
}
|
|
|
+ qu.Debug("Update:", taskId, success)
|
|
|
}
|
|
|
}
|
|
|
return
|