package com.caimei.modules.user.web; import com.caimei.constants.ClubStatus; import com.caimei.modules.product.service.CmShoporderService; import com.caimei.modules.sys.utils.CmMsgUtils; import com.caimei.modules.sys.utils.SMSUtils; import com.caimei.modules.user.entity.*; import com.caimei.modules.user.service.*; import com.caimei.utils.AppKeys; import com.caimei.utils.AppUtils; import com.caimei.utils.DateUtils; import com.caimei.utils.MD5Util; import com.caimei.vo.JsonModel; 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.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Random; /** * 用户模块重构--会所管理Controller * * @author zcp * @version 2018-05-21 */ @Controller @RequestMapping(value = "${adminPath}/user/newCmClub") public class NewCmClubController extends BaseController { @Autowired private NewCmClubService newCmClubService; @Autowired private CmUserOrganizeService cmUserOrganizeService; @Autowired private CmUserService cmUserService; @Autowired CmClubinfoService cmClubinfoService; @Autowired CmMessageService cmMessageService; @Autowired CmShoporderService cmShoporderService; @Autowired CmBindService cmBindService; @Autowired CmUserbeanshistoryService cmUserbeanshistoryService; @Autowired private ClubChangeSpReviewService clubChangeSpReviewService; @Autowired CmSpService cmSpService; @ModelAttribute public NewCmClub get(@RequestParam(required = false) String id) { NewCmClub entity = null; if (StringUtils.isNotBlank(id)) { entity = newCmClubService.get(id); } if (entity == null) { entity = new NewCmClub(); } return entity; } /** * 列表展示 * * @param newCmClub * @param request * @param response * @param model * @return */ @RequestMapping(value = {"list", ""}) @RequiresPermissions("user:newCmClub:view") public String list(NewCmClub newCmClub, HttpServletRequest request, HttpServletResponse response, Model model) { if (null != newCmClub.getStartTime() && !"".equals(newCmClub.getStartTime()) && !newCmClub.getStartTime().endsWith("00:00:00")) { newCmClub.setStartTime(newCmClub.getStartTime() + " 00:00:00"); } if (null != newCmClub.getEndTime() && !"".equals(newCmClub.getEndTime()) && !newCmClub.getEndTime().endsWith("23:59:59")) { newCmClub.setEndTime(newCmClub.getEndTime() + " 23:59:59"); } Page page = newCmClubService.findPage(new Page(request, response), newCmClub); model.addAttribute("page", page); //获取组织列表 List cmUserOrganizeList = cmUserOrganizeService.findList(new CmUserOrganize()); model.addAttribute("cmUserOrganizeList", cmUserOrganizeList); model.addAttribute("page", page); return "modules/user/newCmClubList"; } /** * 会所更换协销管理 * 向会所更换协销表添加一条记录 */ @RequiresPermissions("user:newCmClub:edit") @ResponseBody @RequestMapping(value = "changeSp") public Map changeSp(String spID, String clubID, HttpServletRequest request, HttpServletResponse response) { Map map = Maps.newLinkedHashMap(); try { logger.info(spID + "-======-" + clubID); if (StringUtils.isNotBlank(spID) && StringUtils.isNotBlank(clubID)) { //不是直接更换 只是添加一条记录 // Integer spId = Integer.parseInt(spID); NewCmClub newCmClub = newCmClubService.get(clubID); // newCmClub.setSpID(spId); NewCmSp newCmSp = cmSpService.get(spID); // newCmClub.setMainServiceProviderID(newCmSp.getMainServiceProviderID()); // newCmClubService.update(newCmClub); ClubChangeSp clubChangeSp = new ClubChangeSp(); clubChangeSp.setClubID(newCmClub.getClubID()); if (null != newCmClub.getSpID()) { clubChangeSp.setOldSpID(newCmClub.getSpID()); } clubChangeSp.setNewSpID(newCmSp.getServiceProviderID()); clubChangeSp.setApplyTime(new Date()); clubChangeSp.setCheckStatus("0"); clubChangeSpReviewService.save(clubChangeSp); map.put("success", true); map.put("msg", "操作成功"); } else { map.put("success", false); map.put("msg", "操作失败"); } } catch (Exception e) { logger.error(clubID + "--------" + spID + e.getMessage(), e); map.put("success", false); map.put("msg", "操作异常"); } return map; } /** * 修改密码 * * @param password * @param id * @param request * @param response * @return */ @RequiresPermissions("user:newCmClub:edit") @ResponseBody @RequestMapping(value = "updatePwd") public Map updatePwd(String password, String id, HttpServletRequest request, HttpServletResponse response) { Map map = Maps.newLinkedHashMap(); try { CmUser cmUser = cmUserService.get(id); cmUser.setPassword(MD5Util.MD5(password)); cmUserService.update(cmUser); 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 mobile * @param id * @param request * @param response * @return */ @RequiresPermissions("user:newCmClub:edit") @ResponseBody @RequestMapping(value = "updateMobile") public Map updateMobile(String mobile, String id, HttpServletRequest request, HttpServletResponse response) { Map map = Maps.newLinkedHashMap(); try { CmUser cmUser = cmUserService.get(id); if (StringUtils.equals(mobile, cmUser.getBindMobile())) { map.put("success", false); map.put("msg", "该号码与原使用号码一样、无需修改"); return map; } CmUser cmUser1 = new CmUser(); cmUser1.setBindMobile(mobile); List users = cmUserService.findListBuyBindMobile(cmUser1); if (CollectionUtils.isNotEmpty(users) && users.size() > 0) { map.put("success", false); map.put("msg", "修改失败,手机号码已被使用"); } else { //更新会所信息 NewCmClub newCmClub = newCmClubService.get(cmUser.getClubID()); newCmClub.setContractMobile(mobile); newCmClubService.update(newCmClub); //更新会所用户信息 cmUser.setBindMobile(mobile); cmUserService.update(cmUser); String content = "会所企业账号绑定手机号已修改成功,可使用当前手机号进行密码修改等操作。"; SMSUtils.sendSms(mobile, content); map.put("success", true); map.put("msg", "修改成功"); } } catch (Exception e) { logger.debug(e.toString(), e); map.put("success", false); map.put("msg", "修改失败"); } return map; } @RequestMapping(value = "form") @RequiresPermissions("user:newCmClub:edit") public String form(NewCmClub newCmClub, Model model) { model.addAttribute("newCmClub", newCmClub); CmClubinfo cmClubinfo = new CmClubinfo(); cmClubinfo.setClubID(Integer.parseInt(newCmClub.getId())); List cmClubinfos = cmClubinfoService.findList(cmClubinfo); if (null != cmClubinfos && cmClubinfos.size() > 0) { cmClubinfo = cmClubinfos.get(0); } cmClubinfo.setClubID(Integer.parseInt(newCmClub.getId())); // cmClubinfo.setGclubID(newCmClub.getGclubID()); cmClubinfo.setUserID(newCmClub.getUserID()); model.addAttribute("cmClubinfo", cmClubinfo); String wwwServer = Global.getConfig("wwwServer"); //营业执照 newCmClub.setBusinessLicenseImage(AppUtils.getImageURL("clubBusinessLicenseImage", newCmClub.getBusinessLicenseImage(), 0, wwwServer)); //门头照 newCmClub.setHeadpic(AppUtils.getImageURL("club", newCmClub.getHeadpic(), AppKeys.CLUB_LOGO_SIZE, wwwServer)); return "modules/user/newCmClubForm"; } @RequestMapping(value = "save") @RequiresPermissions("user:newCmClub:edit") public String save(NewCmClub newCmClub, CmClubinfo cmClubinfo, Model model, RedirectAttributes redirectAttributes) { cmClubinfo.setClubID(Integer.parseInt(newCmClub.getId())); cmClubinfo.setUserID(newCmClub.getUserID()); if (!beanValidator(model, cmClubinfo)) { return form(newCmClub, model); } if ("".equals(cmClubinfo.getBedNums())) { cmClubinfo.setBedNums(null); } if (null == cmClubinfo.getClubInfoID()) { //新增 cmClubinfo.setIsNewRecord(true); } cmClubinfoService.save(cmClubinfo); addMessage(redirectAttributes, "保存会所资料成功"); return "redirect:" + Global.getAdminPath() + "/user/newCmClub/?repage"; } /** * 会所审核 * * @param auditStatus * @param auditNote * @param id * @param request * @param response * @return */ /* @RequiresPermissions("user:newCmClub:edit") @ResponseBody @RequestMapping(value = "auditClub") public Map auditClub(String auditStatus, String auditNote, String id, HttpServletRequest request, HttpServletResponse response) { Map map = Maps.newLinkedHashMap(); String status = ""; String smsMessage = ""; String currTime = DateUtils.getDateTime(); Integer userPermission; try { NewCmClub newCmClub = newCmClubService.get(id); Integer companyUserID = newCmClub.getUserID(); CmUser companyUser = cmUserService.get(companyUserID + ""); String mobile = companyUser.getBindMobile(); boolean upByUser = false; CmUser userByMobile = cmUserService.findUserByMobile(mobile); if (userByMobile != null && "33".equals(userByMobile.getRegisterUserTypeID())) // 说明这个会所是通过 个人用户升级而来 upByUser = true; //会所审核 -- // 1、直接注册成为企业会所 // 2、个人用户升级成为企业会所 //获取企业会所下级用户 List cmUsers = cmUserService.findByCompanyUserID(companyUserID); *//**审核处理*//* //审核通过 if (StringUtils.equals("1", auditStatus)) { userPermission = 2; status = "90"; auditStatus = "1"; // 如果该会所有邀请者,并且邀请者是已上线的服务商,则将该服务商设置为该会所的定点服务商 //设置协销 if (StringUtils.isNotBlank(companyUser.getFromUserID())) { CmUser fromUser = cmUserService.get(companyUser.getFromUserID() + ""); //协销已上线 if (null != fromUser && fromUser.getRegisterUserTypeID().equals("2") && StringUtils.isNotBlank(fromUser.getServiceProviderID()) && fromUser.getServiceProviderStatus().equals("90")) { // 获取协销经理ID NewCmSp newCmSp = cmSpService.get(fromUser.getServiceProviderID()); newCmClub.setDefaultServiceProviderID(Integer.parseInt(fromUser.getServiceProviderID())); newCmClub.setSpID(Integer.parseInt(fromUser.getServiceProviderID())); newCmClub.setMainServiceProviderID(newCmSp.getMainServiceProviderID()); newCmClub.setDefaultServiceProviderUpdTime(DateUtils.getDateTime()); newCmClub.setFirstServiceProviderFlag("1"); } } companyUser.setUserPermission(userPermission); //审核通过 采美豆+5000 *//*if (StringUtils.isBlank(companyUser.getUserBeans())) { companyUser.setUserBeans("5000"); } else { companyUser.setUserBeans(5000 + Integer.parseInt(companyUser.getUserBeans()) + ""); } //采美豆历史记录 CmUserbeanshistory cmUserbeanshistory = new CmUserbeanshistory(); cmUserbeanshistory.setUserBeanHistoryTypeID(UserBeanHistoryType.CHECK_ONLINE.getCode() + ""); cmUserbeanshistory.setUserID(companyUser.getUserID()); cmUserbeanshistory.setPayBeans("5000"); cmUserbeanshistory.setInfo("审核上线赠送"); cmUserbeanshistory.setAddTime(DateUtils.getDateTime()); cmUserbeanshistoryService.save(cmUserbeanshistory);*//* if (upByUser) smsMessage = "您申请的企业账号已成功通过资料审核,您现有的账号身份已升级为企业员工身份。"; else smsMessage = "恭喜您成功通过资料审核,您可以使用账号" + companyUser.getEmail() + "(或手机号" + companyUser.getBindMobile() + ")在采美登录您的企业账号,开始愉快的采购之旅。"; } else { //审核未通过 userPermission = 1; companyUser.setUserPermission(0); status = "92"; auditStatus = "2"; smsMessage = "很遗憾,您的资料信息有误,未通过审核,请登录采美修改资料信息。"; } //会所表修改 newCmClub.setStatus(Integer.parseInt(status)); newCmClub.setAuditTime(currTime); newCmClub.setAuditNote(auditNote); //企业用户表修改 companyUser.setValidFlag(AppKeys.FLAG_YES);//正常 companyUser.setClubStatus(status); companyUser.setAuditStatus(auditStatus);//同步到用户表的审核信息中 companyUser.setAuditNote(auditNote); companyUser.setAuditTime(currTime); newCmClubService.update(newCmClub); cmUserService.update(companyUser); //直接注册成为企业会所 或 升级成为会所 if (CollectionUtils.isNotEmpty(cmUsers)) { //个人用户升级成为企业会所 cmUserService.updateEmployeeStatus(userPermission, status, null, null, companyUserID); } // 发送系统消息给对应的userID用户 String title = "会所资格认证审核结果"; String messageContent = ""; if (auditStatus.equals("1")) { messageContent = "恭喜您," + title + "【已通过】,恭喜您成功加入采美,祝您开启愉快的采购之旅。"; } else { messageContent = title + "【未通过】,原因:" + auditNote; } *//**发送采美消息*//* sendMessage("1", companyUser.getUserID(), title, messageContent); *//**发送短信*//* if (StringUtils.isNotEmpty(mobile)) { SMSUtils.sendSms(mobile, smsMessage); } map.put("success", true); map.put("msg", "操作成功"); } catch (Exception e) { logger.debug(e.toString(), e); map.put("success", false); map.put("msg", "操作失败"); } return map; }*/ /** * 检查微信注册的用户是否需要发送短信 checkAndSendSMS:(这里用一句话描述这个方法的作用).
* * @param status * @throws Exception * @author zcp * @since JDK 1.6 */ private void checkAndSendSMS(NewCmClub newCmClub, CmUser user, String status, boolean clubFlag) throws Exception { // String scanFlag = user.getScanFlag(); // newCmClub.setStatus(Integer.parseInt(status)); // newCmClubService.update(newCmClub); // int userBeans = 0; // if (user != null && user.getUserBeans() != null) { // userBeans = new Integer(user.getUserBeans()); // } // user.setClubStatus(status); // userBeans += 5000; // if (status.equals("90")) { // user.setClubFlag("1"); // } // 如果是会所(不包含会所员工),赠送5000采美豆 // if (clubFlag) { // user.setUserBeans(userBeans + ""); // } // cmUserService.update(user); // 记录采美豆赠送记录 改密码 发短信 // if (clubFlag) { // CmUserbeanshistory cmUserbeanshistory = new CmUserbeanshistory(); // cmUserbeanshistory.setUserBeanHistoryTypeID(UserBeanHistoryType.CHECK_ONLINE.getCode() + ""); // cmUserbeanshistory.setUserID(user.getUserID()); // cmUserbeanshistory.setPayBeans("5000"); // cmUserbeanshistory.setInfo("审核上线赠送"); // cmUserbeanshistory.setAddTime(DateUtils.getDateTime()); // cmUserbeanshistoryService.save(cmUserbeanshistory); // } } /** * 处理GClub会所状态同步 * * @param status * @throws Exception * @author zcp * @since JDK 1.6 */ public void updateGClubStatus(CmUser user, String status, NewCmClub newCmClub) throws Exception { // if (!StringUtils.isEmpty(user.getUserID().toString())) { // CmGclub cmGclub = new CmGclub(); // cmGclub.setUserID(user.getUserID()); // cmGclub.setGclubID(newCmClub.getGclubID()); // List gclubs = cmGclubService.findList(cmGclub); // if (gclubs != null && gclubs.size() > 0) { // CmGclub gclub = gclubs.get(0); // gclub.setClubstatus(status); // gclub.setUserID(user.getUserID()); // cmGclubService.update(gclub); // cmGempreferralService.updateStatus(gclub.getGclubID().toString(),status); // } // } } /** * 发送消息 * * @param title * @param content * @param id * @param request * @param response * @return */ @RequiresPermissions("user:newCmClub: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("success", true); map.put("msg", "发送成功"); } catch (Exception e) { logger.debug(e.toString(), e); map.put("success", false); map.put("msg", "发送失败"); } return map; } /** * * 会所上线 * * @param newCmClub * @param model * @param redirectAttributes * @return */ @RequestMapping(value = "online") @RequiresPermissions("user:newCmClub:edit") public String onLine(NewCmClub newCmClub, Model model, RedirectAttributes redirectAttributes) { Integer companyUserID = newCmClub.getUserID(); CmUser cmUser = cmUserService.get(companyUserID + ""); if (null != cmUser) { cmUser.setClubStatus(ClubStatus.ONLINE.getCode() + ""); cmUser.setValidFlag(AppKeys.FLAG_YES);//解除冻结 cmUser.setUserPermission(2); //更新所有企业员工状态 cmUserService.updateEmployeeStatus(null, ClubStatus.ONLINE.getCode() + "", null, "1", companyUserID); //更新所有审核过的企业员工权限 cmUserService.updateEmployeePermission(2, companyUserID); cmUserService.update(cmUser); } else { addMessage(redirectAttributes, "上线失败,用户信息异常"); return "redirect:" + Global.getAdminPath() + "/user/newCmClub/?repage"; } //fixme zcp GclUb -- club // CmGclub cmGclub = cmGclubService.get(newCmClub.getGclubID()+""); // if(cmGclub!=null){ // cmGclub.setClubstatus(ClubStatus.ONLINE.getCode()+""); // cmGclubService.update(cmGclub); // }else { // addMessage(redirectAttributes, "会所上线失败,缺少会所信息"); // return "redirect:"+Global.getAdminPath()+"/user/newCmClub/?repage"; // } newCmClub.setStatus(ClubStatus.ONLINE.getCode()); newCmClubService.update(newCmClub); addMessage(redirectAttributes, "会所上线成功"); return "redirect:" + Global.getAdminPath() + "/user/newCmClub/?repage"; } /** * 会所下线 冻结 * * @param newCmClub * @param model * @param redirectAttributes * @return */ @RequestMapping(value = "offline") @RequiresPermissions("user:newCmClub:edit") public String offLine(NewCmClub newCmClub, Model model, RedirectAttributes redirectAttributes) { Integer companyUserID = newCmClub.getUserID(); CmUser cmUser = cmUserService.get(companyUserID + ""); if (null != cmUser) { cmUser.setClubStatus(ClubStatus.FREEZE.getCode() + ""); cmUser.setValidFlag(AppKeys.FLAG_NO);//冻结 cmUser.setUserPermission(0); //更新所有企业员工状态 设置未提示 cmUserService.updateEmployeeStatus(1, ClubStatus.ONLINE.getCode() + "", null, "0", companyUserID); cmUserService.update(cmUser); } else { addMessage(redirectAttributes, "下线失败,用户信息异常"); return "redirect:" + Global.getAdminPath() + "/user/newCmClub/?repage"; } //fixme zcp gclub -- club // CmGclub cmGclub = cmGclubService.get(newCmClub.getGclubID()+""); // if(cmGclub!=null){ // cmGclub.setClubstatus(ClubStatus.FREEZE.getCode()+""); // cmGclubService.update(cmGclub); // }else { // addMessage(redirectAttributes, "会所下线失败,缺少会所信息"); // return "redirect:"+Global.getAdminPath()+"/user/newCmClub/?repage"; // } newCmClub.setStatus(ClubStatus.FREEZE.getCode()); newCmClubService.update(newCmClub); addMessage(redirectAttributes, "会所下线成功"); return "redirect:" + Global.getAdminPath() + "/user/newCmClub/?repage"; } //生成随机数字和字母组合 public String getStringRandom(int length) { String val = ""; Random random = new Random(); //length为几位密码 for (int i = 0; i < length; i++) { String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; //输出字母还是数字 if ("char".equalsIgnoreCase(charOrNum)) { //输出是大写字母还是小写字母 int temp = random.nextInt(2) % 2 == 0 ? 65 : 97; val += (char) (random.nextInt(26) + temp); } else if ("num".equalsIgnoreCase(charOrNum)) { val += String.valueOf(random.nextInt(10)); } } return val; } /** * 发送采美信息 * * @param messageTypeID * @param toUserID * @param title * @param content * @throws Exception */ public void sendMessage(String messageTypeID, Integer toUserID, String title, String content) throws Exception { CmMessage cmMessage = CmMsgUtils.getCmMsg(messageTypeID, toUserID, title, content); cmMessageService.save(cmMessage); } /** * @param cmClub * @param flag 0 设置分类 1 修改分类 * @param redirectAttributes * @return */ @RequestMapping(value = "editClubType") @RequiresPermissions("user:newCmClub:edit") @ResponseBody public JsonModel editClubType(NewCmClub cmClub, String flagC, RedirectAttributes redirectAttributes) { JsonModel jsonModel = JsonModel.newInstance(); if (cmClub.getClubID() == null) { return jsonModel.error("请求参数异常"); } // if (StringUtils.isEmpty(flagC)) { // return jsonModel.error("请求参数异常"); // } // if ("1".equals(flagC)) { // if (StringUtils.isEmpty(cmClub.getFirstClubType()) || // StringUtils.isEmpty(cmClub.getSecondClubType()) || // StringUtils.isEmpty(cmClub.getMainpro())) { // return jsonModel.error("请求参数异常"); // } // } // // if ("0".equals(flagC)) { // if (StringUtils.isEmpty(cmClub.getFirstClubType()) || // StringUtils.isEmpty(cmClub.getSecondClubType()) || // StringUtils.isEmpty(cmClub.getMainpro()) || // StringUtils.isEmpty(cmClub.getMedicalPracticeLicenseImg())) // { // return jsonModel.error("请求参数异常"); // } // } NewCmClub dbClub = newCmClubService.get(cmClub.getClubID().toString()); if ("1".equals(cmClub.getFirstClubType())) { dbClub.setMedicalPracticeLicenseImg(cmClub.getMedicalPracticeLicenseImg()); dbClub.setSecondClubType(cmClub.getSecondClubType()); dbClub.setDepartment(cmClub.getDepartment()); } if ("2".equals(cmClub.getFirstClubType())) { dbClub.setMedicalPracticeLicenseImg(""); dbClub.setSecondClubType(""); dbClub.setDepartment(""); } dbClub.setFirstClubType(cmClub.getFirstClubType()); dbClub.setMainpro(cmClub.getMainpro()); // if ("0".equals(flagC)) // dbClub.setMedicalPracticeLicenseImg(cmClub.getMedicalPracticeLicenseImg()); newCmClubService.update(dbClub); addMessage(redirectAttributes, "操作成功"); return jsonModel.success(Global.getAdminPath() + "/user/newCmClub/?repage"); } }