package com.caimei.modules.user.web.newUser; import com.caimei.constants.ServiceProviderStatus; import com.caimei.constants.UserIdentity; import com.caimei.constants.UserType; import com.caimei.modules.bulkpurchase.entity.CmClub; import com.caimei.modules.bulkpurchase.service.CmClubService; import com.caimei.modules.project.dao.ClubDao; import com.caimei.modules.project.dao.ServiceProviderDao; import com.caimei.modules.project.model.ClubModel; import com.caimei.modules.project.model.ServiceProviderModel; import com.caimei.modules.sys.utils.ValidateUtils; import com.caimei.modules.user.aop.OperationLogAnnotation; import com.caimei.modules.user.entity.*; import com.caimei.modules.user.service.*; import com.caimei.utils.AppKeys; import com.caimei.utils.DateUtils; 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 com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm; import com.thinkgem.jeesite.modules.sys.utils.UserUtils; import org.apache.commons.collections.CollectionUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; 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; /** * Description * * @author : Charles * @date : 2020/4/12 */ @Controller @RequestMapping(value = "${adminPath}/new/user/cmSp") public class SpController extends BaseController { @Resource private CmSpService cmSpService; @Resource private CmUserService cmUserService; @Resource private ClubChangeSpReviewService clubChangeSpReviewService; @Resource private ServiceProviderDao serviceProviderDao; @Resource private CmClubService cmClubService; @Resource private ClubDao clubDao; @Resource private SysLogService sysLogService; @Resource private NewCmClubService newCmClubService; @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 clubChangeSp * @param request * @param response * @param model * @return */ @RequiresPermissions("user:newCmClub:view") @RequestMapping("clubChangeSp") public String list(ClubChangeSp clubChangeSp, HttpServletRequest request, HttpServletResponse response, Model model) { Page page = clubChangeSpReviewService.findPage(new Page(request, response), clubChangeSp); model.addAttribute("page", page); return "modules/userNew/clubChangeSpList"; } //保存 审核 @RequiresPermissions("user:newCmClub:edit") @ResponseBody @RequestMapping(value = "saveReview") public Map saveReview(String reviewStatus, Integer clubChangeSpRecordID, Integer newSpID) { OperationalLogs sysLog = new OperationalLogs(); Map map = Maps.newLinkedHashMap(); try { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HHmmss"); String dateString = formatter.format(currentTime); ClubChangeSp clubChangeSp = new ClubChangeSp(); //审核通过 if (StringUtils.equals("pass", reviewStatus)) { ClubChangeSp cssp = clubChangeSpReviewService.getClubChangeSpById(clubChangeSpRecordID); if (null != cssp) { String ClubsNames = sysLogService.ClubsName(clubChangeSpRecordID); Integer oldserviceProviderId = cssp.getOldSpID(); Integer clubId = cssp.getClubID(); Integer oldSpID = cssp.getOldSpID(); Integer newspId = cssp.getNewSpID(); List oldname = newCmClubService.ClubsIds(cssp); for (Integer i : oldname) { if (i == null) { newCmClubService.oldname(oldserviceProviderId, clubId, oldSpID, newspId); } else { newCmClubService.oldnames(clubId, oldSpID, newspId); newCmClubService.updateServiceProvider(clubId, oldSpID, newspId); } } // 查询serviceprovider协销表 List serviceprovider = serviceProviderDao.getServiceproviderById(cssp.getNewSpID()); // 查询cm_bind表 if (CollectionUtils.isNotEmpty(serviceprovider)) { ServiceProviderModel serviceProvider = serviceprovider.get(0); Integer userID = serviceProvider.getUserID(); //fixme gclub -- club 更换协销 CmClub club = cmClubService.get(cssp.getClubID().toString()); club.setDefaultServiceProviderUpdTime(dateString);//协销修改时间 club.setMainServiceProviderID(serviceProvider.getMainServiceProviderID());//协销经理 club.setSpID(serviceProvider.getServiceProviderID()); club.setScanFlag("2"); club.setInviterName(serviceProvider.getName()); cmClubService.save(club); // 更新通过状态 clubChangeSp.setCheckTime(new Date()); clubChangeSp.setCheckStatus("1");//审核通过 clubChangeSp.setClubChangeSpRecordID(clubChangeSpRecordID); clubChangeSpReviewService.updateCheckStatusById(clubChangeSp); map.put("success", true); map.put("msg", "操作成功"); String ClubsName = sysLogService.ClubsName(clubChangeSpRecordID); String jgName = sysLogService.JgName(clubChangeSpRecordID); String linkMans = sysLogService.ClubName(clubChangeSpRecordID); sysLog.setOperationtime(new Date()); if (ClubsNames == null) { sysLog.setActioncontent("采美默认协销经理(官方账号)" + "更换为" + ClubsName); } else { sysLog.setActioncontent(ClubsNames + "更换为" + ClubsName); } sysLog.setOperationtype("更换协销"); sysLog.setContact(linkMans); sysLog.setInstitutionName(jgName); SystemAuthorizingRealm.Principal principal = UserUtils.getPrincipal(); String username = principal.getName(); sysLog.setOperator(username); //调用service保存SysLog实体类到数据库 if (!"".equals(sysLog.getActioncontent())) { if (sysLog.getInstitutionName() != null && sysLog.getContact() != null) { sysLogService.insert(sysLog); } } // 更换协销成功、添加机构更换协销记录 if (null != serviceProvider.getServiceProviderID()) { sysLogService.insetProvider(serviceProvider.getServiceProviderID(), clubId, username); } } else { map.put("success", false); map.put("msg", "操作失败"); logger.info("协销信息异常!!!"); } } else { map.put("success", false); map.put("msg", "操作失败"); logger.info("机构更换协销信息异常!!!"); } } //审核未通过 if (StringUtils.equals("fail", reviewStatus)) { clubChangeSp.setCheckTime(new Date()); clubChangeSp.setCheckStatus("-1");//审核未通过 clubChangeSp.setClubChangeSpRecordID(clubChangeSpRecordID); clubChangeSpReviewService.updateCheckStatusById(clubChangeSp); String jgName = sysLogService.JgName(clubChangeSpRecordID); String linkMans = sysLogService.ClubName(clubChangeSpRecordID); sysLog.setOperationtime(new Date()); if (!"".equals(linkMans)) { sysLog.setActioncontent("审核不通过"); } sysLog.setOperationtype("更换协销"); sysLog.setContact(linkMans); sysLog.setInstitutionName(jgName); SystemAuthorizingRealm.Principal principal = UserUtils.getPrincipal(); String username = principal.getName(); sysLog.setOperator(username); //调用service保存SysLog实体类到数据库 if (!"".equals(sysLog.getActioncontent())) { if (sysLog.getInstitutionName() != null && sysLog.getContact() != null) { sysLogService.insert(sysLog); } } map.put("success", true); map.put("msg", "操作成功"); } } catch (Exception e) { logger.debug(e.toString(), e); map.put("success", false); map.put("msg", "操作失败"); } return map; } /** * 协销管理 * * @param newCmSp * @param request * @param response * @param model * @return */ @RequiresPermissions("user:newCmClub:view") @RequestMapping(value = {"cmSpList", ""}) 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/userNew/cmSpList"; } /** * 添加协销人员 * * @param newCmSp * @param model * @return */ @RequiresPermissions("user:newCmClub:view") @RequestMapping(value = "cmSpForm") public String form(NewCmSp newCmSp, Model model) { if (cmSpService.findSpManager() == null) { model.addAttribute("hasManager", 0); } else { model.addAttribute("hasManager", 1); } return "modules/userNew/cmSpForm"; } /** * @param linkMan * @param mobile * @param password * @param passWordConfirm * @param duty 职位 0=协销员工 1=协销经理 * @param model * @param redirectAttributes * @return */ @RequiresPermissions("user:newCmClub:edit") @RequestMapping(value = "cmSpCreate") @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(com.caimei.constants.UserType.SERVICEPROVIDER.getDesc()); cmUser.setRegisterUserTypeID(com.caimei.constants.UserType.SERVICEEMPLOYEE.getCode() + ""); } else { cmSp.setDuty(com.caimei.constants.UserType.SERVICEEMPLOYEE.getDesc()); cmUser.setRegisterUserTypeID(UserType.SERVICEEMPLOYEE.getCode() + ""); } cmSp.setStatus(ServiceProviderStatus.ONLINE.getCode()); cmSp.setAddTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); //审核通过 cmSp.setAuditStatus(AppKeys.FLAG_YES); cmSp.setValidFlag(AppKeys.FLAG_YES); // 默认的协销经理 1304 王小萌 if ("0".equals(duty)) { cmSp.setMainServiceProviderID(1304); } cmSpService.save(cmSp); try { cmUser.setPassword(MD5Utils.MD5(password)); } catch (Exception e) { e.printStackTrace(); } cmUser.setUserOrganizeID(0); cmUser.setMobile(mobile); cmUser.setUserIdentity(UserIdentity.MAKER.getCode()); cmUser.setRegisterTime(DateUtils.getDateTime()); cmUser.setServiceProviderStatus(ServiceProviderStatus.WAIT_CHECK_DATA.getCode() + ""); cmUser.setRealName(linkMan); cmUser.setUserName(linkMan); cmUser.setName(linkMan); cmUser.setAuditStatus(AppKeys.FLAG_YES); cmUser.setValidFlag(AppKeys.FLAG_YES); cmUser.setServiceProviderStatus(ServiceProviderStatus.ONLINE.getCode() + ""); cmUser.setAuditTime(DateUtils.getDateTime()); 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; } /** * 协销上线 * * @param newCmSp * @param model * @param redirectAttributes * @return */ @RequestMapping(value = "cmSpOnLine") @RequiresPermissions("user:newCmClub: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() + "/new/user/cmSp/cmSpList/?repage"; } else { //解除冻结 cmUser.setValidFlag(AppKeys.FLAG_YES); cmUser.setServiceProviderStatus(ServiceProviderStatus.ONLINE.getCode() + ""); cmUserService.update(cmUser); } newCmSp.setStatus(ServiceProviderStatus.ONLINE.getCode()); cmSpService.update(newCmSp); addMessage(redirectAttributes, "协销上线成功"); return "redirect:" + Global.getAdminPath() + "/new/user/cmSp/cmSpList/?repage"; } /** * 协销下线 * * @param newCmSp * @param model * @param redirectAttributes * @return */ @RequestMapping(value = "cmSpOffLine") @RequiresPermissions("user:newCmClub: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() + "/new/user/cmSp/cmSpList/?repage"; } else { //冻结 cmUser.setValidFlag(AppKeys.FLAG_NO); cmUser.setServiceProviderStatus(ServiceProviderStatus.FREEZE.getCode() + ""); cmUserService.update(cmUser); } newCmSp.setStatus(ServiceProviderStatus.FREEZE.getCode()); cmSpService.update(newCmSp); addMessage(redirectAttributes, "协销下线成功"); return "redirect:" + Global.getAdminPath() + "/new/user/cmSp/cmSpList/?repage"; } @RequiresPermissions("user:newCmClub:view") @RequestMapping(value = "cmSpEdit") 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/userNew/cmSpEdit"; } @RequiresPermissions("user:newCmClub:edit") @RequestMapping(value = "cmSpDelete") public String delete(NewCmSp newCmSp, RedirectAttributes redirectAttributes) { cmSpService.delete(newCmSp); addMessage(redirectAttributes, "删除协销人员管理成功"); return "redirect:" + Global.getAdminPath() + "/new/user/cmSp/cmSpList/?repage"; } @RequiresPermissions("user:newCmClub:edit") @RequestMapping(value = "cmSpSave") public String save(NewCmSp newCmSp, Model model, RedirectAttributes redirectAttributes) { 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 "redirect:" + Global.getAdminPath() + "/new/user/cmSp/cmSpList/?repage"; } cmUser.setRegisterUserTypeID(UserType.SERVICEPROVIDER.getCode() + ""); // 设置为协销经理 } if ("0".equals(newCmSp.getPosition())) { cmUser.setRegisterUserTypeID(UserType.SERVICEEMPLOYEE.getCode() + ""); // 设置为协销员工 } cmUser.setMobile(newCmSp.getContractMobile()); cmSpService.save(newCmSp); cmUserService.update(cmUser); addMessage(redirectAttributes, "保存协销人员管理成功"); return "redirect:" + Global.getAdminPath() + "/new/user/cmSp/cmSpList/?repage"; } @RequestMapping(value = "leader") public String leader(NewCmSp newCmSp, Model model, RedirectAttributes redirectAttributes) { newCmSp.setTeams(cmSpService.findTeam()); NewCmSp manager = cmSpService.findSpManagerInfo(); model.addAttribute("newCmSp", newCmSp); model.addAttribute("manager", manager); return "modules/userNew/cmSpTeamList"; } @RequestMapping(value = "leader/save") public String leaderSave(NewCmSp newCmSp, Model model, RedirectAttributes redirectAttributes) { if (null == newCmSp.getServiceProviderID()) { model.addAttribute("message", "请选择管理人员!"); return "redirect:" + Global.getAdminPath() + "/new/user/cmSp/leader/?repage"; } cmSpService.saveLeader(newCmSp.getServiceProviderID()); addMessage(redirectAttributes, "保存大总管成功"); return "redirect:" + Global.getAdminPath() + "/serviceteam/cmServiceteamRole/?repage"; } }