Commit e1b475e8 by 裴大威

Merge branch 'opti-getSkillDetail' into 'master'

optimize getSkillDetail

See merge request rays/pcloud-book!545
parents a8c4f034 76caf5f5
......@@ -88,6 +88,8 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
/**
......@@ -154,6 +156,8 @@ public class SelfRobotKeywordBizImpl implements SelfRobotKeywordBiz {
@Autowired
private PcloudSkillRecordDao pcloudSkillRecordDao;
private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(5);
@Transactional(rollbackFor = Exception.class)
......@@ -686,49 +690,53 @@ public class SelfRobotKeywordBizImpl implements SelfRobotKeywordBiz {
}
}
//新增技能获取记录
PcloudSkillRecord pcloudSkillRecord = pcloudSkillRecordDao.getBySkillIdAndWxId(skillId, wxUserId);
if (null == pcloudSkillRecord) {
PcloudSkillRecord pcloudSkillRecordNew = new PcloudSkillRecord();
if (SkillTypeEnum.TIME_MANAGE.value == type){
//先查询订阅状态
TimeControlTaskSubscribe timeControlTaskSubscribe = taskSubscribeBiz.getSubscribeState(wxUserId,relSkillId);
if (null != timeControlTaskSubscribe){
pcloudSkillRecordNew.setState(timeControlTaskSubscribe.getState());
}else {
//异步插入记录
EXECUTOR_SERVICE.execute(() ->{
//新增技能获取记录
PcloudSkillRecord pcloudSkillRecord = pcloudSkillRecordDao.getBySkillIdAndWxId(skillId, wxUserId);
if (null == pcloudSkillRecord) {
PcloudSkillRecord pcloudSkillRecordNew = new PcloudSkillRecord();
if (SkillTypeEnum.TIME_MANAGE.value == type){
//先查询订阅状态
TimeControlTaskSubscribe timeControlTaskSubscribe = taskSubscribeBiz.getSubscribeState(wxUserId,relSkillId);
if (null != timeControlTaskSubscribe){
pcloudSkillRecordNew.setState(timeControlTaskSubscribe.getState());
}else {
pcloudSkillRecordNew.setState(0);
}
}else if (SkillTypeEnum.READING.value == type || SkillTypeEnum.RESOURCE.value == type){
pcloudSkillRecordNew.setState(0);
}
}else if (SkillTypeEnum.READING.value == type || SkillTypeEnum.RESOURCE.value == type){
pcloudSkillRecordNew.setState(0);
}
pcloudSkillRecordNew.setRobotWxId(robotWxId);
pcloudSkillRecordNew.setWxUserId(wxUserId);
pcloudSkillRecordNew.setSkillId(skillId);
pcloudSkillRecordNew.setSkillType(type);
pcloudSkillRecordNew.setCreateTime(new Date());
pcloudSkillRecordNew.setUpdateTime(new Date());
pcloudSkillRecordDao.insertSelective(pcloudSkillRecordNew);
}else {
if (SkillTypeEnum.TIME_MANAGE.value == type){
if (SubTypeEnum.CANCEL.value == pcloudSkillRecord.getState()){
pcloudSkillRecord.setState(0);
pcloudSkillRecordNew.setRobotWxId(robotWxId);
pcloudSkillRecordNew.setWxUserId(wxUserId);
pcloudSkillRecordNew.setSkillId(skillId);
pcloudSkillRecordNew.setSkillType(type);
pcloudSkillRecordNew.setCreateTime(new Date());
pcloudSkillRecordNew.setUpdateTime(new Date());
pcloudSkillRecordDao.insertSelective(pcloudSkillRecordNew);
}else {
if (SkillTypeEnum.TIME_MANAGE.value == type){
if (SubTypeEnum.CANCEL.value == pcloudSkillRecord.getState()){
pcloudSkillRecord.setState(0);
}
}
pcloudSkillRecord.setUpdateTime(new Date());
pcloudSkillRecordDao.updateByPrimaryKeySelective(pcloudSkillRecord);
}
pcloudSkillRecord.setUpdateTime(new Date());
pcloudSkillRecordDao.updateByPrimaryKeySelective(pcloudSkillRecord);
}
PcloudSubRemind pcloudSubRemind = pcloudSubRemindDao.getByMap(relSkillId, type, wxUserId, skillId);
if(null==pcloudSubRemind) {
PcloudSubRemind subRemind = new PcloudSubRemind();
subRemind.setCreateTime(new Date());
subRemind.setRelSkillId(relSkillId);
subRemind.setRobotWxId(robotWxId);
subRemind.setSkillType(type);
subRemind.setSubscribeState(0);
subRemind.setWxUserId(wxUserId);
subRemind.setSkillId(Long.valueOf(skillId));
pcloudSubRemindDao.insert(subRemind);
}
PcloudSubRemind pcloudSubRemind = pcloudSubRemindDao.getByMap(relSkillId, type, wxUserId, skillId);
if(null==pcloudSubRemind) {
PcloudSubRemind subRemind = new PcloudSubRemind();
subRemind.setCreateTime(new Date());
subRemind.setRelSkillId(relSkillId);
subRemind.setRobotWxId(robotWxId);
subRemind.setSkillType(type);
subRemind.setSubscribeState(0);
subRemind.setWxUserId(wxUserId);
subRemind.setSkillId(Long.valueOf(skillId));
pcloudSubRemindDao.insert(subRemind);
}
});
if (null != robotSkillDetail) {
String filterStr = StringUtilParent.replaceHtml(robotSkillDetail.getRelSkillIntroduce());
......
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