From a29e680bcece3a3acd520ad15321030a2aa87ec5 Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Mon, 8 Sep 2025 22:35:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(property):=20=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=BF=E5=AE=A2=E7=AE=A1=E7=90=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=20-=20=E6=96=B0=E5=A2=9E=E8=AE=BF=E5=AE=A2=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=9B=B8=E5=85=B3=E7=9A=84=E6=8E=A5=E5=8F=A3=E5=92=8C?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=AE=9E=E7=8E=B0=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=AE=BF=E5=AE=A2=E4=BF=A1=E6=81=AF=E5=90=8C=E6=AD=A5=E5=88=B0?= =?UTF-8?q?=20E8=20=E5=B9=B3=E5=8F=B0=E7=9A=84=E5=8A=9F=E8=83=BD=20-=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=AE=BF=E5=AE=A2=E4=BA=8C=E7=BB=B4=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=92=8C=E8=8E=B7=E5=8F=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/sis/api/RemoteVisitorService.java | 12 +- .../core/service/SaPermissionImpl.java | 6 + .../xcx/XServiceWorkOrdersTypeController.java | 8 +- .../xcx/XTbVisitorManagementController.java | 113 ++++++++++++ .../property/domain/TbVisitorManagement.java | 5 + .../domain/bo/TbVisitorManagementBo.java | 2 +- .../domain/vo/TbVisitorManagementVo.java | 8 + .../service/ITbVisitorManagementService.java | 48 +++++- .../impl/TbVisitorManagementServiceImpl.java | 162 ++++++++++++++---- .../sis/dubbo/RemoteVisitorServiceImpl.java | 40 ++++- .../org/dromara/sis/sdk/e8/E8PlatformApi.java | 10 +- .../sdk/e8/service/E8PlatformApiService.java | 15 +- 12 files changed, 370 insertions(+), 59 deletions(-) create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/controller/xcx/XTbVisitorManagementController.java diff --git a/ruoyi-api/sis-api/src/main/java/org/dromara/sis/api/RemoteVisitorService.java b/ruoyi-api/sis-api/src/main/java/org/dromara/sis/api/RemoteVisitorService.java index 9e105a96..7ac12fbc 100644 --- a/ruoyi-api/sis-api/src/main/java/org/dromara/sis/api/RemoteVisitorService.java +++ b/ruoyi-api/sis-api/src/main/java/org/dromara/sis/api/RemoteVisitorService.java @@ -2,6 +2,8 @@ package org.dromara.sis.api; import org.dromara.sis.api.domain.RemoteVisitor; +import java.util.Map; + /** * @author lsm * @apiNote RemoteVisitorService @@ -15,5 +17,13 @@ public interface RemoteVisitorService { * @param visitor 访客信息 * @return 访客ID */ - Long syncE8PlatVisitor(RemoteVisitor visitor); + Map syncE8PlatVisitor(RemoteVisitor visitor); + + /** + * 获取访客二维码 + * + * @param id 访客id + * @return String + */ + Map getQrCode(Long id); } diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java index bf6959b6..4d169a21 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/core/service/SaPermissionImpl.java @@ -57,6 +57,12 @@ public class SaPermissionImpl implements StpInterface { "xcx:workOrders:query", // 工单类型管理 "xcx:workOrdersType:query", + // 访客管理 + "xcx:visitorManagement:add", + "xcx:visitorManagement:query", + "xcx:visitorManagement:edit", + "xcx:visitorManagement:list", + "xcx:visitorManagement:getQrCode", // 文件上传 "system:oss:upload" ); diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/xcx/XServiceWorkOrdersTypeController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/xcx/XServiceWorkOrdersTypeController.java index 17d6d83c..c4e5fdf2 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/xcx/XServiceWorkOrdersTypeController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/xcx/XServiceWorkOrdersTypeController.java @@ -53,8 +53,10 @@ public class XServiceWorkOrdersTypeController extends BaseController { /** * 查询【工单类型】树结构 */ - @GetMapping("/typeTree") - public R> typeTree() { - return R.ok(serviceWorkOrdersTypeService.typeTree()); + @GetMapping("/typeTree/{id}") + public R> typeTree(@NotNull(message = "id不能为空") + @PathVariable("id") Long id) { + List list = serviceWorkOrdersTypeService.typeTree(); + return R.ok(list.stream().filter(vo -> vo.getId().equals(id)).toList()); } } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/xcx/XTbVisitorManagementController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/xcx/XTbVisitorManagementController.java new file mode 100644 index 00000000..eb2171b2 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/xcx/XTbVisitorManagementController.java @@ -0,0 +1,113 @@ +package org.dromara.property.controller.xcx; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.stp.StpUtil; +import com.alibaba.fastjson.JSONObject; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.constant.GlobalConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.redis.utils.RedisUtils; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.websocket.dto.WebSocketMessageDto; +import org.dromara.common.websocket.holder.WebSocketSessionHolder; +import org.dromara.common.websocket.utils.WebSocketUtils; +import org.dromara.property.domain.bo.QrCodeInfo; +import org.dromara.property.domain.bo.TbVisitorManagementBo; +import org.dromara.property.domain.vo.TbVisitorManagementVo; +import org.dromara.property.service.ITbVisitorManagementService; +import org.dromara.system.api.RemoteConfigService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.time.Duration; +import java.util.List; +import java.util.UUID; + +/** + * 访客管理 + * 前端访问路由地址为:/property/visitorManagement + * + * @author lsm + * @since 2025-06-19 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/xcx/visitorManagement") +public class XTbVisitorManagementController extends BaseController { + + private final ITbVisitorManagementService tbVisitorManagementService; + + + /** + * 小程序新增访客邀约 + * + * @param bo bean + */ + @RepeatSubmit() + @PostMapping() + @SaCheckPermission("xcx:visitorManagement:add") + public R add(@Validated(AddGroup.class) @RequestBody TbVisitorManagementBo bo) { + return toAjax(tbVisitorManagementService.insertByXcxBo(bo)); + } + + /** + * 小程序修改访客邀约 + * + * @param bo bean + */ + @PutMapping() + @RepeatSubmit() + @SaCheckPermission("xcx:visitorManagement:edit") + public R edit(@Validated(EditGroup.class) @RequestBody TbVisitorManagementBo bo) { + return toAjax(tbVisitorManagementService.updateByXcxBo(bo)); + } + + /** + * 小程序查询访客邀约详情 + * + * @param id 主键 + */ + @GetMapping("/{id}") + @SaCheckPermission("xcx:visitorManagement:query") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(tbVisitorManagementService.queryByIdForXcx(id)); + } + + /** + * 小程序查询本人邀约/预约列表 + */ + @GetMapping("/list/{type}") + @SaCheckPermission("xcx:visitorManagement:list") + public R> list(@NotNull(message = "类型不能为空") + @PathVariable("type") Integer type) { + return R.ok(tbVisitorManagementService.queryMyListByXcx(type)); + } + + /** + * 获取访客二维码 + * + * @param id 主键 + */ + @GetMapping("/qrCode/{id}") + @SaCheckPermission("xcx:visitorManagement:getQrCode") + public R getQrCode(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + int code = Integer.parseInt(tbVisitorManagementService.getQrCodeByIdForXcx(id).get("code").toString()); + return code == 200 ? R.ok(tbVisitorManagementService.getQrCodeByIdForXcx(id).get("data").toString()) : R.fail(tbVisitorManagementService.getQrCodeByIdForXcx(id).get("data").toString()); + } + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/TbVisitorManagement.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/TbVisitorManagement.java index 296098a1..27f8a817 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/TbVisitorManagement.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/TbVisitorManagement.java @@ -118,6 +118,11 @@ public class TbVisitorManagement extends TenantEntity { */ private String searchValue; + /** + * 备注 + */ + private String remark; + /** * e8平台id */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/TbVisitorManagementBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/TbVisitorManagementBo.java index fa55e6ff..ca7bcfbf 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/TbVisitorManagementBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/TbVisitorManagementBo.java @@ -15,7 +15,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; * 访客管理业务对象 tb_visitor_management * * @author mocheng - * @date 2025-06-19 + * @since 2025-06-19 */ @Data @EqualsAndHashCode(callSuper = true) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/TbVisitorManagementVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/TbVisitorManagementVo.java index 4e57dd60..4dc508f5 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/TbVisitorManagementVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/TbVisitorManagementVo.java @@ -139,6 +139,14 @@ public class TbVisitorManagementVo implements Serializable { private String url; + /** + * 备注 + */ + private String remark; + /** + * e8平台id + */ + private Long eEightId; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ITbVisitorManagementService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ITbVisitorManagementService.java index a36e3151..2b4b3270 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ITbVisitorManagementService.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ITbVisitorManagementService.java @@ -1,8 +1,6 @@ package org.dromara.property.service; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import org.dromara.property.domain.TbVisitorManagement; import org.dromara.property.domain.vo.TbVisitorManagementVo; import org.dromara.property.domain.bo.TbVisitorManagementBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -10,12 +8,13 @@ import org.dromara.common.mybatis.core.page.PageQuery; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 访客管理Service接口 * * @author mocheng - * @date 2025-06-19 + * @since 2025-06-19 */ public interface ITbVisitorManagementService { @@ -47,7 +46,6 @@ public interface ITbVisitorManagementService { List queryListByWapper(QueryWrapper wapper); - /** * 新增访客管理 * @@ -83,4 +81,46 @@ public interface ITbVisitorManagementService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + /** + * 小程序新增访客邀约 + * + * @param bo bean + * @return boolean + */ + Boolean insertByXcxBo(TbVisitorManagementBo bo); + + /** + * 小程序修改邀约信息 + * + * @param bo bean + * @return boolean + */ + Boolean updateByXcxBo(TbVisitorManagementBo bo); + + /** + * 小程序查询访客邀约详情 + * + * @param id 主键 + * @return vo + */ + TbVisitorManagementVo queryByIdForXcx(Long id); + + /** + * 小程序查询本人邀约/预约列表 + * + * @param type 列表类型 + * @return list + */ + List queryMyListByXcx(Integer type); + + /** + * 小程序获取邀约二维码 + * + * @param id 主键 + * @return String + */ + Map getQrCodeByIdForXcx(Long id); + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java index e49bc73d..2b48cae0 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbVisitorManagementServiceImpl.java @@ -1,7 +1,9 @@ package org.dromara.property.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.constant.GlobalConstants; import org.dromara.common.core.utils.MapstructUtils; @@ -14,8 +16,12 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.redis.utils.RedisUtils; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.property.api.model.LoginResidentPerson; import org.dromara.property.domain.TbUserGroup; import org.dromara.property.domain.bo.QrCodeInfo; +import org.dromara.property.domain.vo.residentVo.ResidentPersonVo; +import org.dromara.property.service.residentService.IResidentPersonService; import org.dromara.resource.api.RemoteFileService; import org.dromara.sis.api.RemoteVisitorService; import org.dromara.sis.api.domain.RemoteVisitor; @@ -28,6 +34,7 @@ import org.dromara.property.domain.vo.TbVisitorManagementVo; import org.dromara.property.domain.TbVisitorManagement; import org.dromara.property.mapper.TbVisitorManagementMapper; import org.dromara.property.service.ITbVisitorManagementService; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -45,6 +52,8 @@ import java.util.Collection; public class TbVisitorManagementServiceImpl implements ITbVisitorManagementService { private final TbVisitorManagementMapper baseMapper; + private final IResidentPersonService residentPersonService; + @DubboReference private RemoteUserService remoteUserService; @@ -64,18 +73,14 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi */ @Override public TbVisitorManagementVo queryById(Long id) { -// TbVisitorManagementVo tbVisitorManagementVo = baseMapper.selectVoById(id); //获取ossId TbVisitorManagementVo tbVisitorManagementVo = baseMapper.selectVoById(id); - if (tbVisitorManagementVo.getFacePictures() == null) { - return baseMapper.selectVoById(id); - } else { + if (tbVisitorManagementVo.getFacePictures() != null) { String facePictures = tbVisitorManagementVo.getFacePictures(); String url = remoteFileService.selectUrlByIds(facePictures); tbVisitorManagementVo.setUrl(url); - - return baseMapper.selectVoById(id); } + return tbVisitorManagementVo; } /** @@ -131,6 +136,7 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi * @return 是否新增成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean insertByBo(TbVisitorManagementBo bo) { QrCodeInfo info = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + "Qrcode" + bo.getQrCodeId()); RedisUtils.deleteKeys(GlobalConstants.CAPTCHA_CODE_KEY + "Qrcode" + bo.getQrCodeId()); @@ -142,20 +148,13 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi add.setTenantId(userInfoById.getTenantId()); add.setCreateBy(userInfoById.getUserId()); add.setUpdateById(userInfoById.getUserId()); - -// //文件上传时,获取ossId -// String ossId = String.valueOf(remoteFileService.uploadImg(bo.getFacePictures().getBytes()).getOssId()); -// add.setFacePictures(ossId); - add.setUpdateBy(userInfoById.getUserId()); add.setCreateDept(userInfoById.getDeptId()); boolean flag = baseMapper.insert(add) > 0; - + Assert.isTrue(flag, "新增访客管理失败"); if (flag) { bo.setId(add.getId()); - Long e8Id = syncE8PlatVisitor(bo); - add.setEEightId(e8Id); - baseMapper.updateById(add); + syncE8PlatVisitor(bo); } return flag; } @@ -168,6 +167,7 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi * @return 是否新增成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean insertH5ByBo(TbVisitorManagementBo bo) { QrCodeInfo info = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + "Qrcode" + bo.getQrCodeId()); RedisUtils.deleteKeys(GlobalConstants.CAPTCHA_CODE_KEY + "Qrcode" + bo.getQrCodeId()); @@ -182,12 +182,10 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi add.setUpdateBy(userInfoById.getUserId()); add.setCreateDept(userInfoById.getDeptId()); boolean flag = baseMapper.insert(add) > 0; - - if (flag){ + Assert.isTrue(flag, "新增访客管理失败"); + if (flag) { bo.setId(add.getId()); - Long e8Id = syncE8PlatVisitor(bo); - add.setEEightId(e8Id); - baseMapper.updateById(add); + syncE8PlatVisitor(bo); } return flag; } @@ -200,22 +198,13 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi */ @Override public Boolean insertVistorManagementByBo(TbVisitorManagementBo bo) { -// QrCodeInfo info = RedisUtils.getCacheObject("Qrcode" + bo.getQrCodeId()); TbVisitorManagement add = MapstructUtils.convert(bo, TbVisitorManagement.class); - - //文件上传时,获取ossId -// String ossId = String.valueOf(remoteFileService.uploadImg(bo.getFacePictures().getBytes()).getOssId()); -// add.setFacePictures(ossId); - validEntityBeforeSave(add); -// add.setCreateById(info.getUserid()); boolean flag = baseMapper.insert(add) > 0; if (flag) { assert add != null; bo.setId(add.getId()); - Long e8Id = syncE8PlatVisitor(bo); - add.setEEightId(e8Id); - baseMapper.updateById(add); + syncE8PlatVisitor(bo); } return flag; } @@ -225,9 +214,8 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi * 访客登记同步E8平台门禁 * * @param visitor 访客信息 - * @return E8平台访客ID */ - private Long syncE8PlatVisitor(TbVisitorManagementBo visitor) { + private void syncE8PlatVisitor(TbVisitorManagementBo visitor) { RemoteVisitor remoteVisitor = new RemoteVisitor(); remoteVisitor.setVisitorName(visitor.getVisitorName()); remoteVisitor.setMobilePhone(visitor.getVisitorPhone()); @@ -235,7 +223,15 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi remoteVisitor.setVisitorStartTime(DateUtil.format(visitor.getVisitingBeginTime(), "yyyy-MM-dd HH:mm:ss")); remoteVisitor.setVistorEndTime(DateUtil.format(visitor.getVisitingEndTime(), "yyyy-MM-dd HH:mm:ss")); remoteVisitor.setVisitorFaceImg(visitor.getFacePictures()); - return remoteVisitorService.syncE8PlatVisitor(remoteVisitor); + Map res = remoteVisitorService.syncE8PlatVisitor(remoteVisitor); + LambdaUpdateWrapper lambda = new LambdaUpdateWrapper<>(); + lambda.eq(TbVisitorManagement::getId, visitor.getId()); + if (Integer.parseInt(String.valueOf(res.get("code"))) == 200) { + lambda.set(TbVisitorManagement::getEEightId, Long.valueOf(res.get("data").toString())); + } else { + lambda.set(TbVisitorManagement::getRemark, res.get("data").toString()); + } + baseMapper.update(null, lambda); } /** @@ -272,4 +268,104 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi } return baseMapper.deleteByIds(ids) > 0; } + + + /** + * 小程序新增访客邀约 + * + * @param bo bean + * @return boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertByXcxBo(TbVisitorManagementBo bo) { + TbVisitorManagement add = MapstructUtils.convert(bo, TbVisitorManagement.class); + Assert.notNull(add, "数据处理失败"); + assert add != null; + add.setType(1); + + LoginResidentPerson person = LoginHelper.getLoginResident(); + Assert.notNull(person, "用户信息不存在"); + assert person != null; + + ResidentPersonVo residentPersonVo = residentPersonService.queryById(person.getUserId()); + add.setInterviewedPerson(person.getNickname()); + add.setInterviewedUnit(person.getUnitName()); + add.setInterviewedPhone(residentPersonVo.getPhone()); + + boolean flag = baseMapper.insert(add) > 0; + Assert.isTrue(flag, "小程序新增访客邀约失败"); + if (flag) { + bo.setId(add.getId()); + syncE8PlatVisitor(bo); + } + return flag; + } + + /** + * 小程序修改邀约信息 + * + * @param bo bean + * @return boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateByXcxBo(TbVisitorManagementBo bo) { + TbVisitorManagement update = MapstructUtils.convert(bo, TbVisitorManagement.class); + Assert.notNull(update, "数据处理失败"); + boolean flag = baseMapper.updateById(update) > 0; + Assert.isTrue(flag, "小程序修改邀约信息失败"); + return flag; + } + + /** + * 小程序查询访客邀约详情 + * + * @param id 主键 + * @return vo + */ + @Override + public TbVisitorManagementVo queryByIdForXcx(Long id) { + //获取ossId + TbVisitorManagementVo tbVisitorManagementVo = baseMapper.selectVoById(id); + if (tbVisitorManagementVo.getFacePictures() != null) { + String facePictures = tbVisitorManagementVo.getFacePictures(); + String url = remoteFileService.selectUrlByIds(facePictures); + tbVisitorManagementVo.setUrl(url); + } + return tbVisitorManagementVo; + } + + /** + * 小程序查询本人邀约/预约列表 + * + * @param type 列表类型 + * @return list + */ + @Override + public List queryMyListByXcx(Integer type) { + LoginResidentPerson person = LoginHelper.getLoginResident(); + Assert.notNull(person, "用户信息不存在"); + assert person != null; + ResidentPersonVo residentPersonVo = residentPersonService.queryById(person.getUserId()); + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + qw.eq(TbVisitorManagement::getInterviewedPerson, residentPersonVo.getUserName()) + .eq(TbVisitorManagement::getInterviewedPhone, residentPersonVo.getPhone()) + .eq(TbVisitorManagement::getType, type) + .orderByDesc(TbVisitorManagement::getCreateTime); + return baseMapper.selectVoList(qw); + } + + /** + * 小程序获取邀约二维码 + * + * @param id 主键 + * @return String + */ + @Override + public Map getQrCodeByIdForXcx(Long id) { + TbVisitorManagementVo vo = baseMapper.selectVoById(id); + Assert.notNull(vo, "数据不存在"); + return remoteVisitorService.getQrCode(vo.getEEightId()); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/dubbo/RemoteVisitorServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/dubbo/RemoteVisitorServiceImpl.java index 5e7f35cd..b4807150 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/dubbo/RemoteVisitorServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/dubbo/RemoteVisitorServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.sis.dubbo; import cn.hutool.core.lang.Assert; +import cn.hutool.json.JSONUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; @@ -9,10 +10,15 @@ import org.dromara.resource.api.RemoteFileService; import org.dromara.sis.api.RemoteVisitorService; import org.dromara.sis.api.domain.RemoteVisitor; import org.dromara.sis.sdk.e8.E8PlatformApi; +import org.dromara.sis.sdk.e8.domain.ApiResp; import org.dromara.sis.sdk.e8.domain.visitors.req.VisitorAddReq; import org.dromara.sis.sdk.e8.domain.visitors.res.VisitorAddRes; import org.dromara.sis.sdk.e8.utils.ImageUtil; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * @author lsm * @apiNote RemoteVisitorServiceImpl @@ -36,7 +42,7 @@ public class RemoteVisitorServiceImpl implements RemoteVisitorService { * @return 访客ID */ @Override - public Long syncE8PlatVisitor(RemoteVisitor visitor) { + public Map syncE8PlatVisitor(RemoteVisitor visitor) { try { byte[] imgByte = fileService.downloadToByteArray(Long.parseLong(visitor.getVisitorFaceImg())); Assert.notNull(imgByte, "下载访客照片失败"); @@ -53,12 +59,38 @@ public class RemoteVisitorServiceImpl implements RemoteVisitorService { req.setVisitorStartTime(visitor.getVisitorStartTime()); req.setVistorEndTime(visitor.getVistorEndTime()); req.setVisitorFaceImg(imgUrl); - VisitorAddRes res = e8PlatformApi.addVisitor(req); + ApiResp res = e8PlatformApi.addVisitor(req); Assert.notNull(res, "e8平台新增访客登记失败"); - return res.getId(); + + return res.getCode() == 0 + ? Map.of("code", 200, "data", + JSONUtil.toBean(JSONUtil.toJsonStr(res.getResult()), VisitorAddRes.class).getId()) + : Map.of("code", 500, "data", res.getMessage()); } catch (Exception e) { log.info(e.getMessage()); - return null; + return Map.of("code", 500, "data", "e8平台新增访客登记出错"); + } + } + + /** + * 获取访客二维码 + * + * @param id 访客id + * @return String + */ + @Override + public Map getQrCode(Long id) { + try { + ApiResp res = e8PlatformApi.getVisitorQrCode(List.of(id)); + Assert.notNull(res, "e8平台获取访客二维码失败"); + return res.getCode() == 0 + ? Map.of("code", 200, "data", + JSONUtil.toList(JSONUtil.toJsonStr(res.getResult()), VisitorAddRes.class).get(0).getQrCodeStr()) + : Map.of("code", 500, "data", res.getMessage()); + + } catch (Exception e) { + log.info(e.getMessage()); + return Map.of("code", 500, "data", "e8平台获取访客二维码出错"); } } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/E8PlatformApi.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/E8PlatformApi.java index a223dbcb..677d2096 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/E8PlatformApi.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/E8PlatformApi.java @@ -1,6 +1,7 @@ package org.dromara.sis.sdk.e8; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.sdk.e8.domain.ApiResp; import org.dromara.sis.sdk.e8.domain.QueryDto; import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq; import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; @@ -20,7 +21,6 @@ import org.dromara.sis.sdk.e8.domain.lift.req.LiftAddReq; import org.dromara.sis.sdk.e8.domain.lift.req.LiftUpdateReq; import org.dromara.sis.sdk.e8.domain.lift.res.LiftFindRes; import org.dromara.sis.sdk.e8.domain.visitors.req.VisitorAddReq; -import org.dromara.sis.sdk.e8.domain.visitors.res.VisitorAddRes; import org.dromara.sis.sdk.e8.domain.voucher.req.ChangeCardReq; import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; import org.dromara.sis.sdk.e8.domain.voucher.req.OperateVoucherReq; @@ -240,15 +240,15 @@ public interface E8PlatformApi { * 新增访客登记 * * @param req 入参 - * @return VisitorAddRes + * @return ApiResp */ - VisitorAddRes addVisitor(VisitorAddReq req); + ApiResp addVisitor(VisitorAddReq req); /** * 获取访客二维码 * * @param ids 访客ids - * @return VisitorAddRes + * @return ApiResp */ - VisitorAddRes getVisitorQrCode(List ids); + ApiResp getVisitorQrCode(List ids); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/service/E8PlatformApiService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/service/E8PlatformApiService.java index 0e3dbc16..ca8c1d61 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/service/E8PlatformApiService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/service/E8PlatformApiService.java @@ -31,7 +31,6 @@ import org.dromara.sis.sdk.e8.domain.lift.req.LiftFindReq; import org.dromara.sis.sdk.e8.domain.lift.req.LiftUpdateReq; import org.dromara.sis.sdk.e8.domain.lift.res.LiftFindRes; import org.dromara.sis.sdk.e8.domain.visitors.req.VisitorAddReq; -import org.dromara.sis.sdk.e8.domain.visitors.res.VisitorAddRes; import org.dromara.sis.sdk.e8.domain.voucher.req.ChangeCardReq; import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; import org.dromara.sis.sdk.e8.domain.voucher.req.OperateVoucherReq; @@ -724,7 +723,7 @@ public class E8PlatformApiService implements E8PlatformApi { * @return VisitorAddRes */ @Override - public VisitorAddRes addVisitor(VisitorAddReq req) { + public ApiResp addVisitor(VisitorAddReq req) { // 将添加请求对象转换为Map对象,以便后续API调用 Map params = BeanUtil.beanToMap(req); @@ -735,11 +734,11 @@ public class E8PlatformApiService implements E8PlatformApi { if (!apiResp.getSuccess()) { log.error("E8新增访客信息失败 errorMsg:{}", apiResp); // 如果API调用失败,返回null - return null; + return apiResp; } // 返回API调用是否成功的标志 - return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), VisitorAddRes.class); + return apiResp; } /** @@ -749,7 +748,7 @@ public class E8PlatformApiService implements E8PlatformApi { * @return String */ @Override - public VisitorAddRes getVisitorQrCode(List ids) { + public ApiResp getVisitorQrCode(List ids) { Map params = new HashMap<>(); params.put("ids", ids); @@ -760,11 +759,11 @@ public class E8PlatformApiService implements E8PlatformApi { if (!apiResp.getSuccess()) { log.error("E8获取访客二维码失败 errorMsg:{}", apiResp); // 如果API调用失败,返回null - return null; + return apiResp; } // 返回API调用是否成功的标志 - return JSONUtil.toList(JSONUtil.toJsonStr(apiResp.getResult()), VisitorAddRes.class).get(0); - +// return JSONUtil.toList(JSONUtil.toJsonStr(apiResp.getResult()), VisitorAddRes.class).get(0); + return apiResp; } }