diff --git a/flx-ai/src/main/java/com/pjilisense/flxai/base/service/CrudService.java b/flx-ai/src/main/java/com/pjilisense/flxai/base/service/CrudService.java index bb1be54..e5d1f57 100644 --- a/flx-ai/src/main/java/com/pjilisense/flxai/base/service/CrudService.java +++ b/flx-ai/src/main/java/com/pjilisense/flxai/base/service/CrudService.java @@ -31,6 +31,6 @@ public interface CrudService extends BaseService { void update(D dto); - void delete(Long[] ids); + void delete(Serializable[] ids); } \ No newline at end of file diff --git a/flx-ai/src/main/java/com/pjilisense/flxai/base/service/impl/CrudServiceImpl.java b/flx-ai/src/main/java/com/pjilisense/flxai/base/service/impl/CrudServiceImpl.java index 3c8a754..24075f4 100644 --- a/flx-ai/src/main/java/com/pjilisense/flxai/base/service/impl/CrudServiceImpl.java +++ b/flx-ai/src/main/java/com/pjilisense/flxai/base/service/impl/CrudServiceImpl.java @@ -75,7 +75,7 @@ public abstract class CrudServiceImpl, T, D> extends Bas } @Override - public void delete(Long[] ids) { + public void delete(Serializable[] ids) { baseDao.deleteBatchIds(Arrays.asList(ids)); } } \ No newline at end of file diff --git a/flx-ai/src/main/java/com/pjilisense/flxai/controller/AppAiAssistantController.java b/flx-ai/src/main/java/com/pjilisense/flxai/controller/AppAiAssistantController.java new file mode 100644 index 0000000..f20fa4f --- /dev/null +++ b/flx-ai/src/main/java/com/pjilisense/flxai/controller/AppAiAssistantController.java @@ -0,0 +1,95 @@ +package com.pjilisense.flxai.controller; + +import com.pjilisense.flxai.base.constant.Constant; +import com.pjilisense.flxai.page.PageData; +import com.pjilisense.flxai.utils.Result; +import com.pjilisense.flxai.dto.AppAiAssistantDTO; +import com.pjilisense.flxai.service.AppAiAssistantService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + + +/** + * AI助手表 + * + * @author liushujing liushujing@philisense.com + * @since 1.0.0 2024-12-13 + */ +@RestController +@RequestMapping(Constant.BASE_PATH+"appaiassistant") +@Api(tags="AI助手表") +public class AppAiAssistantController { + + private static Logger logger = LoggerFactory.getLogger(AppAiAssistantController.class); + + @Autowired + private AppAiAssistantService appAiAssistantService; + + @GetMapping("page") + @ApiOperation("分页") + @ApiImplicitParams({ + @ApiImplicitParam(name = Constant.PAGE, value = "当前页码,从1开始", paramType = "query", required = true, dataType="Integer", dataTypeClass =Integer.class) , + @ApiImplicitParam(name = Constant.LIMIT, value = "每页显示记录数", paramType = "query",required = true, dataType="Integer", dataTypeClass =Integer.class) , + @ApiImplicitParam(name = Constant.ORDER_FIELD, value = "排序字段", paramType = "query", dataType="String", dataTypeClass =String.class) , + @ApiImplicitParam(name = Constant.ORDER, value = "排序方式,可选值(asc、desc)", paramType = "query", dataType="String", dataTypeClass =String.class) + }) + public Result> page(@ApiIgnore @RequestParam Map params){ + PageData page = appAiAssistantService.page(params); + + return new Result>().ok(page); + } + @GetMapping("getAllAiAssistant") + @ApiOperation("获取所有收藏") + public Result>> getAllAiAssistant(@RequestParam("userid") String userid){ + List> allTools = appAiAssistantService.getAllAiTools(userid); + return new Result>>().ok(allTools); + } + @GetMapping("{id}") + @ApiOperation("信息") + public Result get(@PathVariable("id") String id){ + AppAiAssistantDTO data = appAiAssistantService.get(id); + + return new Result().ok(data); + } + + @PostMapping + @ApiOperation("保存") + public Result save(@RequestBody AppAiAssistantDTO dto){ + //效验数据 + + appAiAssistantService.save(dto); + + return new Result().ok(dto); + } + + @PutMapping + @ApiOperation("修改") + public Result update(@RequestBody AppAiAssistantDTO dto){ + //效验数据 + + appAiAssistantService.update(dto); + + return new Result(); + } + + @DeleteMapping + @ApiOperation("删除") + public Result delete(@RequestBody String[] ids){ + //效验数据 + appAiAssistantService.delete(ids); + + return new Result(); + } + +} \ No newline at end of file diff --git a/flx-ai/src/main/java/com/pjilisense/flxai/controller/AppToolsSetController.java b/flx-ai/src/main/java/com/pjilisense/flxai/controller/AppToolsSetController.java index 95d45a3..aca68a2 100644 --- a/flx-ai/src/main/java/com/pjilisense/flxai/controller/AppToolsSetController.java +++ b/flx-ai/src/main/java/com/pjilisense/flxai/controller/AppToolsSetController.java @@ -51,14 +51,14 @@ public class AppToolsSetController { } @GetMapping("getAllAiTools") - @ApiOperation("分页") + @ApiOperation("获取所有AI应用集") public Result> getAllAiTools(){ Map allTools = appToolsSetService.getAllAiTools(); return new Result>().ok(allTools); } @GetMapping("{id}") @ApiOperation("信息") - public Result get(@PathVariable("id") Long id){ + public Result get(@PathVariable("id") String id){ AppToolsSetDTO data = appToolsSetService.get(id); return new Result().ok(data); @@ -88,7 +88,7 @@ public class AppToolsSetController { @DeleteMapping @ApiOperation("删除") - public Result delete(@RequestBody Long[] ids){ + public Result delete(@RequestBody String[] ids){ //效验数据 // AssertUtils.isArrayEmpty(ids, "id"); diff --git a/flx-ai/src/main/java/com/pjilisense/flxai/controller/AppToolsTypeController.java b/flx-ai/src/main/java/com/pjilisense/flxai/controller/AppToolsTypeController.java index 343b741..8c8c006 100644 --- a/flx-ai/src/main/java/com/pjilisense/flxai/controller/AppToolsTypeController.java +++ b/flx-ai/src/main/java/com/pjilisense/flxai/controller/AppToolsTypeController.java @@ -27,7 +27,7 @@ import java.util.Map; * @since 1.0.0 2024-12-12 */ @RestController -@RequestMapping("robot/apptoolstype") +@RequestMapping(Constant.BASE_PATH+"apptoolstype") @Api(tags="AI应用工具集分类表") public class AppToolsTypeController { diff --git a/flx-ai/src/main/java/com/pjilisense/flxai/dao/AppAiAssistantDao.java b/flx-ai/src/main/java/com/pjilisense/flxai/dao/AppAiAssistantDao.java new file mode 100644 index 0000000..256fb72 --- /dev/null +++ b/flx-ai/src/main/java/com/pjilisense/flxai/dao/AppAiAssistantDao.java @@ -0,0 +1,16 @@ +package com.pjilisense.flxai.dao; + +import com.pjilisense.flxai.base.dao.BaseDao; +import com.pjilisense.flxai.entity.AppAiAssistantEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * AI助手表 + * + * @author liushujing liushujing@philisense.com + * @since 1.0.0 2024-12-13 + */ +@Mapper +public interface AppAiAssistantDao extends BaseDao { + +} \ No newline at end of file diff --git a/flx-ai/src/main/java/com/pjilisense/flxai/dto/AppAiAssistantDTO.java b/flx-ai/src/main/java/com/pjilisense/flxai/dto/AppAiAssistantDTO.java new file mode 100644 index 0000000..58df764 --- /dev/null +++ b/flx-ai/src/main/java/com/pjilisense/flxai/dto/AppAiAssistantDTO.java @@ -0,0 +1,60 @@ +package com.pjilisense.flxai.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * AI助手表 + * + * @author liushujing liushujing@philisense.com + * @since 1.0.0 2024-12-13 + */ +@Data +@ApiModel(value = "AI助手表") +public class AppAiAssistantDTO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + private String id; + + @ApiModelProperty(value = "作者") + private String author; + + @ApiModelProperty(value = "主页地址") + private String homepage; + + @ApiModelProperty(value = "标识") + private String identifier; + + @ApiModelProperty(value = "avatar") + private String avatar; + + @ApiModelProperty(value = "描述") + private String description; + + @ApiModelProperty(value = "标签") + private String tags; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "分类") + private String category; + + @ApiModelProperty(value = "Version") + private String schemaVersion; + + @ApiModelProperty(value = "创建时间") + private String createAt; + + @ApiModelProperty(value = "时间") + private String createdAt; + + @ApiModelProperty(value = "用户ID") + private String userid; +} \ No newline at end of file diff --git a/flx-ai/src/main/java/com/pjilisense/flxai/entity/AppAiAssistantEntity.java b/flx-ai/src/main/java/com/pjilisense/flxai/entity/AppAiAssistantEntity.java new file mode 100644 index 0000000..c9b3cf0 --- /dev/null +++ b/flx-ai/src/main/java/com/pjilisense/flxai/entity/AppAiAssistantEntity.java @@ -0,0 +1,70 @@ +package com.pjilisense.flxai.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * AI助手表 + * + * @author liushujing liushujing@philisense.com + * @since 1.0.0 2024-12-13 + */ +@Data +@TableName("app_ai_assistant") +public class AppAiAssistantEntity { + + /** + * 主键 + */ + private String id; + /** + * 作者 + */ + private String author; + /** + * 主页地址 + */ + private String homepage; + /** + * 标识 + */ + private String identifier; + /** + * avatar + */ + private String avatar; + /** + * 描述 + */ + private String description; + /** + * 标签 + */ + private String tags; + /** + * 标题 + */ + private String title; + /** + * 分类 + */ + private String category; + /** + * Version + */ + private String schemaVersion; + /** + * 创建时间 + */ + private String createAt; + /** + * 时间 + */ + private String createdAt; + /** + * 用户ID + */ + private String userid; +} \ No newline at end of file diff --git a/flx-ai/src/main/java/com/pjilisense/flxai/service/AppAiAssistantService.java b/flx-ai/src/main/java/com/pjilisense/flxai/service/AppAiAssistantService.java new file mode 100644 index 0000000..31977b6 --- /dev/null +++ b/flx-ai/src/main/java/com/pjilisense/flxai/service/AppAiAssistantService.java @@ -0,0 +1,19 @@ +package com.pjilisense.flxai.service; + +import com.pjilisense.flxai.base.service.CrudService; +import com.pjilisense.flxai.dto.AppAiAssistantDTO; +import com.pjilisense.flxai.entity.AppAiAssistantEntity; + +import java.util.List; +import java.util.Map; + +/** + * AI助手表 + * + * @author liushujing liushujing@philisense.com + * @since 1.0.0 2024-12-13 + */ +public interface AppAiAssistantService extends CrudService { + + List> getAllAiTools(String userid); +} \ No newline at end of file diff --git a/flx-ai/src/main/java/com/pjilisense/flxai/service/impl/AppAiAssistantServiceImpl.java b/flx-ai/src/main/java/com/pjilisense/flxai/service/impl/AppAiAssistantServiceImpl.java new file mode 100644 index 0000000..0340734 --- /dev/null +++ b/flx-ai/src/main/java/com/pjilisense/flxai/service/impl/AppAiAssistantServiceImpl.java @@ -0,0 +1,75 @@ +package com.pjilisense.flxai.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.pjilisense.flxai.base.service.impl.CrudServiceImpl; +import com.pjilisense.flxai.dao.AppAiAssistantDao; +import com.pjilisense.flxai.dto.AppAiAssistantDTO; +import com.pjilisense.flxai.entity.AppAiAssistantEntity; +import com.pjilisense.flxai.entity.AppToolsSetEntity; +import com.pjilisense.flxai.service.AppAiAssistantService; +import cn.hutool.core.util.StrUtil; +import com.pjilisense.flxai.utils.MapUtils; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * AI助手表 + * + * @author liushujing liushujing@philisense.com + * @since 1.0.0 2024-12-13 + */ +@Service +public class AppAiAssistantServiceImpl extends CrudServiceImpl implements AppAiAssistantService { + + @Override + public QueryWrapper getWrapper(Map params){ + String id = (String)params.get("id"); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StrUtil.isNotBlank(id), "id", id); + + return wrapper; + } + + public QueryWrapper getWrapperAll(Map params){ + String userid = (String)params.get("userid"); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StrUtil.isNotBlank(userid), "userid", userid); + wrapper.orderByDesc("create_at","created_at"); + return wrapper; + } + @Override + public List> getAllAiTools(String userid) { + Map params =new HashMap<>(); + params.put("userid",userid); + List entityList = baseDao.selectList(getWrapperAll(params)); + params.clear(); + List> retList = new ArrayList<>(); + if(entityList!=null && entityList.size()>0) { + for (AppAiAssistantEntity entity : entityList) { + Map mapx = MapUtils.objectToMap(entity); + retList.add(mapx); + HashMap meta = new HashMap<>(); + mapx.put("meta", meta); + meta.put("avatar", mapx.get("avatar")); + meta.put("description", mapx.get("description")); + meta.put("title", mapx.get("title")); + meta.put("category", mapx.get("category")); + String tags = (String) mapx.get("tags"); + if (tags.length() > 0) { + meta.put("tags", Arrays.asList(tags.split("\\,"))); + } else { + meta.put("tags", new ArrayList<>()); + } + mapx.remove("avatar"); + mapx.remove("description"); + mapx.remove("title"); + mapx.remove("category"); + mapx.remove("tags"); + } + } + return retList; + } +} \ No newline at end of file diff --git a/flx-ai/src/main/resources/mapper/postgres/AppAiAssistantDao.xml b/flx-ai/src/main/resources/mapper/postgres/AppAiAssistantDao.xml new file mode 100644 index 0000000..cf56945 --- /dev/null +++ b/flx-ai/src/main/resources/mapper/postgres/AppAiAssistantDao.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/flx-ai/src/test/java/test/com/pjilisense/flxai/TestUtils.java b/flx-ai/src/test/java/test/com/pjilisense/flxai/TestUtils.java index 5bba504..5143919 100644 --- a/flx-ai/src/test/java/test/com/pjilisense/flxai/TestUtils.java +++ b/flx-ai/src/test/java/test/com/pjilisense/flxai/TestUtils.java @@ -13,15 +13,15 @@ import java.security.SecureRandom; import java.security.cert.X509Certificate; import java.util.Iterator; import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; +//import java.util.logging.Level; +//import java.util.logging.Logger; public class TestUtils { public static final String UTF8 = "utf-8"; public static final String GBK = "gbk"; public static final String GB2312 = "gb2312"; public static final String ISO88591 = "ISO-8859-1"; - public static String WebconnectURL = "http://localhost:18080/flxai/"; + public static String WebconnectURL = "http://localhost:18080/flxai"; public static String EXPIRESIN = null; public static String TOKEN=null; public static int READ_TIMEOUT = 30000; @@ -274,9 +274,9 @@ public class TestUtils { HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier); } catch (KeyManagementException ex) { - Logger.getLogger(TestUtils.class.getName()).log(Level.SEVERE, null, ex); + //Logger.getLogger(TestUtils.class.getName()).log(Level.SEVERE, null, ex); } catch (NoSuchAlgorithmException ex) { - Logger.getLogger(TestUtils.class.getName()).log(Level.SEVERE, null, ex); + //Logger.getLogger(TestUtils.class.getName()).log(Level.SEVERE, null, ex); } } diff --git a/flx-ai/src/test/java/test/com/pjilisense/flxai/controller/AppAiAssistantControllerTest.java b/flx-ai/src/test/java/test/com/pjilisense/flxai/controller/AppAiAssistantControllerTest.java new file mode 100644 index 0000000..11300cf --- /dev/null +++ b/flx-ai/src/test/java/test/com/pjilisense/flxai/controller/AppAiAssistantControllerTest.java @@ -0,0 +1,66 @@ +/** + * Copyright (c) 2018 人人开源 All rights reserved. + *

+ * https://www.renren.io + *

+ * 版权所有,侵权必究! + */ + +package test.com.pjilisense.flxai.controller; + +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.ApiModelProperty; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import test.com.pjilisense.flxai.TestUtils; + +import java.util.HashMap; +import java.util.Map; + +public class AppAiAssistantControllerTest { + @BeforeEach + public void setUpTestDataWithinTransaction() { + // set up test data within the transaction + } + @AfterEach + public void tearDownWithinTransaction() { + // execute "tear down" logic within the transaction + } + + @Test + public void testAppAiAssistantSave() { + String url = TestUtils.WebconnectURL+"/api/robot/appaiassistant"; + String charset = TestUtils.UTF8; + try { + Map params = new HashMap(); + params.put("author","sharkbear212a"); + params.put("homepage","https://github.com/sharkbear212a"); + params.put("identifier","japan-language-helpera"); + params.put("avatar","avatara"); + params.put("description","擅长日语五十音,平假名,片假名,单词和短语解释与记忆技巧a"); + params.put("tags","解释,记忆技巧,日语教学a"); + params.put("title","日语帮助记忆师a"); + params.put("category","education"); + params.put("schemaVersion","1"); + params.put("createAt","2024-12-04"); + params.put("createdAt","2024-12-04"); + params.put("userid","flx"); + String body = TestUtils.doPost(url, JSON.toJSONString(params), charset); + System.out.println(body); + } catch (Exception e) { + e.printStackTrace(); + } + } + @Test + public void testGetAllAiAssistant() { + String url = TestUtils.WebconnectURL+"/api/robot/appaiassistant/getAllAiAssistant?userid=flx"; + String charset = TestUtils.UTF8; + try { + String body = TestUtils.doGet(url, charset); + System.out.println(body); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/flx-ai/src/test/java/test/com/pjilisense/flxai/controller/AppToolsSetControllerTest.java b/flx-ai/src/test/java/test/com/pjilisense/flxai/controller/AppToolsSetControllerTest.java index 21f7679..606d649 100644 --- a/flx-ai/src/test/java/test/com/pjilisense/flxai/controller/AppToolsSetControllerTest.java +++ b/flx-ai/src/test/java/test/com/pjilisense/flxai/controller/AppToolsSetControllerTest.java @@ -27,7 +27,6 @@ public class AppToolsSetControllerTest { // execute "tear down" logic within the transaction } - String token="c047b2a8a72d495abc350489b691c683"; @Test public void testGetAllAiTools() { String url = TestUtils.WebconnectURL+"/api/robot/apptoolsset/getAllAiTools";