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
可用作毕业设计
有需要前后端源码的,可私聊看演示。