背景
困扰交易市场的许多问题当中,生鲜交易管理一定是交易市场不敢忽视的一块。但是管理好生鲜交易又面临很多麻烦需要解决,例如有几个方面:第一,生鲜市场往往人数都比较多,如何保证能够管理到每一个商家,如何在工作琐碎,记录繁多的情况下将生鲜交易的当前情况反应给领导相关部门决策,等等。在此情况下开发一款生鲜交易系统,于是乎变得非常合乎时宜。
系统架构
考虑到实际生活中在生鲜交易方面的需要以及对该系统认真的分析,将系统权限按管理员,用户这两类涉及用户划分。
(a) 管理员;管理员使用本系统涉到的功能主要有:首页,个人中心,用户管理,商家管理,生鲜信息管理,生鲜分类管理,广告信息管理,生鲜仓库管理,生鲜出库管理,管理等功能。管理员用例图如图:
(b) 商家;商家使用本系统涉到的功能主要有:首页,个人中心,生鲜信息管理,广告信息管理,生鲜仓库管理,生鲜出库管理,订单管理等功能。商家用例图如图:
©用户主要包括首页、个人中心功能。用户用例图如图:
网站整体功能如下图所示:
数据库设计
系统ER图
生鲜信息实体图如图:
用户注册实体图如图:
数据库表设计
由于涉及的数据库表较多,此处只展示部分的数据库表。
系统实现
生鲜交易系统分为前台功能和后台功能,包括管理员、用户和商家三个角色,根据每个用户权限的不同,操作的功能也会不一样,接下来对生鲜交易系统的功能模块进行分析。
系统功能模块
用户系统,在系统首页可以查看首页,生鲜信息,公告信息,个人中心,后台管理,购物车等内容,并进行详细操作,如图:
生鲜信息,在生鲜信息页面可以查看生鲜名称,价格,生鲜类型,打捞日期,保质期,商店编号,商店名称,联系电话,点击次数等内容,并进行评论,添加到购物车,立即购买,点我收藏等操作,如图:
商家功能
商家登录系统后,可以对首页,个人中心,生鲜信息管理,广告信息管理,生鲜仓库管理,生鲜出库管理,订单管理等进行相应的操作管理,如图:
生鲜信息管理,在生鲜信息管理页面可以对索引,生鲜名称,生鲜类型,保质期,打捞日期,生鲜图片,商店编号,商店名称,联系电话,价格,审核回复,审核状态,等内容进行详情,修改,查看评论和删除等操作,如图:
代码实现
由于涉及的代码较多,此处只展示部分代码。
生鲜信息
@RestController
@RequestMapping("/shengxianxinxi")
public class ShengxianxinxiController {
@Autowired
private ShengxianxinxiService shengxianxinxiService;
@Autowired
private StoreupService storeupService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ShengxianxinxiEntity shengxianxinxi,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("shangjia")) {
shengxianxinxi.setShangdianbianhao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<ShengxianxinxiEntity> ew = new EntityWrapper<ShengxianxinxiEntity>();
PageUtils page = shengxianxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shengxianxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ShengxianxinxiEntity shengxianxinxi,
HttpServletRequest request){
EntityWrapper<ShengxianxinxiEntity> ew = new EntityWrapper<ShengxianxinxiEntity>();
PageUtils page = shengxianxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shengxianxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( ShengxianxinxiEntity shengxianxinxi){
EntityWrapper<ShengxianxinxiEntity> ew = new EntityWrapper<ShengxianxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( shengxianxinxi, "shengxianxinxi"));
return R.ok().put("data", shengxianxinxiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(ShengxianxinxiEntity shengxianxinxi){
EntityWrapper< ShengxianxinxiEntity> ew = new EntityWrapper< ShengxianxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( shengxianxinxi, "shengxianxinxi"));
ShengxianxinxiView shengxianxinxiView = shengxianxinxiService.selectView(ew);
return R.ok("查询生鲜信息成功").put("data", shengxianxinxiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
ShengxianxinxiEntity shengxianxinxi = shengxianxinxiService.selectById(id);
shengxianxinxi.setClicknum(shengxianxinxi.getClicknum()+1);
shengxianxinxi.setClicktime(new Date());
shengxianxinxiService.updateById(shengxianxinxi);
return R.ok().put("data", shengxianxinxi);
}