1、项目介绍

本项目是一个宠物们的社交平台,可以在这里发布领养、寻宠信息。同时也提供了宠物社区,分享宠友们与爱宠的沙雕日常!!

分为小程序前端、小程序后端、后台前端、后台后端四个项目。

  • 小程序前端使用 uniapp 框架,适配性多,在页面的打开和渲染效率上更快,可大大增加用户体验。
  • 后端使用 Java 主流框架 Springboot、Spring security、Redis、Mybatis-plus。
  • 后台前端使用 vue、ElementUI。
  • 后台后端使用若依框架,Springboot、Spring security、Redis、Mybatis、Jwt。

2、功能列表

  • 宠物领养
  • 宠物走失
  • 每日签到
  • 宠物科普
  • 每日答题
  • 宠物社区
  • 文章发布
  • 咨询对话
  • 个人中心
  • 消息列表
  • 我的收藏

3、相关截图

小程序截图

后台截图

4、项目目录

部分代码

@Slf4j
@AllArgsConstructor
@Service
public class PetAdoptServiceImpl implements PetAdoptService {
    private final PetAdoptMapper petAdoptMapper;
    private final AliYunOssProperties ossProperties;
    private final WxUserMapper wxUserMapper;
    private final PetFindService petFindService;

    @Override
    public void addPetAdopt(AddPetAdoptDTO req) {
        PetAdopt petAdopt = ResponseBeanFactory.getPetAdopt(req, ossProperties.getUrlPrefix());
        petAdoptMapper.insert(petAdopt);
        log.info("执行成功[发布宠物领养]");
    }

    @Override
    public List<PetAdoptVO> queryAdoptList(QueryAdoptDTO req) {
        IPage<PetAdopt> page = new Page<>(req.getPageNum(), req.getPageSize());
        IPage<PetAdopt> iPage = petAdoptMapper.selectPage(page, Wrappers.<PetAdopt>lambdaQuery()
                .eq(StringUtils.isNotBlank(req.getOpenId()), PetAdopt::getOpenId, req.getOpenId())
                .eq(StringUtils.isNotBlank(req.getCity()), PetAdopt::getCity, req.getCity())
                .orderByDesc(PetAdopt::getCreateTime));
        List<PetAdoptVO> petAdoptVOS = iPage.getRecords().stream()
                .map(PetAdoptVO::fromPetAdopt).collect(Collectors.toList());
        log.info("执行成功[查询领养列表]");
        return petAdoptVOS;
    }

    @Override
    public AdoptAndUserVO getPetAdoptById(Integer adoptId) {
        PetAdopt petAdopt = petAdoptMapper.selectById(adoptId);
        PetAdopt adopt = new PetAdopt();
        adopt.setId(adoptId);
        adopt.setView(petAdopt.getView() + 1);
        petAdoptMapper.updateById(adopt);
        // 送养人信息
        WxUser wxUser = wxUserMapper.selectOne(Wrappers.<WxUser>lambdaQuery().eq(WxUser::getOpenId, petAdopt.getOpenId()));
        // 正在送养数量
        Integer finishingCount = petAdoptMapper.selectCount(Wrappers.<PetAdopt>lambdaQuery()
                .eq(PetAdopt::getOpenId, wxUser.getOpenId())
                .eq(PetAdopt::getIsFinish, FinishStatusEnum.FINISHING.code()));
        // 已送养数量
        Integer finishedCount = petAdoptMapper.selectCount(Wrappers.<PetAdopt>lambdaQuery()
                .eq(PetAdopt::getOpenId, wxUser.getOpenId())
                .eq(PetAdopt::getIsFinish, FinishStatusEnum.FINISHED.code()));
        AdoptAndUserVO resultVO = AdoptAndUserVO.builder()
                .petAdoptVO(PetAdoptVO.fromPetAdopt(petAdopt))
                .wxUserVO(WxUserVO.fromWxUser(wxUser))
                .build();
        resultVO.getWxUserVO().setDoingNum(finishingCount);
        resultVO.getWxUserVO().setDoneNum(finishedCount);
        log.info("执行成功[查询领养详情]adoptId={}", adoptId);
        return resultVO;
    }

    @Override
    public PetCountVO queryCount(String openId) {
        Integer petAdoptCount = petAdoptMapper.selectCount(Wrappers.<PetAdopt>lambdaQuery().eq(PetAdopt::getOpenId, openId));
        Integer petFindCount = petFindService.queryCount(openId);
        log.info("执行成功[查询领养/寻宠总数],openId={}", openId);
        return PetCountVO.builder()
                .petAdoptCount(petAdoptCount)
                .petFindCount(petFindCount)
                .build();
    }

    @Override
    public List<PetAdoptVO> queryAdoptsInIds(QueryAdoptsInDTO req) {
        if (req.getIds().isEmpty()) {
            return Collections.emptyList();
        }
        Page<PetAdopt> page = new Page<>(req.getPageNum(), req.getPageSize());
        Page<PetAdopt> iPage = petAdoptMapper.selectPage(page, Wrappers.<PetAdopt>lambdaQuery()
                .in(PetAdopt::getId, req.getIds()));
        List<PetAdopt> petAdopts = iPage.getRecords();
        if (petAdopts.isEmpty()) {
            return Collections.emptyList();
        }
        List<PetAdoptVO> petAdoptVOS = petAdopts.stream()
                .map(PetAdoptVO::fromPetAdopt).collect(Collectors.toList());
        log.info("执行成功[查询领养列表]");
        return petAdoptVOS;
    }
}

源码资源下载:https://download.csdn.net/download/Always206/85630037

可用作毕业设计

有需要前后端源码的,可私聊看演示。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐