From 5f5ed6db2a76e626b8d11d60a09db22b238388a0 Mon Sep 17 00:00:00 2001 From: 张天森 <1292933220@qq.com> Date: 星期五, 08 七月 2022 14:37:48 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/huacheng_zts' into huacheng_test --- springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java | 231 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 217 insertions(+), 14 deletions(-) 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 5794e7f..b107f57 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 @@ -4,12 +4,18 @@ import static java.util.Objects.nonNull; import static org.apache.commons.lang3.StringUtils.isNotBlank; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import javax.annotation.Resource; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.panzhihua.common.model.dtos.community.microCommercialStreet.BindUserPhoneDTO; @@ -146,6 +152,11 @@ private SysAppConfigDao sysAppConfigDao; @Resource private SysTemplateConfigDao sysTemplateConfigDao; + public static final Integer ALLCOUNTY=1; + public static final Integer ALLSTREET=2; + public static final Integer ALLCOMMUNITY=3; + public static final Integer BYSTREET=4; + // @Resource // private GridService gridService; @@ -250,17 +261,20 @@ */ @Override public R updateUserWeiXinPhone(Long userId, String purePhoneNumber) { - SysUserDO sysUserDO = new SysUserDO(); - sysUserDO.setPhone(purePhoneNumber); - sysUserDO.setUserId(userId); - userDao.updateMemberRole(purePhoneNumber, purePhoneNumber); - userDao.updateServiceTeam(purePhoneNumber, purePhoneNumber); - int i = userDao.updateById(sysUserDO); - if (i > 0) { - return R.ok(purePhoneNumber); - } else { - return R.fail("维护微信手机号失败"); + SysUserDO sysUserDO=userDao.selectById(userId); + if(sysUserDO!=null){ + userDao.updateMemberRole(purePhoneNumber, sysUserDO.getPhone()); + userDao.updateServiceTeam(purePhoneNumber, sysUserDO.getPhone()); + sysUserDO.setPhone(purePhoneNumber); + sysUserDO.setUserId(userId); + int i = userDao.updateById(sysUserDO); + if (i > 0) { + return R.ok(purePhoneNumber); + } else { + return R.fail("维护微信手机号失败"); + } } + return R.ok(sysUserDO.getPhone()); } /** @@ -407,6 +421,18 @@ loginUserInfoVO.setIsAcidMember(2); } loginUserInfoVO.setRelationName(acidMember.getRelationName()); + } + Integer count=userDao.selectOrgAdmin(phone); + if(count>0){ + loginUserInfoVO.setIsCheckUnitAdmin(1); + } + Long checkUnitId=userDao.selectCheckUnitId(phone); + if(checkUnitId!=null){ + loginUserInfoVO.setCheckUnitId(checkUnitId); + } + + else { + loginUserInfoVO.setIsCheckUnitAdmin(0); } //是否网格员 int easyPhotoMember = userDao.countEasyPhotoMember(phone, userCommunityId); @@ -2162,9 +2188,9 @@ @Override public R getSysUserVOByPhone(String phone) { SysUserDO sysUserDO = userDao - .selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1)); + .selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone, phone).eq(SysUserDO::getType, 1).orderByDesc(SysUserDO::getCreateAt).last("limit 1")); if (ObjectUtils.isEmpty(sysUserDO)) { - return R.fail("用户不存在"); + return R.fail("账号或密码错误"); } SysUserVO sysUserVO = new SysUserVO(); BeanUtils.copyProperties(sysUserDO, sysUserVO); @@ -2199,7 +2225,7 @@ query.eq(SysUserDO::getType, type); SysUserDO sysUserDO = userDao.selectOne(query); if (ObjectUtils.isEmpty(sysUserDO)) { - return R.fail("用户不存在"); + return R.fail("账号或密码错误"); } SysUserVO sysUserVO = new SysUserVO(); BeanUtils.copyProperties(sysUserDO, sysUserVO); @@ -2972,7 +2998,7 @@ public R getUserInfoByUnionId(String unionId) { SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getUnionid, unionId)); if (isNull(sysUserDO)) { - return R.fail("用户不存在"); + return R.fail("账号或密码错误"); } LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO(); BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); @@ -3273,4 +3299,181 @@ } return R.fail("信息错误"); } + + @Override + public R checkExport(String account, String password,String oldPassword) { + if(new BCryptPasswordEncoder().matches(password, oldPassword)){ + return R.ok(); + } + return R.fail(); + } + + @Override + public R newIndexData(Integer type, Long streetId) { + IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(null); + IndexDataAnalysisVO vo=new IndexDataAnalysisVO(); + if (ObjectUtils.isEmpty(type)){ + //不传默认为所有区县 + type=ALLCOUNTY; + } + if (type.equals(ALLCOUNTY) || type.equals(ALLCOMMUNITY) || type.equals(ALLSTREET)){ + BeanUtils.copyProperties(indexDataKanbanVO,vo); + }else { + IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId); + BeanUtils.copyProperties(indexDataVO,vo); + } + List<UserProportion> userProportionsTotal = userDao.userAnalysis(type, null, streetId); + Integer streetUser = userDao.streetUserCount(streetId); + for (UserProportion userProportion : userProportionsTotal) { + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){ + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion.getUser())){ + //计算占比 + //userProportion.setAreaCode(null); + if (type.equals(BYSTREET)){ + userProportion.setRate(getRate(streetUser,userProportion.getUser())); + } + userProportion.setRate(getRate(vo.getAllUser(),userProportion.getUser())); + } + } + } + List<UserProportion> userProportionsMonth = userDao.userAnalysis(type, DateUtil.beginOfMonth(new Date()).toString(), streetId); + for (UserProportion userProportion : userProportionsMonth) { + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){ + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion.getUser())){ + //计算占比 + //userProportion.setAreaCode(null); + if (type.equals(BYSTREET)){ + userProportion.setRate(getRate(streetUser,userProportion.getUser())); + } + userProportion.setRate(getRate(vo.getAllUser(),userProportion.getUser())); + } + } + } + vo.setUserProportionTotal(userProportionsTotal); + vo.setUserProportionMonth(userProportionsMonth); + List<RealUser> realUsersTotal = userDao.realUserCount(type, null, streetId); + List<RealUser> realUsersMonth = userDao.realUserCount(type, DateUtil.beginOfMonth(new Date()).toString(), streetId); + vo.setRealUsersTotal(realUsersTotal); + vo.setRealUsersMonth(realUsersMonth); + vo.setRealUser(getStreetRealUser(realUsersTotal)); + vo.setRealUserRate(getRate(vo.getAllUser(),vo.getRealUser())); + vo.setUserActivityXAll(getTwentyDays()); + vo.setUserActivityXMonth(getMonthTwentyDays()); + List<String> addUserYAll=new ArrayList<>(); + List<String> addUserYMonth=new ArrayList<>(); + List<String> activeUserYAll=new ArrayList<>(); + List<String> activeUserYMonth=new ArrayList<>(); + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); + //获取用户行为Y轴 + for (Date date : vo.getUserActivityXAll()) { + //查询当天的新增和日活 + Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId); + addUserYAll.add(map.get("addUser").toString()); + activeUserYAll.add(map.get("activeUser").toString()); + } + for (Date date : vo.getUserActivityXMonth()) { + Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId); + addUserYMonth.add(map.get("addUser").toString()); + activeUserYMonth.add(map.get("activeUser").toString()); + } + vo.setAddUserYAll(addUserYAll); + vo.setAddUserYWeek(addUserYMonth); + vo.setActiveUserYAll(activeUserYAll); + vo.setActiveUserYMonth(activeUserYMonth); + if (type.equals(BYSTREET) || type.equals(ALLCOMMUNITY) || type.equals(ALLSTREET)){ + //获取其他用户 + vo.setOtherUser(indexDataKanbanVO.getAllUser()-countUser(vo.getUserProportionTotal())); + vo.setOtherUserRate(getRate(indexDataKanbanVO.getAllUser(),vo.getOtherUser())); + } + return R.ok(vo); + } + + /** + * 获取最近20天数据 + * + * @return + */ + private List<Date> getTwentyDays() { + List<Date> dates = new ArrayList<>(); + Date date = new Date(); + for (int i = 19; i >= 0; i--) { + Date date1 = DateUtils.addDays(date, -i); + dates.add(date1); + } + return dates; + } + + /** + * 获取最近本月20天数据 + * + * @return + */ + private List<Date> getMonthTwentyDays() { + List<Date> dates = new ArrayList<>(); + Date date = new Date(); + Long offset = DateUtil.between(new Date(), DateUtil.beginOfMonth(date), DateUnit.DAY); + if (offset>=20){ + for (int i = 19; i >= 0; i--) { + Date date1 = DateUtils.addDays(date, -i); + dates.add(date1); + } + }else{ + //距离月初不足20天 + for (int i = offset.intValue(); i >= 0; i--) { + Date date1 = DateUtils.addDays(date, -i); + dates.add(date1); + } + } + return dates; + } + + + /** + * 计算占比 + * */ + private Double getRate(Integer total,Integer count){ + if (0 != total && null != total){ + if (0 != count && null != count){ + BigDecimal div = NumberUtil.div(count.toString(), total.toString(),2); + return div.doubleValue(); + } + } + return null; + } + + /** + * 计算街道实名用户总数 + * */ + private Integer getStreetRealUser(List<RealUser> list){ + Integer count=0; + if (list.size()>0){ + for (RealUser realUser : list) { + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUser)){ + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUser.getCount())){ + count+=realUser.getCount(); + } + } + } + + } + return count; + } + + /** + * 计算当前统计范围内的所有用户数 + * */ + public Integer countUser(List<UserProportion> list){ + Integer count=0; + if (list.size()>0){ + for (UserProportion proportion : list) { + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(proportion)){ + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(proportion.getUser())){ + count+=proportion.getUser(); + } + } + } + } + return count; + } + } -- Gitblit v1.7.1