From c6232cfc36e373f83f45c95d400e09466cc2a7d3 Mon Sep 17 00:00:00 2001 From: yanghui <2536613402@qq.com> Date: 星期五, 14 十月 2022 17:41:45 +0800 Subject: [PATCH] #feat 修改运营平台统计登录人数和新增人员 --- springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java | 45 +++++++- springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/UserDao.java | 108 ++++++++++++-------- springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java | 68 ++++++++++--- springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/resources/mapper/UserDao.xml | 39 +++++++ 4 files changed, 194 insertions(+), 66 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java index 204af82..901f014 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java +++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java @@ -4,11 +4,10 @@ import java.text.SimpleDateFormat; import java.time.*; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -931,8 +930,7 @@ Date after = getLastMonthEnd(); System.out.println(date); System.out.println(after); - - + System.out.println(getMonthTwentyDay()); } /** @@ -1129,4 +1127,39 @@ return firstDayOfMonth; } + + /** + * 获取20天前那天时间 + * + * @return + */ + public static String getTwentyDay() { + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date()); + cal.add(Calendar.DATE, -20); + + return DateUtil.format(cal.getTime(),"yyyy-MM-dd"); + } + + /** + * 获取最近本月20天数据 + * + * @return + */ + public static String getMonthTwentyDay() { + Date date = new Date(); + Long offset = DateUtil.between(new Date(), DateUtil.beginOfMonth(date), DateUnit.DAY); + if (offset >= 20) { + return getTwentyDay(); + } else { + //距离月初不足20天 + Calendar calendar = new GregorianCalendar(); + calendar.setTime(date); + //获得本月第一天 + calendar.add(Calendar.MONTH, 0); + calendar.set(Calendar.DAY_OF_MONTH, 1); + return DateUtil.format(calendar.getTime(),"yyyy-MM-dd"); + } + + } } diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/UserDao.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/UserDao.java index 6e7df5a..6f96a31 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/UserDao.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/dao/UserDao.java @@ -1,18 +1,5 @@ package com.panzhihua.service_user.dao; -import java.util.Date; -import java.util.List; -import java.util.Map; - -import com.panzhihua.common.model.vos.community.*; -import com.panzhihua.common.model.vos.community.acid.ComActAcidCheckRecordVO; -import com.panzhihua.common.model.vos.community.acid.ComActAcidMemberVO; -import com.panzhihua.common.model.vos.community.acid.ComActAcidRecordVO; -import com.panzhihua.common.model.vos.user.*; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.springframework.web.bind.annotation.RequestParam; - import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -27,15 +14,23 @@ import com.panzhihua.common.model.vos.IndexDataKanbanVO; import com.panzhihua.common.model.vos.IndexDataVO; import com.panzhihua.common.model.vos.LoginUserInfoVO; +import com.panzhihua.common.model.vos.community.*; +import com.panzhihua.common.model.vos.community.acid.ComActAcidCheckRecordVO; +import com.panzhihua.common.model.vos.community.acid.ComActAcidMemberVO; +import com.panzhihua.common.model.vos.community.acid.ComActAcidRecordVO; import com.panzhihua.common.model.vos.community.screen.event.EventGridMemberVO; import com.panzhihua.common.model.vos.grid.GridMemberVO; import com.panzhihua.common.model.vos.partybuilding.ComPbServiceTeamWishVO; -import com.panzhihua.common.model.vos.user.AdministratorsUserVO; -import com.panzhihua.common.model.vos.user.SysUserNoticeVO; -import com.panzhihua.common.model.vos.user.SysUserVO; -import com.panzhihua.common.model.vos.user.UpdateUserArchivesVO; +import com.panzhihua.common.model.vos.user.*; import com.panzhihua.service_user.model.dos.SysUserDO; import com.panzhihua.service_user.model.dtos.DataKanbanDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.Date; +import java.util.List; +import java.util.Map; /** * @program: springcloud_k8s_panzhihuazhihuishequ @@ -54,11 +49,11 @@ IPage<AdministratorsUserVO> pageUserBackstage(Page page, - @Param("administratorsUserVO") AdministratorsUserVO administratorsUserVO); + @Param("administratorsUserVO") AdministratorsUserVO administratorsUserVO); IPage<SysUserVO> pageUserAppletsBackstage(Page page, - @Param("pageUserAppletsBackstageDTO") PageUserAppletsBackstageDTO pageUserAppletsBackstageDTO); + @Param("pageUserAppletsBackstageDTO") PageUserAppletsBackstageDTO pageUserAppletsBackstageDTO); int deleteUserTest(Long userId); @@ -77,7 +72,7 @@ DataKanbanDTO selectCommunityActiveUserOrder(Date date1); - DataKanbanDTO selectCommunityAddUserOrder(@Param("areaCode")String areaCode,@Param("date1")Date date1); + DataKanbanDTO selectCommunityAddUserOrder(@Param("areaCode") String areaCode, @Param("date1") Date date1); IndexDataVO indexDataCommunityBackstage(Long communityId); @@ -135,7 +130,7 @@ IPage<GridMemberVO> getGridMemberList(Page page, - @Param("memberRelationDTO") PageEventGridMemberRelationDTO memberRelationDTO); + @Param("memberRelationDTO") PageEventGridMemberRelationDTO memberRelationDTO); void gridMemberEditStatus(@Param("gridMemberEditDTO") EventGridMemberEditStatusDTO gridMemberEditDTO); @@ -145,7 +140,7 @@ void addLcMember(@Param("lcMemberId") Long lcMemberId, @Param("userId") Long userId, - @Param("userName") String userName); + @Param("userName") String userName); void delLcMember(@Param("gridMemberId") Long gridMemberId); @@ -166,7 +161,7 @@ List<ComPbServiceTeamWishVO> getServiceTeamList(@Param("param") String param, - @Param("communityId") Long communityId); + @Param("communityId") Long communityId); List<SysUserVO> getUserListByCommunityId(@Param("communityId") Long communityId); @@ -175,6 +170,7 @@ /** * 禁用/启用便民服务商家账号 + * * @param status * @param userIds * @return @@ -183,38 +179,44 @@ /** * 根据手机号维护社区团队表是否注册 + * * @param phone 手机号 */ void judgeCommunityTeam(@Param("phone") String phone); /** * 根据手机号查询社区团队表中用户数量 + * * @param phone 手机号 - * @return 用户数量 + * @return 用户数量 */ Integer getCommunityTeamCount(@Param("phone") String phone); /** * 查询西区所有街道列表以及统计人数 - * @return 西区所有街道列表以及统计人数 + * + * @return 西区所有街道列表以及统计人数 */ List<IndexUserStreetVo> getUserStreetList(@Param("areaCode") String areaCode); /** * 查询街道下社区列表以及统计人数 - * @param streetId 街道id - * @return 社区列表以及统计人数 + * + * @param streetId 街道id + * @return 社区列表以及统计人数 */ List<IndexUserCommunityVo> getUserCommunityList(@Param("streetId") Long streetId); /** * 查询街道下社区注册人数统计数据导出 - * @return 社区注册人数统计数据导出 + * + * @return 社区注册人数统计数据导出 */ List<IndexUserStreetExcelExportVo> getUserCommunityExcelExport(String areaCode); /** * 查看是否是社区物业人员 + * * @param userId * @param userCommunityId * @return @@ -223,6 +225,7 @@ /** * 查看是否社工 + * * @param phone * @param communityId * @return @@ -231,6 +234,7 @@ /** * 查看是否社会组织 + * * @param userId * @return */ @@ -239,6 +243,7 @@ /** * 查看是否是微团队成员 + * * @param phone * @param userCommunityId * @return @@ -247,6 +252,7 @@ /** * 查询街道信息 + * * @param streetId * @return */ @@ -254,6 +260,7 @@ /** * 查询是否是社会组织成员 + * * @param userId * @return */ @@ -261,6 +268,7 @@ /** * 查询是否社会组织联系人 + * * @param phone * @return */ @@ -268,21 +276,25 @@ /** * 查询是否人大代表 + * * @param phone * @param userCommunityId * @return */ int selectCountDpc(@Param("phone") String phone, @Param("userCommunityId") Long userCommunityId); + /** * 查看是否网格员 + * * @param phone * @param userCommunityId * @return */ - int countEasyPhotoMember(@Param("phone") String phone,@Param("communityId") Long userCommunityId); + int countEasyPhotoMember(@Param("phone") String phone, @Param("communityId") Long userCommunityId); /** * 查询防疫工作人员信息 + * * @param phone * @return */ @@ -290,6 +302,7 @@ /** * 查询单位管理员 + * * @param phone * @return */ @@ -297,6 +310,7 @@ /** * 查询报道单位id + * * @param phone * @return */ @@ -304,6 +318,7 @@ /** * 根据社区名称查询区县社区联动关系 + * * @param relationName * @return */ @@ -311,6 +326,7 @@ /** * 根据街道id查询区域名称 + * * @param streetId * @return */ @@ -318,28 +334,32 @@ /** * 看板用户统计:用户占比统计 - * */ - List<UserProportion> userAnalysis(@Param("type") Integer type,@Param("range") String range,@Param("streetId") Long streetId,@Param("areaCode")Long areaCode,@Param("appId")String appId); + */ + List<UserProportion> userAnalysis(@Param("type") Integer type, @Param("range") String range, @Param("streetId") Long streetId, @Param("areaCode") Long areaCode, @Param("appId") String appId); /** * 统计区域实名用户数 - * */ - List<RealUser> realUserCount(@Param("type") Integer type,@Param("range") String range,@Param("streetId") Long streetId,@Param("areaCode")Long areaCode,@Param("appId")String appId); + */ + List<RealUser> realUserCount(@Param("type") Integer type, @Param("range") String range, @Param("streetId") Long streetId, @Param("areaCode") Long areaCode, @Param("appId") String appId); /** * 统计该街道内的所有用户数 - * */ - Integer streetUserCount(@Param("id") Long id,@Param("areaCode")Long areaCode); + */ + Integer streetUserCount(@Param("id") Long id, @Param("areaCode") Long areaCode); /** * 街道用户统计 - * */ - IndexDataKanbanVO dataKanBanStreet(@Param("streetId") Long streetId,@Param("areaCode") Long areaCode,@Param("range") String range); + */ + IndexDataKanbanVO dataKanBanStreet(@Param("streetId") Long streetId, @Param("areaCode") Long areaCode, @Param("range") String range); /** * 获取当天的新增和日活 - * */ - Map<String,Long> getDailyAddAndActive(@Param("date") Date date, @Param("id") Long streetId, @Param("areaCode") Long areaCode, @Param("appId") String appId); + */ + Map<String, Long> getDailyAddAndActive(@Param("date") Date date, @Param("id") Long streetId, @Param("areaCode") Long areaCode, @Param("appId") String appId); + + Map<String, Long> getDailyAdd(@Param("createAt") String createAt, @Param("id") Long streetId, @Param("areaCode") Long areaCode, @Param("appId") String appId); + + Map<String, Long> getActive(@Param("lastLoginTime") String lastLoginTime, @Param("id") Long streetId, @Param("areaCode") Long areaCode, @Param("appId") String appId); List<StreetVOS> selectStreetByAreaCode(Integer code); @@ -354,17 +374,17 @@ /** * 获取本月的 - * */ - Integer getMonthUsers(@Param("streetId") Long streetId,@Param("areaCode") Long areaCode,@Param("range") String range,@Param("appId")String appId); + */ + Integer getMonthUsers(@Param("streetId") Long streetId, @Param("areaCode") Long areaCode, @Param("range") String range, @Param("appId") String appId); /** * 获取街道下属村/社区 - * */ - List<CommunityVO> selectCommunityByStreetId(@Param("id") Long streetId,@Param("type") Integer type); + */ + List<CommunityVO> selectCommunityByStreetId(@Param("id") Long streetId, @Param("type") Integer type); /** * 获取账户id - * */ + */ List<Integer> selectIdsByAccount(@Param("array") String[] streetList); List<CommunityVO> selectCommunityByStreetName(String name); diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java index dabbc24..1897a3e 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java @@ -141,13 +141,17 @@ // String encode = new BCryptPasswordEncoder().encode("lbsq123456"); // System.out.println(encode); - List<String> dates = new ArrayList<>(); +// List<String> dates = new ArrayList<>(); +// Date date = new Date(); +// for (int i = 19; i >= 0; i--) { +// Date date1 = DateUtils.addDays(date, -i); +// dates.add(DateFormatUtils.format(date1, "MM-dd")); +// } +// System.out.println(dates); + Date date = new Date(); - for (int i = 19; i >= 0; i--) { - Date date1 = DateUtils.addDays(date, -i); - dates.add(DateFormatUtils.format(date1, "MM-dd")); - } - System.out.println(dates); + Long offset = DateUtil.between(new Date(), DateUtil.beginOfMonth(date), DateUnit.DAY); + System.out.println(offset); // BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); // boolean matches = encoder.matches("admin1234567", encode); @@ -3180,7 +3184,7 @@ } else if ("wx98d62711dfbd8425".equals(uuLoginVO.getAppid())) { appId = "10001"; secret = "d89f3a35931c386956c1a402a8e09941"; - }else { + } else { return R.fail("appid未传"); } uuLoginVO.setAppid(appId); @@ -3193,7 +3197,7 @@ } Map<String, String> headerMap = new HashMap<>(); headerMap.put("appid", appId); - String resultJson = HttpClientUtil.get("https://api.uucsh.cn/member/wx/get-access?province=" + uuLoginVO.getProvince() + "&city=" + uuLoginVO.getCity() + "&area=" + uuLoginVO.getArea() + "&appid="+appId+"×tamp=" + uuLoginVO.getTimestamp() + "&sign=" + uuLoginVO.getSign() + "&mobile=" + uuLoginVO.getMobile() + "&couponId=" + uuLoginVO.getCouponId(), headerMap, null); + String resultJson = HttpClientUtil.get("https://api.uucsh.cn/member/wx/get-access?province=" + uuLoginVO.getProvince() + "&city=" + uuLoginVO.getCity() + "&area=" + uuLoginVO.getArea() + "&appid=" + appId + "×tamp=" + uuLoginVO.getTimestamp() + "&sign=" + uuLoginVO.getSign() + "&mobile=" + uuLoginVO.getMobile() + "&couponId=" + uuLoginVO.getCouponId(), headerMap, null); JSONObject result = JSON.parseObject(resultJson); if (result.get("status").equals(1)) { return R.ok(result.get("data")); @@ -3420,25 +3424,56 @@ return R.ok(realUserVO); } +// @Override +// public R userActivity(Integer type, Long streetId, Long areaCode, Integer range, String appId) { +// UserActivityAnalysisVO vo = new UserActivityAnalysisVO(); +// List<Date> activeX = getTwentyDays(); +// List<String> activeY = new ArrayList<>(); +// List<String> adY = new ArrayList<>(); +// if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)) { +// if (range.equals(1)) { +// //本月数据 +// activeX = getMonthTwentyDays(); +// } +// } +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); +// for (Date date : activeX) { +// Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId, areaCode, appId); +// adY.add(map.get("addUser").toString()); +// activeY.add(map.get("activeUser").toString()); +// } +// vo.setUserX(getMAndD(activeX)); +// vo.setAddUserY(adY); +// vo.setActiveUserY(activeY); +// return R.ok(vo); +// } + @Override public R userActivity(Integer type, Long streetId, Long areaCode, Integer range, String appId) { UserActivityAnalysisVO vo = new UserActivityAnalysisVO(); - List<Date> activeX = getTwentyDays(); + String activeX = com.panzhihua.common.utlis.DateUtils.getTwentyDay(); + List<Date> activeDate = getTwentyDays(); List<String> activeY = new ArrayList<>(); List<String> adY = new ArrayList<>(); if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)) { if (range.equals(1)) { //本月数据 - activeX = getMonthTwentyDays(); + activeX = com.panzhihua.common.utlis.DateUtils.getMonthTwentyDay(); + activeDate = getMonthTwentyDays(); } } - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - for (Date date : activeX) { - Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId, areaCode, appId); - adY.add(map.get("addUser").toString()); - activeY.add(map.get("activeUser").toString()); + + //获取最近活跃人数 + Map<String, Long> active = userDao.getActive(activeX, streetId, areaCode, appId); + //获取最近注册人数 + Map<String, Long> dailyAdd = userDao.getDailyAdd(activeX, streetId, areaCode, appId); + for (Date date : activeDate) { + String dateStr = DateUtil.format(date, "yyyy-MM-dd"); + activeY.add(active.containsKey(dateStr) ? active.get("activeUser").toString() : "0"); + adY.add(dailyAdd.containsKey(dateStr) ? dailyAdd.get("addUser").toString() : "0"); + } - vo.setUserX(getMAndD(activeX)); + vo.setUserX(getMAndD(activeDate)); vo.setAddUserY(adY); vo.setActiveUserY(activeY); return R.ok(vo); @@ -3683,6 +3718,7 @@ return dates; } + /** * 获取最近本月20天数据 * diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/resources/mapper/UserDao.xml b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/resources/mapper/UserDao.xml index d28d4ed..bc8d554 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/resources/mapper/UserDao.xml +++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/resources/mapper/UserDao.xml @@ -709,6 +709,45 @@ </if> </select> + <select id="getDailyAdd" resultType="java.util.Map"> + SELECT DATE_FORMAT( su.create_at, '%Y-%m-%d' ) as createAt ,count(su.user_id) as addUser FROM + sys_user AS su + LEFT JOIN com_act AS ac ON su.community_id = ac.community_id + LEFT JOIN com_street AS cs ON ac.street_id = cs.street_id + where su.community_id<>'' + and cs.area_code<>'' + and su.type = 1 + <if test="appId != null and appId != """> + and su.app_id = #{appId} + </if> + <if test="id != null"> + and cs.street_id=#{id} + </if> + <if test="areaCode != null"> + and cs.area_code=#{areaCode} + </if> + AND su.create_at > #{createAt} GROUP BY createAt + </select> + <select id="getActive" resultType="java.util.Map"> + SELECT DATE_FORMAT( su.last_login_time, '%Y-%m-%d' ) as createAt ,count(su.user_id) as activeUser FROM + sys_user AS su + LEFT JOIN com_act AS ac ON su.community_id = ac.community_id + LEFT JOIN com_street AS cs ON ac.street_id = cs.street_id + where su.community_id<>'' + and cs.area_code<>'' + and su.type = 1 + <if test="appId != null and appId != """> + and su.app_id = #{appId} + </if> + <if test="id != null"> + and cs.street_id=#{id} + </if> + <if test="areaCode != null"> + and cs.area_code=#{areaCode} + </if> + AND su.last_login_time > #{lastLoginTime} GROUP BY createAt + </select> + <select id="selectStreetByAreaCode" resultType="com.panzhihua.common.model.vos.user.StreetVOS"> select street_id as id,name as name from com_street where area_code=#{code} and app_id ='wx118de8a734d269f0' </select> -- Gitblit v1.7.1