From f104914798b205cac9a74cb93b2a1d42f309b3fa Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 25 Jan 2024 17:11:12 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E4=BF=AE=E6=94=B9SysEnterpriseStaff?= =?UTF-8?q?=20to=20SysEnterpriseStaffPo=202=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=95=8F=E6=84=9F=E8=AF=8Dlocal=E7=AD=96=E7=95=A5=203=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=9A=8F=E6=97=B6=E6=8B=9C=E8=AE=BF=E8=AE=BF?= =?UTF-8?q?=E5=AE=A2=E7=9F=AD=E4=BF=A1=E6=A8=A1=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/dto/SysEnterpriseStaffDto.java | 4 +- .../domain/model/SysStaffConverter.java | 17 +++ ...seStaff.java => SysEnterpriseStaffPo.java} | 4 +- .../domain/query/SysEnterpriseStaffQuery.java | 4 +- .../api/tenant/feign/RemoteTenantService.java | 6 +- .../factory/RemoteTenantFallbackFactory.java | 6 +- .../auth/controller/TokenController.java | 6 +- .../common/sms/configure/SmsProperties.java | 1 + .../entity/manager/impl/BaseManagerImpl.java | 45 +++++++ .../entity/service/impl/BaseServiceImpl.java | 7 ++ xueyi-modules/xueyi-nlt/pom.xml | 7 ++ .../nlt/controller/DmIntentController.java | 11 +- .../nlt/domain/dto/DmSensitiveWordDto.java | 21 ++++ .../model/DmSensitiveWordConverter.java | 13 ++ .../nlt/nlt/domain/po/DmSensitiveWordPo.java | 41 +++++++ .../domain/query/DmSensitiveWordQuery.java | 13 ++ .../nlt/manager/IDmSensitiveWordManager.java | 8 ++ .../manager/impl/DmSensitiveWordManager.java | 23 ++++ .../nlt/nlt/mapper/DmSensitiveWordMapper.java | 11 ++ .../nlt/service/IDmSensitiveWordService.java | 8 ++ .../impl/DmSensitiveWordServiceImpl.java | 28 +++++ .../impl/LocalSensitiveServiceImpl.java | 49 ++++++++ ...l.java => XunFeiSensitiveServiceImpl.java} | 4 +- .../service/impl/IDmHolidayServiceImpl.java | 1 - .../staff/controller/DmStaffController.java | 102 +--------------- .../DmVisitorSmsConfigController.java | 19 ++- .../graphql/StaffGraphQLMutationResolver.java | 67 +++++++++++ .../graphql/StaffGraphQLQueryResolver.java | 59 +++++++++ ....java => VisitorGraphQLQueryResolver.java} | 0 .../service/impl/DmStaffServiceImpl.java | 112 ++++++++++++++++++ .../impl/DmVisitRecordsServiceImpl.java | 44 +++++++ .../wechat/controller/WeappController.java | 14 +-- .../src/main/resources/graphql/staff.graphqls | 55 +++++++++ .../tenant/controller/TeTenantController.java | 21 +++- .../tenant/manager/ISysStaffManager.java | 14 +++ .../manager/impl/SysStaffManagerImpl.java | 19 +++ .../mapper/SysEnterpriseStaffMapper.java | 8 +- .../mapper/SysEnterpriseStaffMapper.xml | 2 +- 38 files changed, 731 insertions(+), 143 deletions(-) create mode 100644 xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/model/SysStaffConverter.java rename xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/{SysEnterpriseStaff.java => SysEnterpriseStaffPo.java} (88%) create mode 100644 xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/dto/DmSensitiveWordDto.java create mode 100644 xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/model/DmSensitiveWordConverter.java create mode 100644 xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/po/DmSensitiveWordPo.java create mode 100644 xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/query/DmSensitiveWordQuery.java create mode 100644 xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/IDmSensitiveWordManager.java create mode 100644 xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/impl/DmSensitiveWordManager.java create mode 100644 xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/mapper/DmSensitiveWordMapper.java create mode 100644 xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmSensitiveWordService.java create mode 100644 xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmSensitiveWordServiceImpl.java create mode 100644 xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/LocalSensitiveServiceImpl.java rename xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/{XunFeiSensitiveSeviceImpl.java => XunFeiSensitiveServiceImpl.java} (98%) create mode 100644 xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/StaffGraphQLMutationResolver.java create mode 100644 xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/StaffGraphQLQueryResolver.java rename xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/{VisitorGraphQLQuery.java => VisitorGraphQLQueryResolver.java} (100%) create mode 100644 xueyi-modules/xueyi-system/src/main/resources/graphql/staff.graphqls create mode 100644 xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/manager/ISysStaffManager.java create mode 100644 xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/manager/impl/SysStaffManagerImpl.java diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/dto/SysEnterpriseStaffDto.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/dto/SysEnterpriseStaffDto.java index 350bf003..fc354be8 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/dto/SysEnterpriseStaffDto.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/dto/SysEnterpriseStaffDto.java @@ -1,6 +1,6 @@ package com.xueyi.tenant.api.tenant.domain.dto; -import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaffPo; import lombok.Data; import lombok.EqualsAndHashCode; @@ -11,7 +11,7 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode(callSuper = true) -public class SysEnterpriseStaffDto extends SysEnterpriseStaff { +public class SysEnterpriseStaffDto extends SysEnterpriseStaffPo { private static final long serialVersionUID = 1L; private String oldPhone; diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/model/SysStaffConverter.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/model/SysStaffConverter.java new file mode 100644 index 00000000..0f6c09e5 --- /dev/null +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/model/SysStaffConverter.java @@ -0,0 +1,17 @@ +package com.xueyi.tenant.api.tenant.domain.model; + +import com.xueyi.common.core.web.entity.model.BaseConverter; +import com.xueyi.tenant.api.tenant.domain.dto.SysEnterpriseStaffDto; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaffPo; +import com.xueyi.tenant.api.tenant.domain.query.SysEnterpriseStaffQuery; +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; + +/** + * 租户 对象映射器 + * + * @author xueyi + */ +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface SysStaffConverter extends BaseConverter { +} \ No newline at end of file diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaffPo.java similarity index 88% rename from xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java rename to xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaffPo.java index 74a89932..1d2fc93d 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaffPo.java @@ -15,15 +15,13 @@ import java.io.Serial; @Data @EqualsAndHashCode(callSuper = true) @TableName(value = "sys_enterprise_staff", excludeProperty = {"name","sort","createBy","createTime","updateBy","updateTime","remark","tenantId", "status"}) -public class SysEnterpriseStaff extends TBaseEntity { +public class SysEnterpriseStaffPo extends TBaseEntity { @Serial private static final long serialVersionUID = 1L; protected Long id; - protected Long staffId; - protected String phone; private Long tId;//租户号 diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/query/SysEnterpriseStaffQuery.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/query/SysEnterpriseStaffQuery.java index 9adadae8..6f29e5ce 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/query/SysEnterpriseStaffQuery.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/query/SysEnterpriseStaffQuery.java @@ -1,6 +1,6 @@ package com.xueyi.tenant.api.tenant.domain.query; -import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaffPo; import lombok.Data; import lombok.EqualsAndHashCode; @@ -13,7 +13,7 @@ import java.io.Serial; */ @Data @EqualsAndHashCode(callSuper = true) -public class SysEnterpriseStaffQuery extends SysEnterpriseStaff { +public class SysEnterpriseStaffQuery extends SysEnterpriseStaffPo { @Serial private static final long serialVersionUID = 1L; diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java index 29f6725e..9b4b323a 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java @@ -6,7 +6,7 @@ import com.xueyi.common.core.constant.basic.ServiceConstants; import com.xueyi.common.core.web.result.R; import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo; import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; -import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaffPo; import com.xueyi.tenant.api.tenant.domain.po.TeTenantPo; import com.xueyi.tenant.api.tenant.feign.factory.RemoteTenantFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; @@ -53,10 +53,10 @@ public interface RemoteTenantService { R queryTenantByStaffPhone(@RequestParam ("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); @GetMapping("/tenant/query-staff-by-phone") - R queryStaff(@RequestParam ("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + R queryStaff(@RequestParam ("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); @PostMapping("/tenant/save-staff") - R saveEnterpriseStaff(@RequestBody SysEnterpriseStaff staff, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + R saveEnterpriseStaff(@RequestBody SysEnterpriseStaffPo staff, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } \ No newline at end of file diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java index f27932ed..48910e04 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java @@ -4,7 +4,7 @@ import com.alibaba.fastjson2.JSONObject; import com.xueyi.common.core.web.result.R; import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo; import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; -import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaffPo; import com.xueyi.tenant.api.tenant.domain.po.TeTenantPo; import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; import lombok.extern.slf4j.Slf4j; @@ -61,12 +61,12 @@ public class RemoteTenantFallbackFactory implements FallbackFactory queryStaff(String phone, String source) { + public R queryStaff(String phone, String source) { return R.fail("验证用户手机号失败:" + throwable.getMessage()); } @Override - public R saveEnterpriseStaff(SysEnterpriseStaff staff, String source) { + public R saveEnterpriseStaff(SysEnterpriseStaffPo staff, String source) { return R.fail("保存员工失败:" + throwable.getMessage()); } }; diff --git a/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java b/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java index 59e73416..1f4848b0 100644 --- a/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java +++ b/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java @@ -23,7 +23,7 @@ import com.xueyi.common.sms.configure.SmsProperties; import com.xueyi.system.api.model.LoginUser; import com.xueyi.system.api.sms.domain.vo.SmsReqEntity; import com.xueyi.system.api.sms.feign.RemoteSmsService; -import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaffPo; import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -85,7 +85,7 @@ public class TokenController { @PostMapping("phoneLogin") public AjaxResult loginByPhone(@Valid @RequestBody PhoneLoginBody form) { - R staffR = tenantService.queryStaff(form.getPhone(), SecurityConstants.INNER); + R staffR = tenantService.queryStaff(form.getPhone(), SecurityConstants.INNER); if (staffR.isFail() || staffR.getData() == null) { return AjaxResult.error("手机号不正确,清查验"); } @@ -162,7 +162,7 @@ public class TokenController { @GetMapping("validCode") public R validCode(@RequestParam String phone) { - R staff = tenantService.queryStaff(phone, SecurityConstants.INNER); + R staff = tenantService.queryStaff(phone, SecurityConstants.INNER); if (staff.getData() == null) { return R.fail("手机号不存在,请查验"); } diff --git a/xueyi-common/xueyi-common-sms/src/main/java/com/xueyi/common/sms/configure/SmsProperties.java b/xueyi-common/xueyi-common-sms/src/main/java/com/xueyi/common/sms/configure/SmsProperties.java index 5bc1f618..935ae333 100644 --- a/xueyi-common/xueyi-common-sms/src/main/java/com/xueyi/common/sms/configure/SmsProperties.java +++ b/xueyi-common/xueyi-common-sms/src/main/java/com/xueyi/common/sms/configure/SmsProperties.java @@ -28,6 +28,7 @@ public class SmsProperties { private String defaultRemindTemplate; private String warningTemplate; private String visitorTemplate; + private String vipVisitorTemplate; private String robotName; private String receptionPhones; } diff --git a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/manager/impl/BaseManagerImpl.java b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/manager/impl/BaseManagerImpl.java index 64d2529c..33af01f1 100644 --- a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/manager/impl/BaseManagerImpl.java +++ b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/manager/impl/BaseManagerImpl.java @@ -12,6 +12,11 @@ import com.xueyi.common.web.entity.manager.impl.handle.BaseHandleManagerImpl; import com.xueyi.common.web.entity.mapper.BaseMapper; import java.io.Serializable; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; @@ -296,4 +301,44 @@ public class BaseManagerImpl R createObj(Class clazz) { + try { + return clazz.getDeclaredConstructor().newInstance(); + } catch (InstantiationException | IllegalAccessException | InvocationTargetException | + NoSuchMethodException e) { + throw new RuntimeException(e); + } + } + + public List getAllFields(Class clazz) { + List fields = new ArrayList<>(); + while (clazz != null) { + fields.addAll(Arrays.asList(clazz.getDeclaredFields())); + clazz = clazz.getSuperclass(); + } + return fields; + } + + public D merge(D origin, D newInstance, Class type) { + D result = createObj(type); + for (Field field : getAllFields(type)) { + field.setAccessible(true); + try { + if (Modifier.isFinal(field.getModifiers())){ + continue; + } + Object valueA = field.get(origin); + Object valueB = field.get(newInstance); + if (valueB != null) { + field.set(result, valueB); + } else { + field.set(result, valueA); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + return result; + } } diff --git a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/service/impl/BaseServiceImpl.java b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/service/impl/BaseServiceImpl.java index 6476256a..8d3ce0f4 100644 --- a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/service/impl/BaseServiceImpl.java +++ b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/service/impl/BaseServiceImpl.java @@ -252,6 +252,13 @@ public class BaseServiceImpl D createObject(Class type) { + try { + return type.getDeclaredConstructor().newInstance(); + } catch (Exception e) { + return null; + } + } @Override public void saveToEs(BaseEntity dto) { diff --git a/xueyi-modules/xueyi-nlt/pom.xml b/xueyi-modules/xueyi-nlt/pom.xml index 427ba8c1..8632761c 100644 --- a/xueyi-modules/xueyi-nlt/pom.xml +++ b/xueyi-modules/xueyi-nlt/pom.xml @@ -81,6 +81,13 @@ xueyi-api-system + + + com.github.houbb + sensitive-word + 0.12.0 + + diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java index 65a41a6c..3eadde3a 100644 --- a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java @@ -1,7 +1,6 @@ package com.xueyi.nlt.nlt.controller; import co.elastic.clients.elasticsearch.ElasticsearchClient; -import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; @@ -41,6 +40,7 @@ import com.xueyi.nlt.nlt.domain.LlmContext; import com.xueyi.nlt.nlt.domain.LlmParam; import com.xueyi.nlt.nlt.domain.LlmResponse; import com.xueyi.nlt.nlt.domain.dto.DmIntentDto; +import com.xueyi.nlt.nlt.domain.dto.DmSensitiveWordDto; import com.xueyi.nlt.nlt.domain.po.DmRegularPo; import com.xueyi.nlt.nlt.domain.query.DmIntentQuery; import com.xueyi.nlt.nlt.domain.vo.IntentTemplateVo; @@ -49,7 +49,7 @@ import com.xueyi.nlt.nlt.mapper.DmRegularMapper; import com.xueyi.nlt.nlt.service.IDmIntentService; import com.xueyi.nlt.nlt.service.ISensitiveService; import com.xueyi.nlt.nlt.service.ISysLlmService; -import com.xueyi.nlt.nlt.service.impl.XunFeiSensitiveSeviceImpl; +import com.xueyi.nlt.nlt.service.impl.DmSensitiveWordServiceImpl; import com.xueyi.nlt.nlt.template.*; import com.xueyi.system.api.digitalmans.domain.dto.DmManDeviceDto; import com.xueyi.system.api.digitalmans.domain.dto.DmSkillDto; @@ -904,6 +904,9 @@ public class DmIntentController extends BaseController { +} diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/po/DmSensitiveWordPo.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/po/DmSensitiveWordPo.java new file mode 100644 index 00000000..0e87748e --- /dev/null +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/po/DmSensitiveWordPo.java @@ -0,0 +1,41 @@ +package com.xueyi.nlt.nlt.domain.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.xueyi.common.core.web.tenant.base.TBaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import static com.xueyi.common.core.constant.basic.EntityConstants.CREATE_BY; +import static com.xueyi.common.core.constant.basic.EntityConstants.CREATE_TIME; +import static com.xueyi.common.core.constant.basic.EntityConstants.DEL_FLAG; +import static com.xueyi.common.core.constant.basic.EntityConstants.NAME; +import static com.xueyi.common.core.constant.basic.EntityConstants.REMARK; +import static com.xueyi.common.core.constant.basic.EntityConstants.SORT; +import static com.xueyi.common.core.constant.basic.EntityConstants.STATUS; +import static com.xueyi.common.core.constant.basic.EntityConstants.UPDATE_BY; +import static com.xueyi.common.core.constant.basic.EntityConstants.UPDATE_TIME; + +/** + * 访客 持久化对象 + * + * @author xueyi + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName(value = "dm_sensitive_word", excludeProperty = { SORT, NAME, STATUS, REMARK, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, DEL_FLAG, "tenantId"}) +public class DmSensitiveWordPo extends TBaseEntity { + + private static final long serialVersionUID = 1L; + + private String content; + + private Integer type; + + public DmSensitiveWordPo (){} + + public DmSensitiveWordPo (String content, Integer type){ + this.content = content; + this.type = type; + } + +} \ No newline at end of file diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/query/DmSensitiveWordQuery.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/query/DmSensitiveWordQuery.java new file mode 100644 index 00000000..08fe171d --- /dev/null +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/query/DmSensitiveWordQuery.java @@ -0,0 +1,13 @@ +package com.xueyi.nlt.nlt.domain.query; + + +import com.xueyi.nlt.nlt.domain.po.DmSensitiveWordPo; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +public class DmSensitiveWordQuery extends DmSensitiveWordPo { + + private static final long serialVersionUID = 1L; +} diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/IDmSensitiveWordManager.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/IDmSensitiveWordManager.java new file mode 100644 index 00000000..ba919659 --- /dev/null +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/IDmSensitiveWordManager.java @@ -0,0 +1,8 @@ +package com.xueyi.nlt.nlt.manager; + +import com.xueyi.common.web.entity.manager.IBaseManager; +import com.xueyi.nlt.nlt.domain.dto.DmSensitiveWordDto; +import com.xueyi.nlt.nlt.domain.query.DmSensitiveWordQuery; + +public interface IDmSensitiveWordManager extends IBaseManager { +} diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/impl/DmSensitiveWordManager.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/impl/DmSensitiveWordManager.java new file mode 100644 index 00000000..6b562761 --- /dev/null +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/impl/DmSensitiveWordManager.java @@ -0,0 +1,23 @@ +package com.xueyi.nlt.nlt.manager.impl; + +import com.xueyi.common.web.annotation.TenantIgnore; +import com.xueyi.common.web.entity.manager.impl.BaseManagerImpl; +import com.xueyi.nlt.nlt.domain.dto.DmSensitiveWordDto; +import com.xueyi.nlt.nlt.domain.model.DmSensitiveWordConverter; +import com.xueyi.nlt.nlt.domain.po.DmSensitiveWordPo; +import com.xueyi.nlt.nlt.domain.query.DmSensitiveWordQuery; +import com.xueyi.nlt.nlt.manager.IDmSensitiveWordManager; +import com.xueyi.nlt.nlt.mapper.DmSensitiveWordMapper; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class DmSensitiveWordManager extends BaseManagerImpl implements IDmSensitiveWordManager { + @Override + @TenantIgnore(tenantLine = true) + public List selectList(DmSensitiveWordQuery query) { + List poList = baseMapper.selectList(selectListQuery(query)); + return subMerge(mapperDto(poList)); + } +} diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/mapper/DmSensitiveWordMapper.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/mapper/DmSensitiveWordMapper.java new file mode 100644 index 00000000..796c9e55 --- /dev/null +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/mapper/DmSensitiveWordMapper.java @@ -0,0 +1,11 @@ +package com.xueyi.nlt.nlt.mapper; + +import com.xueyi.common.datasource.annotation.Master; +import com.xueyi.common.web.entity.mapper.BaseMapper; +import com.xueyi.nlt.nlt.domain.dto.DmSensitiveWordDto; +import com.xueyi.nlt.nlt.domain.po.DmSensitiveWordPo; +import com.xueyi.nlt.nlt.domain.query.DmSensitiveWordQuery; + +@Master +public interface DmSensitiveWordMapper extends BaseMapper { +} diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmSensitiveWordService.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmSensitiveWordService.java new file mode 100644 index 00000000..6ea7f6a9 --- /dev/null +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmSensitiveWordService.java @@ -0,0 +1,8 @@ +package com.xueyi.nlt.nlt.service; + +import com.xueyi.common.web.entity.service.IBaseService; +import com.xueyi.nlt.nlt.domain.dto.DmSensitiveWordDto; +import com.xueyi.nlt.nlt.domain.query.DmSensitiveWordQuery; + +public interface IDmSensitiveWordService extends IBaseService { +} diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmSensitiveWordServiceImpl.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmSensitiveWordServiceImpl.java new file mode 100644 index 00000000..4581e5a7 --- /dev/null +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmSensitiveWordServiceImpl.java @@ -0,0 +1,28 @@ +package com.xueyi.nlt.nlt.service.impl; + +import com.xueyi.common.web.annotation.TenantIgnore; +import com.xueyi.common.web.entity.service.impl.BaseServiceImpl; +import com.xueyi.nlt.nlt.domain.dto.DmSensitiveWordDto; +import com.xueyi.nlt.nlt.domain.query.DmSensitiveWordQuery; +import com.xueyi.nlt.nlt.manager.IDmSensitiveWordManager; +import com.xueyi.nlt.nlt.service.IDmSensitiveWordService; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import java.util.List; + +@Service +public class DmSensitiveWordServiceImpl extends BaseServiceImpl implements IDmSensitiveWordService { + @Override + public List selectList(DmSensitiveWordQuery query) { + return super.selectList(query); + } + + + //TODO. 查询自定义敏感词库,塞入缓存 + @PostConstruct + public void init() { + this.selectList(null); + System.err.println("init"); + } +} diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/LocalSensitiveServiceImpl.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/LocalSensitiveServiceImpl.java new file mode 100644 index 00000000..59c2c29a --- /dev/null +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/LocalSensitiveServiceImpl.java @@ -0,0 +1,49 @@ +package com.xueyi.nlt.nlt.service.impl; + +import com.alibaba.fastjson2.JSONObject; +import com.github.houbb.sensitive.word.core.SensitiveWordHelper; +import com.xueyi.nlt.nlt.service.ISensitiveService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Service; + +/** + * @author yk + * @description + * @date 2024-01-15 15:53 + */ +@Service +@ConditionalOnProperty(name = "sensitive.type", havingValue = "local", matchIfMissing = true) +public class LocalSensitiveServiceImpl implements ISensitiveService { + + Logger logger = LoggerFactory.getLogger(LocalSensitiveServiceImpl.class); + + @Override + public String addKeyWord(String libId, String[] wordList) throws Exception { + return null; + } + + + + @Override + public String createWhite(String name) throws Exception { + return null; + } + + @Override + public String createBlack(String name, String category) throws Exception { + return null; + } + + @Override + public String checkSensitiveWord(String content, Integer useLib) { + JSONObject jsonObject = new JSONObject(); + JSONObject jsonObject2 = new JSONObject(); + jsonObject2.put("suggest",SensitiveWordHelper.contains(content)? "block":"pass"); + jsonObject.put("result", jsonObject2); + JSONObject json = new JSONObject(); + json.put("data", jsonObject); + return json.toJSONString(); + } +} diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/XunFeiSensitiveSeviceImpl.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/XunFeiSensitiveServiceImpl.java similarity index 98% rename from xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/XunFeiSensitiveSeviceImpl.java rename to xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/XunFeiSensitiveServiceImpl.java index 3a5da565..9420798e 100644 --- a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/XunFeiSensitiveSeviceImpl.java +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/XunFeiSensitiveServiceImpl.java @@ -42,9 +42,9 @@ import java.util.UUID; */ @Service @Primary -public class XunFeiSensitiveSeviceImpl implements ISensitiveService { +public class XunFeiSensitiveServiceImpl implements ISensitiveService { - Logger logger = LoggerFactory.getLogger(XunFeiSensitiveSeviceImpl.class); + Logger logger = LoggerFactory.getLogger(XunFeiSensitiveServiceImpl.class); private String appid; private String APIKey; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/service/impl/IDmHolidayServiceImpl.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/service/impl/IDmHolidayServiceImpl.java index 134225e2..5acc45dc 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/service/impl/IDmHolidayServiceImpl.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/common/service/impl/IDmHolidayServiceImpl.java @@ -9,7 +9,6 @@ import com.xueyi.system.common.service.IDmHolidayService; import org.springframework.stereotype.Service; import java.time.LocalDate; -import java.util.Date; @Service public class IDmHolidayServiceImpl extends BaseServiceImpl implements IDmHolidayService { diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java index daace081..32d27e67 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java @@ -1,10 +1,5 @@ package com.xueyi.system.staff.controller; -import com.alibaba.fastjson2.JSONObject; -import com.xueyi.common.cache.utils.SourceUtil; -import com.xueyi.common.core.constant.basic.SecurityConstants; -import com.xueyi.common.core.context.SecurityContextHolder; -import com.xueyi.common.core.utils.core.IdUtil; import com.xueyi.common.core.utils.core.ObjectUtil; import com.xueyi.common.core.utils.core.StrUtil; import com.xueyi.common.core.utils.file.FileTypeUtil; @@ -21,21 +16,14 @@ import com.xueyi.common.security.annotation.RequiresPermissions; import com.xueyi.common.web.entity.controller.BaseController; import com.xueyi.file.api.domain.SysFile; import com.xueyi.file.api.feign.RemoteFileService; -import com.xueyi.nlt.api.netty.domain.vo.DmWebSocketMessageVo; -import com.xueyi.nlt.api.nlt.feign.RemoteIntentService; -import com.xueyi.system.api.model.Source; import com.xueyi.system.api.organize.domain.dto.SysEnterpriseDto; import com.xueyi.system.api.staff.domain.dto.DmStaffDto; import com.xueyi.system.api.staff.domain.po.DmStaffPo; import com.xueyi.system.api.staff.domain.vo.DmStaffFeature; import com.xueyi.system.authority.service.ISysLoginService; -import com.xueyi.system.organize.service.ISysEnterpriseService; -import com.xueyi.system.resource.domain.dto.DmResourcesDto; import com.xueyi.system.resource.service.IDmResourcesService; import com.xueyi.system.staff.domain.query.DmStaffQuery; import com.xueyi.system.staff.service.IDmStaffService; -import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; -import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; @@ -51,7 +39,6 @@ import org.springframework.web.multipart.MultipartFile; import java.io.Serializable; import java.util.Arrays; -import java.util.Date; import java.util.List; /** @@ -71,19 +58,9 @@ public class DmStaffController extends BaseController r = visitRecordsService.sendSms(po); if (r.isOk()) { @@ -129,8 +135,15 @@ public class DmVisitorSmsConfigController extends BaseController r = visitRecordsService.sendSms(po, staffId); + if (r.isOk()) { + return AjaxResult.success("短信发送成功,请注意查收"); + } else { + return AjaxResult.error(r.getMsg()); + } } - return AjaxResult.success("短信发送成功,请注意查收"); } /** diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/StaffGraphQLMutationResolver.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/StaffGraphQLMutationResolver.java new file mode 100644 index 00000000..97420aa5 --- /dev/null +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/StaffGraphQLMutationResolver.java @@ -0,0 +1,67 @@ +package com.xueyi.system.staff.graphql; + +import com.xueyi.common.core.utils.core.IdUtil; +import com.xueyi.system.api.resource.domain.po.DmResourcesPo; +import com.xueyi.system.api.staff.domain.dto.DmStaffDto; +import com.xueyi.system.resource.mapper.DmResourcesMapper; +import com.xueyi.system.staff.domain.model.DmStaffConverter; +import com.xueyi.system.staff.manager.impl.DmStaffManager; +import com.xueyi.system.staff.mapper.DmStaffMapper; +import graphql.kickstart.tools.GraphQLMutationResolver; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + + +/* + * @author yk + * @description + * @date 2023-12-25 19:55 + */ + +@Component +class StaffGraphQLMutationResolver implements GraphQLMutationResolver { + @Autowired + private DmStaffMapper mapper; + + @Autowired + private DmResourcesMapper resourcesMapper; + + @Autowired + private DmStaffManager staffManager; + + @Autowired + private DmStaffConverter staffConverter; + + + private DmStaffDto initPo(DmStaffDto po) { + if (null != po.getResourceId() && null == po.getAvatar()) { + DmResourcesPo resourcesPo = resourcesMapper.selectById(po.getResourceId()); + if (null != resourcesPo) { + po.setAvatar(resourcesPo.getUrl()); + } + } + DmStaffDto dto2 = null; + if (null != po.getId()) { + DmStaffDto dto = staffConverter.mapperDto(mapper.selectById(po.getId())); + if (null != dto) { + dto2 = staffManager.merge(dto, po, DmStaffDto.class); + } + } + return dto2 == null ? po : staffConverter.mapperDto(dto2); + } + + public DmStaffDto updateStaff(DmStaffDto po){ + Boolean result = mapper.updateById(initPo(po)) > 0; + return result ? po : null; + } + + public DmStaffDto createStaff(DmStaffDto po){ + po.setId(IdUtil.getSnowflakeNextId()); + Boolean result = mapper.insert(initPo(po)) > 0; + return result ? po : null; + } + + public Boolean deleteStaff(Long id){ + return mapper.deleteById(id) > 0; + } +} diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/StaffGraphQLQueryResolver.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/StaffGraphQLQueryResolver.java new file mode 100644 index 00000000..4ac61e58 --- /dev/null +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/StaffGraphQLQueryResolver.java @@ -0,0 +1,59 @@ +package com.xueyi.system.staff.graphql; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.xueyi.system.api.staff.domain.dto.DmStaffDto; +import com.xueyi.system.api.staff.domain.po.DmStaffPo; +import com.xueyi.system.staff.domain.model.DmStaffConverter; +import com.xueyi.system.staff.mapper.DmStaffMapper; +import graphql.kickstart.tools.GraphQLQueryResolver; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/* + * @author yk + * @description + * @date 2023-12-25 19:55 + */ + +@Component +class StaffGraphQLQueryResolver implements GraphQLQueryResolver { + @Autowired + private DmStaffMapper mapper; + + @Autowired + private DmStaffConverter converter; + + public DmStaffDto staff(Long id){ + return converter.mapperDto(mapper.selectById(id)); + } + + public List staffs(Long id, String userName, String nickName, Integer userType, String phone){ + QueryWrapper query = new QueryWrapper<>(); + + if (null != id) { + query.eq("id", id); + } + + if (StringUtils.isNotEmpty(userName)) { + query.like("user_name", userName); + } + + if (StringUtils.isNotEmpty(nickName)) { + query.like("nick_name", nickName); + } + + if (null != userType) { + query.eq("type", userType); + } + + if (StringUtils.isNotEmpty(phone)) { + query.eq("phone", phone); + } + query.orderByDesc("id"); + + return mapper.selectList(query).stream().map(t->converter.mapperDto(t)).toList(); + } +} diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQueryResolver.java similarity index 100% rename from xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java rename to xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQueryResolver.java diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/service/impl/DmStaffServiceImpl.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/service/impl/DmStaffServiceImpl.java index 6b631f7c..ece2da78 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/service/impl/DmStaffServiceImpl.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/service/impl/DmStaffServiceImpl.java @@ -2,13 +2,22 @@ package com.xueyi.system.staff.service.impl; import cn.hutool.core.date.LocalDateTimeUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.xueyi.common.cache.utils.SourceUtil; +import com.xueyi.common.core.constant.basic.SecurityConstants; +import com.xueyi.common.core.context.SecurityContextHolder; +import com.xueyi.common.core.utils.core.IdUtil; import com.xueyi.common.core.utils.core.ObjectUtil; import com.xueyi.common.web.annotation.TenantIgnore; import com.xueyi.common.web.entity.service.impl.BaseServiceImpl; import com.xueyi.common.web.utils.MyDateUtils; +import com.xueyi.nlt.api.netty.domain.vo.DmWebSocketMessageVo; +import com.xueyi.nlt.api.nlt.feign.RemoteIntentService; import com.xueyi.system.api.holiday.domain.po.DmHolidayPo; +import com.xueyi.system.api.model.Source; +import com.xueyi.system.api.organize.domain.dto.SysEnterpriseDto; import com.xueyi.system.api.organize.domain.vo.SysDeptExt; import com.xueyi.system.api.pass.domain.po.DmRecognizedRecordsPo; import com.xueyi.system.api.staff.domain.dto.DmStaffDto; @@ -16,12 +25,17 @@ import com.xueyi.system.api.staff.domain.po.DmStaffPo; import com.xueyi.system.api.staff.domain.vo.DmStaffFeature; import com.xueyi.system.common.service.IDmHolidayService; import com.xueyi.system.organize.mapper.SysDeptExtMapper; +import com.xueyi.system.organize.service.ISysEnterpriseService; +import com.xueyi.system.resource.domain.dto.DmResourcesDto; +import com.xueyi.system.resource.service.impl.DmResourcesServiceImpl; import com.xueyi.system.staff.domain.po.DmEmpAttendancePo; import com.xueyi.system.staff.domain.query.DmStaffQuery; import com.xueyi.system.staff.manager.IDmStaffManager; import com.xueyi.system.staff.mapper.DmEmpAttendanceMapper; import com.xueyi.system.staff.mapper.DmStaffMapper; import com.xueyi.system.staff.service.IDmStaffService; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaffPo; +import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -245,4 +259,102 @@ public class DmStaffServiceImpl extends BaseServiceImpl sendSms(DmVisitorsPo po, Long staffId) { + log.info("sendSms po:{}", JSON.toJSONString(po)); + if (null != po && null != po.getId()) { + DmVisitorsPo visitorsPo = visitorsMapper.selectById(po.getId()); + SmsReqEntity send = new SmsReqEntity(); + try { + if (null != visitorsPo && StringUtils.isNotEmpty(visitorsPo.getPhone()) && BooleanUtil.isTrue(visitorsPo.getFlexVisit())) { + + DmDigitalmanPo dmDigitalmanPo = digitalmanMapper.selectByCode(digitalmanExtMapper.selectOne(Wrappers.query().lambda().last(SqlConstants.LIMIT_ONE)).getManCode()); + + + JSONObject json = new JSONObject(); + + json.put("nickName", visitorsPo.getName()); + json.put("robotName", dmDigitalmanPo.getName()); + //给访客发送短信 + + send.setPhone(visitorsPo.getPhone()); + send.setTemplate(smsProperties.getVisitorTemplate()); + if (BooleanUtil.isTrue(visitorsPo.getFlexVisit())) { + send.setTemplate(smsProperties.getVipVisitorTemplate()); + } + send.setDataMap(json.toJSONString()); + JSONObject result = smsService.sendSms(send); + DmStaffPo staffPo = staffMapper.selectById(staffId); + + DmVisitorOperateLogDto visitorOperateLogPo = visitorOperateLogService.initData(po.getId(), staffPo.getId(), DmVisitorOperateLogDto.BUSINESS_TYPE_OTHER, "sendSms", JSON.toJSONString(send), result.toJSONString()); + visitorOperateLogService.insert(visitorOperateLogPo); + } else { + return R.fail("数据存在问题"); + } + + } catch (Exception e) { + log.error("发送短信异常", e.getMessage()); + return R.fail("服务器错误,无法发送短信"); + } + } + return R.ok("发送成功"); + } + } \ No newline at end of file diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java index 1543b648..37fda057 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java @@ -19,7 +19,7 @@ import com.xueyi.system.wechat.domain.bean.WeappSessionResponse; import com.xueyi.system.wechat.domain.bean.WeappSignUpReq; import com.xueyi.system.wechat.domain.po.WeappUserInfo; import com.xueyi.system.wechat.service.WeappService; -import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaffPo; import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -75,11 +75,11 @@ public class WeappController { } log.info("微信login返回信息:{}", weChatUserInfo); - R staffR = tenantService.queryStaff(weChatUserInfo.getOpenid(), SecurityConstants.INNER); + R staffR = tenantService.queryStaff(weChatUserInfo.getOpenid(), SecurityConstants.INNER); Map map = new HashMap<>(); try { map.put("weappAuth", CryptoUtil.encrypt(weChatUserInfo.toString())); - SysEnterpriseStaff staff = staffR.getData(); + SysEnterpriseStaffPo staff = staffR.getData(); log.info("login staff:{}", staff); if (staff != null) { log.info("login phone:{}", staff.getPhone()); @@ -142,10 +142,10 @@ public class WeappController { return AjaxResult.error("手机号无对应员工,请查证后重试!"); } else { Map map = tokenService.createToken(loginInfoResult.getData()); - R enterpriseStaffR = tenantService.queryStaff(phone, SecurityConstants.INNER); + R enterpriseStaffR = tenantService.queryStaff(phone, SecurityConstants.INNER); log.info("根据手机号查询员工返回:{}", enterpriseStaffR); if (!enterpriseStaffR.isFail() && enterpriseStaffR.getData() != null){ - SysEnterpriseStaff enterpriseStaff = enterpriseStaffR.getData(); + SysEnterpriseStaffPo enterpriseStaff = enterpriseStaffR.getData(); enterpriseStaff.setOpenid(obj.getOpenid()); tenantService.saveEnterpriseStaff(enterpriseStaff, SecurityConstants.INNER); } @@ -172,10 +172,10 @@ public class WeappController { try { String str = CryptoUtil.decrypt(signUpReq.getWeappAuth()); WeappSessionResponse obj = JSON.parseObject(str, WeappSessionResponse.class); - R enterpriseStaffR = tenantService.queryStaff(obj.getOpenid(), SecurityConstants.INNER); + R enterpriseStaffR = tenantService.queryStaff(obj.getOpenid(), SecurityConstants.INNER); log.info("根据手机号查询员工返回:{}", enterpriseStaffR); if (!enterpriseStaffR.isFail() && enterpriseStaffR.getData() != null){ - SysEnterpriseStaff enterpriseStaff = enterpriseStaffR.getData(); + SysEnterpriseStaffPo enterpriseStaff = enterpriseStaffR.getData(); enterpriseStaff.setOpenid(null); tenantService.saveEnterpriseStaff(enterpriseStaff, SecurityConstants.INNER); } diff --git a/xueyi-modules/xueyi-system/src/main/resources/graphql/staff.graphqls b/xueyi-modules/xueyi-system/src/main/resources/graphql/staff.graphqls new file mode 100644 index 00000000..a2f3edd8 --- /dev/null +++ b/xueyi-modules/xueyi-system/src/main/resources/graphql/staff.graphqls @@ -0,0 +1,55 @@ +extend type Query { + staffs( + id: ID + userName: String + nickName: String + userType: Int + phone: String + ): [Staff!] + + staff(id: ID): Staff +} + +input StaffInput { + id: ID + userName: String + nickName: String + phone: String + email: String + sex: String + userType: Int + deptId: String + avatar: String + resourceId: ID + # 删除标识,1:已删除;0:未删除 + delFlag: Int +} + +extend type Mutation { + createStaff( + input: StaffInput! + ): Staff + + updateStaff( + input: StaffInput! + ): Staff + + deleteStaff( + id: ID!, + ): Boolean +} + +type Staff { + id: ID + userName: String + nickName: String + phone: String + email: String + sex: String + userType: Int + deptId: String + avatar: String + resourceId: ID + # 删除标识,1:已删除;0:未删除 + delFlag: Int +} diff --git a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java index 80292603..13a5dcad 100644 --- a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java +++ b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java @@ -20,11 +20,14 @@ import com.xueyi.common.security.auth.Auth; import com.xueyi.common.web.annotation.TenantIgnore; import com.xueyi.common.web.entity.controller.BaseController; import com.xueyi.common.web.entity.domain.mapper.DeviceTenantMergeMapper; +import com.xueyi.tenant.api.tenant.domain.dto.SysEnterpriseStaffDto; import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; -import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; +import com.xueyi.tenant.api.tenant.domain.model.SysStaffConverter; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaffPo; import com.xueyi.tenant.api.tenant.domain.po.TeTenantPo; import com.xueyi.tenant.api.tenant.domain.query.TeTenantQuery; import com.xueyi.tenant.tenant.domain.model.TeTenantRegister; +import com.xueyi.tenant.tenant.manager.impl.SysStaffManagerImpl; import com.xueyi.tenant.tenant.mapper.SysEnterpriseStaffMapper; import com.xueyi.tenant.tenant.service.ITeTenantService; import org.slf4j.Logger; @@ -67,6 +70,12 @@ public class TeTenantController extends BaseController queryStaff(@RequestParam("phone") String phone) { - SysEnterpriseStaff po = staffMapper.selectStaffByPhone(phone); + R queryStaff(@RequestParam("phone") String phone) { + SysEnterpriseStaffPo po = staffMapper.selectStaffByPhone(phone); return R.ok(po); } @InnerAuth @PostMapping("/save-staff") @TenantIgnore(tenantLine = true) - R staff(@RequestBody SysEnterpriseStaff staff) { + R staff(@RequestBody SysEnterpriseStaffPo staff) { if (staff.getId() != null) { - SysEnterpriseStaff staffPo = staffMapper.selectById(staff.getId()); + SysEnterpriseStaffPo staffPo = staffMapper.selectById(staff.getId()); if (null != staffPo) { - staffMapper.updateById(staff); + staffMapper.updateById(staffManager.merge(staffConverter.mapperDto(staffPo), staffConverter.mapperDto(staff), SysEnterpriseStaffDto.class)); } else { staffMapper.insert(staff); } diff --git a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/manager/ISysStaffManager.java b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/manager/ISysStaffManager.java new file mode 100644 index 00000000..649572a8 --- /dev/null +++ b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/manager/ISysStaffManager.java @@ -0,0 +1,14 @@ +package com.xueyi.tenant.tenant.manager; + +import com.xueyi.common.web.entity.manager.IBaseManager; +import com.xueyi.tenant.api.tenant.domain.dto.SysEnterpriseStaffDto; +import com.xueyi.tenant.api.tenant.domain.query.SysEnterpriseStaffQuery; + +/** + * 租户管理 数据封装层 + * + * @author xueyi + */ +public interface ISysStaffManager extends IBaseManager { + +} \ No newline at end of file diff --git a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/manager/impl/SysStaffManagerImpl.java b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/manager/impl/SysStaffManagerImpl.java new file mode 100644 index 00000000..6d176bcf --- /dev/null +++ b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/manager/impl/SysStaffManagerImpl.java @@ -0,0 +1,19 @@ +package com.xueyi.tenant.tenant.manager.impl; + +import com.xueyi.common.web.entity.manager.impl.BaseManagerImpl; +import com.xueyi.tenant.api.tenant.domain.dto.SysEnterpriseStaffDto; +import com.xueyi.tenant.api.tenant.domain.model.SysStaffConverter; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaffPo; +import com.xueyi.tenant.api.tenant.domain.query.SysEnterpriseStaffQuery; +import com.xueyi.tenant.tenant.manager.ISysStaffManager; +import com.xueyi.tenant.tenant.mapper.SysEnterpriseStaffMapper; +import org.springframework.stereotype.Component; + +/** + * 租户管理 数据封装层处理 + * + * @author xueyi + */ +@Component +public class SysStaffManagerImpl extends BaseManagerImpl implements ISysStaffManager { +} \ No newline at end of file diff --git a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/mapper/SysEnterpriseStaffMapper.java b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/mapper/SysEnterpriseStaffMapper.java index 8739fd5e..82bc22a1 100644 --- a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/mapper/SysEnterpriseStaffMapper.java +++ b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/mapper/SysEnterpriseStaffMapper.java @@ -4,7 +4,7 @@ import com.xueyi.common.datasource.annotation.Master; import com.xueyi.common.web.annotation.TenantIgnore; import com.xueyi.common.web.entity.mapper.BaseMapper; import com.xueyi.tenant.api.tenant.domain.dto.SysEnterpriseStaffDto; -import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaffPo; import com.xueyi.tenant.api.tenant.domain.po.TeTenantPo; import com.xueyi.tenant.api.tenant.domain.query.SysEnterpriseStaffQuery; import org.apache.ibatis.annotations.Param; @@ -15,13 +15,13 @@ import org.apache.ibatis.annotations.Param; * @author xueyi */ @Master -public interface SysEnterpriseStaffMapper extends BaseMapper { +public interface SysEnterpriseStaffMapper extends BaseMapper { @TenantIgnore(tenantLine = true) TeTenantPo selectTenantByPhone(@Param("phone") String phone); @TenantIgnore(tenantLine = true) - SysEnterpriseStaff selectStaffByPhone(@Param("phone") String phone); + SysEnterpriseStaffPo selectStaffByPhone(@Param("phone") String phone); @TenantIgnore(tenantLine = true) - void updateEntity(SysEnterpriseStaff po); + void updateEntity(SysEnterpriseStaffPo po); } \ No newline at end of file diff --git a/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml b/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml index d7a64df4..584d370a 100644 --- a/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml +++ b/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml @@ -8,7 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select * from te_tenant where id = (select t_id from sys_enterprise_staff where (phone = #{phone} or openid = #{phone}) and del_flag = 0 limit 1) - select * from sys_enterprise_staff where (phone = #{phone} or openid = #{phone}) and del_flag = 0 limit 1