feat(member): 添加会员公司ID并更新相关服务
- 在 AiMemberAnswer、AiMemberTalk、AiMemberTalkItem 等实体中添加 companyId 字段
- 更新相关服务接口和实现类,增加公司ID参数
- 在 MallMember 实体中添加 companyId 字段
- 更新 ApiMallMemberService 实现类,支持保存公司ID
| | |
| | | public interface AiMemberTalkItemService extends IService<AiMemberTalkItem> { |
| | | |
| | | |
| | | AiMemberTalkItem add(String memberUuid, String id, int type, String resContext, Date createdTime); |
| | | AiMemberTalkItem add(String memberUuid, String id, String companyId, int type, String resContext, Date createdTime); |
| | | |
| | | AiMemberTalkItem getByQuery(LambdaQueryWrapper<AiMemberTalkItem> memberTalkItemQuery); |
| | | |
| | |
| | | |
| | | FebsResponse answer(ApiMemberTalkAnswerDto dto); |
| | | |
| | | AiMemberTalk add(String memberUuid, String productId, Date nowTime); |
| | | AiMemberTalk add(String memberUuid,String companyId, String productId, Date nowTime); |
| | | |
| | | FebsResponse historyPage(ApiMemberTalkItemPageDto dto); |
| | | |
| | |
| | | |
| | | public interface AiTalkItemService extends IService<AiTalkItem> { |
| | | |
| | | void add(String id, int code, String context, String memberUuid, DateTime date); |
| | | void add(String id,String companyId, int code, String context, String memberUuid, DateTime date); |
| | | |
| | | FebsResponse historyPage(ApiTalkItemPageDto dto); |
| | | |
| | |
| | | |
| | | FebsResponse talkOpen(ApiTalkDto dto); |
| | | |
| | | AiTalk add(String memberUuid, String question, Date date); |
| | | AiTalk add(String memberUuid,String companyId, String question, Date date); |
| | | |
| | | Flux<FebsResponse> answerStream(String question); |
| | | |
| | |
| | | if(ObjectUtil.isNull(aiProduct)){ |
| | | throw new FebsException("产品不存在"); |
| | | } |
| | | String companyId = aiProduct.getCompanyId(); |
| | | //验证产品分类下是否有题目 |
| | | String productCategoryId = aiProduct.getProductCategoryId(); |
| | | LambdaQueryWrapper<AiProductQuestion> questionLambdaQueryWrapper = Wrappers.lambdaQuery(AiProductQuestion.class); |
| | |
| | | Integer questionCount = aiProduct.getQuestionCount(); |
| | | aiMemberAnswer = new AiMemberAnswer(); |
| | | aiMemberAnswer.setId(UUID.getSimpleUUIDString()); |
| | | aiMemberAnswer.setCompanyId(companyId); |
| | | aiMemberAnswer.setCreatedTime(createdTime); |
| | | aiMemberAnswer.setUpdatedTime(createdTime); |
| | | aiMemberAnswer.setProductId(aiProduct.getId()); |
| | |
| | | AiProductQuestion aiProductQuestion = aiProductQuestionService.createQuestion(aiProduct.getId()); |
| | | AiMemberAnswerItem aiMemberAnswerItem = new AiMemberAnswerItem(); |
| | | aiMemberAnswerItem.setId(UUID.getSimpleUUIDString()); |
| | | aiMemberAnswerItem.setCompanyId(companyId); |
| | | aiMemberAnswerItem.setCreatedTime(createdTime); |
| | | aiMemberAnswerItem.setAnswerId(aiMemberAnswer.getId()); |
| | | aiMemberAnswerItem.setProductId(aiMemberAnswer.getProductId()); |
| | |
| | | throw new FebsException("答题记录不存在"); |
| | | } |
| | | |
| | | String companyId = aiMemberAnswer.getCompanyId(); |
| | | |
| | | Date createdTime = new Date(); |
| | | AiMemberAnswerItem aiMemberAnswerItem = aiMemberAnswerItemService.getById(memberAnswerItemId); |
| | | aiMemberAnswerItem.setUpdatedTime(createdTime); |
| | |
| | | if (aiMemberAnswerItem.getMemberAnswerState() == 1){ |
| | | aiMemberAnswer.setCorrectCnt(aiMemberAnswer.getCorrectCnt() + 1); |
| | | } |
| | | aiMemberAnswerItem.setCompanyId(companyId); |
| | | aiMemberAnswer.setUpdatedTime(createdTime); |
| | | aiMemberAnswerMapper.updateById(aiMemberAnswer); |
| | | |
| | |
| | | private final AiMemberTalkItemMapper aiMemberTalkItemMapper; |
| | | |
| | | @Override |
| | | public AiMemberTalkItem add(String memberUuid, String id, int type, String resContext,Date createdTime) { |
| | | public AiMemberTalkItem add(String memberUuid, String id, String companyId, int type, String resContext,Date createdTime) { |
| | | AiMemberTalkItem aiMemberTalkItem = new AiMemberTalkItem(); |
| | | aiMemberTalkItem.setId(UUID.getSimpleUUIDString()); |
| | | aiMemberTalkItem.setCompanyId(companyId); |
| | | aiMemberTalkItem.setCreatedTime(createdTime); |
| | | aiMemberTalkItem.setMemberId(memberUuid); |
| | | aiMemberTalkItem.setMemberTalkId(id); |
| | |
| | | if(ObjectUtil.isNull(aiProductRoleLink)){ |
| | | throw new FebsException("产品AI陪练不存在"); |
| | | } |
| | | String companyId = aiProductRoleLink.getCompanyId(); |
| | | |
| | | Date nowTime = new Date(); |
| | | LambdaQueryWrapper<AiMemberTalk> query = Wrappers.lambdaQuery(AiMemberTalk.class); |
| | |
| | | query.last("limit 1"); |
| | | AiMemberTalk aiMemberTalk = this.getByQuery(query); |
| | | if (ObjectUtil.isNull(aiMemberTalk)){ |
| | | aiMemberTalk = this.add(memberUuid,productId,nowTime); |
| | | aiMemberTalk = this.add(memberUuid,companyId,productId,nowTime); |
| | | } |
| | | |
| | | List<AiMessage> aiMessageDtoList = aiMemberTalkItemService.getQuestionUpDownContext(aiMemberTalk.getId(),AiTypeEnum.QUESTION.getCode()); |
| | |
| | | apiMemberTalkVo.setType(1); |
| | | apiMemberTalkVo.setContext(aiResponse.getResContext()); |
| | | if(aiResponse.getCode().equals("200")){ |
| | | AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(), 1, aiResponse.getResContext(), nowTime); |
| | | AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(),companyId, 1, aiResponse.getResContext(), nowTime); |
| | | apiMemberTalkVo.setMemberTalkItemId(aiMemberTalkItem.getId()); |
| | | this.updateTimeUpdate(nowTime,aiMemberTalk.getId()); |
| | | }else{ |
| | |
| | | callback.accept(aiResponse); |
| | | return; |
| | | } |
| | | String companyId = aiProductRoleLink.getCompanyId(); |
| | | |
| | | // 构造AI请求 |
| | | AiRequest aiRequest = new AiRequest(); |
| | |
| | | query.last("limit 1"); |
| | | AiMemberTalk aiMemberTalk = this.getByQuery(query); |
| | | if (ObjectUtil.isNull(aiMemberTalk)) { |
| | | aiMemberTalk = this.add(memberUuid, productId, nowTime); |
| | | aiMemberTalk = this.add(memberUuid,companyId, productId, nowTime); |
| | | } |
| | | try { |
| | | if (aiResponse.getCode().equals("200")) { |
| | | // 如果是最终结果(包含报告) |
| | | if (aiResponse.getReport() != null) { |
| | | // 保存完整响应到数据库 |
| | | aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(), 1, aiResponse.getResContext(), nowTime); |
| | | aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(),companyId, 1, aiResponse.getResContext(), nowTime); |
| | | this.updateTimeUpdate(nowTime, aiMemberTalk.getId()); |
| | | |
| | | callback.accept(aiResponse); |
| | |
| | | throw new FebsException("产品AI陪练对话不存在"); |
| | | } |
| | | |
| | | String companyId = aiMemberTalk.getCompanyId(); |
| | | |
| | | LambdaQueryWrapper<AiProductRoleLink> productLinkQuery = Wrappers.lambdaQuery(AiProductRoleLink.class); |
| | | productLinkQuery.eq(AiProductRoleLink::getProductId,aiMemberTalk.getProductId()); |
| | | productLinkQuery.last("limit 1"); |
| | |
| | | memberTalkItemQuery.orderByDesc(AiMemberTalkItem::getCreatedTime); |
| | | memberTalkItemQuery.last("limit 1"); |
| | | AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.getByQuery(memberTalkItemQuery); |
| | | aiMemberTalkItemService.add(memberUuid,aiMemberTalk.getId(),2,reqContext,new Date()); |
| | | aiMemberTalkItemService.add(memberUuid,aiMemberTalk.getId(),companyId,2,reqContext,new Date()); |
| | | |
| | | String format = StrUtil.format(ANSWER_FORMAT, aiMemberTalkItem.getContext(), reqContext); |
| | | log.info("format:{}",format); |
| | |
| | | if ("null".equals( context)){ |
| | | context = aiResponse.getResContext(); |
| | | } |
| | | AiMemberTalkItem talkItem = aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(), 3, context, nowTime); |
| | | AiMemberTalkItem talkItem = aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(),companyId, 3, context, nowTime); |
| | | this.updateTimeUpdate(nowTime,aiMemberTalk.getId()); |
| | | |
| | | |
| | |
| | | return new FebsResponse().success().data(apiMemberTalkVo); |
| | | } |
| | | @Override |
| | | public AiMemberTalk add(String memberUuid, String productId, Date nowTime) { |
| | | public AiMemberTalk add(String memberUuid,String companyId, String productId, Date nowTime) { |
| | | AiMemberTalk aiMemberTalk = new AiMemberTalk(); |
| | | aiMemberTalk.setId(UUID.getSimpleUUIDString()); |
| | | aiMemberTalk.setCompanyId(companyId); |
| | | aiMemberTalk.setCreatedTime(nowTime); |
| | | aiMemberTalk.setMemberId(memberUuid); |
| | | aiMemberTalk.setProductId(productId); |
| | |
| | | |
| | | private final AiTalkItemMapper aiTalkItemMapper; |
| | | @Override |
| | | public void add(String id, int code, String context, String memberUuid, DateTime date) { |
| | | public void add(String id,String companyId, int code, String context, String memberUuid, DateTime date) { |
| | | AiTalkItem aiTalkItem = new AiTalkItem(); |
| | | aiTalkItem.setId(UUID.getSimpleUUIDString()); |
| | | aiTalkItem.setCompanyId(companyId); |
| | | aiTalkItem.setMemberId(memberUuid); |
| | | aiTalkItem.setType(code); |
| | | aiTalkItem.setTalkId(id); |
| | |
| | | Integer type = dto.getType(); |
| | | String reasoningContent = dto.getReasoningContent(); |
| | | String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); |
| | | String companyId = LoginUserUtil.getLoginUser().getCompanyId(); |
| | | |
| | | AiTalk aiTalk = this.getById(talkId); |
| | | DateTime date = DateUtil.date(); |
| | | if (StrUtil.isEmpty(talkId)){ |
| | | aiTalk = this.add(memberUuid,context, date); |
| | | aiTalk = this.add(memberUuid,companyId,context, date); |
| | | } |
| | | HashMap<String, String> stringStringHashMap = new HashMap<>(); |
| | | stringStringHashMap.put(LlmStrategyContextEnum.THINK.getName(),reasoningContent); |
| | | stringStringHashMap.put(LlmStrategyContextEnum.CONTENT.getName(),context); |
| | | aiTalkItemService.add(aiTalk.getId(), type, JSONUtil.toJsonStr(stringStringHashMap), memberUuid, date); |
| | | aiTalkItemService.add(aiTalk.getId(), companyId,type, JSONUtil.toJsonStr(stringStringHashMap), memberUuid, date); |
| | | |
| | | ApiTalkVo apiTalkVo = new ApiTalkVo(); |
| | | apiTalkVo.setTalkId(aiTalk.getId()); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public AiTalk add(String memberUuid, String question, Date date) { |
| | | public AiTalk add(String memberUuid,String companyId, String question, Date date) { |
| | | AiTalk aiTalk = new AiTalk(); |
| | | aiTalk.setId(UUID.getSimpleUUIDString()); |
| | | aiTalk.setCompanyId(companyId); |
| | | aiTalk.setQuestion(question); |
| | | aiTalk.setCreatedTime(date); |
| | | aiTalk.setMemberId(memberUuid); |
| | |
| | | throw new FebsException("产品AI陪练不存在"); |
| | | } |
| | | |
| | | String companyId = aiProductRoleLink.getCompanyId(); |
| | | |
| | | Date nowTime = new Date(); |
| | | LambdaQueryWrapper<AiMemberTalk> query = Wrappers.lambdaQuery(AiMemberTalk.class); |
| | | query.eq(AiMemberTalk::getMemberId,memberUuid); |
| | |
| | | query.last("limit 1"); |
| | | AiMemberTalk aiMemberTalk = aiMemberTalkService.getByQuery(query); |
| | | if (ObjectUtil.isNull(aiMemberTalk)){ |
| | | aiMemberTalk = aiMemberTalkService.add(memberUuid,productId,nowTime); |
| | | aiMemberTalk = aiMemberTalkService.add(memberUuid,companyId,productId,nowTime); |
| | | } |
| | | |
| | | ApiMemberTalkStreamVo apiMemberTalkVo = new ApiMemberTalkStreamVo(); |
| | |
| | | AiProductQuestion question = aiProductQuestionService.createQuestion(productId); |
| | | if (ObjectUtil.isNotNull(question)){ |
| | | title = question.getTitle(); |
| | | AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(), 1, title, nowTime); |
| | | AiMemberTalkItem aiMemberTalkItem = aiMemberTalkItemService.add(memberUuid, aiMemberTalk.getId(),companyId, 1, title, nowTime); |
| | | apiMemberTalkVo.setMemberTalkItemId(aiMemberTalkItem.getId()); |
| | | aiMemberTalkService.updateTimeUpdate(nowTime,aiMemberTalk.getId()); |
| | | } |
| | |
| | | if (ObjectUtil.isNull(aiMemberTalk)){ |
| | | throw new FebsException("对话不存在"); |
| | | } |
| | | aiMemberTalkItemService.add(memberUuid,aiMemberTalk.getId(),2,content,new Date()); |
| | | String companyId = aiMemberTalk.getCompanyId(); |
| | | aiMemberTalkItemService.add(memberUuid,aiMemberTalk.getId(),companyId,2,content,new Date()); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | |
| | | if (ObjectUtil.isNull(aiMemberTalk)){ |
| | | throw new FebsException("对话不存在"); |
| | | } |
| | | String companyId = aiMemberTalk.getCompanyId(); |
| | | Integer type = dto.getType(); |
| | | String memberTalkItemId; |
| | | String contentByCode = AiTalkOutputEnum.HIGH_LIGHT.getCodeByType(type); |
| | | if(StrUtil.isEmpty(dto.getMemberTalkItemId())){ |
| | | HashMap<String, String> stringStringHashMap = new HashMap<>(); |
| | | stringStringHashMap.put(contentByCode,content); |
| | | AiMemberTalkItem add = aiMemberTalkItemService.add(memberUuid, memberTalkId, 3, JSONUtil.toJsonStr(stringStringHashMap), new Date()); |
| | | AiMemberTalkItem add = aiMemberTalkItemService.add(memberUuid, memberTalkId,companyId, 3, JSONUtil.toJsonStr(stringStringHashMap), new Date()); |
| | | memberTalkItemId = add.getId(); |
| | | }else{ |
| | | memberTalkItemId = dto.getMemberTalkItemId(); |
| | |
| | | */ |
| | | private String name; |
| | | |
| | | private String companyId; |
| | | |
| | | /** |
| | | * 手机号 |
| | | */ |
| | |
| | | mallMember = this.baseMapper.selectMemberByOpenId(openId); |
| | | String inviteId = ShareCodeUtil.toSerialCode(mallMember.getId()); |
| | | mallMember.setMemberUuid(aiMember.getId()); |
| | | if (StrUtil.isNotEmpty(aiMember.getCompanyId())){ |
| | | mallMember.setCompanyId(aiMember.getCompanyId()); |
| | | } |
| | | mallMember.setInviteId(inviteId); |
| | | this.baseMapper.updateById(mallMember); |
| | | MallMemberWallet wallet = new MallMemberWallet(); |
| | |
| | | if(ObjectUtil.isNotEmpty(apiXcxSaveInfoDto.getGender())){ |
| | | mallMember.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男"); |
| | | } |
| | | |
| | | if(ObjectUtil.isNotEmpty(apiXcxSaveInfoDto.getCompanyId())){ |
| | | mallMember.setCompanyId(apiXcxSaveInfoDto.getCompanyId()); |
| | | } |
| | | this.baseMapper.updateById(mallMember); |
| | | |
| | | String memberUuid = mallMember.getMemberUuid(); |
| | |
| | | @ApiModelProperty(value = "昵称") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "公司ID") |
| | | private String companyId; |
| | | |
| | | @ApiModelProperty(value = "手机号") |
| | | private String phone; |
| | | |