package com.caimei.modules.user.web; import com.caimei.constants.ServiceProviderStatus; import com.caimei.constants.UserIdentity; import com.caimei.constants.UserType; import com.caimei.modules.sys.utils.ValidateUtils; import com.caimei.modules.user.aop.OperationLogAnnotation; import com.caimei.modules.user.dao.CmSpDao; import com.caimei.modules.user.entity.CmMessage; import com.caimei.modules.user.entity.CmUser; import com.caimei.modules.user.entity.NewCmSp; import com.caimei.modules.user.service.CmMessageService; import com.caimei.modules.user.service.CmSpService; import com.caimei.modules.user.service.CmUserService; import com.caimei.utils.AppKeys; import com.caimei.utils.DateUtils; import com.caimei.utils.MD5Util; import com.caimei.utils.MD5Utils; import com.google.common.collect.Maps; import com.thinkgem.jeesite.common.config.Global; import com.thinkgem.jeesite.common.persistence.Page; import com.thinkgem.jeesite.common.utils.StringUtils; import com.thinkgem.jeesite.common.web.BaseController; import org.apache.commons.collections.CollectionUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 用户模块重构-协销人员管理Controller * * @author liwentao * @version 2018-05-21 */ @Controller @RequestMapping(value = "${adminPath}/user/cmSp") public class CmSpController extends BaseController { @Autowired private CmSpService cmSpService; @Resource private CmMessageService cmMessageService; @Autowired private CmUserService cmUserService; @Autowired private CmSpDao cmSpDao; @ModelAttribute public NewCmSp get(@RequestParam(required = false) String id) { NewCmSp entity = null; if (StringUtils.isNotBlank(id)) { entity = cmSpService.get(id); } if (entity == null) { entity = new NewCmSp(); } return entity; } /** * 会所更换协销展示列表 * * @param newCmSp * @param request * @param response * @param model * @return */ @RequestMapping(value = "showSelectSP") public String showSelectSP(NewCmSp newCmSp, HttpServletRequest request, HttpServletResponse response, Model model) { newCmSp.setStatus(90); Page page = newCmSp.setPage(new Page(request, response)); page.setPageSize(10); page.setList(cmSpDao.findSelectList(newCmSp)); model.addAttribute("page", page); return "modules/user/cmSpSelect"; } @RequiresPermissions("user:cmSp:view") @RequestMapping(value = {"list", ""}) public String list(NewCmSp newCmSp, HttpServletRequest request, HttpServletResponse response, Model model) { Page page = cmSpService.findPage(new Page(request, response), newCmSp); if (CollectionUtils.isEmpty(cmSpService.findSpManager())) { model.addAttribute("hasManager", "0"); } else { model.addAttribute("hasManager", "1"); } model.addAttribute("page", page); return "modules/user/cmSpList"; } @RequiresPermissions("user:cmSp:view") @RequestMapping(value = "form") public String form(NewCmSp newCmSp, Model model) { if (cmSpService.findSpManager() == null) { model.addAttribute("hasManager", 0); } else { model.addAttribute("hasManager", 1); } return "modules/user/cmSpForm"; } @RequiresPermissions("user:cmSp:view") @RequestMapping(value = "edit") public String edit(NewCmSp newCmSp, Model model) { Map positionMap = new HashMap<>(); CmUser cmUser = cmUserService.get(newCmSp.getUserID() + ""); if (CollectionUtils.isEmpty(cmSpService.findSpManager()) || cmUser.getRegisterUserTypeID().equals(UserType.SERVICEPROVIDER.getCode() + "")) { model.addAttribute("hasManager", 0); positionMap.put("1", UserType.SERVICEPROVIDER.getDesc()); } else { model.addAttribute("hasManager", 1); } if (cmUser.getRegisterUserTypeID().equals(UserType.SERVICEPROVIDER.getCode() + "")) { newCmSp.setPosition("1"); } if (cmUser.getRegisterUserTypeID().equals(UserType.SERVICEEMPLOYEE.getCode() + "")) { newCmSp.setPosition("0"); } model.addAttribute("newCmSp", newCmSp); positionMap.put("0", UserType.SERVICEEMPLOYEE.getDesc()); model.addAttribute("positionMap", positionMap); return "modules/user/cmSpEdit"; } @RequiresPermissions("user:cmSp:edit") @RequestMapping(value = "save") public String save(NewCmSp newCmSp, Model model, RedirectAttributes redirectAttributes) { if (!beanValidator(model, newCmSp)) { return form(newCmSp, model); } List spManager = cmSpService.findSpManager(); CmUser cmUser = cmUserService.get(newCmSp.getUserID() + ""); //身份判断 防止出现多个协销经理 if ("1".equals(newCmSp.getPosition())) { // 已经存在协销经理了 if ((spManager.size() == 1) && (spManager.get(0).getUserID() != newCmSp.getUserID())) { addMessage(model, "已经存在协销经理了"); return form(newCmSp, model); } cmUser.setRegisterUserTypeID(UserType.SERVICEPROVIDER.getCode() + ""); // 设置为协销经理 } if ("0".equals(newCmSp.getPosition())) { cmUser.setRegisterUserTypeID(UserType.SERVICEEMPLOYEE.getCode() + ""); // 设置为协销员工 } cmUser.setMobile(newCmSp.getContractMobile()); // 目前只允许有一个协销经理的逻辑还存在问题 // if ("1".equals(newCmSp.getPosition()) && newCmSp.getServiceProviderID() != null) { // 把协销员工修改职位变成协销经理 更新所有协销用的协销经理 // cmSpService.updateSpManager(newCmSp.getServiceProviderID()); // newCmSp.setMainServiceProviderID(newCmSp.getServiceProviderID()); // } cmSpService.save(newCmSp); cmUserService.update(cmUser); addMessage(redirectAttributes, "保存协销人员管理成功"); return "redirect:" + Global.getAdminPath() + "/user/cmSp/?repage"; } /** * @param linkMan * @param mobile * @param password * @param passWordConfirm * @param duty 职位 0=协销员工 1=协销经理 * @param model * @param redirectAttributes * @return */ @RequiresPermissions("user:cmSp:edit") @RequestMapping(value = "create") @ResponseBody public Map create(String linkMan, String mobile, String password, String passWordConfirm, String duty, Model model, RedirectAttributes redirectAttributes) { Map map = new HashMap<>(); String result; if (!ValidateUtils.validateMobile(mobile)) { map.put("msg", "手机号码错误"); map.put("success", false); return map; } if (cmUserService.findUserByMobile(mobile) != null) { map.put("msg", "手机号码已经被使用"); map.put("success", false); return map; } result = ValidateUtils.validatePassWord(password); if (result != null) { map.put("msg", result); map.put("success", false); return map; } result = ValidateUtils.validatePassWordConfirm(password, passWordConfirm); if (result != null) { map.put("msg", result); map.put("success", false); return map; } if ("1".equals(duty) && CollectionUtils.isNotEmpty(cmSpService.findSpManager())) { map.put("msg", "已经存在协销经理了"); map.put("success", false); return map; } NewCmSp cmSp = new NewCmSp(); CmUser cmUser = new CmUser(); cmSp.setLinkMan(linkMan); cmSp.setContractMobile(mobile); if ("1".equals(duty)) { cmSp.setDuty(UserType.SERVICEPROVIDER.getDesc()); cmUser.setRegisterUserTypeID(UserType.SERVICEEMPLOYEE.getCode() + ""); } else { cmSp.setDuty(UserType.SERVICEEMPLOYEE.getDesc()); cmUser.setRegisterUserTypeID(UserType.SERVICEEMPLOYEE.getCode() + ""); } cmSp.setStatus(ServiceProviderStatus.WAIT_CHECK_DATA.getCode()); cmSp.setAddTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); if ("0".equals(duty)) cmSp.setMainServiceProviderID(1304); // 默认的协销经理 1304 王小萌 cmSpService.save(cmSp); // 目前只允许有一个协销经理的逻辑还存在问题 // if ("1".equals(duty) && cmSp.getServiceProviderID() != null) { // cmSpService.updateSpManager(cmSp.getServiceProviderID()); //如果添加的协销人员是协销经理 那么所有的协销员工的经理指向当前的这个协销经理 // } try { cmUser.setPassword(MD5Utils.MD5(password)); } catch (Exception e) { e.printStackTrace(); } cmUser.setMobile(mobile); cmUser.setUserIdentity(UserIdentity.MAKER.getCode()); cmUser.setAuditStatus(AppKeys.FLAG_NO); cmUser.setRegisterTime(DateUtils.getDateTime()); cmUser.setValidFlag(AppKeys.FLAG_NO); // 默认为冻结状态 需要审核 cmUser.setServiceProviderStatus(ServiceProviderStatus.WAIT_CHECK_DATA.getCode() + ""); cmUser.setUserPermission(1); cmUser.setRealName(linkMan); cmUser.setUserName(linkMan); cmUser.setName(linkMan); cmUserService.save(cmUser); cmSp.setUserID(cmUser.getUserID()); cmSpService.update(cmSp); cmUser.setServiceProviderID(cmSp.getServiceProviderID() + ""); cmUserService.update(cmUser); map.put("success", true); map.put("msg", "添加成功"); return map; } @RequiresPermissions("user:cmSp:delete") @RequestMapping(value = "delete") public String delete(NewCmSp newCmSp, RedirectAttributes redirectAttributes) { cmSpService.delete(newCmSp); addMessage(redirectAttributes, "删除协销人员管理成功"); return "redirect:" + Global.getAdminPath() + "/user/cmSp/?repage"; } /** * 审核 * * @param spID * @param auditNote * @param auditStatus 1为通过审核 0位审核驳回 * @param position 职位 0=协销员工 1=协销经理 * @return */ @RequiresPermissions("user:cmSp:edit") @ResponseBody @RequestMapping(value = "auditSp") public Map auditSp(String spID, String auditNote, String auditStatus, String position) { NewCmSp cmSp = cmSpService.get(spID); CmUser cmUser = cmUserService.get(cmSp.getUserID() + ""); Map map = Maps.newLinkedHashMap(); if (cmUser == null) { map.put("success", false); map.put("msg", "用户信息异常"); return map; } if ("1".equals(auditStatus)) { //审核通过 cmSp.setAuditStatus(AppKeys.FLAG_YES); cmSp.setValidFlag(AppKeys.FLAG_YES); cmSp.setStatus(ServiceProviderStatus.ONLINE.getCode()); if ("1".equals(position)) { cmUser.setRegisterUserTypeID(UserType.SERVICEPROVIDER.getCode() + ""); } else { cmUser.setRegisterUserTypeID(UserType.SERVICEEMPLOYEE.getCode() + ""); } cmUser.setUserIdentity(UserIdentity.MAKER.getCode()); cmUser.setAuditStatus(AppKeys.FLAG_YES); cmUser.setValidFlag(AppKeys.FLAG_YES); cmUser.setServiceProviderStatus(ServiceProviderStatus.ONLINE.getCode() + ""); cmUser.setUserPermission(4); map.put("msg", "审核已经通过"); } else { // 审核不通过 cmSp.setAuditStatus(AppKeys.FLAG_NO); cmSp.setValidFlag(AppKeys.FLAG_NO); cmSp.setStatus(ServiceProviderStatus.CHECK_FAIL.getCode()); cmUser.setAuditStatus(AppKeys.FLAG_NO); cmUser.setValidFlag(AppKeys.FLAG_NO); cmUser.setServiceProviderStatus(ServiceProviderStatus.CHECK_FAIL.getCode() + ""); map.put("msg", "审核已经驳回"); } cmSp.setAuditNote(auditNote); cmSp.setAddTime(DateUtils.getDateTime()); cmUser.setAuditNote(auditNote); cmUser.setAuditTime(DateUtils.getDateTime()); cmSpService.update(cmSp); cmUserService.update(cmUser); map.put("success", true); return map; } /** * 发送消息 * * @param title * @param content * @param id * @param request * @param response * @return */ @RequiresPermissions("user:cmSp:edit") @ResponseBody @RequestMapping(value = "sendMsg") public Map sendMsg(String title, String content, String id, HttpServletRequest request, HttpServletResponse response) { Map map = Maps.newLinkedHashMap(); try { CmMessage cmMessage = new CmMessage(); cmMessage.setAddTime(DateUtils.getDateTime()); cmMessage.setContent(content); cmMessage.setTitle(title); cmMessage.setToUserID(Integer.parseInt(id)); cmMessage.setMessageTypeID("1"); cmMessage.setReadFlag("0"); cmMessageService.save(cmMessage); map.put("errcode", 0); map.put("errmsg", "发送成功"); } catch (Exception e) { logger.debug(e.toString(), e); map.put("errcode", 1); map.put("errmsg", "发送失败"); } return map; } /** * 修改密码 * * @param password * @param id * @param request * @param response * @return */ @RequiresPermissions("user:cmSp:edit") @ResponseBody @RequestMapping(value = "updatePwd") public Map updatePwd(String password, String id, HttpServletRequest request, HttpServletResponse response) { Map map = Maps.newLinkedHashMap(); try { NewCmSp newCmSp = cmSpService.get(id); CmUser cmUser = cmUserService.get(newCmSp.getUserID() + ""); cmUser.setPassword(MD5Util.md5ToHex(password)); cmUserService.update(cmUser); // cmSpService.update(newCmSp); map.put("errcode", 0); map.put("errmsg", "修改成功"); } catch (Exception e) { logger.debug(e.toString(), e); map.put("errcode", 1); map.put("errmsg", "修改失败"); } return map; } /** * 协销上线 * * @param newCmSp * @param model * @param redirectAttributes * @return */ @RequestMapping(value = "onLine") @RequiresPermissions("user:cmSp:edit") public String onLine(NewCmSp newCmSp, Model model, RedirectAttributes redirectAttributes) { CmUser cmUser = cmUserService.get(newCmSp.getUserID() + ""); if (cmUser == null) { addMessage(redirectAttributes, "上线失败,用户信息异常"); return "redirect:" + Global.getAdminPath() + "/user/cmSp/?repage"; } else { cmUser.setValidFlag(AppKeys.FLAG_YES);//解除冻结 cmUser.setServiceProviderStatus(ServiceProviderStatus.ONLINE.getCode() + ""); cmUser.setUserPermission(4); cmUserService.update(cmUser); } newCmSp.setStatus(ServiceProviderStatus.ONLINE.getCode()); cmSpService.update(newCmSp); addMessage(redirectAttributes, "协销上线成功"); return "redirect:" + Global.getAdminPath() + "/user/cmSp/?repage"; } /** * 协销下线 * * @param newCmSp * @param model * @param redirectAttributes * @return */ @RequestMapping(value = "offLine") @RequiresPermissions("user:cmSp:edit") public String offLine(NewCmSp newCmSp, Model model, RedirectAttributes redirectAttributes) { CmUser cmUser = cmUserService.get(newCmSp.getUserID() + ""); if (cmUser == null) { addMessage(redirectAttributes, "下线失败,用户信息异常"); return "redirect:" + Global.getAdminPath() + "/user/cmSp/?repage"; } else { cmUser.setValidFlag(AppKeys.FLAG_NO);//冻结 cmUser.setServiceProviderStatus(ServiceProviderStatus.FREEZE.getCode() + ""); cmUser.setUserPermission(1); cmUserService.update(cmUser); } newCmSp.setStatus(ServiceProviderStatus.FREEZE.getCode()); cmSpService.update(newCmSp); addMessage(redirectAttributes, "协销下线成功"); return "redirect:" + Global.getAdminPath() + "/user/cmSp/?repage"; } /** * 添加Flash消息 * * @param messages */ protected void addMessage(RedirectAttributes redirectAttributes, String... messages) { StringBuilder sb = new StringBuilder(); for (String message : messages) { sb.append(message).append(messages.length > 1 ? "
" : ""); } redirectAttributes.addFlashAttribute("message", sb.toString()); } // @RequestMapping(value = "createSp") // @RequiresPermissions("user:cmSp:edit") // public String createSp(String linkMan, String mobile, String password, String passWordConfirm, String duty1) { // JsonForm jsonForm = null; // if (!ValidateUtils.validateMobile(mobile)) { // return ""; // } // jsonForm = ValidateUtils.validatePassWord(password); // if (!jsonForm.isReturn_code()) { // jsonForm.getReturn_message(); // } // jsonForm = ValidateUtils.validatePassWordConfirm(password, passWordConfirm); // if (!jsonForm.isReturn_code()) { // jsonForm.getReturn_message(); // } // NewCmSp newCmSp = new NewCmSp(); // newCmSp.setlinkMan(linkMan); // newCmSp.setContractMobile(mobile); // newCmSp.setduty11(duty1); // cmSpService.save(newCmSp); // CmUser cmUser = new CmUser(); // cmUser.setMobile(mobile); // cmUser.setUserIdentity(UserIdentity.MAKER.getCode()); // cmUser.setRegisterUserTypeID(UserType.SERVICEEMPLOYEE.getCode() + ""); // cmUser.setAuditStatus(AppKeys.FLAG_NO); // cmUser.setRegisterTime(DateUtils.getDateTime()); // cmUser.setValidFlag(AppKeys.FLAG_NO); // 默认为冻结状态 需要审核 // cmUser.setServiceProviderStatus(ServiceProviderStatus.WAIT_CHECK_DATA.getCode() + ""); // cmUserService.save(cmUser); // newCmSp.setUserID(cmUser.getUserID()); // cmSpService.update(newCmSp); // cmUser.setServiceProviderID(newCmSp.getServiceProviderID() + ""); // cmUserService.update(cmUser); // try { // cmUser.setPassword(MD5Utils.MD5(password)); // } catch (Exception e) { // e.printStackTrace(); // } // return "modules/user/cmSpList"; // } }