diff --git a/cms/src/main/java/com/pudonghot/yo/cms/service/impl/CallingListServiceImpl.java b/cms/src/main/java/com/pudonghot/yo/cms/service/impl/CallingListServiceImpl.java index 7d9165d9..7b261da4 100644 --- a/cms/src/main/java/com/pudonghot/yo/cms/service/impl/CallingListServiceImpl.java +++ b/cms/src/main/java/com/pudonghot/yo/cms/service/impl/CallingListServiceImpl.java @@ -160,6 +160,7 @@ public class CallingListServiceImpl val exportBatchKey = idSeq.uuid(); val argMarkAsExport = form.copy( new ReqCallingListHistoricalMarkAsExport()); + argMarkAsExport.setTenantId(form.getTenantId()); argMarkAsExport.setExportBatchKey(exportBatchKey); argMarkAsExport.setOperator(form.getAuthUser()); @@ -167,6 +168,17 @@ public class CallingListServiceImpl val rows = callingListHistoricalMapper.markAsExport(argMarkAsExport); log.info("MarkCallingListHistoricalExportRows|{}", rows); + val rows1 = callingListHistoricalMapper.removeInCallingList(argMarkAsExport); + log.info("Remove in calling list [{}].", rows1); + val rows2 = callingListHistoricalMapper.removeCalled6Times(argMarkAsExport); + log.info("Remove called exceed 6 times [{}].", rows2); + int rows3 = callingListHistoricalMapper.removeCalledTwiceToday(argMarkAsExport); + log.info("Remove called twice today [{}].", rows3); + int rows4 = callingListHistoricalMapper.removeCalledIn4Hours(argMarkAsExport); + log.info("Remove called in 4 hours today [{}].", rows4); + val rows5 = callingListHistoricalMapper.removeAnswered(argMarkAsExport); + log.info("Remove answered [{}].", rows5); + mapper.insertHistorical(form.getAuthUser(), exportBatchKey, form.getDailyFrom().getSecondOfDay(), diff --git a/lib/mapper/src/main/java/com/pudonghot/yo/mapper/CallingListHistoricalMapper.java b/lib/mapper/src/main/java/com/pudonghot/yo/mapper/CallingListHistoricalMapper.java index 29865871..a6fd169d 100644 --- a/lib/mapper/src/main/java/com/pudonghot/yo/mapper/CallingListHistoricalMapper.java +++ b/lib/mapper/src/main/java/com/pudonghot/yo/mapper/CallingListHistoricalMapper.java @@ -48,6 +48,46 @@ public interface CallingListHistoricalMapper extends BaseMapper + update + + set export_batch_key = #{arg.exportBatchKey}, + export_time = now(), + updated_by = #{arg.operator}, + updated_time = now() + + where tenant_id = #{arg.tenantId} + and campaign_id = #{arg.campaignId} + and put_in_date = #{arg.putInDate} + and last_dial_date = #{arg.lastDialDate} + and export_batch_key is null + and export_time is null + and active = 1 + + limit #{arg.limit} + + + + update c + + join br_calling_list c1 + on c.tenant_id = c1.tenant_id + and c.phone = c1.phone + + set c.active = 0, + c.note = 'IN Calling List', + c.updated_by = #{arg.operator}, + c.updated_time = now() + + where c.tenant_id = #{arg.tenantId} + and c.campaign_id = #{arg.campaignId} + and c.export_batch_key = #{arg.exportBatchKey} + and c.active = 1 + + + update c join ( - select c.id from c - - date(subdate(now(), 21)) - group by called_number - having count(answer_stamp) > 0) t1 - ]]> - on c.phone = t1.called_number - - date(subdate(now(), 21)) - group by called_number - having count(id) > 6) t2 - ]]> - on c.phone = t2.called_number - - date(now()) - group by called_number - having count(id) > 1) t3 - ]]> - on c.phone = t3.called_number - - date(now()) - group by called_number - having max(start_stamp) > now() - interval 4 hour) t4 - ]]> - on c.phone = t4.called_number - - left join br_calling_list c1 - on c.phone = c1.phone + date(now() - interval 21 day) + and tenant_id = #{arg.tenantId} + and answer_stamp is not null + group by called_number + having count(answer_stamp) > 0 + ]]> + ) t1 + on c.phone = t1.called_number - where c.campaign_id = #{arg.campaignId} - and c.put_in_date = #{arg.putInDate} - and c.last_dial_date = #{arg.lastDialDate} - and c.export_batch_key is null - and c.export_time is null - and c.active = 1 - and t1.called_number is null - and t2.called_number is null - and t3.called_number is null - and t4.called_number is null - and c1.id is null - limit #{arg.limit} - ) t - on c.id = t.id - - set c.export_batch_key = #{arg.exportBatchKey}, + set c.active = 0, + c.note = 'Answered', c.updated_by = #{arg.operator}, - c.export_time = now() + c.updated_time = now() + + where c.tenant_id = #{arg.tenantId} + and c.campaign_id = #{arg.campaignId} + and c.export_batch_key = #{arg.exportBatchKey} + and c.active = 1 + + + + update c + + join ( + date(now() - interval 21 day) + and tenant_id = #{arg.tenantId} + group by called_number + having count(start_stamp) > 6 + ]]> + ) t1 + on c.phone = t1.called_number + + set c.active = 0, + c.note = 'Exceed 6 Times', + c.updated_by = #{arg.operator}, + c.updated_time = now() + + where c.tenant_id = #{arg.tenantId} + and c.campaign_id = #{arg.campaignId} + and c.export_batch_key = #{arg.exportBatchKey} + and c.active = 1 + + + + update c + + join ( + date(now()) + and tenant_id = #{arg.tenantId} + group by called_number + having count(start_stamp) > 1 + ]]> + ) t1 + on c.phone = t1.called_number + + set c.active = 0, + c.note = 'Exceed 1 Times Today', + c.updated_by = #{arg.operator}, + c.updated_time = now() + + where c.tenant_id = #{arg.tenantId} + and c.campaign_id = #{arg.campaignId} + and c.export_batch_key = #{arg.exportBatchKey} + and c.active = 1 + + + + update c + + join ( + now() - interval 4 hour + and tenant_id = #{arg.tenantId} + group by called_number + having count(start_stamp) > 0 + ]]> + ) t1 + on c.phone = t1.called_number + + set c.active = 0, + c.note = 'Called In 4 Hours', + c.updated_by = #{arg.operator}, + c.updated_time = now() + + where c.tenant_id = #{arg.tenantId} + and c.campaign_id = #{arg.campaignId} + and c.export_batch_key = #{arg.exportBatchKey} + and c.active = 1 diff --git a/lib/mapper/src/main/java/com/pudonghot/yo/mapper/CallingListMapper.xml b/lib/mapper/src/main/java/com/pudonghot/yo/mapper/CallingListMapper.xml index 695c7347..95f94c01 100644 --- a/lib/mapper/src/main/java/com/pudonghot/yo/mapper/CallingListMapper.xml +++ b/lib/mapper/src/main/java/com/pudonghot/yo/mapper/CallingListMapper.xml @@ -186,10 +186,9 @@ #{dailyTo} daily_to, 'OLD' type, 'OLD_DATA' note, #{operator} from br_calling_list_historical p - left join br_calling_list c - on p.phone = c.phone - where export_batch_key = #{exportBatchKey} - and c.id is null + + where p.export_batch_key = #{exportBatchKey} + and p.active = 1 diff --git a/lib/mapper/src/test/java/com/pudonghot/yo/mapper/CallingListHistoricalMapperTest.java b/lib/mapper/src/test/java/com/pudonghot/yo/mapper/CallingListHistoricalMapperTest.java index 210d178e..7c962489 100644 --- a/lib/mapper/src/test/java/com/pudonghot/yo/mapper/CallingListHistoricalMapperTest.java +++ b/lib/mapper/src/test/java/com/pudonghot/yo/mapper/CallingListHistoricalMapperTest.java @@ -1,6 +1,9 @@ package com.pudonghot.yo.mapper; +import com.pudonghot.yo.model.request.ReqCallingListHistoricalMarkAsExport; +import lombok.SneakyThrows; import lombok.val; +import org.apache.commons.lang3.time.DateUtils; import org.junit.Test; import lombok.extern.slf4j.Slf4j; import org.junit.runner.RunWith; @@ -9,6 +12,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import java.util.Date; + /** * @author Donghuang * @date Sep 26, 2020 20:47:13 @@ -42,4 +47,93 @@ public class CallingListHistoricalMapperTest { val summary = mapper.updatePutInDate(); log.info("Update put in date [{}].", summary); } + + @Test + public void testMarkAsExport() { + val req = new ReqCallingListHistoricalMarkAsExport(); + req.setTenantId(1); + req.setCampaignId(4); + req.setLastDialDate(parseDate("2021-03-31")); + req.setPutInDate(parseDate("2021-03-24")); + req.setExportBatchKey("TestDriver"); + req.setOperator("donghuang"); + req.setLimit(10); + val rows = mapper.markAsExport(req); + log.info("Mark as Export [{}].", rows); + } + + @Test + public void testRemoveInCallingList() { + val req = new ReqCallingListHistoricalMarkAsExport(); + req.setTenantId(1); + req.setCampaignId(4); + req.setLastDialDate(parseDate("2021-03-31")); + req.setPutInDate(parseDate("2021-03-24")); + req.setExportBatchKey("TestDriver"); + req.setOperator("donghuang"); + req.setLimit(20); + val rows = mapper.removeInCallingList(req); + log.info("Remove in calling list [{}].", rows); + } + + @Test + public void testRemoveAnswered() { + val req = new ReqCallingListHistoricalMarkAsExport(); + req.setTenantId(1); + req.setCampaignId(4); + req.setLastDialDate(parseDate("2021-03-31")); + req.setPutInDate(parseDate("2021-03-24")); + req.setExportBatchKey("TestDriver"); + req.setOperator("donghuang"); + req.setLimit(20); + val rows = mapper.removeAnswered(req); + log.info("Remove answered [{}].", rows); + } + + @Test + public void testRemoveCalled6Times() { + val req = new ReqCallingListHistoricalMarkAsExport(); + req.setTenantId(1); + req.setCampaignId(4); + req.setLastDialDate(parseDate("2021-03-31")); + req.setPutInDate(parseDate("2021-03-24")); + req.setExportBatchKey("TestDriver"); + req.setOperator("donghuang"); + req.setLimit(20); + val rows = mapper.removeCalled6Times(req); + log.info("Remove called 6 times [{}].", rows); + } + + @Test + public void testRemoveCalled1Times() { + val req = new ReqCallingListHistoricalMarkAsExport(); + req.setTenantId(1); + req.setCampaignId(4); + req.setLastDialDate(parseDate("2021-03-31")); + req.setPutInDate(parseDate("2021-03-24")); + req.setExportBatchKey("TestDriver"); + req.setOperator("donghuang"); + req.setLimit(20); + val rows = mapper.removeCalledTwiceToday(req); + log.info("Remove twice today [{}].", rows); + } + + @Test + public void testRemoveCalledIn4Hours() { + val req = new ReqCallingListHistoricalMarkAsExport(); + req.setTenantId(1); + req.setCampaignId(4); + req.setLastDialDate(parseDate("2021-03-31")); + req.setPutInDate(parseDate("2021-03-24")); + req.setExportBatchKey("TestDriver"); + req.setOperator("donghuang"); + req.setLimit(20); + val rows = mapper.removeCalledIn4Hours(req); + log.info("Remove called in 4 hours [{}].", rows); + } + + @SneakyThrows + Date parseDate(String date) { + return DateUtils.parseDate(date, "yyyy-MM-dd"); + } } diff --git a/lib/mapper/src/test/java/com/pudonghot/yo/mapper/CallingListMapperTest.java b/lib/mapper/src/test/java/com/pudonghot/yo/mapper/CallingListMapperTest.java index 70a62133..14a75967 100644 --- a/lib/mapper/src/test/java/com/pudonghot/yo/mapper/CallingListMapperTest.java +++ b/lib/mapper/src/test/java/com/pudonghot/yo/mapper/CallingListMapperTest.java @@ -1,14 +1,14 @@ package com.pudonghot.yo.mapper; +import lombok.val; +import org.junit.Test; +import org.junit.runner.RunWith; +import lombok.extern.slf4j.Slf4j; +import me.chyxion.tigon.mybatis.Search; import com.pudonghot.yo.model.DailyTime; import com.pudonghot.yo.model.domain.CallingList; import com.pudonghot.yo.model.request.ReqCallingListRedial; -import lombok.val; -import org.junit.Test; -import lombok.extern.slf4j.Slf4j; -import org.junit.runner.RunWith; -import me.chyxion.tigon.mybatis.Search; -import org.springframework.test.context.ContextConfiguration; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -18,7 +18,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; */ @Slf4j @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("classpath*:spring/spring-*.xml") +@SpringBootTest(classes = TestDriver.class) public class CallingListMapperTest { @Autowired private CallingListMapper mapper; @@ -47,4 +47,10 @@ public class CallingListMapperTest { val result = mapper.redial(arg); log.info("Redial: {}", result); } + + @Test + public void testInsertHis() { + val result = mapper.insertHistorical("donghuang", "TestDriver", 49200, 54000); + log.info("Test insert his [{}].", result); + } } diff --git a/lib/model/src/main/java/com/pudonghot/yo/model/request/ReqCallingListHistoricalMarkAsExport.java b/lib/model/src/main/java/com/pudonghot/yo/model/request/ReqCallingListHistoricalMarkAsExport.java index 5900b2b9..31489167 100644 --- a/lib/model/src/main/java/com/pudonghot/yo/model/request/ReqCallingListHistoricalMarkAsExport.java +++ b/lib/model/src/main/java/com/pudonghot/yo/model/request/ReqCallingListHistoricalMarkAsExport.java @@ -2,9 +2,9 @@ package com.pudonghot.yo.model.request; import lombok.Getter; import lombok.Setter; +import java.util.Date; import lombok.ToString; import java.io.Serializable; -import java.util.Date; /** * @author Donghuang @@ -16,6 +16,7 @@ import java.util.Date; public class ReqCallingListHistoricalMarkAsExport implements Serializable { private static final long serialVersionUID = 1L; + private Integer tenantId; private String operator; private Integer campaignId; private Date putInDate;