基于JAVA+Vue+SpringBoot+MySQL的免税店商城管理系统,包含了顾客模块、免税物品模块、免税费率模块、购买登记模块和免税审核模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,免税店商城管理系统基于角色的访问控制,给免税管理员、免税工作人员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。
本项目是基于Vue和SpringBoot的免税店商城管理系统,是一个前后端分离的项目,是当下软件开发主流模式。
该项目中包括三个角色,分别是免税店管理员、审核员、系统管理员。对于免税店管理员而言,免税店管理员主要负责对顾客信息和购买物品进行登记并上传到系统,以便审核员审核顾客信息。对于审核员而言,审核员负责发布免税最新比例在系统中,设置各类商品的免税比例,方便物品税率改变后物品价值计算,以及免税物品发货审核,经过审核之后的商品才会发货。对于系统管理员而言,系统管理员负责在审核员审核顾客不满足购买免税店商品条件之后的会员卡退费,以及对会员和审核员的登陆账号、角色、权限进行配置,还有维护数据库稳定。
登录方面,系统前端将账号、密码、验证码转化为 JSON 格式,使用 ajax 请求后端 API 接口,后端接口完成业务逻辑判断,再将登陆结果返回给前端,前端将根据返回结果判断接下来的页面跳转。登陆页面包含账号密码和手机号码两个选择来进行登录。输入账号、密码和验证码后点击登陆,即可登陆系统,此处账号密码不能为空,如果密码输入错误,系统将进行密码错误提示,不能登陆系统,如果验证码过期,则需要重新获取验证。登陆鉴权功能由后端完成。 此系统用于三类人群进行登陆、使用,分别是免税店管理员、系统管理员、审核员。界面方面块使用了 View UI 的 Table 组件,和 Form 组件作为搜索栏。添加弹窗使用了 View UI 的 Drawer 抽屉组件。确认弹窗使用了 View UI 的 Modal 组件。
采用的研究方法主要是文献研究法、功能分析法、描述研究法。首先文献研究法是根据所研究的目的或课题,通过调查文献获取资料,从而全面地、正确地了解掌握免税店商城管理方面的相关知识。然后用描述研究法对于相关的技术进行进一步了解,最后通过功能分析法对要完成的设计进行功能模块具体分析,从而实现整个系统。
首先是进行文献分析。大量收集有关免税店商城管理系统的文献,进行研究。为后续的系统分析建立基础。
第二是系统分析。学习有关SpringBoot、Vue、MySQL等技术以及免税店商城管理系统相关的技术。然后对系统进行可行性和需求分析,包括对该系统操作、技术和管理员等方面的分析论证,以及对系统的登录、审核管理、顾客信息登记功能进行需求分析论证。
第三是系统设计。先对设计思想、目标和系统结构进行简单概述。然后对各角色的实现要求进行分析,最后根据以上功能涉及的数据库结构设计进行详细描述,展示该系统的全部功能。
最后是系统开发。对以上的分析进行逐步开发设计,搭建后台,实现框架后填充各个功能,并且不断完善不足之处。
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询免税种类")
public Result<IPage<Insurance>> getByPage(@ModelAttribute Insurance insurance ,@ModelAttribute PageVo page){
QueryWrapper<Insurance> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(insurance.getTitle())) {
qw.like("title",insurance.getTitle());
}
if(!ZwzNullUtils.isNull(insurance.getContent())) {
qw.like("content",insurance.getContent());
}
IPage<Insurance> data = iInsuranceService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Insurance>>().setData(data);
}
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询物品档案")
public Result<IPage<Operation>> getByPage(@ModelAttribute Operation operation ,@ModelAttribute PageVo page){
QueryWrapper<Operation> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(operation.getTitle())) {
qw.like("title",operation.getTitle());
}
if(!ZwzNullUtils.isNull(operation.getType())) {
qw.like("type",operation.getType());
}
if(!ZwzNullUtils.isNull(operation.getDescribed())) {
qw.like("described",operation.getDescribed());
}
IPage<Operation> data = iOperationService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Operation>>().setData(data);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增顾客")
public Result<Roster> insert(Roster roster){
Insurance insurance = iInsuranceService.getById(roster.getInsuranceId());
if(insurance != null) {
roster.setInsuranceName(insurance.getTitle());
}
iRosterService.saveOrUpdate(roster);
return new ResultUtil<Roster>().setData(roster);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增消费记录")
public Result<SeeDoctor> insert(SeeDoctor seeDoctor){
Roster roster = iRosterService.getById(seeDoctor.getUserId());
if(roster == null) {
return ResultUtil.error("顾客不存在");
}
seeDoctor.setUserName(roster.getName());
seeDoctor.setDate(DateUtil.today());
iSeeDoctorService.saveOrUpdate(seeDoctor);
roster.setMoney(seeDoctor.getBalanceNew());
iRosterService.saveOrUpdate(roster);
// 生成审核单
Examine examine = new Examine();
examine.setUserId(roster.getId());
examine.setUserName(roster.getName());
examine.setExemptionId(roster.getInsuranceId());
examine.setExemptionName(roster.getInsuranceName());
examine.setMoney(seeDoctor.getPriceYou());
examine.setStatus(0);
examine.setMessage("");
examine.setRemark("");
iExamineService.saveOrUpdate(examine);
return new ResultUtil<SeeDoctor>().setData(seeDoctor);
}
@RequestMapping(value = "/audit", method = RequestMethod.POST)
@ApiOperation(value = "审核免税")
public Result<Object> audit(@RequestParam String id,@RequestParam String msg){
Examine examine = iExamineService.getById(id);
if(examine == null) {
return ResultUtil.error("审核单不存在");
}
examine.setStatus(1);
examine.setMessage(msg);
iExamineService.saveOrUpdate(examine);
return ResultUtil.success();
}
下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!