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.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);
}
}

View File

@ -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));
}
}

View File

@ -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;
}
}

View File

@ -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
*/