package com.eight.vote.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.eight.vote.pojo.*;
import com.eight.vote.mapper.VMessageMapper;
import com.eight.vote.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.eight.vote.util.*;
import com.eight.vote.vo.VoteVo;
import com.eight.vote.vo.GetVoteVo;
import com.eight.vote.vo.IndexVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
* 服务实现类
* </p>
*
* @author 点点星言
* @since 2022-10-16
*/
@Service
@Slf4j
public class VMessageServiceImpl extends ServiceImpl<VMessageMapper, VMessage> implements VMessageService {
@Autowired
VUserService userService;
@Autowired
VOptionService optionService;
@Autowired
CategoryService categoryService;
@Autowired
VOptionInfoService optionInfoService;
@Override
public Result getHotVote(Integer pageNum,Integer pageSize) {
//查询浏览量大于常量的投票信息
QueryWrapper<VMessage> wrapper = new QueryWrapper<>();
wrapper.orderByDesc("views");
List<VMessage> messageList = baseMapper.selectList(wrapper);
log.debug("投票信息集合:{}",messageList.toString());
//通过对应的投票信息中的userid查询对应的昵称
List<Long> userId = messageList.stream().map((item) -> {
return item.getUserId();
}).collect(Collectors.toList());
List<VUser> userList = userId.stream().map((item) -> {
return userService.getById(item);
}).collect(Collectors.toList());
//将昵称和投票信息中对应的字段封装进indexVo中
List<IndexVo> IndexVos = userList.stream().map(item -> {
IndexVo indexVo = new IndexVo();
indexVo.setName(item.getName());
indexVo.setUserId(item.getUserId());
return indexVo;
}).collect(Collectors.toList());
for (IndexVo index: IndexVos) {
for (VMessage message:messageList) {
if (index.getUserId()==message.getUserId()&&message.getMsgId()!=null) {
index.setTitle(message.getTitle());
index.setCreateTime(message.getCreateTime());
index.setViews(message.getViews());
index.setMsgId(message.getMsgId());
index.setCategoryId(message.getCategoryId());
index.setPermissionType(message.getPermissionType());
message.setMsgId(null);
break;
}
}
}
log.debug(IndexVos.toString());
//检索mysql中的类型表,根据类型id查询出类型名称
IndexVos.stream().forEach(item->{
Long categoryId = item.getCategoryId();
Category category = categoryService.getById(categoryId);
item.setCategoryName(category.getCategoryName());
});
//对indexVos进行分页
Page pages = ListPage.getPages(pageNum, pageSize, IndexVos);
//将indexVo返回
return Result.ok(pages);
}
@Override
@Transactional
public Result addVote(VoteVo voteVo) {
log.debug("前端传入的投票信息:{}", voteVo.toString());
//从请求头中获取token
Long userId = UserHolder.getUserId();
//创建投票信息对象
VMessage message = new VMessage();
//将数据从前端传入的vo copy到投票信息对象中
BeanUtils.copyProperties(voteVo,message);
message.setCreateTime(LocalDateTime.now());
message.setUserId(userId);
message.setViews(Constant.VIEWS_INIT);
LocalDateTime localDateTime = TimeUtil.toLocalDateTime(voteVo.getEndTime(), Constant.DATE_FORMATTER);
message.setEndTime(localDateTime);
//权限优化,但是先不管
// if (message.getLockPwd()==null&&message.getPermissionType()==3) {
// return Result.fail("权限为密码制,但是没有传入密码,请重新确认");
// }
//分别调用不同的Service将对应的数据添加到mysql
baseMapper.insert(message);
voteVo.getOptions().stream().forEach((item)->{
item.setInfoId(message.getMsgId());
optionService.save(item);
});
//返回ok
return Result.ok();
}
@Override
public Result userAddVote(VOption option) {
//获取选项值
String optionValue = option.getOptionValue();
//判断选项表中是否已经存在该选项,
QueryWrapper<VOption> wrapper = new QueryWrapper<>();
wrapper.eq("o_value",optionValue);
VOption vOption = optionService.getOne(wrapper);
if (vOption!=null) {
//存在,返回异常
return Result.fail("该选项已存在!");
}
//不存在,填表入库
optionService.save(option);
//返回正确信息
return Result.ok();
}
@Override
public Result searchVote(String keyword,Integer pageNum,Integer pageSize) {
log.debug("keyword:{}",keyword);
//构造查询条件
QueryWrapper<VMessage> wrapper = new QueryWrapper<>();
wrapper.like("title",keyword);
// 构建分页对象
Page<VMessage> objectPage = new Page<>(pageNum, pageSize);
// 调用分页方法查询
Page<VMessage> page = page(objectPage, wrapper);
log.debug("投票信息:{}",page.toString());
// 返回数据
return Result.ok(page);
}
@Override
@Transactional
public Result getVoteById(GetVoteVo getVoteVo) {
//获取vo中的各项参数
Long msgId = getVoteVo.getMsgId();
Integer permissionType = getVoteVo.getPermissionType();
String lockPwd = getVoteVo.getLockPwd();
VoteVo voteFromDB = null;
//判断权限类型是否为3
if (permissionType!=3) {
//如果不为3,调用对应的方法并返回数据即可
voteFromDB = getVoteFromDB(msgId,permissionType);
if (voteFromDB==null)
return Result.fail("权限类型不一致,别想乱搞嗷");
return Result.ok(voteFromDB);
}
//如果为3,则同样根据id查询数据,并对比密码是否相同
VMessage message = baseMapper.selectById(msgId);
String lockPwdFromDB = message.getLockPwd();
if (!lockPwdFromDB.equals(lockPwd)) {
//如果不相同,直接报投票信息密码错误异常
return Result.fail("密码错误,请确实是否为正确密码");
}
//浏览量+1
addViews(message);
//如果相同,则调用对应方法并返回数据即可
voteFromDB = getVoteFromDB(msgId,permissionType);
if (voteFromDB==null)
return Result.fail("权限类型不一致,别想乱搞嗷");
return Result.ok(voteFromDB);
}
@Override
public Result getVoteByUserId(Integer pageNum,Integer pageSize) {
//获取userid
Long userId = UserHolder.getUserId();
//构建分页对象
Page<VMessage> page = new Page<>(pageNum, pageSize);
//构建查询对象
QueryWrapper<VMessage> wrapper = new QueryWrapper<>();
wrapper.eq("user_id",userId);
//调用对应的方法进行查询
Page<VMessage> messagePage =baseMapper.selectPage(page,wrapper);
//返回数据
return
没有合适的资源?快使用搜索试试~ 我知道了~
java基于SpringBoot+vue的在线投票系统源码.zip
共172个文件
xml:114个
java:46个
gitignore:3个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 5 下载量 24 浏览量
2022-12-01
20:37:55
上传
评论 1
收藏 162KB ZIP 举报
温馨提示
java基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于SpringBoot+vue的在线投票系统源码.zip基于S
资源推荐
资源详情
资源评论
收起资源包目录
java基于SpringBoot+vue的在线投票系统源码.zip (172个子文件)
mvnw.cmd 7KB
.gitignore 395B
.gitignore 268B
.gitignore 176B
Code.iml 336B
maven-wrapper.jar 57KB
VMessageServiceImpl.java 11KB
VUserServiceImpl.java 4KB
VOptionInfoServiceImpl.java 4KB
CategoryServiceImpl.java 3KB
JWTUtil.java 3KB
CodeGet.java 2KB
VMessageController.java 2KB
UpdateStatus.java 2KB
MD5Util.java 2KB
VUserController.java 2KB
Result.java 2KB
VMessage.java 1KB
TokenInterceptor.java 1KB
VoteVo.java 1KB
VMessageService.java 1KB
VUser.java 1KB
ListPage.java 1KB
VOption.java 1KB
InterceptorConfig.java 1KB
VoteApplicationTests.java 1024B
IndexVo.java 967B
VOptionInfo.java 931B
VUserService.java 891B
VOptionInfoController.java 870B
CategoryController.java 827B
PageConfig.java 784B
VOptionServiceImpl.java 784B
Category.java 780B
SearchVo.java 684B
VOptionService.java 559B
CategoryNumVo.java 488B
Constant.java 485B
VoteApplication.java 462B
GetVoteVo.java 434B
TimeUtil.java 423B
CategoryService.java 372B
VOptionInfoService.java 371B
VOptionController.java 343B
UserHolder.java 343B
UpdatePasswordVO.java 311B
LoginFrom.java 301B
VOptionInfoMapper.java 290B
CategoryMapper.java 281B
VMessageMapper.java 281B
VOptionMapper.java 278B
VUserMapper.java 272B
PULL_REQUEST_TEMPLATE.zh-CN.md 179B
ISSUE_TEMPLATE.zh-CN.md 79B
mvnw 10KB
maven-wrapper.properties 233B
application.properties 1B
uiDesigner.xml 9KB
pom.xml 4KB
compiler.xml 846B
jarRepositories.xml 845B
Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_3_12_RELEASE.xml 764B
Maven__org_springframework_boot_spring_boot_starter_data_redis_2_3_12_RELEASE.xml 764B
Maven__org_springframework_boot_spring_boot_starter_logging_2_3_12_RELEASE.xml 743B
Maven__org_springframework_boot_spring_boot_starter_tomcat_2_3_12_RELEASE.xml 736B
Maven__org_springframework_boot_spring_boot_autoconfigure_2_3_12_RELEASE.xml 729B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_4.xml 724B
Maven__org_springframework_boot_spring_boot_starter_test_2_3_12_RELEASE.xml 722B
Maven__org_springframework_boot_spring_boot_starter_jdbc_2_3_12_RELEASE.xml 722B
Maven__org_springframework_boot_spring_boot_starter_json_2_3_12_RELEASE.xml 722B
Maven__org_springframework_boot_spring_boot_starter_web_2_3_12_RELEASE.xml 715B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 688B
Maven__org_springframework_spring_context_support_5_2_15_RELEASE.xml 688B
Maven__org_springframework_data_spring_data_keyvalue_2_3_9_RELEASE.xml 687B
Maven__org_springframework_boot_spring_boot_starter_2_3_12_RELEASE.xml 687B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_4.xml 683B
Maven__org_springframework_data_spring_data_commons_2_3_9_RELEASE.xml 680B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_4.xml 669B
Maven__org_springframework_boot_spring_boot_test_2_3_12_RELEASE.xml 666B
Maven__org_springframework_data_spring_data_redis_2_3_9_RELEASE.xml 666B
Maven__org_springframework_spring_expression_5_2_15_RELEASE.xml 653B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_46.xml 648B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_4.xml 639B
Maven__org_springframework_spring_context_5_2_15_RELEASE.xml 632B
Maven__org_springframework_boot_spring_boot_2_3_12_RELEASE.xml 631B
Maven__org_springframework_spring_webmvc_5_2_15_RELEASE.xml 625B
Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml 621B
Maven__org_junit_platform_junit_platform_commons_1_6_3.xml 621B
Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml 621B
Maven__com_baomidou_mybatis_plus_boot_starter_3_5_1.xml 618B
Maven__org_springframework_spring_beans_5_2_15_RELEASE.xml 618B
Maven__com_fasterxml_jackson_core_jackson_databind_2_11_4.xml 618B
Maven__org_junit_platform_junit_platform_engine_1_6_3.xml 614B
Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_46.xml 613B
Maven__org_springframework_spring_test_5_2_15_RELEASE.xml 611B
Maven__org_springframework_spring_core_5_2_15_RELEASE.xml 611B
Maven__org_springframework_spring_jdbc_5_2_15_RELEASE.xml 611B
Maven__io_projectreactor_reactor_core_3_3_17_RELEASE.xml 610B
Maven__org_springframework_spring_web_5_2_15_RELEASE.xml 604B
Maven__org_springframework_spring_oxm_5_2_15_RELEASE.xml 604B
共 172 条
- 1
- 2
资源评论
- ᦔⅈડꪖρρꫀꪖrꪖꪀᥴꫀ6212023-03-30超级好的资源,很值得参考学习,对我启发很大,支持!
- 久疏2023-01-14资源很实用,对我启发很大,有很好的参考价值,内容详细。
- pakachi2023-05-25这个资源总结的也太全面了吧,内容详实,对我帮助很大。
- m0_514835622024-05-15资源内容总结的很到位,内容详实,很受用,学到了~
- 2301_770231482023-04-17资源内容总结地很全面,值得借鉴,对我来说很有用,解决了我的燃眉之急。
程序员张小妍
- 粉丝: 1w+
- 资源: 3691
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- floyd算法求最小距离代码
- 电动汽车充放电最优调度20 研究了EV充电和放电的调度优化问题 我们首先制定全局调度优化问题,其中优化充电功率以最小化所有在白天执行充电和放电的EV的总成本 全球最佳解决方案提供全球最小的总成本
- 基于51单片机的智能温控风扇基于51单片机的智能温控电扇仿真系统, 功能:获取当前温度,调节档位,并用数模转器调节风扇转速
- 基于STM32H750芯片和SOEM的EtherCAT主站源码 提供配套CUBE工程和 SOEM协议栈使用1.3.1版本 可配套如图所示开发板使用 支持DC同步 可配合汇川IS620N、三洋R
- 综合能源系统优化程序,冷热电系统,考虑温度压力,比体积,熵和焓,通过遗传算法求解
- python-workspace.zip.002
- 考虑电动汽车的微网优化,给出微电网各组成部分的个体模型,并采用粒子群优化算法进行经济调度 仿真结果表明,在微网中加入V2G方法的BEV可以提高聚合者的利润,提高系统的可靠性和稳定性
- 本地文件查重管理工具EasyFileCount v3.0.3.8,支持查找大/重复文件+自动分类筛选
- 综合能源系统优化,冷电系统优化,考虑燃气轮机,空调等设备,建立最优经济调度模型,通过粒子群算法求解
- 分布式电源选址定容 软件:Matlab 介绍:在改进的IEEE33节点系统中分布式电源选择最佳接入点和接入容量,以网损和电压越限惩罚为目标进行粒子群优化,能得出最佳接入点和接入容量,接入前后电
- 关键词:无功优化 粒子群算法 主动配电网 IEEE33节点 基于粒子群的含分布式电源的主动配电网电压-有功-无功优化 软件:MATLAB 介绍:考虑24小时主动配电网有功、无功、电压越限
- 5节点系统电力市场出清:输电阻塞;机组、节点边际电目标函数为发电成本最小 运用matlab中的linprog()函数实现此程序,并附赠CPLEX求解5节点系统目标函数为购电成本最小的潮流计算程序
- python-workspace.zip.003
- 模型预测电流控制,双矢量(有效电压矢量和零矢量占空比分配) 包含解释~
- 营养学计算器PHP源码.zip
- LADRC线性自抗扰,三阶ESO状态扩张观测器,boost升压电路,双闭环控制,双LADRC控制,电压外环采用LADRC线性自抗扰控制(ESO扩张状态观测器采用三阶,自己搭建),电流内环同样采用LAD
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功