diff --git a/cms/src/main/java/com/pudonghot/yo/cms/annotation/Taggable.java b/cms/src/main/java/com/pudonghot/yo/cms/annotation/Taggable.java
index 6befcd5b..d35280cd 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/annotation/Taggable.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/annotation/Taggable.java
@@ -1,14 +1,12 @@
package com.pudonghot.yo.cms.annotation;
-import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.*;
/**
* @author Donghuang
* Nov 17, 2019 16:51:56
*/
+@Inherited
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Taggable {
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/annotation/TenantResource.java b/cms/src/main/java/com/pudonghot/yo/cms/annotation/TenantResource.java
index 66335b3d..07daefb7 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/annotation/TenantResource.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/annotation/TenantResource.java
@@ -1,15 +1,13 @@
package com.pudonghot.yo.cms.annotation;
-import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.*;
/**
* Mark resource is part of tenant
* @author Donghuang
* Nov 04, 2019 23:06:46
*/
+@Inherited
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface TenantResource {
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneBlacklistController.java b/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneBlacklistController.java
index 5234c04a..40e9ea55 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneBlacklistController.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneBlacklistController.java
@@ -1,13 +1,7 @@
package com.pudonghot.yo.cms.controller;
-import com.pudonghot.yo.cms.annotation.TenantResource;
-import com.pudonghot.yo.model.domain.IvrMenu;
-import com.wacai.tigon.form.FormList;
-import com.wacai.tigon.web.annotation.FilterCol;
-import com.wacai.tigon.web.annotation.ListApi;
import org.springframework.stereotype.Controller;
import com.pudonghot.yo.model.domain.PhoneBlacklist;
-import com.wacai.tigon.web.controller.BaseCrudController;
import org.springframework.web.bind.annotation.RequestMapping;
import com.pudonghot.yo.cms.form.create.FormCreatePhoneBlacklist;
import com.pudonghot.yo.cms.form.update.FormUpdatePhoneBlacklist;
@@ -17,16 +11,9 @@ import com.pudonghot.yo.cms.form.update.FormUpdatePhoneBlacklist;
* @date Sep 22, 2020 20:06:35
*/
@Controller
-@ListApi(searchCols = {
- PhoneBlacklist.PHONE,
- PhoneBlacklist.NOTE
-})
-@TenantResource
@RequestMapping("/phone-blacklist")
public class PhoneBlacklistController
- extends BaseCrudController {
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneGreylistController.java b/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneGreylistController.java
index d7a26c2f..91899085 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneGreylistController.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneGreylistController.java
@@ -1,11 +1,7 @@
package com.pudonghot.yo.cms.controller;
-import com.wacai.tigon.form.FormList;
-import com.wacai.tigon.web.annotation.ListApi;
import org.springframework.stereotype.Controller;
import com.pudonghot.yo.model.domain.PhoneGreylist;
-import com.pudonghot.yo.cms.annotation.TenantResource;
-import com.wacai.tigon.web.controller.BaseCrudController;
import org.springframework.web.bind.annotation.RequestMapping;
import com.pudonghot.yo.cms.form.create.FormCreatePhoneGreylist;
import com.pudonghot.yo.cms.form.update.FormUpdatePhoneGreylist;
@@ -15,17 +11,10 @@ import com.pudonghot.yo.cms.form.update.FormUpdatePhoneGreylist;
* @date Sep 23, 2020 22:17:01
*/
@Controller
-@ListApi(searchCols = {
- PhoneGreylist.PHONE,
- PhoneGreylist.NOTE
-})
-@TenantResource
@RequestMapping("/phone-greylist")
public class PhoneGreylistController
- extends BaseCrudController {
-
}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneListController.java b/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneListController.java
new file mode 100644
index 00000000..69600044
--- /dev/null
+++ b/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneListController.java
@@ -0,0 +1,54 @@
+package com.pudonghot.yo.cms.controller;
+
+import lombok.val;
+import java.util.List;
+import com.wacai.tigon.form.FormList;
+import com.wacai.tigon.model.ViewModel;
+import com.wacai.tigon.web.annotation.ListApi;
+import com.pudonghot.yo.model.domain.PhoneList;
+import com.wacai.tigon.web.controller.ArgQuery;
+import com.pudonghot.yo.cms.form.BaseUpdateForm;
+import com.pudonghot.yo.cms.annotation.TenantResource;
+import com.wacai.tigon.web.controller.BaseCrudController;
+import com.pudonghot.yo.cms.form.create.FormCreatePhoneList;
+import com.pudonghot.yo.cellphone.privacy.NumberPrivacyUtils;
+
+/**
+ * @author Donghuang
+ * @date Sep 22, 2020 20:06:35
+ */
+/**
+ * @author Donghuang
+ * @date Nov 28, 2020 23:24:17
+ */
+@ListApi(searchCols = {
+ PhoneList.PHONE,
+ PhoneList.NOTE
+})
+@TenantResource
+public class PhoneListController
+ extends BaseCrudController {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void after(final ArgQuery> arg) {
+ super.after(arg);
+ val type = arg.getType();
+
+ if (type == ArgQuery.Type.FIND) {
+ val data = (PhoneList) arg.getResult().getData();
+ data.setPhone(NumberPrivacyUtils.mask(data.getPhone()));
+ }
+ else if (type == ArgQuery.Type.LIST) {
+ for (val vm : (List>) arg.getResult().getData()) {
+ val data = vm.getData();
+ data.setPhone(NumberPrivacyUtils.mask(data.getPhone()));
+ }
+ }
+ }
+}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneWhitelistController.java b/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneWhitelistController.java
index 5db3b91a..72f82967 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneWhitelistController.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/controller/PhoneWhitelistController.java
@@ -1,11 +1,7 @@
package com.pudonghot.yo.cms.controller;
-import com.wacai.tigon.form.FormList;
-import com.wacai.tigon.web.annotation.ListApi;
import org.springframework.stereotype.Controller;
import com.pudonghot.yo.model.domain.PhoneWhitelist;
-import com.pudonghot.yo.cms.annotation.TenantResource;
-import com.wacai.tigon.web.controller.BaseCrudController;
import org.springframework.web.bind.annotation.RequestMapping;
import com.pudonghot.yo.cms.form.create.FormCreatePhoneWhitelist;
import com.pudonghot.yo.cms.form.update.FormUpdatePhoneWhitelist;
@@ -15,17 +11,9 @@ import com.pudonghot.yo.cms.form.update.FormUpdatePhoneWhitelist;
* @date Sep 22, 2020 20:06:30
*/
@Controller
-@ListApi(searchCols = {
- PhoneWhitelist.PHONE,
- PhoneWhitelist.NOTE
-})
-@TenantResource
@RequestMapping("/phone-whitelist")
public class PhoneWhitelistController
- extends BaseCrudController {
-
}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/controller/TenantQueryHook.java b/cms/src/main/java/com/pudonghot/yo/cms/controller/TenantQueryHook.java
index 7af057f1..38789dce 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/controller/TenantQueryHook.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/controller/TenantQueryHook.java
@@ -1,17 +1,18 @@
package com.pudonghot.yo.cms.controller;
-import com.pudonghot.yo.cms.auth.SessionAbility;
+import lombok.val;
import lombok.extern.slf4j.Slf4j;
import me.chyxion.tigon.mybatis.Search;
import com.wacai.tigon.model.ViewModel;
-import com.wacai.tigon.web.controller.ArgQuery;
import com.pudonghot.yo.model.domain.Agent;
-import org.springframework.stereotype.Component;
+import com.wacai.tigon.web.controller.ArgQuery;
import com.pudonghot.yo.model.domain.ObjectTag;
import com.pudonghot.yo.cms.service.TagService;
import com.pudonghot.yo.cms.annotation.Taggable;
-import org.springframework.core.annotation.AnnotationUtils;
+import org.springframework.stereotype.Component;
+import com.pudonghot.yo.cms.auth.SessionAbility;
import com.pudonghot.yo.cms.annotation.TenantResource;
+import org.springframework.core.annotation.AnnotationUtils;
import com.wacai.tigon.web.controller.BaseQueryControllerHook;
import org.springframework.beans.factory.annotation.Autowired;
@@ -38,10 +39,10 @@ public class TenantQueryHook implements BaseQueryControllerHook, SessionAbility
*/
@Override
public void before(final ArgQuery> arg) {
- final TenantResource tr = AnnotationUtils.findAnnotation(
+ val tr = AnnotationUtils.findAnnotation(
arg.getController(), TenantResource.class);
if (tr != null) {
- final Integer tenantId = getTenantId();
+ val tenantId = getTenantId();
if (tr.searchAttr()) {
log.debug("Query before: @TenantResource found, add search attr [{}].", tenantId);
arg.getSearch().setAttr(
@@ -54,7 +55,7 @@ public class TenantQueryHook implements BaseQueryControllerHook, SessionAbility
}
// Taggable
- final Taggable taggable = AnnotationUtils.findAnnotation(
+ val taggable = AnnotationUtils.findAnnotation(
arg.getController(), Taggable.class);
if (taggable != null) {
log.debug("Query before: @Taggable found, add search attr 'withTags'");
@@ -67,7 +68,7 @@ public class TenantQueryHook implements BaseQueryControllerHook, SessionAbility
*/
@Override
public void after(final ArgQuery> arg) {
- final Taggable taggable = AnnotationUtils.findAnnotation(
+ val taggable = AnnotationUtils.findAnnotation(
arg.getController(), Taggable.class);
if (taggable != null) {
final Integer tenantId = getTenantId();
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneBlacklist.java b/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneBlacklist.java
index 0d1444eb..f2942bfb 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneBlacklist.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneBlacklist.java
@@ -2,8 +2,7 @@ package com.pudonghot.yo.cms.form.create;
import lombok.Getter;
import lombok.Setter;
-import javax.validation.constraints.NotBlank;
-import com.pudonghot.yo.cms.form.BaseCreateForm;
+import lombok.ToString;
/**
* @author Donghuang
@@ -11,8 +10,7 @@ import com.pudonghot.yo.cms.form.BaseCreateForm;
*/
@Getter
@Setter
-public class FormCreatePhoneBlacklist extends BaseCreateForm {
+@ToString(callSuper = true)
+public class FormCreatePhoneBlacklist extends FormCreatePhoneList {
private static final long serialVersionUID = 1L;
- @NotBlank
- private String phone;
}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneGreylist.java b/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneGreylist.java
index 9e26c660..07bd4fc9 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneGreylist.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneGreylist.java
@@ -2,11 +2,9 @@ package com.pudonghot.yo.cms.form.create;
import lombok.Getter;
import lombok.Setter;
-import com.pudonghot.yo.cms.form.BaseCreateForm;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
import java.util.Date;
+import lombok.ToString;
+import javax.validation.constraints.NotNull;
/**
* @author Donghuang
@@ -14,11 +12,10 @@ import java.util.Date;
*/
@Getter
@Setter
-public class FormCreatePhoneGreylist extends BaseCreateForm {
+@ToString(callSuper = true)
+public class FormCreatePhoneGreylist extends FormCreatePhoneList {
private static final long serialVersionUID = 1L;
- @NotBlank
- private String phone;
@NotNull
private Date fromTime;
@NotNull
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneList.java b/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneList.java
new file mode 100644
index 00000000..c47f28e5
--- /dev/null
+++ b/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneList.java
@@ -0,0 +1,20 @@
+package com.pudonghot.yo.cms.form.create;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import javax.validation.constraints.NotBlank;
+import com.pudonghot.yo.cms.form.BaseCreateForm;
+
+/**
+ * @author Donghuang
+ * @date Nov 28, 2020 22:58:33
+ */
+@Getter
+@Setter
+@ToString(callSuper = true)
+public class FormCreatePhoneList extends BaseCreateForm {
+ private static final long serialVersionUID = 1L;
+ @NotBlank
+ private String phone;
+}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneWhitelist.java b/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneWhitelist.java
index 585f3288..2e40f707 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneWhitelist.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/form/create/FormCreatePhoneWhitelist.java
@@ -2,8 +2,7 @@ package com.pudonghot.yo.cms.form.create;
import lombok.Getter;
import lombok.Setter;
-import javax.validation.constraints.NotBlank;
-import com.pudonghot.yo.cms.form.BaseCreateForm;
+import lombok.ToString;
/**
* @author Donghuang
@@ -11,9 +10,7 @@ import com.pudonghot.yo.cms.form.BaseCreateForm;
*/
@Getter
@Setter
-public class FormCreatePhoneWhitelist extends BaseCreateForm {
+@ToString(callSuper = true)
+public class FormCreatePhoneWhitelist extends FormCreatePhoneList {
private static final long serialVersionUID = 1L;
- @NotBlank
- private String phone;
-
}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneBlacklist.java b/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneBlacklist.java
index 9c953f3b..b129aadd 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneBlacklist.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneBlacklist.java
@@ -2,7 +2,7 @@ package com.pudonghot.yo.cms.form.update;
import lombok.Getter;
import lombok.Setter;
-import javax.validation.constraints.NotBlank;
+import lombok.ToString;
import com.pudonghot.yo.cms.form.BaseUpdateForm;
/**
@@ -11,9 +11,7 @@ import com.pudonghot.yo.cms.form.BaseUpdateForm;
*/
@Getter
@Setter
+@ToString(callSuper = true)
public class FormUpdatePhoneBlacklist extends BaseUpdateForm {
private static final long serialVersionUID = 1L;
-
- @NotBlank
- private String phone;
}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneGreylist.java b/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneGreylist.java
index f6fb15dc..051cef1f 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneGreylist.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneGreylist.java
@@ -3,6 +3,7 @@ package com.pudonghot.yo.cms.form.update;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
+import lombok.ToString;
import javax.validation.constraints.NotNull;
import com.pudonghot.yo.cms.form.BaseUpdateForm;
@@ -12,6 +13,7 @@ import com.pudonghot.yo.cms.form.BaseUpdateForm;
*/
@Getter
@Setter
+@ToString(callSuper = true)
public class FormUpdatePhoneGreylist extends BaseUpdateForm {
private static final long serialVersionUID = 1L;
@NotNull
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneWhitelist.java b/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneWhitelist.java
index 93b8c20f..5da6f7b5 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneWhitelist.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/form/update/FormUpdatePhoneWhitelist.java
@@ -2,7 +2,7 @@ package com.pudonghot.yo.cms.form.update;
import lombok.Getter;
import lombok.Setter;
-import javax.validation.constraints.NotBlank;
+import lombok.ToString;
import com.pudonghot.yo.cms.form.BaseUpdateForm;
/**
@@ -11,9 +11,7 @@ import com.pudonghot.yo.cms.form.BaseUpdateForm;
*/
@Getter
@Setter
+@ToString(callSuper = true)
public class FormUpdatePhoneWhitelist extends BaseUpdateForm {
private static final long serialVersionUID = 1L;
-
- @NotBlank
- private String phone;
}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneBlacklistService.java b/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneBlacklistService.java
index 98b2bbe5..c7c42165 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneBlacklistService.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneBlacklistService.java
@@ -3,15 +3,13 @@ package com.pudonghot.yo.cms.service;
import com.pudonghot.yo.model.domain.PhoneBlacklist;
import com.pudonghot.yo.cms.form.create.FormCreatePhoneBlacklist;
import com.pudonghot.yo.cms.form.update.FormUpdatePhoneBlacklist;
-import com.wacai.tigon.service.BaseCrudByFormService;
/**
* @author Donghuang
* @date Sep 22, 2020 20:06:35
*/
public interface PhoneBlacklistService
- extends BaseCrudByFormService {
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneGreylistService.java b/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneGreylistService.java
index 762f7c80..c3026491 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneGreylistService.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneGreylistService.java
@@ -3,15 +3,13 @@ package com.pudonghot.yo.cms.service;
import com.pudonghot.yo.model.domain.PhoneGreylist;
import com.pudonghot.yo.cms.form.create.FormCreatePhoneGreylist;
import com.pudonghot.yo.cms.form.update.FormUpdatePhoneGreylist;
-import com.wacai.tigon.service.BaseCrudByFormService;
/**
* @author Donghuang
* @date Sep 23, 2020 22:17:01
*/
public interface PhoneGreylistService
- extends BaseCrudByFormService {
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneListService.java b/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneListService.java
new file mode 100644
index 00000000..9076d283
--- /dev/null
+++ b/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneListService.java
@@ -0,0 +1,16 @@
+package com.pudonghot.yo.cms.service;
+
+import com.pudonghot.yo.model.domain.PhoneList;
+import com.pudonghot.yo.cms.form.BaseUpdateForm;
+import com.wacai.tigon.service.BaseCrudByFormService;
+import com.pudonghot.yo.cms.form.create.FormCreatePhoneList;
+
+/**
+ * @author Donghuang
+ * @date Nov 28, 2020 23:05:49
+ */
+public interface PhoneListService
+ extends BaseCrudByFormService {
+}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneWhitelistService.java b/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneWhitelistService.java
index 06c34fc6..5e4c154a 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneWhitelistService.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/service/PhoneWhitelistService.java
@@ -3,15 +3,13 @@ package com.pudonghot.yo.cms.service;
import com.pudonghot.yo.model.domain.PhoneWhitelist;
import com.pudonghot.yo.cms.form.create.FormCreatePhoneWhitelist;
import com.pudonghot.yo.cms.form.update.FormUpdatePhoneWhitelist;
-import com.wacai.tigon.service.BaseCrudByFormService;
/**
* @author Donghuang
* @date Sep 22, 2020 20:06:30
*/
public interface PhoneWhitelistService
- extends BaseCrudByFormService {
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneBlacklistServiceImpl.java b/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneBlacklistServiceImpl.java
index f5520278..58f39ed5 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneBlacklistServiceImpl.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneBlacklistServiceImpl.java
@@ -1,12 +1,11 @@
package com.pudonghot.yo.cms.service.impl;
import org.springframework.stereotype.Service;
-import com.pudonghot.yo.model.domain.PhoneBlacklist;
import com.pudonghot.yo.mapper.PhoneBlacklistMapper;
+import com.pudonghot.yo.model.domain.PhoneBlacklist;
import com.pudonghot.yo.cms.service.PhoneBlacklistService;
import com.pudonghot.yo.cms.form.create.FormCreatePhoneBlacklist;
import com.pudonghot.yo.cms.form.update.FormUpdatePhoneBlacklist;
-import com.wacai.tigon.service.support.BaseCrudByFormServiceSupport;
/**
* @author Donghuang
@@ -14,11 +13,10 @@ import com.wacai.tigon.service.support.BaseCrudByFormServiceSupport;
*/
@Service
public class PhoneBlacklistServiceImpl
- extends BaseCrudByFormServiceSupport
implements PhoneBlacklistService {
-
}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneGreylistServiceImpl.java b/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneGreylistServiceImpl.java
index 1423cd96..fba24ed2 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneGreylistServiceImpl.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneGreylistServiceImpl.java
@@ -1,12 +1,11 @@
package com.pudonghot.yo.cms.service.impl;
import org.springframework.stereotype.Service;
-import com.pudonghot.yo.model.domain.PhoneGreylist;
import com.pudonghot.yo.mapper.PhoneGreylistMapper;
+import com.pudonghot.yo.model.domain.PhoneGreylist;
import com.pudonghot.yo.cms.service.PhoneGreylistService;
import com.pudonghot.yo.cms.form.create.FormCreatePhoneGreylist;
import com.pudonghot.yo.cms.form.update.FormUpdatePhoneGreylist;
-import com.wacai.tigon.service.support.BaseCrudByFormServiceSupport;
/**
* @author Donghuang
@@ -14,11 +13,10 @@ import com.wacai.tigon.service.support.BaseCrudByFormServiceSupport;
*/
@Service
public class PhoneGreylistServiceImpl
- extends BaseCrudByFormServiceSupport
implements PhoneGreylistService {
-
}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneListServiceImpl.java b/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneListServiceImpl.java
new file mode 100644
index 00000000..2687e07a
--- /dev/null
+++ b/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneListServiceImpl.java
@@ -0,0 +1,93 @@
+package com.pudonghot.yo.cms.service.impl;
+
+import lombok.val;
+import java.util.List;
+import java.util.ArrayList;
+import lombok.extern.slf4j.Slf4j;
+import me.chyxion.tigon.mybatis.Search;
+import org.springframework.util.Assert;
+import com.wacai.tigon.model.ViewModel;
+import me.chyxion.tigon.mybatis.BaseMapper;
+import org.apache.commons.lang3.StringUtils;
+import com.pudonghot.yo.model.domain.PhoneList;
+import com.pudonghot.yo.cms.form.BaseUpdateForm;
+import com.pudonghot.yo.cms.service.PhoneListService;
+import com.pudonghot.yo.mapper.CallDetailRecordMapper;
+import com.pudonghot.yo.model.domain.CallDetailRecord;
+import com.pudonghot.yo.cms.form.create.FormCreatePhoneList;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import com.wacai.tigon.service.support.BaseCrudByFormServiceSupport;
+
+/**
+ * @author Donghuang
+ * @date Sep 22, 2020 20:06:35
+ */
+@Slf4j
+public class PhoneListServiceImpl>
+ extends BaseCrudByFormServiceSupport
+ implements PhoneListService {
+
+ @Autowired
+ private CallDetailRecordMapper callDetailRecordMapper;
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ @Transactional(transactionManager = "transactionManager", rollbackFor = Exception.class)
+ public ViewModel create(final FormCreatePhoneList form) {
+ log.debug("Create form [{}].", form);
+ val phoneLists = validateNumber(form);
+ for (val phoneList : phoneLists) {
+ val phone = phoneList.getPhone();
+ val modelExisted = mapper.find(
+ new Search(PhoneList.TENANT_ID, form.getTenantId())
+ .eq(PhoneList.PHONE, phone));
+ if (modelExisted != null) {
+ form.copy(modelExisted);
+ modelExisted.setPhone(phone);
+ log.info("Update phone list existed [{}].", modelExisted);
+ update(modelExisted);
+ }
+ else {
+ create(phoneList);
+ }
+ }
+
+ return new ViewModel<>(null);
+ }
+
+ String findByConnId(final String connId) {
+ val callDetailRecord = callDetailRecordMapper.find(
+ new Search(CallDetailRecord.CONN_ID, connId).limit(1));
+ return callDetailRecord != null ? callDetailRecord.getCalledNumber() : null;
+ }
+
+ List validateNumber(final FormCreatePhoneList form) {
+ val phones = form.getPhone().split("[^\\w]+");
+ val phoneListList = new ArrayList(phones.length);
+
+ for (val phone : phones) {
+ if (!StringUtils.isNumeric(phone)) {
+ val phone2 = findByConnId(phone);
+ Assert.state(StringUtils.isNotBlank(phone2),
+ () -> "通话ID[" + phone + "]未找到拨打记录");
+ phoneListList.add(createModel(form, phone2));
+ }
+ else {
+ phoneListList.add(createModel(form, phone));
+ }
+ }
+ return phoneListList;
+ }
+
+ private M createModel(final FormCreatePhoneList form, final String phone) {
+ val model = form.copy(modelType);
+ model.setPhone(phone);
+ return model;
+ }
+}
diff --git a/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneWhitelistServiceImpl.java b/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneWhitelistServiceImpl.java
index 48a62498..8bbff5ac 100644
--- a/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneWhitelistServiceImpl.java
+++ b/cms/src/main/java/com/pudonghot/yo/cms/service/impl/PhoneWhitelistServiceImpl.java
@@ -1,12 +1,11 @@
package com.pudonghot.yo.cms.service.impl;
import org.springframework.stereotype.Service;
-import com.pudonghot.yo.model.domain.PhoneWhitelist;
import com.pudonghot.yo.mapper.PhoneWhitelistMapper;
+import com.pudonghot.yo.model.domain.PhoneWhitelist;
import com.pudonghot.yo.cms.service.PhoneWhitelistService;
import com.pudonghot.yo.cms.form.create.FormCreatePhoneWhitelist;
import com.pudonghot.yo.cms.form.update.FormUpdatePhoneWhitelist;
-import com.wacai.tigon.service.support.BaseCrudByFormServiceSupport;
/**
* @author Donghuang
@@ -14,11 +13,10 @@ import com.wacai.tigon.service.support.BaseCrudByFormServiceSupport;
*/
@Service
public class PhoneWhitelistServiceImpl
- extends BaseCrudByFormServiceSupport
implements PhoneWhitelistService {
-
}
diff --git a/lib/cellphone-location/src/main/java/com/pudonghot/yo/cellphone/privacy/NumberPrivacyUtils.java b/lib/cellphone-location/src/main/java/com/pudonghot/yo/cellphone/privacy/NumberPrivacyUtils.java
index 633bfb1d..6a2ebf0f 100644
--- a/lib/cellphone-location/src/main/java/com/pudonghot/yo/cellphone/privacy/NumberPrivacyUtils.java
+++ b/lib/cellphone-location/src/main/java/com/pudonghot/yo/cellphone/privacy/NumberPrivacyUtils.java
@@ -25,6 +25,10 @@ public class NumberPrivacyUtils {
private static final Pattern HEAVY_PRIVACY_PATTERN =
Pattern.compile("(\\w{0,7})\\w{4}$");
+ public static String mask(final String number) {
+ return mask(number, PrivacyLevel.HEAVY);
+ }
+
public static String mask(final String number, final PrivacyLevel level) {
if (level == PrivacyLevel.NONE) {
return number;
diff --git a/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneBlacklist.java b/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneBlacklist.java
index f1abc1ed..740ee1b9 100644
--- a/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneBlacklist.java
+++ b/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneBlacklist.java
@@ -2,8 +2,8 @@ package com.pudonghot.yo.model.domain;
import lombok.Getter;
import lombok.Setter;
+import lombok.ToString;
import me.chyxion.tigon.mybatis.Table;
-import me.chyxion.tigon.mybatis.NotUpdate;
import lombok.experimental.FieldNameConstants;
/**
@@ -12,11 +12,9 @@ import lombok.experimental.FieldNameConstants;
*/
@Getter
@Setter
+@ToString(callSuper = true)
@Table("br_phone_blacklist")
@FieldNameConstants(prefix = "")
-public class PhoneBlacklist extends TenantDomain {
+public class PhoneBlacklist extends PhoneList {
private static final long serialVersionUID = 1L;
-
- @NotUpdate
- private String phone;
}
diff --git a/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneGreylist.java b/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneGreylist.java
index 1d3f5297..18380f83 100644
--- a/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneGreylist.java
+++ b/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneGreylist.java
@@ -3,8 +3,8 @@ package com.pudonghot.yo.model.domain;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
+import lombok.ToString;
import me.chyxion.tigon.mybatis.Table;
-import me.chyxion.tigon.mybatis.NotUpdate;
import lombok.experimental.FieldNameConstants;
/**
@@ -13,13 +13,12 @@ import lombok.experimental.FieldNameConstants;
*/
@Getter
@Setter
+@ToString(callSuper = true)
@Table("br_phone_greylist")
@FieldNameConstants(prefix = "")
-public class PhoneGreylist extends TenantDomain {
+public class PhoneGreylist extends PhoneList {
private static final long serialVersionUID = 1L;
- @NotUpdate
- private String phone;
private Date fromTime;
private Date toTime;
private Integer credit;
diff --git a/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneList.java b/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneList.java
new file mode 100644
index 00000000..da1a251d
--- /dev/null
+++ b/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneList.java
@@ -0,0 +1,23 @@
+package com.pudonghot.yo.model.domain;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import me.chyxion.tigon.mybatis.Table;
+import me.chyxion.tigon.mybatis.NotUpdate;
+import lombok.experimental.FieldNameConstants;
+
+/**
+ * @author Donghuang
+ * @date Nov 28, 2020 22:55:27
+ */
+@Getter
+@Setter
+@ToString(callSuper = true)
+@FieldNameConstants(prefix = "")
+public class PhoneList extends TenantDomain {
+ private static final long serialVersionUID = 1L;
+
+ @NotUpdate
+ private String phone;
+}
diff --git a/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneWhitelist.java b/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneWhitelist.java
index c937a50b..3309e215 100644
--- a/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneWhitelist.java
+++ b/lib/model/src/main/java/com/pudonghot/yo/model/domain/PhoneWhitelist.java
@@ -2,8 +2,8 @@ package com.pudonghot.yo.model.domain;
import lombok.Getter;
import lombok.Setter;
+import lombok.ToString;
import me.chyxion.tigon.mybatis.Table;
-import me.chyxion.tigon.mybatis.NotUpdate;
import lombok.experimental.FieldNameConstants;
/**
@@ -12,11 +12,9 @@ import lombok.experimental.FieldNameConstants;
*/
@Getter
@Setter
+@ToString(callSuper = true)
@Table("br_phone_whitelist")
@FieldNameConstants(prefix = "")
-public class PhoneWhitelist extends TenantDomain {
+public class PhoneWhitelist extends PhoneList {
private static final long serialVersionUID = 1L;
-
- @NotUpdate
- private String phone;
}
diff --git a/lib/tigon/pom.xml b/lib/tigon/pom.xml
index 035b6c30..5052ab1d 100644
--- a/lib/tigon/pom.xml
+++ b/lib/tigon/pom.xml
@@ -21,6 +21,7 @@
2.9.9.20190807
5.2.5.RELEASE
2.2.6.RELEASE
+ 0.0.3
@@ -79,12 +80,12 @@
me.chyxion.tigon
tigon-mybatis-common
- 0.0.3
+ ${tigon-mybatis.version}
me.chyxion.tigon
tigon-mybatis
- 0.0.3
+ ${tigon-mybatis.version}
com.wacai.tigon
diff --git a/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/Filter.java b/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/Filter.java
index 300e0039..47908472 100644
--- a/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/Filter.java
+++ b/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/Filter.java
@@ -1,6 +1,7 @@
package com.wacai.tigon.web.annotation;
import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -8,6 +9,7 @@ import java.lang.annotation.RetentionPolicy;
* @author Donghuang
* Sep 12, 2019 17:53:24
*/
+@Inherited
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface Filter {
diff --git a/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/FilterCol.java b/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/FilterCol.java
index 590c0d3a..fe5e1d18 100644
--- a/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/FilterCol.java
+++ b/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/FilterCol.java
@@ -1,7 +1,7 @@
package com.wacai.tigon.web.annotation;
import me.chyxion.tigon.mybatis.Search;
-
+import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Documented;
import java.lang.annotation.RetentionPolicy;
@@ -10,6 +10,7 @@ import java.lang.annotation.RetentionPolicy;
* @author Donghuang
* Sep 11, 2019 09:59:32
*/
+@Inherited
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface FilterCol {
diff --git a/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/ListApi.java b/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/ListApi.java
index 48d39f18..4fa60bca 100644
--- a/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/ListApi.java
+++ b/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/ListApi.java
@@ -6,6 +6,7 @@ import java.lang.annotation.*;
* @author Donghuang
* Sep 11, 2019 09:59:47
*/
+@Inherited
@Documented
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
diff --git a/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/Order.java b/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/Order.java
index cc5f7da3..c7f54719 100644
--- a/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/Order.java
+++ b/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/Order.java
@@ -1,6 +1,7 @@
package com.wacai.tigon.web.annotation;
import me.chyxion.tigon.mybatis.Search;
+import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Documented;
import java.lang.annotation.RetentionPolicy;
@@ -10,6 +11,7 @@ import org.springframework.core.annotation.AliasFor;
* @author Donghuang
* Sep 12, 2019 17:48:22
*/
+@Inherited
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface Order {
diff --git a/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/OrderCol.java b/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/OrderCol.java
index 5a4defe0..2e20e109 100644
--- a/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/OrderCol.java
+++ b/lib/tigon/web/src/main/java/com/wacai/tigon/web/annotation/OrderCol.java
@@ -1,15 +1,16 @@
package com.wacai.tigon.web.annotation;
-import org.springframework.core.annotation.AliasFor;
-
+import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Documented;
import java.lang.annotation.RetentionPolicy;
+import org.springframework.core.annotation.AliasFor;
/**
* @author Donghuang
* Sep 11, 2019 10:00:28
*/
+@Inherited
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface OrderCol {
diff --git a/web/cms/app/templates/phone-blacklist/create.hbs b/web/cms/app/templates/phone-blacklist/create.hbs
index ac48d82f..d22a6084 100644
--- a/web/cms/app/templates/phone-blacklist/create.hbs
+++ b/web/cms/app/templates/phone-blacklist/create.hbs
@@ -1,6 +1,6 @@
{{#form-content}}
- {{form-input name='phone' label='号码'}}
+ {{form-input type='textarea' name='phone' label='号码' placeholder='手机号/通话ID'}}
{{form-input name='note' label='备注'}}
diff --git a/web/cms/app/templates/phone-greylist/create.hbs b/web/cms/app/templates/phone-greylist/create.hbs
index 5f0ba927..ddf356d2 100644
--- a/web/cms/app/templates/phone-greylist/create.hbs
+++ b/web/cms/app/templates/phone-greylist/create.hbs
@@ -1,6 +1,7 @@
{{#form-content}}
- {{form-input name='phone' label='号码'}}
+ {{form-input type='textarea' name='phone' label='号码' placeholder='手机号/通话ID'}}
+
{{form-input-datetimepicker
name='fromTime'
label='开始时间'}}
diff --git a/web/cms/app/templates/phone-whitelist/create.hbs b/web/cms/app/templates/phone-whitelist/create.hbs
index ac48d82f..d22a6084 100644
--- a/web/cms/app/templates/phone-whitelist/create.hbs
+++ b/web/cms/app/templates/phone-whitelist/create.hbs
@@ -1,6 +1,6 @@
{{#form-content}}
- {{form-input name='phone' label='号码'}}
+ {{form-input type='textarea' name='phone' label='号码' placeholder='手机号/通话ID'}}
{{form-input name='note' label='备注'}}