Commit baeb8b59 authored by Tu Bach's avatar Tu Bach
parents 361b4fc1 e0affd11
package com.viettel.campaign.config; package com.viettel.campaign.config;
import com.viettel.campaign.filter.CorsFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
...@@ -18,4 +21,14 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -18,4 +21,14 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception { protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable(); http.csrf().disable();
} }
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setName("CorsFilter");
CorsFilter corsFilter = new CorsFilter();
registrationBean.setFilter(corsFilter);
registrationBean.setOrder(1);
return registrationBean;
}
} }
package com.viettel.campaign.filter; package com.viettel.campaign.filter;
import com.viettel.campaign.utils.RedisUtil;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -14,20 +15,40 @@ public class CorsFilter implements Filter { ...@@ -14,20 +15,40 @@ public class CorsFilter implements Filter {
private Logger logger = Logger.getLogger(CorsFilter.class); private Logger logger = Logger.getLogger(CorsFilter.class);
@Override @Override
public void init(FilterConfig filterConfig) throws ServletException { public void init(FilterConfig filterConfig){
} }
@Override @Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp; HttpServletResponse response = (HttpServletResponse) resp;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, Authorization, X-Requested-With, Content-Type, Accept, token1, X-Auth-Token");
try { HttpServletRequest request = (HttpServletRequest) req;
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
chain.doFilter(req, resp);
return;
}
logger.info("uri: "+ request.getRequestURI());
if ("/".equals(request.getRequestURI())) {
chain.doFilter(req, resp);
return;
}
String xAuthToken = request.getHeader("X-Auth-Token");
if (xAuthToken == null || "".equals(xAuthToken)) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is null.");
return;
}
Object obj = RedisUtil.getInstance().get(xAuthToken);
if (obj instanceof UserSession) {
chain.doFilter(req, resp); chain.doFilter(req, resp);
} catch (Exception e) { } else {
logger.error(e.getMessage(), e); response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid.");
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
} }
} }
......
package com.viettel.campaign.mapper;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
public class CampaignAgentsMapper extends BaseMapper<CampaignAgent, CampaignAgentsDTO> {
@Override
public CampaignAgentsDTO toDtoBean(CampaignAgent campaignAgent) {
CampaignAgentsDTO obj = new CampaignAgentsDTO();
obj.setAgentId(campaignAgent.getAgentId());
obj.setCampaignAgentId(campaignAgent.getCampaignAgentId());
obj.setCampaignId(campaignAgent.getCampaignId());
obj.setCompanySiteId(campaignAgent.getCompanySiteId());
obj.setFilterType(campaignAgent.getFilterType());
obj.setReSchedule(campaignAgent.getReSchedule());
obj.setStatus(campaignAgent.getStatus());
return obj;
}
@Override
public CampaignAgent toPersistenceBean(CampaignAgentsDTO dtoBean) {
CampaignAgent obj = new CampaignAgent();
obj.setAgentId(dtoBean.getAgentId());
obj.setCampaignAgentId(dtoBean.getCampaignAgentId());
obj.setCampaignId(dtoBean.getCampaignId());
obj.setCompanySiteId(dtoBean.getCompanySiteId());
obj.setFilterType(dtoBean.getFilterType());
obj.setReSchedule(dtoBean.getReSchedule());
obj.setStatus(dtoBean.getStatus());
return obj;
}
}
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import org.springframework.data.jpa.repository.JpaRepository;
public interface CampaignAgentsRepository extends JpaRepository<CampaignAgent, Long> {
}
package com.viettel.campaign.service; package com.viettel.campaign.service;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
public interface AgentsService { public interface AgentsService {
ResultDTO getAgentsByAgentId(String agentId); ResultDTO getAgentsByAgentId(String agentId);
ResultDTO getAllAgentsByCompanySiteId(int page, int pageSize, Long companySiteId); ResultDTO getAllAgentsByCompanySiteId(int page, int pageSize, Long companySiteId);
ResultDTO getAllAgentsSelectedByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId);
ResultDTO createCampaignAgents(CampaignAgentsDTO campaignAgentsDTO);
} }
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
<<<<<<< HEAD
import com.viettel.campaign.mapper.CampaignAgentsMapper;
=======
import com.viettel.campaign.config.DataSourceQualify; import com.viettel.campaign.config.DataSourceQualify;
>>>>>>> 2e6e4f6376f75cec918507c48f3fa0c6b5344fd0
import com.viettel.campaign.model.acd_full.Agents; import com.viettel.campaign.model.acd_full.Agents;
import com.viettel.campaign.model.ccms_full.CampaignAgent;
import com.viettel.campaign.repository.acd_full.AgentsRepository; import com.viettel.campaign.repository.acd_full.AgentsRepository;
import com.viettel.campaign.repository.ccms_full.CampaignAgentsRepository;
import com.viettel.campaign.service.AgentsService; import com.viettel.campaign.service.AgentsService;
import com.viettel.campaign.utils.Constants; import com.viettel.campaign.utils.Constants;
import com.viettel.campaign.utils.DataUtil; import com.viettel.campaign.utils.DataUtil;
import com.viettel.campaign.utils.HibernateUtil; import com.viettel.campaign.utils.HibernateUtil;
import com.viettel.campaign.utils.SQLBuilder; import com.viettel.campaign.utils.SQLBuilder;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.VSAUsersDTO; import com.viettel.campaign.web.dto.VSAUsersDTO;
import org.hibernate.SQLQuery; import org.hibernate.SQLQuery;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import org.hibernate.transform.Transformers; import org.hibernate.transform.Transformers;
import org.hibernate.type.DateType; import org.hibernate.type.*;
import org.hibernate.type.LongType;
import org.hibernate.type.ShortType;
import org.hibernate.type.StringType;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.*; import org.springframework.data.domain.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -31,6 +35,9 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -31,6 +35,9 @@ public class AgentsServiceImpl implements AgentsService {
@Autowired @Autowired
AgentsRepository agentsRepository; AgentsRepository agentsRepository;
@Autowired
CampaignAgentsRepository campaignAgentsRepository;
@Override @Override
public ResultDTO getAgentsByAgentId(String agentId) { public ResultDTO getAgentsByAgentId(String agentId) {
ResultDTO result = new ResultDTO(); ResultDTO result = new ResultDTO();
...@@ -137,4 +144,112 @@ public class AgentsServiceImpl implements AgentsService { ...@@ -137,4 +144,112 @@ public class AgentsServiceImpl implements AgentsService {
return resultDTO; return resultDTO;
} }
@Override
public ResultDTO getAllAgentsSelectedByCompanySiteId(int page, int pageSize, Long companySiteId, Long campaignId) {
ResultDTO resultDTO = new ResultDTO();
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
if (DataUtil.isNullOrZero(companySiteId)) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return resultDTO;
}
try {
StringBuilder sqlStrBuilder = new StringBuilder();
sqlStrBuilder.append(SQLBuilder.getSqlQueryById(SQLBuilder.SQL_MODULE_CAMPAIGN_MNG, "campaign-agents-by-params"));
sqlStrBuilder.append(" RIGHT JOIN CAMPAIGN_AGENT b on a.USER_ID = b.AGENT_ID");
sqlStrBuilder.append(" WHERE 1 = 1");
sqlStrBuilder.append(" AND b.COMPANY_SITE_ID = :p_company_site_id");
sqlStrBuilder.append(" AND b.CAMPAIGN_ID = :p_campaign_id");
sqlStrBuilder.append(" ORDER BY a.FULL_NAME ASC");
SQLQuery query = session.createSQLQuery(sqlStrBuilder.toString());
query.setParameter("p_company_site_id", companySiteId);
query.setParameter("p_campaign_id", campaignId);
query.addScalar("userId", new LongType());
query.addScalar("userName", new StringType());
query.addScalar("status", new ShortType());
query.addScalar("fullName", new StringType());
query.addScalar("userTypeId", new LongType());
query.addScalar("createDate", new DateType());
query.addScalar("description", new StringType());
query.addScalar("staffCode", new StringType());
query.addScalar("managerId", new LongType());
query.addScalar("locationId", new LongType());
query.addScalar("deptId", new LongType());
query.addScalar("deptLevel", new StringType());
query.addScalar("posId", new LongType());
query.addScalar("deptName", new StringType());
query.addScalar("groupId", new LongType());
query.addScalar("siteId", new LongType());
query.addScalar("companySiteId", new LongType());
query.addScalar("agentType", new ShortType());
query.addScalar("mobileNumber", new StringType());
query.addScalar("facebookId", new StringType());
query.addScalar("loginType", new ShortType());
query.addScalar("googleId", new StringType());
query.addScalar("email", new StringType());
query.addScalar("availableTicket", new LongType());
query.addScalar("userKazooId", new StringType());
query.addScalar("filterType", new ShortType());
query.setResultTransformer(Transformers.aliasToBean(VSAUsersDTO.class));
int count = 0;
List<VSAUsersDTO> dtoList = query.list();
if (dtoList.size() > 0) {
count = query.list().size();
}
Pageable pageable = PageRequest.of(page, pageSize);
if (pageable != null) {
query.setFirstResult(pageable.getPageNumber() * pageable.getPageSize());
query.setMaxResults(pageable.getPageSize());
}
List<VSAUsersDTO> data = query.list();
Page<VSAUsersDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
} finally {
session.close();
}
return resultDTO;
}
@Override
public ResultDTO createCampaignAgents(CampaignAgentsDTO campaignAgentsDTO) {
ResultDTO resultDTO = new ResultDTO();
CampaignAgentsMapper campaignAgentsMapper = new CampaignAgentsMapper();
CampaignAgent campaignAgent = new CampaignAgent();
try {
if (campaignAgentsDTO != null) {
// insert
campaignAgent = campaignAgentsMapper.toPersistenceBean(campaignAgentsDTO);
campaignAgentsRepository.save(campaignAgent);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} else {
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
} catch (Exception e) {
e.printStackTrace();
}
return resultDTO;
}
} }
package com.viettel.campaign.utils;
import com.viettel.security.PassTranformer;
import org.apache.log4j.Logger;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
/**
* @author hanv_itsol
* @project campaign
*/
public class Config {
public static final String APP_CONF_FILE_PATH = System.getProperty("user.dir") + File.separator + "etc" + File.separator + "app.conf";
public static final String LOG_CONF_FILE_PATH = System.getProperty("user.dir") + File.separator + "etc" + File.separator + "log.conf";
public static String amcd_xmlrpc_url;
public static int num_client_amcd_xmlprc;
// public static final int AGENT_ANSWER_TIMEOUT = 10;
// public static final int AGENT_ACCEPT_TIMEOUT = 10;
// public static final int SMS_ANSWER_TIMEOUT = 24 * 60 * 60;
// public static final int INTERVAL_SCAN_SMS = 100;
// public static final int NUM_SMSGW = 1;
// public static final int NUM_RETRY_SEND_SMSGW = 3;
// public static final int INTERVAL_RETRY_SEND_SMSGW = 10;
// public static final String SMS_SEND_OUT_CHANNEL = "198";
// public static final int INTERVAL_SCAN_FACEBOOK = 100;
// public static final int FACEBOOK_ANSWER_TIMEOUT = 24 * 60 * 60;
// public static final String prefixKeyRedis = "";
// public static final String redisPatternSMS = "";
// public static final String redisPatternFacebook = "";
// public static final String rabbitConnection;
// public static final String fbGatewayUser;
// public static final String fbGatewayPass;
// public static final String virtual_host;
// public static final String rb_queuename_kpi_log;
// public static final String facebook_text_queue_name;
// public static final String app_code;
// public static final String TICKET_SERVICES_URL;
public static final int redisTimeout;
public static final String redisAddress;
// public static String link_services_ticket;
private static final Properties properties = new Properties();
static {
org.apache.log4j.PropertyConfigurator.configure(Config.LOG_CONF_FILE_PATH);
try {
properties.load(new FileInputStream(APP_CONF_FILE_PATH));
} catch (IOException ex) {
Logger.getLogger(Config.class.getName()).error(ex.getMessage(), ex);
}
PassTranformer.setInputKey("Ipcc#987654321#@!");
// rabbitConnection = properties.getProperty("rabbit_connection_string");
// fbGatewayUser = PassTranformer.decrypt(properties.getProperty("rabbit_user", "").trim());
// fbGatewayPass = PassTranformer.decrypt(properties.getProperty("rabbit_pass", "").trim());
// virtual_host = properties.getProperty("virtual_host", "/").trim();
// facebook_text_queue_name = properties.getProperty("facebook_text_queue_name", "mt2facebooktext").trim();
// rb_queuename_kpi_log = properties.getProperty("rb_queuename_kpi_log", "econtact_kpi_log").trim();
// app_code = properties.getProperty("app_code", "ECONTACT").trim();
// TICKET_SERVICES_URL = properties.getProperty("ticket_services_url", "").trim();
redisAddress = properties.getProperty("redis_address", "").trim();
redisTimeout = Integer.valueOf(properties.getProperty("redis_timeout", "3000").trim());
// link_services_ticket = properties.getProperty("link_services_ticket");
}
private static String getString(String key, String defaultValue) {
return properties.getProperty(key, defaultValue).trim();
}
private static int getInt(String key, int defaultValue) {
return Integer.valueOf(properties.getProperty(key, "" + defaultValue).trim());
}
}
package com.viettel.campaign.utils;
import org.apache.log4j.Logger;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.HostAndPort;
import java.io.Serializable;
import java.util.*;
/**
* @author hanv_itsol
* @project campaign
*/
public class RedisUtil {
private static final Logger logger = Logger.getLogger(RedisUtil.class);
private static volatile RedisUtil INSTANCE = null;
private JedisCluster jedisCluster;
private String redisAddress;
private int redisTimeout;
private RedisUtil(JedisCluster jedisCluster) {
this.jedisCluster = jedisCluster;
}
public RedisUtil(String redisAddress, int redisTimeout) {
this.redisAddress = redisAddress;
this.redisTimeout = redisTimeout;
}
public RedisUtil() {
}
public synchronized RedisUtil setup() {
if (INSTANCE == null) {
logger.info("Start connect Redis: " + redisAddress);
Set<HostAndPort> hostAndPortNodes = new HashSet();
String[] hostAndPorts = redisAddress.split(",");
for (String hostAndPort : hostAndPorts) {
String[] parts = hostAndPort.split(":");
String host = parts[0];
int port = Integer.parseInt(parts[1].trim());
hostAndPortNodes.add(new HostAndPort(host, port));
}
INSTANCE = new RedisUtil(new JedisCluster(hostAndPortNodes, redisTimeout));
}
return INSTANCE;
}
public static synchronized RedisUtil getInstance() {
if (INSTANCE == null) {
INSTANCE = new RedisUtil().setup();
}
return INSTANCE;
}
public JedisCluster getRedis() {
return INSTANCE.jedisCluster;
}
public void setRedisAddress(String dress) {
redisAddress = dress;
}
public void setRedisTimeout(int timeout) {
redisTimeout = timeout;
}
public String getRedisAddress() {
return redisAddress;
}
public int getRedisTimeout() {
return redisTimeout;
}
public boolean set(String key, Serializable value) {
if (key == null) {
return false;
}
// Jedis jedis = null;
try {
JedisCluster jedis = getRedis();
jedis.set(key.getBytes(), org.springframework.util.SerializationUtils.serialize(value));
jedis.expire(key.getBytes(), 60); // exprire
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return true;
}
public Object get(String key) {
// Jedis jedis = null;
Object object = null;
try {
// jedis = pool.getResource();
JedisCluster jedis = getRedis();
byte[] value = jedis.get(key.getBytes());
if (value != null && value.length > 0) {
object = (Object) org.springframework.util.SerializationUtils.deserialize(value);
}
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
return object;
}
public void del(String key) {
// Jedis jedis = null;
// Object object = null;
try {
// jedis = pool.getResource();
JedisCluster jedis = getRedis();
jedis.del(key);
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
}
}
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CampaignAgentsDTO extends BaseDTO {
Long campaignAgentId;
Long campaignId;
Long agentId;
Short filterType;
Integer status;
Long companySiteId;
Long reSchedule;
}
package com.viettel.campaign.web.rest; package com.viettel.campaign.web.rest;
import com.viettel.campaign.service.AgentsService; import com.viettel.campaign.service.AgentsService;
import com.viettel.campaign.web.dto.CampaignAgentsDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -9,6 +10,8 @@ import org.springframework.http.HttpStatus; ...@@ -9,6 +10,8 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@RestController @RestController
@RequestMapping("/ipcc/agents") @RequestMapping("/ipcc/agents")
@CrossOrigin @CrossOrigin
...@@ -32,4 +35,19 @@ public class AgentsController { ...@@ -32,4 +35,19 @@ public class AgentsController {
ResultDTO result = agentsService.getAllAgentsByCompanySiteId(page, pageSize, companySiteId); ResultDTO result = agentsService.getAllAgentsByCompanySiteId(page, pageSize, companySiteId);
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
@GetMapping("/findAllSelected")
@ResponseBody
public ResponseEntity<ResultDTO> listAgentsSelectedByCompanySiteId(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize, @RequestParam("companySiteId") Long companySiteId, @RequestParam("campaignId") Long campaignId) {
ResultDTO result = agentsService.getAllAgentsSelectedByCompanySiteId(page, pageSize, companySiteId, campaignId);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@PostMapping("/createCampaignAgents")
@ResponseBody
public ResultDTO createCustomerList(@RequestBody @Valid CampaignAgentsDTO campaignAgentsDTO) {
ResultDTO result = new ResultDTO();
result = agentsService.createCampaignAgents(campaignAgentsDTO);
return result;
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment