基于javaweb+mysql的springboot食品溯源系统(java+springboot+maven+mybatis+vue+mysql)
运行环境
Java≥8、MySQL≥5.7、Node.js≥10
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot食品溯源系统(java+springboot+maven+mybatis+vue+mysql)
一、项目运行 环境配置:
Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。
项目技术:
Springboot + Maven + mybatis+ Vue 等等组成,B/S模式 + Maven管理等等。
chainModel.setEname(entController.selectOne(chainModel.getEid()).getEname());
chainModel.setTime(orderTbl.getConfirmTime());
chainModel.setEtype(entService.queryModelById(chainModel.getEid()).getEtype());
chain.add(chainModel);
if(!it.hasNext())
{
ChainModel temp=new ChainModel(chainModel);
temp.setEid(orderTbl.getInEid());
temp.setEtype(entService.queryModelById(temp.getEid()).getEtype());
temp.setEname(entController.selectOne(temp.getEid()).getEname());
if(orderTbl.getGtype()==0)//整只
{
AnimalModel animalModel=animalService.queryModelById(orderTbl.getGid());
result.setInfo(animalModel);
}
else if(orderTbl.getGtype()==1)//切割
{
ProductModel productModel=productService.queryModelById(orderTbl.getGid());
result.setInfo(productModel);
}
chain.add(temp);
}
}
result.setDetail(chain);
result.setSuccess(true);
result.setMsg("获取链条成功");
return result;
}*/
/**获取所有证书类型数据
*
* @return Result对象
*/
public Result getAllLicType() {
Result result=new Result();
List<TypeTbl> list=new ArrayList<TypeTbl>();
for (Integer i=1;i<=100;i++) {
TypeTbl typeTbl=typeTblService.queryById(i);
if(typeTbl!=null) {
list.add(typeTbl);
}
else{
break;
}
}
result.setSuccess(true);
result.setMsg("所有证书类型查询完成");
result.setDetail(list);
return result;
}
//邮箱格式验证
Result result=new Result();
result.setSuccess(false);
String regEx="^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4})*$";
Pattern pattern=Pattern.compile(regEx);
Matcher matcher;
if(email!=null){
matcher=pattern.matcher(email);
if(!matcher.matches()){
result.setMsg("邮箱格式错误");
System.out.println("邮箱格式错误");
return result;
}
}
Ent ent=new Ent();
ent.setEid(eid);
ent.setEtype(etype);
ent.setTel(tele);
ent.setEname(ename);
result.setSuccess(true);
result.setMsg("修改成功");
ent=entService.update(ent);
ent.setPwd("");
result.setDetail(ent);
return result;
}
/**
* 修改密码
* @param
* @return
*/
@PostMapping("editPass")
public Result editPassword(Integer eid,String oldPass,String newPass) {
//邮箱格式验证
Result result=new Result();
result.setSuccess(false);
String regEx="^[\\w\\d~!@#$%^&*_.-]{8,64}$";
Pattern pattern=Pattern.compile(regEx);
Matcher matcher=pattern.matcher(newPass);
if(!matcher.matches()){
result.setMsg("新密码格式错误");
System.out.println("新密码格式错误");
return result;
}
Ent ent=entService.queryById(eid);
if (ent==null){
result.setMsg("企业编号错误");
System.out.println("企业编号错误");
return result;
}
BCryptPasswordEncoder bCryptPasswordEncoder=new BCryptPasswordEncoder();
if(!bCryptPasswordEncoder.matches(oldPass,ent.getPwd())) {
*
* @param bname 饲养员名字
* @param eid 企业id
* @return 单条数据
*/
@GetMapping("insertOne")
public Breeder insert(String bname,Integer eid) {
Breeder breeder=new Breeder();
breeder.setBname(bname);
breeder.setEid(eid);
return breederService.insert(breeder);
}
/**
* 通过企业id查询多条数据
*
* @param eid 饲养员id
* @return 单条数据
*/
@GetMapping("selectLine")
public List<Breeder> selectAllByEid(Integer eid)
{
return this.breederService.queryAllByEid(eid);
}
/**
* 更新数据
*
* @param bid 主键
* @param bname 饲养员名字
* @param eid 企业id
* @return 单条数据
*/
@GetMapping("updateOne")
public Breeder update(Integer bid,String bname,Integer eid) {
Breeder breeder=new Breeder();
breeder.setBid(bid);
breeder.setEid(eid);
breeder.setBname(bname);
return breederService.update(breeder);
}
/**
* 删除数据
*
* @param bid 主键
* @return 是否删除了数据的布尔值
*/
@GetMapping("deleteOne")
public boolean deleteById(Integer bid) {
return breederService.deleteById(bid);
}
/**
* 查找所有饲养的牲畜数据
{
id=animalService.queryById(gid).getLastOid();
if(orderTblService.queryById(id)==null){
result.setMsg("牲畜信息记录有误");
return result;
}
}
else if(type==1)//切割后
{
id=productService.queryById(gid).getLastOid();
if(orderTblService.queryById(id)==null){
result.setMsg("产品信息记录有误");
return result;
}
}
else{
result.setMsg("输入类型错误");
return result;
}
OrderTbl tempOT=this.orderTblService.queryById(id);
List<OrderTbl> List_OT=new ArrayList<OrderTbl>();
List_OT.add(tempOT);
while(tempOT.getLastOid()!=null)
{
tempOT=this.orderTblService.queryById(tempOT.getLastOid());
List_OT.add(0,tempOT);
}
Iterator<OrderTbl> iterator= List_OT.listIterator();
while(iterator.hasNext())
{
System.out.println(iterator.next().getOid());
}
List<ChainModel> chain=new ArrayList<ChainModel>();
Iterator it=List_OT.listIterator();
while (it.hasNext())
{
ChainModel chainModel=new ChainModel();
OrderTbl orderTbl=(OrderTbl)it.next();
chainModel.setEid(orderTbl.getOutEid());
EntModel entModel1=entService.queryModelById(chainModel.getEid());
chainModel.setEname(entModel1.getEname());
chainModel.setEtype(entModel1.getEtype());
chainModel.setEid(orderTbl.getOutEid());
chainModel.setTime(orderTbl.getConfirmTime());
chain.add(chainModel);
if(!it.hasNext())
{
@Component
public class TokenInterceptor implements HandlerInterceptor
{
private Logger logger=LoggerFactory.getLogger(TokenInterceptor.class);
/**
* 忽略拦截的url
*/
private String urls[] = {
"/ent/login",
"/ent/register",
"/admin/login",
"/admin/register"
};
@Autowired
private EntService entService;
@Autowired
private AdminAcctService adminAcctService;
/**
* 进入controller层之前拦截请求
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
{
Map<String, String[]> parameterMap = new HashMap<>(request.getParameterMap());
*
* @param oid 主键
* @return 是否成功
*/
@GetMapping("deleteOne")
public boolean deleteById(Integer oid) {
return this.orderTblService.deleteById(oid);
}
/**
* 修改数据
*/
//http://127.0.0.1:11451/orderTbl/updateOne?oid=1
@GetMapping("updateOne")
public OrderTbl update(Integer oid, Integer outEid, Integer inEid,Integer lastOid,Integer gid,Short gtype, String confirmTime,String plate,String info) {
OrderTbl orderTbl=new OrderTbl();
orderTbl.setOid(oid);
orderTbl.setOutEid(outEid);
orderTbl.setInEid(inEid);
orderTbl.setLastOid(lastOid);
orderTbl.setGid(gid);
orderTbl.setGtype(gtype);
orderTbl.setConfirmTime(confirmTime);
orderTbl.setPlate(plate);
orderTbl.setInfo(info);
return this.orderTblService.update(orderTbl);
}
}
OrderTbl neworder=new OrderTbl();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time=sdf.format(new Date());
neworder.setPlate(plate);
neworder.setOutEid(outeid);
neworder.setInEid(eid);
neworder.setGid(gid);
neworder.setGtype((short)1);
neworder.setInfo(info);
neworder.setConfirmTime(time);
neworder.setLastOid(product.getLastOid());
OrderTbl orderTbl=orderTblService.insert(neworder);
result.setDetail(orderTbl);
result.setSuccess(true);
product.setLastOid(orderTbl.getOid());
productService.update(product);
result.setMsg("收货成功");
}
else{
result.setMsg("货物类型错误");
return result;
}
return result;
}
/**
* 通过EID查询多条收货订单
*
* @param eid 主键
* @return 实例对象
*/
@GetMapping("order/listIn")
@Transactional(readOnly = true)
public Result List_In(Integer eid){
Result result=new Result();
result.setSuccess(false);
List<OrderTblModel> list=orderTblService.queryModelByInEId(eid);
if(list.isEmpty()){
result.setMsg("该企业下无订单");
return result;
}
result.setDetail(list);
result.setSuccess(true);
result.setMsg("收货订单查询成功");
return result;
}
/**
* 通过EID查询多条出货订单
*
* @param eid 主键
* @return 实例对象
* 修改企业信息
* @param eid 企业id
* @param etype 企业类型
* @param tele 电话
* @param ename 企业名字
* @param email 邮箱
* @return
*/
@PostMapping("editEntDetail")
public Result EditEnt(Integer eid,Integer etype,String tele,String ename,String email){
//邮箱格式验证
Result result=new Result();
result.setSuccess(false);
String regEx="^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4})*$";
Pattern pattern=Pattern.compile(regEx);
Matcher matcher;
if(email!=null) {
matcher=pattern.matcher(email);
if (!matcher.matches()) {
result.setMsg("邮箱格式错误");
System.out.println("邮箱格式错误");
return result;
}
}
Ent ent=new Ent();
ent.setEid(eid);
ent.setEtype(etype);
ent.setTel(tele);
ent.setEname(ename);
result.setSuccess(true);
result.setMsg("修改成功");
ent=entService.update(ent);
ent.setPwd("");
result.setDetail(ent);
return result;
}
/**
*重置企业账号token
* @param eid 企业id
* @return
*/
@PostMapping("resetEntToken")
public Result ResetEntToken(Integer eid){
Result result=new Result();
result.setSuccess(false);
if(eid==null){
result.setMsg("eid不可为空");
}
result.setDetail(breeder);
result.setMsg("查询牲畜信息成功");
result.setSuccess(true);
return result;
}
}
//http://127.0.0.1:11451/adminAcct/selectOne/1
//http://127.0.0.1:11451/adminAcct/selectOne?id=1
//http://127.0.0.1:11451/adminAcct/selectLine?offset=0&limit=3
//http://127.0.0.1:11451/adminAcct/insertOne?id=6&username=lkj&pwd=123
//http://127.0.0.1:11451/adminAcct/deleteOne?id=4
//http://127.0.0.1:11451/adminAcct/updateOne?id=5&username=khhj&pwd=12hh
/**
* (AdminAcct)表控制层
*管理员账号
*/
@CrossOrigin
@RestController
@RequestMapping("admin")
}
/**@PostMapping("")
public Result lic_Pass(Integer lid){
Result result=new Result();
result.setSuccess(false);
Lic lic=licService.queryById(lid);
if(lic==null){
result.setMsg("证书id错误");
return result;
}
result.setSuccess(true);
result.setMsg("证书通过成功");
lic.setLicState((short)1);
result.setDetail(licService.update(lic));
return result;
}
@PostMapping("LicNoPass")
public Result lic_NoPass(Integer lid){
Result result=new Result();
result.setSuccess(false);
Lic lic=licService.queryById(lid);
if(lic==null){
result.setMsg("证书id错误");
return result;
}
result.setSuccess(true);
result.setMsg("证书不通过成功");
lic.setLicState((short)2);
result.setDetail(licService.update(lic));
return result;
}
*/
//企业信息相关
/**
* 企业信息筛选
* @param username 用户名
* @param ename 企业名
* @param etype 企业类型
* @param tel 电话
* @param email 邮箱
* @return
*/
@GetMapping("userList")
public Result Account_Screen(String username,String ename,Integer etype,String tel,String email){
Result result=new Result();
result.setSuccess(false);
String regEx = "^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4})*$";
Pattern pattern = Pattern.compile(regEx);
Matcher matcher ;
/**if(email!=null) {
if(entService.queryById(eid)==null) {
result.setMsg("企业不存在");
result.setDetail(null);
return result;
}
List<Stock> list=stockService.queryAllByEId(eid);
if(list.isEmpty()){
result.setMsg("该企业下无货架信息");
result.setDetail(null);
return result;
}
result.setDetail(list);
result.setMsg("查询货架记录信息成功");
result.setSuccess(true);
return result;
}
/**
* 查询牲畜数据
* @param eid 饲养员id
* @return Result对象
*/
@GetMapping("animal/list")
@Transactional(readOnly = true)
public Result SelectAllAnimal(Integer eid){
Result result=new Result();
result.setSuccess(false);
if(entService.queryById(eid)==null) {
result.setMsg("企业不存在");
result.setDetail(null);
return result;
}
List<BreederModel> list_breeder=breederService.queryModelByEId(eid);
if(list_breeder.isEmpty()){
result.setMsg("该企业下无饲养员信息");
result.setDetail(null);
return result;
}
Iterator iterator=list_breeder.listIterator();
List<AnimalModel> list_animal=new ArrayList<AnimalModel>();
while (iterator.hasNext()) {
BreederModel temp=(BreederModel) iterator.next();
List<AnimalModel> list=animalService.queryModelByBId(temp.getBid());
list_animal.addAll(list);
}
result.setDetail(list_animal);
result.setMsg("查询牲畜信息成功");
result.setSuccess(true);
return result;
}
/**
* 查询牲畜数据
* @param eid 主键
* @return Result对象
if(email!=null) {
//邮箱格式验证
matcher = pattern.matcher(email);
if (!matcher.matches()) {
result.setMsg("邮箱格式错误");
System.out.println("邮箱格式错误");
return result;
}
}
//用户名格式验证
regEx="^[\\w\\d_]{4,16}$";
pattern=Pattern.compile(regEx);
matcher=pattern.matcher(username);
if(!matcher.matches()){
result.setMsg("用户名格式错误");
System.out.println("用户名格式错误");
return result;
}
//密码格式验证
regEx="^[\\w\\d~!@#$%^&*_.-]{8,64}$";
pattern=Pattern.compile(regEx);
matcher=pattern.matcher(password);
if(!matcher.matches()){
result.setMsg("密码格式错误");
System.out.println("密码格式错误");
return result;
}
temp=new Ent();
temp.setUsername(username);
password=bCryptPasswordEncoder.encode(password);
temp.setPwd(password);
temp.setEtype(etype);
temp.setEname(ename);
temp.setTel(tele);
String token=UUID.randomUUID().toString().replaceAll("-","");
temp.setToken(token);
temp.setEmail(email);
this.entService.insert(temp);
temp.setPwd("");
result.setDetail(temp);
result.setMsg("加工完成");
result.setDetail(product);
result.setSuccess(true);
return result;
}
}
@WebFilter(urlPatterns = "/*",filterName ="RequestFilter")
public class RequestFilter implements Filter {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
EntService entService;
@Autowired
AdminAcctService adminAcctService;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
String token = request.getHeader("token");
String url = request.getRequestURI();
return result;
}
}
@SpringBootTest
public class test {
@Autowired
private OrderTblService orderTblService;
@Autowired
private AnimalController AC;
@Autowired
private BreederController BC;
@Autowired
private AdminAcctController adminAcctController;
@Autowired
private EntController entController;
@Autowired
private ProductController PC;
@Autowired
private LicService LS;
@Autowired
private EntService ES;
@Autowired
private AnimalService AS;
@Autowired
private BreederService BS;
@Autowired
private ButcherService BCS;
@Autowired
private ProductService PS;
@Autowired
//Result result=EC.login("dasda","1545");
//EC.register("clearlovetu","1145141",102,"1919810","屠宰厂");
/**企业账号注册登陆
*
System.out.println(EC.register("clearloveyangzhi","1145141",1,"1919810","养猪厂"));
Result result= EC.login("clearloveyangzhi","1145141");
result.getDetail();
System.out.println(result);
*/
/**状态码
System.out.println(StateCode.Login_Fail.getState());
System.out.println(StateCode.Login_Fail.getCodenum());
System.out.println(StateCode.Login_Fail.toString());
*/
/**加密
String temp=bCryptPasswordEncoder.encode("114514");
System.out.println(temp);
System.out.println(bCryptPasswordEncoder.matches("114514",temp));
*/
/**按企业编号生成列表
Iterator<Breeder> it=BC.selectAllByEid(1).listIterator();
while (it.hasNext())
{
System.out.println(it.next());
}*/
}
}
if(token==null){
}
String urls[] = {
"/ent/login",
"/ent/register",
"/admin/login",
"/admin/register"
};
for (String item : urls){
if (item.equals(url)){
filterChain.doFilter(servletRequest, servletResponse);
return ;
}
}
if(url.startsWith("/admin")) {
AdminAcct adminAcct=adminAcctService.queryByToken(token);
if(adminAcct==null){
filterChain.doFilter(servletRequest, servletResponse);
return ;
}
extraParams.put("id", new String[]{String.valueOf(adminAcct.getId())});
System.out.println("id:"+String.valueOf(adminAcct.getId()));
}
else if(url.startsWith("/ent")){
Ent ent=entService.queryByToken(token);
if(ent==null){
filterChain.doFilter(servletRequest, servletResponse);
return ;
}
extraParams.put("eid", new String[]{String.valueOf(ent.getEid())});
System.out.println("eid:"+String.valueOf(ent.getEid()));
}
//利用原始的request对象创建自己扩展的request对象并添加自定义参数
ParameterServletRequestWrapper requestParameterWrapper = new ParameterServletRequestWrapper(request);
requestParameterWrapper.addAllParameters(extraParams);
filterChain.doFilter(requestParameterWrapper, servletResponse);
}
@Override
public void destroy() {
}
}
//http://127.0.0.1:11451/breeder/selectOne?id=1
Lic lic = new Lic();
lic.setLicType(lictype);
lic.setSerNum(sernum);
lic.setLicState(licstate);
list_lic=licService.queryAllModel(lic);
}
if(list_lic.isEmpty()){
result.setMsg("无此类证书");
return result;
}
result.setMsg("筛选成功");
result.setSuccess(true);
result.setDetail(list_lic);
return result;
}
/**
* 删除证书
* @param lid 证书编号
* @return Result
*/
@PostMapping("licdelete")
public Result Lic_Delete(Integer lid){
Result result=new Result();
result.setSuccess(false);
if(licService.deleteById(lid)) {
result.setSuccess(true);
result.setMsg("删除成功");
return result;
}
else {
result.setMsg("删除失败,证书不存在");
return result;
}
}
/**@PostMapping("")
public Result lic_Pass(Integer lid){
Result result=new Result();
result.setSuccess(false);
Lic lic=licService.queryById(lid);