diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupVisitConstant.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupVisitConstant.java new file mode 100644 index 0000000000..ef0e2b92e7 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupVisitConstant.java @@ -0,0 +1,23 @@ +package com.epmet.resi.group.constant; + +/** + * @Author zxc + * @DateTime 2021/4/7 下午1:47 + * @DESC + */ +public interface GroupVisitConstant { + + /** + * 小组是否允许参观:允许:open;不允许:closed + */ + String VISIT_SWITCH_OPEN = "open"; + String VISIT_SWITCH_CLOSED = "closed"; + + /** + * 参观模式:visit ; 已入组: in_group;未知:unknown + */ + String VISIT = "visit"; + String VISIT_IN_GROUP = "in_group"; + String VISIT_UNKNOWN = "unknown"; + +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/UserAndGroupRelFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/UserAndGroupRelFormDTO.java new file mode 100644 index 0000000000..c3e45edacb --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/UserAndGroupRelFormDTO.java @@ -0,0 +1,24 @@ +package com.epmet.resi.group.dto.member.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/4/7 上午11:02 + * @DESC + */ +@Data +public class UserAndGroupRelFormDTO implements Serializable { + + private static final long serialVersionUID = -8406731503470703549L; + + public interface UserAndGroupRelForm{} + + @NotBlank(message = "小组ID不能为空",groups = UserAndGroupRelForm.class) + private String groupId; + + private String userId; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/VisitFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/VisitFormDTO.java new file mode 100644 index 0000000000..ad68712854 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/VisitFormDTO.java @@ -0,0 +1,30 @@ +package com.epmet.resi.group.dto.member.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/4/7 上午10:49 + * @DESC + */ +@Data +public class VisitFormDTO implements Serializable { + + private static final long serialVersionUID = 3516659225931215600L; + + public interface VisitForm{} + + /** + * 小组ID + */ + @NotBlank(message = "小组ID不能为空",groups = VisitForm.class) + private String groupId; + + private String userId; + + private String customerId; + +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupInfoResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupInfoResultDTO.java new file mode 100644 index 0000000000..7e9ae3eff8 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupInfoResultDTO.java @@ -0,0 +1,20 @@ +package com.epmet.resi.group.dto.member.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/4/7 下午2:08 + * @DESC + */ +@Data +public class GroupInfoResultDTO implements Serializable { + + private static final long serialVersionUID = -6300305692117164080L; + + private String visitSwitch; + + private String gridId; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/UserAndGroupRelResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/UserAndGroupRelResultDTO.java new file mode 100644 index 0000000000..e7b6ac3cc3 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/UserAndGroupRelResultDTO.java @@ -0,0 +1,21 @@ +package com.epmet.resi.group.dto.member.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/4/7 上午11:05 + * @DESC + */ +@Data +public class UserAndGroupRelResultDTO implements Serializable { + + private static final long serialVersionUID = 8162347909790178255L; + + /** + * 参观模式:visit ; 已入组: in_group;未知:unknown + */ + private String pattern; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/VisitResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/VisitResultDTO.java new file mode 100644 index 0000000000..13563e27b5 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/VisitResultDTO.java @@ -0,0 +1,25 @@ +package com.epmet.resi.group.dto.member.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/4/7 上午10:52 + * @DESC + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class VisitResultDTO implements Serializable { + + private static final long serialVersionUID = -6532744066209112808L; + + /** + * 小组是否允许参观:允许:open;不允许:closed + */ + private String visitSwitch; +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/GroupVisitorController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/GroupVisitorController.java index 5140967fb6..81ad57760b 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/GroupVisitorController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/GroupVisitorController.java @@ -17,8 +17,18 @@ package com.epmet.modules.member.controller; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.modules.member.service.GroupVisitorService; +import com.epmet.resi.group.dto.member.form.UserAndGroupRelFormDTO; +import com.epmet.resi.group.dto.member.form.VisitFormDTO; +import com.epmet.resi.group.dto.member.result.UserAndGroupRelResultDTO; +import com.epmet.resi.group.dto.member.result.VisitResultDTO; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -36,5 +46,35 @@ public class GroupVisitorController { @Autowired private GroupVisitorService groupVisitorService; + /** + * @Description 参观小组(记录日志) + * 推荐小组界面,点击参观按钮,调用此接口 如果开关开启的情况下,需要记录到 + * @Param formDTO + * @Param tokenDto + * @author zxc + * @date 2021/4/7 上午10:57 + */ + @PostMapping("visit") + public Result visit(@RequestBody VisitFormDTO formDTO, @LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO, VisitFormDTO.VisitForm.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + return new Result().ok(groupVisitorService.visit(formDTO)); + } + + /** + * @Description 获取当前在组模式(发话题、分享、评论时调用) + * 发表话题、评论话题、分享话题按下,先调用此接口 + * @Param formDTO + * @author zxc + * @date 2021/4/7 上午11:09 + */ + @PostMapping("userandgrouprel") + public Result userAndGroupRel(@RequestBody UserAndGroupRelFormDTO formDTO,@LoginUser TokenDto tokenDto){ + ValidatorUtils.validateEntity(formDTO, UserAndGroupRelFormDTO.UserAndGroupRelForm.class); + formDTO.setUserId(tokenDto.getUserId()); + return new Result().ok(groupVisitorService.userAndGroupRel(formDTO)); + } + } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupVisitorDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupVisitorDao.java index b2b8eed76b..b3576877c9 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupVisitorDao.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupVisitorDao.java @@ -19,7 +19,9 @@ package com.epmet.modules.member.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.modules.member.entity.GroupVisitorEntity; +import com.epmet.resi.group.dto.member.result.GroupInfoResultDTO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 小组参观者记录 @@ -29,5 +31,31 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface GroupVisitorDao extends BaseDao { + + /** + * @Description 查询小组是否允许参观:允许:open;不允许:closed + * @Param groupId + * @author zxc + * @date 2021/4/7 下午1:44 + */ + GroupInfoResultDTO selectVisitSwitch(@Param("groupId")String groupId); + + /** + * @Description 查询用户是否访问过此小组 + * @Param userId + * @Param groupId + * @author zxc + * @date 2021/4/7 下午2:02 + */ + Integer selectVisitCount(@Param("userId")String userId,@Param("groupId")String groupId); + + /** + * @Description 更新最后一次访问时间 + * @Param userId + * @Param groupId + * @author zxc + * @date 2021/4/7 下午2:13 + */ + void updateLatestTime(@Param("userId")String userId,@Param("groupId")String groupId); } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/GroupVisitorService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/GroupVisitorService.java index 7c59b434a7..0f6f8c4754 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/GroupVisitorService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/GroupVisitorService.java @@ -21,6 +21,10 @@ import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.modules.member.entity.GroupVisitorEntity; import com.epmet.resi.group.dto.member.GroupVisitorDTO; +import com.epmet.resi.group.dto.member.form.UserAndGroupRelFormDTO; +import com.epmet.resi.group.dto.member.form.VisitFormDTO; +import com.epmet.resi.group.dto.member.result.UserAndGroupRelResultDTO; +import com.epmet.resi.group.dto.member.result.VisitResultDTO; import java.util.List; import java.util.Map; @@ -82,4 +86,22 @@ public interface GroupVisitorService extends BaseService { * @date 2021-04-07 */ void update(GroupVisitorDTO dto); + + /** + * @Description 参观小组(记录日志) + * 推荐小组界面,点击参观按钮,调用此接口 如果开关开启的情况下,需要记录到 + * @Param formDTO + * @author zxc + * @date 2021/4/7 上午10:58 + */ + VisitResultDTO visit( VisitFormDTO formDTO); + + /** + * @Description 获取当前在组模式(发话题、分享、评论时调用) + * 发表话题、评论话题、分享话题按下,先调用此接口 + * @Param formDTO + * @author zxc + * @date 2021/4/7 上午11:09 + */ + UserAndGroupRelResultDTO userAndGroupRel(UserAndGroupRelFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupVisitorServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupVisitorServiceImpl.java index 83f8f6e1d4..662505859e 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupVisitorServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupVisitorServiceImpl.java @@ -21,16 +21,28 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.modules.member.dao.GroupVisitRecordDao; import com.epmet.modules.member.dao.GroupVisitorDao; +import com.epmet.modules.member.dao.ResiGroupMemberDao; +import com.epmet.modules.member.entity.GroupVisitRecordEntity; import com.epmet.modules.member.entity.GroupVisitorEntity; import com.epmet.modules.member.service.GroupVisitorService; +import com.epmet.resi.group.constant.GroupVisitConstant; import com.epmet.resi.group.dto.member.GroupVisitorDTO; +import com.epmet.resi.group.dto.member.form.UserAndGroupRelFormDTO; +import com.epmet.resi.group.dto.member.form.VisitFormDTO; +import com.epmet.resi.group.dto.member.result.GroupInfoResultDTO; +import com.epmet.resi.group.dto.member.result.UserAndGroupRelResultDTO; +import com.epmet.resi.group.dto.member.result.VisitResultDTO; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.List; import java.util.Map; @@ -43,6 +55,10 @@ import java.util.Map; @Service public class GroupVisitorServiceImpl extends BaseServiceImpl implements GroupVisitorService { + @Autowired + private GroupVisitRecordDao groupVisitRecordDao; + @Autowired + private ResiGroupMemberDao resiGroupMemberDao; @Override public PageData page(Map params) { @@ -89,5 +105,64 @@ public class GroupVisitorServiceImpl extends BaseServiceImpl NumConstant.ZERO){ + // 已存在记录,更新最近一次访问时间 + baseDao.updateLatestTime(formDTO.getUserId(),formDTO.getGroupId()); + }else { + // 插入一条新纪录 + GroupVisitorEntity entity = new GroupVisitorEntity(); + entity.setLatestVisitTime(new Date()); + entity.setCustomerId(formDTO.getCustomerId()); + entity.setGridId(visitSwitch.getGridId()); + entity.setGroupId(formDTO.getGroupId()); + entity.setUserId(formDTO.getUserId()); + baseDao.insert(entity); + } + GroupVisitRecordEntity groupVisitRecordEntity = new GroupVisitRecordEntity(); + groupVisitRecordEntity.setCustomerId(formDTO.getCustomerId()); + groupVisitRecordEntity.setGridId(visitSwitch.getGridId()); + groupVisitRecordEntity.setGroupId(formDTO.getGroupId()); + groupVisitRecordEntity.setUserId(formDTO.getUserId()); + groupVisitRecordDao.insert(groupVisitRecordEntity); + return new VisitResultDTO(visitSwitch.getVisitSwitch()); + } + + /** + * @Description 获取当前在组模式(发话题、分享、评论时调用) + * 发表话题、评论话题、分享话题按下,先调用此接口 + * @Param formDTO + * @author zxc + * @date 2021/4/7 上午11:09 + */ + @Override + public UserAndGroupRelResultDTO userAndGroupRel(UserAndGroupRelFormDTO formDTO) { + Integer userInGroup = resiGroupMemberDao.checkUserInGroup(formDTO.getUserId(), formDTO.getGroupId()); + UserAndGroupRelResultDTO result = new UserAndGroupRelResultDTO(); + if (NumConstant.ZERO == userInGroup){ + result.setPattern(GroupVisitConstant.VISIT); + }else if (NumConstant.ZERO < userInGroup){ + result.setPattern(GroupVisitConstant.VISIT_IN_GROUP); + }else { + result.setPattern(GroupVisitConstant.VISIT_UNKNOWN); + } + return result; + } + } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupVisitorDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupVisitorDao.xml index 82303b9699..992cadedb4 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupVisitorDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupVisitorDao.xml @@ -3,6 +3,33 @@ + + + UPDATE group_visitor + SET latest_visit_time = NOW() + WHERE DEL_FLAG = '0' + AND GROUP_ID = #{groupId} + AND user_id = #{userId} + + + + + + \ No newline at end of file