From 888af7de6cf1517db2935663abbb28d78e32c620 Mon Sep 17 00:00:00 2001 From: yqy Date: Tue, 16 Aug 2022 14:22:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=96=E9=9F=B3=E5=88=97=E8=A1=A8=E4=B8=8A?= =?UTF-8?q?=E5=8F=B7=E5=AE=9E=E4=BD=93=E7=B1=BB=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/baiye/TiktokMemberApiApplication.java | 2 - .../controller/TiktokEquipmentController.java | 8 +- .../baiye/asynctask/TiktokEquipmentTask.java | 55 +++++++++++++ .../baiye/config/thread/ThreadPoolConfig.java | 4 +- .../com/baiye/dao/TiktokEquipmentMapper.java | 6 +- .../baiye/service/TiktokEquipmentService.java | 6 +- .../impl/TiktokEquipmentServiceImpl.java | 78 ++++++++++--------- 7 files changed, 107 insertions(+), 52 deletions(-) create mode 100644 cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/asynctask/TiktokEquipmentTask.java diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/TiktokMemberApiApplication.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/TiktokMemberApiApplication.java index d31a0be..c931aca 100644 --- a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/TiktokMemberApiApplication.java +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/TiktokMemberApiApplication.java @@ -4,12 +4,10 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.scheduling.annotation.EnableAsync; @SpringBootApplication @EnableDiscoveryClient @MapperScan("com.baiye.dao") -@EnableAsync public class TiktokMemberApiApplication { public static void main(String[] args) { SpringApplication.run(TiktokMemberApiApplication.class,args); diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokEquipmentController.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokEquipmentController.java index 2d2f2da..359b5c3 100644 --- a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokEquipmentController.java +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-api/src/main/java/com/baiye/controller/TiktokEquipmentController.java @@ -2,7 +2,7 @@ package com.baiye.controller; import com.baiye.core.base.api.Result; import com.baiye.core.constant.UpdateGroup; -import com.baiye.entity.TiktokEquipmentEntity9999; +import com.baiye.entity.TiktokEquipmentEntity; import com.baiye.service.TiktokEquipmentService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.RequiredArgsConstructor; @@ -22,7 +22,7 @@ public class TiktokEquipmentController { * 分页查询 */ @PostMapping("/pageList/{current}/{limit}") - public Result getAccountList(@PathVariable int current, @PathVariable int limit, @RequestBody TiktokEquipmentEntity9999 tiktokAccountEntity){ + public Result getAccountList(@PathVariable int current, @PathVariable int limit, @RequestBody TiktokEquipmentEntity tiktokAccountEntity){ return Result.data(tiktokEquipmentService.getEquipmentList(current, limit, tiktokAccountEntity)); } @@ -30,8 +30,8 @@ public class TiktokEquipmentController { * 修改 */ @PostMapping("/update") - public Result update(@Validated({UpdateGroup.class}) @RequestBody TiktokEquipmentEntity9999 tiktokAccountEntity){ - QueryWrapper wrapper = new QueryWrapper<>(); + public Result update(@Validated({UpdateGroup.class}) @RequestBody TiktokEquipmentEntity tiktokAccountEntity){ + QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("dy_user_id", tiktokAccountEntity.getDyUserId()); tiktokEquipmentService.update(tiktokAccountEntity, wrapper); return Result.success(); diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/asynctask/TiktokEquipmentTask.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/asynctask/TiktokEquipmentTask.java new file mode 100644 index 0000000..21a9445 --- /dev/null +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/asynctask/TiktokEquipmentTask.java @@ -0,0 +1,55 @@ +package com.baiye.asynctask; + +import cn.hutool.core.collection.CollUtil; +import com.baiye.dao.TiktokEquipmentMapper; +import com.baiye.entity.TiktokEquipmentEntity; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +@Component +@Slf4j +public class TiktokEquipmentTask extends ServiceImpl { + + @Autowired + private TiktokEquipmentMapper tiktokEquipmentMapper; + + /** + * 异步处理数据 + * + * @param isSave userIdList为空的两种判断 0:全部插入数据库,1:向下执行即可 + * @param userIdList 数据库和远程调用相同的数据Id集合 + * @param tiktokEquipmentEntities + */ + @Transactional(rollbackFor = Exception.class) + @Async(value = "tiktokPoolExecutor") + public void dataDealWith(int isSave, Set userIdList, List tiktokEquipmentEntities) { + if (CollUtil.isNotEmpty(tiktokEquipmentEntities)) { + // 1、数据库数据为空,查询的全部插入 + if (CollUtil.isEmpty(userIdList) && isSave == 0) { + this.saveBatch(tiktokEquipmentEntities); + return; + } + // 2、远程调用数据和数据库不相同的插入数据 + List collect = tiktokEquipmentEntities.stream().filter(userInfo -> + !new ArrayList<>(userIdList).contains(userInfo.getDyUserId())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(collect)) { + this.saveBatch(collect); + } + // 3、远程调用和数据库相同的更新数据调用的最新数据 + List entities = tiktokEquipmentEntities.stream().filter(ts -> new ArrayList<>(userIdList).contains(ts.getDyUserId())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(entities)) { + tiktokEquipmentMapper.updateByUserId(entities, userIdList); + } + } + } + +} diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/config/thread/ThreadPoolConfig.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/config/thread/ThreadPoolConfig.java index 2751a48..96b4fc6 100644 --- a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/config/thread/ThreadPoolConfig.java +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/config/thread/ThreadPoolConfig.java @@ -36,8 +36,8 @@ public class ThreadPoolConfig { private String saveThreadNamePrefix; - @Bean(value = "poolExecutor") - public Executor poolExecutor(){ + @Bean(value = "tiktokPoolExecutor") + public Executor tiktokPoolExecutor(){ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( saveCorePoolSize, saveMaxPoolSize, diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokEquipmentMapper.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokEquipmentMapper.java index d35db0b..bb21d14 100644 --- a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokEquipmentMapper.java +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/dao/TiktokEquipmentMapper.java @@ -1,6 +1,6 @@ package com.baiye.dao; -import com.baiye.entity.TiktokEquipmentEntity9999; +import com.baiye.entity.TiktokEquipmentEntity; import com.baiye.vo.TiktokEquipmentVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @@ -11,11 +11,11 @@ import java.util.Map; import java.util.Set; @Mapper -public interface TiktokEquipmentMapper extends BaseMapper { +public interface TiktokEquipmentMapper extends BaseMapper { List getEquipmentList(); List> findOrganizeCount(); - void updateByUserId(@Param("entities") List entities, @Param("userIds") Set userIdList); + void updateByUserId(@Param("entities") List entities, @Param("userIds") Set userIdList); } diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokEquipmentService.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokEquipmentService.java index 9e2ad20..6f3e456 100644 --- a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokEquipmentService.java +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/TiktokEquipmentService.java @@ -1,19 +1,19 @@ package com.baiye.service; import com.baiye.core.page.PageResult; -import com.baiye.entity.TiktokEquipmentEntity9999; +import com.baiye.entity.TiktokEquipmentEntity; import com.baomidou.mybatisplus.extension.service.IService; import java.util.Map; -public interface TiktokEquipmentService extends IService { +public interface TiktokEquipmentService extends IService { /** * 账号列表 * @param tiktokAccountEntity * @return */ - PageResult getEquipmentList(int current, int limit, TiktokEquipmentEntity9999 tiktokAccountEntity); + PageResult getEquipmentList(int current, int limit, TiktokEquipmentEntity tiktokAccountEntity); /** * 修改小组ID字段为0 diff --git a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokEquipmentServiceImpl.java b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokEquipmentServiceImpl.java index 6ba078c..0129637 100644 --- a/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokEquipmentServiceImpl.java +++ b/cdp-tools/cdp-tool-dy/dy-tool-member/dy-tool-member-service/src/main/java/com/baiye/service/impl/TiktokEquipmentServiceImpl.java @@ -4,14 +4,14 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; +import com.baiye.asynctask.TiktokEquipmentTask; import com.baiye.core.base.api.Result; import com.baiye.core.constant.HttpStatus; import com.baiye.core.page.PageResult; import com.baiye.core.page.PageUtil; -import com.baiye.core.util.BeanUtils; import com.baiye.core.util.StringUtils; import com.baiye.dao.TiktokEquipmentMapper; -import com.baiye.entity.TiktokEquipmentEntity9999; +import com.baiye.entity.TiktokEquipmentEntity; import com.baiye.service.TiktokEquipmentService; import com.baiye.service.TiktokUserService; import com.baiye.vo.TiktokEquipmentVo; @@ -19,7 +19,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Async; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -29,14 +29,15 @@ import java.util.stream.Collectors; @Service @Slf4j @RequiredArgsConstructor -public class TiktokEquipmentServiceImpl extends ServiceImpl implements TiktokEquipmentService { +public class TiktokEquipmentServiceImpl extends ServiceImpl implements TiktokEquipmentService { private final TiktokUserService tiktokUserService; private final TiktokEquipmentMapper tiktokEquipmentMapper; + private final TiktokEquipmentTask task; @Override @Transactional(rollbackFor = Exception.class) - public PageResult getEquipmentList(int current, int limit, TiktokEquipmentEntity9999 tiktokEquipmentEntity) { + public PageResult getEquipmentList(int current, int limit, TiktokEquipmentEntity tiktokEquipmentEntity) { int isSave = 0; // 数据库和远程调用相同的数据Id集合 Set userIdList = new HashSet<>(); @@ -47,9 +48,9 @@ public class TiktokEquipmentServiceImpl extends ServiceImpl tiktokEquipmentVos = JSONUtil.toList(jsonArray, TiktokEquipmentVo.class); // list保存数据不做修改,后面处理时用 - List list = new ArrayList<>(); + List list = new ArrayList<>(); for (TiktokEquipmentVo tiktokEquipmentVo : tiktokEquipmentVos) { - TiktokEquipmentEntity9999 equipmentEntity = new TiktokEquipmentEntity9999(); + TiktokEquipmentEntity equipmentEntity = new TiktokEquipmentEntity(); BeanUtils.copyProperties(tiktokEquipmentVo, equipmentEntity); equipmentEntity.setDeviceStatus("0"); list.add(equipmentEntity); @@ -88,7 +89,7 @@ public class TiktokEquipmentServiceImpl extends ServiceImpl returnInfo = returnInfo(tiktokEquipmentVos, tiktokEquipmentEntity); return PageResult.success((long) tiktokEquipmentVos.size(), PageUtil.toPage(current - 1, limit, returnInfo)); @@ -104,9 +105,9 @@ public class TiktokEquipmentServiceImpl extends ServiceImpl wrapper = new QueryWrapper<>(); + QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("organize_id", organizeId); // 设置查询条件 this.update(tiktokEquipmentEntity, wrapper); } @@ -123,7 +124,7 @@ public class TiktokEquipmentServiceImpl extends ServiceImpl returnInfo(List equipmentVoList, TiktokEquipmentEntity9999 condition) { + public List returnInfo(List equipmentVoList, TiktokEquipmentEntity condition) { List list = new ArrayList<>(); String screenName = condition.getScreenName(); String deviceStatus = condition.getDeviceStatus(); @@ -156,31 +157,32 @@ public class TiktokEquipmentServiceImpl extends ServiceImpl userIdList, List tiktokEquipmentEntities) { - // 数据库数据为空,查询的全部插入 - if (CollUtil.isEmpty(userIdList) && isSave == 0) { - this.saveBatch(tiktokEquipmentEntities); - return; - } - // 远程调用数据和数据库不相同的插入数据 - List collect = tiktokEquipmentEntities.stream().filter(userInfo -> - !new ArrayList<>(userIdList).contains(userInfo.getDyUserId())).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(collect)){ - this.saveBatch(collect); - } - - // 远程调用和数据库相同的更新数据调用的最新数据 - if (CollUtil.isNotEmpty(tiktokEquipmentEntities)){ - List entities = tiktokEquipmentEntities.stream().filter(ts -> new ArrayList<>(userIdList).contains(ts.getDyUserId())).collect(Collectors.toList()); - tiktokEquipmentMapper.updateByUserId(entities,userIdList); - } - } +// /** +// * 异步处理数据 +// * @param isSave userIdList为空的两种判断 0:全部插入数据库,1:向下执行即可 +// * @param userIdList 数据库和远程调用相同的数据Id集合 +// * @param tiktokEquipmentEntities +// */ +// @Transactional(rollbackFor = Exception.class) +// @Async(value = "tiktokPoolExecutor") +// public void dataDealWith(int isSave, Set userIdList, List tiktokEquipmentEntities) { +// log.info("=================插入线程是:{}=================", Thread.currentThread().getName()); +// // 数据库数据为空,查询的全部插入 +// if (CollUtil.isEmpty(userIdList) && isSave == 0) { +// this.saveBatch(tiktokEquipmentEntities); +// return; +// } +// // 远程调用数据和数据库不相同的插入数据 +// List collect = tiktokEquipmentEntities.stream().filter(userInfo -> +// !new ArrayList<>(userIdList).contains(userInfo.getDyUserId())).collect(Collectors.toList()); +// if (CollUtil.isNotEmpty(collect)){ +// this.saveBatch(collect); +// } +// +// // 远程调用和数据库相同的更新数据调用的最新数据 +// if (CollUtil.isNotEmpty(tiktokEquipmentEntities)){ +// List entities = tiktokEquipmentEntities.stream().filter(ts -> new ArrayList<>(userIdList).contains(ts.getDyUserId())).collect(Collectors.toList()); +// tiktokEquipmentMapper.updateByUserId(entities,userIdList); +// } +// } }