1、启动类添加注解
2、创建远程调用接口
在service_statistics模块中client/UcenterClient里添加远程调用方法。
@Component
@FeignClient("service-ucenter")
public interface UcenterClient {
//统计某一天注册人数,统计分析远程调用
@GetMapping("/ucenterservice/ucenter/countRegister/{day}")
public R countRegister(@PathVariable("day") String day);
}
3、最终调用
(1)controller实现
在StatisticsDailyController中添加生成统计数据的方法。
@ApiOperation(value = "生成统计数据")
@PostMapping("createData/{day}")
public R createData(@PathVariable String day){
staService.createData(day);
return R.ok();
}
(2)在StatisticsDailyService中添加接口方法
package com.atguigu.staservice.service;
import com.atguigu.staservice.entity.StatisticsDaily;
import com.baomidou.mybatisplus.extension.service.IService;
public interface StatisticsDailyService extends IService<StatisticsDaily> {
void createData(String day);
}
(3)在StatisticsDailyServiceImpl中实现接口方法
package com.atguigu.staservice.service.impl;
import com.atguigu.commonutils.R;
import com.atguigu.staservice.client.UcenterClient;
import com.atguigu.staservice.entity.StatisticsDaily;
import com.atguigu.staservice.mapper.StatisticsDailyMapper;
import com.atguigu.staservice.service.StatisticsDailyService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.RandomUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class StatisticsDailyServiceImpl extends ServiceImpl<StatisticsDailyMapper, StatisticsDaily> implements StatisticsDailyService {
@Autowired
private UcenterClient ucenterClient;
//生成统计数据
@Override
public void createData(String day) {
//1远程调用获得注册人数
R r = ucenterClient.countRegister(day);
Integer registerCount = (Integer) r.getData().get("registerCount");
//2添加之前,根据统计日期删除表内相同日期数据
QueryWrapper<StatisticsDaily> wrapper = new QueryWrapper<>();
wrapper.eq("date_calculated",day);
baseMapper.delete(wrapper);
//3添加数据
Integer loginNum = RandomUtils.nextInt(100, 200);//TODO
Integer videoViewNum = RandomUtils.nextInt(100, 200);//TODO
Integer courseNum = RandomUtils.nextInt(100, 200);//TODO
StatisticsDaily daily = new StatisticsDaily();
daily.setRegisterNum(registerCount);
daily.setLoginNum(loginNum);
daily.setVideoViewNum(videoViewNum);
daily.setCourseNum(courseNum);
daily.setDateCalculated(day);
baseMapper.insert(daily);
}
}