From 2b5991ea7572ca3bb39eaa1738659f5d6618d5e9 Mon Sep 17 00:00:00 2001 From: zhangjian <178459446@qq.com> Date: Fri, 12 May 2023 09:14:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/controller/EntrysController.java | 289 ++++++++++++++++++ .../controller/FeedbackTypeController.java | 261 ++++++++++++++++ .../wx/application/core/entity/Entrys.java | 31 ++ .../application/core/entity/FeedbackType.java | 27 ++ .../application/core/mapper/EntrysMapper.java | 18 ++ .../core/mapper/FeedbackTypeMapper.java | 18 ++ .../core/service/EntrysService.java | 28 ++ .../core/service/FeedbackTypeService.java | 28 ++ .../com/wx/application/gorse4j/Feedback.java | 58 ++++ .../com/wx/application/gorse4j/Gorse.java | 83 +++++ .../java/com/wx/application/gorse4j/Item.java | 71 +++++ .../wx/application/gorse4j/RowAffected.java | 22 ++ .../com/wx/application/gorse4j/Score.java | 19 ++ .../java/com/wx/application/gorse4j/User.java | 45 +++ .../tool/generator/DefaultGenerator.java | 6 +- .../main/resources/mapper/EntrysMapper.xml | 6 + .../resources/mapper/FeedbackTypeMapper.xml | 6 + 17 files changed, 1013 insertions(+), 3 deletions(-) create mode 100644 api/src/main/java/com/wx/application/core/controller/EntrysController.java create mode 100644 api/src/main/java/com/wx/application/core/controller/FeedbackTypeController.java create mode 100644 api/src/main/java/com/wx/application/core/entity/Entrys.java create mode 100644 api/src/main/java/com/wx/application/core/entity/FeedbackType.java create mode 100644 api/src/main/java/com/wx/application/core/mapper/EntrysMapper.java create mode 100644 api/src/main/java/com/wx/application/core/mapper/FeedbackTypeMapper.java create mode 100644 api/src/main/java/com/wx/application/core/service/EntrysService.java create mode 100644 api/src/main/java/com/wx/application/core/service/FeedbackTypeService.java create mode 100644 api/src/main/java/com/wx/application/gorse4j/Feedback.java create mode 100644 api/src/main/java/com/wx/application/gorse4j/Gorse.java create mode 100644 api/src/main/java/com/wx/application/gorse4j/Item.java create mode 100644 api/src/main/java/com/wx/application/gorse4j/RowAffected.java create mode 100644 api/src/main/java/com/wx/application/gorse4j/Score.java create mode 100644 api/src/main/java/com/wx/application/gorse4j/User.java create mode 100644 api/src/main/resources/mapper/EntrysMapper.xml create mode 100644 api/src/main/resources/mapper/FeedbackTypeMapper.xml diff --git a/api/src/main/java/com/wx/application/core/controller/EntrysController.java b/api/src/main/java/com/wx/application/core/controller/EntrysController.java new file mode 100644 index 0000000..d541865 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/controller/EntrysController.java @@ -0,0 +1,289 @@ +package com.wx.application.core.controller; + +import org.springframework.web.bind.annotation.*; +import com.wx.application.base.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +import com.wx.application.core.service.EntrysService; +import com.wx.application.core.entity.Entrys; + import com.wx.application.base.ResponseData; +import java.util.Map; +import java.io.Serializable; +/** + * @description : Entrys 默认控制器,仅供生成器使用 + * --------------------------------- + * @since 2023-05-12 + */ +/*@Slf4j*/ +@RestController("coreEntrysController") +@RequestMapping("/entrys") +public class EntrysController extends BaseController { + + @Autowired + private EntrysService entrysService; + + /** + * 定义一些通用的错误信息,供其他 api引用 + * @apiDefine DefaultException + * @apiError {String} code 错误码 + * @apiError {String} msg 错误描述 + * @apiError {String} requestId 请求id标识 + * + * @apiErrorExample Error-Response: + * HTTP/1.1 200 + * { + * "code": "UNAUTHORIZED", + * "msg": "未授权,请先登录", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + */ + + /** + * 定义标准对象请求的结构体,供api引用 + * @apiDefine EntrysReq + * @apiParam {String} fid + * @apiParam {Boolean} isHidden + * @apiParam {String} categories + * @apiParam {String} labels + * @apiParam {String} description + */ + + + /** + * 定义标准对象返回的结构体,供api引用 + * @apiDefine EntrysResp + * @apiSuccess {String} fid + * @apiSuccess {Boolean} isHidden + * @apiSuccess {String} categories + * @apiSuccess {String} labels + * @apiSuccess {String} description + */ + + /** + * 定义标准头部,供api引用 + * @apiDefine EntrysHeader + * @apiHeader {String} Authorization 用户授权token + * @apiHeaderExample {json} Header-Example: + * { + * "Authorization": "Bearer 1eyJhbGciOiJIUzI1NiJ9....tzNK43MPVQWYYhDwihCAZa88zXzar7KLdgiBBDuUpBM", + * } + */ + + /** + * + * @api {post} //entrys/query_unique 通过条件查询对象 + * @apiName 通过条件查询对象 + * @apiGroup Entrys + * + * @apiUse EntrysHeader + * @apiUse EntrysResp + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": { + + "fid": null, + + "isHidden": null, + + "categories": null, + + "labels": null, + + "description": null, + * }, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件查询对象 + * 仅查询第一条 + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/query_unique") + public ResponseData queryUnique(@RequestBody Map entrysQ) { + return success(entrysService.queryUnique(entrysQ)); + } + + /** + * + * @api {post} //entrys/query_pages 通过条件分页查询列表 + * @apiName 通过条件分页查询列表 + * @apiGroup Entrys + * + * @apiUse EntrysHeader + * @apiUse EntrysResp + * @apiSuccess {Long} total 总数 + * @apiSuccess {Long} size 分页大小 + * @apiSuccess {Long} current 当前页 + * @apiSuccess {Long} orders 排序 + * @apiSuccess {Long} pages 总页数 + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": { + * "records": [{ + + "fid": null, + "isHidden": null, + "categories": null, + "labels": null, + "description": null, * }], + * "total": 1, + * "size": 10, + * "current": 1, + * "orders": [], + * "searchCount": true, + * "pages": 1 + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件分页查询列表 + * 默认第一页 分页长度为10 + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/query_pages") + public ResponseData queryPages(@RequestBody Map entrysQ) { + return success(entrysService.queryPage(entrysQ)); + } + + /** + * + * @api {post} //entrys/query_list 通过条件查询列表 + * @apiName 通过条件查询列表 + * @apiGroup Entrys + * + * @apiUse EntrysHeader + * @apiUse EntrysResp + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": [{ + + "fid": null, + + "isHidden": null, + + "categories": null, + + "labels": null, + + "description": null, + * }], + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件查询列表 + * 不分页直接返回list + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/query_list") + public ResponseData queryList(@RequestBody Map entrysQ) { + return success(entrysService.queryList(entrysQ)); + } + + /** + * + * @api {post} //entrys/remove/:id 通过id删除单个记录 + * @apiName 通过id删除单个记录 + * @apiGroup Entrys + * + * @apiUse EntrysHeader + * @apiParam {PK} id 记录主键 + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过id删除单个记录 + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/remove/{id}") + public ResponseData remove(@PathVariable("id") Serializable id) { + return success(entrysService.remove(id)); + } + + /** + * + * @api {post} //entrys/modify 通过id更新单个记录 + * @apiName 通过id更新单个记录 + * @apiGroup Entrys + * + * @apiUse EntrysHeader + * @apiParam {PK} id 记录主键 + * @apiUse EntrysReq + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过id更新单个记录 + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/modify") + public ResponseData modify(@RequestBody Entrys entrys) { + return success(entrysService.modify(entrys)); + } + + /** + * + * @api {post} //entrys/create 新增 + * @apiName 新增 + * @apiGroup Entrys + * + * @apiUse EntrysHeader + * @apiUse EntrysReq + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 新增 + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/create") + public ResponseData create(@RequestBody Entrys entrys) { + return success(entrysService.create(entrys)); + } +} diff --git a/api/src/main/java/com/wx/application/core/controller/FeedbackTypeController.java b/api/src/main/java/com/wx/application/core/controller/FeedbackTypeController.java new file mode 100644 index 0000000..b385072 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/controller/FeedbackTypeController.java @@ -0,0 +1,261 @@ +package com.wx.application.core.controller; + +import org.springframework.web.bind.annotation.*; +import com.wx.application.base.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +import com.wx.application.core.service.FeedbackTypeService; +import com.wx.application.core.entity.FeedbackType; + import com.wx.application.base.ResponseData; +import java.util.Map; +import java.io.Serializable; +/** + * @description : FeedbackType 默认控制器,仅供生成器使用 + * --------------------------------- + * @since 2023-05-12 + */ +/*@Slf4j*/ +@RestController("coreFeedbackTypeController") +@RequestMapping("//feedback-type") +public class FeedbackTypeController extends BaseController { + + @Autowired + private FeedbackTypeService feedbackTypeService; + + /** + * 定义一些通用的错误信息,供其他 api引用 + * @apiDefine DefaultException + * @apiError {String} code 错误码 + * @apiError {String} msg 错误描述 + * @apiError {String} requestId 请求id标识 + * + * @apiErrorExample Error-Response: + * HTTP/1.1 200 + * { + * "code": "UNAUTHORIZED", + * "msg": "未授权,请先登录", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + */ + + /** + * 定义标准对象请求的结构体,供api引用 + * @apiDefine FeedbackTypeReq + * @apiParam {String} name + */ + + + /** + * 定义标准对象返回的结构体,供api引用 + * @apiDefine FeedbackTypeResp + * @apiSuccess {String} name + */ + + /** + * 定义标准头部,供api引用 + * @apiDefine FeedbackTypeHeader + * @apiHeader {String} Authorization 用户授权token + * @apiHeaderExample {json} Header-Example: + * { + * "Authorization": "Bearer 1eyJhbGciOiJIUzI1NiJ9....tzNK43MPVQWYYhDwihCAZa88zXzar7KLdgiBBDuUpBM", + * } + */ + + /** + * + * @api {post} //feedback-type/query_unique 通过条件查询对象 + * @apiName 通过条件查询对象 + * @apiGroup FeedbackType + * + * @apiUse FeedbackTypeHeader + * @apiUse FeedbackTypeResp + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": { + + "name": null, + * }, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件查询对象 + * 仅查询第一条 + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/query_unique") + public ResponseData queryUnique(@RequestBody Map feedbackTypeQ) { + return success(feedbackTypeService.queryUnique(feedbackTypeQ)); + } + + /** + * + * @api {post} //feedback-type/query_pages 通过条件分页查询列表 + * @apiName 通过条件分页查询列表 + * @apiGroup FeedbackType + * + * @apiUse FeedbackTypeHeader + * @apiUse FeedbackTypeResp + * @apiSuccess {Long} total 总数 + * @apiSuccess {Long} size 分页大小 + * @apiSuccess {Long} current 当前页 + * @apiSuccess {Long} orders 排序 + * @apiSuccess {Long} pages 总页数 + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": { + * "records": [{ + + "name": null, * }], + * "total": 1, + * "size": 10, + * "current": 1, + * "orders": [], + * "searchCount": true, + * "pages": 1 + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件分页查询列表 + * 默认第一页 分页长度为10 + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/query_pages") + public ResponseData queryPages(@RequestBody Map feedbackTypeQ) { + return success(feedbackTypeService.queryPage(feedbackTypeQ)); + } + + /** + * + * @api {post} //feedback-type/query_list 通过条件查询列表 + * @apiName 通过条件查询列表 + * @apiGroup FeedbackType + * + * @apiUse FeedbackTypeHeader + * @apiUse FeedbackTypeResp + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": [{ + + "name": null, + * }], + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件查询列表 + * 不分页直接返回list + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/query_list") + public ResponseData queryList(@RequestBody Map feedbackTypeQ) { + return success(feedbackTypeService.queryList(feedbackTypeQ)); + } + + /** + * + * @api {post} //feedback-type/remove/:id 通过id删除单个记录 + * @apiName 通过id删除单个记录 + * @apiGroup FeedbackType + * + * @apiUse FeedbackTypeHeader + * @apiParam {PK} id 记录主键 + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过id删除单个记录 + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/remove/{id}") + public ResponseData remove(@PathVariable("id") Serializable id) { + return success(feedbackTypeService.remove(id)); + } + + /** + * + * @api {post} //feedback-type/modify 通过id更新单个记录 + * @apiName 通过id更新单个记录 + * @apiGroup FeedbackType + * + * @apiUse FeedbackTypeHeader + * @apiParam {PK} id 记录主键 + * @apiUse FeedbackTypeReq + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过id更新单个记录 + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/modify") + public ResponseData modify(@RequestBody FeedbackType feedbackType) { + return success(feedbackTypeService.modify(feedbackType)); + } + + /** + * + * @api {post} //feedback-type/create 新增 + * @apiName 新增 + * @apiGroup FeedbackType + * + * @apiUse FeedbackTypeHeader + * @apiUse FeedbackTypeReq + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 新增 + * --------------------------------- + * @author : zj + * @since : Create in 2023-05-12 + */ + @PostMapping(value = "/create") + public ResponseData create(@RequestBody FeedbackType feedbackType) { + return success(feedbackTypeService.create(feedbackType)); + } +} diff --git a/api/src/main/java/com/wx/application/core/entity/Entrys.java b/api/src/main/java/com/wx/application/core/entity/Entrys.java new file mode 100644 index 0000000..649db21 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/entity/Entrys.java @@ -0,0 +1,31 @@ +package com.wx.application.core.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.wx.application.base.BaseEntity; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author zj + * @since 2023-05-12 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("re_entrys") +public class Entrys extends BaseEntity { + + private String fid; + private Boolean isHidden; + private String categories; + private String labels; + private String description; + + + + +} diff --git a/api/src/main/java/com/wx/application/core/entity/FeedbackType.java b/api/src/main/java/com/wx/application/core/entity/FeedbackType.java new file mode 100644 index 0000000..2973691 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/entity/FeedbackType.java @@ -0,0 +1,27 @@ +package com.wx.application.core.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.wx.application.base.BaseEntity; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author zj + * @since 2023-05-12 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("re_feedback_type") +public class FeedbackType extends BaseEntity { + + private String name; + + + + +} diff --git a/api/src/main/java/com/wx/application/core/mapper/EntrysMapper.java b/api/src/main/java/com/wx/application/core/mapper/EntrysMapper.java new file mode 100644 index 0000000..2fe8bb2 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/mapper/EntrysMapper.java @@ -0,0 +1,18 @@ +package com.wx.application.core.mapper; + +import com.wx.application.core.entity.Entrys; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zj + * @since 2023-05-12 + */ +@Repository +public interface EntrysMapper extends BaseMapper { + +} diff --git a/api/src/main/java/com/wx/application/core/mapper/FeedbackTypeMapper.java b/api/src/main/java/com/wx/application/core/mapper/FeedbackTypeMapper.java new file mode 100644 index 0000000..c178741 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/mapper/FeedbackTypeMapper.java @@ -0,0 +1,18 @@ +package com.wx.application.core.mapper; + +import com.wx.application.core.entity.FeedbackType; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zj + * @since 2023-05-12 + */ +@Repository +public interface FeedbackTypeMapper extends BaseMapper { + +} diff --git a/api/src/main/java/com/wx/application/core/service/EntrysService.java b/api/src/main/java/com/wx/application/core/service/EntrysService.java new file mode 100644 index 0000000..325a7ea --- /dev/null +++ b/api/src/main/java/com/wx/application/core/service/EntrysService.java @@ -0,0 +1,28 @@ +package com.wx.application.core.service; + + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.wx.application.core.entity.Entrys; +import com.wx.application.base.BaseService; +import com.wx.application.core.mapper.EntrysMapper; + +/** + *

+ * 服务类 + *

+ * + * @author zj + * @since 2023-05-12 + */ +/*@Slf4j*/ +@Service("coreEntrysService") +@Transactional +public class EntrysService extends BaseService { + + @Autowired + EntrysMapper baseMapper; +} diff --git a/api/src/main/java/com/wx/application/core/service/FeedbackTypeService.java b/api/src/main/java/com/wx/application/core/service/FeedbackTypeService.java new file mode 100644 index 0000000..352898c --- /dev/null +++ b/api/src/main/java/com/wx/application/core/service/FeedbackTypeService.java @@ -0,0 +1,28 @@ +package com.wx.application.core.service; + + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.wx.application.core.entity.FeedbackType; +import com.wx.application.base.BaseService; +import com.wx.application.core.mapper.FeedbackTypeMapper; + +/** + *

+ * 服务类 + *

+ * + * @author zj + * @since 2023-05-12 + */ +/*@Slf4j*/ +@Service("coreFeedbackTypeService") +@Transactional +public class FeedbackTypeService extends BaseService { + + @Autowired + FeedbackTypeMapper baseMapper; +} diff --git a/api/src/main/java/com/wx/application/gorse4j/Feedback.java b/api/src/main/java/com/wx/application/gorse4j/Feedback.java new file mode 100644 index 0000000..ef69985 --- /dev/null +++ b/api/src/main/java/com/wx/application/gorse4j/Feedback.java @@ -0,0 +1,58 @@ +package com.wx.application.gorse4j; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.Objects; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class Feedback { + + private String feedbackType; + private String userId; + private String itemId; + private String timestamp; + + public Feedback() { + } + + public Feedback(String feedbackType, String userId, String itemId, String timestamp) { + this.feedbackType = feedbackType; + this.userId = userId; + this.itemId = itemId; + this.timestamp = timestamp; + } + + @JsonProperty("FeedbackType") + public String getFeedbackType() { + return feedbackType; + } + + @JsonProperty("UserId") + public String getUserId() { + return userId; + } + + @JsonProperty("ItemId") + public String getItemId() { + return itemId; + } + + @JsonProperty("Timestamp") + public String getTimestamp() { + return timestamp; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Feedback feedback = (Feedback) o; + return Objects.equals(feedbackType, feedback.feedbackType) && Objects.equals(userId, feedback.userId) && Objects.equals(itemId, feedback.itemId) && Objects.equals(timestamp, feedback.timestamp); + } + + @Override + public int hashCode() { + return Objects.hash(feedbackType, userId, itemId, timestamp); + } +} \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/gorse4j/Gorse.java b/api/src/main/java/com/wx/application/gorse4j/Gorse.java new file mode 100644 index 0000000..47e33de --- /dev/null +++ b/api/src/main/java/com/wx/application/gorse4j/Gorse.java @@ -0,0 +1,83 @@ +package com.wx.application.gorse4j; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.Arrays; +import java.util.List; + +public class Gorse { + + private final String endpoint; + private final String apiKey; + + public static void main(String[] args) throws IOException { + // Create a client. + Gorse client = new Gorse("http://43.139.83.67:8088/", ""); + System.out.println(client.getRecommend("1265177464")); + } + + public Gorse(String endpoint, String apiKey) { + this.endpoint = endpoint; + this.apiKey = apiKey; + } + + public RowAffected insertUser(User user) throws IOException { + return this.request("POST", this.endpoint + "/api/user", user, RowAffected.class); + } + + public User getUser(String userId) throws IOException { + return this.request("GET", this.endpoint + "/api/user/" + userId, null, User.class); + } + + public RowAffected deleteUser(String userId) throws IOException { + return this.request("DELETE", this.endpoint + "/api/user/" + userId, null, RowAffected.class); + } + + public RowAffected insertItem(Item item) throws IOException { + return this.request("POST", this.endpoint + "/api/item", item, RowAffected.class); + } + + public Item getItem(String itemId) throws IOException { + return this.request("GET", this.endpoint + "/api/item/" + itemId, null, Item.class); + } + + public RowAffected deleteItem(String itemId) throws IOException { + return this.request("DELETE", this.endpoint + "/api/item/" + itemId, null, RowAffected.class); + } + + public RowAffected insertFeedback(List feedbacks) throws IOException { + return this.request("POST", this.endpoint + "/api/feedback", feedbacks, RowAffected.class); + } + + public List listFeedback(String userId, String feedbackType) throws IOException { + return Arrays.asList(this.request("GET", this.endpoint + "/api/user/" + userId + "/feedback/" + feedbackType, null, Feedback[].class)); + } + + public List getRecommend(String userId) throws IOException { + return Arrays.asList(this.request("GET", this.endpoint + "/api/recommend/" + userId, null, String[].class)); + } + + private Response request(String method, String url, Request request, Class responseClass) throws IOException { + HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); + connection.setRequestMethod(method); + connection.setRequestProperty("X-API-Key", this.apiKey); + connection.setRequestProperty("Content-Type", "application/json"); + // Send request + ObjectMapper mapper = new ObjectMapper(); + if (request != null) { + connection.setDoOutput(true); + String requestBody = mapper.writeValueAsString(request); + DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); + outputStream.write(requestBody.getBytes()); + outputStream.close(); + } + // Get Response + InputStream inputStream = connection.getInputStream(); + return mapper.readValue(inputStream, responseClass); + } +} \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/gorse4j/Item.java b/api/src/main/java/com/wx/application/gorse4j/Item.java new file mode 100644 index 0000000..36c8a75 --- /dev/null +++ b/api/src/main/java/com/wx/application/gorse4j/Item.java @@ -0,0 +1,71 @@ +package com.wx.application.gorse4j; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.List; +import java.util.Objects; + +public class Item { + + private String itemId; + private Boolean isHidden; + private List labels; + private List categories; + private String timestamp; + private String comment; + + public Item() { + } + + public Item(String itemId, Boolean isHidden, List labels, List categories, String timestamp, String comment) { + this.itemId = itemId; + this.isHidden = isHidden; + this.labels = labels; + this.categories = categories; + this.timestamp = timestamp; + this.comment = comment; + } + + @JsonProperty("ItemId") + public String getItemId() { + return itemId; + } + + @JsonProperty("IsHidden") + public Boolean getIsHidden() { + return isHidden; + } + + @JsonProperty("Labels") + public List getLabels() { + return labels; + } + + @JsonProperty("Categories") + public List getCategories() { + return categories; + } + + @JsonProperty("Timestamp") + public String getTimestamp() { + return timestamp; + } + + @JsonProperty("Comment") + public String getComment() { + return comment; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Item item = (Item) o; + return Objects.equals(itemId, item.itemId) && Objects.equals(isHidden, item.isHidden) && Objects.equals(labels, item.labels) && Objects.equals(categories, item.categories) && Objects.equals(timestamp, item.timestamp) && Objects.equals(comment, item.comment); + } + + @Override + public int hashCode() { + return Objects.hash(itemId, isHidden, labels, categories, timestamp, comment); + } +} \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/gorse4j/RowAffected.java b/api/src/main/java/com/wx/application/gorse4j/RowAffected.java new file mode 100644 index 0000000..9ccad05 --- /dev/null +++ b/api/src/main/java/com/wx/application/gorse4j/RowAffected.java @@ -0,0 +1,22 @@ +package com.wx.application.gorse4j; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class RowAffected { + + private int rowAffected; + + public RowAffected() { + } + + public RowAffected(int rowAffected) { + this.rowAffected = rowAffected; + } + + @JsonProperty("RowAffected") + public int getRowAffected() { + return rowAffected; + } +} \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/gorse4j/Score.java b/api/src/main/java/com/wx/application/gorse4j/Score.java new file mode 100644 index 0000000..d50c3ef --- /dev/null +++ b/api/src/main/java/com/wx/application/gorse4j/Score.java @@ -0,0 +1,19 @@ +package com.wx.application.gorse4j; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Score { + + private String id; + private double score; + + @JsonProperty("Id") + public String getId() { + return id; + } + + @JsonProperty("Score") + public double getScore() { + return score; + } +} diff --git a/api/src/main/java/com/wx/application/gorse4j/User.java b/api/src/main/java/com/wx/application/gorse4j/User.java new file mode 100644 index 0000000..e697a8a --- /dev/null +++ b/api/src/main/java/com/wx/application/gorse4j/User.java @@ -0,0 +1,45 @@ +package com.wx.application.gorse4j; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.List; +import java.util.Objects; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class User { + + private String userId; + private List labels; + + public User() { + } + + public User(String userId, List labels) { + this.userId = userId; + this.labels = labels; + } + + @JsonProperty("UserId") + public String getUserId() { + return userId; + } + + @JsonProperty("Labels") + public List getLabels() { + return labels; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + User user = (User) o; + return Objects.equals(userId, user.userId) && Objects.equals(labels, user.labels); + } + + @Override + public int hashCode() { + return Objects.hash(userId, labels); + } +} \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/tool/generator/DefaultGenerator.java b/api/src/main/java/com/wx/application/tool/generator/DefaultGenerator.java index 7cc637f..eefb7ad 100644 --- a/api/src/main/java/com/wx/application/tool/generator/DefaultGenerator.java +++ b/api/src/main/java/com/wx/application/tool/generator/DefaultGenerator.java @@ -54,11 +54,11 @@ public class DefaultGenerator { // TODO 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); - dsc.setUrl("jdbc:mysql://118.25.104.98:3306/dn_nebula?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8&zeroDateTimeBehavior=CONVERT_TO_NULL"); + dsc.setUrl("jdbc:mysql://43.139.83.67:13306/recom-gorse?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8&zeroDateTimeBehavior=CONVERT_TO_NULL"); // dsc.setSchemaName("public"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); - dsc.setPassword("Whb123321"); + dsc.setPassword("AJuSP7F7VTRvm7rk"); mpg.setDataSource(dsc); // 包配置 @@ -151,7 +151,7 @@ public class DefaultGenerator { strategy.setControllerMappingHyphenStyle(true); //TODO 表名前缀 - strategy.setTablePrefix("dn" + "_"); + strategy.setTablePrefix("re" + "_"); mpg.setStrategy(strategy); mpg.setTemplateEngine(new VelocityTemplateEngine()); mpg.execute(); diff --git a/api/src/main/resources/mapper/EntrysMapper.xml b/api/src/main/resources/mapper/EntrysMapper.xml new file mode 100644 index 0000000..a32c84d --- /dev/null +++ b/api/src/main/resources/mapper/EntrysMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/src/main/resources/mapper/FeedbackTypeMapper.xml b/api/src/main/resources/mapper/FeedbackTypeMapper.xml new file mode 100644 index 0000000..820b528 --- /dev/null +++ b/api/src/main/resources/mapper/FeedbackTypeMapper.xml @@ -0,0 +1,6 @@ + + + + + +