package com.xiaozhi.blog.web.manager;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.tianji.test.core.redis.LoginHelper;
import com.xiaozhi.blog.formbean.UserGroupForm;
import com.xiaozhi.blog.service.GroupService;
import com.xiaozhi.blog.vo.UserGroup;
@Controller
@RequestMapping("/manage/group/")
public class GroupManageController {
private static Log logger = LogFactory.getLog(GroupManageController.class);
@Autowired
private GroupService groupService;
/**
* 新增一个分组
* @param groupName
* @return
*/
@RequestMapping(value = "addGroup", method = RequestMethod.POST)
public @ResponseBody UserGroup addGroup(@RequestParam(value="groupName") String groupName) {
String uid = LoginHelper.getUserId();
UserGroup group = new UserGroup();
group.setGroupId(UUID.randomUUID().toString());
group.setGroupName(groupName);
group.setOwnerId(uid);
return groupService.addUserGroup(group);
}
/**
* 删除一个用户分组
* @param groupId
* @return
*/
@RequestMapping(value = "removeGroup/{groupId}", method = RequestMethod.POST)
public @ResponseBody boolean removeGroup(@PathVariable String groupId) {
return groupService.delUserGroup(groupId);
}
/**
* 显示更改用户分组表单
* @param userid
* @param model
* @return
*/
@RequestMapping(value = "showMemberGroups/{userid}", method = RequestMethod.GET)
public String showMemberGroups(@PathVariable String userid, Model model) {
String owerId = LoginHelper.getUserId();
List<UserGroup> groups = this.groupService.getMemberGroupShow(owerId, userid);
model.addAttribute("groups", groups);
model.addAttribute("userid", userid);
return "/manage/group/groupShow";
}
/**
* 保存修改用户组操作
* @param groupform
* @return
*/
@RequestMapping(value = "saveGroup", method = RequestMethod.POST)
public String saveGroup(UserGroupForm groupform, Model model) {
List<UserGroup> userGroups = new ArrayList<UserGroup>();
String owerId = LoginHelper.getUserId();
List<UserGroup> groups = this.groupService.getGroupByUserId(owerId);
for(UserGroup group :groups){
this.groupService.pullMemberFromGroup(group.getGroupId(), groupform.getMemberId());
if(groupform.getGroupIds().contains(group.getGroupId())){
userGroups.add(this.groupService.pushMemberToGroup(group.getGroupId(), groupform.getMemberId()));
}
}
model.addAttribute("memberId", groupform.getMemberId());
model.addAttribute("groups", userGroups);
return "/manage/group/usergroupslist";
}
/**
* 将此人移除出此组
* @param userid
* @param model
* @return
*/
@RequestMapping(value = "pullGroups/{userid}/{groupId}", method = RequestMethod.POST)
public @ResponseBody boolean pullGroups(@PathVariable String userid,@PathVariable String groupId) {
UserGroup group = this.groupService.pullMemberFromGroup(groupId, userid);
return group==null?false:true;
}
}