Commit 81c79e34 authored by Tu Bach's avatar Tu Bach

Merge branch 'master' into tubn

parents 6893fb8c ce797e37
No preview for this file type
...@@ -30,27 +30,27 @@ public class CorsFilter implements Filter { ...@@ -30,27 +30,27 @@ public class CorsFilter implements Filter {
HttpServletRequest request = (HttpServletRequest) req; HttpServletRequest request = (HttpServletRequest) req;
// chain.doFilter(req, response); chain.doFilter(req, response);
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { // if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
chain.doFilter(req, resp); // chain.doFilter(req, resp);
return; // return;
} // }
if ("/".equals(request.getRequestURI())) { // if ("/".equals(request.getRequestURI())) {
chain.doFilter(req, resp); // chain.doFilter(req, resp);
return; // return;
} // }
String xAuthToken = request.getHeader("X-Auth-Token"); // String xAuthToken = request.getHeader("X-Auth-Token");
if (xAuthToken == null || "".equals(xAuthToken)) { // if (xAuthToken == null || "".equals(xAuthToken)) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is null."); // response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is null.");
return; // return;
} // }
Object obj = RedisUtil.getInstance().get(xAuthToken); // Object obj = RedisUtil.getInstance().get(xAuthToken);
if (obj instanceof UserSession) { // if (obj instanceof UserSession) {
chain.doFilter(req, resp); // chain.doFilter(req, resp);
} else { // } else {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid."); // response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "The token is invalid.");
} // }
} }
@Override @Override
......
...@@ -32,7 +32,7 @@ public class ApParam implements Serializable { ...@@ -32,7 +32,7 @@ public class ApParam implements Serializable {
private String parCode; private String parCode;
@Column(name = "DESCRIPTION") @Column(name = "DESCRIPTION")
private Long description; private String description;
@Column(name = "IS_DELETE") @Column(name = "IS_DELETE")
private Long isDelete; private Long isDelete;
......
...@@ -4,6 +4,7 @@ import com.viettel.campaign.model.ccms_full.ApParam; ...@@ -4,6 +4,7 @@ import com.viettel.campaign.model.ccms_full.ApParam;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
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.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -23,4 +24,12 @@ public interface ApParamRepository extends JpaRepository<ApParam, Long> { ...@@ -23,4 +24,12 @@ public interface ApParamRepository extends JpaRepository<ApParam, Long> {
@Query(value = "FROM ApParam WHERE status = 1 AND parType = :parType") @Query(value = "FROM ApParam WHERE status = 1 AND parType = :parType")
List<ApParam> findAllParam(@Param("parType") String parType); List<ApParam> findAllParam(@Param("parType") String parType);
// ----------- sql lay so thu tu bang customer list ------------ //
@Query("select a from ApParam a where a.parType = 'CUSTOMER_LIST_SEQ'")
ApParam getCustomerListSeq();
@Modifying
@Query("update ApParam a set a.parValue = :p_par_value, a.description = :p_description where a.parType = 'CUSTOMER_LIST_SEQ'")
int updateCustomerListSeq(@Param("p_par_value") String p_par_value, @Param("p_description") String p_description);
} }
...@@ -88,4 +88,9 @@ public interface CampaignCustomerRepository extends JpaRepository<CampaignCustom ...@@ -88,4 +88,9 @@ public interface CampaignCustomerRepository extends JpaRepository<CampaignCustom
" and customer_list_id = :p_cus_list_id\n" + " and customer_list_id = :p_cus_list_id\n" +
" and (status = 0 or status in (select * from status_customer))", nativeQuery = true) " and (status = 0 or status in (select * from status_customer))", nativeQuery = true)
List<CampaignCustomer> findListCustomerToDel(@Param("p_company_site_id") Long companySiteId, @Param("p_campaign_id") Long campaignId, @Param("p_cus_list_id") Long customerListId); List<CampaignCustomer> findListCustomerToDel(@Param("p_company_site_id") Long companySiteId, @Param("p_campaign_id") Long campaignId, @Param("p_cus_list_id") Long customerListId);
CampaignCustomer findCampaignCustomerByCampaignIdAndCompanySiteIdAndCustomerId(Long campaignId, Long companySiteId, Long customerId);
@Query(value = "select complete_value from campaign_complete_code where status = 1 and is_finish = 0 and is_recall = 0", nativeQuery = true)
List<Short> getStatus();
} }
package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.model.ccms_full.Customer;
import java.util.List;
public interface CustomerQueryRepository {
List<Customer> findAll(String rsqlQuery);
}
package com.viettel.campaign.repository.ccms_full; package com.viettel.campaign.repository.ccms_full;
import com.viettel.campaign.config.DataSourceQualify;
import com.viettel.campaign.model.ccms_full.CustomizeFields; import com.viettel.campaign.model.ccms_full.CustomizeFields;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
@Repository @Repository
@Transactional(DataSourceQualify.CCMS_FULL)
public interface CustomizeFieldsRepository extends JpaRepository<CustomizeFields, Long> { public interface CustomizeFieldsRepository extends JpaRepository<CustomizeFields, Long> {
List<CustomizeFields> findCustomizeFieldsByFunctionCodeEqualsAndStatusAndActiveAndSiteId(String functionCode, Long status, Long active, Long siteId); List<CustomizeFields> findCustomizeFieldsByFunctionCodeEqualsAndStatusAndActiveAndSiteId(String functionCode, Long status, Long active, Long siteId);
List<CustomizeFields> findByFunctionCodeAndActiveAndStatusAndSiteId(String functionCode, Long active, Long status, Long siteId);
} }
...@@ -638,6 +638,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom { ...@@ -638,6 +638,7 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
"),\n" + "),\n" +
"data as (\n" + "data as (\n" +
"select a.*, rownum row_ from data_temp a\n" + "select a.*, rownum row_ from data_temp a\n" +
"where a.totalCusList > 0" +
"),\n" + "),\n" +
"count_data as (\n" + "count_data as (\n" +
"select count(*) totalRow from data_temp\n" + "select count(*) totalRow from data_temp\n" +
......
package com.viettel.campaign.repository.ccms_full.impl;
import com.github.tennaito.rsql.jpa.JpaCriteriaQueryVisitor;
import com.viettel.campaign.model.ccms_full.Customer;
import com.viettel.campaign.repository.ccms_full.CustomerQueryRepository;
import cz.jirutka.rsql.parser.RSQLParser;
import cz.jirutka.rsql.parser.ast.Node;
import cz.jirutka.rsql.parser.ast.RSQLVisitor;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.CriteriaQuery;
import java.util.List;
public class CustomerQueryRepositoryImpl implements CustomerQueryRepository {
@PersistenceContext
private EntityManager entityManager;
private RSQLVisitor<CriteriaQuery<Customer>, EntityManager> visitor = new JpaCriteriaQueryVisitor<Customer>();
private RSQLParser parser = new RSQLParser();
@Override
public List<Customer> findAll(String rsqlQuery) {
Node node = parser.parse(rsqlQuery);
CriteriaQuery<Customer> query = node.accept(visitor, entityManager);
return entityManager.createQuery(query).getResultList();
}
}
...@@ -5,6 +5,7 @@ import com.viettel.campaign.model.ccms_full.CustomerList; ...@@ -5,6 +5,7 @@ import com.viettel.campaign.model.ccms_full.CustomerList;
import com.viettel.campaign.model.ccms_full.CustomizeFieldObject; import com.viettel.campaign.model.ccms_full.CustomizeFieldObject;
import com.viettel.campaign.model.ccms_full.CustomizeFields; import com.viettel.campaign.model.ccms_full.CustomizeFields;
import com.viettel.campaign.web.dto.*; import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CustomerQueryDTO;
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.CustomizeRequestDTo; import com.viettel.campaign.web.dto.request_dto.CustomizeRequestDTo;
import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO; import com.viettel.campaign.web.dto.request_dto.SearchCustomerRequestDTO;
...@@ -38,7 +39,7 @@ public interface CustomerService { ...@@ -38,7 +39,7 @@ public interface CustomerService {
// VIẾT ĐI VIẾT LẠI 4 LẦN RỒI ĐẤY // VIẾT ĐI VIẾT LẠI 4 LẦN RỒI ĐẤY
ResultDTO createCustomerList(CustomerListDTO customerListDTO, String userName); ResultDTO createCustomerList(CustomerListDTO customerListDTO, String userName);
ResultDTO updateCustomerList(CustomerListDTO customerListDTO); ResultDTO updateCustomerList(CustomerListDTO customerListDTO, String userName);
ResultDTO deleteCustomerList(CustomerListDTO customerListDTO); ResultDTO deleteCustomerList(CustomerListDTO customerListDTO);
...@@ -58,12 +59,15 @@ public interface CustomerService { ...@@ -58,12 +59,15 @@ public interface CustomerService {
List<CustomerDTO> getIndividualCustomerInfo(CampaignCustomerDTO campaignCustomerDTO); List<CustomerDTO> getIndividualCustomerInfo(CampaignCustomerDTO campaignCustomerDTO);
ResultDTO deleteCustomerFromCampaign(CampaignCustomerDTO campaignCustomerDTO);
// ------------ customer ------------ // // ------------ customer ------------ //
ResultDTO getCustomerRecall(Long campaignId, Long customerId); ResultDTO getCustomerRecall(Long campaignId, Long customerId);
List<Customer> findAllByCondition(Long siteId, Date endTime); List<Customer> findAllByCondition(Long siteId, Date endTime);
Customer update(Customer c); Customer update(Customer c);
List<CustomizeFields> getDynamicHeader(Long companySiteId); List<CustomizeFields> getDynamicHeader(Long companySiteId);
...@@ -73,9 +77,15 @@ public interface CustomerService { ...@@ -73,9 +77,15 @@ public interface CustomerService {
Map<String, Object> readAndValidateCustomer(String path, List<CustomizeFields> headerDTOS, UserSession userSession, Long customerListId); Map<String, Object> readAndValidateCustomer(String path, List<CustomizeFields> headerDTOS, UserSession userSession, Long customerListId);
List<CustomizeFieldObject> getCustomizeField(Long customerId); List<CustomizeFieldObject> getCustomizeField(Long customerId);
List<Customer> searchByQuery(String queryString); List<Customer> searchByQuery(String queryString);
Long countByQuery(String queryString); Long countByQuery(String queryString);
// Map<String, CustomizeRequestDTo> searchCustomer();
// Map<String, CustomizeRequestDTo> searchCustomer();
//// List<CustomizeFields> searchCustomize(); //// List<CustomizeFields> searchCustomize();
ResultDTO searchCustomizeFields(CustomizeRequestDTo customizeFields); ResultDTO listCustomizeFields(CustomizeFieldsDTO customizeFields);
ResultDTO searchCustomizeFields(int page, int pageSize, long companySiteId, long campaignId, CustomerQueryDTO customerQueryDTO);
} }
...@@ -4,6 +4,7 @@ import com.viettel.campaign.model.ccms_full.Scenario; ...@@ -4,6 +4,7 @@ import com.viettel.campaign.model.ccms_full.Scenario;
import com.viettel.campaign.web.dto.*; import com.viettel.campaign.web.dto.*;
import com.viettel.econtact.filter.UserSession; import com.viettel.econtact.filter.UserSession;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -25,5 +26,5 @@ public interface ScenarioService { ...@@ -25,5 +26,5 @@ public interface ScenarioService {
XSSFWorkbook buildTemplate(); XSSFWorkbook buildTemplate();
Map<String, Object> readAndValidateCustomer(String path, UserSession userSession); Map<String, Object> readAndValidateCustomer(String path, Long scenarioId, Long campaignId, Long companySiteId);
} }
...@@ -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");
sb.append(" and COMPLETE_VALUE not in (1,2,3,4)"); sb.append(" and COMPLETE_VALUE not in (1,2,3,4)");
sb.append("ORDER BY to_number(COMPLETE_VALUE) "); sb.append("ORDER BY to_number(COMPLETE_VALUE) ");
logger.info("SQL statement: " + sb);
......
...@@ -555,6 +555,7 @@ public class CampaignServiceImpl implements CampaignService { ...@@ -555,6 +555,7 @@ public class CampaignServiceImpl implements CampaignService {
List<CampaignCustomer> list = campaignCustomerRepository.findCustomerContacted(campaignId, companySiteId, Long.parseLong(cusListId)); List<CampaignCustomer> list = campaignCustomerRepository.findCustomerContacted(campaignId, companySiteId, Long.parseLong(cusListId));
for (CampaignCustomer campaignCustomer: list) { for (CampaignCustomer campaignCustomer: list) {
campaignCustomer.setInCampaignStatus((short) 0); campaignCustomer.setInCampaignStatus((short) 0);
campaignCustomerRepository.save(campaignCustomer);
} }
} }
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS); resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
......
...@@ -12,7 +12,7 @@ public class ApParamDTO extends BaseDTO { ...@@ -12,7 +12,7 @@ public class ApParamDTO extends BaseDTO {
private String parName; private String parName;
private String parValue; private String parValue;
private String parCode; private String parCode;
private Long description; private String description;
private Long isDelete; private Long isDelete;
private Long isDefault; private Long isDefault;
private Long enableEdit; private Long enableEdit;
......
...@@ -26,4 +26,5 @@ public class CampaignCustomerDTO extends BaseDTO{ ...@@ -26,4 +26,5 @@ public class CampaignCustomerDTO extends BaseDTO{
private Long callStatus; private Long callStatus;
private Long companySiteId; private Long companySiteId;
private Long complainId; private Long complainId;
private String lstCustomerId;
} }
...@@ -34,4 +34,5 @@ public class CustomerDTO extends BaseDTO { ...@@ -34,4 +34,5 @@ public class CustomerDTO extends BaseDTO {
private Long emailAllowed; private Long emailAllowed;
private Long smsAllowed; private Long smsAllowed;
private String ipccStatus; private String ipccStatus;
private String customerDnc;
} }
...@@ -5,13 +5,14 @@ import lombok.Getter; ...@@ -5,13 +5,14 @@ import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class CustomizeFielObjectDTO { public class CustomizeFielObjectDTO implements Serializable {
private Long customerId; private Long customerId;
private String name; private String name;
private String companyName; private String companyName;
...@@ -40,4 +41,6 @@ public class CustomizeFielObjectDTO { ...@@ -40,4 +41,6 @@ public class CustomizeFielObjectDTO {
private Long fieldOptionValueId; private Long fieldOptionValueId;
private String title; private String title;
private String functionCode; private String functionCode;
private String active;
} }
package com.viettel.campaign.web.dto;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class CustomizeFieldsDTO extends BaseDTO {
private Long customizeFieldId;
private Long siteId;
private String functionCode;
private String createBy;
private Date createDate;
private String updateBy;
private Date updateDate;
private Long status;
private String type;
private String title;
private String placeholder;
private String description;
private Long position;
private Long required;
private Long fieldOptionsId;
private String regexpForValidation;
private Long maxLength;
private Long minLength;
private Long min;
private Long max;
private Long active;
}
...@@ -25,4 +25,6 @@ public class ScenarioAnswerDTO implements Serializable { ...@@ -25,4 +25,6 @@ public class ScenarioAnswerDTO implements Serializable {
public Date deleteTime; public Date deleteTime;
public Long mappingQuestionId; public Long mappingQuestionId;
public Long campaignId; public Long campaignId;
public String importQuestionCode;
public String mappingQuestionCode;
} }
...@@ -29,4 +29,5 @@ public class ScenarioQuestionDTO implements Serializable { ...@@ -29,4 +29,5 @@ public class ScenarioQuestionDTO implements Serializable {
private Short isDefault; private Short isDefault;
private Short answerIndex; private Short answerIndex;
private List<ScenarioAnswerDTO> lstAnswers; private List<ScenarioAnswerDTO> lstAnswers;
private String importCode;
} }
package com.viettel.campaign.web.dto.request_dto;
import com.viettel.campaign.web.dto.BaseDTO;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CustomerQueryDTO extends BaseDTO {
String join ;
String field;
String operator;
String condition;
}
...@@ -5,13 +5,29 @@ import com.viettel.campaign.web.dto.BaseDTO; ...@@ -5,13 +5,29 @@ import com.viettel.campaign.web.dto.BaseDTO;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.Date;
import java.util.List;
@Getter @Getter
@Setter @Setter
public class CustomizeRequestDTo extends BaseDTO { public class CustomizeRequestDTo extends BaseDTO {
String operatorLogic; String operatorLogic;
String name;
String filterCustomer; String filterCustomer;
String compare; String compare;
String valueCustomer; String valueCustomer;
String companySiteId;
String customerId; String customerId;
String companyName;
String status;
String siteId;
Short gender;
String currentAddress;
String placeOfBirth;
Date dateOfBirth;
String mobileNumber;
String email;
String userName;
Long customerType;
} }
package com.viettel.campaign.web.dto.request_dto;
import lombok.Getter;
import lombok.Setter;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
/**
* @author anhvd_itsol
*/
@Getter
@Setter
public class RequestImportDTO {
CommonsMultipartFile file;
}
...@@ -227,32 +227,4 @@ public class CampaignController { ...@@ -227,32 +227,4 @@ public class CampaignController {
return new ResponseEntity<>(result, HttpStatus.OK); return new ResponseEntity<>(result, HttpStatus.OK);
} }
@RequestMapping(value = "/import-file", method = RequestMethod.POST)
public ResponseEntity<?> importFile(@RequestParam("file") MultipartFile file,
@RequestHeader("X-Auth-Token") String authToken) {
Locale locale = new Locale("vi", "VN");
try {
UserSession userSession = (UserSession) RedisUtil.getInstance().get(authToken);
if (file.isEmpty()) {
return new ResponseEntity<>(BundleUtils.getLangString("common.fileNotSelected"), HttpStatus.OK);
}
if (!Objects.equals(FilenameUtils.getExtension(file.getOriginalFilename()), Constants.FileType.xlsx)) {
return new ResponseEntity<>(BundleUtils.getLangString("common.fileInvalidFormat", locale), HttpStatus.OK);
}
//String path = saveUploadFile(file);
// List<CustomizeFields> dynamicHeaders = customerService.getDynamicHeader(userSession.getCompanySiteId());
// Map<String, Object> map = customerService.readAndValidateCustomer(path, dynamicHeaders, userSession, customerListId);
// File fileExport = (File) map.get("file");
// String message = (String) map.get("message");
// return ResponseEntity.ok()
// .header("Content-Type", Constants.MIME_TYPE.EXCEL_XLSX)
// .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=template_import_customer.xlsx")
// .header("Message", message)
// .body(Files.readAllBytes(fileExport.toPath()));
return new ResponseEntity<>(null, HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getMessage(), e);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
} }
package com.viettel.campaign.web.rest; package com.viettel.campaign.web.rest;
import com.viettel.campaign.model.ccms_full.CampaignCustomer;
import com.viettel.campaign.model.ccms_full.Customer; import com.viettel.campaign.model.ccms_full.Customer;
import com.viettel.campaign.model.ccms_full.CustomizeFieldObject; import com.viettel.campaign.model.ccms_full.CustomizeFieldObject;
import com.viettel.campaign.model.ccms_full.CustomizeFields; import com.viettel.campaign.model.ccms_full.CustomizeFields;
import com.viettel.campaign.repository.ccms_full.CustomerQueryRepository;
import com.viettel.campaign.repository.ccms_full.impl.CustomerQueryRepositoryImpl;
import com.viettel.campaign.service.CustomerService; import com.viettel.campaign.service.CustomerService;
import com.viettel.campaign.utils.BundleUtils; import com.viettel.campaign.utils.BundleUtils;
import com.viettel.campaign.utils.Config; import com.viettel.campaign.utils.Config;
...@@ -38,6 +41,7 @@ import java.util.*; ...@@ -38,6 +41,7 @@ import java.util.*;
@RequestMapping("/ipcc/customer") @RequestMapping("/ipcc/customer")
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
public class CustomerController { public class CustomerController {
private CustomerQueryRepository customerQueryRepo;
private static final Logger LOGGER = LoggerFactory.getLogger(CustomerController.class); private static final Logger LOGGER = LoggerFactory.getLogger(CustomerController.class);
...@@ -113,6 +117,7 @@ public class CustomerController { ...@@ -113,6 +117,7 @@ public class CustomerController {
// VIẾT ĐI VIẾT LẠI 4 LẦN RỒI ĐẤY // VIẾT ĐI VIẾT LẠI 4 LẦN RỒI ĐẤY
String xAuthToken = request.getHeader("X-Auth-Token"); String xAuthToken = request.getHeader("X-Auth-Token");
UserSession userSession = (UserSession) RedisUtil.getInstance().get(xAuthToken); UserSession userSession = (UserSession) RedisUtil.getInstance().get(xAuthToken);
if (userSession == null) { if (userSession == null) {
userSession = new UserSession(); userSession = new UserSession();
userSession.setSiteId(customerListDTO.getCompanySiteId()); userSession.setSiteId(customerListDTO.getCompanySiteId());
...@@ -123,10 +128,15 @@ public class CustomerController { ...@@ -123,10 +128,15 @@ public class CustomerController {
@PostMapping("/updateCustomerList") @PostMapping("/updateCustomerList")
@ResponseBody @ResponseBody
public ResultDTO updateCustomerList(@RequestBody @Valid CustomerListDTO customerListDTO) { public ResultDTO updateCustomerList(@RequestBody @Valid CustomerListDTO customerListDTO, HttpServletRequest request) {
ResultDTO result = new ResultDTO(); String xAuthToken = request.getHeader("X-Auth-Token");
result = customerService.updateCustomerList(customerListDTO); UserSession userSession = (UserSession) RedisUtil.getInstance().get(xAuthToken);
return result; if (userSession == null) {
userSession = new UserSession();
userSession.setSiteId(customerListDTO.getCompanySiteId());
userSession.setUserName("its4");
}
return customerService.updateCustomerList(customerListDTO, userSession.getUserName());
} }
@PostMapping("/deleteCustomerList") @PostMapping("/deleteCustomerList")
...@@ -243,6 +253,15 @@ public class CustomerController { ...@@ -243,6 +253,15 @@ public class CustomerController {
return new ResponseEntity<>(data, HttpStatus.OK); return new ResponseEntity<>(data, HttpStatus.OK);
} }
@PostMapping("/deleteCustomerFromCampaign")
@ResponseBody
public ResponseEntity<?> deleteCustomerFromCampaign(@RequestBody CampaignCustomerDTO dto) {
ResultDTO resultDTO = customerService.deleteCustomerFromCampaign(dto);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
private String saveUploadFile(MultipartFile file) { private String saveUploadFile(MultipartFile file) {
try { try {
String currentTime = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss").format(new Date()); String currentTime = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss").format(new Date());
...@@ -262,6 +281,15 @@ public class CustomerController { ...@@ -262,6 +281,15 @@ public class CustomerController {
} }
return null; return null;
} }
// @GetMapping("/query")
// public ResponseEntity<List<Customer>> query(@RequestParam(value = "search") String query) {
// List<Customer> things = customerQueryRepo.findAll(query);
// if (things.isEmpty()) {
// return ResponseEntity.noContent().build();
// }
// return ResponseEntity.ok(things);
// }
@GetMapping(path = "", produces = { MediaType.APPLICATION_JSON_VALUE }) @GetMapping(path = "", produces = { MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<List<Customer>> query(@RequestParam(value = "search") String query) { public ResponseEntity<List<Customer>> query(@RequestParam(value = "search") String query) {
List<Customer> result = null; List<Customer> result = null;
...@@ -276,8 +304,8 @@ public class CustomerController { ...@@ -276,8 +304,8 @@ public class CustomerController {
} }
@PostMapping("/getCustomizeFields") @PostMapping("/getCustomizeFields")
@ResponseBody @ResponseBody
public ResponseEntity<?> getListFieldsToShow(@RequestBody CustomizeRequestDTo customizeRequestDTo) { public ResponseEntity<?> getListCustomer(@RequestBody CustomizeFieldsDTO customizeRequestDTo) {
ResultDTO resultDTO = customerService.searchCustomizeFields(customizeRequestDTo); ResultDTO resultDTO = customerService.listCustomizeFields(customizeRequestDTo);
return new ResponseEntity<>(resultDTO, HttpStatus.OK); return new ResponseEntity<>(resultDTO, HttpStatus.OK);
} }
} }
...@@ -8,6 +8,7 @@ import com.viettel.campaign.utils.RedisUtil; ...@@ -8,6 +8,7 @@ import com.viettel.campaign.utils.RedisUtil;
import com.viettel.campaign.web.dto.ContactQuestResultDTO; import com.viettel.campaign.web.dto.ContactQuestResultDTO;
import com.viettel.campaign.web.dto.ResultDTO; import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.ScenarioDTO; import com.viettel.campaign.web.dto.ScenarioDTO;
import com.viettel.campaign.web.dto.request_dto.RequestImportDTO;
import com.viettel.econtact.filter.UserSession; import com.viettel.econtact.filter.UserSession;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
...@@ -21,6 +22,7 @@ import org.springframework.http.ResponseEntity; ...@@ -21,6 +22,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.nio.file.Files; import java.nio.file.Files;
...@@ -104,12 +106,11 @@ public class ScenarioController { ...@@ -104,12 +106,11 @@ public class ScenarioController {
} }
@RequestMapping(value = "/import-file", method = RequestMethod.POST) @RequestMapping(value = "/import-file", method = RequestMethod.POST)
public ResponseEntity<?> importFile(@RequestParam MultipartFile file) { public ResponseEntity<?> importFile(@RequestParam MultipartFile file, @RequestParam Long scenarioId, @RequestParam Long campaignId, HttpServletRequest request) {
logger.info("------------IMPORT FILE TEMPLATE--------------"); logger.info("------------IMPORT FILE TEMPLATE--------------");
Locale locale = new Locale("vi", "VN"); Locale locale = new Locale("vi", "VN");
try { try {
UserSession userSession = new UserSession(); UserSession userSession = (UserSession) RedisUtil.getInstance().get(request.getHeader("X-Auth-Token"));
// UserSession userSession = (UserSession) RedisUtil.getInstance().get(authToken);
if (file.isEmpty()) { if (file.isEmpty()) {
return new ResponseEntity<>(BundleUtils.getLangString("common.fileNotSelected"), HttpStatus.OK); return new ResponseEntity<>(BundleUtils.getLangString("common.fileNotSelected"), HttpStatus.OK);
} }
...@@ -117,16 +118,23 @@ public class ScenarioController { ...@@ -117,16 +118,23 @@ public class ScenarioController {
return new ResponseEntity<>(BundleUtils.getLangString("common.fileInvalidFormat", locale), HttpStatus.OK); return new ResponseEntity<>(BundleUtils.getLangString("common.fileInvalidFormat", locale), HttpStatus.OK);
} }
String path = saveUploadFile(file); String path = saveUploadFile(file);
Map<String, Object> map = scenarioService.readAndValidateCustomer(path, userSession); Map<String, Object> map = scenarioService.readAndValidateCustomer(path, scenarioId, campaignId, userSession.getCompanySiteId());
File fileExport = (File) map.get("file"); File fileExport = (File) map.get("file");
String message = (String) map.get("message"); String message = (String) map.get("message");
return ResponseEntity.ok() ResultDTO resultDTO = new ResultDTO();
.header("Content-Type", Constants.MIME_TYPE.EXCEL_XLSX) resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=import_scenario_result.xlsx") resultDTO.setDescription(message);
.header("Message", message) return new ResponseEntity<>(resultDTO, HttpStatus.OK);
.body(Files.readAllBytes(fileExport.toPath())); // return ResponseEntity.ok()
// .header("Content-Type", Constants.MIME_TYPE.EXCEL_XLSX)
// .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=import_scenario_result.xlsx")
// .header("Message", message)
// .body(Files.readAllBytes(fileExport.toPath()));
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage()); logger.error(e.getMessage());
ResultDTO resultDTO = new ResultDTO();
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST); return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} }
} }
......
...@@ -134,4 +134,5 @@ scenario.answer.required="Answer is required for SingleChoice or MultiChoice que ...@@ -134,4 +134,5 @@ scenario.answer.required="Answer is required for SingleChoice or MultiChoice que
scenario.hashInput.required="Has input is required" scenario.hashInput.required="Has input is required"
scenario.required.required="Require is required" scenario.required.required="Require is required"
scenario.default.required="Default is required" scenario.default.required="Default is required"
scenario.mappingQuestion.invalid="Mapping question invalid"
...@@ -62,13 +62,13 @@ DATE_OF_BIRTH = Ngày sinh ...@@ -62,13 +62,13 @@ DATE_OF_BIRTH = Ngày sinh
MOBILE_NUMBER = Số điện thoại MOBILE_NUMBER = Số điện thoại
USERNAME = Tài khoản USERNAME = Tài khoản
AREA_CODE = Khu vực AREA_CODE = Khu vực
CALL_ALLOWED = CALL_ALLOWED CALL_ALLOWED = Cho phép gọi
EMAIL_ALLOWED = EMAIL_ALLOWED EMAIL_ALLOWED = Cho phép gửi email
SMS_ALLOWED = SMS_ALLOWED SMS_ALLOWED = Cho phép gửi sms
IPCC_STATUS = IPCC_STATUS IPCC_STATUS = Trạng thái Ipcc
EMAIL = EMAIL EMAIL = Email
CUSTOMER_TYPE = CUSTOMER_TYPE CUSTOMER_TYPE = Loại khách hàng
AVATAR_LINK = AVATAR_LINK AVATAR_LINK = Đường dẫn ảnh đại diện
#Customer Excel Header #Customer Excel Header
customer.no = STT customer.no = STT
...@@ -136,6 +136,7 @@ scenario.answer.required="Câu trả lời cho câu hỏi SingleChoice, MultiCho ...@@ -136,6 +136,7 @@ scenario.answer.required="Câu trả lời cho câu hỏi SingleChoice, MultiCho
scenario.hashInput.required="Trường Nhập text bắt buộc nhập" scenario.hashInput.required="Trường Nhập text bắt buộc nhập"
scenario.required.required="Trường Bắt buộc bắt buộc nhập" scenario.required.required="Trường Bắt buộc bắt buộc nhập"
scenario.default.required="Trường Mặc định bắt buộc nhập" scenario.default.required="Trường Mặc định bắt buộc nhập"
scenario.mappingQuestion.invalid="Câu hỏi liên kết không hợp lệ"
......
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