From 2fb72d56082e2ee19aa187707751dd0dacd34f4b Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 16 Sep 2025 11:29:00 +0800 Subject: [PATCH] feat(ai): 增加公司列表接口并优化相关服务 --- src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java | 20 + src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryAllDto.java | 13 + src/main/java/cc/mrbird/febs/mall/dto/ApiXcxSaveInfoDto.java | 3 src/main/java/cc/mrbird/febs/ai/controller/company/ApiCompanyController.java | 39 ++++ src/main/java/cc/mrbird/febs/ai/controller/productPoint/ApiProductPointController.java | 14 + src/main/java/cc/mrbird/febs/ai/service/AiMemberRoleProductService.java | 2 src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java | 6 src/main/resources/mapper/modules/AiProductPointMapper.xml | 22 ++ src/main/java/cc/mrbird/febs/ai/service/AiProductPointService.java | 3 src/main/java/cc/mrbird/febs/ai/service/impl/AiProductPointServiceImpl.java | 24 ++ src/main/java/cc/mrbird/febs/ai/res/productPoint/ApiProductPointListVo.java | 46 +++++ src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleProductServiceImpl.java | 9 + src/main/java/cc/mrbird/febs/ai/controller/memberRole/ApiMemberRoleController.java | 11 + src/main/java/cc/mrbird/febs/ai/res/product/ApiProductVo.java | 6 src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java | 1 src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java | 2 src/main/java/cc/mrbird/febs/ai/service/AiProductService.java | 3 src/main/java/cc/mrbird/febs/ai/req/productPoint/ApiProductPointPageDto.java | 27 +++ src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryHotDto.java | 13 + src/main/java/cc/mrbird/febs/ai/service/AiProductCategoryService.java | 6 src/main/java/cc/mrbird/febs/mall/dto/ApiXcxLoginDto.java | 2 src/main/java/cc/mrbird/febs/ai/req/memberRole/ApiMemberRoleDto.java | 13 + src/main/java/cc/mrbird/febs/ai/req/product/ApiProductPageDto.java | 3 src/main/java/cc/mrbird/febs/ai/service/AiMemberRoleService.java | 5 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 16 ++ src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleServiceImpl.java | 47 +++++ src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java | 41 +++++ src/main/java/cc/mrbird/febs/ai/entity/AiProductPoint.java | 5 src/main/resources/mapper/modules/AiProductMapper.xml | 6 src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java | 6 src/main/java/cc/mrbird/febs/ai/mapper/AiProductPointMapper.java | 5 src/main/java/cc/mrbird/febs/ai/res/company/ApiCompanyVo.java | 13 + 32 files changed, 421 insertions(+), 11 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/ai/controller/company/ApiCompanyController.java b/src/main/java/cc/mrbird/febs/ai/controller/company/ApiCompanyController.java new file mode 100644 index 0000000..d6b1535 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/ai/controller/company/ApiCompanyController.java @@ -0,0 +1,39 @@ +package cc.mrbird.febs.ai.controller.company; + +import cc.mrbird.febs.ai.req.memberRole.ApiMemberRoleDto; +import cc.mrbird.febs.ai.res.company.ApiCompanyVo; +import cc.mrbird.febs.ai.res.memberRole.ApiMemberRoleVo; +import cc.mrbird.febs.ai.service.AiMemberRoleService; +import cc.mrbird.febs.common.entity.FebsResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * @author Administrator + */ +@Slf4j +@Validated +@RestController +@RequiredArgsConstructor +@RequestMapping(value = "/api/ai/company") +@Api(value = "ApiCompanyController", tags = "AI-公司") +public class ApiCompanyController { + + private final AiMemberRoleService aiMemberRoleService; + + @ApiOperation(value = "公司列表", notes = "公司列表") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiCompanyVo.class) + }) + @GetMapping(value = "/list") + public FebsResponse list() { + return aiMemberRoleService.companyList(); + } + +} diff --git a/src/main/java/cc/mrbird/febs/ai/controller/memberRole/ApiMemberRoleController.java b/src/main/java/cc/mrbird/febs/ai/controller/memberRole/ApiMemberRoleController.java index 079a0de..44c13da 100644 --- a/src/main/java/cc/mrbird/febs/ai/controller/memberRole/ApiMemberRoleController.java +++ b/src/main/java/cc/mrbird/febs/ai/controller/memberRole/ApiMemberRoleController.java @@ -1,5 +1,7 @@ package cc.mrbird.febs.ai.controller.memberRole; +import cc.mrbird.febs.ai.req.memberRole.ApiMemberRoleDto; +import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkItemPageDto; import cc.mrbird.febs.ai.res.memberRole.ApiMemberRoleVo; import cc.mrbird.febs.ai.service.AiMemberRoleService; import cc.mrbird.febs.common.entity.FebsResponse; @@ -33,4 +35,13 @@ public FebsResponse list() { return aiMemberRoleService.memberRoleList(); } + + @ApiOperation(value = "角色列表(带公司ID)", notes = "角色列表(带公司ID)") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiMemberRoleVo.class) + }) + @PostMapping(value = "/listV1") + public FebsResponse listV1(@RequestBody ApiMemberRoleDto dto) { + return aiMemberRoleService.memberRoleListV1(dto); + } } diff --git a/src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java b/src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java index 34a2457..dd25304 100644 --- a/src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java +++ b/src/main/java/cc/mrbird/febs/ai/controller/productCategory/ApiProductCategoryController.java @@ -1,5 +1,7 @@ package cc.mrbird.febs.ai.controller.productCategory; +import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryAllDto; +import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryHotDto; import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryPageDto; import cc.mrbird.febs.ai.res.productCategory.ApiProductCategoryVo; import cc.mrbird.febs.ai.service.AiProductCategoryService; @@ -35,15 +37,23 @@ return aiProductCategoryService.hot(); } - - @ApiOperation(value = "全部父级分类", notes = "全部父级分类") + @ApiOperation(value = "首页推荐(带公司ID)", notes = "首页推荐(带公司ID)") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiProductCategoryVo.class) }) - @GetMapping(value = "/allList") - public FebsResponse allList() { + @PostMapping(value = "/hotV1") + public FebsResponse hotV1(@RequestBody ApiProductCategoryHotDto dto) { + return aiProductCategoryService.hotV1(dto); + } - return aiProductCategoryService.allList(); + @ApiOperation(value = "全部父级分类(带公司ID)", notes = "全部父级分类(带公司ID)") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiProductCategoryVo.class) + }) + @PostMapping(value = "/allList") + public FebsResponse allList(@RequestBody ApiProductCategoryAllDto dto) { + + return aiProductCategoryService.allList(dto); } diff --git a/src/main/java/cc/mrbird/febs/ai/controller/productPoint/ApiProductPointController.java b/src/main/java/cc/mrbird/febs/ai/controller/productPoint/ApiProductPointController.java index 88ab37e..f79657f 100644 --- a/src/main/java/cc/mrbird/febs/ai/controller/productPoint/ApiProductPointController.java +++ b/src/main/java/cc/mrbird/febs/ai/controller/productPoint/ApiProductPointController.java @@ -1,9 +1,13 @@ package cc.mrbird.febs.ai.controller.productPoint; import cc.mrbird.febs.ai.req.product.ApiProductInfoDto; +import cc.mrbird.febs.ai.req.product.ApiProductPageDto; import cc.mrbird.febs.ai.req.productPoint.ApiProductPointInfoDto; +import cc.mrbird.febs.ai.req.productPoint.ApiProductPointPageDto; import cc.mrbird.febs.ai.res.product.ApiProductInfoVo; +import cc.mrbird.febs.ai.res.product.ApiProductVo; import cc.mrbird.febs.ai.res.productPoint.ApiProductPointInfoVo; +import cc.mrbird.febs.ai.res.productPoint.ApiProductPointListVo; import cc.mrbird.febs.ai.service.AiProductPointService; import cc.mrbird.febs.common.entity.FebsResponse; import io.swagger.annotations.Api; @@ -31,6 +35,16 @@ private final AiProductPointService aiProductPointService; + @ApiOperation(value = "知识点列表", notes = "知识点列表") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiProductPointListVo.class) + }) + @PostMapping(value = "/list") + public FebsResponse list(@RequestBody @Validated ApiProductPointPageDto dto) { + + return aiProductPointService.productPointList(dto); + } + @ApiOperation(value = "知识点详情", notes = "知识点详情") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiProductPointInfoVo.class) diff --git a/src/main/java/cc/mrbird/febs/ai/entity/AiProductPoint.java b/src/main/java/cc/mrbird/febs/ai/entity/AiProductPoint.java index d094130..6d649ef 100644 --- a/src/main/java/cc/mrbird/febs/ai/entity/AiProductPoint.java +++ b/src/main/java/cc/mrbird/febs/ai/entity/AiProductPoint.java @@ -19,6 +19,11 @@ private String companyId; /** + * 类型 + */ + private String productCategoryId; + + /** * 类型1:普通内容 2:视频号内容 */ private Integer isNormal; diff --git a/src/main/java/cc/mrbird/febs/ai/mapper/AiProductPointMapper.java b/src/main/java/cc/mrbird/febs/ai/mapper/AiProductPointMapper.java index 7750703..591ad21 100644 --- a/src/main/java/cc/mrbird/febs/ai/mapper/AiProductPointMapper.java +++ b/src/main/java/cc/mrbird/febs/ai/mapper/AiProductPointMapper.java @@ -1,7 +1,11 @@ package cc.mrbird.febs.ai.mapper; import cc.mrbird.febs.ai.entity.AiProductPoint; +import cc.mrbird.febs.ai.req.productPoint.ApiProductPointPageDto; +import cc.mrbird.febs.ai.res.productPoint.ApiProductPointListVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; /** * AI产品知识点 Mapper接口 @@ -11,4 +15,5 @@ */ public interface AiProductPointMapper extends BaseMapper<AiProductPoint> { + Page<ApiProductPointListVo> selectPageListByQuery(Page<ApiProductPointListVo> page, @Param("record")ApiProductPointPageDto dto); } diff --git a/src/main/java/cc/mrbird/febs/ai/req/memberRole/ApiMemberRoleDto.java b/src/main/java/cc/mrbird/febs/ai/req/memberRole/ApiMemberRoleDto.java new file mode 100644 index 0000000..ea247e8 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/ai/req/memberRole/ApiMemberRoleDto.java @@ -0,0 +1,13 @@ +package cc.mrbird.febs.ai.req.memberRole; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiMemberRoleDto", description = "参数") +public class ApiMemberRoleDto { + + @ApiModelProperty(value = "公司ID", example = "1") + private String companyId; +} diff --git a/src/main/java/cc/mrbird/febs/ai/req/product/ApiProductPageDto.java b/src/main/java/cc/mrbird/febs/ai/req/product/ApiProductPageDto.java index ef63b7c..8c1bce6 100644 --- a/src/main/java/cc/mrbird/febs/ai/req/product/ApiProductPageDto.java +++ b/src/main/java/cc/mrbird/febs/ai/req/product/ApiProductPageDto.java @@ -24,6 +24,9 @@ @ApiModelProperty(value = "分类ID", example = "123") private String categoryId; + @ApiModelProperty(value = "公司ID", example = "123") + private String companyId; + @ApiModelProperty(value = "角色ID", example = "123") private String memberRoleId; } diff --git a/src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryAllDto.java b/src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryAllDto.java new file mode 100644 index 0000000..ff68738 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryAllDto.java @@ -0,0 +1,13 @@ +package cc.mrbird.febs.ai.req.productCategory; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiProductCategoryAllDto", description = "参数") +public class ApiProductCategoryAllDto { + + @ApiModelProperty(value = "公司ID", example = "1") + private String companyId; +} diff --git a/src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryHotDto.java b/src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryHotDto.java new file mode 100644 index 0000000..281f760 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/ai/req/productCategory/ApiProductCategoryHotDto.java @@ -0,0 +1,13 @@ +package cc.mrbird.febs.ai.req.productCategory; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiProductCategoryHotDto", description = "参数") +public class ApiProductCategoryHotDto { + + @ApiModelProperty(value = "公司ID", example = "1") + private String companyId; +} diff --git a/src/main/java/cc/mrbird/febs/ai/req/productPoint/ApiProductPointPageDto.java b/src/main/java/cc/mrbird/febs/ai/req/productPoint/ApiProductPointPageDto.java new file mode 100644 index 0000000..955bb4a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/ai/req/productPoint/ApiProductPointPageDto.java @@ -0,0 +1,27 @@ +package cc.mrbird.febs.ai.req.productPoint; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +@Data +@ApiModel(value = "ApiProductPointPageDto", description = "参数") +public class ApiProductPointPageDto { + + + @NotNull(message = "页码不能为空") + @ApiModelProperty(value = "页码", example = "1") + private Integer pageNow; + + @NotNull(message = "每页数量不能为空") + @ApiModelProperty(value = "每页数量", example = "10") + private Integer pageSize; + + @ApiModelProperty(value = "分类ID", example = "123") + private String categoryId; + + @ApiModelProperty(value = "公司ID", example = "123") + private String companyId; + +} diff --git a/src/main/java/cc/mrbird/febs/ai/res/company/ApiCompanyVo.java b/src/main/java/cc/mrbird/febs/ai/res/company/ApiCompanyVo.java new file mode 100644 index 0000000..7339719 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/ai/res/company/ApiCompanyVo.java @@ -0,0 +1,13 @@ +package cc.mrbird.febs.ai.res.company; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@Data +@ApiModel(value = "ApiCompanyVo", description = "参数") +public class ApiCompanyVo { + + private String name; + + private String id; +} diff --git a/src/main/java/cc/mrbird/febs/ai/res/product/ApiProductVo.java b/src/main/java/cc/mrbird/febs/ai/res/product/ApiProductVo.java index bcb8aa1..2ee36d3 100644 --- a/src/main/java/cc/mrbird/febs/ai/res/product/ApiProductVo.java +++ b/src/main/java/cc/mrbird/febs/ai/res/product/ApiProductVo.java @@ -25,4 +25,10 @@ @ApiModelProperty(value = "ID") private String target; + /** + * 小图标 + */ + @ApiModelProperty(value = "图片") + private String iconImg; + } diff --git a/src/main/java/cc/mrbird/febs/ai/res/productPoint/ApiProductPointListVo.java b/src/main/java/cc/mrbird/febs/ai/res/productPoint/ApiProductPointListVo.java new file mode 100644 index 0000000..02008b8 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/ai/res/productPoint/ApiProductPointListVo.java @@ -0,0 +1,46 @@ +package cc.mrbird.febs.ai.res.productPoint; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiProductPointListVo", description = "参数") +public class ApiProductPointListVo { + + + + @ApiModelProperty(value = "知识点ID") + private String id; + + /** + * 类型1:普通内容 2:视频号内容 + */ + @ApiModelProperty(value = "类型1:普通内容 2:视频号内容") + private Integer isNormal; + + /** + * 视频号 id,以"sph"开头的id,可在视频号助手获取 + */ + @ApiModelProperty(value = "视频号 id") + private String finderUserName; + + /** + * 视频 feedId + */ + @ApiModelProperty(value = "视频 feedId") + private String feedId; + + /** + * 视频封面 + */ + @ApiModelProperty(value = "视频封面") + private String feedImg; + + /** + * 标题 + */ + @ApiModelProperty(value = "标题") + private String title; + +} diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiMemberRoleProductService.java b/src/main/java/cc/mrbird/febs/ai/service/AiMemberRoleProductService.java index c18cad5..ab96452 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/AiMemberRoleProductService.java +++ b/src/main/java/cc/mrbird/febs/ai/service/AiMemberRoleProductService.java @@ -12,5 +12,7 @@ */ public interface AiMemberRoleProductService extends IService<AiMemberRoleProduct> { + List<AiMemberRoleProduct> getProductListByMemberRoleId(String memberRoleId); + } diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiMemberRoleService.java b/src/main/java/cc/mrbird/febs/ai/service/AiMemberRoleService.java index 5ca434d..927cafb 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/AiMemberRoleService.java +++ b/src/main/java/cc/mrbird/febs/ai/service/AiMemberRoleService.java @@ -1,6 +1,7 @@ package cc.mrbird.febs.ai.service; import cc.mrbird.febs.ai.entity.AiMemberRole; +import cc.mrbird.febs.ai.req.memberRole.ApiMemberRoleDto; import cc.mrbird.febs.common.entity.FebsResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.IService; @@ -19,5 +20,9 @@ FebsResponse memberRoleList(); + FebsResponse memberRoleListV1(ApiMemberRoleDto dto); + String getDefaultMemberRoleId(); + + FebsResponse companyList(); } diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java b/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java index 57c3a1d..5315209 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java +++ b/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java @@ -4,4 +4,6 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface AiMemberService extends IService<AiMember> { + + AiMember getById(String id); } diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiProductCategoryService.java b/src/main/java/cc/mrbird/febs/ai/service/AiProductCategoryService.java index c5ee767..c29fd8d 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/AiProductCategoryService.java +++ b/src/main/java/cc/mrbird/febs/ai/service/AiProductCategoryService.java @@ -1,6 +1,8 @@ package cc.mrbird.febs.ai.service; import cc.mrbird.febs.ai.entity.AiProductCategory; +import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryAllDto; +import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryHotDto; import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryPageDto; import cc.mrbird.febs.ai.res.productCategory.ApiProductCategoryVo; import cc.mrbird.febs.common.entity.FebsResponse; @@ -25,9 +27,11 @@ FebsResponse hot(); + FebsResponse hotV1(ApiProductCategoryHotDto dto); + FebsResponse categoryList(ApiProductCategoryPageDto dto); String getDefaultProductCategoryId(); - FebsResponse allList(); + FebsResponse allList(ApiProductCategoryAllDto dto); } diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiProductPointService.java b/src/main/java/cc/mrbird/febs/ai/service/AiProductPointService.java index 04eb5e2..774609b 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/AiProductPointService.java +++ b/src/main/java/cc/mrbird/febs/ai/service/AiProductPointService.java @@ -2,6 +2,7 @@ import cc.mrbird.febs.ai.entity.AiProductPoint; import cc.mrbird.febs.ai.req.productPoint.ApiProductPointInfoDto; +import cc.mrbird.febs.ai.req.productPoint.ApiProductPointPageDto; import cc.mrbird.febs.ai.res.productPoint.ApiProductPointVo; import cc.mrbird.febs.common.entity.FebsResponse; import com.baomidou.mybatisplus.extension.service.IService; @@ -21,5 +22,7 @@ List<ApiProductPointVo> listByProductId(String productId); + FebsResponse productPointList(ApiProductPointPageDto dto); + FebsResponse productPointInfo(ApiProductPointInfoDto dto); } diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiProductService.java b/src/main/java/cc/mrbird/febs/ai/service/AiProductService.java index 70400e2..3801473 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/AiProductService.java +++ b/src/main/java/cc/mrbird/febs/ai/service/AiProductService.java @@ -7,6 +7,7 @@ import cc.mrbird.febs.ai.res.product.ApiProductVo; import cc.mrbird.febs.ai.res.productCategory.ApiProductCategoryVo; import cc.mrbird.febs.common.entity.FebsResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -28,4 +29,6 @@ FebsResponse productInfo(ApiProductInfoDto dto); FebsResponse pointInfoList(ApiProductInfoDto dto); + + List<AiProduct> getProductListByQuery(LambdaQueryWrapper<AiProduct> productQuery); } diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleProductServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleProductServiceImpl.java index 427dc37..49ebee2 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleProductServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleProductServiceImpl.java @@ -4,6 +4,7 @@ import cc.mrbird.febs.ai.mapper.AiMemberRoleProductMapper; import cc.mrbird.febs.ai.service.AiMemberRoleProductService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -26,4 +27,12 @@ private final AiMemberRoleProductMapper aiMemberRoleProductMapper; + @Override + public List<AiMemberRoleProduct> getProductListByMemberRoleId(String memberRoleId) { + + return aiMemberRoleProductMapper.selectList( + Wrappers.lambdaQuery(AiMemberRoleProduct.class) + .eq(AiMemberRoleProduct::getRoleId, memberRoleId) + ); + } } diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleServiceImpl.java index e4aad6e..f4027f5 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleServiceImpl.java @@ -1,11 +1,16 @@ package cc.mrbird.febs.ai.service.impl; +import cc.mrbird.febs.ai.entity.AiCompany; import cc.mrbird.febs.ai.entity.AiMemberRole; +import cc.mrbird.febs.ai.mapper.AiCompanyMapper; import cc.mrbird.febs.ai.mapper.AiMemberRoleMapper; +import cc.mrbird.febs.ai.req.memberRole.ApiMemberRoleDto; +import cc.mrbird.febs.ai.res.company.ApiCompanyVo; import cc.mrbird.febs.ai.res.memberRole.ApiMemberRoleVo; import cc.mrbird.febs.ai.service.AiMemberRoleService; import cc.mrbird.febs.common.entity.FebsResponse; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -29,6 +34,7 @@ public class AiMemberRoleServiceImpl extends ServiceImpl<AiMemberRoleMapper, AiMemberRole> implements AiMemberRoleService { private final AiMemberRoleMapper aiMemberRoleMapper; + private final AiCompanyMapper aiCompanyMapper; @Override public List<AiMemberRole> getListByQuery(LambdaQueryWrapper<AiMemberRole> query) { @@ -57,9 +63,34 @@ } @Override + public FebsResponse memberRoleListV1(ApiMemberRoleDto dto) { + List<ApiMemberRoleVo> list = new ArrayList<>(); + + LambdaQueryWrapper<AiMemberRole> query = Wrappers.lambdaQuery(AiMemberRole.class); + if (StrUtil.isNotEmpty(dto.getCompanyId())){ + query.eq(AiMemberRole::getCompanyId, dto.getCompanyId()); + }else{ + query.isNull(AiMemberRole::getCompanyId); + } + query.eq(AiMemberRole::getState, 1); + List<AiMemberRole> listByQuery = this.getListByQuery(query); + if (CollUtil.isNotEmpty(listByQuery)){ + for (AiMemberRole aiMemberRole : listByQuery){ + ApiMemberRoleVo apiMemberRoleVo = new ApiMemberRoleVo(); + apiMemberRoleVo.setId(aiMemberRole.getId()); + apiMemberRoleVo.setName(aiMemberRole.getName()); + apiMemberRoleVo.setIconImg(aiMemberRole.getIconImg()); + list.add(apiMemberRoleVo); + } + } + return new FebsResponse().success().data(list); + } + + @Override public String getDefaultMemberRoleId() { LambdaQueryWrapper<AiMemberRole> queryWrapper = Wrappers.lambdaQuery(AiMemberRole.class); queryWrapper.eq(AiMemberRole::getState, 1); + queryWrapper.isNull(AiMemberRole::getCompanyId); queryWrapper.orderByAsc(AiMemberRole::getCreatedTime); queryWrapper.last("limit 1"); List<AiMemberRole> listByQuery = this.getListByQuery(queryWrapper); @@ -70,4 +101,20 @@ } return null; } + + @Override + public FebsResponse companyList() { + List<ApiCompanyVo> list = new ArrayList<>(); + + List<AiCompany> aiCompanies = aiCompanyMapper.selectList(null); + if (CollUtil.isNotEmpty(aiCompanies)){ + for (AiCompany aiCompany : aiCompanies){ + ApiCompanyVo apiCompanyVo = new ApiCompanyVo(); + apiCompanyVo.setId(aiCompany.getId()); + apiCompanyVo.setName(aiCompany.getName()); + list.add(apiCompanyVo); + } + } + return new FebsResponse().success().data(list); + } } diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java index 37f81eb..4ab010e 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java @@ -15,4 +15,10 @@ @Service @RequiredArgsConstructor public class AiMemberServiceImpl extends ServiceImpl<AiMemberMapper, AiMember> implements AiMemberService { + + private final AiMemberMapper aiMemberMapper; + @Override + public AiMember getById(String id) { + return aiMemberMapper.selectById( id); + } } diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java index 2f0697e..771f4ef 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductCategoryServiceImpl.java @@ -1,14 +1,18 @@ package cc.mrbird.febs.ai.service.impl; +import cc.mrbird.febs.ai.entity.AiMemberRole; import cc.mrbird.febs.ai.entity.AiProductCategory; import cc.mrbird.febs.ai.enumerates.ProductCategoryLevelEnum; import cc.mrbird.febs.ai.mapper.AiProductCategoryMapper; +import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryAllDto; +import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryHotDto; import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryPageDto; import cc.mrbird.febs.ai.res.productCategory.ApiProductCategoryVo; import cc.mrbird.febs.ai.service.AiProductCategoryService; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.vo.ApiActivityInfoVo; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -70,6 +74,35 @@ } @Override + public FebsResponse hotV1(ApiProductCategoryHotDto dto) { + + List<ApiProductCategoryVo> list = new ArrayList<>(); + + LambdaQueryWrapper<AiProductCategory> query = Wrappers.lambdaQuery(AiProductCategory.class); + if (StrUtil.isNotEmpty(dto.getCompanyId())){ + query.eq(AiProductCategory::getCompanyId, dto.getCompanyId()); + }else{ + query.isNull(AiProductCategory::getCompanyId); + } + query.eq(AiProductCategory::getLevel, ProductCategoryLevelEnum.LEVEL_TWO.getLevel()); + query.eq(AiProductCategory::getState, 1); + query.eq(AiProductCategory::getHotState, 1); + query.orderByAsc(AiProductCategory::getSort); + List<AiProductCategory> listByQuery = this.getListByQuery(query); + if (CollUtil.isNotEmpty(listByQuery)){ + for (AiProductCategory aiProductCategory : listByQuery){ + ApiProductCategoryVo apiProductCategoryVo = new ApiProductCategoryVo(); + apiProductCategoryVo.setId(aiProductCategory.getId()); + apiProductCategoryVo.setName(aiProductCategory.getName()); + apiProductCategoryVo.setBackImg(aiProductCategory.getBackImg()); + apiProductCategoryVo.setIconImg(aiProductCategory.getIconImg()); + list.add(apiProductCategoryVo); + } + } + return new FebsResponse().success().data(list); + } + + @Override public FebsResponse categoryList(ApiProductCategoryPageDto dto) { // 创建分页对象,传入当前页和每页大小 Page<ApiProductCategoryVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); @@ -81,6 +114,7 @@ public String getDefaultProductCategoryId() { LambdaQueryWrapper<AiProductCategory> query = Wrappers.lambdaQuery(AiProductCategory.class); query.eq(AiProductCategory::getState, 1); + query.isNull(AiProductCategory::getCompanyId); query.eq(AiProductCategory::getHotState, 1); query.orderByAsc(AiProductCategory::getSort); query.last("limit 1"); @@ -92,9 +126,14 @@ } @Override - public FebsResponse allList() { + public FebsResponse allList(ApiProductCategoryAllDto dto) { List<ApiProductCategoryVo> list = new ArrayList<>(); LambdaQueryWrapper<AiProductCategory> query = Wrappers.lambdaQuery(AiProductCategory.class); + if (StrUtil.isNotEmpty(dto.getCompanyId())){ + query.eq(AiProductCategory::getCompanyId, dto.getCompanyId()); + }else{ + query.isNull(AiProductCategory::getCompanyId); + } query.eq(AiProductCategory::getState, 1); query.eq(AiProductCategory::getLevel, ProductCategoryLevelEnum.LEVEL_ONE.getLevel()); query.orderByAsc(AiProductCategory::getSort); diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductPointServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductPointServiceImpl.java index 3800bfd..26895c7 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductPointServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductPointServiceImpl.java @@ -1,23 +1,27 @@ package cc.mrbird.febs.ai.service.impl; +import cc.mrbird.febs.ai.entity.AiMemberRoleProduct; +import cc.mrbird.febs.ai.entity.AiProduct; import cc.mrbird.febs.ai.entity.AiProductPoint; import cc.mrbird.febs.ai.entity.AiProductPointLink; import cc.mrbird.febs.ai.mapper.AiProductPointMapper; import cc.mrbird.febs.ai.req.productPoint.ApiProductPointInfoDto; +import cc.mrbird.febs.ai.req.productPoint.ApiProductPointPageDto; import cc.mrbird.febs.ai.res.productPoint.ApiProductPointInfoVo; +import cc.mrbird.febs.ai.res.productPoint.ApiProductPointListVo; import cc.mrbird.febs.ai.res.productPoint.ApiProductPointVo; -import cc.mrbird.febs.ai.service.AiProductPointLinkService; -import cc.mrbird.febs.ai.service.AiProductPointService; +import cc.mrbird.febs.ai.service.*; import cc.mrbird.febs.common.entity.FebsResponse; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -37,6 +41,7 @@ private final AiProductPointMapper aiProductPointMapper; private final AiProductPointLinkService aiProductPointLinkService; + private final AiProductCategoryService aiProductCategoryService; @Override public AiProductPoint getById(String id) { @@ -74,6 +79,19 @@ } @Override + public FebsResponse productPointList(ApiProductPointPageDto dto) { + + if(StrUtil.isEmpty(dto.getCategoryId())){ + String categoryId = aiProductCategoryService.getDefaultProductCategoryId(); + dto.setCategoryId(categoryId); + } + // 创建分页对象,传入当前页和每页大小 + Page<ApiProductPointListVo> page = new Page<>(dto.getPageNow(), dto.getPageSize()); + Page<ApiProductPointListVo> pageListByQuery = aiProductPointMapper.selectPageListByQuery(page, dto); + return new FebsResponse().success().data(pageListByQuery); + } + + @Override public FebsResponse productPointInfo(ApiProductPointInfoDto dto) { ApiProductPointInfoVo apiProductPointInfoVo = new ApiProductPointInfoVo(); String id = dto.getId(); diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java index 774df76..f0f78df 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java @@ -11,6 +11,7 @@ import cc.mrbird.febs.ai.service.*; import cc.mrbird.febs.common.entity.FebsResponse; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; @@ -91,4 +92,9 @@ List<ApiProductPointVo> apiProductPointVos = aiProductPointService.listByProductId(id); return new FebsResponse().success().data(apiProductPointVos); } + + @Override + public List<AiProduct> getProductListByQuery(LambdaQueryWrapper<AiProduct> productQuery) { + return aiProductMapper.selectList(productQuery); + } } diff --git a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java index 85c1728..748623e 100644 --- a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java +++ b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java @@ -64,5 +64,6 @@ registration.excludePathPatterns("/api/ai/test/**"); registration.excludePathPatterns("/api/ai/memberTalk/answer-stream"); registration.excludePathPatterns("/api/ai/talk/questionList"); + registration.excludePathPatterns("/api/ai/company/list"); } } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiXcxLoginDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiXcxLoginDto.java index e6e26cc..6239bf1 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/ApiXcxLoginDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiXcxLoginDto.java @@ -11,4 +11,6 @@ private String inviteId; + private String companyId; + } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiXcxSaveInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiXcxSaveInfoDto.java index 5f1dc66..6ba0044 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/ApiXcxSaveInfoDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiXcxSaveInfoDto.java @@ -27,6 +27,9 @@ @ApiModelProperty(value = "邀请码") private String inviteId; + @ApiModelProperty(value = "公司ID") + private String companyId; + @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @ApiModelProperty(value = "生日") diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index d5bfefa..e67b607 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -2,6 +2,7 @@ import cc.mrbird.febs.ai.entity.AiMember; import cc.mrbird.febs.ai.mapper.AiMemberMapper; +import cc.mrbird.febs.ai.service.AiMemberService; import cc.mrbird.febs.ai.utils.UUID; import cc.mrbird.febs.common.configure.FebsConfigure; import cc.mrbird.febs.common.entity.FebsResponse; @@ -104,6 +105,7 @@ private final HappyMemberLabelRecordMapper happyMemberLabelRecordMapper; private final HappyMemberLabelMapper happyMemberLabelMapper; private final FebsConfigure febsConfigure; + private final AiMemberService aiMemberService; @Value("${spring.profiles.active}") @@ -734,6 +736,9 @@ AiMember aiMember = new AiMember(); aiMember.setId(UUID.getSimpleUUIDString()); + if (StrUtil.isNotEmpty(apiXcxLoginDto.getCompanyId())){ + aiMember.setCompanyId(apiXcxLoginDto.getCompanyId()); + } aiMember.setCreatedTime(new Date()); aiMemberMapper.insert(aiMember); @@ -843,6 +848,17 @@ } this.baseMapper.updateById(mallMember); + String memberUuid = mallMember.getMemberUuid(); + AiMember aiMember = aiMemberService.getById(memberUuid); + if (ObjectUtil.isNotEmpty(aiMember) && StrUtil.isNotEmpty(apiXcxSaveInfoDto.getCompanyId())){ + aiMemberService.update(null, + Wrappers.lambdaUpdate(AiMember.class) + .set(AiMember::getCompanyId, aiMember.getCompanyId()) + .eq(AiMember::getId, aiMember.getId()) + ); + } + + // //完善信息赠送新人礼 // if (StrUtil.isNotBlank(mallMember.getPhone()) && mallMember.getNewGift() == 0) { // DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( diff --git a/src/main/resources/mapper/modules/AiProductMapper.xml b/src/main/resources/mapper/modules/AiProductMapper.xml index a5a099c..fc3b8eb 100644 --- a/src/main/resources/mapper/modules/AiProductMapper.xml +++ b/src/main/resources/mapper/modules/AiProductMapper.xml @@ -6,13 +6,17 @@ select a.id as id, a.name as name, + a.icon_img as iconImg, a.target as target from ai_product a <where> a.state = 1 <if test="record != null"> <if test="record.categoryId != null and record.categoryId != ''"> - and a.product_category_id=#{record.categoryId} + and a.product_category_id = #{record.categoryId} + </if> + <if test="record.companyId != null and record.companyId != ''"> + and a.company_id = #{record.companyId} </if> <if test="record.memberRoleId != null and record.memberRoleId != ''"> and a.id in ( diff --git a/src/main/resources/mapper/modules/AiProductPointMapper.xml b/src/main/resources/mapper/modules/AiProductPointMapper.xml index 6537d9a..48bd2cd 100644 --- a/src/main/resources/mapper/modules/AiProductPointMapper.xml +++ b/src/main/resources/mapper/modules/AiProductPointMapper.xml @@ -1,4 +1,26 @@ <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="cc.mrbird.febs.ai.mapper.AiProductPointMapper"> + + <select id="selectPageListByQuery" resultType="cc.mrbird.febs.ai.res.productPoint.ApiProductPointListVo"> + select + a.id as id, + a.is_normal as isNormal, + a.finder_user_name as finderUserName, + a.feed_img as feedImg, + a.title as title, + a.feed_id as feedId + from ai_product_point a + <where> + <if test="record != null"> + <if test="record.categoryId != null and record.categoryId != ''"> + and a.product_category_id = #{record.categoryId} + </if> + <if test="record.companyId != null and record.companyId != ''"> + and a.company_id = #{record.companyId} + </if> + </if> + </where> + order by a.CREATED_TIME asc + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.1