传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装考编论坛网站软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,考编论坛网站的有效运用可以帮助管理人员准确快速地处理信息。
考编论坛网站在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现考编论坛网站的功能。其中管理员管理用户,新闻公告。
考编论坛网站是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,考编论坛网站都可以轻松应对。
关键词:考编论坛网站;SpringBoot框架,系统分析,数据库设计
基于Java Web的springboot考编论坛网站源码和论文441
演示视频:
基于Java Web的springboot考编论坛网站源码和论文
Abstract
The traditional method of managing public transportation information first takes more time, and secondly, the data error rate is relatively high, and it is more difficult to modify the wrong data, and finally, it is laborious and laborious to retrieve the data. Therefore, installing the public transportation query website software on the ***puter to play its role in efficient information processing can standardize the public transportation information management process, so that the management work can be systematized and programmed. At the same time, the effective use of the public transportation query website can help managers a***urately Process information quickly.
The public transportation query website is also very cautious in the selection of development tools. In order to facilitate the development and realization, the selected development tool is Eclipse, and the selected database tool is Mysql. In this way, the development environment is built to realize the functions of the public transport query website. Among them, the administrator manages users, drivers, news announcements, manages vehicles, stations, and trip information in the route management module, and responds to users' suggested messages in the message suggestion management module. Users inquire about the site, inquire about transfer information, post message suggestions, and check news announcements.
The bus query website is an application system designed and implemented using software development technology. It can achieve rapid information processing. Whether it is for data addition, data maintenance and statistics, and data query processing requirements, the bus query website can easily response.
Key Words:Public transport query website; bus number information; suggestion to leave a message; query site
package ***.controller;
import java.io.File;
import java.math.BigDecimal;
import java.***.URL;
import java.text.SimpleDateFormat;
import ***.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import ***.service.TokenService;
import ***.utils.*;
import java.lang.reflect.InvocationTargetException;
import ***.service.DictionaryService;
import org.apache.***mons.lang3.StringUtils;
import ***.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import ***.baomidou.mybatisplus.mapper.EntityWrapper;
import ***.baomidou.mybatisplus.mapper.Wrapper;
import ***.entity.*;
import ***.entity.view.*;
import ***.service.*;
import ***.utils.PageUtils;
import ***.utils.R;
import ***.alibaba.fastjson.*;
/**
* 商品订单
* 后端接口
* @author
* @email
*/
@RestController
@Controller
@RequestMapping("/shangpinOrder")
public class ShangpinOrderController {
private static final Logger logger = LoggerFactory.getLogger(ShangpinOrderController.class);
private static final String TABLE_NAME = "shangpinOrder";
@Autowired
private ShangpinOrderService shangpinOrderService;
@Autowired
private TokenService tokenService;
@Autowired
private AddressService addressService;//收货地址
@Autowired
private DictionaryService dictionaryService;//字典
@Autowired
private ForumService forumService;//经验交流平台
@Autowired
private NewsService newsService;//公告信息
@Autowired
private ShangpinService shangpinService;//跳蚤市场
@Autowired
private ShangpinLiuyanService shangpinLiuyanService;//商品留言
@Autowired
private YonghuService yonghuService;//用户
@Autowired
private UsersService usersService;//管理员
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永不会进入");
else if("用户".equals(role))
params.put("yonghuId",request.getSession().getAttribute("userId"));
***monUtil.checkMap(params);
PageUtils page = shangpinOrderService.queryPage(params);
//字典表数据转换
List<ShangpinOrderView> list =(List<ShangpinOrderView>)page.getList();
for(ShangpinOrderView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c, request);
}
return R.ok().put("data", page);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id, HttpServletRequest request){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
ShangpinOrderEntity shangpinOrder = shangpinOrderService.selectById(id);
if(shangpinOrder !=null){
//entity转view
ShangpinOrderView view = new ShangpinOrderView();
BeanUtils.copyProperties( shangpinOrder , view );//把实体数据重构到view中
//级联表 收货地址
//级联表
AddressEntity address = addressService.selectById(shangpinOrder.getAddressId());
if(address != null){
BeanUtils.copyProperties( address , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
view.setAddressId(address.getId());
}
//级联表 跳蚤市场
//级联表
ShangpinEntity shangpin = shangpinService.selectById(shangpinOrder.getShangpinId());
if(shangpin != null){
BeanUtils.copyProperties( shangpin , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
view.setShangpinId(shangpin.getId());
}
//级联表 用户
//级联表
YonghuEntity yonghu = yonghuService.selectById(shangpinOrder.getYonghuId());
if(yonghu != null){
BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
view.setYonghuId(yonghu.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ShangpinOrderEntity shangpinOrder, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,shangpinOrder:{}",this.getClass().getName(),shangpinOrder.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永远不会进入");
else if("用户".equals(role))
shangpinOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
shangpinOrder.setCreateTime(new Date());
shangpinOrder.setInsertTime(new Date());
shangpinOrderService.insert(shangpinOrder);
return R.ok();
}
/**
* 后端修改
*/
@RequestMapping("/update")
public R update(@RequestBody ShangpinOrderEntity shangpinOrder, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalA***essException, InstantiationException {
logger.debug("update方法:,,Controller:{},,shangpinOrder:{}",this.getClass().getName(),shangpinOrder.toString());
ShangpinOrderEntity oldShangpinOrderEntity = shangpinOrderService.selectById(shangpinOrder.getId());//查询原先数据
String role = String.valueOf(request.getSession().getAttribute("role"));
// if(false)
// return R.error(511,"永远不会进入");
// else if("用户".equals(role))
// shangpinOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
shangpinOrderService.updateById(shangpinOrder);//根据id更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
List<ShangpinOrderEntity> oldShangpinOrderList =shangpinOrderService.selectBatchIds(Arrays.asList(ids));//要删除的数据
shangpinOrderService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 批量上传
*/
@RequestMapping("/batchInsert")
public R save( String fileName, HttpServletRequest request){
logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
List<ShangpinOrderEntity> shangpinOrderList = new ArrayList<>();//上传的东西
Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
Date date = new Date();
int lastIndexOf = fileName.lastIndexOf(".");
if(lastIndexOf == -1){
return R.error(511,"该文件没有后缀");
}else{
String suffix = fileName.substring(lastIndexOf);
if(!".xls".equals(suffix)){
return R.error(511,"只支持后缀为xls的excel文件");
}else{
URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
File file = new File(resource.getFile());
if(!file.exists()){
return R.error(511,"找不到上传文件,请联系管理员");
}else{
List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
dataList.remove(0);//删除第一行,因为第一行是提示
for(List<String> data:dataList){
//循环
ShangpinOrderEntity shangpinOrderEntity = new ShangpinOrderEntity();
// shangpinOrderEntity.setShangpinOrderUuidNumber(data.get(0)); //订单号 要改的
// shangpinOrderEntity.setAddressId(Integer.valueOf(data.get(0))); //收货地址 要改的
// shangpinOrderEntity.setShangpinId(Integer.valueOf(data.get(0))); //商品 要改的
// shangpinOrderEntity.setYonghuId(Integer.valueOf(data.get(0))); //用户 要改的
// shangpinOrderEntity.setBuyNumber(Integer.valueOf(data.get(0))); //购买数量 要改的
// shangpinOrderEntity.setShangpinOrderTruePrice(data.get(0)); //实付价格 要改的
// shangpinOrderEntity.setShangpinOrderTypes(Integer.valueOf(data.get(0))); //订单类型 要改的
// shangpinOrderEntity.setShangpinOrderPaymentTypes(Integer.valueOf(data.get(0))); //支付类型 要改的
// shangpinOrderEntity.setInsertTime(date);//时间
// shangpinOrderEntity.setCreateTime(date);//时间
shangpinOrderList.add(shangpinOrderEntity);
//把要查询是否重复的字段放入map中
//订单号
if(seachFields.containsKey("shangpinOrderUuidNumber")){
List<String> shangpinOrderUuidNumber = seachFields.get("shangpinOrderUuidNumber");
shangpinOrderUuidNumber.add(data.get(0));//要改的
}else{
List<String> shangpinOrderUuidNumber = new ArrayList<>();
shangpinOrderUuidNumber.add(data.get(0));//要改的
seachFields.put("shangpinOrderUuidNumber",shangpinOrderUuidNumber);
}
}
//查询是否重复
//订单号
List<ShangpinOrderEntity> shangpinOrderEntities_shangpinOrderUuidNumber = shangpinOrderService.selectList(new EntityWrapper<ShangpinOrderEntity>().in("shangpin_order_uuid_number", seachFields.get("shangpinOrderUuidNumber")));
if(shangpinOrderEntities_shangpinOrderUuidNumber.size() >0 ){
ArrayList<String> repeatFields = new ArrayList<>();
for(ShangpinOrderEntity s:shangpinOrderEntities_shangpinOrderUuidNumber){
repeatFields.add(s.getShangpinOrderUuidNumber());
}
return R.error(511,"数据库的该表中的 [订单号] 字段已经存在 存在数据为:"+repeatFields.toString());
}
shangpinOrderService.insertBatch(shangpinOrderList);
return R.ok();
}
}
}
}catch (Exception e){
e.printStackTrace();
return R.error(511,"批量插入数据异常,请联系管理员");
}
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
***monUtil.checkMap(params);
PageUtils page = shangpinOrderService.queryPage(params);
//字典表数据转换
List<ShangpinOrderView> list =(List<ShangpinOrderView>)page.getList();
for(ShangpinOrderView c:list)
dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
return R.ok().put("data", page);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id, HttpServletRequest request){
logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
ShangpinOrderEntity shangpinOrder = shangpinOrderService.selectById(id);
if(shangpinOrder !=null){
//entity转view
ShangpinOrderView view = new ShangpinOrderView();
BeanUtils.copyProperties( shangpinOrder , view );//把实体数据重构到view中
//级联表
AddressEntity address = addressService.selectById(shangpinOrder.getAddressId());
if(address != null){
BeanUtils.copyProperties( address , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setAddressId(address.getId());
}
//级联表
ShangpinEntity shangpin = shangpinService.selectById(shangpinOrder.getShangpinId());
if(shangpin != null){
BeanUtils.copyProperties( shangpin , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setShangpinId(shangpin.getId());
}
//级联表
YonghuEntity yonghu = yonghuService.selectById(shangpinOrder.getYonghuId());
if(yonghu != null){
BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setYonghuId(yonghu.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ShangpinOrderEntity shangpinOrder, HttpServletRequest request){
logger.debug("add方法:,,Controller:{},,shangpinOrder:{}",this.getClass().getName(),shangpinOrder.toString());
ShangpinEntity shangpinEntity = shangpinService.selectById(shangpinOrder.getShangpinId());
if(shangpinEntity == null){
return R.error(511,"查不到该跳蚤市场");
}
// Double shangpinNewMoney = shangpinEntity.getShangpinNewMoney();
if(false){
}
else if(shangpinEntity.getShangpinNewMoney() == null){
return R.error(511,"现价不能为空");
}
else if((shangpinEntity.getShangpinKucunNumber() -shangpinOrder.getBuyNumber())<0){
return R.error(511,"购买数量不能大于库存数量");
}
//计算所获得积分
Double buyJifen =0.0;
Integer userId = (Integer) request.getSession().getAttribute("userId");
YonghuEntity yonghuEntity = yonghuService.selectById(userId);
if(yonghuEntity == null)
return R.error(511,"用户不能为空");
if(yonghuEntity.getNewMoney() == null)
return R.error(511,"用户金额不能为空");
double balance = yonghuEntity.getNewMoney() - shangpinEntity.getShangpinNewMoney()*shangpinOrder.getBuyNumber();//余额
if(balance<0)
return R.error(511,"余额不够支付");
shangpinOrder.setShangpinOrderTypes(101); //设置订单状态为已支付
shangpinOrder.setShangpinOrderTruePrice(shangpinEntity.getShangpinNewMoney()*shangpinOrder.getBuyNumber()); //设置实付价格
shangpinOrder.setYonghuId(userId); //设置订单支付人id
shangpinOrder.setShangpinOrderUuidNumber(String.valueOf(new Date().getTime()));
shangpinOrder.setShangpinOrderPaymentTypes(1);
shangpinOrder.setInsertTime(new Date());
shangpinOrder.setCreateTime(new Date());
shangpinEntity.setShangpinKucunNumber( shangpinEntity.getShangpinKucunNumber() -shangpinOrder.getBuyNumber());
shangpinService.updateById(shangpinEntity);
shangpinOrderService.insert(shangpinOrder);//新增订单
//更新第一注册表
yonghuEntity.setNewMoney(balance);//设置金额
yonghuService.updateById(yonghuEntity);
YonghuEntity yonghuEntity1 = yonghuService.selectById(shangpinOrder.getYonghuId());
yonghuEntity1.setNewMoney(yonghuEntity1.getNewMoney()+shangpinOrder.getShangpinOrderTruePrice());//动态计算金额
yonghuService.updateById(yonghuEntity1);
return R.ok();
}
/**
* 退款
*/
@RequestMapping("/refund")
public R refund(Integer id, HttpServletRequest request){
logger.debug("refund方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
String role = String.valueOf(request.getSession().getAttribute("role"));
ShangpinOrderEntity shangpinOrder = shangpinOrderService.selectById(id);//当前表service
Integer buyNumber = shangpinOrder.getBuyNumber();
Integer shangpinId = shangpinOrder.getShangpinId();
if(shangpinId == null)
return R.error(511,"查不到该跳蚤市场");
ShangpinEntity shangpinEntity = shangpinService.selectById(shangpinId);
if(shangpinEntity == null)
return R.error(511,"查不到该跳蚤市场");
Double shangpinNewMoney = shangpinEntity.getShangpinNewMoney();
if(shangpinNewMoney == null)
return R.error(511,"跳蚤市场价格不能为空");
Integer userId = (Integer) request.getSession().getAttribute("userId");
YonghuEntity yonghuEntity = yonghuService.selectById(userId);
if(yonghuEntity == null)
return R.error(511,"用户不能为空");
if(yonghuEntity.getNewMoney() == null)
return R.error(511,"用户金额不能为空");
Double zhekou = 1.0;
//计算金额
Double money = shangpinEntity.getShangpinNewMoney() * buyNumber * zhekou;
//计算所获得积分
Double buyJifen = 0.0;
yonghuEntity.setNewMoney(yonghuEntity.getNewMoney() + money); //设置金额
YonghuEntity yonghuEntity1 = yonghuService.selectById(shangpinOrder.getYonghuId());
yonghuEntity1.setNewMoney(yonghuEntity1.getNewMoney()-money);//动态计算金额
yonghuService.updateById(yonghuEntity1);
shangpinEntity.setShangpinKucunNumber(shangpinEntity.getShangpinKucunNumber() + buyNumber);
shangpinOrder.setShangpinOrderTypes(102);//设置订单状态为已退款
shangpinOrderService.updateById(shangpinOrder);//根据id更新
yonghuService.updateById(yonghuEntity);//更新用户信息
shangpinService.updateById(shangpinEntity);//更新订单中跳蚤市场的信息
return R.ok();
}
/**
* 发货
*/
@RequestMapping("/deliver")
public R deliver(Integer id ){
logger.debug("refund:,,Controller:{},,ids:{}",this.getClass().getName(),id.toString());
ShangpinOrderEntity shangpinOrderEntity = shangpinOrderService.selectById(id);
shangpinOrderEntity.setShangpinOrderTypes(103);//设置订单状态为已发货
shangpinOrderService.updateById( shangpinOrderEntity);
return R.ok();
}
/**
* 收货
*/
@RequestMapping("/receiving")
public R receiving(Integer id){
logger.debug("refund:,,Controller:{},,ids:{}",this.getClass().getName(),id.toString());
ShangpinOrderEntity shangpinOrderEntity = shangpinOrderService.selectById(id);
shangpinOrderEntity.setShangpinOrderTypes(104);//设置订单状态为收货
shangpinOrderService.updateById( shangpinOrderEntity);
return R.ok();
}
}