Java 實(shí)戰(zhàn)練手項(xiàng)目之校園超市管理系統(tǒng)的實(shí)現(xiàn)流程
前端模板框架為Bootstrap,系統(tǒng)分為前臺(tái)和后臺(tái)。后臺(tái)主要為管理員角色,功能有:商品類型管理、商品管理、訂單管理、會(huì)員管理、管理員管理等。前臺(tái)用戶功能有:登錄、注冊、查看商品、加入購物車、付款、查看訂單、個(gè)人中心等。該系統(tǒng)總共9張表
運(yùn)行環(huán)境:windows/linux、jdk1.8、mysql5.x、maven3.5\3.6、tomcat7.0






前端商品控制器:
/**
* <p>
* 前端控制器
* </p>
*/
@RestController
@RequestMapping("/goods")
public class GoodsController {
@Autowired
private GoodsService goodsService;
@Autowired
private ProviderService providerService;
@Autowired
private CategoryService categoryService;
/**
* 商品模糊查詢
*
* @param
* @return
*/
@SysLog("商品查詢操作")
@RequestMapping("/goodsList")
public DataGridViewResult goodsList(GoodsVO goodsVO) {
//創(chuàng)建分頁信息 參數(shù)1 當(dāng)前頁 參數(shù)2 每頁顯示條數(shù)
IPage<Goods> page = new Page<>(goodsVO.getPage(), goodsVO.getLimit());
QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(goodsVO.getProviderid() != null && goodsVO.getProviderid() != 0, "providerid", goodsVO.getProviderid());
queryWrapper.like(!StringUtils.isEmpty(goodsVO.getGname()), "gname", goodsVO.getGname());
IPage<Goods> goodsIPage = goodsService.page(page, queryWrapper);
List<Goods> records = goodsIPage.getRecords();
for (Goods goods : records) {
Provider provider = providerService.getById(goods.getProviderid());
if (null != provider) {
goods.setProvidername(provider.getProvidername());
}
}
return new DataGridViewResult(goodsIPage.getTotal(), records);
}
/**
* 添加商品信息
*
* @param goods
* @return
*/
@SysLog("商品添加操作")
@PostMapping("/addgoods")
public Result addGoods(Goods goods) {
String id = RandomStringUtils.randomAlphanumeric(8);
if (goods.getGoodsimg()!=null&&goods.getGoodsimg().endsWith("_temp")){
String newName = AppFileUtils.renameFile(goods.getGoodsimg());
goods.setGoodsimg(newName);
}
goods.setGnumbering(id);
boolean bool = goodsService.save(goods);
if (bool) {
return Result.success(true, "200", "添加成功!");
}
return Result.error(false, null, "添加失??!");
}
/**
* 修改商品信息
*
* @param goods
* @return
*/
@SysLog("商品修改操作")
@PostMapping("/updategoods")
public Result updateGoods(Goods goods) {
//商品圖片不是默認(rèn)圖片
if (!(goods.getGoodsimg()!=null&&goods.getGoodsimg().equals(Constast.DEFAULT_IMG))){
if (goods.getGoodsimg().endsWith("_temp")){
String newName = AppFileUtils.renameFile(goods.getGoodsimg());
goods.setGoodsimg(newName);
//刪除原先的圖片
String oldPath = goodsService.getById(goods.getGid()).getGoodsimg();
AppFileUtils.removeFileByPath(oldPath);
}
}
boolean bool = goodsService.updateById(goods);
if (bool) {
return Result.success(true, "200", "修改成功!");
}
return Result.error(false, null, "修改失敗!");
}
/**
* 刪除單條數(shù)據(jù)
*
* @param id
* @return
*/
@SysLog("商品刪除操作")
@RequestMapping("/deleteOne")
public Result deleteOne(int id) {
boolean bool = goodsService.removeById(id);
if (bool) {
return Result.success(true, "200", "刪除成功!");
}
return Result.error(false, null, "刪除失??!");
}
/**
* 根據(jù)id查詢當(dāng)前商品擁有的類別
*
* @param id
* @return
*/
@RequestMapping("/initGoodsByCategoryId")
public DataGridViewResult initGoodsByCategoryId(int id) {
List<Map<String, Object>> mapList = null;
try {
//查詢所有類別列表
mapList = categoryService.listMaps();
//根據(jù)商品id查詢商品擁有的類別
Set<Integer> cateIdList = categoryService.findGoodsByCategoryId(id);
for (Map<String, Object> map : mapList) {
//定義標(biāo)記 默認(rèn)不選中
boolean flag = false;
int cateId = (int) map.get("cateid");
for (Integer cid : cateIdList) {
if (cid == cateId) {
flag = true;
break;
}
}
map.put("LAY_CHECKED", flag);
}
} catch (Exception e) {
e.printStackTrace();
}
return new DataGridViewResult(Long.valueOf(mapList.size()), mapList);
}
/**
* 根據(jù)商品id加載商品信息
* @param goodsid
* @return
*/
@GetMapping("/loadGoodsById")
public DataGridViewResult loadGoodsById(int goodsid) {
QueryWrapper<Goods> goodsQueryWrapper = new QueryWrapper<>();
goodsQueryWrapper.eq(goodsid != 0, "gid", goodsid);
Goods goods = goodsService.getById(goodsid);
return new DataGridViewResult(goods);
}
/**
* 為商品分配類別
*
* @param categoryids
* @param goodsid
* @return
*/
@SysLog("類別添加操作")
@RequestMapping("/saveGoodsCategory")
public Result saveGoodsCategory(String categoryids, int goodsid) {
try {
if (goodsService.saveGoodsCategory(goodsid, categoryids)) {
return Result.success(true, null, "分配成功");
}
} catch (Exception e) {
e.printStackTrace();
}
return Result.error(false, null, "分配失敗");
}
/**
* 加載下拉框
*
* @return
*/
@RequestMapping("/loadAllGoods")
public DataGridViewResult loadAllGoods() {
QueryWrapper<Goods> queryWrapper = new QueryWrapper<>();
List<Goods> list = goodsService.list(queryWrapper);
return new DataGridViewResult(list);
}
/**
* 根據(jù)供應(yīng)商查商品下拉框
*
* @param providerid
* @return
*/
@RequestMapping("/loadGoodsByProvidreId")
public DataGridViewResult loadGoodsByProvidreId(Integer providerid) {
QueryWrapper<Goods> goodsQueryWrapper = new QueryWrapper<>();
goodsQueryWrapper.eq(providerid != null, "providerid", providerid);
List<Goods> list = goodsService.list(goodsQueryWrapper);
for (Goods goods : list) {
Provider provider = providerService.getById(goods.getProviderid());
if (null != provider) {
goods.setProvidername(provider.getProvidername());
}
}
return new DataGridViewResult(list);
}
}
前端銷售控制器:
/**
* <p>
* 前端控制器
* </p>
*/
@RestController
@RequestMapping("/sale")
public class SaleController {
@Autowired
private SaleService saleService;
@Autowired
private GoodsService goodsService;
@Autowired
private CustomerService customerService;
/**
* 銷售查詢
*
* @param
* @return
*/
@SysLog("銷售查詢操作")
@RequestMapping("/saleList")
public DataGridViewResult saleList(SaleVO saleVO) {
//創(chuàng)建分頁信息 參數(shù)1 當(dāng)前頁 參數(shù)2 每頁顯示條數(shù)
IPage<Sale> page = new Page<>(saleVO.getPage(), saleVO.getLimit());
QueryWrapper<Sale> queryWrapper = new QueryWrapper<>();
queryWrapper.like(!StringUtils.isEmpty(saleVO.getNumbering()),"numbering", saleVO.getNumbering());
queryWrapper.eq(saleVO.getGid() != null && saleVO.getGid() != 0, "gid", saleVO.getGid());
queryWrapper.ge(saleVO.getStartTime() != null, "buytime", saleVO.getStartTime());
queryWrapper.le(saleVO.getEndTime() != null, "buytime", saleVO.getEndTime());
queryWrapper.orderByDesc("buytime");
IPage<Sale> saleIPage = saleService.page(page, queryWrapper);
List<Sale> records = saleIPage.getRecords();
for (Sale sale : records) {
sale.setAllmoney(sale.getMoney()*sale.getBuyquantity());
Customer customer = customerService.getById(sale.getCustid());
if (null != customer) {
sale.setCustomervip(customer.getCustvip());
sale.setCustomername(customer.getCustname());
}
Goods goods = goodsService.getById(sale.getGid());
if (null != goods) {
sale.setGoodsname(goods.getGname());
sale.setGnumbering(goods.getGnumbering());
}
}
return new DataGridViewResult(saleIPage.getTotal(), records);
}
/**
* 添加銷售單信息
*
* @param sale
* @return
*/
@SysLog("銷售添加操作")
@PostMapping("/addsale")
public Result addsale(Sale sale, HttpSession session) {
if (sale.getGid()==0){
return Result.error(false, null, "添加失??!未選商品");
}
Goods goods = goodsService.getById(sale.getGid());
Integer gquantity = goods.getGquantity();
if(gquantity<sale.getBuyquantity()){
return Result.error(false, null, "添加失敗!庫存不足,庫存為:"+gquantity);
}
User user = (User) session.getAttribute("username");
String num = RandomStringUtils.randomAlphanumeric(7);
sale.setNumbering(num);
sale.setPerson(user.getUsername());
sale.setBuytime(new Date());
sale.setRealnumber(sale.getBuyquantity());
boolean bool = saleService.save(sale);
if (bool) {
return Result.success(true, "200", "添加成功!");
}
return Result.error(false, null, "添加失??!庫存不足");
}
/**
* 修改銷售單信息
*
* @param sale
* @return
*/
@SysLog("銷售修改操作")
@PostMapping("/updatesale")
public Result updatesale(Sale sale, HttpSession session) {
User user = (User) session.getAttribute("username");
sale.setPerson(user.getUsername());
sale.setBuytime(new Date());
boolean bool = saleService.updateById(sale);
if (bool) {
return Result.success(true, "200", "修改成功!");
}
return Result.error(false, null, "修改失??!");
}
/**
* 刪除單條數(shù)據(jù)
*
* @param id
* @return
*/
@SysLog("銷售刪除操作")
@RequestMapping("/deleteOne")
public Result deleteOne(int id) {
boolean bool = saleService.removeById(id);
if (bool) {
return Result.success(true, "200", "刪除成功!");
}
return Result.error(false, null, "刪除失敗!");
}
}
前端用戶控制器:
/**
* <p>
* 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@Autowired
private RoleService roleService;
/**
* 登錄
*
* @param username 用戶名
* @param password 密碼
* @param request
* @return
*/
@SysLog("登陸操作")
@PostMapping("/login")
public Result login(String username, String password, HttpServletRequest request) {
try {
//獲取當(dāng)前登錄主體對(duì)象
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
subject.login(token);
LoginUserVO userDTO = (LoginUserVO) subject.getPrincipal();
request.getSession().setAttribute("username", userDTO.getUser());
return Result.success(true, "200", "登錄成功");
} catch (UnknownAccountException e) {
e.printStackTrace();
return Result.error(false, "400", "登錄失敗,用戶名不存在");
}catch (IncorrectCredentialsException e) {
e.printStackTrace();
return Result.error(false, "400", "登錄失敗,密碼錯(cuò)誤");
}catch (AuthenticationException e) {
e.printStackTrace();
return Result.error(false, "400", "登錄失敗,賬戶禁用");
}
}
/**
* 得到登陸驗(yàn)證碼
* @param response
* @param session
* @throws IOException
*/
@RequestMapping("/getCode")
public void getCode(HttpServletResponse response, HttpSession session) throws IOException {
//定義圖形驗(yàn)證碼的長和寬
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(116, 36,4,5);
session.setAttribute("code",lineCaptcha.getCode());
try {
ServletOutputStream outputStream = response.getOutputStream();
lineCaptcha.write(outputStream);
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 查詢所有用戶信息
*
* @param userVO
* @return
*/
@SysLog("用戶查詢操作")
@RequestMapping("/userList")
public DataGridViewResult userList(UserVO userVO) {
//分頁構(gòu)造函數(shù)
IPage<User> page = new Page<>(userVO.getPage(), userVO.getLimit());
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like(!StringUtils.isEmpty(userVO.getUsername()), "username", userVO.getUsername());
queryWrapper.like(!StringUtils.isEmpty(userVO.getUname()), "uname", userVO.getUname());
/**
* 翻頁查詢
* @param page 翻頁對(duì)象
* @param queryWrapper 實(shí)體對(duì)象封裝操作類
*/
IPage<User> userIPage = userService.page(page, queryWrapper);
return new DataGridViewResult(userIPage.getTotal(), userIPage.getRecords());
}
/**
* 添加用戶信息
*
* @param user
* @return
*/
@SysLog("用戶添加操作")
@PostMapping("/adduser")
public Result addRole(User user) {
user.setUcreatetime(new Date());
String salt = UUIDUtil.randomUUID();
user.setPassword(PasswordUtil.md5("000000", salt, 2));
user.setSalt(salt);
user.setType(1);
boolean bool = userService.save(user);
try {
if (bool) {
return Result.success(true, "200", "添加成功!");
}
} catch (Exception e) {
e.printStackTrace();
}
return Result.error(false, null, "添加失??!");
}
/**
* 校驗(yàn)用戶名是否存在
*
* @param username
* @return
*/
@RequestMapping("/checkUserName")
public String checkUserName(String username) {
Map<String, Object> map = new HashMap<>();
try {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("username", username);
User user = userService.getOne(queryWrapper);
if (user != null) {
map.put("exist", true);
map.put("message", "用戶名已存在");
} else {
map.put("exist", false);
map.put("message", "用戶名可以使用");
}
} catch (Exception e) {
e.printStackTrace();
}
return JSON.toJSONString(map);
}
/**
* 修改用戶信息
*
* @param user
* @return
*/
@SysLog("用戶修改操作")
@PostMapping("/updateuser")
public Result updateUser(User user) {
boolean bool = userService.updateById(user);
try {
if (bool) {
return Result.success(true, "200", "修改成功!");
}
} catch (Exception e) {
e.printStackTrace();
}
return Result.error(false, null, "修改失?。?);
}
/**
* 刪除單條數(shù)據(jù)
*
* @param id
* @return
*/
@SysLog("用戶刪除操作")
@RequestMapping("/deleteOne")
public Result deleteOne(int id) {
boolean bool = userService.removeById(id);
try {
if (bool) {
return Result.success(true, "200", "刪除成功!");
}
} catch (Exception e) {
e.printStackTrace();
}
return Result.error(false, null, "刪除失??!");
}
/**
* 重置密碼
*
* @param id
* @return
*/
@SysLog("用戶修改操作")
@PostMapping("/resetPwd")
public Result resetPwd(int id) {
User user = new User();
String salt = UUIDUtil.randomUUID();
user.setUid(id);
user.setPassword(PasswordUtil.md5("000000", salt, 2));
user.setSalt(salt);
boolean bool = userService.updateById(user);
try {
if (bool) {
return Result.success(true, "200", "重置成功!");
}
} catch (Exception e) {
e.printStackTrace();
}
return Result.error(false, null, "重置失敗!");
}
/**
* 根據(jù)id查詢當(dāng)前用戶擁有的角色
*
* @param id
* @return
*/
@RequestMapping("/initRoleByUserId")
public DataGridViewResult initRoleByUserId(int id) {
List<Map<String, Object>> mapList = null;
try {
//查詢所有角色列表
mapList = roleService.listMaps();
//根據(jù)用戶id查詢用戶擁有的角色
Set<Integer> roleIdList = userService.findRoleByUserId(id);
for (Map<String, Object> map : mapList) {
//定義標(biāo)記 默認(rèn)不選中
boolean flag = false;
int roleId = (int) map.get("roleid");
for (Integer rid : roleIdList) {
if (rid == roleId) {
flag = true;
break;
}
}
map.put("LAY_CHECKED", flag);
}
} catch (Exception e) {
e.printStackTrace();
}
return new DataGridViewResult(Long.valueOf(mapList.size()), mapList);
}
/**
* 為用戶分配角色
*
* @param roleids
* @param userid
* @return
*/
@SysLog("用戶添加操作")
@RequestMapping("/saveUserRole")
public Result saveUserRole(String roleids, int userid) {
try {
if (userService.saveUserRole(userid, roleids)) {
return Result.success(true, null, "分配成功");
}
} catch (Exception e) {
e.printStackTrace();
}
return Result.error(false, null, "分配失敗");
}
/**
* 修改密碼
*
* @param newPassWord1
* @param newPassWord2
* @return
*/
@RequestMapping("/updateUserPassWord")
public Result updateUserPassWord(String newPassWord1, String newPassWord2,HttpSession session) {
User sessionUser = (User) session.getAttribute("username");
if (newPassWord1.equals(newPassWord2)){
User user = new User();
String salt = UUIDUtil.randomUUID();
user.setUid(sessionUser.getUid());
user.setPassword(PasswordUtil.md5(newPassWord1, salt, 2));
user.setSalt(salt);
boolean bool = userService.updateById(user);
if (bool){
return Result.success(true,null,"修改成功");
}else {
return Result.error(false,null,"修改失敗!");
}
}else {
return Result.error(false,null,"修改失敗,兩次密碼不一致!");
}
}
}
到此這篇關(guān)于Java 實(shí)戰(zhàn)練手項(xiàng)目之校園超市管理系統(tǒng)的實(shí)現(xiàn)流程的文章就介紹到這了,更多相關(guān)Java 校園超市管理系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于Mysql+JavaSwing的超市商品管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- java實(shí)現(xiàn)簡易超市管理系統(tǒng) 附源碼下載
- java實(shí)現(xiàn)簡單的小超市程序
- java實(shí)現(xiàn)簡單超市管理系統(tǒng)
- java實(shí)現(xiàn)超市管理系統(tǒng)
- java實(shí)現(xiàn)超市庫存管理系統(tǒng)
- java實(shí)現(xiàn)超市商品庫存管理平臺(tái)
- java實(shí)現(xiàn)水果超市管理系統(tǒng)
- Java編寫網(wǎng)上超市購物結(jié)算功能程序
- Java實(shí)現(xiàn)超市會(huì)員管理系統(tǒng)
相關(guān)文章
java對(duì)list<Object>進(jìn)行手動(dòng)分頁實(shí)現(xiàn)
本文主要介紹了java對(duì)list<Object>進(jìn)行手動(dòng)分頁實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
SpringBoot?Test的webEnvironment源碼解讀
這篇文章主要為大家介紹了SpringBoot?Test的webEnvironment源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
十大常見Java String問題_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
本文介紹Java中關(guān)于String最常見的10個(gè)問題,需要的朋友參考下吧2017-04-04
springboot application.yml使用@@pom文件配置問題
這篇文章主要介紹了springboot application.yml使用@@pom文件配置問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)中序表達(dá)式的實(shí)例代碼,需要的朋友可以參考下2018-08-08
深入理解Java8新特性之Stream API的創(chuàng)建方式和中間操作步驟
Stream是Java8的一大亮點(diǎn),是對(duì)容器對(duì)象功能的增強(qiáng),它專注于對(duì)容器對(duì)象進(jìn)行各種非常便利、高效的 聚合操作(aggregate operation)或者大批量數(shù)據(jù)操作。Stream API借助于同樣新出現(xiàn)的Lambda表達(dá)式,極大的提高編程效率和程序可讀性,感興趣的朋友快來看看吧2021-11-11
基于Spring Boot應(yīng)用ApplicationEvent案例場景
這篇文章主要介紹了基于Spring Boot應(yīng)用ApplicationEvent,利用Spring的機(jī)制發(fā)布ApplicationEvent和監(jiān)聽ApplicationEvent,需要的朋友可以參考下2023-03-03
Java緩存Map設(shè)置過期時(shí)間實(shí)現(xiàn)解析
這篇文章主要介紹了Java緩存Map設(shè)置過期時(shí)間實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12

