Commit 9da0d28a authored by Roger Wu's avatar Roger Wu

Merge branch 'release' of ssh://gitlab.gsstcloud.com:10022/poc/poc-api into release

parents af30a519 b24e3e65
...@@ -4,8 +4,14 @@ package cn.com.poc.agent_application.aggregate; ...@@ -4,8 +4,14 @@ package cn.com.poc.agent_application.aggregate;
public interface AgentApplicationMallService { public interface AgentApplicationMallService {
/** /**
* 收藏/取消收藏应用广场中的应用 * 收藏/取消收藏应用广场中的应用
* */
* */
void collectOrCancelAgentInMall(Integer id) throws Exception; void collectOrCancelAgentInMall(Integer id) throws Exception;
/**
* 添加浏览量
*
* @param agentPublishId 应用广场发布id
*/
void addClickNumber(Integer agentPublishId) throws Exception;
} }
package cn.com.poc.agent_application.aggregate.impl; package cn.com.poc.agent_application.aggregate.impl;
import cn.com.poc.agent_application.aggregate.AgentApplicationMallService; import cn.com.poc.agent_application.aggregate.AgentApplicationMallService;
import cn.com.poc.agent_application.convert.BizAgentApplicationMallConvert;
import cn.com.poc.agent_application.dto.BizAgentApplicationMallDto;
import cn.com.poc.agent_application.entity.BizAgentApplicationMallEntity; import cn.com.poc.agent_application.entity.BizAgentApplicationMallEntity;
import cn.com.poc.agent_application.entity.BizAgentApplicationPublishEntity; import cn.com.poc.agent_application.entity.BizAgentApplicationPublishEntity;
import cn.com.poc.agent_application.entity.BizMemberAgentApplicationCollectEntity; import cn.com.poc.agent_application.entity.BizMemberAgentApplicationCollectEntity;
...@@ -85,4 +83,14 @@ public class AgentApplicationMallServiceImpl implements AgentApplicationMallServ ...@@ -85,4 +83,14 @@ public class AgentApplicationMallServiceImpl implements AgentApplicationMallServ
} }
bizAgentApplicationMallService.update(mallEntity); bizAgentApplicationMallService.update(mallEntity);
} }
@Override
public void addClickNumber(Integer agentPublishId) throws Exception {
BizAgentApplicationMallEntity mallEntity = bizAgentApplicationMallService.getByAgentPublishId(agentPublishId);
if (mallEntity == null) {
return;
}
mallEntity.setClickNumber(mallEntity.getClickNumber() + 1);
bizAgentApplicationMallService.update(mallEntity);
}
} }
...@@ -119,8 +119,8 @@ public class BizAgentApplicationMallConvert { ...@@ -119,8 +119,8 @@ public class BizAgentApplicationMallConvert {
BizAgentApplicationPublishService agentApplicationPublishService = SpringUtils.getBean(BizAgentApplicationPublishServiceImpl.class); BizAgentApplicationPublishService agentApplicationPublishService = SpringUtils.getBean(BizAgentApplicationPublishServiceImpl.class);
BizAgentApplicationPublishEntity publishEntity = agentApplicationPublishService.get(item.getAgentPublishId()); BizAgentApplicationPublishEntity publishEntity = agentApplicationPublishService.get(item.getAgentPublishId());
AgentApplicationBaseInfo baseInfo = new AgentApplicationBaseInfo();
if (publishEntity != null) { if (publishEntity != null) {
AgentApplicationBaseInfo baseInfo = new AgentApplicationBaseInfo();
baseInfo.setMemberId(publishEntity.getMemberId()); baseInfo.setMemberId(publishEntity.getMemberId());
baseInfo.setAgentId(publishEntity.getAgentId()); baseInfo.setAgentId(publishEntity.getAgentId());
baseInfo.setAgentTitle(publishEntity.getAgentTitle()); baseInfo.setAgentTitle(publishEntity.getAgentTitle());
...@@ -129,10 +129,8 @@ public class BizAgentApplicationMallConvert { ...@@ -129,10 +129,8 @@ public class BizAgentApplicationMallConvert {
baseInfo.setAgentSystem(publishEntity.getAgentSystem()); baseInfo.setAgentSystem(publishEntity.getAgentSystem());
baseInfo.setAgentPublishStatus(publishEntity.getAgentPublishStatus()); baseInfo.setAgentPublishStatus(publishEntity.getAgentPublishStatus());
baseInfo.setPublishTime(publishEntity.getPublishTime()); baseInfo.setPublishTime(publishEntity.getPublishTime());
}
AgentApplicationCommConfig commConfig = new AgentApplicationCommConfig(); AgentApplicationCommConfig commConfig = new AgentApplicationCommConfig();
if (publishEntity != null) {
commConfig.setPreamble(publishEntity.getPreamble()); commConfig.setPreamble(publishEntity.getPreamble());
commConfig.setFeaturedQuestions(publishEntity.getFeaturedQuestions()); commConfig.setFeaturedQuestions(publishEntity.getFeaturedQuestions());
commConfig.setContinuousQuestionStatus(publishEntity.getContinuousQuestionStatus()); commConfig.setContinuousQuestionStatus(publishEntity.getContinuousQuestionStatus());
...@@ -140,32 +138,26 @@ public class BizAgentApplicationMallConvert { ...@@ -140,32 +138,26 @@ public class BizAgentApplicationMallConvert {
commConfig.setContinuousQuestionTurn(publishEntity.getContinuousQuestionTurn()); commConfig.setContinuousQuestionTurn(publishEntity.getContinuousQuestionTurn());
commConfig.setVariableStructure(publishEntity.getVariableStructure()); commConfig.setVariableStructure(publishEntity.getVariableStructure());
commConfig.setIsLongMemory(publishEntity.getIsLongMemory()); commConfig.setIsLongMemory(publishEntity.getIsLongMemory());
}
AgentApplicationKnowledgeConfig knowledgeConfig = new AgentApplicationKnowledgeConfig(); AgentApplicationKnowledgeConfig knowledgeConfig = new AgentApplicationKnowledgeConfig();
if (publishEntity != null) {
knowledgeConfig.setKnowledgeIds(publishEntity.getKnowledgeIds()); knowledgeConfig.setKnowledgeIds(publishEntity.getKnowledgeIds());
}
AgentApplicationCommModelConfig commModelConfig = new AgentApplicationCommModelConfig(); AgentApplicationCommModelConfig commModelConfig = new AgentApplicationCommModelConfig();
if (publishEntity != null) {
commModelConfig.setLargeModel(publishEntity.getLargeModel()); commModelConfig.setLargeModel(publishEntity.getLargeModel());
commModelConfig.setTopP(publishEntity.getTopP()); commModelConfig.setTopP(publishEntity.getTopP());
commModelConfig.setCommunicationTurn(publishEntity.getCommunicationTurn()); commModelConfig.setCommunicationTurn(publishEntity.getCommunicationTurn());
}
dto.setId(item.getId()); dto.setUnitIds(publishEntity.getUnitIds());
dto.setAgentType(item.getAgentType());
dto.setCollectNumber(item.getCollectNumber());
dto.setClickNumber(item.getClickNumber());
dto.setBaseInfo(baseInfo); dto.setBaseInfo(baseInfo);
dto.setCommConfig(commConfig); dto.setCommConfig(commConfig);
dto.setKnowledgeConfig(knowledgeConfig); dto.setKnowledgeConfig(knowledgeConfig);
dto.setCommModelConfig(commModelConfig); dto.setCommModelConfig(commModelConfig);
if (publishEntity != null) {
dto.setUnitIds(publishEntity.getUnitIds());
} }
dto.setId(item.getId());
dto.setAgentType(item.getAgentType());
dto.setCollectNumber(item.getCollectNumber());
dto.setClickNumber(item.getClickNumber());
dto.setIsCopy(item.getIsCopy()); dto.setIsCopy(item.getIsCopy());
dto.setIsSale(item.getIsSale()); dto.setIsSale(item.getIsSale());
dto.setPopularity(item.getPopularity()); dto.setPopularity(item.getPopularity());
......
select baap.member_id as member_id, select distinct baap.member_id as member_id,
baap.agent_id as agent_id, baap.agent_id as agent_id,
baap.agent_title as agent_title, baap.agent_title as agent_title,
baap.agent_desc as agent_desc, baap.agent_desc as agent_desc,
baap.agent_avatar as agent_avatar baap.agent_avatar as agent_avatar
from biz_member_agent_application_collect bmaac from biz_member_agent_application_collect bmaac
left join biz_agent_application_publish baap on baap.agent_id = bmaac.agent_id and baap.is_deleted = 'N' left join biz_agent_application_publish baap on baap.agent_id = bmaac.agent_id
where bmaac.is_deleted = 'N' <<and bmaac.is_collect = :isCollect>> where baap.is_deleted = 'N'
and bmaac.is_deleted = 'N'
<<and bmaac.is_collect = :isCollect>>
<<and bmaac.member_id = :memberId>> <<and bmaac.member_id = :memberId>>
order by baap.created_time desc order by baap.created_time desc
\ No newline at end of file
...@@ -7,6 +7,7 @@ import cn.com.poc.agent_application.entity.*; ...@@ -7,6 +7,7 @@ import cn.com.poc.agent_application.entity.*;
import cn.com.poc.agent_application.query.AgentApplicationInfoQueryCondition; import cn.com.poc.agent_application.query.AgentApplicationInfoQueryCondition;
import cn.com.poc.agent_application.rest.AgentApplicationInfoRest; import cn.com.poc.agent_application.rest.AgentApplicationInfoRest;
import cn.com.poc.agent_application.service.*; import cn.com.poc.agent_application.service.*;
import cn.com.poc.common.annotation.RedisLimit;
import cn.com.poc.common.constant.CommonConstant; import cn.com.poc.common.constant.CommonConstant;
import cn.com.poc.common.service.RedisService; import cn.com.poc.common.service.RedisService;
import cn.com.poc.common.utils.BlContext; import cn.com.poc.common.utils.BlContext;
...@@ -347,6 +348,7 @@ public class AgentApplicationInfoRestImpl implements AgentApplicationInfoRest { ...@@ -347,6 +348,7 @@ public class AgentApplicationInfoRestImpl implements AgentApplicationInfoRest {
} }
@Override @Override
@RedisLimit(key = "collect:agent_person", currentUser = true, count = 1, timeout = 1, exceptionInfo = "exception/too.many.requests")
public void collectOrCancelAgentInPerson(String agentId) throws Exception { public void collectOrCancelAgentInPerson(String agentId) throws Exception {
Assert.notNull(agentId); Assert.notNull(agentId);
agentApplicationInfoService.collectOrCancelAgentInPerson(agentId); agentApplicationInfoService.collectOrCancelAgentInPerson(agentId);
...@@ -359,6 +361,9 @@ public class AgentApplicationInfoRestImpl implements AgentApplicationInfoRest { ...@@ -359,6 +361,9 @@ public class AgentApplicationInfoRestImpl implements AgentApplicationInfoRest {
if (MapUtils.isEmpty(map)) { if (MapUtils.isEmpty(map)) {
BizAgentApplicationInfoEntity infoEntity = bizAgentApplicationInfoService.getByAgentId(agentId); BizAgentApplicationInfoEntity infoEntity = bizAgentApplicationInfoService.getByAgentId(agentId);
List<Variable> variableStructure = infoEntity.getVariableStructure(); List<Variable> variableStructure = infoEntity.getVariableStructure();
if (CollectionUtils.isEmpty(variableStructure)) {
return result;
}
for (Variable variable : variableStructure) { for (Variable variable : variableStructure) {
AgentApplicationValueMemoryDto valueMemoryDto = new AgentApplicationValueMemoryDto(); AgentApplicationValueMemoryDto valueMemoryDto = new AgentApplicationValueMemoryDto();
valueMemoryDto.setKey(variable.getKey()); valueMemoryDto.setKey(variable.getKey());
......
...@@ -11,13 +11,17 @@ import cn.com.poc.agent_application.entity.BizAgentApplicationPublishEntity; ...@@ -11,13 +11,17 @@ import cn.com.poc.agent_application.entity.BizAgentApplicationPublishEntity;
import cn.com.poc.agent_application.entity.BizMemberAgentApplicationCollectEntity; import cn.com.poc.agent_application.entity.BizMemberAgentApplicationCollectEntity;
import cn.com.poc.agent_application.query.MallAgentApplicationQueryCondition; import cn.com.poc.agent_application.query.MallAgentApplicationQueryCondition;
import cn.com.poc.agent_application.query.MallAgentApplicationQueryItem; import cn.com.poc.agent_application.query.MallAgentApplicationQueryItem;
import cn.com.poc.agent_application.query.MemberCollectQueryCondition;
import cn.com.poc.agent_application.query.MemberCollectQueryItem;
import cn.com.poc.agent_application.rest.BizAgentApplicationMallRest; import cn.com.poc.agent_application.rest.BizAgentApplicationMallRest;
import cn.com.poc.agent_application.service.BizAgentApplicationCategoryService; import cn.com.poc.agent_application.service.BizAgentApplicationCategoryService;
import cn.com.poc.agent_application.service.BizAgentApplicationMallService; import cn.com.poc.agent_application.service.BizAgentApplicationMallService;
import cn.com.poc.agent_application.service.BizAgentApplicationPublishService; import cn.com.poc.agent_application.service.BizAgentApplicationPublishService;
import cn.com.poc.agent_application.service.BizMemberAgentApplicationCollectService; import cn.com.poc.agent_application.service.BizMemberAgentApplicationCollectService;
import cn.com.poc.common.annotation.RedisLimit;
import cn.com.poc.common.constant.CommonConstant; import cn.com.poc.common.constant.CommonConstant;
import cn.com.poc.common.constant.XLangConstant; import cn.com.poc.common.constant.XLangConstant;
import cn.com.poc.common.utils.BlContext;
import cn.com.poc.common.utils.StringUtils; import cn.com.poc.common.utils.StringUtils;
import cn.com.yict.framemax.core.i18n.I18nMessageException; import cn.com.yict.framemax.core.i18n.I18nMessageException;
import cn.com.yict.framemax.data.model.PagingInfo; import cn.com.yict.framemax.data.model.PagingInfo;
...@@ -28,6 +32,7 @@ import javax.annotation.Resource; ...@@ -28,6 +32,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
@Component @Component
public class BizAgentApplicationMallRestImpl implements BizAgentApplicationMallRest { public class BizAgentApplicationMallRestImpl implements BizAgentApplicationMallRest {
...@@ -111,20 +116,18 @@ public class BizAgentApplicationMallRestImpl implements BizAgentApplicationMallR ...@@ -111,20 +116,18 @@ public class BizAgentApplicationMallRestImpl implements BizAgentApplicationMallR
} }
} }
List<MallAgentApplicationQueryItem> items = bizAgentApplicationMallService.mallAgentApplicationQuery(mallAgentApplicationQueryCondition, pagingInfo); List<MallAgentApplicationQueryItem> items = bizAgentApplicationMallService.mallAgentApplicationQuery(mallAgentApplicationQueryCondition, pagingInfo);
MemberCollectQueryCondition collectQueryCondition = new MemberCollectQueryCondition();
collectQueryCondition.setMemberId(BlContext.getCurrentUserNotException().getUserId());
collectQueryCondition.setIsCollect(CommonConstant.YOrN.Y);
List<MemberCollectQueryItem> memberCollectQueryItems = bizMemberAgentApplicationCollectService.queryMemberCollect(collectQueryCondition, null);
for (MallAgentApplicationQueryItem item : items) { for (MallAgentApplicationQueryItem item : items) {
BizAgentApplicationMallDto mallDto = BizAgentApplicationMallConvert.itemToDto(item); BizAgentApplicationMallDto mallDto = BizAgentApplicationMallConvert.itemToDto(item);
// 如果应用上架了 // 如果应用上架了
if (CommonConstant.IsDeleted.Y.equals(mallDto.getIsSale())) { if (mallDto.getBaseInfo() != null && CommonConstant.YOrN.Y.equals(mallDto.getIsSale())) {
// 设置当前用户是否收藏了 // 设置当前用户是否收藏了
if (mallDto.getBaseInfo() != null) { String agentId = mallDto.getBaseInfo().getAgentId();
BizMemberAgentApplicationCollectEntity collect = bizMemberAgentApplicationCollectService.getByAgentId(mallDto.getBaseInfo().getAgentId()); mallDto.setIsCollect(memberCollectQueryItems.stream().anyMatch(v -> agentId.equals(v.getAgentId())) ? CommonConstant.YOrN.Y : CommonConstant.YOrN.N);
if (collect != null) {
mallDto.setIsCollect(collect.getIsCollect());
} else {
mallDto.setIsCollect(CommonConstant.IsDeleted.N);
}
}
resultList.add(mallDto); resultList.add(mallDto);
} }
} }
...@@ -143,6 +146,7 @@ public class BizAgentApplicationMallRestImpl implements BizAgentApplicationMallR ...@@ -143,6 +146,7 @@ public class BizAgentApplicationMallRestImpl implements BizAgentApplicationMallR
} }
@Override @Override
@RedisLimit(currentUser = true, key = "collect:agent", count = 1, timeout = 1, exceptionInfo = "exception/collect.limit.message")
public void collectOrCancelAgentInMall(Integer id) throws Exception { public void collectOrCancelAgentInMall(Integer id) throws Exception {
Assert.notNull(id); Assert.notNull(id);
agentApplicationMallService.collectOrCancelAgentInMall(id); agentApplicationMallService.collectOrCancelAgentInMall(id);
......
...@@ -109,6 +109,9 @@ public class BizAgentApplicationMallServiceImpl extends BaseServiceImpl ...@@ -109,6 +109,9 @@ public class BizAgentApplicationMallServiceImpl extends BaseServiceImpl
if (entity.getIsSale() != null) { if (entity.getIsSale() != null) {
model.setIsSale(entity.getIsSale()); model.setIsSale(entity.getIsSale());
} }
if (entity.getCategoryId() != null) {
model.setCategoryId(entity.getCategoryId());
}
if (entity.getPopularity() != null) { if (entity.getPopularity() != null) {
model.setPopularity(entity.getPopularity()); model.setPopularity(entity.getPopularity());
} }
......
package cn.com.poc.common.annotation;
import org.springframework.stereotype.Component;
import java.lang.annotation.*;
/**
* @author Ken
*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface CurrentUserRolePermission {
String[] permissionCodeArr();
String prompt() default "无权限,请联系管理员";
}
package cn.com.poc.common.annotation;
import org.springframework.stereotype.Component;
import java.lang.annotation.*;
/**
* 限流
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Component
@Documented
public @interface RedisLimit {
/**
* 限流key
*/
String key();
/**
* 限流数量 [单位时间内次数]
*/
int count();
/**
* 限流时间 默认60秒
*/
long timeout() default 60;
/**
* 限流时间单位 [默认秒]
*/
LimitTimeUnit timeUnit() default LimitTimeUnit.SECONDS;
/**
* 是否针对当前用户
*
* @return
*/
boolean currentUser() default false;
/**
* 异常信息
*/
String exceptionInfo() default "";
enum LimitTimeUnit {
/**
* 秒
*/
SECONDS,
/**
* 分钟
*/
MINUTES,
/**
* 小时
*/
HOURS,
/**
* 天
*/
DAYS,
/**
* 当日
*/
DAY_OF_MONTH,
/**
* 当月
*/
MONTH_OF_YEAR;
LimitTimeUnit(){}
}
}
package cn.com.poc.common.aspect;
import cn.com.poc.common.annotation.RedisLimit;
import cn.com.poc.common.utils.BlContext;
import cn.com.poc.common.utils.DateUtils;
import cn.com.poc.support.security.oauth.entity.UserBaseEntity;
import cn.com.yict.framemax.core.exception.BusinessException;
import cn.com.yict.framemax.core.i18n.I18nMessageException;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
* 限流切面
*/
@Aspect
@Component
public class RedisLimitAspect {
private final Logger logger = LoggerFactory.getLogger(RedisLimitAspect.class);
@Resource
private RedisTemplate<String, Integer> redisTemplate;
@Pointcut("@annotation( cn.com.poc.common.annotation.RedisLimit)")
public void redisLimitAnnotation() {
}
@Around(value = "redisLimitAnnotation()")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
RedisLimit annotation = method.getAnnotation(RedisLimit.class);
StringBuilder redisKey = new StringBuilder();
String key = annotation.key();
redisKey.append("Limit_");
redisKey.append(key);
redisKey.append(":");
if (annotation.currentUser()) {
UserBaseEntity currentUser = BlContext.getCurrentUserNotException();
redisKey.append(currentUser.getUserId());
}
if (Boolean.FALSE.equals(redisTemplate.hasKey(redisKey.toString()))) {
redisTemplate.opsForValue().increment(redisKey.toString(), 1);
redisTemplate.expire(redisKey.toString(), expireTime(annotation.timeout(), annotation.timeUnit()), TimeUnit.MILLISECONDS);
} else if (redisTemplate.opsForValue().get(redisKey.toString()).intValue() >= annotation.count()) {
throw new I18nMessageException(annotation.exceptionInfo());
} else {
redisTemplate.opsForValue().increment(redisKey.toString(), 1);
}
return joinPoint.proceed();
}
private Long expireTime(Long timeout, RedisLimit.LimitTimeUnit limitTimeUnit) {
switch (limitTimeUnit) {
case SECONDS:
return timeout * 1000;
case MINUTES:
return timeout * 60 * 1000;
case HOURS:
return timeout * 60 * 60 * 1000;
case DAYS:
Date date = new Date();
return DateUtils.diffTwoDate(DateUtils.addDays(date, timeout.intValue()), date);
case DAY_OF_MONTH:
Date dayBegin = DateUtils.getDayBegin(DateUtils.addDays(DateUtils.getToday(), timeout.intValue()));
return DateUtils.diffTwoDate(dayBegin, DateUtils.getToday());
case MONTH_OF_YEAR:
Date monthBegin = DateUtils.getMonthBegin(DateUtils.getMonthAfter(DateUtils.getToday(), timeout.intValue()));
return DateUtils.diffTwoDate(monthBegin, DateUtils.getToday());
default:
throw new BusinessException("不支持的单位");
}
}
}
...@@ -31,7 +31,7 @@ public interface AgentApplicationRest extends BaseRest { ...@@ -31,7 +31,7 @@ public interface AgentApplicationRest extends BaseRest {
/** /**
* 创建对话 * 创建对话
*/ */
String createDialogues() throws Exception; String createDialogues(@RequestParam(required = false) String agentId) throws Exception;
/** /**
* 调用 已发布Agent应用 * 调用 已发布Agent应用
......
package cn.com.poc.expose.rest.impl; package cn.com.poc.expose.rest.impl;
import cn.com.poc.agent_application.aggregate.AgentApplicationInfoService; import cn.com.poc.agent_application.aggregate.AgentApplicationInfoService;
import cn.com.poc.agent_application.aggregate.AgentApplicationMallService;
import cn.com.poc.agent_application.convert.AgentApplicationInfoConvert; import cn.com.poc.agent_application.convert.AgentApplicationInfoConvert;
import cn.com.poc.agent_application.convert.BizAgentApplicationPublishConvert; import cn.com.poc.agent_application.convert.BizAgentApplicationPublishConvert;
import cn.com.poc.agent_application.dto.AgentApplicationCreateContinueQuesDto; import cn.com.poc.agent_application.dto.AgentApplicationCreateContinueQuesDto;
...@@ -19,10 +20,14 @@ import cn.com.poc.common.utils.UUIDTool; ...@@ -19,10 +20,14 @@ import cn.com.poc.common.utils.UUIDTool;
import cn.com.poc.expose.aggregate.AgentApplicationService; import cn.com.poc.expose.aggregate.AgentApplicationService;
import cn.com.poc.expose.dto.*; import cn.com.poc.expose.dto.*;
import cn.com.poc.expose.rest.AgentApplicationRest; import cn.com.poc.expose.rest.AgentApplicationRest;
import cn.com.poc.message.entity.AgentApplicationClickEventMessage;
import cn.com.poc.message.service.AgentApplicationProducerService;
import cn.com.poc.support.security.oauth.entity.UserBaseEntity; import cn.com.poc.support.security.oauth.entity.UserBaseEntity;
import cn.com.yict.framemax.core.i18n.I18nMessageException; import cn.com.yict.framemax.core.i18n.I18nMessageException;
import cn.com.yict.framemax.data.model.PagingInfo; import cn.com.yict.framemax.data.model.PagingInfo;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -37,6 +42,7 @@ import java.util.stream.Collectors; ...@@ -37,6 +42,7 @@ import java.util.stream.Collectors;
@Component @Component
public class AgentApplicationRestImpl implements AgentApplicationRest { public class AgentApplicationRestImpl implements AgentApplicationRest {
private Logger logger = LoggerFactory.getLogger(AgentApplicationRest.class);
@Resource @Resource
private AgentApplicationService agentApplicationService; private AgentApplicationService agentApplicationService;
...@@ -50,6 +56,9 @@ public class AgentApplicationRestImpl implements AgentApplicationRest { ...@@ -50,6 +56,9 @@ public class AgentApplicationRestImpl implements AgentApplicationRest {
@Resource @Resource
private BizAgentApplicationDialoguesRecordService bizAgentApplicationDialoguesRecordService; private BizAgentApplicationDialoguesRecordService bizAgentApplicationDialoguesRecordService;
@Resource
private AgentApplicationProducerService agentApplicationProducerService;
@Override @Override
public List<String> getRecommendQuestions(HttpServletRequest httpServletRequest) throws Exception { public List<String> getRecommendQuestions(HttpServletRequest httpServletRequest) throws Exception {
return agentApplicationService.getRecommendQuestions(httpServletRequest.getHeader("x-lang")); return agentApplicationService.getRecommendQuestions(httpServletRequest.getHeader("x-lang"));
...@@ -78,7 +87,12 @@ public class AgentApplicationRestImpl implements AgentApplicationRest { ...@@ -78,7 +87,12 @@ public class AgentApplicationRestImpl implements AgentApplicationRest {
} }
@Override @Override
public String createDialogues() { public String createDialogues(String agentId) {
if (StringUtils.isNotBlank(agentId)) {
AgentApplicationClickEventMessage agentApplicationClickEventMessage = new AgentApplicationClickEventMessage();
agentApplicationClickEventMessage.setAgentId(agentId);
agentApplicationProducerService.clickEvent(agentApplicationClickEventMessage);
}
return "DIA_" + UUIDTool.getUUID(); return "DIA_" + UUIDTool.getUUID();
} }
......
package cn.com.poc.message.entity;
import java.io.Serializable;
public class AgentApplicationClickEventMessage implements Serializable {
private String agentId;
public String getAgentId() {
return agentId;
}
public void setAgentId(String agentId) {
this.agentId = agentId;
}
}
package cn.com.poc.message.service;
import cn.com.poc.message.entity.AgentApplicationClickEventMessage;
import cn.com.yict.framemax.core.service.BaseService;
public interface AgentApplicationConsumerService extends BaseService {
void clickEvent(AgentApplicationClickEventMessage message) throws Exception;
}
package cn.com.poc.message.service;
import cn.com.poc.message.entity.AgentApplicationClickEventMessage;
import cn.com.yict.framemax.core.service.BaseService;
public interface AgentApplicationProducerService extends BaseService {
AgentApplicationClickEventMessage clickEvent(AgentApplicationClickEventMessage message);
}
package cn.com.poc.message.service.impl;
import cn.com.poc.agent_application.aggregate.AgentApplicationMallService;
import cn.com.poc.agent_application.entity.BizAgentApplicationPublishEntity;
import cn.com.poc.agent_application.service.BizAgentApplicationDialoguesRecordService;
import cn.com.poc.agent_application.service.BizAgentApplicationPublishService;
import cn.com.poc.message.entity.AgentApplicationClickEventMessage;
import cn.com.poc.message.service.AgentApplicationConsumerService;
import cn.com.poc.message.topic.AgentApplicationTopic;
import cn.com.yict.framemax.core.service.BaseService;
import cn.com.yict.framemax.tumbleweed.client.annotation.Consumer;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class AgentApplicationConsumerServiceImpl implements AgentApplicationConsumerService {
@Resource
private BizAgentApplicationPublishService bizAgentApplicationPublishService;
@Resource
private AgentApplicationMallService agentApplicationMallService;
@Override
@Consumer(topic = AgentApplicationTopic.AGENT_APPLICATION_CLICK_EVENT, retry = true)
public void clickEvent(AgentApplicationClickEventMessage message) throws Exception {
BizAgentApplicationPublishEntity agentApplicationPublishEntity = bizAgentApplicationPublishService.getByAgentId(message.getAgentId());
if (agentApplicationPublishEntity != null) {
Integer publishId = agentApplicationPublishEntity.getId();
agentApplicationMallService.addClickNumber(publishId);
}
}
}
package cn.com.poc.message.service.impl;
import cn.com.poc.message.entity.AgentApplicationClickEventMessage;
import cn.com.poc.message.service.AgentApplicationProducerService;
import cn.com.poc.message.topic.AgentApplicationTopic;
import cn.com.yict.framemax.core.service.BaseService;
import cn.com.yict.framemax.tumbleweed.client.annotation.Producer;
import org.springframework.stereotype.Service;
@Service
public class AgentApplicationProducerServiceImpl implements AgentApplicationProducerService {
@Override
@Producer(topic = AgentApplicationTopic.AGENT_APPLICATION_CLICK_EVENT)
public AgentApplicationClickEventMessage clickEvent(AgentApplicationClickEventMessage message) {
return message;
}
}
package cn.com.poc.message.topic;
public interface AgentApplicationTopic {
/**
* Agent application click event.
*/
String AGENT_APPLICATION_CLICK_EVENT = "agent_application_click_event";
}
...@@ -2,6 +2,8 @@ package cn.com.poc.user.dto; ...@@ -2,6 +2,8 @@ package cn.com.poc.user.dto;
import cn.com.yict.framemax.data.model.BaseModelClass; import cn.com.yict.framemax.data.model.BaseModelClass;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.Date; import java.util.Date;
......
...@@ -8,7 +8,9 @@ import cn.com.poc.user.dto.MemberPasswordRequestDto; ...@@ -8,7 +8,9 @@ import cn.com.poc.user.dto.MemberPasswordRequestDto;
import cn.com.yict.framemax.core.rest.BaseRest; import cn.com.yict.framemax.core.rest.BaseRest;
import cn.com.yict.framemax.web.permission.Access; import cn.com.yict.framemax.web.permission.Access;
import cn.com.yict.framemax.web.permission.Permission; import cn.com.yict.framemax.web.permission.Permission;
import org.springframework.security.core.parameters.P;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@Permission(Access.Safety) @Permission(Access.Safety)
public interface BizMemberInfoRest extends BaseRest { public interface BizMemberInfoRest extends BaseRest {
...@@ -41,4 +43,10 @@ public interface BizMemberInfoRest extends BaseRest { ...@@ -41,4 +43,10 @@ public interface BizMemberInfoRest extends BaseRest {
* @return * @return
*/ */
MemberInfoDto getCurrentMemberInfo() throws Exception; MemberInfoDto getCurrentMemberInfo() throws Exception;
/**
* 获取用户昵称
*/
@Permission(Access.Anonymous)
MemberInfoDto getMemberNickName(@RequestParam Long memberId) throws Exception;
} }
\ No newline at end of file
...@@ -14,6 +14,7 @@ import cn.com.poc.user.aggregation.MemberInfoService; ...@@ -14,6 +14,7 @@ import cn.com.poc.user.aggregation.MemberInfoService;
import cn.com.poc.user.builder.LoginChannelBuilder; import cn.com.poc.user.builder.LoginChannelBuilder;
import cn.com.poc.user.entity.MemberInfoEntity; import cn.com.poc.user.entity.MemberInfoEntity;
import cn.com.poc.user.service.BizMemberInfoService; import cn.com.poc.user.service.BizMemberInfoService;
import cn.com.yict.framemax.core.i18n.I18nMessageException;
import cn.com.yict.framemax.security.oauth.OauthAccesstokenManager; import cn.com.yict.framemax.security.oauth.OauthAccesstokenManager;
import cn.com.yict.framemax.security.oauth.entity.OauthResultEntity; import cn.com.yict.framemax.security.oauth.entity.OauthResultEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -111,4 +112,16 @@ public class BizMemberInfoRestImpl implements BizMemberInfoRest { ...@@ -111,4 +112,16 @@ public class BizMemberInfoRestImpl implements BizMemberInfoRest {
return MemberInfoConvert.converEntity2Dto(memberInfoEntity); return MemberInfoConvert.converEntity2Dto(memberInfoEntity);
} }
@Override
public MemberInfoDto getMemberNickName(Long memberId) throws Exception {
MemberInfoEntity memberInfoEntity = bizMemberInfoService.getById(memberId.intValue());
if (memberInfoEntity == null) {
throw new I18nMessageException("exception/user.does.not.exist");
}
MemberInfoDto memberInfoDto = new MemberInfoDto();
memberInfoDto.setNickName(memberInfoEntity.getNickName());
memberInfoDto.setAvatarUrl(memberInfoEntity.getAvatarUrl());
return memberInfoDto;
}
} }
\ No newline at end of file
...@@ -58,7 +58,7 @@ failed.to.obtain.token=Failed to obtain token ...@@ -58,7 +58,7 @@ failed.to.obtain.token=Failed to obtain token
re-verify.the.user.identity=Please re verify the user's identity re-verify.the.user.identity=Please re verify the user's identity
user.cannot.be.found=The user cannot be found user.cannot.be.found=The user cannot be found
verification.code.is.incorrect.please.re-enter=The verification code is incorrect, please re-enter verification.code.is.incorrect.please.re-enter=The verification code is incorrect, please re-enter
user.does.not.exist=The login user does not exist user.does.not.exist=User does not exist
password.error.please.re-enter=Password error, please re-enter password.error.please.re-enter=Password error, please re-enter
unable.find.user.association.relationship=Unable to find user's association relationship unable.find.user.association.relationship=Unable to find user's association relationship
account.has.already=This account has already been registered, please replace it account.has.already=This account has already been registered, please replace it
...@@ -68,3 +68,4 @@ model.not.exist=Model not exist ...@@ -68,3 +68,4 @@ model.not.exist=Model not exist
upload.more.than.10m=The uploaded file cannot exceed 10M file name upload.more.than.10m=The uploaded file cannot exceed 10M file name
error.file.content.is.null=Incorrect file, file contents cannot be empty, file name error.file.content.is.null=Incorrect file, file contents cannot be empty, file name
file.content.more.than.100w=The number of characters in a file cannot exceed 100w file.content.more.than.100w=The number of characters in a file cannot exceed 100w
collect.limit.message=Click too fast, do not repeat the operation
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment