diff --git a/esua-epdc/epdc-admin/epdc-admin-server/pom.xml b/esua-epdc/epdc-admin/epdc-admin-server/pom.xml index 8ffa0860c..62661b3f0 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/pom.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/pom.xml @@ -138,6 +138,9 @@ wx29b074840ef4bfd9 4adb1afccc69f205cdf5b521d74e2aca + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -161,6 +164,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -187,6 +193,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -214,6 +223,9 @@ wxddb240334d09049f 071b8c70da0d0482aaf79052e64f83bc + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -257,6 +269,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/application.yml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/application.yml index e0e6d34a1..ecd16eb5a 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/application.yml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/application.yml @@ -80,11 +80,18 @@ wx: token: #微信小程序消息服务器配置的token aesKey: #微信小程序消息服务器配置的EncodingAESKey msgDataFormat: JSON + - appid: @analysis.wx.ma.appId@ + secret: @analysis.wx.ma.secret@ + token: #微信小程序消息服务器配置的token + aesKey: #微信小程序消息服务器配置的EncodingAESKey + msgDataFormat: JSON appId: # 普通居民端的appId normal: @wx.ma.appId@ # 工作端的appId work: @work.wx.ma.appId@ + # 数据分析端的appId + analysis: @analysis.wx.ma.appId@ feign: diff --git a/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/utils/WxMaServiceUtils.java b/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/utils/WxMaServiceUtils.java index dafd82d00..a58ef3edf 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/utils/WxMaServiceUtils.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools-wx-ma/src/main/java/com/elink/esua/epdc/utils/WxMaServiceUtils.java @@ -20,6 +20,9 @@ public class WxMaServiceUtils { @Value("${wx.ma.appId.work}") private String APPID_WORK; + @Value("${wx.ma.appId.analysis}") + private String APPID_ANALYSIS; + /** * 获取党群e家 普通居民端配置 * @@ -43,4 +46,18 @@ public class WxMaServiceUtils { final WxMaService wxMaService = WxMaConfig.getMaService(APPID_WORK); return wxMaService; } + + /** + * + * 获取党群e家 数据分析端配置 + * + * @params [] + * @return cn.binarywang.wx.miniapp.api.WxMaService + * @author liuchuang + * @since 2020/2/12 10:44 + */ + public final WxMaService analysisWxMaService() { + final WxMaService wxMaService = WxMaConfig.getMaService(APPID_ANALYSIS); + return wxMaService; + } } diff --git a/esua-epdc/epdc-gateway/src/main/resources/application.yml b/esua-epdc/epdc-gateway/src/main/resources/application.yml index d2aed4bf1..dd39b39a7 100644 --- a/esua-epdc/epdc-gateway/src/main/resources/application.yml +++ b/esua-epdc/epdc-gateway/src/main/resources/application.yml @@ -228,6 +228,8 @@ renren: workLoginUrls: - /api/work/user/getToken #工作端-获取token - /api/work/user/login #工作端-登录 + - /api/analysis/user/getToken #数据分析端-获取token + - /api/analysis/user/login #数据分析端-登录 - /api/work/*/swagger/** workUrls: - /api/work/** #工作端接口 diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/form/UserCountDTO.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/form/UserCountDTO.java index ea322bef9..f47fd38a8 100644 --- a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/form/UserCountDTO.java +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/form/UserCountDTO.java @@ -2,8 +2,6 @@ package com.elink.esua.epdc.dto.user.form; import lombok.Data; -import javax.validation.constraints.NotNull; - /** * @program: esua-epdc-cloud * @description: 用户数据统计/网格开通数量 @@ -17,7 +15,6 @@ public class UserCountDTO{ /** * 部门id */ - @NotNull(message = "部门id不能为空") private String deptId; } diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/result/GridOpeningResultDTO.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/result/GridOpeningResultDTO.java index 458640970..6f60d3e8e 100644 --- a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/result/GridOpeningResultDTO.java +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-client/src/main/java/com/elink/esua/epdc/dto/user/result/GridOpeningResultDTO.java @@ -6,15 +6,17 @@ import lombok.Data; import java.io.Serializable; /** - * @author: qushutong - * @Date: 2020/2/11 13:09 - * @Description: 开通网格情况 + * @author: qushutong + * @Date: 2020/2/11 13:09 + * @Description: 开通网格情况 */ @Data public class GridOpeningResultDTO implements Serializable { private static final long serialVersionUID = -852226852590425991L; + private String gridId; + /** * 街道社区网格 */ @@ -22,56 +24,65 @@ public class GridOpeningResultDTO implements Serializable { /** * 用户注册数 */ - private String registerCount; + private Integer registerCount; + /** + * 认证居民 + */ + private Integer residentCount; /** - * 党员注册数 + * 认证党员数 */ - private String partyCount; + private Integer partyCount; /** * 居民扫码数 */ - private String ewmCount; + private Integer ewmCount; /** * 新闻数 */ - private String newsCount; + private Integer newsCount; /** * 通知数 */ - private String noticeCount; + private Integer noticeCount; /** * 议题数 */ - private String eventCount; + private Integer eventCount; /** * 项目数 */ - private String itemCount; + private Integer itemCount; /** * 项目结案数 */ - private String itemCloseCount; + private Integer itemCloseCount; /** * 社群数 */ - private String communityCount; + private Integer communityCount; /** * 社群成员数 */ - private String communityMemberCount; + private Integer communityMemberCount; /** * 社群话题数 */ - private String communityTopicCount; + private Integer communityTopicCount; + + /** + * 网格长姓名 + */ + private String gridLeader; } diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/excel/PartyAnalysExcel.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/excel/PartyAnalysExcel.java new file mode 100644 index 000000000..11ca7c67f --- /dev/null +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/excel/PartyAnalysExcel.java @@ -0,0 +1,52 @@ +package com.elink.esua.epdc.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author: qushutong + * @Date: 2020/2/12 14:24 + * @Description: 注册用户分析 + */ +@Data +public class PartyAnalysExcel { + @Excel(name = "街道名称") + private String streetName; + + @Excel(name = "注册用户数") + private Integer userCount; + + @Excel(name = "注册党员数") + private Integer partyMemberCount; + + @Excel(name = "注册居民数") + private Integer residentCount; + + @Excel(name = "男") + private Integer maleCount; + + @Excel(name = "女") + private Integer femaleCount; + + @Excel(name = "其他") + private Integer unknownSexCount; + + @Excel(name = "超过50岁用户数量") + private Integer oldCount; + + @Excel(name = "老龄化比例") + private BigDecimal oldPercent; + + @Excel(name = "50岁以下用户数量") + private Integer youngCount; + + @Excel(name = "年轻化比例") + private BigDecimal youngPercent; + + @Excel(name = "党员认证失败数") + private Integer partyAuthFailureCount; + + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/excel/RegisterExcel.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/excel/RegisterExcel.java new file mode 100644 index 000000000..b6ff4556a --- /dev/null +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/excel/RegisterExcel.java @@ -0,0 +1,50 @@ +package com.elink.esua.epdc.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author: qushutong + * @Date: 2020/2/12 14:24 + * @Description: 注册用户分析 + */ +@Data +public class RegisterExcel { + @Excel(name = "街道名称") + private String streetName; + + @Excel(name = "注册用户数") + private Integer userCount; + + @Excel(name = "注册党员数") + private Integer partyMemberCount; + + @Excel(name = "注册居民数") + private Integer residentCount; + + @Excel(name = "男") + private Integer maleCount; + + @Excel(name = "女") + private Integer femaleCount; + + @Excel(name = "其他") + private Integer unknownSexCount; + + @Excel(name = "超过50岁用户数量") + private Integer oldCount; + + @Excel(name = "老龄化比例") + private BigDecimal oldPercent; + + @Excel(name = "50岁以下用户数量") + private Integer youngCount; + + @Excel(name = "年轻化比例") + private BigDecimal youngPercent; + + +} \ No newline at end of file diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/controller/UserAnalysisController.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/controller/UserAnalysisController.java index ed1283e6e..208b5ef31 100644 --- a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/controller/UserAnalysisController.java +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/controller/UserAnalysisController.java @@ -1,6 +1,7 @@ package com.elink.esua.epdc.modules.user.controller; import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.utils.ExcelUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; @@ -20,20 +21,13 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.excel.PartyAnalysExcel; +import com.elink.esua.epdc.excel.RegisterExcel; import com.elink.esua.epdc.modules.user.service.UserAnalysisService; -import com.elink.esua.epdc.modules.user.service.YoungMemberRankService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - import java.util.List; import java.util.Map; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; +import javax.servlet.http.HttpServletResponse; /** * 数据端,用户数据分析相关接口 @@ -144,4 +138,32 @@ public class UserAnalysisController { ValidatorUtils.validateEntity(formDto); return userAnalysisService.getGridStatistics(formDto); } + /*** + * 注册用户总数排名分析导出 + * @param params + * @param response + * @return void + * @author qushutong + * @date 2020/2/12 14:38 + */ + @GetMapping("export/register") + public void exportRegister(@RequestParam Map params, HttpServletResponse response) throws Exception { + PageData pageData = userAnalysisService.pageUserDataRank(params); + ExcelUtils.exportExcelToTarget(response, "注册用户总数排名分析", pageData.getList(), RegisterExcel.class); + } + + + /*** + * 党员排名分析导出 + * @param params + * @param response + * @return void + * @author qushutong + * @date 2020/2/12 14:38 + */ + @GetMapping("export/party") + public void exportParty(@RequestParam Map params, HttpServletResponse response) throws Exception { + PageData pageData = userAnalysisService.pageUserDataRank(params); + ExcelUtils.exportExcelToTarget(response, "党员排名分析", pageData.getList(), PartyAnalysExcel.class); + } } diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/dao/UserAnalysisDao.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/dao/UserAnalysisDao.java index 81e78f181..00372d225 100644 --- a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/dao/UserAnalysisDao.java +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/dao/UserAnalysisDao.java @@ -53,42 +53,42 @@ public interface UserAnalysisDao extends BaseMapper { /*** - * 新闻 - * @param + * 根据网格统计新闻发布数 + * @param params * @return java.util.List * @author qushutong * @date 2020/2/11 14:10 */ - List selectListNewsCount(); + List selectListNewsCount(Map params); /*** * 通知 - * @param + * @param params * @return java.util.List * @author qushutong * @date 2020/2/11 14:10 */ - List selectListNoticeCount(); + List selectListNoticeCount(Map params); /*** * 议题数 - * @param + * @param params * @return java.util.List * @author qushutong * @date 2020/2/11 14:10 */ - List selectListEventCount(); + List selectListEventCount(Map params); /*** - * 项目数 - * @param + * 项目数,项目结案数 + * @param params * @return java.util.List * @author qushutong * @date 2020/2/11 14:10 */ - List selectListItemCount(); + List selectListItemCount(Map params); /** * 查询用户数据排行 @@ -111,72 +111,62 @@ public interface UserAnalysisDao extends BaseMapper { List selectListPartyAuthFailureCountByStreetId(@Param("streetIdList") List streetIdList); /*** - * 项目结案数 - * @param - * @return java.util.List - * @author qushutong - * @date 2020/2/11 14:10 - */ - List selectListItemCloseCount(); - - - /*** - * 社群数 - * @param - * @return java.util.List - * @author qushutong - * @date 2020/2/11 14:10 - */ - List selectListCommunityCount(); - - - /*** - * 社群成员数 - * @param + * 社群数 社群成员数 社群话题数 + * @param params * @return java.util.List * @author qushutong * @date 2020/2/11 14:10 */ - List selectListCommunityMemberCount(); - + List selectListCommunityCount(Map params); - /*** - * 社群话题数 - * @param - * @return java.util.List - * @author qushutong - * @date 2020/2/11 14:10 - */ - List selectListCommunityTopicCount(); /** - *用户数据统计 + * 用户数据统计 * - * @author wangtong - * @date 2020/2/11 14:55 * @param [formDTO] * @return com.elink.esua.epdc.dto.user.result.UserAnalysisCountDTO + * @author wangtong + * @date 2020/2/11 14:55 */ UserAnalysisCountDTO getUserStatistics(UserCountDTO formDto, List deptIdList); /** - *网格数量统计 + * 网格数量统计 * - * @author wangtong - * @date 2020/2/11 14:55 * @param [formDTO] * @return com.elink.esua.epdc.dto.user.result.GriddingCountDTO + * @author wangtong + * @date 2020/2/11 14:55 */ GriddingCountDTO getGridStatistics(UserCountDTO formDto, List deptIdList); /** - * @Description 注册用户数排名 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @Description 注册用户数排名 * @Author lpf - * @Date 2020/2/11 + * @Date 2020/2/11 * @Param [formDto] - * @return com.elink.esua.epdc.commons.tools.utils.Result> **/ List userRegisterSort(UserSortRankFormDTO formDto, List deptIdList); + /** + * (未)开通网格列表,查询字段:网格的完整机构名称,网格id,网格长名称 + * + * @param params + * @return java.util.List + * @author work@yujt.net.cn + * @date 2020/2/12 13:27 + */ + List selectListGridHasMaCode(Map params); + + /** + * 根据网格id,查询网格内注册用户数,认证党员数,认证居民数 + * + * @param params + * @return java.util.List + * @author work@yujt.net.cn + * @date 2020/2/12 14:06 + */ + List selectListReigistData(Map params); } diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/service/impl/UserAnalysisServiceImpl.java b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/service/impl/UserAnalysisServiceImpl.java index c84df86c9..f8bdeaa75 100644 --- a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/service/impl/UserAnalysisServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/java/com/elink/esua/epdc/modules/user/service/impl/UserAnalysisServiceImpl.java @@ -42,46 +42,68 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl listPageGridOpening(Map params) { - // 注册数 - List registerCountList = baseDao.selectListReigistCount(); - // 党员数 - List partyCountList = baseDao.selectListPartyCount(); - // 居民扫码数 - List ewmCountList = baseDao.selectListEwmCount(); + IPage iPage = this.getPage(params); + List list = baseDao.selectListGridHasMaCode(params); + + PageData page = new PageData<>(list, iPage.getTotal()); + if (CollUtil.isEmpty(list)) { + return page; + } + List gridIdList = Lists.newArrayList(); + for (GridOpeningResultDTO gridOpeningResult : list) { + gridIdList.add(gridOpeningResult.getGridId()); + } + params.put("gridIdList", gridIdList); + // 注册数,认证党员数,认证居民数 + List registerDataList = baseDao.selectListReigistData(params); // 新闻数 - List newsCountList = baseDao.selectListNewsCount(); + List newsCountList = baseDao.selectListNewsCount(params); // 通知数 - List noticeCountList = baseDao.selectListNoticeCount(); + List noticeCountList = baseDao.selectListNoticeCount(params); // 议题数 - List eventCountList = baseDao.selectListEventCount(); - // 项目数 - List itemCountList = baseDao.selectListItemCount(); - // 结案数 - List itemCloseCountList = baseDao.selectListItemCloseCount(); - // 社群数 - List communityCountList = baseDao.selectListCommunityCount(); - // 社群成员数 - List communityMemberCountList = baseDao.selectListCommunityMemberCount(); - // 社群话题数 - List communityTopicCountList = baseDao.selectListCommunityTopicCount(); - GridOpeningResultDTO openingResultDto; - for (int i = 0; i < registerCountList.size(); i++) { - openingResultDto = registerCountList.get(i); - openingResultDto.setRegisterCount(registerCountList.get(i).getRegisterCount()); - openingResultDto.setPartyCount(partyCountList.get(i).getPartyCount()); - openingResultDto.setNewsCount(newsCountList.get(i).getNewsCount()); - openingResultDto.setNoticeCount(noticeCountList.get(i).getNoticeCount()); - openingResultDto.setEwmCount(ewmCountList.get(i).getEwmCount()); - openingResultDto.setEventCount(eventCountList.get(i).getEventCount()); - openingResultDto.setItemCount(itemCountList.get(i).getItemCount()); - openingResultDto.setItemCloseCount(itemCloseCountList.get(i).getItemCloseCount()); - openingResultDto.setCommunityCount(communityCountList.get(i).getCommunityCount()); - openingResultDto.setCommunityMemberCount(communityMemberCountList.get(i).getCommunityMemberCount()); - openingResultDto.setCommunityTopicCount(communityTopicCountList.get(i).getCommunityTopicCount()); - } + List eventCountList = baseDao.selectListEventCount(params); + // 项目数,项目结案数 + List itemCountList = baseDao.selectListItemCount(params); + // 社群数 社群成员数 社群话题数 + List communityCountList = baseDao.selectListCommunityCount(params); - IPage iPage = this.getPage(params); - return new PageData<>(registerCountList, iPage.getTotal()); + for (GridOpeningResultDTO resultDto : list) { + for (GridOpeningResultDTO registerData : registerDataList) { + if(resultDto.getGridId().equals(registerData.getGridId())){ + resultDto.setRegisterCount(registerData.getRegisterCount()); + resultDto.setPartyCount(registerData.getPartyCount()); + resultDto.setRegisterCount(registerData.getRegisterCount()); + } + } + for (GridOpeningResultDTO newsCountData : newsCountList) { + if(resultDto.getGridId().equals(newsCountData.getGridId())){ + resultDto.setNewsCount(newsCountData.getNewsCount()); + } + } + for (GridOpeningResultDTO noticeCounData : noticeCountList) { + if(resultDto.getGridId().equals(noticeCounData.getGridId())){ + resultDto.setNoticeCount(noticeCounData.getNoticeCount()); + } + } + for (GridOpeningResultDTO eventCountData : eventCountList) { + if(resultDto.getGridId().equals(eventCountData.getGridId())){ + resultDto.setEventCount(eventCountData.getEventCount()); + } + } + for (GridOpeningResultDTO itemCountData : itemCountList) { + if(resultDto.getGridId().equals(itemCountData.getGridId())){ + resultDto.setItemCloseCount(itemCountData.getItemCloseCount()); + } + } + for (GridOpeningResultDTO communityCountData : communityCountList) { + if(resultDto.getGridId().equals(communityCountData.getGridId())){ + resultDto.setCommunityCount(communityCountData.getCommunityCount()); + resultDto.setCommunityTopicCount(communityCountData.getCommunityTopicCount()); + resultDto.setCommunityMemberCount(communityCountData.getCommunityMemberCount()); + } + } + } + return page; } @Override @@ -130,12 +152,12 @@ public class UserAnalysisServiceImpl extends BaseServiceImpl data = baseDao.userRegisterSort(formDto, SecurityUser.getUser().getDeptIdList()); - return new Result>().ok(data); } + return new Result>().ok(data); + } } diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/OldMemberRankDao.xml b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/OldMemberRankDao.xml index 1748fa04a..b784d92a7 100644 --- a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/OldMemberRankDao.xml +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/OldMemberRankDao.xml @@ -40,8 +40,9 @@ FROM ( uu.DEL_FLAG = '0' AND uu.PARTY_FLAG = '1' AND ad.id IS NOT NULL - AND ad2.id != 1191534129122230274 - AND ad2.id = #{formDto.deptId} + + AND ad2.id = #{formDto.deptId} + AND ad2.id IN #{deptIdItem} diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml index 22a4f7b25..e180d330e 100644 --- a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/UserAnalysisDao.xml @@ -152,269 +152,84 @@ - - - - - - - - + + + diff --git a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/YoungMemberRankDao.xml b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/YoungMemberRankDao.xml index 61ef24947..c99d14b72 100644 --- a/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/YoungMemberRankDao.xml +++ b/esua-epdc/epdc-module/epdc-analysis/epdc-analysis-server/src/main/resources/mapper/user/YoungMemberRankDao.xml @@ -40,8 +40,9 @@ FROM ( uu.DEL_FLAG = '0' AND uu.PARTY_FLAG = '1' AND ad.id IS NOT NULL - AND ad2.id != 1191534129122230274 - AND ad2.id = #{formDto.deptId} + + AND ad2.id = #{formDto.deptId} + AND ad2.id IN #{deptIdItem} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml index 6f6ae2874..bd24f1d4f 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/pom.xml @@ -182,6 +182,9 @@ wx29b074840ef4bfd9 4adb1afccc69f205cdf5b521d74e2aca + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -221,6 +224,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -256,6 +262,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -291,6 +300,9 @@ wxddb240334d09049f 071b8c70da0d0482aaf79052e64f83bc + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -330,6 +342,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java index 3d25861ae..a4958a417 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiAnalysisUserController.java @@ -1,8 +1,12 @@ package com.elink.esua.epdc.controller; import com.elink.esua.epdc.common.token.dto.TokenDto; +import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; +import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; import com.elink.esua.epdc.commons.tools.annotation.LoginUser; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.dto.form.EpdcWorkAppUserMaTokenFormDTO; import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; import com.elink.esua.epdc.dto.user.form.UserSortRankFormDTO; import com.elink.esua.epdc.dto.user.form.UserCountDTO; @@ -11,9 +15,7 @@ import com.elink.esua.epdc.dto.user.result.UserSortRankResultDTO; import com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO; import com.elink.esua.epdc.service.AnalysisUserService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -42,6 +44,36 @@ public class ApiAnalysisUserController { return analysisUserService.test(); } + /** + * + * 数据分析端-用户登录 + * + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/2/12 10:57 + */ + @PostMapping("login") + public Result login(@RequestBody WorkUserLoginDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return analysisUserService.login(formDto); + } + + /** + * + * 数据分析端-获取token + * + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/2/12 10:58 + */ + @GetMapping("getToken") + public Result getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + return analysisUserService.getMaToken(formDto); + } + @GetMapping("/partyMemberOldSort") public Result> listOldMemberRankByDeptId(MemberRankFormDTO formDto) { return analysisUserService.listOldMemberRankByDeptId(formDto); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java index 27f4bcf51..2b4500a1c 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/AnalysisUserService.java @@ -1,6 +1,9 @@ package com.elink.esua.epdc.service; +import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; +import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.form.EpdcWorkAppUserMaTokenFormDTO; import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; import com.elink.esua.epdc.dto.user.form.UserSortRankFormDTO; import com.elink.esua.epdc.dto.user.form.UserCountDTO; @@ -25,6 +28,29 @@ public interface AnalysisUserService { * @Date: 2019/11/19 16:37 */ Result test(); + + /** + * + * 数据分析端-用户登录 + * + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/2/12 10:59 + */ + Result login(WorkUserLoginDTO formDto); + + /** + * + * 数据分析端-获取token + * + * @params [formDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2020/2/12 11:00 + */ + Result getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto); + /** * @Description 获取党员老龄化排名列表 * @Author songyunpeng diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java index 79dbafab2..8973486d1 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/AnalysisUserServiceImpl.java @@ -1,15 +1,29 @@ package com.elink.esua.epdc.service.impl; +import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; +import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; +import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; +import com.elink.esua.epdc.common.token.dto.WorkUserTokenFormDTO; +import com.elink.esua.epdc.commons.tools.constant.NumConstant; +import com.elink.esua.epdc.commons.tools.exception.RenException; +import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.SysUserDTO; +import com.elink.esua.epdc.dto.form.EpdcWorkAppUserMaTokenFormDTO; import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO; import com.elink.esua.epdc.dto.user.form.UserCountDTO; import com.elink.esua.epdc.dto.user.form.UserSortRankFormDTO; import com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO; import com.elink.esua.epdc.dto.user.result.UserSortRankResultDTO; import com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO; +import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.feign.AnalysisUserFeignClient; +import com.elink.esua.epdc.feign.ResourceFeignClient; import com.elink.esua.epdc.service.AnalysisUserService; +import com.elink.esua.epdc.utils.WxMaServiceUtils; +import me.chanjar.weixin.common.error.WxErrorException; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -26,13 +40,48 @@ public class AnalysisUserServiceImpl implements AnalysisUserService { @Autowired private AnalysisUserFeignClient analysisUserFeignClient; + @Autowired + private WxMaServiceUtils wxMaServiceUtils; + + @Autowired + private ResourceFeignClient resourceFeignClient; + @Autowired + private AdminFeignClient adminFeignClient; @Override public Result test() { return analysisUserFeignClient.test(); } + @Override + public Result login(WorkUserLoginDTO formDto) { + // 获取openId + String openId = this.getWxMaUser(formDto.getWxCode()).getOpenid(); + formDto.setOpenId(openId); + return resourceFeignClient.workLogin(formDto); + } + + @Override + public Result getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto) { + // 获取openId + String openId = this.getWxMaUser(formDto.getWxCode()).getOpenid(); + + // 检查当前微信是否已绑定账户 + Result sysUserDtoResult = adminFeignClient.getSysUserInfoByOpenId(openId); + if (!sysUserDtoResult.success()) { + return new Result().error(sysUserDtoResult.getMsg()); + } + SysUserDTO userDto = sysUserDtoResult.getData(); + if (null == userDto) { + WorkUserAuthorizationDTO resultDto = new WorkUserAuthorizationDTO(); + resultDto.setRegisterState(NumConstant.ZERO_STR); + return new Result().ok(resultDto); + } + + return resourceFeignClient.getToken(ConvertUtils.sourceToTarget(userDto, WorkUserTokenFormDTO.class)); + } + @Override public Result> listOldMemberRankByDeptId( MemberRankFormDTO formDto) { return analysisUserFeignClient.listOldMemberRankByDeptId(formDto); @@ -59,4 +108,28 @@ public class AnalysisUserServiceImpl implements AnalysisUserService { return analysisUserFeignClient.getGridStatistics(formDto); } + + /** + * + * 解析微信code获取小程序用户信息 + * + * @params [wxCode] + * @return cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult + * @author liuchuang + * @since 2020/2/12 13:20 + */ + private WxMaJscode2SessionResult getWxMaUser(String wxCode) { + WxMaJscode2SessionResult wxMaJscode2SessionResult = null; + try { + wxMaJscode2SessionResult = wxMaServiceUtils.analysisWxMaService().jsCode2SessionInfo(wxCode); + } catch (WxErrorException e) { + e.printStackTrace(); + } + if (null == wxMaJscode2SessionResult) { + throw new RenException("解析微信用户信息失败"); + } else if (StringUtils.isBlank(wxMaJscode2SessionResult.getOpenid())) { + throw new RenException("获取微信openid失败"); + } + return wxMaJscode2SessionResult; + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml index 0a30aed3b..ed9eacc37 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml @@ -113,11 +113,18 @@ wx: token: #微信小程序消息服务器配置的token aesKey: #微信小程序消息服务器配置的EncodingAESKey msgDataFormat: JSON + - appid: @analysis.wx.ma.appId@ + secret: @analysis.wx.ma.secret@ + token: #微信小程序消息服务器配置的token + aesKey: #微信小程序消息服务器配置的EncodingAESKey + msgDataFormat: JSON appId: # 普通居民端的appId normal: @wx.ma.appId@ # 工作端的appId work: @work.wx.ma.appId@ + # 数据分析端的appId + analysis: @analysis.wx.ma.appId@ diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/pom.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/pom.xml index 571ba13ef..cfc92acc1 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/pom.xml @@ -164,6 +164,9 @@ wx29b074840ef4bfd9 4adb1afccc69f205cdf5b521d74e2aca + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -200,6 +203,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -233,6 +239,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -266,6 +275,9 @@ wxddb240334d09049f 071b8c70da0d0482aaf79052e64f83bc + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc @@ -302,6 +314,9 @@ wx9f20a46906ab2c3e dc13065f79429979d9f687d249eb5c4e + + wx9b6102a8ee5add65 + 394f47d4e08fc0fd629231d3f68a34dc diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/application.yml index 0b47de4f7..28f416c29 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/application.yml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/application.yml @@ -100,8 +100,15 @@ wx: token: #微信小程序消息服务器配置的token aesKey: #微信小程序消息服务器配置的EncodingAESKey msgDataFormat: JSON + - appid: @analysis.wx.ma.appId@ + secret: @analysis.wx.ma.secret@ + token: #微信小程序消息服务器配置的token + aesKey: #微信小程序消息服务器配置的EncodingAESKey + msgDataFormat: JSON appId: # 普通居民端的appId normal: @wx.ma.appId@ # 工作端的appId work: @work.wx.ma.appId@ + # 数据分析端的appId + analysis: @analysis.wx.ma.appId@