Commit a35aa3c4 by 朱亚洁

用户统计

parent 350e72bc
......@@ -2,7 +2,6 @@ package com.pcloud.book.consumer.wechatgroup;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
......@@ -13,14 +12,14 @@ import com.pcloud.wechatgroup.group.dto.GroupUserDTO;
import com.pcloud.wechatgroup.group.dto.RobotReplyDTO;
import com.pcloud.wechatgroup.group.service.GroupMemberService;
import com.pcloud.wechatgroup.message.dto.GroupChatCountDTO;
import com.pcloud.wechatgroup.message.dto.UserChatCountDTO;
import com.pcloud.wechatgroup.message.service.MessageService;
import com.pcloud.wechatgroup.monitor.service.MonitorService;
import com.pcloud.wechatgroup.selfrobot.service.SelfRobotService;
import com.pcloud.wechatgroup.selfrobot.dto.SelfRobotDTO;
import com.pcloud.wechatgroup.selfrobot.dto.UserRobotDTO;
import com.pcloud.wechatgroup.selfrobot.service.SelfRobotService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
......@@ -371,4 +370,15 @@ public class WechatGroupConsr {
}
return selfRobotDTO;
}
@ParamLog("1v1入群-用户基本信息/发言统计")
public Map<String, UserChatCountDTO> getUserChatInfoByUserIdRobotId(List<UserRobotDTO> robotDTOList) {
Map<String, UserChatCountDTO> map = new HashMap<>();
try {
map = ResponseHandleUtil.parseMapResponse(selfRobotService.getUserChatInfoByUserIdRobotId(robotDTOList), String.class, UserChatCountDTO.class);
} catch (Exception e) {
log.error("获取用户基本信息/发言统计失败" + e.getMessage(), e);
}
return map;
}
}
......@@ -15,6 +15,7 @@ import com.pcloud.book.group.dto.PersonalQrcodeDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.dto.ResourceBrowseParamDto;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.vo.FriendsVO;
import com.pcloud.book.group.vo.GroupIncomeStaticParamVO;
import com.pcloud.book.group.vo.GroupScanTrendParamVO;
import com.pcloud.book.group.vo.GroupScanTrendVO;
......@@ -390,4 +391,11 @@ public interface BookGroupBiz {
* @return
*/
Map<String, Integer> getBookGroupFriendsCountByDay(Long bookGroupId, String startDate, String endDate);
/**
* 好友数据统计列表
* @param bookGroupId
* @return
*/
PageBeanNew<FriendsVO> listPageFriendsStatistic(Long bookGroupId, Integer currentPage, Integer numPerPage);
}
......@@ -57,6 +57,7 @@ import com.pcloud.book.group.enums.CipherTypeEnum;
import com.pcloud.book.group.enums.LargTempletEnum;
import com.pcloud.book.group.vo.ClassifyAndGroupCountVO;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.group.vo.FriendsVO;
import com.pcloud.book.group.vo.GroupIncomeStaticParamVO;
import com.pcloud.book.group.vo.GroupScanTrendParamVO;
import com.pcloud.book.group.vo.GroupScanTrendVO;
......@@ -120,7 +121,9 @@ import com.pcloud.settlementcenter.record.service.SettlementService;
import com.pcloud.videolesson.schedule.service.ScheduleService;
import com.pcloud.wechatgroup.group.dto.GroupMemberStatisDTO;
import com.pcloud.wechatgroup.group.service.GroupMemberService;
import com.pcloud.wechatgroup.message.dto.UserChatCountDTO;
import com.pcloud.wechatgroup.selfrobot.dto.SelfRobotDTO;
import com.pcloud.wechatgroup.selfrobot.dto.UserRobotDTO;
import org.apache.commons.collections.MapUtils;
import org.slf4j.Logger;
......@@ -1998,5 +2001,41 @@ public class BookGroupBizImpl implements BookGroupBiz {
return map;
}
@Override
public PageBeanNew<FriendsVO> listPageFriendsStatistic(Long bookGroupId, Integer currentPage, Integer numPerPage) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("bookGroupId", bookGroupId);
PageBeanNew<FriendsVO> pageBeanNew = joinGroupCipherDao.listPageNew(new PageParam(currentPage, numPerPage), paramMap, "listPageFriendsStatistic");
List<FriendsVO> recordList = pageBeanNew.getRecordList();
if (null == pageBeanNew || ListUtils.isEmpty(recordList)) {
return new PageBeanNew<>(currentPage, numPerPage, 0, new ArrayList<>());
}
List<UserRobotDTO> paramList = new ArrayList<>();
recordList.forEach(friendsVO -> {
UserRobotDTO robotDTO = new UserRobotDTO();
robotDTO.setWxUserId(friendsVO.getWxUserId());
robotDTO.setRobotId(friendsVO.getRobotId());
paramList.add(robotDTO);
});
Map<String, UserChatCountDTO> dtoMap = wechatGroupConsr.getUserChatInfoByUserIdRobotId(paramList);
for (FriendsVO friendsVO : recordList) {
if (!MapUtils.isEmpty(dtoMap)) {
UserChatCountDTO countDTO = dtoMap.get(friendsVO.getWxUserId());
friendsVO.setNickName(countDTO.getNickName());
friendsVO.setHeadPic(countDTO.getHeadPic());
friendsVO.setSex(countDTO.getSex());
friendsVO.setCountry(countDTO.getCountry());
friendsVO.setProvince(countDTO.getProvince());
friendsVO.setCity(countDTO.getCity());
friendsVO.setState("正常");
friendsVO.setSpeakCount(countDTO.getChatCount());
friendsVO.setSpeakCountLast7(countDTO.getSevenDayChatCount());
friendsVO.setLastSpeakTime(countDTO.getLastChatTime());
}
}
return pageBeanNew;
}
}
package com.pcloud.book.group.facade;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.entity.BookGroupClassify;
import com.pcloud.book.group.vo.*;
import com.pcloud.book.group.vo.FriendsVO;
import com.pcloud.book.group.vo.GroupIncomeStaticParamVO;
import com.pcloud.book.group.vo.GroupScanTrendParamVO;
import com.pcloud.book.group.vo.GroupScanTrendVO;
import com.pcloud.book.group.vo.ListBookGroup4ChannelParamVO;
import com.pcloud.book.group.vo.ResourcesStatisticVO;
import com.pcloud.book.group.vo.UpdateRankTypeVO;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.permission.PermissionException;
import org.codehaus.jackson.JsonParseException;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -14,20 +25,14 @@ import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.vo.ListBookGroup4ChannelParamVO;
import com.pcloud.book.group.vo.UpdateRankTypeVO;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.permission.PermissionException;
import java.util.List;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* Description 社群书群二维码接口
* Created by PENG on 2019/4/17.
......@@ -371,6 +376,16 @@ public interface BookGroupFacade {
public ResponseDto<?> exportRescourceIncomeData(@RequestHeader("token") String token,
@RequestParam(value = "bookGroupId",required = true) Long bookGroupId) throws BizException, PermissionException;
@ApiOperation(value = "用户发言数据列表--1v1入群", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "bookGroupId", value = "bookGroupId", required = true, dataType = "Long", paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "currentPage", required = true, dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "numPerPage", required = true, dataType = "Integer", paramType = "query")
})
@GetMapping("listPageFriendsStatistic")
public ResponseDto<PageBeanNew<FriendsVO>> listPageFriendsStatistic(
@RequestHeader("token") String token, @RequestParam(value = "bookGroupId", required = true) Long bookGroupId,
@RequestParam(value = "currentPage", required = true) Integer currentPage,
@RequestParam(value = "numPerPage", required = true) Integer numPerPage) throws BizException, PermissionException;
}
......@@ -7,7 +7,16 @@ import com.pcloud.book.group.dto.GroupStoreMyPayDto;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.entity.BookGroupClassify;
import com.pcloud.book.group.facade.BookGroupFacade;
import com.pcloud.book.group.vo.*;
import com.pcloud.book.group.vo.FriendsVO;
import com.pcloud.book.group.vo.GroupIncomeStaticParamVO;
import com.pcloud.book.group.vo.GroupScanTrendParamVO;
import com.pcloud.book.group.vo.GroupScanTrendVO;
import com.pcloud.book.group.vo.GroupStatisticVO;
import com.pcloud.book.group.vo.ListBookGroup4ChannelParamVO;
import com.pcloud.book.group.vo.ResourcesStatisticVO;
import com.pcloud.book.group.vo.TotalRescourceDataVO;
import com.pcloud.book.group.vo.UpdateRankTypeVO;
import com.pcloud.book.group.vo.WxGroupStatisticVO;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
......@@ -17,9 +26,9 @@ import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cookie.Cookie;
import com.pcloud.common.utils.string.StringUtil;
import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -519,4 +528,14 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
}
@Override
@GetMapping("listPageFriendsStatistic")
public ResponseDto<PageBeanNew<FriendsVO>> listPageFriendsStatistic(
@RequestHeader("token") String token, @RequestParam(value = "bookGroupId", required = true) Long bookGroupId,
@RequestParam(value = "currentPage", required = true) Integer currentPage,
@RequestParam(value = "numPerPage", required = true) Integer numPerPage) throws BizException, PermissionException {
SessionUtil.getToken4Redis(token);
PageBeanNew<FriendsVO> pageBeanNew = bookGroupBiz.listPageFriendsStatistic(bookGroupId, currentPage, numPerPage);
return new ResponseDto<>(pageBeanNew);
}
}
package com.pcloud.book.group.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.common.dto.BaseDto;
import java.util.Date;
/**
* @描述:好友用户信息
* @作者:zhuyajie
* @创建时间:11:51 2019/9/20
* @版本:1.0
*/
public class FriendsVO extends BaseDto {
/**
* 机器人id
*/
private String robotId;
/**
* 微信用户ID
*/
private String wxUserId;
/**
* 昵称
*/
private String nickName;
/**
* 头像
*/
private String headPic;
/**
* 性别
*/
private Integer sex;
/**
* 国家
*/
private String country;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 添加时间
*/
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date createTime;
/**
* 状态
*/
private String state;
/**
* 累积发言次数
*/
private Integer speakCount;
/**
* 7天累积发言次数
*/
private Integer speakCountLast7;
/**
* 最后一次发言时间
*/
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date lastSpeakTime;
public String getRobotId() {
return robotId;
}
public void setRobotId(String robotId) {
this.robotId = robotId;
}
public String getWxUserId() {
return wxUserId;
}
public void setWxUserId(String wxUserId) {
this.wxUserId = wxUserId;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getHeadPic() {
return headPic;
}
public void setHeadPic(String headPic) {
this.headPic = headPic;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Integer getSpeakCount() {
return speakCount;
}
public void setSpeakCount(Integer speakCount) {
this.speakCount = speakCount;
}
public Integer getSpeakCountLast7() {
return speakCountLast7;
}
public void setSpeakCountLast7(Integer speakCountLast7) {
this.speakCountLast7 = speakCountLast7;
}
public Date getLastSpeakTime() {
return lastSpeakTime;
}
public void setLastSpeakTime(Date lastSpeakTime) {
this.lastSpeakTime = lastSpeakTime;
}
@Override
public String toString() {
return "FriendsVO{" +
"robotId='" + robotId + '\'' +
", wxUserId='" + wxUserId + '\'' +
", nickName='" + nickName + '\'' +
", headPic='" + headPic + '\'' +
", sex=" + sex +
", country='" + country + '\'' +
", province='" + province + '\'' +
", city='" + city + '\'' +
", createTime=" + createTime +
", state='" + state + '\'' +
", speakCount=" + speakCount +
", speakCountLast7=" + speakCountLast7 +
", lastSpeakTime=" + lastSpeakTime +
'}';
}
}
......@@ -130,27 +130,41 @@
<select id="getFriendsCountByBookGroup" parameterType="long" resultType="integer">
SELECT
COUNT(DISTINCT wx_id)
COUNT(DISTINCT wx_id)
FROM
join_group_cipher
join_group_cipher
WHERE
book_group_id = #{bookGroupId}
AND has_used = 1
book_group_id = #{bookGroupId}
AND has_used = 1
</select>
<select id="getBookGroupFriendsCountByDay" parameterType="map" resultType="com.pcloud.book.group.dto.DayCountDTO">
SELECT
COUNT(DISTINCT wx_id) count,
DATE_FORMAT(create_time, "%Y-%m-%d") date
COUNT(DISTINCT wx_id) count,
DATE_FORMAT(create_time, "%Y-%m-%d") date
FROM
join_group_cipher
join_group_cipher
WHERE
book_group_id = #{bookGroupId}
AND has_used = 1
AND create_time >= #{startTime}
AND create_time &lt;= #{endTime}
book_group_id = #{bookGroupId}
AND has_used = 1
AND create_time >= #{startTime}
AND create_time &lt;= #{endTime}
GROUP BY
DATE_FORMAT(create_time, "%Y-%m-%d")
DATE_FORMAT(create_time, "%Y-%m-%d")
</select>
<select id="listPageFriendsStatistic" parameterType="map" resultType="com.pcloud.book.group.vo.FriendsVO">
SELECT DISTINCT
wx_id wxUserId,
alt_id robotId,
create_time createTime
FROM
join_group_cipher
WHERE
book_group_id = 655
AND has_used = 1
ORDER BY
create_time DESC,id DESC
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment