基于javaweb的SpringBoot游戏虚拟交易系统(java+springboot+mybatis+jquery+html+jsp+mysql)

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

431424150701

441424150701

451424150701

461424150701

481424150701

491424150701

501424150701

511424150701

521424150701

531424150701

基于javaweb的SpringBoot游戏虚拟交易系统(java+springboot+mybatis+jquery+html+jsp+mysql)

  

项目介绍

基于SpringBoot 网络游戏虚拟交易系统 有前台和后台

用户:

登录、注册、首页、公告信息、游戏资讯、商品信息、交流论坛、商品信息、购物车、立即购买、星级好评,文字评论

管理员:

登录、验证,轮播图管理、公告信息管理、资源管理、商城管理(分类管理、商品信息管理、订单管理)、系统用户、模块管理

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 4.数据库:MySql 5.7/8.0版本均可; 5.是否Maven项目:是;

技术栈

后端:SpringBoot(Spring+SpringMVC+Mybatis)

前端:  JSP+HTML+Layui+thymeleaf+CSS+Javascript+JQUERY

使用说明

项目运行: 1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;

公告管理控制层:

/**

  • 消息通知控制器

*/

@Controller

public class NoticesController {

@Autowired

private NoticesService noticesService;

/**

  • 用户查看通知消息后

  • 1.前端传入通知id(id)

  • 2.将其设置为已读

  • */

@ResponseBody

@PutMapping(“/notices/look/{id}”)

public ResultVo LookNoticesById (@PathVariable(“id”) String id) {

Integer i = noticesService.updateNoticesById(id);

if (i == 1){

return new ResultVo(true, StatusCode.OK,”设置成功”);

return new ResultVo(true, StatusCode.ERROR,”设置失败”);

/**

*查询前10条公告

  • **/

@ResponseBody

@GetMapping(“/notices/queryNotices”)

public ResultVo queryNotices (HttpSession session){

String userid = (String) session.getAttribute(“userid”);

List noticesList = noticesService.queryNotices(userid);

return new ResultVo(true,StatusCode.OK,”查询成功”,noticesList);

/**

  • 取消新通知标志

  • 用户点击查看最新通知后会将所有通知设置为非最新通知

  • */

@ResponseBody

@GetMapping(“/notices/cancelLatest”)

public ResultVo CancelLatest (HttpSession session){

String userid = (String) session.getAttribute(“userid”);

Integer i = noticesService.CancelLatest(userid);

if (i == 1){

return new ResultVo(true,StatusCode.OK,”设置成功”);

return new ResultVo(true,StatusCode.ERROR,”设置失败”);

/**

  • 分类分页查询用户所有通知消息

  • 1.前端传入消息通知类型(tpname)

  • 2.session中获取用户id(userid)

  • 3.返回分页数据

  • */

@ResponseBody

@GetMapping(“/notices/queryall”)

public LayuiPageVo queryallSold(int limit, int page, HttpSession session) {

String userid = (String) session.getAttribute(“userid”);

List noticesList = noticesService.queryAllNotices((page - 1) * limit, limit, userid);

Integer dataNumber = noticesService.queryNoticesCount(userid);

return new LayuiPageVo(“”, 0,dataNumber,noticesList);

商品信息管理控制层:

/**

  • 前端控制器

*/

@Controller

public class CommodityController {

@Autowired

private CommodityService commodityService;

@Autowired

private CommimagesService commimagesService;

@Autowired

private LoginService loginService;

@Autowired

private UserInfoService userInfoService;

@Autowired

private SoldrecordService soldrecordService;

@Autowired

private CollectService collectService;

@Autowired

private NoticesService noticesService;

/**

  • 跳转到发布商品

*/

@GetMapping(“/user/relgoods”)

public String torelgoods(HttpSession session){

/*String userid = (String)session.getAttribute(“userid”);

if(userid==null){

return “redirect:/:”;

}*/

return “/user/product/relgoods”;

/**

  • 跳转到修改商品

  • –不能修改已删除、已完成的商品

  • 1、查询商品详情

  • 2、查询商品得其他图

*/

@GetMapping(“/user/editgoods/{commid}”)

public String toeditgoods(@PathVariable(“commid”)String commid, HttpSession session, ModelMap modelMap){

/*String userid = (String)session.getAttribute(“userid”);

if(userid==null){

return “redirect:/:”;

}*/

Commodity commodity=commodityService.LookCommodity(new Commodity().setCommid(commid));

if(commodity.getCommstatus().equals(2) || commodity.getCommstatus().equals(4)){

return “/error/404”;//商品已被删除或已完成交易

String[] commons=commodity.getCommon().split(“、”);

commodity.setCommon(commons[0]);

modelMap.put(“goods”,commodity);

modelMap.put(“otherimg”,commimagesService.LookGoodImages(commid));

return “/user/product/changegoods”;

/**

  • 修改商品

  • 1、修改商品信息

  • 2、修改商品的其他图的状态

  • 3、插入商品的其他图

*/

@PostMapping(“/changegoods/rel”)

@ResponseBody

public String changegoods(@RequestBody Commodity commodity, HttpSession session){

String userid = (String) session.getAttribute(“userid”);

commodity.setUpdatetime(new Date()).setCommstatus(3);

//commodity.setCommon(commodity.getCommon()+”、”+commodity.getCommon2());//常用选项拼接

commodityService.ChangeCommodity(commodity);

commimagesService.DelGoodImages(commodity.getCommid());

List commimagesList=new ArrayList<>();

for (String list:commodity.getOtherimg()) {

commimagesList.add(new Commimages().setId(KeyUtil.genUniqueKey()).setCommid(commodity.getCommid()).setImage(list));

commimagesService.InsertGoodImages(commimagesList);

/*发出待审核系统通知/

Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid).setTpname(“商品审核”)

.setWhys(“您的商品 <a href=/product-detail/“+commodity.getCommid()+” style="color:#08bf91" target="_blank" >”+commodity.getCommname()+” 进入待审核队列,请您耐心等待。”);

noticesService.insertNotices(notices);

return “0”;

/**

  • 发布商品

  • 1、插入商品信息

  • 2、插入商品其他图

*/

@PostMapping(“/relgoods/rel”)

@ResponseBody

public String relgoods(@RequestBody Commodity commodity, HttpSession session){

String userid = (String) session.getAttribute(“userid”);

UserInfo userInfo = userInfoService.LookUserinfo(userid);

String commid = KeyUtil.genUniqueKey();

commodity.setCommid(commid).setUserid(userid).setServer(userInfo.getServer());//商品id

//commodity.setCommon(commodity.getCommon()+”、”+commodity.getCommon2());//常用选项拼接

commodityService.InsertCommodity(commodity);

List commimagesList=new ArrayList<>();

for (String list:commodity.getOtherimg()) {

commimagesList.add(new Commimages().setId(KeyUtil.genUniqueKey()).setCommid(commid).setImage(list));

commimagesService.InsertGoodImages(commimagesList);

/*发出待审核系统通知/

Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid).setTpname(“商品审核”)

.setWhys(“您的商品 <a href=/product-detail/“+commid+” style="color:#08bf91" target="_blank" >”+commodity.getCommname()+” 进入待审核队列,请您耐心等待。”);

noticesService.insertNotices(notices);

return “0”;

/**

  • 上传视频和主图

*/

@PostMapping(“/relgoods/video”)

@ResponseBody

public JSONObject relgoodsvideo(@RequestParam(value = “file”, required = false) MultipartFile file) throws IOException {

JSONObject res = new JSONObject();

JSONObject resUrl = new JSONObject();

String filename = UUID.randomUUID().toString().replaceAll(“-“, “”);

String ext = FilenameUtils.getExtension(file.getOriginalFilename());

String filenames = filename + “.” + ext;

String pathname = “D:/file/“ + filenames;

file.transferTo(new File(pathname));

resUrl.put(“src”, “/pic/“+filenames);

res.put(“msg”, “”);

res.put(“code”, 0);

res.put(“data”, resUrl);

return res;

/**

  • 上传其他图片

*/

@PostMapping(value=”/relgoods/images”)

@ResponseBody

public JSONObject relgoodsimages(@RequestParam(value = “file”, required = false) MultipartFile[] file) throws IOException {

JSONObject res = new JSONObject();

JSONObject resUrl = new JSONObject();

List imageurls=new ArrayList<>();

for (MultipartFile files:file){

String filename = UUID.randomUUID().toString().replaceAll(“-“, “”);

String ext = FilenameUtils.getExtension(files.getOriginalFilename());

String filenames = filename + “.” + ext;

String pathname = “D:/file/“ + filenames;

files.transferTo(new File(pathname));

imageurls.add(“/pic/“+filenames);

res.put(“msg”, “”);

res.put(“code”, 0);

resUrl.put(“src”, imageurls);

res.put(“data”, resUrl);

return res;

/**

  • 商品详情

  • 根据商品id(commid)查询商品信息、用户昵称及头像

  • 用户可以查看正常的商品

  • 商品发布者和管理员可以查看

  • */

@GetMapping(“/product-detail/{commid}”)

public String product_detail(@PathVariable(“commid”) String commid, ModelMap modelMap,HttpSession session){

String couserid = (String) session.getAttribute(“userid”);

System.out.println(“commid = “+commid);

System.out.println(“commodity = “ + commodityService.LookCommodity(new Commodity().setCommid(commid).setCommstatus(1)).getImage());

Commodity commodity = commodityService.LookCommodity(new Commodity().setCommid(commid).setCommstatus(1));

int i = 0;

if (commodity.getCommstatus().equals(1)){//如果商品正常

i=1;

}else if (!StringUtils.isEmpty(couserid)){//如果用户已登录

Login login = loginService.userLogin(new Login().setUserid(couserid));

/*商品为违规状态时:本人和管理员可查看/

if (commodity.getCommstatus().equals(0) && (commodity.getUserid().equals(couserid) || (login.getRoleid().equals(2) || login.getRoleid().equals(3)))){

i=1;

/*商品为待审核状态时:本人和管理员可查看/

}else if (commodity.getCommstatus().equals(3) && (commodity.getUserid().equals(couserid) || (login.getRoleid().equals(2) || login.getRoleid().equals(3)))){

i=1;

/*商品为已售出状态时:本人和管理员可查看/

}else if (commodity.getCommstatus().equals(4) && (commodity.getUserid().equals(couserid) || (login.getRoleid().equals(2) || login.getRoleid().equals(3)))){

i=1;

if(i==1){

commodity.setOtherimg(commimagesService.LookGoodImages(commid));

/*商品浏览量+1/

commodityService.ChangeCommodity(new Commodity().setCommid(commid).setRednumber(1));

modelMap.put(“userinfo”,userInfoService.queryPartInfo(commodity.getUserid()));

modelMap.put(“gddetail”,commodity);

//如果没有用户登录

if (StringUtils.isEmpty(couserid)){

modelMap.put(“collectstatus”,2);

}else {

Collect collect = collectService.queryCollectStatus(new Collect().setCommid(commid).setCouserid(couserid));

if(collect!=null){

if (collect.getCollstatus() == 2){

modelMap.put(“collectstatus”,2);

}else {

modelMap.put(“collectstatus”,1);

}else {

modelMap.put(“collectstatus”,2);

return “/common/product-detail”;

}else{

return “/error/404”;

/**

  • 搜索商品分页数据

  • 前端传入搜索的商品名(commname)

  • */

@GetMapping(“/product/search/number/{commname}”)

@ResponseBody

public PageVo searchCommodityNumber(@PathVariable(“commname”) String commname){

Integer dataNumber = commodityService.queryCommodityByNameCount(commname);

return new PageVo(StatusCode.OK,”查询成功”,dataNumber);

/**

  • 搜索商品

  • 前端传入当前页数(nowPaging)、搜索的商品名(commname)

  • */

@GetMapping(“/product/search/{nowPaging}/{commname}”)

@ResponseBody

public ResultVo searchCommodity(@PathVariable(“nowPaging”) Integer page, @PathVariable(“commname”) String commname){

List commodityList = commodityService.queryCommodityByName((page - 1) * 20, 20, commname);

if(!StringUtils.isEmpty(commodityList)){//如果有对应商品

for (Commodity commodity : commodityList) {

/*查询商品对应的其它图片/

List imagesList = commimagesService.LookGoodImages(commodity.getCommid());

commodity.setOtherimg(imagesList);

return new ResultVo(true,StatusCode.OK,”查询成功”,commodityList);

}else{

return new ResultVo(true,StatusCode.ERROR,”没有相关商品”);

/**

  • 首页分类展示商品 –> 按照分类查询商品

  • 前端传入商品类别(category)

  • */

@ResponseBody

@GetMapping(“/index/product/{category}”)

public ResultVo indexCommodity(@PathVariable(“category”) String category) {

List commodityList = commodityService.queryCommodityByCategory(category);

for (Commodity commodity : commodityList) {

/*查询商品对应的其它图片/

List imagesList = commimagesService.LookGoodImages(commodity.getCommid());

commodity.setOtherimg(imagesList);

return new ResultVo(true,StatusCode.OK,”查询成功”,commodityList);

/**

  • 查询最新发布的8条商品

  • */

@ResponseBody

@GetMapping(“/product/latest”)

public ResultVo latestCommodity() {

String category = “全部”;

List commodityList = commodityService.queryCommodityByCategory(category);

for (Commodity commodity : commodityList) {

/*查询商品对应的其它图片/

List imagesList = commimagesService.LookGoodImages(commodity.getCommid());

commodity.setOtherimg(imagesList);

return new ResultVo(true,StatusCode.OK,”查询成功”,commodityList);

/**

  • 产品清单分页数据

  • 前端传入商品类别(category)、区域(area)

  • 最低价(minmoney)、最高价(maxmoney)

  • 后端根据session查出个人本校信息(server)

  • */

@GetMapping(“/list-number/{category}/{area}/{minmoney}/{maxmoney}”)

@ResponseBody

public PageVo productListNumber(@PathVariable(“category”) String category, @PathVariable(“area”) String area,

@PathVariable(“minmoney”) BigDecimal minmoney, @PathVariable(“maxmoney”) BigDecimal maxmoney,

HttpSession session) {

String server=null;

if(!area.equals(“全部”)){

String userid = (String) session.getAttribute(“userid”);

UserInfo userInfo = userInfoService.LookUserinfo(userid);

server = userInfo.getServer();

Integer dataNumber = commodityService.queryAllCommodityByCategoryCount(area, server, category, minmoney, maxmoney);

return new PageVo(StatusCode.OK,”查询成功”,dataNumber);

/**

  • 产品清单界面

  • 前端传入商品类别(category)、当前页码(nowPaging)、区域(area)

  • 最低价(minmoney)、最高价(maxmoney)、价格升序降序(price:0.不排序 1.升序 2.降序)

  • 后端根据session查出个人本校信息(server)

  • */

@GetMapping(“/product-listing/{category}/{nowPaging}/{area}/{minmoney}/{maxmoney}/{price}”)

@ResponseBody

public ResultVo productlisting(@PathVariable(“category”) String category, @PathVariable(“nowPaging”) Integer page,

@PathVariable(“area”) String area, @PathVariable(“minmoney”) BigDecimal minmoney, @PathVariable(“maxmoney”) BigDecimal maxmoney,

@PathVariable(“price”) Integer price, HttpSession session) {

String server=null;

if(!area.equals(“全部”)) {

String userid = (String) session.getAttribute(“userid”);

UserInfo userInfo = userInfoService.LookUserinfo(userid);

server = userInfo.getServer();

List commodityList = commodityService.queryAllCommodityByCategory((page - 1) * 16, 16, area, server, category, minmoney, maxmoney);

for (Commodity commodity : commodityList) {

/*查询商品对应的其它图片/

List imagesList = commimagesService.LookGoodImages(commodity.getCommid());

commodity.setOtherimg(imagesList);

/*自定义排序/

if (price != 0){

if (price == 1){

/*升序/

Collections.sort(commodityList, new Comparator() {//此处创建了一个匿名内部类

int i;

@Override

public int compare(Commodity o1, Commodity o2) {

if (o1.getThinkmoney().compareTo(o2.getThinkmoney()) > -1) {

System.out.println(“===o1大于等于o2===”);

i = 1;

} else if (o1.getThinkmoney().compareTo(o2.getThinkmoney()) < 1) {

i = -1;

System.out.println(“===o1小于等于o2===”);

return i;

});

}else if (price == 2){

/*降序/

Collections.sort(commodityList, new Comparator() {//此处创建了一个匿名内部类

int i;

@Override

public int compare(Commodity o1, Commodity o2) {

if (o1.getThinkmoney().compareTo(o2.getThinkmoney()) > -1) {

System.out.println(“===o1大于等于o2===”);

i = -1;

} else if (o1.getThinkmoney().compareTo(o2.getThinkmoney()) < 1) {

System.out.println(“===o1小于等于o2===”);

i = 1;

return i;

});

return new ResultVo(true,StatusCode.OK,”查询成功”,commodityList);

/**

  • 分页展示个人各类商品信息

*前端传入页码、分页数量

*前端传入商品信息状态码(commstatus)–>全部:100,已审核:1,待审核:3,违规:0,已完成:4

*/

@GetMapping(“/user/commodity/{commstatus}”)

@ResponseBody

public LayuiPageVo userCommodity(@PathVariable(“commstatus”) Integer commstatus, int limit, int page, HttpSession session) {

String userid = (String) session.getAttribute(“userid”);

//如果未登录,给一个假id

if(StringUtils.isEmpty(userid)){

userid = “123456”;

List commodityList=null;

Integer dataNumber;

if(commstatus==100){

commodityList = commodityService.queryAllCommodity((page - 1) * limit, limit, userid,null);

dataNumber = commodityService.queryCommodityCount(userid,null);

}else{

commodityList = commodityService.queryAllCommodity((page - 1) * limit, limit, userid,commstatus);

dataNumber = commodityService.queryCommodityCount(userid,commstatus);

return new LayuiPageVo(“”,0,dataNumber,commodityList);

/**

  • 个人对商品的操作

  • 前端传入商品id(commid)

  • 前端传入操作的商品状态(commstatus)–>删除:2 已完成:4

  • */

@ResponseBody

@GetMapping(“/user/changecommstatus/{commid}/{commstatus}”)

public ResultVo ChangeCommstatus( @PathVariable(“commid”) String commid, @PathVariable(“commstatus”) Integer commstatus, HttpSession session) {

Integer i = commodityService.ChangeCommstatus(commid, commstatus);

if (i == 1){

/*如果商品已售出/

// dddd

if (commstatus == 4){

/*查询售出商品的信息/

Commodity commodity = commodityService.LookCommodity(new Commodity().setCommid(commid));

Soldrecord soldrecord = new Soldrecord();

// String userid1 = (String) session.getAttribute(“userid”);

String userid2 = (String) commodity.getUserid();

// /*将商品信息添加到售出记录中 —— 买家1/

// 没有设置买家数据位置,暂时不做功能

// soldrecord.setId(KeyUtil.genUniqueKey()).setCommid(commid).setCommname(commodity.getCommname()).setCommdesc(commodity.getCommdesc())

// .setThinkmoney(commodity.getThinkmoney()).setUserid(userid1);

/*将商品信息添加到售出记录中 —— 卖家2/

soldrecord.setId(KeyUtil.genUniqueKey()).setCommid(commid).setCommname(commodity.getCommname()).setCommdesc(commodity.getCommdesc())

.setThinkmoney(commodity.getThinkmoney()).setUserid(userid2);

/*添加售出记录/

soldrecordService.insertSold(soldrecord);

/*发出评论通知消息/

Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid2).setTpname(“购买”)

.setWhys(“您的商品 <a href=/product-detail/“+commid+” style="color:#08bf91" target="_blank" >”+commodity.getCommname()+” 被购买了,快去看看吧。”);

noticesService.insertNotices(notices);

return new ResultVo(true,StatusCode.OK,”操作成功”);

return new ResultVo(false,StatusCode.ERROR,”操作失败”);

登录管理控制层: 

/**

  • 登录注册 控制器

*/

@Controller

public class LoginController {

@Autowired

private LoginService loginService;

@Autowired

private UserInfoService userInfoService;

@Autowired

private UserRoleService userRoleService;

/*手机号和注册验证码map集合/

private static Map<String, String> phonecodemap1 = new HashMap<>();

/*手机号和重置密码验证码map集合/

private static Map<String, String> phonecodemap2 = new HashMap<>();

/**

*图片验证码

  • */

@RequestMapping(value = “/images”, method = {RequestMethod.GET, RequestMethod.POST})

public void images(HttpServletResponse response) throws IOException {

response.setContentType(“image/jpeg”);

//禁止图像缓存。

response.setHeader(“Pragma”, “no-cache”);

response.setHeader(“Cache-Control”, “no-cache”);

response.setDateHeader(“Expires”, 0);

ValidateCode vCode = new ValidateCode(820, 200, 5, 80);

vCode.write(response.getOutputStream());

/**注册时发送短信验证码

  • 1.判断是否为注册类型验证码

  • 2.判断手机号格式是否正确

  • 3.判断手机号是否已经注册过

  • 4.发送注册验证码并存入map集合

  • */

@ResponseBody

@PostMapping(“/user/sendregcode”)

public ResultVo sendregcode(HttpServletRequest request) throws IOException{

JSONObject jsonObject = JsonReader.receivePost(request);

final String mobilephone = jsonObject.getString(“mobilephone”);

Integer type = jsonObject.getInt(“type”);

Login login = new Login();

if(type!=0){

return new ResultVo(false,StatusCode.ACCESSERROR,”违规操作”);

if (!JustPhone.justPhone(mobilephone)) {//判断输入的手机号格式是否正确

return new ResultVo(false,StatusCode.ERROR,”请输入正确格式的手机号”);

//查询手机号是否已经注册

login.setMobilephone(mobilephone);

Login userIsExist = loginService.userLogin(login);

if (!StringUtils.isEmpty(userIsExist)){//用户账号已经存在

return new ResultVo(false, StatusCode.ERROR,”该手机号已经注册过了”);

String code = GetCode.phonecode();

Integer result = new SmsUtil().SendMsg(mobilephone, code, type);//发送验证码

if(result == 1){//发送成功

phonecodemap1.put(mobilephone, code);//放入map集合进行对比

/*

final Timer timer = new Timer();

timer.schedule(new TimerTask() {

@Override

public void run() {

phonecodemap1.remove(phoneNum);

timer.cancel();

}, 5 * 60 * 1000);

*/

//执行定时任务

ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1,

new BasicThreadFactory.Builder().namingPattern(“example-schedule-pool-%d”).daemon(true).build());

executorService.scheduleAtFixedRate(new Runnable() {

@Override

public void run() {

phonecodemap1.remove(mobilephone);

((ScheduledThreadPoolExecutor) executorService).remove(this::run);

},1 * 10 * 1000,1 * 10 * 1000, TimeUnit.HOURS);

return new ResultVo(true,StatusCode.SMS,”验证码发送成功”);

}else if(result == 2){

return new ResultVo(false,StatusCode.ERROR,”请输入正确格式的手机号”);

return new ResultVo(false,StatusCode.REMOTEERROR,”验证码发送失败”);

/**注册

  • 1.前端传入用户名(username)、密码(password)、邮箱(email)、手机号(mobilephone)、验证码(vercode)

  • 2.查询账号是否已经注册

  • 3.查询用户名是否已存在

  • 4.判断验证码是否有效或正确

  • 5.注册

  • */

@ResponseBody

@PostMapping(“/user/register”)

public ResultVo userReg(@RequestBody UserInfo userInfo, HttpSession session) {

String username = userInfo.getUsername();

String password = userInfo.getPassword();

String mobilephone = userInfo.getMobilephone();

String vercode = userInfo.getVercode();

Login login = new Login().setMobilephone(mobilephone);

//查询账号是否已经注册

Login userIsExist = loginService.userLogin(login);

if (!StringUtils.isEmpty(userIsExist)){//用户账号已经存在

return new ResultVo(false, StatusCode.ERROR,”该用户已经注册过了”);

login.setUsername(username).setMobilephone(null);

Login userNameIsExist = loginService.userLogin(login);

if (!StringUtils.isEmpty(userNameIsExist)){//用户名已经存在

return new ResultVo(false, StatusCode.ERROR,”用户名已存在,请换一个吧”);

String rel = phonecodemap1.get(mobilephone);

if (StringUtils.isEmpty(rel)) {//验证码到期 或者 没发送短信验证码

return new ResultVo(false,StatusCode.ERROR,”请重新获取验证码”);

//if (rel.equalsIgnoreCase(vercode)) {

if (vercode.equals(“123456”)) {//验证码正确

//盐加密

String passwords = new Md5Hash(password, “Game-shops”).toString();

String userid = KeyUtil.genUniqueKey();

login.setId(KeyUtil.genUniqueKey()).setUserid(userid).setMobilephone(mobilephone).setPassword(passwords);

Integer integer = loginService.loginAdd(login);

//新注册用户存入默认头像、存入默认签名

userInfo.setUserid(userid).setPassword(passwords).setUimage(“/pic/d1d66c3ea71044a9b938b00859ca94df.jpg”).

setSign(“如此清秋何吝酒,这般明月不须钱”).setStatus(“offline”);

Integer integer1 = userInfoService.userReg(userInfo);

if (integer==1 && integer1==1){

/*注册成功后存入session/

session.setAttribute(“userid”,userid);

session.setAttribute(“username”,username);

/*存入用户角色信息/

userRoleService.InsertUserRole(new UserRole().setUserid(userid).setRoleid(1).setIdentity(“网站用户”));

UsernamePasswordToken token=new UsernamePasswordToken(mobilephone, new Md5Hash(password,”Game-shops”).toString());

Subject subject= SecurityUtils.getSubject();

subject.login(token);

return new ResultVo(true,StatusCode.OK,”注册成功”);

return new ResultVo(false,StatusCode.ERROR,”注册失败”);

return new ResultVo(false,StatusCode.ERROR,”验证码错误”);

/**登录

  • 1.判断输入账号的类型

  • 2.登录

  • */

@ResponseBody

@PostMapping(“/user/login”)

public ResultVo userLogin(@RequestBody Login login, HttpSession session){

String account=login.getUsername();

String password=login.getPassword();

String vercode=login.getVercode();

UsernamePasswordToken token;

if(!ValidateCode.code.equalsIgnoreCase(vercode)){

return new ResultVo(false,StatusCode.ERROR,”请输入正确的验证码”);

//判断输入的账号是否手机号

if (!JustPhone.justPhone(account)) {

//输入的是用户名

String username = account;

//盐加密

token = new UsernamePasswordToken(username, new Md5Hash(password,”Game-shops”).toString());

// System.out.println(“1password : “+new Md5Hash(password,”Game-shops”).toString());

}else {

//输入的是手机号

String mobilephone = account;

login.setMobilephone(mobilephone);

//将封装的login中username变为null

login.setUsername(null);

//盐加密

token=new UsernamePasswordToken(mobilephone, new Md5Hash(password,”Game-shops”).toString());

System.out.println(“2password :”+ token);

Subject subject= SecurityUtils.getSubject();

try {

subject.login(token);

//盐加密

String passwords = new Md5Hash(password, “Game-shops”).toString();

System.out.println(“3password :”+ passwords);

login.setPassword(passwords);

Login login1 = loginService.userLogin(login);

session.setAttribute(“userid”,login1.getUserid());

session.setAttribute(“username”,login1.getUsername());

return new ResultVo(true,StatusCode.OK,”登录成功”);

}catch (UnknownAccountException e){

return new ResultVo(true,StatusCode.LOGINERROR,”用户名不存在”);

}catch (IncorrectCredentialsException e){

return new ResultVo(true,StatusCode.LOGINERROR,”密码错误”);

/**重置密码时发送短信验证码

  • 1.判断是否为重置密码类型验证码

  • 2.判断手机号格式是否正确

  • 3.查询账号是否存在

  • 4.发送验证码

  • */

@ResponseBody

@PostMapping(“/user/sendresetpwd”)

public ResultVo sendresetpwd(HttpServletRequest request) throws IOException {

JSONObject json = JsonReader.receivePost(request);

final String mobilephone = json.getString(“mobilephone”);

Integer type = json.getInt(“type”);

Login login = new Login();

if(type!=1){

return new ResultVo(false,StatusCode.ACCESSERROR,”违规操作”);

if (!JustPhone.justPhone(mobilephone)) {//判断输入的手机号格式是否正确

return new ResultVo(false,StatusCode.ERROR,”请输入正确格式的手机号”);

//查询手机号是否存在

login.setMobilephone(mobilephone);

Login userIsExist = loginService.userLogin(login);

if (StringUtils.isEmpty(userIsExist)){//用户账号不存在

return new ResultVo(false, StatusCode.LOGINERROR,”该用户不存在”);

String code = GetCode.phonecode();

Integer result = new SmsUtil().SendMsg(mobilephone, code, type);//发送验证码

if(result == 1) {//发送成功

phonecodemap2.put(mobilephone, code);//放入map集合进行对比

//执行定时任务

ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1,

new BasicThreadFactory.Builder().namingPattern(“example-schedule-pool-%d”).daemon(true).build());

executorService.scheduleAtFixedRate(new Runnable() {

@Override

public void run() {

phonecodemap2.remove(mobilephone);

((ScheduledThreadPoolExecutor) executorService).remove(this::run);

},5 * 60 * 1000,5 * 60 * 1000, TimeUnit.HOURS);

return new ResultVo(true,StatusCode.SMS,”验证码发送成功”);

}else if(result == 2){

return new ResultVo(false,StatusCode.ERROR,”请输入正确格式的手机号”);

return new ResultVo(false,StatusCode.REMOTEERROR,”验证码发送失败”);

/**重置密码

  • 1.判断手机号格式是否正确

  • 2.查询手机号是否存在

  • 3.判断验证码是否有效或正确

  • 4.重置密码

  • */

@ResponseBody

@PostMapping(“/user/resetpwd”)

public ResultVo resetpwd(@RequestBody Login login) {

String mobilephone=login.getMobilephone();

String password=login.getPassword();

String vercode=login.getVercode();

Login login1 = new Login();

UserInfo userInfo = new UserInfo();

if (!JustPhone.justPhone(mobilephone)) {//判断输入的手机号格式是否正确

return new ResultVo(false,StatusCode.ERROR,”请输入正确格式的手机号”);

//查询手机号是否存在

login1.setMobilephone(mobilephone);

Login userIsExist = loginService.userLogin(login1);

if (StringUtils.isEmpty(userIsExist)){//用户账号不存在

return new ResultVo(false, StatusCode.LOGINERROR,”该账号不存在”);

String rel = phonecodemap2.get(mobilephone);

if (StringUtils.isEmpty(rel)) {//验证码到期 或者 没发送短信验证码

return new ResultVo(false,StatusCode.ERROR,”请重新获取验证码”);

if (vercode.equals(“123456”)) {//验证码正确

//盐加密

String passwords = new Md5Hash(password, “Game-shops”).toString();

login1.setPassword(passwords).setId(userIsExist.getId()).setMobilephone(null);

userInfo.setMobilephone(mobilephone).setPassword(passwords).setUserid(userIsExist.getUserid());

Integer integer = loginService.updateLogin(login1);

Integer integer1 = userInfoService.UpdateUserInfo(userInfo);

if (integer==1 && integer1==1){

return new ResultVo(true,StatusCode.OK,”重置密码成功”);

return new ResultVo(false,StatusCode.ERROR,”重置密码失败”);

return new ResultVo(false,StatusCode.ERROR,”验证码错误”);

/*退出登陆/

@GetMapping(“/user/logout”)

public String logout(HttpServletRequest request,HttpSession session){

String userid = (String)session.getAttribute(“userid”);

String username = (String)session.getAttribute(“username”);

if(StringUtils.isEmpty(userid) && StringUtils.isEmpty(username)){

return “redirect:/“;

request.getSession().removeAttribute(“userid”);

request.getSession().removeAttribute(“username”);

return “redirect:/“;

用户信息管理控制层:

/**

  • 个人中心 控制器

*/

@Controller

public class UserController {

@Autowired

private LoginService loginService;

@Autowired

private UserInfoService userInfoService;

/*手机号和更换手机号验证码map集合/

private static Map<String, String> phonecodemap = new HashMap<>();

/**

  • 修改密码

  • 1.前端传入旧密码(oldpwd)、新密码(newpwd)

  • 2.判断输入旧密码和系统旧密码是否相等

  • 4.修改密码

*/

@ResponseBody

@PutMapping(“/user/updatepwd”)

public ResultVo updatepwd(HttpSession session, HttpServletRequest request) throws IOException {

JSONObject json = JsonReader.receivePost(request);

String oldpwd = json.getString(“oldpwd”);

String newpwd = json.getString(“newpwd”);

String userid = (String) session.getAttribute(“userid”);

Login login = new Login();

UserInfo userInfo = new UserInfo();

login.setUserid(userid);

Login login1 = loginService.userLogin(login);

String oldpwds = new Md5Hash(oldpwd, “Game-shops”).toString();

//如果旧密码相等

if (oldpwds.equals(login1.getPassword())){

//盐加密

String passwords = new Md5Hash(newpwd, “Game-shops”).toString();

login.setPassword(passwords);

userInfo.setPassword(passwords).setUserid(login1.getUserid());

Integer integer = loginService.updateLogin(login);

Integer integer1 = userInfoService.UpdateUserInfo(userInfo);

if (integer == 1 && integer1 == 1) {

return new ResultVo(true, StatusCode.OK, “修改密码成功”);

return new ResultVo(false, StatusCode.ERROR, “修改密码失败”);

return new ResultVo(false, StatusCode.LOGINERROR, “当前密码错误”);

/**

  • 展示用户头像昵称

*/

@ResponseBody

@PostMapping(“/user/avatar”)

public ResultVo userAvatar( HttpSession session) {

String userid = (String) session.getAttribute(“userid”);

UserInfo userInfo = userInfoService.queryPartInfo(userid);

return new ResultVo(true, StatusCode.OK, “查询头像成功”,userInfo);

/**

  • 修改头像

  • */

@PostMapping(value = “/user/updateuimg”)

@ResponseBody

public JSONObject updateuimg(@RequestParam(value = “file”, required = false) MultipartFile file, HttpSession session) throws IOException {

JSONObject res = new JSONObject();

JSONObject resUrl = new JSONObject();

String filename = UUID.randomUUID().toString().replaceAll(“-“, “”);

String ext = FilenameUtils.getExtension(file.getOriginalFilename());//获得文件扩展名

String filenames = filename + “.” + ext;//文件全名

String pathname = “D://file/“ + filenames;

file.transferTo(new File(pathname));

resUrl.put(“src”, “/pic/“+filenames);

res.put(“msg”, “”);

res.put(“code”, 0);

res.put(“data”, resUrl);

String uimgUrl = “/pic/“ + filenames;

String userid=(String) session.getAttribute(“userid”);

UserInfo userInfo = new UserInfo().setUserid(userid).setUimage(uimgUrl);

userInfoService.UpdateUserInfo(userInfo);

return res;

/**

  • 展示个人信息

*/

@RequiresPermissions(“user:userinfo”)

@GetMapping(“/user/lookinfo”)

public String lookinfo(HttpSession session, ModelMap modelMap) {

String userid = (String) session.getAttribute(“userid”);

UserInfo userInfo = userInfoService.LookUserinfo(userid);

modelMap.put(“userInfo”,userInfo);

return “/user/userinfo”;

/**

  • 跳转到完善个人信息

*/

@GetMapping(“/user/perfectinfo”)

public String perfectInfo(HttpSession session, ModelMap modelMap) {

String userid = (String) session.getAttribute(“userid”);

UserInfo userInfo = userInfoService.LookUserinfo(userid);

modelMap.put(“perfectInfo”,userInfo);

return “/user/perfectinfo”;

/**

  • 修改个人信息

  • 1.前端传入用户昵称(username)、用户邮箱(email)、性别(sex)、游戏(server

  • 2.前端传入变更后的字段,未变更的不传入后台

  • 3.判断更改的用户名是否已存在

  • 4.修改个人信息

*/

@ResponseBody

@PostMapping(“/user/updateinfo”)

public ResultVo updateInfo(@RequestBody UserInfo userInfo, HttpSession session) {

String username = userInfo.getUsername();

String sessionname = (String) session.getAttribute(“username”);

String userid = (String) session.getAttribute(“userid”);

Login login = new Login();

//如果传入用户名不为空

if (!StringUtils.isEmpty(username)){

login.setUsername(username);

Login login1 = loginService.userLogin(login);

//如果用户名未修改

if (sessionname.equals(username)){

UserInfo userInfo2 = userInfoService.LookUserinfo(login1.getUserid());

if (userInfo.getUsername().equals(userInfo2.getUsername())

&& userInfo.getEmail().equals(userInfo2.getEmail())

&& userInfo.getSex().equals(userInfo2.getSex())

&& userInfo.getServer().equals(userInfo2.getServer())

){

return new ResultVo(false, StatusCode.ERROR, “1.尚未修改信息”);

} else {

//如果用户名已存在

if (!StringUtils.isEmpty(login1)) {

return new ResultVo(false, StatusCode.ERROR, “2.用户名已存在”);

login.setUserid(userid);

//修改登录表中用户名

loginService.updateLogin(login);

userInfo.setUserid(userid);

Integer integer1 = userInfoService.UpdateUserInfo(userInfo);

if (integer1 == 1) {

session.setAttribute(“username”,username);

return new ResultVo(true, StatusCode.OK, “修改成功”);

return new ResultVo(false, StatusCode.ERROR, “修改失败”);

/**更换手机号时发送短信验证码

  • 1.判断是否为更换手机号类型验证码

  • 2.判断手机号格式是否正确

  • 3.查询账号是否存在

  • 4.发送验证码

  • */

@ResponseBody

@PostMapping(“/user/sendupdatephone”)

public ResultVo sendupdatephone(HttpServletRequest request) throws IOException {

JSONObject json = JsonReader.receivePost(request);

final String mobilephone = json.getString(“mobilephone”);

Integer type = json.getInt(“type”);

Login login = new Login();

if(type!=2){

return new ResultVo(false,StatusCode.ACCESSERROR,”违规操作”);

if (!JustPhone.justPhone(mobilephone)) {//判断输入的手机号格式是否正确

return new ResultVo(false,StatusCode.ERROR,”请输入正确格式的手机号”);

//查询手机号是否存在

login.setMobilephone(mobilephone);

Login userIsExist = loginService.userLogin(login);

if (!StringUtils.isEmpty(userIsExist)){//若手机号已注册过

return new ResultVo(false, StatusCode.REPERROR,”手机号已存在”);

String code = GetCode.phonecode();

Integer result = new SmsUtil().SendMsg(mobilephone, code, type);//发送验证码

if(result == 1) {//发送成功

phonecodemap.put(mobilephone, code);//放入map集合进行对比

/*

final Timer timer = new Timer();

timer.schedule(new TimerTask() {

@Override

public void run() {

phonecodemap2.remove(phoneNum);

timer.cancel();

}, 5 * 60 * 1000);

*/

//执行定时任务

ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1,

new BasicThreadFactory.Builder().namingPattern(“example-schedule-pool-%d”).daemon(true).build());

executorService.scheduleAtFixedRate(new Runnable() {

@Override

public void run() {

phonecodemap.remove(mobilephone);

((ScheduledThreadPoolExecutor) executorService).remove(this::run);

},5 * 60 * 1000,5 * 60 * 1000, TimeUnit.HOURS);

return new ResultVo(true,StatusCode.SMS,”验证码发送成功”);

}else if(result == 2){

return new ResultVo(false,StatusCode.ERROR,”请输入正确格式的手机号”);

return new ResultVo(false,StatusCode.REMOTEERROR,”验证码发送失败”);

/**

  • 修改绑定手机号

  • 1.获取session中userid

  • 2.修改login和userInfo中对应的手机号

*/

@ResponseBody

@PutMapping(“/user/updatephone/{mobilephone}/{vercode}”)

public ResultVo updatephone(@PathVariable(“mobilephone”)String mobilephone,@PathVariable(“vercode”)String vercode,HttpSession session) {

String userid = (String) session.getAttribute(“userid”);

String rel = phonecodemap.get(mobilephone);

if (StringUtils.isEmpty(rel)) {//验证码到期 或者 没发送短信验证码

return new ResultVo(false,StatusCode.ERROR,”请重新获取验证码”);

if (rel.equalsIgnoreCase(vercode)) {//验证码正确

Login login = new Login().setUserid(userid).setMobilephone(mobilephone);

UserInfo userInfo = new UserInfo().setUserid(userid).setMobilephone(mobilephone);

Integer integer = loginService.updateLogin(login);

Integer integer1 = userInfoService.UpdateUserInfo(userInfo);

if (integer == 1 && integer1 == 1) {

return new ResultVo(true, StatusCode.OK, “更换手机号成功”);

return new ResultVo(false, StatusCode.SERVERERROR, “系统错误,更换失败”);

return new ResultVo(false,StatusCode.ERROR,”验证码错误”);

管理员管理控制层:

/**

  • @Description: 管理员控制器

*/

@Controller

public class AdminController {

@Autowired

private UserRoleService userRoleService;

@Autowired

private LoginService loginService;

@Autowired

private UserInfoService userInfoService;

@Autowired

private CommodityService commodityService;

@Autowired

private NoticesService noticesService;

/**

  • 管理员跳转登录

*/

@GetMapping(“/admin”)

public String admintologin() {

return “admin/login/login”;

/**

  • 管理员登录

  • 1.判断输入账号的类型

  • 2.判断是否为管理员或者超级管理员

  • 3.登录

  • */

@ResponseBody

@PostMapping(“/admin/login”)

public ResultVo adminlogin(@RequestBody Login login, HttpSession session){

System.out.println(“测试是否进入!!!”);

String account=login.getUsername();

String password=login.getPassword();

String vercode=login.getVercode();

UsernamePasswordToken token;

if(!ValidateCode.code.equalsIgnoreCase(vercode)){

return new ResultVo(false,StatusCode.ERROR,”请输入正确的验证码”);

//判断输入的账号是否手机号

if (!JustPhone.justPhone(account)) {

//输入的是用户名

String username = account;

//盐加密

token=new UsernamePasswordToken(username, new Md5Hash(password,”Game-shops”).toString());

}else {

//输入的是手机号

String mobilephone = account;

login.setMobilephone(mobilephone);

//将封装的login中username变为null

login.setUsername(null);

//盐加密

token=new UsernamePasswordToken(mobilephone, new Md5Hash(password,”Game-shops”).toString());

Subject subject= SecurityUtils.getSubject();

try {

subject.login(token);

//盐加密

String passwords = new Md5Hash(password, “Game-shops”).toString();

login.setPassword(passwords);

Login login1 = loginService.userLogin(login);

//查询登录者的权限

Integer roleId = userRoleService.LookUserRoleId(login1.getUserid());

if (roleId == 2 || roleId == 3){

session.setAttribute(“admin”,login1.getUsername());

session.setAttribute(“username”,login1.getUsername());

return new ResultVo(true,StatusCode.OK,”登录成功”);

return new ResultVo(true,StatusCode.ACCESSERROR,”权限不足”);

}catch (UnknownAccountException e){

return new ResultVo(true,StatusCode.LOGINERROR,”用户名不存在”);

}catch (IncorrectCredentialsException e){

return new ResultVo(true,StatusCode.LOGINERROR,”密码错误”);

/**

  • 用户列表

  • */

@GetMapping(“/admin/userlist”)

public String userlist(){

return “/admin/user/userlist”;

/**

  • 管理员列表

  • */

@RequiresPermissions(“admin:set”)

@GetMapping(“/admin/adminlist”)

public String adminlist(){

return “/admin/user/adminlist”;

/**

  • 分页查询不同角色用户信息

  • roleid:1普通成员 2管理员

  • userstatus:1正常 0封号

*/

@GetMapping(“/admin/userlist/{roleid}/{userstatus}”)

@ResponseBody

public LayuiPageVo userlist(int limit, int page,@PathVariable(“roleid”) Integer roleid,@PathVariable(“userstatus”) Integer userstatus) {

List userInfoList = userInfoService.queryAllUserInfo((page - 1) * limit, limit,roleid,userstatus);

Integer dataNumber = userInfoService.queryAllUserCount(roleid);

return new LayuiPageVo(“”,0,dataNumber,userInfoList);

/**

  • 设置为管理员或普通成员(roleid)

  • 1:普通成员 2:管理员

*/

@PutMapping(“/admin/set/administrator/{userid}/{roleid}”)

@ResponseBody

public ResultVo setadmin(@PathVariable(“userid”) String userid,@PathVariable(“roleid”) Integer roleid) {

if (roleid == 2){

Integer i = loginService.updateLogin(new Login().setUserid(userid).setRoleid(roleid));

if (i == 1){

userRoleService.UpdateUserRole(new UserRole().setUserid(userid).setRoleid(2).setIdentity(“网站管理员”));

/*发出设置为管理员的系统通知/

Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid).setTpname(“系统通知”)

.setWhys(“恭喜您已被设置为网站管理员,努力维护网站的良好氛围。”);

noticesService.insertNotices(notices);

return new ResultVo(true, StatusCode.OK, “设置管理员成功”);

return new ResultVo(true, StatusCode.ERROR, “设置管理员失败”);

}else if (roleid == 1){

Integer i = loginService.updateLogin(new Login().setUserid(userid).setRoleid(roleid));

if (i == 1){

userRoleService.UpdateUserRole(new UserRole().setUserid(userid).setRoleid(1).setIdentity(“网站用户”));

/*发出设置为网站用户的系统通知/

Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid).setTpname(“系统通知”)

.setWhys(“您已被设置为网站用户,希望您再接再厉。”);

noticesService.insertNotices(notices);

return new ResultVo(true, StatusCode.OK, “设置成员成功”);

return new ResultVo(true, StatusCode.ERROR, “设置成员失败”);

return new ResultVo(false,StatusCode.ACCESSERROR,”违规操作”);

/**

  • 将用户封号或解封(userstatus)

  • 0:封号 1:解封

*/

@PutMapping(“/admin/user/forbid/{userid}/{userstatus}”)

@ResponseBody

public ResultVo adminuserlist(@PathVariable(“userid”) String userid,@PathVariable(“userstatus”) Integer userstatus) {

if (userstatus == 0){

Integer i = loginService.updateLogin(new Login().setUserid(userid).setUserstatus(userstatus));

Integer j = userInfoService.UpdateUserInfo(new UserInfo().setUserid(userid).setUserstatus(userstatus));

if (i ==1 && j == 1){

/*发出封号的系统通知/

Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid).setTpname(“系统通知”)

.setWhys(“因为您的不良行为,您在该网站的账号已被封号。”);

noticesService.insertNotices(notices);

return new ResultVo(true, StatusCode.OK, “封号成功”);

return new ResultVo(true, StatusCode.ERROR, “封号失败”);

}else if (userstatus == 1){

Integer i = loginService.updateLogin(new Login().setUserid(userid).setUserstatus(userstatus));

Integer j = userInfoService.UpdateUserInfo(new UserInfo().setUserid(userid).setUserstatus(userstatus));

if (i ==1 && j == 1){

/*发出解封的系统通知/

Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(userid).setTpname(“系统通知”)

.setWhys(“您在该网站的账号已被解封,希望您保持良好的行为。”);

noticesService.insertNotices(notices);

return new ResultVo(true, StatusCode.OK, “解封成功”);

return new ResultVo(true, StatusCode.ERROR, “解封失败”);

return new ResultVo(false,StatusCode.ACCESSERROR,”违规操作”);

/**

  • 管理员商品列表

  • */

@GetMapping(“/admin/product”)

public String adminproduct(){

return “/admin/product/productlist”;

/**

  • 分页管理员查看各类商品信息

*前端传入页码、分页数量

*前端传入商品信息状态码(commstatus)–>全部:100,违规:0,已审核:1,待审核:3 已完成:4

  • 因为是管理员查询,将userid设置为空

*/

@GetMapping(“/admin/commodity/{commstatus}”)

@ResponseBody

public LayuiPageVo userCommodity(@PathVariable(“commstatus”) Integer commstatus, int limit, int page) {

if(commstatus==100){

List commodityList = commodityService.queryAllCommodity((page - 1) * limit, limit, null, null);

Integer dataNumber = commodityService.queryCommodityCount(null, null);

return new LayuiPageVo(“”,0,dataNumber,commodityList);

}else{

List commodityList = commodityService.queryAllCommodity((page - 1) * limit, limit, null, commstatus);

Integer dataNumber = commodityService.queryCommodityCount(null, commstatus);

return new LayuiPageVo(“”,0,dataNumber,commodityList);

/**

  • 管理员对商品的操作

  • 前端传入商品id(commid)

  • 前端传入操作的商品状态(commstatus)–>违规:0 通过审核:1

  • */

@ResponseBody

@PutMapping(“/admin/changecommstatus/{commid}/{commstatus}”)

public ResultVo ChangeCommstatus(@PathVariable(“commid”) String commid, @PathVariable(“commstatus”) Integer commstatus) {

Integer i = commodityService.ChangeCommstatus(commid, commstatus);

if (i == 1){

/*发出商品审核结果的系统通知/

Commodity commodity = commodityService.LookCommodity(new Commodity().setCommid(commid));

if (commstatus == 0){

Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(commodity.getUserid()).setTpname(“商品审核”)

.setWhys(“您的商品 <a href=/product-detail/“+commodity.getCommid()+” style="color:#08bf91" target="_blank" >”+commodity.getCommname()+” 未通过审核,目前不支持公开发布。”);

noticesService.insertNotices(notices);

}else if (commstatus == 1){

Notices notices = new Notices().setId(KeyUtil.genUniqueKey()).setUserid(commodity.getUserid()).setTpname(“商品审核”)

.setWhys(“您的商品 <a href=/product-detail/“+commodity.getCommid()+” style="color:#08bf91" target="_blank" >”+commodity.getCommname()+” 已通过审核,快去看看吧。”);

noticesService.insertNotices(notices);

return new ResultVo(true,StatusCode.OK,”操作成功”);

return new ResultVo(false,StatusCode.ERROR,”操作失败”);


项目链接:
https://javayms.github.io?id=541524180701201jg
https://javayms.pages.dev?id=541524180701201jg