Commit 6b5fc1eb authored by đinh thị đầm's avatar đinh thị đầm

search customize individual

parent 007d694d
...@@ -15,7 +15,6 @@ public class ServiceCampaignApplication { ...@@ -15,7 +15,6 @@ public class ServiceCampaignApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(ServiceCampaignApplication.class, args); SpringApplication.run(ServiceCampaignApplication.class, args);
RedisUtil redis = new RedisUtil(Config.redisAddress,Config.redisTimeout); RedisUtil redis = new RedisUtil(Config.redisAddress,Config.redisTimeout);
redis.setup(); redis.setup();
} }
......
...@@ -31,27 +31,27 @@ public class CorsFilter implements Filter { ...@@ -31,27 +31,27 @@ public class CorsFilter implements Filter {
HttpServletRequest request = (HttpServletRequest) req; HttpServletRequest request = (HttpServletRequest) req;
// chain.doFilter(req, resp);
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
chain.doFilter(req, resp);
return;
}
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);
} else {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid."); // if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
} // chain.doFilter(req, resp);
// return;
// }
// 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);
// } else {
// response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid.");
// }
} }
@Override @Override
......
package com.viettel.campaign.model.ccms_full;
public class CustomizeField {
}
...@@ -14,7 +14,7 @@ import java.util.List; ...@@ -14,7 +14,7 @@ import java.util.List;
@Repository @Repository
public interface CampaignCfgRepository extends JpaRepository<CampaignCfg, Long>{ public interface CampaignCfgRepository extends JpaRepository<CampaignCfg, Long>{
@Query(" select u FROM CampaignCfg u WHERE u.status = 1") @Query(" select u FROM CampaignCfg u WHERE u.status = 1 and u.completeValue not in (1,2,3,4)")
Page<CampaignCfg> findAll(Pageable pageable); Page<CampaignCfg> findAll(Pageable pageable);
......
...@@ -2,11 +2,13 @@ package com.viettel.campaign.repository.ccms_full; ...@@ -2,11 +2,13 @@ package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.config.DataSourceQualify; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.CampaignCustomer; import com.viettel.campaign.model.ccms_full.CampaignCustomer;
import com.viettel.campaign.model.ccms_full.Customer;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List; import java.util.List;
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
...@@ -33,4 +35,18 @@ public interface CampaignCustomerRepository extends JpaRepository<CampaignCustom ...@@ -33,4 +35,18 @@ public interface CampaignCustomerRepository extends JpaRepository<CampaignCustom
" AND cc.recall_time <= SYSDATE\n" + " AND cc.recall_time <= SYSDATE\n" +
" AND cc.recall_time + interval :apParam MINUTE >= SYSDATE", nativeQuery = true) " AND cc.recall_time + interval :apParam MINUTE >= SYSDATE", nativeQuery = true)
List<CampaignCustomer> getCustomerRecallDate(@Param("campaignId") Long campaignId, @Param("agentId") Long agentId, @Param("companySiteId") Long companySiteId, @Param("apParam") String apParam); List<CampaignCustomer> getCustomerRecallDate(@Param("campaignId") Long campaignId, @Param("agentId") Long agentId, @Param("companySiteId") Long companySiteId, @Param("apParam") String apParam);
@Query("SELECT c FROM Customer c WHERE (?1 LIKE CONCAT('%', c.customerId, '%') AND ?1 = c.customerId)" +
"AND ?2 LIKE CONCAT('%', c.name, '%')" + "AND ?2 LIKE CONCAT('%', c.companyName, '%')"+ "AND ?3 LIKE CONCAT('%', c.gender, '%')" +
"AND c.status = 1 " + "AND ?4 LIKE CONCAT('%', c.currentAddress, '%')" + "AND ?5 LIKE CONCAT('%', c.placeOfBirth, '%')"
+ "AND ?6 LIKE CONCAT('%', c.dateOfBirth, '%')" + "AND ?8 LIKE CONCAT('%', c.mobileNumber, '%')"
+ "AND ?9 LIKE CONCAT('%', c.email, '%')" + "AND ?10 LIKE CONCAT('%', c.userName, '%')"
+ "AND ?11 LIKE CONCAT('%', c.customerType, '%')"
)
List<Customer> filterCustomer(Long customerId, String name, String companyName, Short gender,
String currentAddress,
String placeOfBirth, Date dateOfBirth, String mobileNumber, String email,
String userName, Long customerType
);
} }
...@@ -32,4 +32,6 @@ public interface CustomerRepository extends JpaRepository<Customer, Long> { ...@@ -32,4 +32,6 @@ public interface CustomerRepository extends JpaRepository<Customer, Long> {
@Query("select c from Customer c left join com.viettel.campaign.model.ccms_full.CustomerTime ct on c.customerId = ct.customerId " + @Query("select c from Customer c left join com.viettel.campaign.model.ccms_full.CustomerTime ct on c.customerId = ct.customerId " +
"where c.ipccStatus = 'locked' and c.siteId =?1 and ct.endTime <= ?2") "where c.ipccStatus = 'locked' and c.siteId =?1 and ct.endTime <= ?2")
List<Customer> findAllByCondition(Long siteId, Date endTime); List<Customer> findAllByCondition(Long siteId, Date endTime);
} }
...@@ -68,4 +68,12 @@ public interface CustomerService { ...@@ -68,4 +68,12 @@ public interface CustomerService {
void buildTemplate(Long companySiteId); void buildTemplate(Long companySiteId);
List<CustomizeFieldDTO> getCustomizeField(Long customerId); List<CustomizeFieldDTO> getCustomizeField(Long customerId);
//--------------search customer---------------//
// ResultDTO getCustomerFields(Long companySiteId, Long customerListId, Long customerId);
List<Customer> searchByQuery(String queryString);
Long countByQuery(String queryString);
} }
...@@ -83,6 +83,7 @@ public class CampaignCfgServiceImpl implements CampaignCfgService { ...@@ -83,6 +83,7 @@ public class CampaignCfgServiceImpl implements CampaignCfgService {
sb.append(" and COMPANY_SITE_ID = :p_company_site_id"); sb.append(" and COMPANY_SITE_ID = :p_company_site_id");
SQLQuery query = session.createSQLQuery(sb.toString()); SQLQuery query = session.createSQLQuery(sb.toString());
query.setParameter("p_company_site_id", companySiteId); query.setParameter("p_company_site_id", companySiteId);
...@@ -290,7 +291,7 @@ public class CampaignCfgServiceImpl implements CampaignCfgService { ...@@ -290,7 +291,7 @@ public class CampaignCfgServiceImpl implements CampaignCfgService {
sb.append("SELECT max(to_number(COMPLETE_VALUE)) completeValue, COMPANY_SITE_ID "); sb.append("SELECT max(to_number(COMPLETE_VALUE)) completeValue, COMPANY_SITE_ID ");
sb.append(" companySiteId from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = :p_site_id "); sb.append(" companySiteId from CAMPAIGN_COMPLETE_CODE where COMPANY_SITE_ID = :p_site_id ");
sb.append(" GROUP BY COMPANY_SITE_ID"); sb.append(" GROUP BY COMPANY_SITE_ID ");
SQLQuery query = session.createSQLQuery(sb.toString()); SQLQuery query = session.createSQLQuery(sb.toString());
......
package com.viettel.campaign.service.impl; package com.viettel.campaign.service.impl;
import com.github.tennaito.rsql.jpa.JpaCriteriaQueryVisitor;
import com.viettel.campaign.config.DataSourceQualify; import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.mapper.CustomerListMapper; import com.viettel.campaign.mapper.CustomerListMapper;
import com.viettel.campaign.mapper.CustomerMapper; import com.viettel.campaign.mapper.CustomerMapper;
...@@ -16,6 +17,7 @@ import com.viettel.campaign.web.dto.*; ...@@ -16,6 +17,7 @@ import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CustomerDetailRequestDTO; import com.viettel.campaign.web.dto.request_dto.CustomerDetailRequestDTO;
import com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.CustomerRequestDTO;
import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
import cz.jirutka.rsql.parser.ast.RSQLVisitor;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
...@@ -39,13 +41,29 @@ import org.springframework.util.ResourceUtils; ...@@ -39,13 +41,29 @@ import org.springframework.util.ResourceUtils;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query; import javax.persistence.Query;
import javax.persistence.criteria.CriteriaQuery;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.util.*; import java.util.*;
import com.github.tennaito.rsql.jpa.JpaCriteriaCountQueryVisitor;
import com.github.tennaito.rsql.jpa.JpaCriteriaQueryVisitor;
import cz.jirutka.rsql.parser.RSQLParser;
import cz.jirutka.rsql.parser.ast.Node;
import cz.jirutka.rsql.parser.ast.RSQLVisitor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaQuery;
import java.util.Collections;
import java.util.List;
import java.util.List;
@Service @Service
public class CustomerServiceImpl implements CustomerService { public class CustomerServiceImpl implements CustomerService {
;
@Autowired @Autowired
@PersistenceContext( unitName= DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL) @PersistenceContext( unitName= DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
EntityManager entityManager; EntityManager entityManager;
...@@ -955,6 +973,8 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -955,6 +973,8 @@ public class CustomerServiceImpl implements CustomerService {
return customizeFieldDTOList; return customizeFieldDTOList;
} }
@Override @Override
@Transactional(DataSourceQualify.CCMS_FULL) @Transactional(DataSourceQualify.CCMS_FULL)
public List<CustomerListDTO> getCustomerListInfo(CampaignCustomerDTO campaignCustomerDTO) { public List<CustomerListDTO> getCustomerListInfo(CampaignCustomerDTO campaignCustomerDTO) {
...@@ -1090,4 +1110,38 @@ public class CustomerServiceImpl implements CustomerService { ...@@ -1090,4 +1110,38 @@ public class CustomerServiceImpl implements CustomerService {
public Customer update(Customer c) { public Customer update(Customer c) {
return customerRepository.save(c); return customerRepository.save(c);
} }
//--------search customer -----//
@Override
public List<Customer> searchByQuery(String queryString) {
RSQLVisitor<CriteriaQuery<Customer>, EntityManager> visitor = new JpaCriteriaQueryVisitor<>();
CriteriaQuery<Customer> query;
query = getCriteriaQuery(queryString, visitor);
List<Customer> resultList = entityManager.createQuery(query).getResultList();
if (resultList == null || resultList.isEmpty()){
return Collections.emptyList();
}
return resultList;
}
@Override
public Long countByQuery(String queryString) {
RSQLVisitor<CriteriaQuery<Long>, EntityManager> visitor = new JpaCriteriaCountQueryVisitor<Customer>();
CriteriaQuery<Long> query;
query = getCriteriaQuery(queryString, visitor);
return entityManager.createQuery(query).getSingleResult();
}
private <T> CriteriaQuery<T> getCriteriaQuery(String queryString, RSQLVisitor<CriteriaQuery<T>, EntityManager> visitor) {
Node rootNode;
CriteriaQuery<T> query;
try {
rootNode = new RSQLParser().parse(queryString);
query = rootNode.accept(visitor, entityManager);
} catch (Exception e){
e.printStackTrace();
throw new IllegalArgumentException(e.getMessage());
}
return query;
}
} }
package com.viettel.campaign.web.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class CustomizeFielObjectDTO {
private Long customerId;
private String name;
private String companyName;
private String customerImg;
private String status;
private Long siteId;
private Short gender;
private String currentAddress;
private String placeOfBirth;
private Date dateOfBirth;
private String mobileNumber;
private String email;
private String userName;
private Long customerType;
private Long customizeFieldObjectId;
private Long objectId;
private Long customizeFieldId;
private String valueText;
private Long valueNumber;
private Date valueDate;
private Long valueCheckbox;
private Date createBy;
private Date createDate;
private String updateBy;
private Date updateDate;
private Long fieldOptionValueId;
private String title;
private String functionCode;
}
package com.viettel.campaign.web.rest; package com.viettel.campaign.web.rest;
import com.viettel.campaign.model.ccms_full.Customer;
import com.viettel.campaign.web.dto.*; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.service.CustomerService; import com.viettel.campaign.service.CustomerService;
import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
...@@ -266,4 +267,17 @@ public class CustomerController { ...@@ -266,4 +267,17 @@ public class CustomerController {
List<CustomizeFieldDTO> data = customerService.getCustomizeField(customerId); List<CustomizeFieldDTO> data = customerService.getCustomizeField(customerId);
return new ResponseEntity<>(data, HttpStatus.OK); return new ResponseEntity<>(data, HttpStatus.OK);
} }
} @GetMapping(path = "" , produces = {MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<List<Customer>>query(@RequestParam(value = "search")String query){
List<Customer> result = null;
try {
result= customerService.searchByQuery(query);
}catch (IllegalArgumentException iae){
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body(result);
}
return ResponseEntity.status(HttpStatus.OK)
.body(result);
}
}
server: server:
port: 1111 port: 9999
spring: spring:
application: application:
name: campaign name: campaign
......
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