diff --git a/admin-fe/src/router/routes.ts b/admin-fe/src/router/routes.ts index dc51321..f73ff66 100644 --- a/admin-fe/src/router/routes.ts +++ b/admin-fe/src/router/routes.ts @@ -4,6 +4,7 @@ import Login from '../views/Login.vue' import NotFound from '../views/NotFound.vue' import AdminLayout from '../views/layout/AdminLayout.vue' import UserIndex from '../views/user/index.vue' +import GoodsIndex from '../views/goods/index.vue' const routes: RouteRecordRaw[] = [ { @@ -13,11 +14,18 @@ const routes: RouteRecordRaw[] = [ children: [ { path: 'home', + name: 'Home', component: Home }, { path: 'user', + name: 'UserIndex', component: UserIndex + }, + { + path: 'goods', + name: 'GoodsIndex', + component: GoodsIndex } ] }, diff --git a/admin-fe/src/service/types.d.ts b/admin-fe/src/service/types.d.ts index 7db2801..31ed31d 100644 --- a/admin-fe/src/service/types.d.ts +++ b/admin-fe/src/service/types.d.ts @@ -26,4 +26,22 @@ type UserInfoModel = { status: number; pointInfo: PointInfoModel; parent?: UserInfoModel | null; -} \ No newline at end of file +} +type GoodsModel = { + id?: number; + category?: number; + type?: number; + title?: string; + originPrice?: number; + price?: number; + stock?: number; + limitCount?: number; + cover?: string; + description?: string; + notice?: string; + onlineTime?: string; + offlineTime?: string; + createTime?: string; + updateTime?: string; + status?: number; +} diff --git a/admin-fe/src/util/http.ts b/admin-fe/src/util/http.ts index 2db7227..eab5be4 100644 --- a/admin-fe/src/util/http.ts +++ b/admin-fe/src/util/http.ts @@ -42,6 +42,17 @@ class Http { return this.request(url, data, 'get') } + put(url, data = null) { + return this.request(url, data, 'put') + } + + remove(url, data = null) { + return this.request(url, data, 'delete') + } + delete(url, data = null) { + return this.request(url, data, 'delete') + } + /** * GET /xxxx?a=1&b=2 * NAME: value diff --git a/admin-fe/src/views/goods/index.vue b/admin-fe/src/views/goods/index.vue new file mode 100644 index 0000000..a385e9c --- /dev/null +++ b/admin-fe/src/views/goods/index.vue @@ -0,0 +1,178 @@ + + + + + \ No newline at end of file diff --git a/admin-fe/src/views/layout/AdminLayout.vue b/admin-fe/src/views/layout/AdminLayout.vue index 196bebc..7eaaf90 100644 --- a/admin-fe/src/views/layout/AdminLayout.vue +++ b/admin-fe/src/views/layout/AdminLayout.vue @@ -13,6 +13,7 @@
积分管理系统
diff --git a/api/src/main/java/me/xiaoyan/point/api/controller/admin/GoodsAdminController.java b/api/src/main/java/me/xiaoyan/point/api/controller/admin/GoodsAdminController.java index e718c1e..7fbe6c3 100644 --- a/api/src/main/java/me/xiaoyan/point/api/controller/admin/GoodsAdminController.java +++ b/api/src/main/java/me/xiaoyan/point/api/controller/admin/GoodsAdminController.java @@ -1,14 +1,15 @@ package me.xiaoyan.point.api.controller.admin; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import me.xiaoyan.point.api.error.BizException; +import me.xiaoyan.point.api.pojo.Goods; 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 me.xiaoyan.point.api.util.DataStatus; +import org.apache.ibatis.annotations.Delete; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -22,4 +23,43 @@ public class GoodsAdminController { public PageDataResult list(@RequestBody GoodsQueryParam param) { return PageDataResult.convert(goodsService.queryByPage(param)); } + + // 新增 + @PostMapping + public Goods create(@RequestBody Goods goods) { + if (!goodsService.save(goods)) { + throw BizException.saveFail(); + } + return goods; + } + + // 修改 + @PutMapping("/{id}") + public Goods update(@RequestBody Goods goods, @PathVariable("id") long id) { + goods.setId(id); + if (!goodsService.updateById(goods)) { + throw BizException.saveFail(); + } + return goods; + } + + // 查询 + @GetMapping("/{id}") + public Goods get(@PathVariable("id") long id) { + return goodsService.getById(id); + } + + // 删除 + @DeleteMapping("/{id}") + public boolean remove(@PathVariable("id") long id) { + if (id < 1) throw BizException.paramError(); + // 只是逻辑删除 -> 将状态更新未删除即可 + + return goodsService.updateById( + Goods.builder() + .id(id) + .status(DataStatus.DELETE) // 状态设置为删除 + .build() + ); + } } diff --git a/api/src/main/java/me/xiaoyan/point/api/error/BizException.java b/api/src/main/java/me/xiaoyan/point/api/error/BizException.java index 4dea2a5..cf2b779 100644 --- a/api/src/main/java/me/xiaoyan/point/api/error/BizException.java +++ b/api/src/main/java/me/xiaoyan/point/api/error/BizException.java @@ -17,11 +17,20 @@ public class BizException extends RuntimeException { public static BizException create(String message) { return new BizException(-1, message); } - public static BizException create(int code,String message) { + + public static BizException create(int code, String message) { return new BizException(code, message); } public static BizException saveFail() { - return create(1022,"保存失败"); + return create(1022, "保存失败"); + } + + public static BizException paramError(String message) { + return create(1201, message); + } + + public static BizException paramError() { + return paramError("请求参数不正确"); } } \ No newline at end of file diff --git a/api/src/main/java/me/xiaoyan/point/api/pojo/Goods.java b/api/src/main/java/me/xiaoyan/point/api/pojo/Goods.java index b2b40f7..8b64b46 100644 --- a/api/src/main/java/me/xiaoyan/point/api/pojo/Goods.java +++ b/api/src/main/java/me/xiaoyan/point/api/pojo/Goods.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -83,21 +84,25 @@ public class Goods implements Serializable { /** * 上架时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date onlineTime; /** * 下架时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date offlineTime; /** * */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** * */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; /** diff --git a/api/src/main/java/me/xiaoyan/point/api/pojo/OrderInfo.java b/api/src/main/java/me/xiaoyan/point/api/pojo/OrderInfo.java index 1da5846..7144f29 100644 --- a/api/src/main/java/me/xiaoyan/point/api/pojo/OrderInfo.java +++ b/api/src/main/java/me/xiaoyan/point/api/pojo/OrderInfo.java @@ -5,6 +5,7 @@ import java.util.Date; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -39,9 +40,11 @@ public class OrderInfo { private Integer uid; //订单数据 private String data; - + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; - + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; //订单状态(0:已删除 1:已取消 2:待确认 3:已完成) private Integer status; diff --git a/api/src/main/java/me/xiaoyan/point/api/pojo/Point.java b/api/src/main/java/me/xiaoyan/point/api/pojo/Point.java index 9f46d7a..d6cfdcc 100644 --- a/api/src/main/java/me/xiaoyan/point/api/pojo/Point.java +++ b/api/src/main/java/me/xiaoyan/point/api/pojo/Point.java @@ -2,6 +2,7 @@ package me.xiaoyan.point.api.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -22,6 +23,7 @@ public class Point implements Serializable { private Integer totalPoint; private Integer validPoint; private Integer expirePoint; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date expireTime; private Date updateTime; } diff --git a/api/src/main/java/me/xiaoyan/point/api/pojo/PointRecord.java b/api/src/main/java/me/xiaoyan/point/api/pojo/PointRecord.java index 4a61345..8053cbc 100644 --- a/api/src/main/java/me/xiaoyan/point/api/pojo/PointRecord.java +++ b/api/src/main/java/me/xiaoyan/point/api/pojo/PointRecord.java @@ -3,6 +3,7 @@ package me.xiaoyan.point.api.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -25,6 +26,8 @@ public class PointRecord implements Serializable { private Integer point; private Integer currentTotalPoint; private String reason; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date validTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date expireTime; } diff --git a/api/src/main/java/me/xiaoyan/point/api/pojo/SignRecord.java b/api/src/main/java/me/xiaoyan/point/api/pojo/SignRecord.java index 00dd837..802f4bb 100644 --- a/api/src/main/java/me/xiaoyan/point/api/pojo/SignRecord.java +++ b/api/src/main/java/me/xiaoyan/point/api/pojo/SignRecord.java @@ -2,6 +2,7 @@ package me.xiaoyan.point.api.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -22,5 +23,7 @@ public class SignRecord implements Serializable { private Integer uid; private Integer point; private String ip; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; } diff --git a/api/src/main/java/me/xiaoyan/point/api/pojo/UserInfo.java b/api/src/main/java/me/xiaoyan/point/api/pojo/UserInfo.java index c6a3c77..0ff915c 100644 --- a/api/src/main/java/me/xiaoyan/point/api/pojo/UserInfo.java +++ b/api/src/main/java/me/xiaoyan/point/api/pojo/UserInfo.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -58,6 +59,7 @@ public class UserInfo implements Serializable { /** * 第一次登录时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date firstLoginTime; private Date updateTime; /** diff --git a/api/src/main/java/me/xiaoyan/point/api/pojo/vo/GoodsQueryParam.java b/api/src/main/java/me/xiaoyan/point/api/pojo/vo/GoodsQueryParam.java index f29d530..566c60c 100644 --- a/api/src/main/java/me/xiaoyan/point/api/pojo/vo/GoodsQueryParam.java +++ b/api/src/main/java/me/xiaoyan/point/api/pojo/vo/GoodsQueryParam.java @@ -5,5 +5,5 @@ import lombok.Data; @Data public class GoodsQueryParam extends PageParam { private String title; - private int category; + private Integer category; } diff --git a/api/src/main/java/me/xiaoyan/point/api/service/impl/GoodsServiceImpl.java b/api/src/main/java/me/xiaoyan/point/api/service/impl/GoodsServiceImpl.java index c483016..cfad265 100644 --- a/api/src/main/java/me/xiaoyan/point/api/service/impl/GoodsServiceImpl.java +++ b/api/src/main/java/me/xiaoyan/point/api/service/impl/GoodsServiceImpl.java @@ -7,6 +7,7 @@ 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 me.xiaoyan.point.api.util.DataStatus; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -31,6 +32,11 @@ public class GoodsServiceImpl extends ServiceImpl if (StringUtils.hasText(param.getTitle())) { q.eq("title", param.getTitle().trim()); } + if(param.getCategory() != null){ + q.eq("category", param.getCategory()); + } + // 不查询删除状态数据 + q.ne("status", DataStatus.DELETE); return getBaseMapper().selectPage(param.getPage(), q); } diff --git a/api/src/main/java/me/xiaoyan/point/api/util/DataStatus.java b/api/src/main/java/me/xiaoyan/point/api/util/DataStatus.java index 5e4cc5e..9ec579e 100644 --- a/api/src/main/java/me/xiaoyan/point/api/util/DataStatus.java +++ b/api/src/main/java/me/xiaoyan/point/api/util/DataStatus.java @@ -2,6 +2,7 @@ package me.xiaoyan.point.api.util; public class DataStatus { public static final int NORMAL = 1; + public static final int DISABLED = 2; public static final int DELETE = 0; }