1
0
mirror of https://github.com/chatopera/cosin.git synced 2025-08-01 16:38:02 +08:00

Closed #100 修正创建账号bug

This commit is contained in:
Hai Liang Wang 2018-10-18 17:05:02 +08:00
parent b49df28e69
commit 13623ec265
4 changed files with 227 additions and 193 deletions

View File

@ -18,6 +18,7 @@ package com.chatopera.cc.app;
import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.basic.MainContext;
import com.chatopera.cc.app.config.StartedEventListener; import com.chatopera.cc.app.config.StartedEventListener;
import com.chatopera.cc.util.Constants;
import com.chatopera.cc.util.SystemEnvHelper; import com.chatopera.cc.util.SystemEnvHelper;
import com.chatopera.cc.util.mobile.MobileNumberUtils; import com.chatopera.cc.util.mobile.MobileNumberUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@ -67,15 +68,15 @@ public class Application {
static { static {
// 外呼模块 // 外呼模块
if (isCalloutModule) { if (isCalloutModule) {
MainContext.model.put("sales", true); MainContext.model.put(Constants.CSKEFU_MODULE_CALLOUT, true);
} }
// CRM模块 // CRM模块
if (isContactsModule) { if (isContactsModule) {
MainContext.model.put("contacts", true); MainContext.model.put(Constants.CSKEFU_MODULE_CONTACTS, true);
} }
// 聊天机器人模块 // 聊天机器人模块
if (isChatbotModule) { if (isChatbotModule) {
MainContext.model.put("chatbot", true); MainContext.model.put(Constants.CSKEFU_MODULE_CHATBOT, true);
} }
} }

View File

@ -17,6 +17,7 @@
package com.chatopera.cc.app.basic; package com.chatopera.cc.app.basic;
import com.chatopera.cc.util.Constants;
import com.chatopera.cc.util.DateConverter; import com.chatopera.cc.util.DateConverter;
import com.chatopera.cc.app.basic.resource.ActivityResource; import com.chatopera.cc.app.basic.resource.ActivityResource;
import com.chatopera.cc.app.basic.resource.BatchResource; import com.chatopera.cc.app.basic.resource.BatchResource;
@ -409,7 +410,7 @@ public class MainContext {
return this.name; return this.name;
} }
public int getIndex(){ public int getIndex() {
return this.index; return this.index;
} }
} }
@ -986,4 +987,13 @@ public class MainContext {
public static Class<?> getResource(String resource) { public static Class<?> getResource(String resource) {
return uKeFuResourceMap.get(resource); return uKeFuResourceMap.get(resource);
} }
/**
* 是否开启外呼模块
* @return
*/
public static boolean isEnableCalloutModule() {
return model.containsKey(Constants.CSKEFU_MODULE_CALLOUT) && (model.get(Constants.CSKEFU_MODULE_CALLOUT).equals(true));
}
} }

View File

@ -16,20 +16,21 @@
*/ */
package com.chatopera.cc.app.handler.admin.users; package com.chatopera.cc.app.handler.admin.users;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import com.chatopera.cc.app.algorithm.AutomaticServiceDist; import com.chatopera.cc.app.algorithm.AutomaticServiceDist;
import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.app.basic.MainContext;
import com.chatopera.cc.app.basic.MainUtils;
import com.chatopera.cc.app.cache.CacheHelper; import com.chatopera.cc.app.cache.CacheHelper;
import com.chatopera.cc.app.persistence.repository.UserRoleRepository; import com.chatopera.cc.app.handler.Handler;
import com.chatopera.cc.app.model.AgentStatus; import com.chatopera.cc.app.model.AgentStatus;
import com.chatopera.cc.app.model.User;
import com.chatopera.cc.app.model.UserRole;
import com.chatopera.cc.app.persistence.repository.UserRepository;
import com.chatopera.cc.app.persistence.repository.UserRoleRepository;
import com.chatopera.cc.util.Menu;
import com.chatopera.cc.util.OnlineUserUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
@ -38,211 +39,225 @@ import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import com.chatopera.cc.util.Menu; import javax.servlet.http.HttpServletRequest;
import com.chatopera.cc.app.basic.MainUtils; import javax.validation.Valid;
import com.chatopera.cc.app.persistence.repository.UserRepository; import java.io.FileNotFoundException;
import com.chatopera.cc.util.OnlineUserUtils; import java.io.IOException;
import com.chatopera.cc.app.handler.Handler; import java.util.Date;
import com.chatopera.cc.app.model.User; import java.util.List;
import com.chatopera.cc.app.model.UserRole;
/** /**
*
* @author 程序猿DD * @author 程序猿DD
* @version 1.0.0 * @version 1.0.0
* @blog http://blog.didispace.com * @blog http://blog.didispace.com
*
*/ */
@Controller @Controller
@RequestMapping("/admin/user") @RequestMapping("/admin/user")
public class UsersController extends Handler{ public class UsersController extends Handler {
private final static Logger logger = LoggerFactory.getLogger(UsersController.class);
@Autowired @Autowired
private UserRepository userRepository; private UserRepository userRepository;
@Autowired @Autowired
private UserRoleRepository userRoleRes; private UserRoleRepository userRoleRes;
@RequestMapping("/index") @RequestMapping("/index")
@Menu(type = "admin" , subtype = "user") @Menu(type = "admin", subtype = "user")
public ModelAndView index(ModelMap map , HttpServletRequest request) throws FileNotFoundException, IOException { public ModelAndView index(ModelMap map, HttpServletRequest request) throws FileNotFoundException, IOException {
map.addAttribute( map.addAttribute(
"userList", "userList",
userRepository.findByDatastatusAndOrgiAndOrgid( userRepository.findByDatastatusAndOrgiAndOrgid(
false, false,
super.getOrgiByTenantshare(request), super.getOrgiByTenantshare(request),
super.getOrgid(request), super.getOrgid(request),
new PageRequest( new PageRequest(
super.getP(request), super.getP(request),
super.getPs(request), super.getPs(request),
Sort.Direction.ASC, Sort.Direction.ASC,
"createtime" "createtime"
) )
) )
); );
return request(super.createAdminTempletResponse("/admin/user/index")); return request(super.createAdminTempletResponse("/admin/user/index"));
} }
@RequestMapping("/add") @RequestMapping("/add")
@Menu(type = "admin" , subtype = "user") @Menu(type = "admin", subtype = "user")
public ModelAndView add(ModelMap map , HttpServletRequest request) { public ModelAndView add(ModelMap map, HttpServletRequest request) {
return request(super.createRequestPageTempletResponse("/admin/user/add")); return request(super.createRequestPageTempletResponse("/admin/user/add"));
} }
@RequestMapping("/save") @RequestMapping("/save")
@Menu(type = "admin" , subtype = "user") @Menu(type = "admin", subtype = "user")
public ModelAndView save(HttpServletRequest request ,@Valid User user) { public ModelAndView save(HttpServletRequest request, @Valid User user) {
String msg = "" ; String msg = "";
msg = validUser(user); msg = validUser(user);
if(!StringUtils.isBlank(msg)){ if (!StringUtils.isBlank(msg)) {
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg="+msg)); return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=" + msg));
}else{ } else {
if(request.getParameter("admin")!=null){ if (request.getParameter("admin") != null) {
user.setUsertype("0"); user.setUsertype("0");
}else{ } else {
user.setUsertype(null); user.setUsertype(null);
} }
if(!StringUtils.isBlank(user.getPassword())){ if (!StringUtils.isBlank(user.getPassword())) {
user.setPassword(MainUtils.md5(user.getPassword())); user.setPassword(MainUtils.md5(user.getPassword()));
} }
user.setOrgi(super.getOrgiByTenantshare(request)); user.setOrgi(super.getOrgiByTenantshare(request));
if(!StringUtils.isBlank(super.getUser(request).getOrgid())) { if (!StringUtils.isBlank(super.getUser(request).getOrgid())) {
user.setOrgid(super.getUser(request).getOrgid()); user.setOrgid(super.getUser(request).getOrgid());
}else { } else {
user.setOrgid(MainContext.SYSTEM_ORGI); user.setOrgid(MainContext.SYSTEM_ORGI);
} }
userRepository.save(user) ; userRepository.save(user);
OnlineUserUtils.clean(super.getOrgi(request)); OnlineUserUtils.clean(super.getOrgi(request));
} }
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg="+msg)); return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=" + msg));
} }
private String validUser(User user) { private String validUser(User user) {
String msg = ""; String msg = "";
User tempUser = userRepository.findByUsernameAndDatastatus(user.getUsername(),false) ; User tempUser = userRepository.findByUsernameAndDatastatus(user.getUsername(), false);
if(tempUser!=null) { if (tempUser != null) {
msg = "username_exist"; msg = "username_exist";
return msg; return msg;
} }
tempUser = userRepository.findByEmailAndDatastatus(user.getEmail(),false) ; tempUser = userRepository.findByEmailAndDatastatus(user.getEmail(), false);
if(tempUser!=null) { if (tempUser != null) {
msg = "email_exist"; msg = "email_exist";
return msg; return msg;
} }
tempUser = userRepository.findByMobileAndDatastatus(user.getMobile(),false) ; tempUser = userRepository.findByMobileAndDatastatus(user.getMobile(), false);
if(tempUser!=null) { if (tempUser != null) {
msg = "mobile_exist"; msg = "mobile_exist";
return msg; return msg;
} }
List<User> tempUserList = userRepository.findBySipaccountAndDatastatus(user.getSipaccount(),false) ;
if(tempUserList.size()!=0&&user.getSipaccount()!="") { if (!validUserCallcenterParams(user)) {
msg = "sip_account_exist"; msg = "sip_account_exist";
return msg; return msg;
} }
return msg; return msg;
} }
@RequestMapping("/edit") @RequestMapping("/edit")
@Menu(type = "admin" , subtype = "user") @Menu(type = "admin", subtype = "user")
public ModelAndView edit(ModelMap map ,HttpServletRequest request , @Valid String id) { public ModelAndView edit(ModelMap map, HttpServletRequest request, @Valid String id) {
ModelAndView view = request(super.createRequestPageTempletResponse("/admin/user/edit")) ; ModelAndView view = request(super.createRequestPageTempletResponse("/admin/user/edit"));
view.addObject("userData", userRepository.findByIdAndOrgi(id, super.getOrgiByTenantshare(request))) ; view.addObject("userData", userRepository.findByIdAndOrgi(id, super.getOrgiByTenantshare(request)));
return view; return view;
} }
@RequestMapping("/update") @RequestMapping("/update")
@Menu(type = "admin" , subtype = "user" , admin = true) @Menu(type = "admin", subtype = "user", admin = true)
public ModelAndView update(HttpServletRequest request ,@Valid User user) { public ModelAndView update(HttpServletRequest request, @Valid User user) {
User tempUser = userRepository.getOne(user.getId()) ; User tempUser = userRepository.getOne(user.getId());
if(tempUser != null){ if (tempUser != null) {
String msg = validUserUpdate(user,tempUser); String msg = validUserUpdate(user, tempUser);
if(!StringUtils.isBlank(msg)){ if (!StringUtils.isBlank(msg)) {
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg="+msg)); return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=" + msg));
} }
tempUser.setUname(user.getUname()); tempUser.setUname(user.getUname());
tempUser.setUsername(user.getUsername()); tempUser.setUsername(user.getUsername());
tempUser.setEmail(user.getEmail()); tempUser.setEmail(user.getEmail());
tempUser.setMobile(user.getMobile()); tempUser.setMobile(user.getMobile());
tempUser.setSipaccount(user.getSipaccount()); tempUser.setSipaccount(user.getSipaccount());
//切换成非坐席 判断是否坐席 以及 是否有对话 //切换成非坐席 判断是否坐席 以及 是否有对话
if(!user.isAgent()) { if (!user.isAgent()) {
AgentStatus agentStatus = (AgentStatus) CacheHelper.getAgentStatusCacheBean().getCacheObject((super.getUser(request)).getId(), super.getOrgi(request)); AgentStatus agentStatus = (AgentStatus) CacheHelper.getAgentStatusCacheBean().getCacheObject((super.getUser(request)).getId(), super.getOrgi(request));
if(!(agentStatus==null && AutomaticServiceDist.getAgentUsers(super.getUser(request).getId(), super.getOrgi(request))==0)) { if (!(agentStatus == null && AutomaticServiceDist.getAgentUsers(super.getUser(request).getId(), super.getOrgi(request)) == 0)) {
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=t1")); return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=t1"));
} }
} }
tempUser.setAgent(user.isAgent()); tempUser.setAgent(user.isAgent());
tempUser.setOrgi(super.getOrgiByTenantshare(request)); tempUser.setOrgi(super.getOrgiByTenantshare(request));
if(!StringUtils.isBlank(super.getUser(request).getOrgid())) { if (!StringUtils.isBlank(super.getUser(request).getOrgid())) {
tempUser.setOrgid(super.getUser(request).getOrgid()); tempUser.setOrgid(super.getUser(request).getOrgid());
}else { } else {
tempUser.setOrgid(MainContext.SYSTEM_ORGI); tempUser.setOrgid(MainContext.SYSTEM_ORGI);
} }
tempUser.setCallcenter(user.isCallcenter()); tempUser.setCallcenter(user.isCallcenter());
if(!StringUtils.isBlank(user.getPassword())){ if (!StringUtils.isBlank(user.getPassword())) {
tempUser.setPassword(MainUtils.md5(user.getPassword())); tempUser.setPassword(MainUtils.md5(user.getPassword()));
} }
if(request.getParameter("admin")!=null){ if (request.getParameter("admin") != null) {
tempUser.setUsertype("0"); tempUser.setUsertype("0");
}else{ } else {
tempUser.setUsertype(null); tempUser.setUsertype(null);
} }
if(tempUser.getCreatetime() == null){ if (tempUser.getCreatetime() == null) {
tempUser.setCreatetime(new Date()); tempUser.setCreatetime(new Date());
} }
tempUser.setUpdatetime(new Date()); tempUser.setUpdatetime(new Date());
userRepository.save(tempUser) ; userRepository.save(tempUser);
OnlineUserUtils.clean(super.getOrgi(request)); OnlineUserUtils.clean(super.getOrgi(request));
} }
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html")); return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html"));
} }
private String validUserUpdate(User user,User oldUser) { private String validUserUpdate(User user, User oldUser) {
String msg = ""; String msg = "";
User tempUser = userRepository.findByUsernameAndDatastatus(user.getUsername(),false) ; User tempUser = userRepository.findByUsernameAndDatastatus(user.getUsername(), false);
if(tempUser!=null&&!user.getUsername().equals(oldUser.getUsername())) { if (tempUser != null && !user.getUsername().equals(oldUser.getUsername())) {
msg = "username_exist"; msg = "username_exist";
return msg; return msg;
} }
tempUser = userRepository.findByEmailAndDatastatus(user.getEmail(),false) ; tempUser = userRepository.findByEmailAndDatastatus(user.getEmail(), false);
if(tempUser!=null&&!user.getEmail().equals(oldUser.getEmail())) { if (tempUser != null && !user.getEmail().equals(oldUser.getEmail())) {
msg = "email_exist"; msg = "email_exist";
return msg; return msg;
} }
tempUser = userRepository.findByMobileAndDatastatus(user.getMobile(),false) ; tempUser = userRepository.findByMobileAndDatastatus(user.getMobile(), false);
if(tempUser!=null&&!user.getMobile().equals(oldUser.getMobile())) { if (tempUser != null && !user.getMobile().equals(oldUser.getMobile())) {
msg = "mobile_exist"; msg = "mobile_exist";
return msg; return msg;
} }
List<User> tempUserList = userRepository.findBySipaccountAndDatastatus(user.getSipaccount(),false) ;
if(tempUserList.size()!=0&&user.getSipaccount()!=""&&!user.getSipaccount().equals(oldUser.getSipaccount())) { if (!validUserCallcenterParams(user)) {
msg = "sip_account_exist"; msg = "sip_account_exist";
return msg; return msg;
} }
return msg;
return msg;
} }
@RequestMapping("/delete") @RequestMapping("/delete")
@Menu(type = "admin" , subtype = "user") @Menu(type = "admin", subtype = "user")
public ModelAndView delete(HttpServletRequest request ,@Valid User user) { public ModelAndView delete(HttpServletRequest request, @Valid User user) {
String msg = "admin_user_delete" ; String msg = "admin_user_delete";
if(user!=null){ if (user != null) {
List<UserRole> userRole = userRoleRes.findByOrgiAndUser(super.getOrgiByTenantshare(request), user) ; List<UserRole> userRole = userRoleRes.findByOrgiAndUser(super.getOrgiByTenantshare(request), user);
userRoleRes.delete(userRole); //删除用户的时候同时删除用户对应的 userRoleRes.delete(userRole); //删除用户的时候同时删除用户对应的
user = userRepository.getOne(user.getId()) ; user = userRepository.getOne(user.getId());
user.setDatastatus(true); user.setDatastatus(true);
userRepository.save(user) ; userRepository.save(user);
OnlineUserUtils.clean(super.getOrgi(request)); OnlineUserUtils.clean(super.getOrgi(request));
}else{ } else {
msg = "admin_user_not_exist" ; msg = "admin_user_not_exist";
} }
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg="+msg)); return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=" + msg));
}
/**
* 根据是否开启呼叫中心模块检测账号
* @param user
* @return
*/
private boolean validUserCallcenterParams(final User user) {
if (user.isCallcenter() && MainContext.isEnableCalloutModule()) {
List<User> tempUserList = userRepository.findBySipaccountAndDatastatus(user.getSipaccount(), false);
if (tempUserList.size() != 0 && user.getSipaccount() != "") {
return false;
}
}
return true;
} }
} }

View File

@ -30,6 +30,14 @@ public class Constants {
public final static String IM_MESSAGE_TYPE_MESSAGE = "message"; public final static String IM_MESSAGE_TYPE_MESSAGE = "message";
public final static String CHATBOT_EVENT_TYPE_CHAT = "chat"; public final static String CHATBOT_EVENT_TYPE_CHAT = "chat";
/**
* Modules
*/
public final static String CSKEFU_MODULE_CALLOUT = "sales";
public final static String CSKEFU_MODULE_CHATBOT = "chatbot";
public final static String CSKEFU_MODULE_CONTACTS = "contacts";
/** /**
* Formatter * Formatter
*/ */