package com.fdkankan.agent.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fdkankan.agent.common.PageInfo;
import com.fdkankan.agent.common.ResultCode;
import com.fdkankan.agent.entity.AgentNewLog;
import com.fdkankan.agent.entity.User;
import com.fdkankan.agent.exception.BusinessException;
import com.fdkankan.agent.mapper.IAgentNewLogMapper;
import com.fdkankan.agent.request.DownParam;
import com.fdkankan.agent.request.IncrementParam;
import com.fdkankan.agent.request.LogListParam;
import com.fdkankan.agent.response.*;
import com.fdkankan.agent.service.IAgentNewLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.agent.service.IAgentNewService;
import com.fdkankan.agent.service.IExcelService;
import com.fdkankan.agent.service.IUserService;
import com.fdkankan.common.util.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
*
* 服务实现类
*
*
* @author
* @since 2022-11-10
*/
@Service
public class AgentNewLogServiceImpl extends ServiceImpl implements IAgentNewLogService {
@Autowired
IUserService userService;
@Autowired
IAgentNewService agentNewService;
@Autowired
IExcelService excelService;
@Override
public Object downLogList(DownParam param) {
Page downLogVoPage = this.getBaseMapper().downLogList(new Page<>(param.getPageNum(),param.getPageSize()),param);
return PageInfo.PageInfo(downLogVoPage);
}
@Override
public void addDown(IncrementParam param, AgentNewVo agent) {
if(StringUtils.isBlank(param.getUserName())
|| param.getCount() == null ){
throw new BusinessException(ResultCode.PARAM_MISS);
}
User user = userService.getByUserName(param.getUserName());
if(user == null){
throw new BusinessException(ResultCode.USER_NOT_EXIST);
}
if(agent.getDownSubNum() <=0 ){
throw new BusinessException(ResultCode.DOWN_NUM_EMPTY);
}
user.setDownloadNumTotal(user.getDownloadNumTotal() + param.getCount() );
userService.updateById(user);
agentNewService.subNum(agent,user.getId(),null,param.getCount(),param.getTotalTime(),0);
}
@Override
public LogDataVo getLogDataM(Integer agentId) {
List logDataM = this.getBaseMapper().getLogDataM(agentId);
LogDataVo logDataVo = new LogDataVo();
for (AgentNewLog log : logDataM) {
switch (log.getType()){
case 0 : logDataVo.setLastMajorNum(log.getCount() + logDataVo.getLastMajorNum()); break;
case 1 : logDataVo.setLastHighNum(log.getCount() + logDataVo.getLastHighNum()); break;
case 2 : logDataVo.setLastDownNum(log.getCount() + logDataVo.getLastDownNum()); break;
}
}
return logDataVo;
}
static LogListParam logListParam = new LogListParam();
@Override
public PageInfo pageUnList(LogListParam param) {
logListParam = param;
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(AgentNewLog::getAgentId,param.getAgentId());
if(param.getType()!=null){
wrapper.eq(AgentNewLog::getType,param.getType());
}
if(param.getGiveType() != null){
wrapper.eq(AgentNewLog::getGiveType,param.getGiveType());
}
if(StringUtils.isNotBlank(param.getStartTime())){
wrapper.between(AgentNewLog::getCreateTime,param.getStartTime(),param.getEndTime());
}
wrapper.orderByDesc(AgentNewLog::getCreateTime);
Page page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
List vos = new ArrayList<>();
for (AgentNewLog record : page.getRecords()) {
LogListVo vo = new LogListVo();
BeanUtils.copyProperties(record,vo);
User user = userService.getById(record.getUserId());
if(user != null){
vo.setNickName(user.getNickName());
vo.setUserName(user.getUserName());
vo.setEmail(user.getEmail());
}
vos.add(vo);
}
Page voPage = new Page<>(param.getPageNum(), param.getPageSize());
voPage.setRecords(vos);
voPage.setTotal(page.getTotal());
return PageInfo.PageInfo(voPage);
}
@Override
public void export(HttpServletRequest req, HttpServletResponse resp,String lang) {
logListParam.setPageSize(100000);
List list = (List) this.pageUnList(logListParam).getList();
ExcelWriter excelWriter = null;
try {
if("en".equals(lang)){
List listen = new ArrayList<>();
for (LogListVo listVo : list) {
LogListVoEn en = new LogListVoEn();
BeanUtils.copyProperties(listVo,en);
listen.add(en);
}
excelWriter = EasyExcel.write(resp.getOutputStream(), LogListVoEn.class).build();
excelService.commonExport(req,resp,"Sales Statistics List",listen,excelWriter);
}else {
excelWriter = EasyExcel.write(resp.getOutputStream(), LogListVo.class).build();
excelService.commonExport(req,resp,"经销商结算统计",list,excelWriter);
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(excelWriter != null){
excelWriter.finish();
}
}
}
}