101captain
2022-04-19 00a59b93c16b24e7be77c6f1ce4866c75a2e0431
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/CommunityApi.java
@@ -2,29 +2,25 @@
import static java.util.stream.Collectors.toList;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import javax.annotation.Resource;
import com.panzhihua.common.model.dtos.property.CommonPage;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.community.ComActActivityTypeVO;
import com.panzhihua.common.model.vos.community.volunteer.ComMngVolunteerExcelVO;
import com.panzhihua.common.model.vos.user.SysTemplateConfigVO;
import com.panzhihua.service_community.dao.ComActActEvaluateDAO;
import com.panzhihua.service_community.model.dos.*;
import com.panzhihua.service_community.service.*;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
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 org.springframework.web.bind.annotation.*;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -149,6 +145,8 @@
    private ComEldersAuthElderlyService comEldersAuthElderlyService;
    @Resource
    private ComActMicroWishOperationRecordService wishOperationRecordService;
    @Resource
    private ComActActEvaluateDAO comActActEvaluateDAO;
    /**
     * 新增社区活动
@@ -274,11 +272,13 @@
                        });
                    }
                    comActActivityVO1.setComActActPrizeVOList(comActActPrizeVOList);
                    Integer participantMax = comActActivityVO1.getParticipantMax();
                    if (participantMax.intValue() == 0) {
                        comActActivityVO1.setType(1);
                    } else {
                        comActActivityVO1.setType(2);
                    Integer volunteerMax = comActActivityVO1.getVolunteerMax();
                    if(comActActivityVO1.getType()==null){
                        if (volunteerMax.intValue() != 0) {
                            comActActivityVO1.setType(1);
                        } else {
                            comActActivityVO1.setType(2);
                        }
                    }
                    fillActivitySignList(id, comActActivityVO1);
                });
@@ -291,7 +291,7 @@
    /**
     * 社区后台分页查询社区活动
     *
     *
     * @param comActActivityVO
     *            查询参数
     * @return 返回结果
@@ -334,7 +334,9 @@
     */
    @PostMapping("detailactivity")
    public R detailActivity(@RequestParam("id") Long id,
        @RequestParam(value = "userId", required = false) Long userId) {
        @RequestParam(value = "userId", required = false) Long userId,
                            @RequestParam(value = "pageNum",defaultValue = "1", required = false) Long pageNum,
                            @RequestParam(value = "pageSize",defaultValue = "10", required = false) Long pageSize) {
        ComActActivityVO comActActivityVO = comActActivityService.inforActivity(id, userId);
        if (ObjectUtils.isEmpty(comActActivityVO)) {
            return R.fail("活动不存在");
@@ -352,26 +354,31 @@
            comActActivityVO.setComActActPrizeVOList(comActActPrizeVOS);
        }
        //活动评价
        List<ComActActEvaluateDO> comActActEvaluateDOList = comActActEvaluateService
                .list(new QueryWrapper<ComActActEvaluateDO>().lambda().eq(ComActActEvaluateDO::getActivityId, id));
        if (!ObjectUtils.isEmpty(comActActEvaluateDOList)) {
            List<ComActActEvaluateVO> comActActEvaluateVOList = new ArrayList<>();
            comActActEvaluateDOList.forEach(comActActEvaluateDO -> {
                ComActActEvaluateVO comActActEvaluateVO = new ComActActEvaluateVO();
                BeanUtils.copyProperties(comActActEvaluateDO, comActActEvaluateVO);
                comActActEvaluateVOList.add(comActActEvaluateVO);
            });
            comActActivityVO.setComActActEvaluateVOList(comActActEvaluateVOList);
            //活动评价总数
            comActActivityVO.setEvaluateAmount(comActActEvaluateDOList.size());
            //当前用户对活动的评分
            Optional.ofNullable(userId).ifPresent(currentUserId -> {
                Optional<ComActActEvaluateDO> optional = comActActEvaluateDOList.stream()
                        .filter(comActActEvaluateDO -> comActActEvaluateDO.getUserId().equals(currentUserId)).findFirst();
                if (optional.isPresent()) {
                    comActActivityVO.setMyRating(optional.get().getStarLevel());
                }
            });
        IPage<ComActActEvaluateVO> comActActEvaluatePage = comActActEvaluateDAO.getEvaluateListPage(new Page(pageNum,pageSize),id);
        comActActivityVO.setComActActEvaluateVOList(comActActEvaluatePage.getRecords());
        //活动评价总数
        comActActivityVO.setEvaluateAmount(comActActEvaluatePage.getTotal());
        List<ComActActEvaluateDO> comActActEvaluateList = comActActEvaluateDAO
                .selectList(new QueryWrapper<ComActActEvaluateDO>().lambda().eq(ComActActEvaluateDO::getActivityId, id));
        if (comActActEvaluateList != null && comActActEvaluateList.size() > 0) {
            BigDecimal starNum = BigDecimal.ZERO;
            //总星级
            for (ComActActEvaluateDO evaluate:comActActEvaluateList) {
                starNum = starNum.add(BigDecimal.valueOf(evaluate.getStarLevel()==null?0:evaluate.getStarLevel()));
            }
            //评分星级(如果无评分默认5分)=总星级/总评价人数
            if(starNum.compareTo(BigDecimal.ZERO) == 0){
                comActActivityVO.setEvaluateLevel(BigDecimal.valueOf(5));
            }else{
                comActActivityVO.setEvaluateLevel(starNum.divide(BigDecimal.valueOf(comActActEvaluateList.size()),2, RoundingMode.HALF_UP));
            }
        }else{
            comActActivityVO.setEvaluateLevel(BigDecimal.valueOf(5));
        }
        //当前用户对活动的评分
        ComActActEvaluateVO userActEvaluateVO = comActActEvaluateDAO.getEvaluateListByUserId(id,userId);
        if(userActEvaluateVO != null){
            comActActivityVO.setMyRating(userActEvaluateVO.getStarLevel());
        }
        fillActivitySignList(id, comActActivityVO);
        comActActivityVO.setIntegral(0);
@@ -387,6 +394,7 @@
        //活动报名名单
        ActivitySignVO activitySignVO = new ActivitySignVO();
        activitySignVO.setActivityId(activityId);
        activitySignVO.setStatus(1);
        R r = comActActivityService.listActivitySigns(activitySignVO);
        if (R.isOk(r)) {
            List<ActivitySignVO> activitySignVOS =
@@ -891,7 +899,7 @@
    /**
     * 查询随手拍是否有活动
     *
     *
     * @return 活动详情
     */
    @PostMapping("getEasyPhotoActivity")
@@ -1182,7 +1190,7 @@
    /**
     * 查询所有建筑类型
     *
     *
     * @return 类型列表
     */
    @PostMapping("listbuildtype")
@@ -1192,7 +1200,7 @@
    /**
     * 分页查询 其他建筑
     *
     *
     * @param comMngStructOtherBuildVO
     *            分页查询参数
     * @return 查询结果
@@ -1204,19 +1212,28 @@
    /**
     * 增加志愿者
     *
     *
     * @param comMngVolunteerMngVO
     *            志愿者信息
     * @return 增加结果
     */
    @PostMapping("addvolunteer")
    R addVolunteer(@RequestBody ComMngVolunteerMngVO comMngVolunteerMngVO) {
        Long submitUserId = comMngVolunteerMngVO.getSubmitUserId();
        if (Objects.nonNull(submitUserId)) {
            //获取小程序用户信息
            R<LoginUserInfoVO> userInfoR = userService.getUserInfoByUserId(submitUserId.toString());
            LoginUserInfoVO userInfo = userInfoR.getData();
            if (Objects.nonNull(userInfo)) {
                comMngVolunteerMngVO.setIdCard(userInfo.getIdCard());
            }
        }
        return comMngVolunteerMngService.addVolunteer(comMngVolunteerMngVO);
    }
    /**
     * 获取志愿者详情
     *
     *
     * @param id
     * @return
     */
@@ -1393,8 +1410,9 @@
     * @return 活动列表
     */
    @PostMapping("listactivity")
    public R listActivity(@RequestParam("userId") Long userId) {
        return comActActivityService.listActivity(userId);
    public R listActivity(@RequestParam("userId") Long userId,
                          @RequestParam(value = "status", required = false) Integer status,@RequestParam(value = "type", required = false) Integer type) {
        return comActActivityService.listActivity(userId, status,type);
    }
    /**
@@ -1500,8 +1518,8 @@
     * @return 社区集合 按照创建顺序倒序排列
     */
    @PostMapping("listcommunityall")
    public R listCommunityAll() {
        return comActService.listCommunityAll();
    public R listCommunityAll(@RequestParam("areaCode") String areaCode) {
        return comActService.listCommunityAll(areaCode);
    }
    /**
@@ -2225,10 +2243,11 @@
                String openid = map.get("openid");
                try {
                    WxXCXTempSend util = new WxXCXTempSend();
                    R<SysTemplateConfigVO> sysTemplateConfigVO=userService.selectTemplate(eldersAuthFeedbackAddDTO.getAreaCode(),5);
                    String accessToken = util.getAppAccessToken();
                    WxUtil.sendSubscribeRZSH(openid, accessToken, "高龄认证",
                        DateUtils.format(eldersAuthDO.getCreateAt(), DateUtils.ymdhms_format),
                        eldersAuthFeedbackAddDTO.getFeedBack());
                        eldersAuthFeedbackAddDTO.getFeedBack(),sysTemplateConfigVO.getData().getTemplateId());
                } catch (Exception e) {
                    log.error("推送审核状态订阅消息失败,失败原因:" + e.getMessage());
                }
@@ -2292,6 +2311,16 @@
    @GetMapping("/eventgrid/community/list")
    public R getCommunityLists() {
        return comActService.getCommunityLists();
    }
    /**
     * 查询西区社区列表
     *
     * @return 社区列表
     */
    @GetMapping("/eventgrid/community/westList")
    public R getWestCommunityLists(@RequestParam("areaCode")String areaCode) {
        return comActService.getWestCommunityLists(areaCode);
    }
    /**
@@ -2442,4 +2471,136 @@
    public R easyPhotoNoHandleList(@RequestParam("communityId") Long communityId) {
        return comActEasyPhotoService.easyPhotoNoHandleList(communityId);
    }
    /**
     * 微心愿处理人列表
     * @param communityId   社区id
     * @param type  处理人类型(1.后台用户  2.党员  3.志愿者)
     * @return  处理人列表
     */
    @GetMapping("wish/handle/list/admin")
    public R wishHandleListAdmin(@RequestParam(value = "communityId") Long communityId,@RequestParam("type") Integer type){
        return R.ok(comActMicroWishService.wishHandleListAdmin(communityId,type));
    }
    /**
     * 社区后台分页查询微心愿
     * @param comActMicroWishVO 请求参数
     * @return  微心愿列表
     */
    @PostMapping("pagemicrowishAdmin")
    public R pageMicroWishAdmin(@RequestBody ComActMicroWishVO comActMicroWishVO) {
        return comActMicroWishService.pageMicroWishAdmin(comActMicroWishVO);
    }
    /**
     * 活动报名签到情况
     * @param id 活动主键id
     * @return
     */
    @GetMapping("activity/sign-in/list")
    public R listSignInRecord(@RequestParam("id") Long id) {
        return comActActivityService.listSignInRecord(id);
    }
    /**
     * 活动签到记录
     * @param id 活动主键
     * @param userId 用户id
     * @return
     */
    @GetMapping("activity/regist/list")
    public R listRegistRecord(@RequestParam("id")  Long id, @RequestParam("userId") Long userId) {
        return comActActivityService.listRegistRecord(id, userId);
    }
    /**
     * 获取活动类型(目前只有志愿者活动需要获取)
     * @param communityId
     * @param type
     * @return
     */
    @GetMapping("activity/type/list")
    public R listActivityType(@RequestParam("communityId") Long communityId, @RequestParam("type") Integer type) {
        return comActActivityService.listActivityType(communityId, type);
    }
    /**
     * 添加活动类型
     * @param comActActivityTypeVO
     * @return
     */
    @PostMapping("activity/type/add")
    public R addActivityType(@RequestBody ComActActivityTypeVO comActActivityTypeVO) {
        return comActActivityService.addActivityType(comActActivityTypeVO);
    }
    /**
     * 我的评价
     * @param userId
     * @param activityId 活动id
     * @return
     */
    @GetMapping("activity/my-evaluate")
    public R listMyActivityEvaluate(@RequestParam("userId") Long userId, @RequestParam("activityId") Long activityId) {
        return comActActEvaluateService.listMyActivityEvaluate(userId, activityId);
    }
    /**
     * 志愿者导入
     *
     * @param list        志愿者数据列表
     * @param communityId 社区id
     * @param userId      用户id
     * @return 导入结果
     */
    @PostMapping("/volunteer/import/admin")
    public R importVolunteerAdmin(@RequestBody List<ComMngVolunteerExcelVO> list,
                                  @RequestParam(value = "communityId") Long communityId, @RequestParam(value = "userId") Long userId) {
        return comMngVolunteerMngService.importVolunteerAdmin(list,communityId,userId);
    }
    /**
     * [方法描述] 根据社区ID查询所属城市所在区区域代码,
     *
     * @param communityId
     *            社区ID
     * @return String 区域code
     * @author manailin
     * @date 2022/2/17 10:09
     */
    @GetMapping("act/getActBelongRegionCode")
    public String getActBelongRegionCode(@RequestParam("communityId") Long communityId) {
        return comActActivityService.getActBelongRegionCode(communityId);
    }
    /**
     * 党员活动统计
     * @param communityId
     * @param year
     * @return
     */
    @GetMapping("activity/partyMemberCount")
    public R partyMemberCount(@RequestParam("communityId")Long communityId,@RequestParam("year")String year){
        return comActActivityService.partyMemberCount(communityId,year);
    }
    /**
     * 党员活动详情数据
     * @return
     */
    @PostMapping("activity/partyMemberDetail")
    public R partyMemberDetail(@RequestBody CommonPage commonPage){
        return comActActivityService.partyMemberDetail(commonPage);
    }
    /**
     * 导出党员活动详情数据
     * @return
     */
    @PostMapping("activity/exportPartyMemberDetail")
    public R exportPartyMemberDetail(@RequestBody CommonPage commonPage){
        return comActActivityService.exportPartyMemberDetail(commonPage);
    }
}