From fdeb0c2edbf210ca5f21684a8233caa5b6b5e771 Mon Sep 17 00:00:00 2001 From: xyiege Date: Tue, 27 Sep 2022 10:35:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GoodsTaskServiceImpl.java | 10 ++- .../service/impl/OrderTaskServiceImpl.java | 41 ++++++------ .../cn/chjyj/szwh/task/SzwhScheduled.java | 62 ------------------- .../java/cn/chjyj/szwh/task/TaskInit.java | 9 ++- .../mapper/szwh/GoodsDetailMapper.xml | 14 +---- .../szwh/service/OrderTaskServiceTest.java | 22 +++++++ 6 files changed, 59 insertions(+), 99 deletions(-) delete mode 100644 src/main/java/cn/chjyj/szwh/task/SzwhScheduled.java create mode 100644 src/test/java/cn/chjyj/szwh/service/OrderTaskServiceTest.java diff --git a/src/main/java/cn/chjyj/szwh/service/impl/GoodsTaskServiceImpl.java b/src/main/java/cn/chjyj/szwh/service/impl/GoodsTaskServiceImpl.java index a96cfc6..9d2219f 100644 --- a/src/main/java/cn/chjyj/szwh/service/impl/GoodsTaskServiceImpl.java +++ b/src/main/java/cn/chjyj/szwh/service/impl/GoodsTaskServiceImpl.java @@ -9,6 +9,7 @@ import cn.chjyj.szwh.utils.RequestUtils; import cn.chjyj.szwh.utils.SzwhApiUtils; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -29,9 +30,12 @@ public class GoodsTaskServiceImpl implements GoodsTaskService { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); JSONObject recvjson = SzwhApiUtils.revocationGoods(); - JSONObject dataJson = recvjson.getJSONObject("data"); - if(!dataJson.isEmpty()){ - JSONArray jsonArray = JSONArray.parseArray(dataJson.toJSONString()); + //JSONObject dataJson = recvjson.getJSONObject("data"); + String datajsonStr= recvjson.getString("data"); + if(StringUtils.isNotBlank(datajsonStr)){ + JSONObject dataJson = recvjson.getJSONObject("data"); + //if(!dataJson.isEmpty()){ + JSONArray jsonArray = JSONArray.parseArray(datajsonStr); for(int i=0;i dbOdglist = orderGoodsDetailMapper.getOrderGoodsDetailByMap(somap, field); if(dbOdglist!=null){ for(OrderGoodsDetail odg:dbOdglist){ @@ -66,23 +66,28 @@ public class OrderTaskServiceImpl implements OrderTaskService { GoodsDetail goodsDetail = goodsDetailMapper.getGoodsDetailBygid(tmpgoods.getGoodsDetailId()); if(goodsDetail==null){ continue; - } - // 对比和处理商品状态 - if(goodsDetail.getGoodsEntrust()==1||goodsDetail.getContractualPeriod()==2){ - goodsDetail.setStock(1); - goodsDetailMapper.updateGoodsDetail(goodsDetail); - //更新商品状态 - Map gmap=new HashMap(); - gmap.put("goods_status",1); - goodsMapper.updateGoods(gmap,tmpgoods.getId()); - // 找到购买的用户信息 - OrderUser orderUser =orderUserMapper.getUserOrder(od.getBatchcode(),odg.getGoodsIslicode()); - //操作日志 - OperationLog oplog = new OperationLog(); - oplog.setType("goods"); - oplog.setId(tmpgoods.getId()); - oplog.setMessage(now+orderUser.getName()+"未付款成功,重新发布该标的!"); - operationLogMapper.addLog(oplog); + }else { + // 委托类型 + int wtlx = goodsDetail.getGoodsEntrust(); + // 委托周期 + int wtzq = goodsDetail.getContractualPeriod(); + // 对比和处理商品状态 委托类型为转让的 委托周期为单次 + if (wtlx == 1 || wtzq == 2) { + goodsDetail.setStock(1); + goodsDetailMapper.updateGoodsDetail(goodsDetail); + //更新商品状态 + Map gmap = new HashMap(); + gmap.put("goods_status", 1); + goodsMapper.updateGoods(gmap, tmpgoods.getId()); + // 找到购买的用户信息 + OrderUser orderUser = orderUserMapper.getUserOrder(od.getBatchcode(), odg.getGoodsIslicode()); + //操作日志 + OperationLog oplog = new OperationLog(); + oplog.setType("goods"); + oplog.setId(tmpgoods.getId()); + oplog.setMessage(now + orderUser.getName() + "未付款成功,重新发布该标的!"); + operationLogMapper.addLog(oplog); + } } } } diff --git a/src/main/java/cn/chjyj/szwh/task/SzwhScheduled.java b/src/main/java/cn/chjyj/szwh/task/SzwhScheduled.java deleted file mode 100644 index 5011b5a..0000000 --- a/src/main/java/cn/chjyj/szwh/task/SzwhScheduled.java +++ /dev/null @@ -1,62 +0,0 @@ -package cn.chjyj.szwh.task; - -import cn.chjyj.szwh.service.GoodsTaskService; -import org.springframework.context.annotation.Bean; -import org.springframework.scheduling.TaskScheduler; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; -import org.springframework.stereotype.Component; - -import java.time.LocalDateTime; - -/** - * 多个定时任务启动 - */ -@Component -//@EnableScheduling -public class SzwhScheduled { - private GoodsTaskService goodsTaskService; - - public GoodsTaskService getGoodsTaskService() { - return goodsTaskService; - } - - public void setGoodsTaskService(GoodsTaskService goodsTaskService) { - this.goodsTaskService = goodsTaskService; - } - - @Bean - public TaskScheduler taskScheduler(){ - ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); - taskScheduler.setPoolSize(20); - return taskScheduler; - } - - /** - * 查询查询撤销商品的信息 - */ - //@Scheduled(cron = "0/20 * * * * ?") - public void queryRevocationGoods(){ - String curName = Thread.currentThread().getName() ; - System.out.println("当前时间:"+ LocalDateTime.now()+" 任务queryRevocationGoods对应的线程名: "+curName); - - try { - goodsTaskService.getRevocationGoods(); - Thread.sleep(1000); - } catch (Exception e) { - e.printStackTrace(); - } - } - - //@Scheduled(cron = "0/5 * * * * ?") - public void execute2(){ - String curName = Thread.currentThread().getName() ; - System.out.println("当前时间:"+LocalDateTime.now()+" 任务execute2对应的线程名: "+curName); - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } -} diff --git a/src/main/java/cn/chjyj/szwh/task/TaskInit.java b/src/main/java/cn/chjyj/szwh/task/TaskInit.java index acb56ee..79a87f6 100644 --- a/src/main/java/cn/chjyj/szwh/task/TaskInit.java +++ b/src/main/java/cn/chjyj/szwh/task/TaskInit.java @@ -39,6 +39,7 @@ public class TaskInit implements ApplicationRunner { .build(); // 手动将触发器与任务绑定到调度器内 scheduler.scheduleJob(jobDetail, trigger); + //获取商品的撤销状态 JobDetail revojob = JobBuilder.newJob(SzwhRevocationGoodsJob.class) .withIdentity(sid+"02") @@ -52,17 +53,19 @@ public class TaskInit implements ApplicationRunner { .startNow() .build(); scheduler.scheduleJob(revojob,revoTrigger); - // 关闭超时订单 1min一次 + + //关闭超时订单 1min一次 JobDetail odTimeoutJob=JobBuilder.newJob(OrderJob.class) .withIdentity(sid+"03") .storeDurably() .build(); Trigger odTimeoutTrigger = TriggerBuilder.newTrigger() .forJob(odTimeoutJob) - .withIdentity(sid+"02Trigger") - .withSchedule(CronScheduleBuilder.cronSchedule("0 */1 * * * ? *")) + .withIdentity(sid+"03Trigger") + .withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ? *")) .startNow() .build(); scheduler.scheduleJob(odTimeoutJob,odTimeoutTrigger); + } } diff --git a/src/main/resources/mapper/szwh/GoodsDetailMapper.xml b/src/main/resources/mapper/szwh/GoodsDetailMapper.xml index 25ab8af..f571012 100644 --- a/src/main/resources/mapper/szwh/GoodsDetailMapper.xml +++ b/src/main/resources/mapper/szwh/GoodsDetailMapper.xml @@ -27,19 +27,7 @@ diff --git a/src/test/java/cn/chjyj/szwh/service/OrderTaskServiceTest.java b/src/test/java/cn/chjyj/szwh/service/OrderTaskServiceTest.java new file mode 100644 index 0000000..9e98223 --- /dev/null +++ b/src/test/java/cn/chjyj/szwh/service/OrderTaskServiceTest.java @@ -0,0 +1,22 @@ +package cn.chjyj.szwh.service; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.*; + +@SpringBootTest +@RunWith(SpringJUnit4ClassRunner.class) +public class OrderTaskServiceTest { + @Autowired + private OrderTaskService orderTaskService; + + @Test + public void closeOrderTimeout() { + System.out.println("关闭订单"); + orderTaskService.closeOrderTimeout(); + } +} \ No newline at end of file