package com.sohu.cache.web.controller;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.sohu.cache.constant.AppCheckEnum;
import com.sohu.cache.constant.AppUserTypeEnum;
import com.sohu.cache.entity.AppAudit;
import com.sohu.cache.entity.AppUser;
import com.sohu.cache.web.enums.SuccessEnum;
import com.sohu.cache.web.util.AppEmailUtil;
/**
* 用户信息管理
* @author leifu
* @Time 2014年6月6日
*/
@Controller
@RequestMapping("manage/user")
public class UserManageController extends BaseController {
@Resource(name = "appEmailUtil")
private AppEmailUtil appEmailUtil;
/**
* 用户初始化
* @param id 用户id
* @return
*/
@RequestMapping(value = "/init")
public ModelAndView doUserInit(HttpServletRequest request,
HttpServletResponse response, Model model, Long id) {
if (id != null) {
AppUser user = userService.get(id);
model.addAttribute("user", user);
model.addAttribute("modify", true);
}
return new ModelAndView("manage/user/initUser");
}
/**
* 更新用户
* @param name
* @param chName
* @param email
* @param mobile
* @param type
* @param userId
* @return
*/
@RequestMapping(value = "/add")
public ModelAndView doAddUser(HttpServletRequest request,
HttpServletResponse response, Model model, String name, String chName, String email, String mobile,
Integer type, Long userId) {
// 后台暂时不对参数进行验证
AppUser appUser = AppUser.buildFrom(userId, name, chName, email, mobile, type);
try {
if (userId == null) {
userService.save(appUser);
} else {
userService.update(appUser);
}
write(response, String.valueOf(SuccessEnum.SUCCESS.value()));
} catch (Exception e) {
write(response, String.valueOf(SuccessEnum.FAIL.value()));
logger.error(e.getMessage(), e);
}
return null;
}
/**
* 删除用户
* @param userId
* @return
*/
@RequestMapping(value = "/delete")
public ModelAndView doDeleteUser(HttpServletRequest request,
HttpServletResponse response, Model model, Long userId) {
userService.delete(userId);
return new ModelAndView("redirect:/manage/user/list");
}
/**
* 用户列表
* @param chName 中文名
* @return
*/
@RequestMapping(value = "/list")
public ModelAndView doUserList(HttpServletRequest request,
HttpServletResponse response, Model model, String searchChName) {
List<AppUser> users = userService.getUserList(searchChName);
model.addAttribute("users", users);
model.addAttribute("searchChName", searchChName);
model.addAttribute("userActive", SuccessEnum.SUCCESS.value());
return new ModelAndView("manage/user/list");
}
@RequestMapping(value = "/addAuditStatus")
public ModelAndView doAddAuditStatus(HttpServletRequest request,
HttpServletResponse response, Model model, Integer status,
Long appAuditId, String refuseReason) {
AppAudit appAudit = appService.getAppAuditById(appAuditId);
AppUser appUser = userService.get(appAudit.getUserId());
// 通过或者驳回并记录日志
appService.updateUserAuditStatus(appAuditId, status);
// 记录驳回原因
if (AppCheckEnum.APP_REJECT.value().equals(status)) {
appAudit.setRefuseReason(refuseReason);
appService.updateRefuseReason(appAudit, getUserInfo(request));
userService.delete(appUser.getId());
}
// 发邮件统计
if (AppCheckEnum.APP_PASS.value().equals(status)
|| AppCheckEnum.APP_REJECT.value().equals(status)) {
appUser.setType(AppUserTypeEnum.REGULAR_USER.value());
appAudit.setStatus(status);
userService.update(appUser);
appEmailUtil.noticeUserResult(appUser, appAudit);
}
// 批准成功直接跳转
if (AppCheckEnum.APP_PASS.value().equals(status)) {
return new ModelAndView("redirect:/manage/app/auditList");
}
write(response, String.valueOf(SuccessEnum.SUCCESS.value()));
return null;
}
}