Browse Source

获取当前在组模式(发话题、分享、评论时调用)

参观小组(记录日志)
dev
zxc 4 years ago
parent
commit
4b303826f2
  1. 23
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/GroupVisitConstant.java
  2. 24
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/UserAndGroupRelFormDTO.java
  3. 30
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/form/VisitFormDTO.java
  4. 20
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupInfoResultDTO.java
  5. 21
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/UserAndGroupRelResultDTO.java
  6. 25
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/VisitResultDTO.java
  7. 40
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/controller/GroupVisitorController.java
  8. 28
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/dao/GroupVisitorDao.java
  9. 22
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/GroupVisitorService.java
  10. 75
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupVisitorServiceImpl.java
  11. 27
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupVisitorDao.xml

23
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";
}

24
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;
}

30
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;
}

20
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;
}

21
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;
}

25
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;
}

40
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<VisitResultDTO> visit(@RequestBody VisitFormDTO formDTO, @LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(formDTO, VisitFormDTO.VisitForm.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
return new Result<VisitResultDTO>().ok(groupVisitorService.visit(formDTO));
}
/**
* @Description 获取当前在组模式发话题分享评论时调用
* 发表话题评论话题分享话题按下先调用此接口
* @Param formDTO
* @author zxc
* @date 2021/4/7 上午11:09
*/
@PostMapping("userandgrouprel")
public Result<UserAndGroupRelResultDTO> userAndGroupRel(@RequestBody UserAndGroupRelFormDTO formDTO,@LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(formDTO, UserAndGroupRelFormDTO.UserAndGroupRelForm.class);
formDTO.setUserId(tokenDto.getUserId());
return new Result<UserAndGroupRelResultDTO>().ok(groupVisitorService.userAndGroupRel(formDTO));
}
}

28
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<GroupVisitorEntity> {
/**
* @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);
}

22
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<GroupVisitorEntity> {
* @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);
}

75
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<GroupVisitorDao, GroupVisitorEntity> implements GroupVisitorService {
@Autowired
private GroupVisitRecordDao groupVisitRecordDao;
@Autowired
private ResiGroupMemberDao resiGroupMemberDao;
@Override
public PageData<GroupVisitorDTO> page(Map<String, Object> params) {
@ -89,5 +105,64 @@ public class GroupVisitorServiceImpl extends BaseServiceImpl<GroupVisitorDao, Gr
updateById(entity);
}
/**
* @Description 参观小组(记录日志)
* 推荐小组界面点击参观按钮调用此接口 如果开关开启的情况下需要记录到
* @Param formDTO
* @author zxc
* @date 2021/4/7 上午10:58
*/
@Override
@Transactional(rollbackFor = Exception.class)
public VisitResultDTO visit(VisitFormDTO formDTO) {
// 查询小组是否允许参观,open:允许,closed:不允许
GroupInfoResultDTO visitSwitch = baseDao.selectVisitSwitch(formDTO.getGroupId());
if (null == visitSwitch || (null != visitSwitch && StringUtils.isNotEmpty(visitSwitch.getVisitSwitch()) && visitSwitch.equals(GroupVisitConstant.VISIT_SWITCH_CLOSED))){
return new VisitResultDTO(visitSwitch.getVisitSwitch());
}
Integer visitCount = baseDao.selectVisitCount(formDTO.getUserId(), formDTO.getGroupId());
if (visitCount > 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;
}
}

27
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/member/GroupVisitorDao.xml

@ -3,6 +3,33 @@
<mapper namespace="com.epmet.modules.member.dao.GroupVisitorDao">
<!-- 更新最后一次访问时间 -->
<update id="updateLatestTime">
UPDATE group_visitor
SET latest_visit_time = NOW()
WHERE DEL_FLAG = '0'
AND GROUP_ID = #{groupId}
AND user_id = #{userId}
</update>
<!-- 查询小组是否允许参观:允许:open;不允许:closed -->
<select id="selectVisitSwitch" resultType="com.epmet.resi.group.dto.member.result.GroupInfoResultDTO">
SELECT
visit_switch,
grid_id
FROM resi_group
WHERE DEL_FLAG = '0'
AND ID = #{groupId}
</select>
<!-- 查询用户是否访问过此小组 -->
<select id="selectVisitCount" resultType="java.lang.Integer">
SELECT
COUNT(ID)
FROM group_visitor
WHERE DEL_FLAG = '0'
AND GROUP_ID = #{groupId}
AND user_id = #{userId}
</select>
</mapper>
Loading…
Cancel
Save