Commit 837fb275 authored by đinh thị đầm's avatar đinh thị đầm
parents b45b12c3 7e6a4c2d
......@@ -37,6 +37,8 @@ public interface CampaignRepositoryCustom {
ResultDTO getCustomerListInformation(CampaignRequestDTO dto);
ResultDTO getCountIndividualOnList(CampaignRequestDTO dto);
List<ApParamDTO> getConnectStatus(Long companySiteId);
//</editor-fold>
}
......@@ -655,7 +655,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
"select count(*) totalRow from data\n" +
")\n" +
"select a.customerListId, a.customerListCode, a.customerListName, a.totalCusList, a.totalCusCampaign, a.totalCusCalled, a.totalCusNotInteract, totalRow from data a, count_data\n" +
"where row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1)\n";
"where row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1)\n" +
"order by a.customerListName";
params.put("p_campaign_id", dto.getCampaignId());
params.put("p_company_site_id", dto.getCompanySiteId());
params.put("p_page_number", dto.getPage().toString());
......@@ -860,7 +861,8 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
"select count(*) totalRow from data_temp\n" +
")\n" +
"select a.customerListId, a.customerListCode, a.customerListName, a.totalCusList, a.totalCusActive, a.totalCusLock, a.totalCusDnc, a.totalCusAddRemove, a.totalCusFilter, totalRow from data a, count_data\n" +
"where row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1)\n";
"where row_ >= ((:p_page_number - 1) * :p_page_size + 1) and row_ < (:p_page_number * :p_page_size + 1)\n" +
"order by a.customerListName";
params.put("p_campaign_id", dto.getCampaignId());
params.put("p_company_site_id", dto.getCompanySiteId());
params.put("p_page_number", dto.getPage().toString());
......@@ -995,6 +997,42 @@ public class CampaignRepositoryImpl implements CampaignRepositoryCustom {
return resultDTO;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getCountIndividualOnList(CampaignRequestDTO dto) {
List<CampaignInformationDTO> list = new ArrayList();
ResultDTO resultDTO = new ResultDTO();
Map<String, String> params = new HashMap<>();
StringBuilder sb = new StringBuilder();
try {
sb.append(" with customer_temp as (");
sb.append(" select c.customer_id, clm.customer_list_id");
sb.append(" from customer c");
sb.append(" inner join customer_list_mapping clm on c.customer_id = clm.customer_id");
sb.append(" where clm.customer_list_id in (select distinct cc.customer_list_id from campaign_customerlist cc where cc.campaign_id = :p_campaign_id and cc.company_site_id = :p_company_site_id)");
sb.append(" )");
sb.append(" select count(cc.customer_id) totalIndividual, c.customer_list_id customerListId");
sb.append(" from campaign_customer cc");
sb.append(" inner join customer_temp c on c.customer_id = cc.customer_id");
sb.append(" where campaign_id = :p_campaign_id");
sb.append(" and cc.customer_list_id is null");
sb.append(" and cc.in_campaign_status = 1");
sb.append(" and cc.customer_id in (select customer_id from customer_temp)");
sb.append(" group by c.customer_list_id");
params.put("p_campaign_id", dto.getCampaignId());
params.put("p_company_site_id", dto.getCompanySiteId());
list = namedParameterJdbcTemplate.query(sb.toString(), params, BeanPropertyRowMapper.newInstance(CampaignInformationDTO.class));
resultDTO.setListData(list);
resultDTO.setErrorCode(Constants.ApiErrorCode.SUCCESS);
resultDTO.setDescription(Constants.ApiErrorDesc.SUCCESS);
} catch (Exception e) {
logger.error(e.getMessage(), e);
resultDTO.setErrorCode(Constants.ApiErrorCode.ERROR);
resultDTO.setDescription(Constants.ApiErrorDesc.ERROR);
}
return resultDTO;
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public List<ApParamDTO> getConnectStatus(Long companySiteId) {
......
......@@ -70,6 +70,8 @@ public interface CampaignService {
ResultDTO getCustomerListInformation(CampaignRequestDTO dto);
ResultDTO getCountIndividualOnList(CampaignRequestDTO dto);
ResultDTO saveCustomerCampaign(CampaignRequestDTO dto);
ResultDTO getConnectStatus(Long companySiteId);
......
......@@ -627,6 +627,12 @@ public class CampaignServiceImpl implements CampaignService {
return campaignRepositoryCustom.getCustomerListInformation(dto);
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO getCountIndividualOnList(CampaignRequestDTO dto) {
return campaignRepositoryCustom.getCountIndividualOnList(dto);
}
@Override
@Transactional(DataSourceQualify.CCMS_FULL)
public ResultDTO saveCustomerCampaign(CampaignRequestDTO dto) {
......
......@@ -51,11 +51,14 @@ import java.nio.file.Files;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Service
public class CustomerServiceImpl implements CustomerService {
private static final Logger LOGGER = LoggerFactory.getLogger(CustomerServiceImpl.class);
private static final Pattern EMAIL_REGEXP = Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);
@Autowired
@PersistenceContext(unitName = DataSourceQualify.JPA_UNIT_NAME_CCMS_FULL)
......@@ -1016,7 +1019,7 @@ public class CustomerServiceImpl implements CustomerService {
//</editor-fold>
//<editor-fold desc="Đọc dữ liệu từng dòng 1" defaultstate="collapsed">
for (int i = 4; i < sheet.getPhysicalNumberOfRows(); i++) {
for (int i = 4; i <= sheet.getPhysicalNumberOfRows(); i++) {
Row dataRow = sheet.getRow(i);
if (dataRow != null) {
Object[] obj = new Object[row.getPhysicalNumberOfCells() - 1];
......@@ -1057,23 +1060,28 @@ public class CustomerServiceImpl implements CustomerService {
&& !rawDataList.get(i)[3].toString().trim().equals("")
&& rawDataList.get(i)[4] != null
&& !rawDataList.get(i)[4].toString().trim().equals("")) {
String str = validatePhone(rawDataList.get(i)[2].toString().trim(), locale);
String str = "";
if (validateNumberOnly(rawDataList.get(i)[2].toString().trim())) {
str = validateExistPhone(rawDataList.get(i)[2].toString().trim(), locale);
} else {
str += BundleUtils.getLangString("customer.onlyNumber", locale);
}
if (validateNumberOnly(rawDataList.get(i)[3].toString().trim())) {
str += (validateLength(BundleUtils.getLangString("customer.secondPhone", locale).split("#")[0], rawDataList.get(i)[3].toString(), 50, locale));
} else {
str += BundleUtils.getLangString("customer.onlyNumber", locale);
}
if (!validateEmail(rawDataList.get(i)[4].toString().trim())) {
str += (BundleUtils.getLangString("customer.emailInvalid", locale));
} else {
if (validateLength(BundleUtils.getLangString("customer.email", locale).split("#")[0], rawDataList.get(i)[4].toString(), 100, locale).equals("")) {
str += (validateDuplicateEmail(rawDataList.get(i)[4].toString().trim(), locale));
} else
str += validateLength(BundleUtils.getLangString("customer.email", locale).split("#")[0], rawDataList.get(i)[4].toString(), 50, locale);
}
sb.append(validateLength(BundleUtils.getLangString("customer.email", locale).split("#")[0], rawDataList.get(i)[4].toString(), 50, locale));
sb.append(str);
} else {
if (rawDataList.get(i).length > 2 && rawDataList.get(i)[2] == null) {
sb.append(BundleUtils.getLangString("customer.mainPhoneRequired", locale));
} else if (rawDataList.get(i).length > 3 && rawDataList.get(i)[3] == null) {
sb.append(BundleUtils.getLangString("customer.secondPhoneRequired", locale));
} else if (rawDataList.get(i).length > 4 && rawDataList.get(i)[4] == null) {
sb.append(BundleUtils.getLangString("customer.emailRequired", locale));
}
sb.append(BundleUtils.getLangString("customer.invalidRecord", locale));
}
if (rawDataList.get(i).length > 5 && rawDataList.get(i)[5] != null) {
sb.append(validateLength(BundleUtils.getLangString("customer.address", locale).split("#")[0], rawDataList.get(i)[5].toString(), 500, locale));
......@@ -1279,14 +1287,15 @@ public class CustomerServiceImpl implements CustomerService {
}
//<editor-fold desc="Validate Methods" defaultstate="collapsed">
private String validatePhone(String str, Locale locale) {
private String validateExistPhone(String str, Locale locale) {
String result = "";
String[] arr = str.split(";");
List<CustomerContact> contactList;
if (str.length() > 50) {
result = BundleUtils.getLangString("customer.phoneMax50", locale);
}
for (int i = 0; i < arr.length; i++) {
List<CustomerContact> contactList = customerContactRepository.findCustomerContactsByContactEquals(arr[i]);
contactList = customerContactRepository.findCustomerContactsByContactEquals(arr[i]);
if (contactList.size() != 0) {
return result.concat(BundleUtils.getLangString("customer.phoneExists", locale));
}
......@@ -1294,11 +1303,24 @@ public class CustomerServiceImpl implements CustomerService {
return result;
}
private boolean validateNumberOnly(String str) {
String regexp = "\\b\\d+\\b";
String[] arr = str.split(";");
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (!arr[i].matches(regexp)) {
count++;
}
}
return count == 0;
}
private String validateDuplicateEmail(String str, Locale locale) {
String result = "";
String[] arr = str.split(";");
List<CustomerContact> contactList;
for (int i = 0; i < arr.length; i++) {
List<CustomerContact> contactList = customerContactRepository.findCustomerContactsByContactEquals(arr[i]);
contactList = customerContactRepository.findCustomerContactsByContactEquals(arr[i]);
if (contactList.size() != 0) {
return result.concat(BundleUtils.getLangString("customer.emailExists", locale));
}
......@@ -1328,9 +1350,9 @@ public class CustomerServiceImpl implements CustomerService {
private boolean validateEmail(String str) {
String[] arr = str.split(";");
String regexp = "^[\\w-_\\.+]*[\\w-_\\.]\\@([\\w]+\\.)+[\\w]+[\\w]$";
for (int i = 0; i < arr.length; i++) {
if (!arr[i].matches(regexp)) {
Matcher matcher = EMAIL_REGEXP.matcher(arr[i]);
if (!matcher.find()) {
return false;
}
}
......@@ -2045,7 +2067,7 @@ public class CustomerServiceImpl implements CustomerService {
query.setMaxResults(pageable.getPageSize());
}
List<CustomerDTO>data = query.list();
List<CustomerDTO> data = query.list();
Page<CustomerDTO> dataPage = new PageImpl<>(data, pageable, count);
resultDTO.setData(dataPage);
resultDTO.setTotalRow(count);
......
......@@ -15,6 +15,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
......@@ -205,6 +206,13 @@ public class CampaignController {
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@PostMapping("/getCountIndividualOnList")
@ResponseBody
public ResponseEntity getCountIndividualOnList(@RequestBody CampaignRequestDTO campaignRequestDTO) {
ResultDTO resultDTO = campaignService.getCountIndividualOnList(campaignRequestDTO);
return new ResponseEntity<>(resultDTO, HttpStatus.OK);
}
@PostMapping("/saveCustomerCampaign")
@ResponseBody
public ResponseEntity saveCustomerCampaign(@RequestBody CampaignRequestDTO campaignRequestDTO) {
......
......@@ -89,7 +89,9 @@ customer.yes = Yes
customer.not = No
customer.noData = Template empty
customer.nameRequired = Full name required;
customer.emailMax50 = Email must less than 50 character;
customer.emailMax100=Email must less than 100 character;
customer.invalidRecord=Invalid Record, required one more contact information;
customer.onlyNumber=Phone contain number only;
customer.importSuccess = Import Successful
customer.importFailed = Import Failed
customer.errorValidate = Error while validating
......
......@@ -91,10 +91,9 @@ customer.yes = Có
customer.not = Không
customer.noData = Template không có dữ liệu
customer.nameRequired = Họ và tên không được để trống;
customer.emailMax50 = Email không được quá 50 kí tự;
customer.mainPhoneRequired=Số điện thoại chính không được để trống
customer.secondPhoneRequired=Số điện thoại phụ không được để trống
customer.emailRequired=Số điện thoại email không được để trống
customer.emailMax100=Email không được quá 100 kí tự;
customer.invalidRecord=Bắt buộc nhập 1 trong 3 thông tin liên lạc(Số điện thoại chính, Số điện thoại phụ, Email);
customer.onlyNumber=Số điện thoại chỉ được nhập số;
customer.importSuccess = Import dữ liệu thành công
customer.importFailed = Import dữ liệu thất bại
customer.errorValidate = Validate dữ liệu lỗi
......
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