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

#122 支持更多自定义logo

This commit is contained in:
Hai Liang Wang 2018-10-25 16:40:46 +08:00
parent a2ef70e7cb
commit 41763967a9
4 changed files with 465 additions and 485 deletions

View File

@ -21,9 +21,12 @@ import com.chatopera.cc.app.basic.MainUtils;
import com.chatopera.cc.app.basic.Viewport;
import com.chatopera.cc.app.cache.CacheHelper;
import com.chatopera.cc.app.handler.api.rest.QueryParams;
import com.chatopera.cc.app.model.StreamingFile;
import com.chatopera.cc.app.model.SystemConfig;
import com.chatopera.cc.app.model.Tenant;
import com.chatopera.cc.app.model.User;
import com.chatopera.cc.app.persistence.blob.JpaBlobHelper;
import com.chatopera.cc.app.persistence.repository.StreamingFileRepository;
import com.chatopera.cc.app.persistence.repository.TenantRepository;
import com.chatopera.cc.exception.CSKefuException;
import org.apache.commons.lang.StringUtils;
@ -38,10 +41,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.ParseException;
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
@ -56,6 +61,12 @@ public class Handler {
@Autowired
private TenantRepository tenantRes;
@Autowired
private JpaBlobHelper jpaBlobHelper;
@Autowired
private StreamingFileRepository streamingFileRes;
public final static int PAGE_SIZE_BG = 1;
public final static int PAGE_SIZE_TW = 20;
public final static int PAGE_SIZE_FV = 50;
@ -461,4 +472,17 @@ public class Handler {
public void setStarttime(long starttime) {
this.starttime = starttime;
}
public String saveImageFileWithMultipart(MultipartFile multipart) throws IOException {
StreamingFile sf = new StreamingFile();
final String fileid = MainUtils.getUUID();
sf.setId(fileid);
sf.setMime(multipart.getContentType());
sf.setData(jpaBlobHelper.createBlob(multipart.getInputStream(), multipart.getSize()));
sf.setName(multipart.getOriginalFilename());
streamingFileRes.save(sf);
return fileid;
}
}

View File

@ -69,24 +69,6 @@ public class WebIMController extends Handler {
@Autowired
private SNSAccountRepository snsAccountRes;
@Autowired
private JpaBlobHelper jpaBlobHelper;
@Autowired
private StreamingFileRepository streamingFileRes;
private String saveImageFile(MultipartFile multipart) throws IOException {
StreamingFile sf = new StreamingFile();
final String fileid = MainUtils.getUUID();
sf.setId(fileid);
sf.setMime(multipart.getContentType());
sf.setData(jpaBlobHelper.createBlob(multipart.getInputStream(), multipart.getSize()));
sf.setName(multipart.getOriginalFilename());
streamingFileRes.save(sf);
return fileid;
}
@RequestMapping("/index")
@Menu(type = "app", subtype = "app", admin = true)
public ModelAndView index(ModelMap map, HttpServletRequest request, @Valid String snsid) {
@ -125,12 +107,12 @@ public class WebIMController extends Handler {
inviteData.setOrgi(super.getOrgi(request));
// 网页品牌标识
if (webimlogo != null && webimlogo.getOriginalFilename().lastIndexOf(".") > 0) {
inviteData.setConsult_dialog_logo(saveImageFile(webimlogo));
inviteData.setConsult_dialog_logo(super.saveImageFileWithMultipart(webimlogo));
}
// 网页坐席头像
if (agentheadimg != null && agentheadimg.getOriginalFilename().lastIndexOf(".") > 0) {
inviteData.setConsult_dialog_headimg(saveImageFile(agentheadimg));
inviteData.setConsult_dialog_headimg(super.saveImageFileWithMultipart(agentheadimg));
}
invite.save(inviteData);
CacheHelper.getSystemCacheBean().put(inviteData.getSnsaccountid(), inviteData, inviteData.getOrgi());
@ -208,7 +190,7 @@ public class WebIMController extends Handler {
tempInviteData.setCtrlenter(inviteData.isCtrlenter());
if (dialogad != null && !StringUtils.isBlank(dialogad.getName()) && dialogad.getBytes() != null && dialogad.getBytes().length > 0) {
tempInviteData.setDialog_ad(saveImageFile(dialogad));
tempInviteData.setDialog_ad(super.saveImageFileWithMultipart(dialogad));
}
invite.save(tempInviteData);
inviteData = tempInviteData;
@ -248,7 +230,7 @@ public class WebIMController extends Handler {
tempInviteData.setConsult_invite_color(inviteData.getConsult_invite_color());
if (invotebg != null && !StringUtils.isBlank(invotebg.getName()) && invotebg.getBytes() != null && invotebg.getBytes().length > 0) {
tempInviteData.setConsult_invite_bg(saveImageFile(invotebg));
tempInviteData.setConsult_invite_bg(super.saveImageFileWithMultipart(invotebg));
}
invite.save(tempInviteData);
inviteData = tempInviteData;

View File

@ -16,28 +16,20 @@
*/
package com.chatopera.cc.app.handler.admin.config;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import com.chatopera.cc.app.basic.MainContext;
import com.chatopera.cc.app.basic.MainUtils;
import com.chatopera.cc.util.Menu;
import com.chatopera.cc.app.cache.CacheHelper;
import com.chatopera.cc.app.handler.Handler;
import com.chatopera.cc.app.model.Secret;
import com.chatopera.cc.app.model.SysDic;
import com.chatopera.cc.app.model.SystemConfig;
import com.chatopera.cc.app.model.UKeFuDic;
import com.chatopera.cc.app.persistence.repository.SecretRepository;
import com.chatopera.cc.app.persistence.repository.SystemConfigRepository;
import com.chatopera.cc.app.persistence.repository.SystemMessageRepository;
import com.chatopera.cc.app.persistence.repository.TemplateRepository;
import com.chatopera.cc.app.model.Secret;
import com.chatopera.cc.app.model.SysDic;
import com.chatopera.cc.util.Menu;
import com.corundumstudio.socketio.SocketIOServer;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -50,10 +42,16 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import com.corundumstudio.socketio.SocketIOServer;
import com.chatopera.cc.app.handler.Handler;
import com.chatopera.cc.app.model.SystemConfig;
import com.chatopera.cc.app.model.UKeFuDic;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import java.util.Properties;
@Controller
@RequestMapping("/admin/config")
@ -122,10 +120,10 @@ public class SystemConfigController extends Handler{
map.addAttribute("sysMessageList", systemMessageRes.findByMsgtypeAndOrgi(MainContext.SystemMessageType.EMAIL.toString(), super.getOrgi(request)));
if(!StringUtils.isBlank(execute) && execute.equals("false")){
if (StringUtils.isNotBlank(execute) && execute.equals("false")) {
map.addAttribute("execute", execute);
}
if(!StringUtils.isBlank(request.getParameter("msg"))){
if (StringUtils.isNotBlank(request.getParameter("msg"))) {
map.addAttribute("msg", request.getParameter("msg"));
}
return request(super.createAdminTempletResponse("/admin/config/index"));
@ -158,6 +156,7 @@ public class SystemConfigController extends Handler{
/**
* 危险操作请谨慎调用 WebLogic/WebSphere/Oracle等中间件服务器禁止调用
*
* @param map
* @param request
* @return
@ -216,30 +215,24 @@ public class SystemConfigController extends Handler{
}
}
if(loginlogo!=null && !StringUtils.isBlank(loginlogo.getOriginalFilename()) && loginlogo.getOriginalFilename().lastIndexOf(".") > 0) {
String logoFileName = "logo/"+ MainUtils.md5(loginlogo.getOriginalFilename())+loginlogo.getOriginalFilename().substring(loginlogo.getOriginalFilename().lastIndexOf(".")) ;
FileUtils.writeByteArrayToFile(new File(path ,logoFileName), loginlogo.getBytes());
systemConfig.setLoginlogo(logoFileName);
if (loginlogo != null && StringUtils.isNotBlank(loginlogo.getOriginalFilename()) && loginlogo.getOriginalFilename().lastIndexOf(".") > 0) {
systemConfig.setLoginlogo(super.saveImageFileWithMultipart(loginlogo));
}
if(consolelogo!=null && !StringUtils.isBlank(consolelogo.getOriginalFilename()) && consolelogo.getOriginalFilename().lastIndexOf(".") > 0) {
String consoleLogoFileName = "logo/"+ MainUtils.md5(consolelogo.getOriginalFilename())+consolelogo.getOriginalFilename().substring(consolelogo.getOriginalFilename().lastIndexOf(".")) ;
FileUtils.writeByteArrayToFile(new File(path ,consoleLogoFileName), consolelogo.getBytes());
systemConfig.setConsolelogo(consoleLogoFileName);
if (consolelogo != null && StringUtils.isNotBlank(consolelogo.getOriginalFilename()) && consolelogo.getOriginalFilename().lastIndexOf(".") > 0) {
systemConfig.setConsolelogo(super.saveImageFileWithMultipart(consolelogo));
}
if(favlogo!=null && !StringUtils.isBlank(favlogo.getOriginalFilename()) && consolelogo.getOriginalFilename().lastIndexOf(".") > 0) {
String favLogoFileName = "logo/"+ MainUtils.md5(favlogo.getOriginalFilename())+favlogo.getOriginalFilename().substring(favlogo.getOriginalFilename().lastIndexOf(".")) ;
FileUtils.writeByteArrayToFile(new File(path ,favLogoFileName), favlogo.getBytes());
systemConfig.setFavlogo(favLogoFileName);
if (favlogo != null && StringUtils.isNotBlank(favlogo.getOriginalFilename()) && consolelogo.getOriginalFilename().lastIndexOf(".") > 0) {
systemConfig.setFavlogo(super.saveImageFileWithMultipart(favlogo));
}
if(secret!=null && !StringUtils.isBlank(secret.getPassword())){
if (secret != null && StringUtils.isNotBlank(secret.getPassword())) {
List<Secret> secretConfig = secRes.findByOrgi(super.getOrgi(request));
String repassword = request.getParameter("repassword");
if(!StringUtils.isBlank(repassword) && repassword.equals(secret.getPassword())){
if (StringUtils.isNotBlank(repassword) && repassword.equals(secret.getPassword())) {
if (secretConfig != null && secretConfig.size() > 0) {
Secret tempSecret = secretConfig.get(0);
String oldpass = request.getParameter("oldpass");
if(!StringUtils.isBlank(oldpass) && MainUtils.md5(oldpass).equals(tempSecret.getPassword())){
if (StringUtils.isNotBlank(oldpass) && MainUtils.md5(oldpass).equals(tempSecret.getPassword())) {
tempSecret.setPassword(MainUtils.md5(secret.getPassword()));
msg = "1";
tempSecret.setEnable(true);

View File

@ -16,26 +16,15 @@
*/
package com.chatopera.cc.app.handler.apps.setting;
import java.io.File;
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.util.Menu;
import com.chatopera.cc.app.algorithm.AutomaticServiceDist;
import com.chatopera.cc.app.cache.CacheHelper;
import com.chatopera.cc.app.persistence.repository.AdTypeRepository;
import com.chatopera.cc.app.persistence.repository.SessionConfigRepository;
import com.chatopera.cc.app.persistence.repository.TagRepository;
import com.chatopera.cc.app.persistence.repository.TemplateRepository;
import com.chatopera.cc.app.model.AdType;
import com.chatopera.cc.app.model.SysDic;
import com.chatopera.cc.app.model.Tag;
import com.chatopera.cc.app.handler.Handler;
import com.chatopera.cc.app.model.*;
import com.chatopera.cc.app.persistence.blob.JpaBlobHelper;
import com.chatopera.cc.app.persistence.repository.*;
import com.chatopera.cc.util.Menu;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -43,17 +32,16 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import com.chatopera.cc.app.persistence.repository.BlackListRepository;
import com.chatopera.cc.app.handler.Handler;
import com.chatopera.cc.app.model.BlackEntity;
import com.chatopera.cc.app.model.SessionConfig;
import com.chatopera.cc.app.model.UKeFuDic;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.io.IOException;
import java.util.Date;
import java.util.List;
@Controller
@RequestMapping("/setting")
@ -74,6 +62,13 @@ public class IMAgentController extends Handler{
@Autowired
private TemplateRepository templateRes;
@Autowired
private StreamingFileRepository streamingFileRes;
@Autowired
private JpaBlobHelper jpaBlobHelper;
@Value("${web.upload-path}")
private String path;
@ -128,7 +123,6 @@ public class IMAgentController extends Handler{
map.put("sessionConfig", tempSessionConfig);
return request(super.createRequestPageTempletResponse("redirect:/setting/agent/index.html"));
}
@ -224,7 +218,6 @@ public class IMAgentController extends Handler{
}
@RequestMapping("/acd")
@Menu(type = "setting", subtype = "acd", admin = false)
public ModelAndView acd(ModelMap map, HttpServletRequest request) {
@ -273,18 +266,12 @@ public class IMAgentController extends Handler{
public ModelAndView advsave(ModelMap map, HttpServletRequest request, @Valid AdType adv, @Valid String advtype, @RequestParam(value = "imgfile", required = false) MultipartFile imgfile) throws IOException {
adv.setOrgi(super.getOrgi(request));
adv.setCreater(super.getUser(request).getId());
if(!StringUtils.isBlank(adv.getContent())){
if (StringUtils.isNotBlank(adv.getContent())) {
adv.setContent(adv.getContent().replaceAll("\"", "'"));
}
adv.setCreatetime(new Date());
if (imgfile != null && imgfile.getSize() > 0) {
File adDir = new File(path , "adv");
if(!adDir.exists()){
adDir.mkdirs() ;
}
String fileName = "adv/"+ MainUtils.getUUID()+imgfile.getOriginalFilename().substring(imgfile.getOriginalFilename().lastIndexOf(".")) ;
FileCopyUtils.copy(imgfile.getBytes(), new File(path , fileName));
adv.setImgurl("/res/image.html?id="+java.net.URLEncoder.encode(fileName , "UTF-8"));
adv.setImgurl("/res/image.html?id=" + super.saveImageFileWithMultipart(imgfile));
}
adTypeRes.save(adv);
@ -309,17 +296,11 @@ public class IMAgentController extends Handler{
ad.setOrgi(super.getOrgi(request));
ad.setCreater(tempad.getCreater());
ad.setCreatetime(tempad.getCreatetime());
if(!StringUtils.isBlank(ad.getContent())){
if (StringUtils.isNotBlank(ad.getContent())) {
ad.setContent(ad.getContent().replaceAll("\"", "'"));
}
if (imgfile != null && imgfile.getSize() > 0) {
File adDir = new File(path , "adv");
if(!adDir.exists()){
adDir.mkdirs() ;
}
String fileName = "adv/"+ MainUtils.getUUID()+imgfile.getOriginalFilename().substring(imgfile.getOriginalFilename().lastIndexOf(".")) ;
FileCopyUtils.copy(imgfile.getBytes(), new File(path , fileName));
ad.setImgurl("/res/image.html?id="+java.net.URLEncoder.encode(fileName , "UTF-8"));
ad.setImgurl("/res/image.html?id=" + super.saveImageFileWithMultipart(imgfile));
} else {
ad.setImgurl(tempad.getImgurl());
}