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:
parent
b49df28e69
commit
13623ec265
@ -18,6 +18,7 @@ package com.chatopera.cc.app;
|
||||
|
||||
import com.chatopera.cc.app.basic.MainContext;
|
||||
import com.chatopera.cc.app.config.StartedEventListener;
|
||||
import com.chatopera.cc.util.Constants;
|
||||
import com.chatopera.cc.util.SystemEnvHelper;
|
||||
import com.chatopera.cc.util.mobile.MobileNumberUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
@ -67,15 +68,15 @@ public class Application {
|
||||
static {
|
||||
// 外呼模块
|
||||
if (isCalloutModule) {
|
||||
MainContext.model.put("sales", true);
|
||||
MainContext.model.put(Constants.CSKEFU_MODULE_CALLOUT, true);
|
||||
}
|
||||
// CRM模块
|
||||
if (isContactsModule) {
|
||||
MainContext.model.put("contacts", true);
|
||||
MainContext.model.put(Constants.CSKEFU_MODULE_CONTACTS, true);
|
||||
}
|
||||
// 聊天机器人模块
|
||||
if (isChatbotModule) {
|
||||
MainContext.model.put("chatbot", true);
|
||||
MainContext.model.put(Constants.CSKEFU_MODULE_CHATBOT, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
package com.chatopera.cc.app.basic;
|
||||
|
||||
import com.chatopera.cc.util.Constants;
|
||||
import com.chatopera.cc.util.DateConverter;
|
||||
import com.chatopera.cc.app.basic.resource.ActivityResource;
|
||||
import com.chatopera.cc.app.basic.resource.BatchResource;
|
||||
@ -409,7 +410,7 @@ public class MainContext {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public int getIndex(){
|
||||
public int getIndex() {
|
||||
return this.index;
|
||||
}
|
||||
}
|
||||
@ -986,4 +987,13 @@ public class MainContext {
|
||||
public static Class<?> getResource(String 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));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -16,20 +16,21 @@
|
||||
*/
|
||||
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.basic.MainContext;
|
||||
import com.chatopera.cc.app.basic.MainUtils;
|
||||
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.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.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
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.servlet.ModelAndView;
|
||||
|
||||
import com.chatopera.cc.util.Menu;
|
||||
import com.chatopera.cc.app.basic.MainUtils;
|
||||
import com.chatopera.cc.app.persistence.repository.UserRepository;
|
||||
import com.chatopera.cc.util.OnlineUserUtils;
|
||||
import com.chatopera.cc.app.handler.Handler;
|
||||
import com.chatopera.cc.app.model.User;
|
||||
import com.chatopera.cc.app.model.UserRole;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.Valid;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author 程序猿DD
|
||||
* @version 1.0.0
|
||||
* @blog http://blog.didispace.com
|
||||
*
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/admin/user")
|
||||
public class UsersController extends Handler{
|
||||
public class UsersController extends Handler {
|
||||
private final static Logger logger = LoggerFactory.getLogger(UsersController.class);
|
||||
|
||||
@Autowired
|
||||
private UserRepository userRepository;
|
||||
|
||||
@Autowired
|
||||
private UserRoleRepository userRoleRes;
|
||||
@Autowired
|
||||
private UserRepository userRepository;
|
||||
|
||||
@Autowired
|
||||
private UserRoleRepository userRoleRes;
|
||||
|
||||
@RequestMapping("/index")
|
||||
@Menu(type = "admin" , subtype = "user")
|
||||
public ModelAndView index(ModelMap map , HttpServletRequest request) throws FileNotFoundException, IOException {
|
||||
map.addAttribute(
|
||||
"userList",
|
||||
userRepository.findByDatastatusAndOrgiAndOrgid(
|
||||
false,
|
||||
super.getOrgiByTenantshare(request),
|
||||
super.getOrgid(request),
|
||||
new PageRequest(
|
||||
super.getP(request),
|
||||
super.getPs(request),
|
||||
Sort.Direction.ASC,
|
||||
"createtime"
|
||||
)
|
||||
)
|
||||
);
|
||||
return request(super.createAdminTempletResponse("/admin/user/index"));
|
||||
@Menu(type = "admin", subtype = "user")
|
||||
public ModelAndView index(ModelMap map, HttpServletRequest request) throws FileNotFoundException, IOException {
|
||||
map.addAttribute(
|
||||
"userList",
|
||||
userRepository.findByDatastatusAndOrgiAndOrgid(
|
||||
false,
|
||||
super.getOrgiByTenantshare(request),
|
||||
super.getOrgid(request),
|
||||
new PageRequest(
|
||||
super.getP(request),
|
||||
super.getPs(request),
|
||||
Sort.Direction.ASC,
|
||||
"createtime"
|
||||
)
|
||||
)
|
||||
);
|
||||
return request(super.createAdminTempletResponse("/admin/user/index"));
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/add")
|
||||
@Menu(type = "admin" , subtype = "user")
|
||||
public ModelAndView add(ModelMap map , HttpServletRequest request) {
|
||||
@Menu(type = "admin", subtype = "user")
|
||||
public ModelAndView add(ModelMap map, HttpServletRequest request) {
|
||||
return request(super.createRequestPageTempletResponse("/admin/user/add"));
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/save")
|
||||
@Menu(type = "admin" , subtype = "user")
|
||||
public ModelAndView save(HttpServletRequest request ,@Valid User user) {
|
||||
String msg = "" ;
|
||||
msg = validUser(user);
|
||||
if(!StringUtils.isBlank(msg)){
|
||||
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg="+msg));
|
||||
}else{
|
||||
if(request.getParameter("admin")!=null){
|
||||
user.setUsertype("0");
|
||||
}else{
|
||||
user.setUsertype(null);
|
||||
}
|
||||
if(!StringUtils.isBlank(user.getPassword())){
|
||||
user.setPassword(MainUtils.md5(user.getPassword()));
|
||||
}
|
||||
|
||||
user.setOrgi(super.getOrgiByTenantshare(request));
|
||||
if(!StringUtils.isBlank(super.getUser(request).getOrgid())) {
|
||||
user.setOrgid(super.getUser(request).getOrgid());
|
||||
}else {
|
||||
user.setOrgid(MainContext.SYSTEM_ORGI);
|
||||
}
|
||||
userRepository.save(user) ;
|
||||
OnlineUserUtils.clean(super.getOrgi(request));
|
||||
}
|
||||
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg="+msg));
|
||||
@Menu(type = "admin", subtype = "user")
|
||||
public ModelAndView save(HttpServletRequest request, @Valid User user) {
|
||||
String msg = "";
|
||||
msg = validUser(user);
|
||||
if (!StringUtils.isBlank(msg)) {
|
||||
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=" + msg));
|
||||
} else {
|
||||
if (request.getParameter("admin") != null) {
|
||||
user.setUsertype("0");
|
||||
} else {
|
||||
user.setUsertype(null);
|
||||
}
|
||||
if (!StringUtils.isBlank(user.getPassword())) {
|
||||
user.setPassword(MainUtils.md5(user.getPassword()));
|
||||
}
|
||||
|
||||
user.setOrgi(super.getOrgiByTenantshare(request));
|
||||
if (!StringUtils.isBlank(super.getUser(request).getOrgid())) {
|
||||
user.setOrgid(super.getUser(request).getOrgid());
|
||||
} else {
|
||||
user.setOrgid(MainContext.SYSTEM_ORGI);
|
||||
}
|
||||
userRepository.save(user);
|
||||
OnlineUserUtils.clean(super.getOrgi(request));
|
||||
}
|
||||
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=" + msg));
|
||||
}
|
||||
|
||||
|
||||
private String validUser(User user) {
|
||||
String msg = "";
|
||||
User tempUser = userRepository.findByUsernameAndDatastatus(user.getUsername(),false) ;
|
||||
if(tempUser!=null) {
|
||||
msg = "username_exist";
|
||||
return msg;
|
||||
}
|
||||
tempUser = userRepository.findByEmailAndDatastatus(user.getEmail(),false) ;
|
||||
if(tempUser!=null) {
|
||||
msg = "email_exist";
|
||||
return msg;
|
||||
}
|
||||
tempUser = userRepository.findByMobileAndDatastatus(user.getMobile(),false) ;
|
||||
if(tempUser!=null) {
|
||||
msg = "mobile_exist";
|
||||
return msg;
|
||||
}
|
||||
List<User> tempUserList = userRepository.findBySipaccountAndDatastatus(user.getSipaccount(),false) ;
|
||||
if(tempUserList.size()!=0&&user.getSipaccount()!="") {
|
||||
msg = "sip_account_exist";
|
||||
return msg;
|
||||
}
|
||||
return msg;
|
||||
String msg = "";
|
||||
User tempUser = userRepository.findByUsernameAndDatastatus(user.getUsername(), false);
|
||||
if (tempUser != null) {
|
||||
msg = "username_exist";
|
||||
return msg;
|
||||
}
|
||||
tempUser = userRepository.findByEmailAndDatastatus(user.getEmail(), false);
|
||||
if (tempUser != null) {
|
||||
msg = "email_exist";
|
||||
return msg;
|
||||
}
|
||||
tempUser = userRepository.findByMobileAndDatastatus(user.getMobile(), false);
|
||||
if (tempUser != null) {
|
||||
msg = "mobile_exist";
|
||||
return msg;
|
||||
}
|
||||
|
||||
if (!validUserCallcenterParams(user)) {
|
||||
msg = "sip_account_exist";
|
||||
return msg;
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/edit")
|
||||
@Menu(type = "admin" , subtype = "user")
|
||||
public ModelAndView edit(ModelMap map ,HttpServletRequest request , @Valid String id) {
|
||||
ModelAndView view = request(super.createRequestPageTempletResponse("/admin/user/edit")) ;
|
||||
view.addObject("userData", userRepository.findByIdAndOrgi(id, super.getOrgiByTenantshare(request))) ;
|
||||
@Menu(type = "admin", subtype = "user")
|
||||
public ModelAndView edit(ModelMap map, HttpServletRequest request, @Valid String id) {
|
||||
ModelAndView view = request(super.createRequestPageTempletResponse("/admin/user/edit"));
|
||||
view.addObject("userData", userRepository.findByIdAndOrgi(id, super.getOrgiByTenantshare(request)));
|
||||
return view;
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/update")
|
||||
@Menu(type = "admin" , subtype = "user" , admin = true)
|
||||
public ModelAndView update(HttpServletRequest request ,@Valid User user) {
|
||||
User tempUser = userRepository.getOne(user.getId()) ;
|
||||
if(tempUser != null){
|
||||
String msg = validUserUpdate(user,tempUser);
|
||||
if(!StringUtils.isBlank(msg)){
|
||||
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg="+msg));
|
||||
}
|
||||
tempUser.setUname(user.getUname());
|
||||
tempUser.setUsername(user.getUsername());
|
||||
tempUser.setEmail(user.getEmail());
|
||||
tempUser.setMobile(user.getMobile());
|
||||
tempUser.setSipaccount(user.getSipaccount());
|
||||
//切换成非坐席 判断是否坐席 以及 是否有对话
|
||||
if(!user.isAgent()) {
|
||||
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)) {
|
||||
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=t1"));
|
||||
}
|
||||
}
|
||||
tempUser.setAgent(user.isAgent());
|
||||
|
||||
tempUser.setOrgi(super.getOrgiByTenantshare(request));
|
||||
|
||||
if(!StringUtils.isBlank(super.getUser(request).getOrgid())) {
|
||||
tempUser.setOrgid(super.getUser(request).getOrgid());
|
||||
}else {
|
||||
tempUser.setOrgid(MainContext.SYSTEM_ORGI);
|
||||
}
|
||||
|
||||
tempUser.setCallcenter(user.isCallcenter());
|
||||
if(!StringUtils.isBlank(user.getPassword())){
|
||||
tempUser.setPassword(MainUtils.md5(user.getPassword()));
|
||||
}
|
||||
|
||||
if(request.getParameter("admin")!=null){
|
||||
tempUser.setUsertype("0");
|
||||
}else{
|
||||
tempUser.setUsertype(null);
|
||||
}
|
||||
|
||||
if(tempUser.getCreatetime() == null){
|
||||
tempUser.setCreatetime(new Date());
|
||||
}
|
||||
tempUser.setUpdatetime(new Date());
|
||||
userRepository.save(tempUser) ;
|
||||
OnlineUserUtils.clean(super.getOrgi(request));
|
||||
}
|
||||
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html"));
|
||||
@Menu(type = "admin", subtype = "user", admin = true)
|
||||
public ModelAndView update(HttpServletRequest request, @Valid User user) {
|
||||
User tempUser = userRepository.getOne(user.getId());
|
||||
if (tempUser != null) {
|
||||
String msg = validUserUpdate(user, tempUser);
|
||||
if (!StringUtils.isBlank(msg)) {
|
||||
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=" + msg));
|
||||
}
|
||||
tempUser.setUname(user.getUname());
|
||||
tempUser.setUsername(user.getUsername());
|
||||
tempUser.setEmail(user.getEmail());
|
||||
tempUser.setMobile(user.getMobile());
|
||||
tempUser.setSipaccount(user.getSipaccount());
|
||||
//切换成非坐席 判断是否坐席 以及 是否有对话
|
||||
if (!user.isAgent()) {
|
||||
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)) {
|
||||
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg=t1"));
|
||||
}
|
||||
}
|
||||
tempUser.setAgent(user.isAgent());
|
||||
|
||||
tempUser.setOrgi(super.getOrgiByTenantshare(request));
|
||||
|
||||
if (!StringUtils.isBlank(super.getUser(request).getOrgid())) {
|
||||
tempUser.setOrgid(super.getUser(request).getOrgid());
|
||||
} else {
|
||||
tempUser.setOrgid(MainContext.SYSTEM_ORGI);
|
||||
}
|
||||
|
||||
tempUser.setCallcenter(user.isCallcenter());
|
||||
if (!StringUtils.isBlank(user.getPassword())) {
|
||||
tempUser.setPassword(MainUtils.md5(user.getPassword()));
|
||||
}
|
||||
|
||||
if (request.getParameter("admin") != null) {
|
||||
tempUser.setUsertype("0");
|
||||
} else {
|
||||
tempUser.setUsertype(null);
|
||||
}
|
||||
|
||||
if (tempUser.getCreatetime() == null) {
|
||||
tempUser.setCreatetime(new Date());
|
||||
}
|
||||
tempUser.setUpdatetime(new Date());
|
||||
userRepository.save(tempUser);
|
||||
OnlineUserUtils.clean(super.getOrgi(request));
|
||||
}
|
||||
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html"));
|
||||
}
|
||||
|
||||
private String validUserUpdate(User user,User oldUser) {
|
||||
String msg = "";
|
||||
User tempUser = userRepository.findByUsernameAndDatastatus(user.getUsername(),false) ;
|
||||
if(tempUser!=null&&!user.getUsername().equals(oldUser.getUsername())) {
|
||||
msg = "username_exist";
|
||||
return msg;
|
||||
}
|
||||
tempUser = userRepository.findByEmailAndDatastatus(user.getEmail(),false) ;
|
||||
if(tempUser!=null&&!user.getEmail().equals(oldUser.getEmail())) {
|
||||
msg = "email_exist";
|
||||
return msg;
|
||||
}
|
||||
tempUser = userRepository.findByMobileAndDatastatus(user.getMobile(),false) ;
|
||||
if(tempUser!=null&&!user.getMobile().equals(oldUser.getMobile())) {
|
||||
msg = "mobile_exist";
|
||||
return msg;
|
||||
}
|
||||
List<User> tempUserList = userRepository.findBySipaccountAndDatastatus(user.getSipaccount(),false) ;
|
||||
if(tempUserList.size()!=0&&user.getSipaccount()!=""&&!user.getSipaccount().equals(oldUser.getSipaccount())) {
|
||||
msg = "sip_account_exist";
|
||||
return msg;
|
||||
}
|
||||
return msg;
|
||||
|
||||
private String validUserUpdate(User user, User oldUser) {
|
||||
String msg = "";
|
||||
User tempUser = userRepository.findByUsernameAndDatastatus(user.getUsername(), false);
|
||||
if (tempUser != null && !user.getUsername().equals(oldUser.getUsername())) {
|
||||
msg = "username_exist";
|
||||
return msg;
|
||||
}
|
||||
tempUser = userRepository.findByEmailAndDatastatus(user.getEmail(), false);
|
||||
if (tempUser != null && !user.getEmail().equals(oldUser.getEmail())) {
|
||||
msg = "email_exist";
|
||||
return msg;
|
||||
}
|
||||
tempUser = userRepository.findByMobileAndDatastatus(user.getMobile(), false);
|
||||
if (tempUser != null && !user.getMobile().equals(oldUser.getMobile())) {
|
||||
msg = "mobile_exist";
|
||||
return msg;
|
||||
}
|
||||
|
||||
if (!validUserCallcenterParams(user)) {
|
||||
msg = "sip_account_exist";
|
||||
return msg;
|
||||
}
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/delete")
|
||||
@Menu(type = "admin" , subtype = "user")
|
||||
public ModelAndView delete(HttpServletRequest request ,@Valid User user) {
|
||||
String msg = "admin_user_delete" ;
|
||||
if(user!=null){
|
||||
List<UserRole> userRole = userRoleRes.findByOrgiAndUser(super.getOrgiByTenantshare(request), user) ;
|
||||
userRoleRes.delete(userRole); //删除用户的时候,同时删除用户对应的
|
||||
user = userRepository.getOne(user.getId()) ;
|
||||
user.setDatastatus(true);
|
||||
userRepository.save(user) ;
|
||||
OnlineUserUtils.clean(super.getOrgi(request));
|
||||
}else{
|
||||
msg = "admin_user_not_exist" ;
|
||||
}
|
||||
return request(super.createRequestPageTempletResponse("redirect:/admin/user/index.html?msg="+msg));
|
||||
@Menu(type = "admin", subtype = "user")
|
||||
public ModelAndView delete(HttpServletRequest request, @Valid User user) {
|
||||
String msg = "admin_user_delete";
|
||||
if (user != null) {
|
||||
List<UserRole> userRole = userRoleRes.findByOrgiAndUser(super.getOrgiByTenantshare(request), user);
|
||||
userRoleRes.delete(userRole); //删除用户的时候,同时删除用户对应的
|
||||
user = userRepository.getOne(user.getId());
|
||||
user.setDatastatus(true);
|
||||
userRepository.save(user);
|
||||
OnlineUserUtils.clean(super.getOrgi(request));
|
||||
} else {
|
||||
msg = "admin_user_not_exist";
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
@ -30,6 +30,14 @@ public class Constants {
|
||||
public final static String IM_MESSAGE_TYPE_MESSAGE = "message";
|
||||
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
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user