From 7fc75c2aa55fe1b13ca9a89c23eea01d2d8942af Mon Sep 17 00:00:00 2001
From: tangxiaobao <303826152@qq.com>
Date: 星期二, 07 九月 2021 09:37:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/test' into txb

---
 springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java |  211 +++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 143 insertions(+), 68 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java
index a3b6b1e..baaf378 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/UserApi.java
@@ -1,36 +1,63 @@
 package com.panzhihua.applets.api;
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.panzhihua.applets.weixin.CheckService;
-import com.panzhihua.applets.model.dtos.ComPbMemberCertificationDTO;
-import com.panzhihua.common.model.dtos.user.SysUserEditTipsDTO;
-import com.panzhihua.common.model.dtos.user.SysUserFeedbackDTO;
-import com.panzhihua.common.model.vos.community.*;
-import com.panzhihua.common.model.vos.partybuilding.PartyBuildingMemberVO;
-import com.panzhihua.common.model.vos.user.*;
-import com.panzhihua.common.service.community.CommunityService;
-import com.panzhihua.common.service.partybuilding.PartyBuildingService;
-import com.panzhihua.common.service.user.UserService;
-import com.panzhihua.common.controller.BaseController;
-import com.panzhihua.common.model.vos.LoginUserInfoVO;
-import com.panzhihua.common.model.vos.R;
-import com.panzhihua.common.validated.AddGroup;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
-import org.springframework.util.ObjectUtils;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
+import java.util.Optional;
+import java.util.TreeSet;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import com.panzhihua.common.model.vos.community.ComActActEvaluateVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.util.ObjectUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.panzhihua.applets.model.dtos.ComPbMemberCertificationDTO;
+import com.panzhihua.applets.weixin.CheckService;
+import com.panzhihua.common.constants.SecurityConstants;
+import com.panzhihua.common.constants.UserConstants;
+import com.panzhihua.common.controller.BaseController;
+import com.panzhihua.common.model.dtos.user.SysUserEditTipsDTO;
+import com.panzhihua.common.model.dtos.user.SysUserFeedbackDTO;
+import com.panzhihua.common.model.vos.LoginUserInfoVO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActActRegistVO;
+import com.panzhihua.common.model.vos.community.ComActActivityVO;
+import com.panzhihua.common.model.vos.community.ComActEasyPhotoVO;
+import com.panzhihua.common.model.vos.community.ComActMicroWishVO;
+import com.panzhihua.common.model.vos.community.ComActVO;
+import com.panzhihua.common.model.vos.community.ComMngStructAreaVO;
+import com.panzhihua.common.model.vos.community.ComMngStructHouseVO;
+import com.panzhihua.common.model.vos.partybuilding.PartyBuildingMemberVO;
+import com.panzhihua.common.model.vos.user.ComMngFamilyInfoVO;
+import com.panzhihua.common.model.vos.user.SysUserNoticeVO;
+import com.panzhihua.common.model.vos.user.UpdateUserArchivesVO;
+import com.panzhihua.common.model.vos.user.UserArchivesVO;
+import com.panzhihua.common.model.vos.user.UserPhoneVO;
+import com.panzhihua.common.service.community.CommunityService;
+import com.panzhihua.common.service.partybuilding.PartyBuildingService;
+import com.panzhihua.common.service.user.UserService;
+import com.panzhihua.common.validated.AddGroup;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @program: springcloud_k8s_panzhihuazhihuishequ
@@ -51,6 +78,8 @@
     private PartyBuildingService partyBuildingService;
     @Resource
     private CheckService checkService;
+    @Resource
+    private StringRedisTemplate stringRedisTemplate;
 
     @ApiOperation(value = "当前登录用户信息", response = LoginUserInfoVO.class)
     @GetMapping("info")
@@ -64,14 +93,15 @@
         if (R.isOk(r)) {
             Object data = r.getData();
             if (!ObjectUtils.isEmpty(data)) {
-                LoginUserInfoVO loginUserInfoVO = (LoginUserInfoVO) data;
+                LoginUserInfoVO loginUserInfoVO = (LoginUserInfoVO)data;
                 R r1 = communityService.detailHouse(userId);
                 if (null != communityId && 0 != communityId) {
                     R r2 = communityService.detailCommunity(communityId);
                     if (R.isOk(r2)) {
                         Object data1 = r2.getData();
                         if (!ObjectUtils.isEmpty(data1)) {
-                            loginUserInfoVO.setComActVO(JSONObject.parseObject(JSONObject.toJSONString(data1), ComActVO.class));
+                            loginUserInfoVO
+                                .setComActVO(JSONObject.parseObject(JSONObject.toJSONString(data1), ComActVO.class));
                             r.setData(loginUserInfoVO);
                         }
                     }
@@ -81,7 +111,8 @@
                     if (R.isOk(r3)) {
                         Object data1 = r3.getData();
                         if (!ObjectUtils.isEmpty(data1)) {
-                            loginUserInfoVO.setComMngStructAreaVO(JSONObject.parseObject(JSONObject.toJSONString(data1), ComMngStructAreaVO.class));
+                            loginUserInfoVO.setComMngStructAreaVO(
+                                JSONObject.parseObject(JSONObject.toJSONString(data1), ComMngStructAreaVO.class));
                             r.setData(loginUserInfoVO);
                         }
                     }
@@ -89,7 +120,7 @@
                 if (R.isOk(r1)) {
                     Object data1 = r1.getData();
                     if (!ObjectUtils.isEmpty(data1)) {
-                        loginUserInfoVO.setComMngStructHouseVOS((List<ComMngStructHouseVO>) data1);
+                        loginUserInfoVO.setComMngStructHouseVOS((List<ComMngStructHouseVO>)data1);
                         r.setData(loginUserInfoVO);
                     }
                 }
@@ -105,7 +136,7 @@
         loginUserInfoVO.setUserId(userId);
         R r = userService.putUserAuthentication(loginUserInfoVO);
         if (R.isOk(r)) {
-            //通过发通知
+            // 通过发通知
             SysUserNoticeVO sysUserNoticeVO = new SysUserNoticeVO();
             sysUserNoticeVO.setUserId(userId);
             sysUserNoticeVO.setType(3);
@@ -118,21 +149,19 @@
             if (R.isOk(r1)) {
                 log.info("新增实名认证未通过通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
             }
+            // 清空缓存
+            String userRoleKey = UserConstants.LOGIN_USER_INFO + this.getLoginUserInfo().getUserId();
+            String userAppletRoleKey = SecurityConstants.ROLE_APPLETS_USER + this.getLoginUserInfo().getUserId();
+            stringRedisTemplate.delete(userRoleKey);
+            stringRedisTemplate.delete(userAppletRoleKey);
         } else {
-            //未通过发通知
+            // 未通过发通知
             /**
-             SysUserNoticeVO sysUserNoticeVO=new SysUserNoticeVO();
-             sysUserNoticeVO.setUserId(userId);
-             sysUserNoticeVO.setType(3);
-             sysUserNoticeVO.setTitle("实名制审核未通过");
-             sysUserNoticeVO.setBusinessType(6);
-             sysUserNoticeVO.setBusinessContent(String.format("驳回原因:%s",r.getMsg()));
-             sysUserNoticeVO.setStatus(0);
-             sysUserNoticeVO.setBusinessStatus(1);
-             R r1 = userService.addNotice(sysUserNoticeVO);
-             if (R.isOk(r1)) {
-             log.info("新增实名认证未通过通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO));
-             }
+             * SysUserNoticeVO sysUserNoticeVO=new SysUserNoticeVO(); sysUserNoticeVO.setUserId(userId);
+             * sysUserNoticeVO.setType(3); sysUserNoticeVO.setTitle("实名制审核未通过"); sysUserNoticeVO.setBusinessType(6);
+             * sysUserNoticeVO.setBusinessContent(String.format("驳回原因:%s",r.getMsg())); sysUserNoticeVO.setStatus(0);
+             * sysUserNoticeVO.setBusinessStatus(1); R r1 = userService.addNotice(sysUserNoticeVO); if (R.isOk(r1)) {
+             * log.info("新增实名认证未通过通知成功【{}】", JSONObject.toJSONString(sysUserNoticeVO)); }
              */
         }
         return r;
@@ -228,22 +257,47 @@
         List<ComActActivityVO> comActActivityVOS = new ArrayList<>();
         R r = communityService.listActivity(userId);
         if (R.isOk(r)) {
-            comActActivityVOS = (List<ComActActivityVO>) r.getData();
+            comActActivityVOS = (List<ComActActivityVO>)r.getData();
         }
         R r1 = partyBuildingService.listActivity(userId, communityId);
         if (R.isOk(r1)) {
-            List<ComActActivityVO> data = (List<ComActActivityVO>) r1.getData();
+            List<ComActActivityVO> data = (List<ComActActivityVO>)r1.getData();
             comActActivityVOS.addAll(data);
         }
         if (!ObjectUtils.isEmpty(comActActivityVOS)) {
             String s = JSONArray.toJSONString(comActActivityVOS);
             List<ComActActivityVO> comActActivityVOS1 = new ArrayList<>();
             comActActivityVOS1 = JSONArray.parseArray(s, ComActActivityVO.class);
-            List<ComActActivityVO> collect = comActActivityVOS1.stream().sorted(Comparator.comparing(ComActActivityVO::getBeginAt).reversed()).collect(Collectors.toList());
+            List<ComActActivityVO> collect = comActActivityVOS1.stream()
+                .sorted(Comparator.comparing(ComActActivityVO::getBeginAt).reversed()).collect(Collectors.toList());
             comActActivityVOS = collect;
         }
         if (!ObjectUtils.isEmpty(comActActivityVOS)) {
-            List<ComActActivityVO> collect = comActActivityVOS.stream().sorted(Comparator.comparing(ComActActivityVO::getSingDate).reversed()).collect(Collectors.toList());
+            List<ComActActivityVO> collect = comActActivityVOS.stream()
+                .sorted(Comparator.comparing(ComActActivityVO::getSingDate).reversed()).collect(Collectors.toList());
+            //当前用户最近签到时间
+            R r2 = communityService.listSignInActivity(userId);
+            if (R.isOk(r2) && !ObjectUtils.isEmpty(r2.getData())) {
+                ArrayList<ComActActRegistVO> comActActRegistVOS = JSONArray.parseArray(JSONArray.toJSONString(r2.getData()), ComActActRegistVO.class).stream()
+                        .sorted(Comparator.comparing(ComActActRegistVO::getCreateAt).reversed())
+                        .collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
+                                new TreeSet<>(Comparator.comparing(f -> String.join("", f.getUserId().toString(), f.getActivityId().toString())))), ArrayList::new));
+                collect.forEach(comActActivityVO -> comActActRegistVOS.forEach(activitySignInVO -> {
+                    if (comActActivityVO.getId().equals(activitySignInVO.getActivityId())) {
+                        comActActivityVO.setActivitySignInDate(activitySignInVO.getCreateAt());
+                    }
+                }));
+            }
+            //当前用户活动评分
+            R r3 = communityService.listEvaluate(userId);
+            if (R.isOk(r3) && !ObjectUtils.isEmpty(r3.getData())) {
+                List<ComActActEvaluateVO> comActActEvaluateVOS = JSONArray.parseArray(JSONArray.toJSONString(r3.getData()), ComActActEvaluateVO.class);
+                collect.forEach(comActActivityVO -> comActActEvaluateVOS.forEach(comActActEvaluateVO -> {
+                    if (comActActEvaluateVO.getActivityId().equals(comActActivityVO.getId())) {
+                        comActActivityVO.setMyRating(comActActEvaluateVO.getStarLevel());
+                    }
+                }));
+            }
             return R.ok(collect);
         }
         return R.ok(comActActivityVOS);
@@ -284,10 +338,6 @@
         if (null == id || 0 == id) {
             return R.fail("心愿主键不能为空");
         }
-        String evaluate = comActMicroWishVO.getEvaluate();
-        if (ObjectUtils.isEmpty(evaluate)) {
-            return R.fail("用户评价不能为空");
-        }
         Integer score = comActMicroWishVO.getScore();
         if (null == score || 0 == score) {
             return R.fail("评分不能为空");
@@ -307,7 +357,7 @@
     @ApiOperation(value = "意见反馈")
     @PostMapping("feedback")
     public R addFeedback(@RequestBody @Validated(AddGroup.class) SysUserFeedbackDTO sysUserFeedbackDTO) {
-        //        微信内容审核
+        // 微信内容审核
         String msg = sysUserFeedbackDTO.getContent();
         if (!checkService.checkMessage(msg)) {
             return R.fail("内容违规");
@@ -327,8 +377,9 @@
 
     @ApiOperation(value = "党员认证")
     @PostMapping("partybuildingembercertification")
-    public R partybuildingembercertification(@RequestBody @Validated(AddGroup.class) ComPbMemberCertificationDTO comPbMemberCertificationDTO) {
-        //totest 党员认证
+    public R partybuildingembercertification(
+        @RequestBody @Validated(AddGroup.class) ComPbMemberCertificationDTO comPbMemberCertificationDTO) {
+        // 党员认证
         LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
         Long userId = loginUserInfo.getUserId();
         Long communityId = loginUserInfo.getCommunityId();
@@ -336,25 +387,35 @@
             return R.fail("未绑定社区");
         }
 
-        //判断用户是否已认证成功
+        // 判断用户是否已认证成功
         R certUser = partyBuildingService.userCertification(userId);
 
         Object certUserInfo = certUser.getData();
-        boolean userCertified = false;
-        if (certUserInfo != null) {
-            PartyBuildingMemberVO certUserVo = (PartyBuildingMemberVO) certUserInfo;
-            //已认证党员身份,直接返回
-            userCertified = certUserVo.getAuditResult() == 1;
+        AtomicBoolean userCertified = new AtomicBoolean(false);
+        if (R.isOk(certUser) && certUserInfo != null) {
+            try {
+                List<PartyBuildingMemberVO> partyBuildingMemberVOList =
+                    JSONArray.parseArray(JSONArray.toJSONString(certUser.getData()), PartyBuildingMemberVO.class);
+                // 已认证党员身份,直接返回
+                if (partyBuildingMemberVOList != null && partyBuildingMemberVOList.size() > 0) {
+                    partyBuildingMemberVOList.forEach(vo -> {
+                        userCertified.set(vo.getAuditResult() == 1);
+                    });
+                }
+            } catch (Exception e) {
+            }
         }
-        //匹配手机,验证是否进行自动确认
-        if (userCertified) {
-            return R.fail("用户已完成党员认证");
+        // 匹配手机,验证是否进行自动确认
+        if (userCertified.get()) {
+            return R.fail("您已审核通过,无需重复提交");
         }
 
         PartyBuildingMemberVO partyBuildingMemberVO = new PartyBuildingMemberVO();
         BeanUtils.copyProperties(comPbMemberCertificationDTO, partyBuildingMemberVO);
+        partyBuildingMemberVO.setAuditResult(0);
+        partyBuildingMemberVO.setCommunityId(communityId);
 
-        //用户实名认证信息判断
+        // 用户实名认证信息判断
         String idCard = loginUserInfo.getIdCard();
         partyBuildingMemberVO.setUserId(userId);
         if (idCard == null) {
@@ -371,12 +432,26 @@
     @ApiOperation(value = "党员认证查询")
     @GetMapping("partybuildingembercertification")
     public R partybuildingembercertification() {
-        //totest 党员认证查询
+        // 党员认证查询
         LoginUserInfoVO loginUserInfo = this.getLoginUserInfo();
         Long userId = loginUserInfo.getUserId();
-        return partyBuildingService.userCertification(userId);
-    }
+        R r = partyBuildingService.userCertification(userId);
 
+        if (R.isOk(r)) {
+            List<PartyBuildingMemberVO> partyBuildingMemberVOList =
+                JSONArray.parseArray(JSONArray.toJSONString(r.getData()), PartyBuildingMemberVO.class);
+            if (partyBuildingMemberVOList != null && partyBuildingMemberVOList.size() > 0) {
+                Optional<PartyBuildingMemberVO> ot = partyBuildingMemberVOList.stream()
+                    .filter(partyBuildingMemberVO -> partyBuildingMemberVO.getAuditResult() == 1).findFirst();
+                if (ot.isPresent()) {
+                    return R.ok(ot.get());
+                } else {
+                    return R.ok(partyBuildingMemberVOList.get(0));
+                }
+            }
+        }
+        return R.ok();
+    }
 
     @ApiOperation(value = "获取用户电子档案", response = UserArchivesVO.class)
     @PostMapping("getUserArchives")

--
Gitblit v1.7.1