# project2-wechat-mall **Repository Path**: varcha/project2-wechat-mall ## Basic Information - **Project Name**: project2-wechat-mall - **Description**: 35th王道训练营小组项目二 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-11-26 - **Last Updated**: 2021-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # project2 ## 每日任务 每日任务:[doge project2 每日任务 (腾讯文档)](https://docs.qq.com/doc/DSnZEaGFZcmp5dFNR) 进度表:[35th项目进度表 (腾讯文档)](https://docs.qq.com/sheet/DSkRHTGNlWXVBaXZD?tab=BB08J2) ## 介绍 1. 微信小程序商城 2. 后台管理:vue http://182.92.235.201 3. 前台商城:小程序 ##### 前端代码 1. 查看vue组件 2. src/api js文件 -> 对应请求相关内容 3. src/utils js文件 4. src/views vue文件 5. 使用nodejs将前端代码跑起来 ##### 数据库 1. sql脚本:建表,添加数据 2. 逻辑删除:deleted 字段 3. 如果修改了数据库表的结构,把修改结构的sql语句记录保存下来。 1. 本地环境,线上环境 ; 开发/测试环境,生产环境 ——> 本地的应用程序、代码、表结构都需要同步给远程服务器。 2. 使用 sql脚本 记录:注释:操作;时间;姓名 ##### 补充内容 1. 第三天开启小程序 2. 第四天 梳理 Shiro 框架 3. Shiro,阿里云OSS / SMS,MD5,对称加密&非对称加密 ## 流程 1. 分工模块,维护进度表 2. 小组远程仓库,添加管理员 3. 集中搭建骨架:整合SpringMVC,整合MyBatis 1. 配置数据库,使用独自的数据库 2. 协调包目录、基本类、工具类、异常处理 ## 设置 ### 约定配置 1. 包: com.doge 2. bean包:base, auth, pojo, vo, bo 3. controller: admin, wx 4. 数据库url:jdbc:mysql://localhost:3306/35th_market?useUnicode=true&characterEncoding=utf-8 5. commit格式: function;description;姓名;module 6. 依赖: 7. controller:url中前两个相同的是同一个 controller,命名是 第二行+Controller ##### 注释 1. 更改逆向工程自动生成的文件,一定要**添加注释**!! ### MyBaits逆向工程 1. 根据数据库表自动生成:JavaBean,Mapper接口,mapper.xml 2. JavaBean:成员变量名 <==> 列名:名称 + 类型 3. Mapper:增加对应的单表方法(基本crud方法) 4. 映射:xml标签 同 接口中方法对应 逆向工程分工 ##### 依赖 mybatis-generator-core,mysql驱动 1. 生成文件过程无需mybatis依赖,运行需要。 ##### 配置文件 指定 --> 数据库(url,username,password) - 表 - pojo类&包目录 - mapper 包目录 ##### 关键字 1. 列名为关键字,则Syntax错误 ---> 添加 `` ##### 自增主键 1. 设置 keyGenerated = true, keyProperty = id ##### 模糊查询 1. Example.andXxxxLike(String value) 需要在调用的时候手动拼接 %+value+% ### 异常处理 1. 任何返回错误的处理情况,都是用异常处理实现 ### PageHelper 1. 依赖:pagehelper-spring-boot-starter、 2. 配置方言: ```yaml pageHelper helper-dialect: mysql ``` 3. 在执行查询之前开启分页: ### Gson2Bean 1. 把json字符串转换为 JavaBean 2. GsonFormatter ----> **alt+s** ### 日志 1. 配置 包名 & 日志级别 2. logging.level ---> map类型参数 1. key:包名 2. value:日志级别 ```java // 在执行查询前开启分页 PageHelper.startPage(Param.getPage(), param.getLimit()); // 通过 分页信息PageInfo 得到分页数据: 有参构造 放入查询结果 new PageInfo(users).getTotal(); //获取总的分页信息 ``` ### 日期格式 ##### Converter 对传入的日期String进行处理,转换为日期格式 ```json // 实现 Converter接口,全局配置 @Component public class DateConverter implements Converter { @SneakyThrows @Override public Date convert(String source) { Date date=null; try { date = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(source); } catch (ParseException e) { e.printStackTrace(); return null; } return date; } } // MvcConfiguration 配置 @Override public void addFormatters(FormatterRegistry registry) { registry.addConverter(new DateConverter()); } ``` ##### Jackson ```yaml # 在 bean 转换为 json字符串 时候统一日期格式 spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 ``` ### Validation ##### Hibernate 1. 引入依赖,自动配置 2. 注解判断: 1. BigDecimal 2. 套Bean配置@Valid 3. 正则表达式判断 @Pattern 3. 参数列表: @Valid @ResponseBody Bean bean, BindingResult bind ##### aop 切面函数使用注解,精确在特定的方法中 ```java @Aspect @Component public class ParamValidAspect { /* * 参考 https://segmentfault.com/q/1010000008418069 * 实现在 类上注解 和 在方法上 注解同时都可以被拦截 * */ @Pointcut("@within(com.doge.util.anno.MarketHibernateValid) || @annotation(com.doge.util.anno.MarketHibernateValid)") public void paramPointcut(){} @Before("paramPointcut()") public void before(JoinPoint join) throws Param402Exception { Object[] args = join.getArgs(); for (Object arg : args) { if (arg instanceof BindingResult){ String msg = ParamValidation.validHibernate((BindingResult) arg); if (msg==null) return; throw new Param402Exception(msg); } } } } ``` ### 工具类 ##### TypeHandler 1. 实现接口,或者继承基础类 ```java public class AdminTypeHandler extends BaseTypeHandler { @Override public void setNonNullParameter(PreparedStatement ps, int index, Integer[] parameter, JdbcType jdbcType); @Override public Integer[] getNullableResult(ResultSet rs, String columnName); @Override public Integer[] getNullableResult(ResultSet rs, int columnIndex); @Override public Integer[] getNullableResult(CallableStatement cs, int columnIndex); } ``` 2. yml 中配置 3. 绑定 jdbc 类型 ##### StringUtils 直接使用 druid 包中的 工具类 ```java import com.alibaba.druid.util.StringUtils; ``` ##### 查询配置 ```java 获得配置调用: systemMapper.getMarketSystemByKeyName( 填入要查的系统配置的key名字) 商场配置: market_mall_name 商城名称 market_mall_address 商城地址 market_mall_longitude 经度 market_mall_latitude 维度 market_mall_phone 联系电话 market_mall_qq 联系qq 运费配置: market_express_freight_min 运费满减所需最低消费 market_express_freight_value 运费满减不足所需运费 订单配置: market_order_unpaid 用户下单后超时、用户未付款,则订单自动取消 market_order_unconfirm 订单发货后超期,未确认收货,则订单自动确认收货 market_order_comment 确认收货后超期、未评价商品,则取消评价资格 小程序配置: market_wx_index_new 新品首发栏商品显示数量 market_wx_index_hot 人气推荐栏目商品显示数量 market_wx_index_brand 品牌制造商直供栏目品牌商显示数量 market_wx_index_topic 专题精选栏目显示数量 market_wx_catlog_list 分类栏目显示数量 market_wx_catlog_goods 分类栏目商品显示数量 market_wx_share 商品分享功能 ``` # 后台管理admin ##### ```json // url: // req: // resp: // 如果 ... 则返回错误 ``` > 注意: > > req 如果是get请求就没有,post请求就有;要多测试因为用户添加数据而发生错误的时机 > > 注释后面还可以再添加更详细的描述 ## 登录认证auth 1. 先开发 admin/auth/login 和 admin/auth/info 2. 需要shiro才能开发,先给到这两个接口,后续再整合 3. 更加精细的权限管理:按照安全规则或者安全策略控制用户只能访问被授权的内容 1. 认证 + 授权 #### admin/auth ##### login ```json // url: POST // req: {"username":"admin123","password":"admin123"} // resp: 登录成功 { "errno": 0, "data": { "adminInfo": { "nickName": "admin123", "avatar": "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif" }, "token": "46a8eca3-17a4-4981-abe6-071939905620" }, "errmsg": "成功" } // resp: 登陆失败 {"errno":605,"errmsg":"用户帐号或密码不正确"} // 未登录状态下访问: { "errno": 501, "errmsg": "q" } // 无权限操作返回: { "errno": 506, "errmsg": "无操作权限" } ``` ##### info ```json // url: GET http://182.92.235.201:8083/admin/auth/info ?token=46a8eca3-17a4-4981-abe6-071939905620 // resp: { "errno": 0, "data": { "roles": [ "超级管理员" ], "name": "admin123", "perms": [ "*" ], "avatar": "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif" }, "errmsg": "成功" } ``` ##### logout ```json // url: POST http://182.92.235.201:8083/admin/auth/logout // resp: {"errno":0,"errmsg":"成功"} ``` ### wx/auth ##### login ```json // url: POST http://182.92.235.201:8083/wx/auth/login // req: {"username":"user123","password":"test1"} // resp: { "errno": 0, "data": { "userInfo": { "nickName": "user123", "avatarUrl": "" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV" }, "errmsg": "成功" } ``` ##### logout ```json // url: POST http://182.92.235.201:8083/wx/auth/logout // req: 空 // resp: {"errno":0,"errmsg":"成功"} ``` ##### register ```json // url: POST http://localhost:8083/wx/auth/register // req: { "username": "dsfsdfs", "password": "12345678", "mobile": "12345678", "code": "123", "wxCode": "003F3J000dd5TM13Tu200AZ3dH0F3J08" } // resp: {"errno":0,"errmsg":"成功"} // 注册失败: {"errno":703,"errmsg":"验证码错误"} {"errno":707,"errmsg":"手机号格式不正确"} ``` ##### regCaptcha ```json // url: POST http://182.92.235.201:8083/wx/auth/regCaptcha // req: mobile: "18888888888" // resp: {"errno":707,"errmsg":"手机号格式不正确"} ``` ##### login_by_weixin ```json // url: POST http://182.92.235.201:8083/wx/auth/login_by_weixin // req: { "code": "033pvbml2Ow4f84aNJll2g5oLm0pvbmO", "userInfo": { "nickName": "thales", "gender": 0, "language": "zh_CN", "city": "", "province": "", "country": "", "avatarUrl": "https://thirdwx.qlogo.cn/BDPw/132" } } // resp: {"errno":-1,"errmsg":"错误"} ``` ##### reset ```json // url: POST http://localhost:8083/wx/auth/reset // req: {"mobile":"18937750680","code":"1234","password":"12345678"} // resp: ``` ## 通知中心 ### admin/profile ##### lsnotice ```json // url: GET http://182.92.235.201:8083/admin/profile/lsnotice ?page=1&limit=20&title=sdf&type=unread&sort=add_time&order=desc // resp: { "errno": 0, "data": { "total": 0, "pages": 0, "limit": 20, "page": 0, "list": [ ] }, "errmsg": "成功" } ``` ## 系统管理 ### admin/admin ##### list ```json //url: http://localhost:8083/admin/admin/list?page=1&limit=20&username=dsgs&sort=add_time&order=desc // resp: { "errno": 0, "data": { "total": 3, "pages": 1, "limit": 20, "page": 1, "list": [ { "id": 5, "username": "mall123", "avatar": "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif", "roleIds": [ 2 ] }, { "id": 4, "username": "promotion123", "avatar": "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif", "roleIds": [ 3 ] }, { "id": 1, "username": "admin123", "avatar": "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif", "roleIds": [ 1 ] } ] }, "errmsg": "成功" } ``` ##### update ```json // url http://182.92.235.201:8083/admin/admin/update // req 回显 { "id": 5, "username": "mall123", "avatar": "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif", "roleIds": [ 2, 3, 4 ], "password": "1234566" } // resp: { "errno": 0, "data": { "id": 5, "username": "mall123", "avatar": "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif", "updateTime": "2021-11-29 19:49:04", "roleIds": [ 2, 3, 4 ] }, "errmsg": "成功" } // 如果同名,不返回错误?! ``` ##### create ```json // url: http://182.92.235.201:8083/admin/admin/create // req: { "username": "huahua1", "password": "12345677", "avatar": "http://182.92.235.201:8083/wx/storage/fetch/hd210onw3f6p3rvef51s.jpeg", "roleIds": [ ] } // resp: { "errno": 0, "data": { "id": 7, "username": "huahua1", "password": "$2a$10$DVxUZ2WxjHtb0J/UZzwUgeXllJx0KVoq07YsCeE1yN8zHxcRT.THC", "avatar": "http://182.92.235.201:8083/wx/storage/fetch/hd210onw3f6p3rvef51s.jpeg", "addTime": "2021-11-29 20:06:43", "updateTime": "2021-11-29 20:06:43", "roleIds": [ ] }, "errmsg": "成功" } // 如果 用户名已存在 则返回错误 {"errno":602,"errmsg":"管理员已经存在"} ``` ##### delete ```json // url: http://182.92.235.201:8083/admin/admin/delete // req: { "id": 6, "username": "huahua", "password": "$2a$10$VGnIojCNSfyneH/z9JgvZuUBknh.bmTyD2oxCjtcn1EM6ITvkbb7q", "addTime": "2021-11-29 19:56:59", "updateTime": "2021-11-29 19:56:59", "roleIds": [ ] } // resp: {"errno":0,"errmsg":"成功"} ``` ### admin/log ##### list ```json // url: http://182.92.235.201:8083/admin/log/list ?page=1&limit=20&name=123&sort=add_time&order=desc // resp: { "errno": 0, "data": { "total": 120, "pages": 6, "limit": 20, "page": 1, "list": [ { "id": 111, "admin": "admin123", "ip": "111.175.53.168", "type": 1, "action": "登录", "status": true, "result": "", "comment": "", "addTime": "2021-11-29 20:15:50", "updateTime": "2021-11-29 20:15:50", "deleted": false }, { "id": 110, "admin": "admin123", "ip": "111.175.53.168", "type": 1, "action": "登录", "status": true, "result": "", "comment": "", "addTime": "2021-11-29 20:14:35", "updateTime": "2021-11-29 20:14:35", "deleted": false } ] }, "errmsg": "成功" } ``` ### admin/role ##### list ```json // url: GET http://182.92.235.201:8083/admin/role/list ?page=1&limit=20&name=123&sort=add_time&order=desc // resp: { "errno": 0, "data": { "total": 7, "pages": 1, "limit": 20, "page": 1, "list": [ { "id": 7, "name": "132432", "desc": "321321", "enabled": true, "addTime": "2021-11-29 19:18:07", "updateTime": "2021-11-29 19:58:24", "deleted": false }, { "id": 4, "name": "21321", "desc": "321312", "enabled": true, "addTime": "2021-11-29 19:13:26", "updateTime": "2021-11-29 19:13:26", "deleted": false } ] }, "errmsg": "成功" } ``` ##### options ```json // url: get http://182.92.235.201:8083/admin/role/options // resp: { "errno": 0, "data": { "total": 7, "pages": 1, "limit": 7, "page": 1, "list": [ { "value": 1, "label": "超级管理员" }, { "value": 2, "label": "商场管理员" }, { "value": 3, "label": "推广管理员" }, { "value": 4, "label": "21321" }, { "value": 5, "label": "大撒大撒" }, { "value": 6, "label": "2312312" }, { "value": 7, "label": "132432" } ] }, "errmsg": "成功" } ``` ##### create ```json // url: POST http://182.92.235.201:8083/admin/role/create // req: {"name":"huahua","desc":"123"} // resp: { "errno": 0, "data": { "id": 13, "name": "huahua", "desc": "123", "addTime": "2021-11-30 14:55:32", "updateTime": "2021-11-30 14:55:32" }, "errmsg": "成功" } // name重复错误 {"errno":640,"errmsg":"角色已经存在"} ``` ##### update ```json // url: POST http://182.92.235.201:8083/admin/role/update // req: { "id": 11, "name": "title", "desc": "打啊", "enabled": true, "addTime": "2021-11-30 14:28:13", "updateTime": "2021-11-30 14:28:13", "deleted": false } // resP: {"errno":0,"errmsg":"成功"} // name重复错误 {"errno":640,"errmsg":"角色已经存在"} ``` ##### delete ```json // url: POST http://182.92.235.201:8083/admin/role/delete // req: { "id": 11, "name": "title", "desc": "打啊", "enabled": true, "addTime": "2021-11-30 14:28:13", "updateTime": "2021-11-30 14:28:13", "deleted": false } // resp: {"errno":0,"errmsg":"成功"} ``` ##### permissions 1. 结合shiro权限模型,自己建表,参考 Region 表 ```json // url: GET http://182.92.235.201:8083/admin/role/permissions?roleId=6 // resp: { "errno": 0, "data": { "systemPermissions": [ { "id": "商品管理", "label": "商品管理", "children": [ { "id": "商品管理", "label": "商品管理", "children": [ { "id": "admin:goods:read", "label": "详情", "api": "GET /admin/goods/detail" }, { "id": "admin:goods:update", "label": "编辑", "api": "POST /admin/goods/update" }, { "id": "admin:goods:list", "label": "查询", "api": "GET /admin/goods/list" }, { "id": "admin:goods:delete", "label": "删除", "api": "POST /admin/goods/delete" }, { "id": "admin:goods:create", "label": "上架", "api": "POST /admin/goods/create" } ] }, { "id": "评论管理", "label": "评论管理", "children": [ { "id": "admin:comment:list", "label": "查询", "api": "GET /admin/comment/list" }, { "id": "admin:comment:delete", "label": "删除", "api": "POST /admin/comment/delete" } ] } ] } ], "assignedPermissions": [ ] }, "errmsg": "成功" } ``` ```json // POST http://182.92.235.201:8083/admin/role/permissions // req: { "roleId": 6, "permissions": [ "admin:groupon:read", "admin:groupon:update", "admin:groupon:list", "admin:groupon:delete", "admin:groupon:create", "admin:ad:update", "admin:ad:list", "admin:ad:read", "admin:ad:delete", "admin:ad:create", "admin:coupon:listuser", "admin:coupon:update", "admin:coupon:list", "admin:coupon:read", "admin:coupon:delete", "admin:coupon:create", "admin:topic:batch-delete", "admin:topic:update", "admin:topic:list", "admin:topic:read", "admin:topic:delete", "admin:topic:create", "admin:notice:batch-delete", "admin:notice:update", "admin:notice:read", "admin:notice:delete", "admin:notice:create", "admin:config:wx:list", "admin:config:wx:updateConfigs", "admin:config:express:list", "admin:config:express:updateConfigs", "admin:config:mall:list", "admin:config:mall:updateConfigs", "admin:config:order:list", "admin:config:order:updateConfigs" ] } // resp: {"errno":0,"errmsg":"成功"} ``` ### admin/storage ##### list ```json // url: GET http://182.92.235.201:8083/admin/storage/list ?page=1&limit=20&sort=add_time&order=desc&key=2123&name=3446 // resp: { "errno": 0, "data": { "total": 151, "pages": 8, "limit": 20, "page": 1, "list": [ { "id": 156, "key": "0m7ma75vv530wofebj2x.png", "name": "兵马.png", "type": "image/png", "size": 36985, "url": "http://182.92.235.201:8083/wx/storage/fetch/0m7ma75vv530wofebj2x.png", "addTime": "2021-11-30 16:33:46", "updateTime": "2021-11-30 16:33:46", "deleted": false } ] }, "errmsg": "成功" } ``` ##### create ```json // url POST http://182.92.235.201:8083/admin/storage/create // req:上传图片 -----------------------------1391143199723447123961665628 Content-Disposition: form-data; name="file"; filename="dogecoin.jpeg" Content-Type: image/jpeg // resp: { "errno": 0, "data": { "id": 51, "key": "7r4p0m26bcte1d60ajjl.jpeg", "name": "dogecoin.jpeg", "type": "image/jpeg", "size": 384546, "url": "http://182.92.235.201:8083/wx/storage/fetch/7r4p0m26bcte1d60ajjl.jpeg", "addTime": "2021-11-29 23:17:42", "updateTime": "2021-11-29 23:17:42" }, "errmsg": "成功" } ``` ##### update ```json // url: POST http://182.92.235.201:8083/admin/storage/update // req: { "id": 155, "key": "lv6m2sbut2ehcomcx9i7.jpg", "name": "maid.jpg", "type": "image/jpeg", "size": 643467, "url": "http://182.92.235.201:8083/wx/storage/fetch/lv6m2sbut2ehcomcx9i7.jpg", "addTime": "2021-11-30 16:19:08", "updateTime": "2021-11-30 16:19:08", "deleted": false } // resp: { "errno": 0, "data": { "id": 155, "key": "lv6m2sbut2ehcomcx9i7.jpg", "name": "maid.jpg", "type": "image/jpeg", "size": 643467, "url": "http://182.92.235.201:8083/wx/storage/fetch/lv6m2sbut2ehcomcx9i7.jpg", "addTime": "2021-11-30 16:19:08", "updateTime": "2021-11-30 16:37:13", "deleted": false }, "errmsg": "成功" } ``` ##### delete ```json // url: POST http://182.92.235.201:8083/admin/storage/delete // req: { "id": 152, "key": "9e7u5mio6ca1328l0hxh.jpg", "name": "014d9cfbbc885400bf7e60989faab9e9 (1).jpg", "type": "image/jpeg", "size": 17092, "url": "http://182.92.235.201:8083/wx/storage/fetch/9e7u5mio6ca1328l0hxh.jpg", "addTime": "2021-11-30 16:06:08", "updateTime": "2021-11-30 16:06:08", "deleted": false } // resp: {"errno":0,"errmsg":"成功"} ``` ## 行政区域 ### /admin/region ```json // url: GET http://182.92.235.201:8083/admin/region/list // req: // resp: {"errno":0,"data": { "total":31,"pages":1,"limit":31,"page":1,"list": [ {//省及直辖市 "id":1,"name":"北京市","type":1,"code":110000,"children": [{//区或市 "id":32,"name":"市辖区","type":2,"code":110100,"children": [ {"id":376,"name":"东城区","type":3,"code":110101}, {"id":377,"name":"西城区","type":3,"code":110102}, {"id":378,"name":"朝阳区","type":3,"code":110105}, ]} ] }... {"id":375,"name":"自治区直辖县级行政区划","type":2,"code":659000,"children": [{"id":3227,"name":"石河子市","type":3,"code":659001}, {"id":3228,"name":"阿拉尔市","type":3,"code":659002}, {"id":3229,"name":"图木舒克市","type":3,"code":659003}, {"id":3230,"name":"五家渠市","type":3,"code":659004}, {"id":3231,"name":"铁门关市","type":3,"code":659006}] }] }] } ,"errmsg":"成功"} { "errno": 0, "errmsg": "成功", "data": { "total": 31, "pages": 1, "limit": 31, "page": 1, "list": [ { "id": 1, "name": "北京市", "type": 1, "code": 110000, "children": [ { "id": 32, "name": "市辖区", "type": 2, "code": 110100, "children": [ { "id": 376, "name": "东城区", "type": 3, "code": 110101 } ] } ] } ] } } ``` ## 品牌制造商 ### admin/brand #### list ```json // url: http://182.92.235.201:8083/admin/brand/list?page=1&limit=20&sort=add_time&order=desc //查询url:http://182.92.235.201:8083/admin/brand/list?page=1&limit=20&id=id&name=name&sort=add_time&order=desc // req: // resp: { "errno": 0, "data": { "total": 4, "pages": 1, "limit": 20, "page": 1, "list": [{ "id": 1024000, "name": "WMF制造商", "desc": "严选找寻德国百年高端厨具WMF的制造商,\n选择拥有14年经验的不锈钢生产工厂,\n为你甄选事半功倍的优质厨具。", "picUrl": "http://yanxuan.nosdn.127.net/2018e9ac91ec37d9aaf437a1fd5d7070.png", "sortOrder": 8, "floorPrice": 9.90, "addTime": "2018-02-01 00:00:00", "updateTime": "2018-02-01 00:00:00", "deleted": false }, { "id": 1008000, "name": "WPC制造商", "desc": "严选寻找日本雨伞品牌W.P.C制造商,\n采用严谨工艺以及环保材料,\n沉淀15年行业经验,打造精致雨具。", "picUrl": "http://yanxuan.nosdn.127.net/c4e97cc87186ce17f9316f3ba39e220c.png", "sortOrder": 22, "floorPrice": 59.00, "addTime": "2018-02-01 00:00:00", "updateTime": "2018-02-01 00:00:00", "deleted": false }] }, "errmsg": "成功" } ``` #### create ```json // url: http://182.92.235.201:8083/admin/brand/create // req: 1. desc: "des" 2. floorPrice: "3" 3. name: "testbrandname" 4. picUrl: "http://182.92.235.201:8083/wx/storage/fetch/ox4vb7gty7bbldl1s00p.jpeg" // resp: { "errno":0, "data":{ "id":1046001, "name":"testbrandname", "desc":"des", "picUrl":"http://182.92.235.201:8083/wx/storage/fetch/ox4vb7gty7bbldl1s00p.jpeg", "floorPrice":3, "addTime":"2021-11-29 19:32:47", "updateTime":"2021-11-29 19:32:47" }, "errmsg":"成功" } ``` #### update ```json // url: http://182.92.235.201:8083/admin/brand/update // req: 1. addTime: "2021-11-29 19:32:47" 2. desc: "des1111" 3. floorPrice: 3 4. id: 1046001 5. name: "testbrandname" 6. picUrl: "http://182.92.235.201:8083/wx/storage/fetch/ox4vb7gty7bbldl1s00p.jpeg" // resp: { "errno":0, "data":{ "id":1046001, "name":"testbrandname", "desc":"des1111", "picUrl":"http://182.92.235.201:8083/wx/storage/fetch/ox4vb7gty7bbldl1s00p.jpeg", "floorPrice":3, "addTime":"2021-11-29 19:32:47", "updateTime":"2021-11-29 19:36:30" }, "errmsg":"成功" } ``` #### delete ````json // url: http://182.92.235.201:8083/admin/brand/delete // req: 1. addTime: "2021-11-29 19:32:47" 2. desc: "des1111" 3. floorPrice: 3 4. id: 1046001 5. name: "testbrandname" 6. picUrl: "http://182.92.235.201:8083/wx/storage/fetch/ox4vb7gty7bbldl1s00p.jpeg" 7. updateTime: "2021-11-29 19:32:47" // resp: { "errno":0, "errmsg":"成功" } ```` ## 商品类目 ### admin/cetegory ### list() ```json // url: http://182.92.235.201:8083/admin/category/list // req: // resp: { "errno": 0, "data": { "total": 9, "pages": 1, "limit": 9, "page": 1, "list": [{ "id": 1005000, "name": "居家", "keywords": "", "desc": "回家,放松身心", "iconUrl": "http://yanxuan.nosdn.127.net/a45c2c262a476fea0b9fc684fed91ef5.png", "picUrl": "http://yanxuan.nosdn.127.net/e8bf0cf08cf7eda21606ab191762e35c.png", "level": "L1", "children": [{ "id": 1008002, "name": "布艺软装", "keywords": "", "desc": "各种风格软装装点你的家", "iconUrl": "http://yanxuan.nosdn.127.net/8bbcd7de60a678846664af998f57e71c.png", "picUrl": "http://yanxuan.nosdn.127.net/2e2fb4f2856a021bbcd1b4c8400f2b06.png", "level": "L2" }, "errmsg": "成功" } ``` #### L1(一级类目) ```json // url: http://182.92.235.201:8083/admin/category/l1 // req: // resp: { "errno": 0, "data": { "total": 9, "pages": 1, "limit": 9, "page": 1, "list": [{ "value": 1005000, "label": "居家" }, { "value": 1005001, "label": "餐厨" }, { "value": 1005002, "label": "饮食" }, { "value": 1008000, "label": "配件" }, { "value": 1010000, "label": "服装" }, { "value": 1011000, "label": "婴童" }, { "value": 1012000, "label": "杂货" }, { "value": 1013001, "label": "洗护" }, { "value": 1019000, "label": "志趣" }] }, "errmsg": "成功" } ``` #### create ```json // url: http://182.92.235.201:8083/admin/category/create // req: 1. desc: "testdec" 2. iconUrl: "http://182.92.235.201:8083/wx/storage/fetch/o26j2fmxiiagcewfak3e.jpeg" 3. keywords: "" 4. level: "L2" 5. name: "testcreate" 6. picUrl: "http://182.92.235.201:8083/wx/storage/fetch/mp6k14vneqzvto1fbs8d.jpeg" 7. pid: 0 // resp: { "errno": 0, "data": { "id": 1036005, "name": "testcreate", "keywords": "", "desc": "testdec", "pid": 0, "iconUrl": "http://182.92.235.201:8083/wx/storage/fetch/o26j2fmxiiagcewfak3e.jpeg", "picUrl": "http://182.92.235.201:8083/wx/storage/fetch/mp6k14vneqzvto1fbs8d.jpeg", "level": "L2", "addTime": "2021-11-29 19:55:12", "updateTime": "2021-11-29 19:55:12" }, "errmsg": "成功" } ``` #### update ```json // url: http://182.92.235.201:8083/admin/category/update // req: 1. desc: "testdec" 2. iconUrl: "http://182.92.235.201:8083/wx/storage/fetch/o26j2fmxiiagcewfak3e.jpeg" 3. id: 1036005 4. keywords: "" 5. level: "L2" 6. name: "testcreate" 7. picUrl: "http://182.92.235.201:8083/wx/storage/fetch/mp6k14vneqzvto1fbs8d.jpeg" 8. pid: 1005001 // resp: {"errno":0,"errmsg":"成功"} ``` #### delete ```json // url: http://182.92.235.201:8083/admin/category/delete // req: 1. desc: "testdec" 2. iconUrl: "http://182.92.235.201:8083/wx/storage/fetch/o26j2fmxiiagcewfak3e.jpeg" 3. id: 1036005 4. keywords: "" 5. level: "L2" 6. name: "testcreate" 7. picUrl: "http://182.92.235.201:8083/wx/storage/fetch/mp6k14vneqzvto1fbs8d.jpeg" // resp: {"errno":0,"errmsg":"成功"} ``` ## 售后管理 ### admin/aftersale ##### list ```json // url: http://182.92.235.201:8083/admin/aftersale/list?page=1&limit=20&status=&sort=add_time&order=desc // req: // resp: { "errno": 0, "data": { "total": 0, "pages": 0, "limit": 20, "page": 0, "list": [] }, "errmsg": "成功" } ``` ##### batch-recept ##### batch-reject ## 通用问题 ### admin/issue ##### list ```json // url: http://182.92.235.201:8083/admin/issue/list?page=1&limit=20&sort=add_time&order=desc // req: // resp: { "errno": 0, "data": { "total": 5, "pages": 1, "limit": 20, "page": 1, "list": [{ "id": 5, "question": "多少天能收到货", "answer": "一般三到七天", "addTime": "2021-11-29 17:38:04", "updateTime": "2021-11-29 17:38:04", "deleted": false }, { "id": 1, "question": "购买运费如何收取?", "answer": "单笔订单金额(不含运费)满88元免邮费;不满88元,每单收取10元运费。\n(港澳台地区需满", "addTime": "2018-02-01 00:00:00", "updateTime": "2018-02-01 00:00:00", "deleted": false }] }, "errmsg": "成功" } ``` ##### create ```json // url: http://182.92.235.201:8083/admin/issue/create // req: { question: "有优惠券吗", answer: "自己看商品页!" } // resp: { "errno": 0, "data": { "id": 6, "question": "有优惠券吗", "answer": "自己看商品页!", "addTime": "2021-11-29 18:46:35", "updateTime": "2021-11-29 18:46:35" }, "errmsg": "成功" } ``` ##### update ```json // url: http://182.92.235.201:8083/admin/issue/update // req: { "id": 7, "question": "sdaad", "answer": "asdaddaddd", "addTime": "2021-11-29 20:37:06", "updateTime": "2021-11-29 20:37:06", "deleted": false } // resp: { "errno": 0, "data": { "id": 7, "question": "sdaad", "answer": "asdaddaddd", "addTime": "2021-11-29 20:37:06", "updateTime": "2021-11-29 20:49:23", "deleted": false }, "errmsg": "成功" } ``` ##### delete ```json // url: http://182.92.235.201:8083/admin/issue/delete // req: { "id": 6, "question": "有优惠券吗", "answer": "自己看商品页!亲亲~", "addTime": "2021-11-29 18:46:35", "updateTime": "2021-11-29 18:46:35" } // resp: { "errno": 0, "errmsg": "成功" } ``` ## 关键词 ### admin/keyword ##### list ```json // url: http://182.92.235.201:8083/admin/keyword/list?page=1&limit=20&keyword=&url=&sort=add_time&order=desc // resp: { "errno": 0, "data": { "total": 7, "pages": 1, "limit": 20, "page": 1, "list": [{ "id": 1, "keyword": "母亲节", "url": "", "isHot": false, "isDefault": false, "sortOrder": 100, "addTime": "2018-02-01 00:00:00", "updateTime": "2018-02-01 00:00:00", "deleted": false }, { "id": 7, "keyword": "单鞋", "url": "", "isHot": false, "isDefault": false, "sortOrder": 8, "addTime": "2018-02-01 00:00:00", "updateTime": "2018-02-01 00:00:00", "deleted": false }] }, "errmsg": "成功" } ``` ##### create ```json //url: http://182.92.235.201:8083/admin/keyword/create { "keyword": "dd", "url": "rd", "isHot": false, "isDefault": false } // req: // resp: { "errno": 0, "data": { "id": 8, "keyword": "dd", "url": "rd", "isHot": false, "isDefault": false, "addTime": "2021-11-29 19:15:50", "updateTime": "2021-11-29 19:15:50" }, "errmsg": "成功" } ``` ##### update ```json // url: http://182.92.235.201:8083/admin/keyword/update // req: { "id": 1, "keyword": "母亲节", "url": "sss", "isHot": true, "isDefault": true, "sortOrder": 100, "addTime": "2018-02-01 00:00:00", "updateTime": "2018-02-01 00:00:00", "deleted": false } // resp: { "errno": 0, "data": { "id": 1, "keyword": "母亲节", "url": "sss", "isHot": true, "isDefault": true, "sortOrder": 100, "addTime": "2018-02-01 00:00:00", "updateTime": "2021-11-29 18:57:46", "deleted": false }, "errmsg": "成功" } ``` ##### dalete ```json // url: http://182.92.235.201:8083/admin/keyword/delete // req: { "id": 8, "keyword": "dd", "url": "rd", "isHot": false, "isDefault": false, "addTime": "2021-11-29 19:15:50", "updateTime": "2021-11-29 19:15:50" } // resp: { "errno": 0, "errmsg": "成功" } ``` ## 商品管理 ## 推广管理 ### admin/coupon ##### create ```json // req: // goodsType = 1 { "name": "23435", "total": 0, "discount": 0, "min": 0, "limit": 1, "type": 0, "status": 0, "goodsType": 1, "goodsValue": [ 1005011 ], "timeType": 0, "days": 0, "startTime": null, "endTime": null } // goodsType = 2 { "name": "4577568", "total": 0, "discount": 0, "min": 0, "limit": 1, "type": 0, "status": 0, "goodsType": 2, "goodsValue": [ 1110016, 1056002 ], "timeType": 0, "days": 0, "startTime": null, "endTime": null, "couponGoodsList": [ { "goodsId": 1110016, "goodsName": "天然硅胶宠物除毛按摩刷", "goodsSn": "1110016" }, { "goodsId": 1056002, "goodsName": "男式玩色内裤", "goodsSn": "1056002" } ] } // resp: { "errno": 0, "data": { "id": 19, "name": "23435", "total": 0, "discount": 0, "min": 0, "limit": 1, "type": 0, "status": 0, "goodsType": 1, "goodsValue": [ 1005011 ], "timeType": 0, "days": 0, "addTime": "2021-11-30 14:31:27", "updateTime": "2021-11-30 14:31:27" }, "errmsg": "成功" } ``` ### admin/goods ##### list ```json // url:GET http://localhost:8083/admin/goods/list?limit=0 // 在coupon中的list { "errno": 0, "errmsg": "成功", "data": { "total": 240, "pages": 0, "limit": 0, "page": 0, "list": [ { "id": 1181003, "goodsSn": "11111101", "name": "菲尔普斯马丁靴", "categoryId": 1008003, "brandId": 1001007, "gallery": [ "http://182.92.235.201:8083/wx/storage/fetch/s1c77sxrgdyapntlknjy.jpg" ], "keywords": "鞋类", "brief": "菲尔普斯", "isOnSale": true, "sortOrder": 100, "picUrl": "http://182.92.235.201:8083/wx/storage/fetch/b1w9tdo5laxcrkybdlgd.jpg", "isNew": true, "isHot": false, "unit": "双", "counterPrice": 120.0, "retailPrice": 1000.0, "addTime": "2021-11-30 14:21:45", "updateTime": "2021-11-30 14:21:45", "deleted": false, "detail": "

菲尔普斯穿了都说好

" }, { "id": 1181001, "goodsSn": "1156715", "name": "QQ号码", "categoryId": 1012003, "brandId": 1046011, "gallery": [ "http://182.92.235.201:8083/wx/storage/fetch/7j758hjg2cc7uemlrjqf.jpg", "http://182.92.235.201:8083/wx/storage/fetch/2mt3zovytsu83mqm9ltt.jpg" ], "keywords": "号码", "brief": "这是一个xxxx商品", "isOnSale": true, "sortOrder": 100, "picUrl": "http://182.92.235.201:8083/wx/storage/fetch/h7k1qdlm36xvgc0qhr1f.jpg", "isNew": true, "isHot": false, "unit": "件", "counterPrice": 123.0, "retailPrice": 1234.0, "addTime": "2021-11-30 14:01:49", "updateTime": "2021-11-30 14:01:49", "deleted": false, "detail": "

填着玩

" } ] } } ``` ### admin/topic ##### read ```json // url: GET http://182.92.235.201:8083/admin/topic/read?id=317 // resp: { "errno": 0, "data": { "goodsList": [ { "id": 1181005, "name": "孙悟空", "brief": "好玩", "picUrl": "", "isNew": true, "isHot": false, "counterPrice": 11.0, "retailPrice": 55.0 } ], "topic": { "id": 317, "title": "title", "subtitle": "subtitle", "price": 500.0, "readCount": "77", "picUrl": "http://182.92.235.201:8083/wx/storage/fetch/bo2a1sbbfmuajoeqj9jn.jpg", "sortOrder": 100, "goods": [ 1181005 ], "addTime": "2021-11-30 19:44:23", "updateTime": "2021-11-30 19:44:23", "deleted": false, "content": "

content

" } }, "errmsg": "成功" } ``` # WX前台 ### wx/brand ##### list ```json get http://182.92.235.201:8083/wx/brand/list?page=1&limit=10 ``` ```json { "errno": 0, "data": { "total": 53, "pages": 6, "limit": 10, "page": 1, "list": [{ "id": 1046029, "name": "212", "desc": "121", "picUrl": "", "floorPrice": 212.00 }, { "id": 1046028, "name": "耳机", "desc": "华东理工大学食堂偷的", "picUrl": "http://182.92.235.201:8083/wx/storage/fetch/zdo3q9tk2ac3bmtdh6mo.jpg", "floorPrice": 1400.00 }, { "id": 1034001, "name": "Alexander McQueen制造商", "desc": "为制造精致实用的高品质包包,\n严选团队选择Alexander McQueen制造商,\n严格筛选,带来轻奢优雅体验。", "picUrl": "http://yanxuan.nosdn.127.net/db7ee9667d84cbce573688297586699c.jpg", "floorPrice": 69.00 }] }, "errmsg": "成功" } ``` ### wx/storage ##### fetch ```json // url: GET http://182.92.235.201:8083/wx/storage/fetch/7r4p0m26bcte1d60ajjl.jpeg // resp: ``` ##### upload ```json // url: POST http://182.92.235.201:8083/wx/storage/upload // req: multipart // resp: { "errno": 0, "data": { "id": 49, "key": "k527gx1i03n6ztr46hdw.png", "name": "K56wOSAg88u6670a765349eb49058f7cda0f07c6d99d.png", "type": "image/png", "size": 1012274, "url": "http://182.92.235.201:8083/wx/storage/fetch/k527gx1i03n6ztr46hdw.png", "addTime": "2021-12-03 11:25:47", "updateTime": "2021-12-03 11:25:47" }, "errmsg": "成功" } ``` ## 售后管理 ### 6.2 获得售后列表list GET:http://182.92.235.201:8083/wx/aftersale/list?status=1&page=1&limit=10 resp: status: 0是可申请,1是用户已申请,2是管理员审核通过,3是管理员退款成功,4是管理员审核拒绝,5是用户已取消, ```json { "errno": 0, "data": { "total": 9, "pages": 1, "limit": 10, "page": 1, "list": [{ "goodsList": [{ "id": 3, "orderId": 2, "goodsId": 1152161, "goodsName": "竹语丝麻印花四件套", "goodsSn": "1152161", "productId": 239, "number": 1, "price": 459.00, "specifications": ["标准"], "picUrl": "http://yanxuan.nosdn.127.net/977401e75113f7c8334c4fb5b4bf6215.png", "comment": 1025, "addTime": "2021-12-02 10:22:27", "updateTime": "2021-12-02 17:00:25", "deleted": false }], "aftersale": { "id": 11, "aftersaleSn": "20211203626871", "orderId": 2, "userId": 1, "type": 0, "reason": "原因", "amount": 454.00, "pictures": [], "comment": "", "status": 1, "addTime": "2021-12-03 22:02:30", "updateTime": "2021-12-03 22:02:30", "deleted": false } }, { "goodsList": [{ "id": 6, "orderId": 5, "goodsId": 1084003, "goodsName": "纯棉美式绞花针织盖毯", "goodsSn": "1084003", "productId": 101, "number": 1, "price": 199.00, "specifications": ["标准"], "picUrl": "http://yanxuan.nosdn.127.net/cf40c167e7054fe184d49f19121f63c7.png", "comment": 1018, "addTime": "2021-12-02 10:22:47", "updateTime": "2021-12-02 11:30:34", "deleted": false }], "aftersale": { "id": 10, "aftersaleSn": "20211203191655", "orderId": 5, "userId": 1, "type": 0, "reason": "tu退款原因", "amount": 199.00, "pictures": [], "comment": "", "status": 1, "addTime": "2021-12-03 21:33:21", "updateTime": "2021-12-03 21:33:21", "deleted": false } }, { "goodsList": [{ "id": 140, "orderId": 98, "goodsId": 1152161, "goodsName": "竹语丝麻印花四件套", "goodsSn": "1152161", "productId": 239, "number": 1, "price": 459.00, "specifications": ["标准"], "picUrl": "http://yanxuan.nosdn.127.net/977401e75113f7c8334c4fb5b4bf6215.png", "comment": 0, "addTime": "2021-12-03 14:28:38", "updateTime": "2021-12-03 14:28:38", "deleted": false }, { "id": 141, "orderId": 98, "goodsId": 1084003, "goodsName": "纯棉美式绞花针织盖毯", "goodsSn": "1084003", "productId": 101, "number": 1, "price": 199.00, "specifications": ["标准"], "picUrl": "http://yanxuan.nosdn.127.net/cf40c167e7054fe184d49f19121f63c7.png", "comment": 0, "addTime": "2021-12-03 14:28:38", "updateTime": "2021-12-03 14:28:38", "deleted": false }], "aftersale": { "id": 6, "aftersaleSn": "20211203628683", "orderId": 98, "userId": 1, "type": 2, "reason": "1234456789", "amount": 633.00, "pictures": ["http://182.92.235.201:8083/wx/storage/fetch/0rtj58nglf7vcjggxylu.png"], "comment": "", "status": 1, "addTime": "2021-12-03 17:11:25", "updateTime": "2021-12-03 17:11:25", "deleted": false } }, { "goodsList": [{ "id": 146, "orderId": 103, "goodsId": 1155015, "goodsName": "绿豆糕 80克(4枚入)", "goodsSn": "1155015", "productId": 242, "number": 5, "price": 12.90, "specifications": ["标准"], "picUrl": "http://yanxuan.nosdn.127.net/66b9f1638c0517d179262f14ed1345f9.png", "comment": 0, "addTime": "2021-12-03 14:30:11", "updateTime": "2021-12-03 14:30:11", "deleted": false }, { "id": 147, "orderId": 103, "goodsId": 1070000, "goodsName": "星云酥 180克/3颗", "goodsSn": "1070000", "productId": 85, "number": 3, "price": 26.00, "specifications": ["标准"], "picUrl": "http://yanxuan.nosdn.127.net/8392725765cdd57fdae3f173877f4bda.png", "comment": 0, "addTime": "2021-12-03 14:30:11", "updateTime": "2021-12-03 14:30:11", "deleted": false }], "aftersale": { "id": 5, "aftersaleSn": "20211203572105", "orderId": 103, "userId": 1, "type": 0, "reason": "退款原因", "amount": 117.50, "pictures": ["http://182.92.235.201:8083/wx/storage/fetch/6kdeuk0u1lve4jmbsr7t.png"], "comment": "", "status": 1, "addTime": "2021-12-03 16:49:51", "updateTime": "2021-12-03 16:49:51", "deleted": false } }] }, "errmsg": "成功" } ``` ### 6.3 售后详情datail GET:http://182.92.235.201:8083/wx/aftersale/detail?orderId=2 resp: ```json { "errno": 0, "data": { "orderGoods": [{ "id": 140, "orderId": 98, "goodsId": 1152161, "goodsName": "竹语丝麻印花四件套", "goodsSn": "1152161", "productId": 239, "number": 1, "price": 459.00, "specifications": ["标准"], "picUrl": "http://yanxuan.nosdn.127.net/977401e75113f7c8334c4fb5b4bf6215.png", "comment": 0, "addTime": "2021-12-03 14:28:38", "updateTime": "2021-12-03 14:28:38", "deleted": false }, { "id": 141, "orderId": 98, "goodsId": 1084003, "goodsName": "纯棉美式绞花针织盖毯", "goodsSn": "1084003", "productId": 101, "number": 1, "price": 199.00, "specifications": ["标准"], "picUrl": "http://yanxuan.nosdn.127.net/cf40c167e7054fe184d49f19121f63c7.png", "comment": 0, "addTime": "2021-12-03 14:28:38", "updateTime": "2021-12-03 14:28:38", "deleted": false }], "aftersale": { "id": 6, "aftersaleSn": "20211203628683", "orderId": 98, "userId": 1, "type": 2, "reason": "1234456789", "amount": 633.00, "pictures": ["http://182.92.235.201:8083/wx/storage/fetch/0rtj58nglf7vcjggxylu.png"], "comment": "", "status": 1, "addTime": "2021-12-03 17:11:25", "updateTime": "2021-12-03 17:11:25", "deleted": false }, "order": { "id": 98, "userId": 1, "orderSn": "20211203452860", "orderStatus": 401, "aftersaleStatus": 1, "consignee": "hah", "mobile": "13325647856", "address": "天津市市辖区河西区 sadasdasdasd", "message": "", "goodsPrice": 658.00, "freightPrice": 0.00, "couponPrice": 25.00, "integralPrice": 0.00, "grouponPrice": 0.00, "orderPrice": 633.00, "actualPrice": 633.00, "shipSn": "543576711", "shipChannel": "ZJS", "shipTime": "2021-12-03 14:31:26", "confirmTime": "2021-12-03 15:40:32", "comments": 2, "addTime": "2021-12-03 14:28:38", "updateTime": "2021-12-03 17:11:25", "deleted": false } }, "errmsg": "成功" } ```