feat 新增后台接口

This commit is contained in:
LittleBoy 2022-12-01 11:59:20 +08:00
parent 2e2b5d4cdc
commit 11226f53ea
7 changed files with 161 additions and 1 deletions

View File

@ -0,0 +1,25 @@
package me.xiaoyan.point.api.controller.admin;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import me.xiaoyan.point.api.pojo.vo.GoodsQueryParam;
import me.xiaoyan.point.api.pojo.vo.PageDataResult;
import me.xiaoyan.point.api.pojo.vo.PageParam;
import me.xiaoyan.point.api.service.GoodsService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RequestMapping("admin/goods")
public class GoodsAdminController {
@Resource
private GoodsService goodsService;
@PostMapping("/list")
public PageDataResult list(@RequestBody GoodsQueryParam param) {
return PageDataResult.convert(goodsService.queryByPage(param));
}
}

View File

@ -0,0 +1,60 @@
package me.xiaoyan.point.api.controller.admin;
import cn.dev33.satoken.stp.StpUtil;
import lombok.extern.slf4j.Slf4j;
import me.xiaoyan.point.api.error.BizException;
import me.xiaoyan.point.api.pojo.vo.UserAdminInfo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.PostConstruct;
import java.util.HashMap;
@RestController
@RequestMapping("admin/user")
@Slf4j
public class UserAdminController {
private HashMap<String, UserAdminInfo> userStoreMap = new HashMap<>();
@PostConstruct
public void initUserStore() {
log.info("初始化用户数据");
userStoreMap.put("admin", UserAdminInfo.create(1, "admin", "admin"));
userStoreMap.put("test", UserAdminInfo.create(2, "test", "123123"));
}
@PostMapping("login")
public UserAdminInfo login(@Validated @RequestBody UserAdminInfo user) {
// 判断是否存在账号
if (!userStoreMap.containsKey(user.getAccount())) {
throw BizException.create("账号不存在");
}
// 获取到用户数据
UserAdminInfo admin = userStoreMap.get(user.getAccount());
// 判断密码
if (!admin.getPassword().equals(user.getPassword())) {
throw BizException.create("密码不正确");
}
user.setId(admin.getId());
user.setPassword("");
StpUtil.login(user.getId(), "admin");
user.setToken(StpUtil.getTokenInfo().getTokenValue());
StpUtil.getSession().set("user", user);
return user;
}
@RequestMapping("info")
public UserAdminInfo info() {
return (UserAdminInfo) StpUtil.getSession().get("user");
}
@RequestMapping("logout")
public String logout() {
StpUtil.logout();
return "ok";
}
}

View File

@ -0,0 +1,9 @@
package me.xiaoyan.point.api.pojo.vo;
import lombok.Data;
@Data
public class GoodsQueryParam extends PageParam {
private String title;
private int category;
}

View File

@ -0,0 +1,26 @@
package me.xiaoyan.point.api.pojo.vo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PageDataResult<T> implements Serializable {
private List<T> items;
private long total;
public static PageDataResult convert(Page result) {
return PageDataResult.builder()
.items(result.getRecords())
.total(result.getTotal())
.build();
}
}

View File

@ -0,0 +1,25 @@
package me.xiaoyan.point.api.pojo.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class UserAdminInfo implements Serializable {
private int id;
@NotEmpty(message = "账号不允许为空")
private String account;
@NotEmpty(message = "密码不允许为空")
private String password;
private String token;
public static UserAdminInfo create(int id,String acc,String pwd){
return new UserAdminInfo(id,acc,pwd,null);
}
}

View File

@ -3,6 +3,7 @@ package me.xiaoyan.point.api.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import me.xiaoyan.point.api.pojo.Goods;
import com.baomidou.mybatisplus.extension.service.IService;
import me.xiaoyan.point.api.pojo.vo.GoodsQueryParam;
import me.xiaoyan.point.api.pojo.vo.PageParam;
import java.util.List;
@ -13,6 +14,7 @@ import java.util.List;
public interface GoodsService extends IService<Goods> {
Page<Goods> queryByPage(int category, Page page);
Page<Goods> queryByPage(GoodsQueryParam page);
/**
* 减库存

View File

@ -1,11 +1,14 @@
package me.xiaoyan.point.api.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import me.xiaoyan.point.api.pojo.Goods;
import me.xiaoyan.point.api.pojo.vo.GoodsQueryParam;
import me.xiaoyan.point.api.service.GoodsService;
import me.xiaoyan.point.api.mapper.GoodsMapper;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
@ -21,6 +24,16 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods>
return this.getBaseMapper().queryByCategory(category, page);
}
@Override
public Page<Goods> queryByPage(GoodsQueryParam param) {
QueryWrapper q = new QueryWrapper();
// 查询标题
if (StringUtils.hasText(param.getTitle())) {
q.eq("title", param.getTitle().trim());
}
return getBaseMapper().selectPage(param.getPage(), q);
}
@Override
public boolean deductStock(int id, int count) {
return getBaseMapper().deductCount(id, count) == 1;