|
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.text.CharSequenceUtil;
|
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.http.HttpStatus;
|
|
|
|
|
import cn.hutool.http.HttpUtil;
|
|
|
|
@ -21,13 +22,15 @@ import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
|
|
|
|
import com.baiye.modules.distribute.dto.*;
|
|
|
|
|
import com.baiye.modules.distribute.entity.LoginEquipment;
|
|
|
|
|
import com.baiye.modules.distribute.entity.WeChatAccount;
|
|
|
|
|
import com.baiye.modules.distribute.entity.WeChatEquipment;
|
|
|
|
|
import com.baiye.modules.distribute.mapper.WeChatAccountMapper;
|
|
|
|
|
import com.baiye.modules.distribute.mapper.WeChatEquipmentMapper;
|
|
|
|
|
import com.baiye.modules.distribute.qo.AccountQo;
|
|
|
|
|
import com.baiye.modules.distribute.service.LoginEquipmentService;
|
|
|
|
|
import com.baiye.modules.distribute.service.WeChatService;
|
|
|
|
|
import com.baiye.modules.distribute.service.WechatFriendService;
|
|
|
|
|
import com.baiye.modules.distribute.vo.AccountStatisticsVO;
|
|
|
|
|
import com.baiye.modules.distribute.vo.AddFriendVo;
|
|
|
|
|
import com.baiye.modules.distribute.vo.StatisticsFriendVO;
|
|
|
|
|
import com.baiye.modules.distribute.vo.WeChatAccountVO;
|
|
|
|
|
import com.baiye.modules.distribute.vo.WeChatAddFriendVo;
|
|
|
|
|
import com.baiye.result.WeChatResponse;
|
|
|
|
@ -35,11 +38,14 @@ import com.baiye.security.util.SecurityUtils;
|
|
|
|
|
import com.baiye.system.properties.WeChatProperties;
|
|
|
|
|
import com.google.common.collect.ImmutableMap;
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
|
import com.google.common.collect.Maps;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
@ -54,12 +60,20 @@ import java.util.stream.Collectors;
|
|
|
|
|
public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, WeChatAccount> implements WeChatService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Value("${snowflake.workerId}")
|
|
|
|
|
private int workerId;
|
|
|
|
|
|
|
|
|
|
@Value("${snowflake.datacenterId}")
|
|
|
|
|
private int datacenterId;
|
|
|
|
|
|
|
|
|
|
private final WeChatProperties weChatProperties;
|
|
|
|
|
|
|
|
|
|
private final WechatFriendService wechatFriendService;
|
|
|
|
|
|
|
|
|
|
private final LoginEquipmentService loginEquipmentService;
|
|
|
|
|
|
|
|
|
|
private final WeChatEquipmentMapper weChatEquipmentMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String createQrCode(CreateCodeDTO createCodeDTO) {
|
|
|
|
@ -106,14 +120,16 @@ public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, We
|
|
|
|
|
Integer dayNum = PackageEnum.find(packageType);
|
|
|
|
|
if (dayNum > DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
EquipmentDTO dto = BeanUtil.toBean(weChatResponse.getData(), EquipmentDTO.class);
|
|
|
|
|
DateTime dateTime = DateUtil.offsetDay(DateUtil.date(), dayNum);
|
|
|
|
|
DateTime dateTime = DateUtil.endOfDay(DateUtil.offsetDay(DateUtil.date(), dayNum));
|
|
|
|
|
for (EquipmentDTO.RoBotDTO botDTO : dto.getData()) {
|
|
|
|
|
// 创建账号
|
|
|
|
|
LoginEquipment equipment = new LoginEquipment();
|
|
|
|
|
equipment.setUserId(userId);
|
|
|
|
|
equipment.setExpirationTime(dateTime);
|
|
|
|
|
equipment.setRobotId(botDTO.getRobotId());
|
|
|
|
|
equipment.setDeviceNumber(botDTO.getRobotAccount());
|
|
|
|
|
equipment.setPit(botDTO.getRobotAccount());
|
|
|
|
|
equipment.setPackageType(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
// equipment.setDeviceNumber(botDTO.getRobotAccount());
|
|
|
|
|
loginEquipmentService.save(equipment);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -125,6 +141,13 @@ public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, We
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String pushCode(PushCodeDTO pushCodeDTO) {
|
|
|
|
|
LoginEquipment loginEquipment = loginEquipmentService.queryByRobotId(pushCodeDTO.getRobotId());
|
|
|
|
|
if (ObjectUtil.isNotNull(loginEquipment) && ObjectUtil.isNotNull(loginEquipment.getExpirationTime())) {
|
|
|
|
|
if (loginEquipment.getExpirationTime().before(DateUtil.date())) {
|
|
|
|
|
throw new BadRequestException("当前设备已过期请续费后使用!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
Map<String, Object> beanToMap = BeanUtil.beanToMap(pushCodeDTO);
|
|
|
|
|
String pushQrCodeResult = HttpUtil.get
|
|
|
|
|
(weChatProperties.getGatewayHost().concat(WeChatRequestConstants.GET_PUSH_LOGIN)
|
|
|
|
@ -151,22 +174,25 @@ public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, We
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean weChatAccountLoginByRespon(WeChatUserLoginDTO userLoginDTO, Integer status) {
|
|
|
|
|
LoginEquipment loginEquipment = loginEquipmentService.queryByRobot(userLoginDTO.getPit());
|
|
|
|
|
if (ObjectUtil.isNotNull(loginEquipment) && ObjectUtil.isNotNull(loginEquipment.getId())) {
|
|
|
|
|
WeChatAccount byWxId = this.baseMapper.findByWxId(userLoginDTO.getWxId());
|
|
|
|
|
if (ObjectUtil.isNotNull(byWxId) && ObjectUtil.isNotNull(byWxId.getId())) {
|
|
|
|
|
byWxId = new WeChatAccount();
|
|
|
|
|
BeanUtil.copyProperties(userLoginDTO, byWxId);
|
|
|
|
|
byWxId.setHeaderUrl(userLoginDTO.getBigHeadImgUrl());
|
|
|
|
|
byWxId.setUserId(loginEquipment.getUserId());
|
|
|
|
|
return this.save(byWxId);
|
|
|
|
|
}
|
|
|
|
|
byWxId.setStatus(status == WechatCallbackConstant.LOGIN_SUCCESS ?
|
|
|
|
|
DefaultNumberConstants.ONE_NUMBER : DefaultNumberConstants.MINUS_ONE_NUMBER);
|
|
|
|
|
return this.updateById(byWxId);
|
|
|
|
|
public Boolean weChatAccountLoginByRespon(WeChatUserLoginDTO userLoginDTO, Integer status, Long userId, Long id) {
|
|
|
|
|
WeChatAccount byWxId = this.baseMapper.findByWxId(userLoginDTO.getWxId());
|
|
|
|
|
if (ObjectUtil.isNull(byWxId) || ObjectUtil.isNull(byWxId.getId())) {
|
|
|
|
|
Long saveId = IdUtil.getSnowflake(workerId, datacenterId).nextId();
|
|
|
|
|
WeChatEquipment equipment = new WeChatEquipment();
|
|
|
|
|
byWxId = new WeChatAccount();
|
|
|
|
|
BeanUtil.copyProperties(userLoginDTO, byWxId);
|
|
|
|
|
byWxId.setHeaderUrl(userLoginDTO.getBigHeadImgUrl());
|
|
|
|
|
byWxId.setId(saveId);
|
|
|
|
|
byWxId.setUserId(userId);
|
|
|
|
|
equipment.setEquipmentId(id);
|
|
|
|
|
equipment.setAccountId(saveId);
|
|
|
|
|
weChatEquipmentMapper.insert(equipment);
|
|
|
|
|
return this.save(byWxId);
|
|
|
|
|
}
|
|
|
|
|
return Boolean.FALSE;
|
|
|
|
|
BeanUtil.copyProperties(userLoginDTO, byWxId);
|
|
|
|
|
byWxId.setStatus(status == WechatCallbackConstant.LOGIN_SUCCESS ?
|
|
|
|
|
DefaultNumberConstants.ONE_NUMBER : DefaultNumberConstants.MINUS_ONE_NUMBER);
|
|
|
|
|
return this.updateById(byWxId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -180,7 +206,7 @@ public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, We
|
|
|
|
|
BeanUtil.copyProperties(vo, addFriendVo);
|
|
|
|
|
// 查询数据天数据
|
|
|
|
|
List<WeChatAddFriendVo> weChatAddFriendVos =
|
|
|
|
|
loginEquipmentService.queryByDate(DefaultNumberConstants.MINUS_FIFTEEN_NUMBER, SecurityUtils.getCurrentUserId(), vo.getWxId());
|
|
|
|
|
loginEquipmentService.queryByDate(DefaultNumberConstants.FIFTEEN_NUMBER, SecurityUtils.getCurrentUserId(), vo.getWxId());
|
|
|
|
|
// 转为map
|
|
|
|
|
Map<String, List<WeChatAddFriendVo>> map = weChatAddFriendVos.stream().collect
|
|
|
|
|
(Collectors.groupingBy(WeChatAddFriendVo::getDayStr));
|
|
|
|
@ -228,7 +254,7 @@ public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, We
|
|
|
|
|
if (dayNum > DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
LoginEquipment loginEquipment = loginEquipmentService.queryByRobotId(robotId);
|
|
|
|
|
if (ObjectUtil.isNotNull(loginEquipment) && ObjectUtil.isNotNull(loginEquipment.getId())) {
|
|
|
|
|
DateTime dateTime = DateUtil.offsetDay(loginEquipment.getExpirationTime(), dayNum);
|
|
|
|
|
DateTime dateTime = DateUtil.endOfDay(DateUtil.offsetDay(loginEquipment.getExpirationTime(), dayNum));
|
|
|
|
|
loginEquipment.setExpirationTime(dateTime);
|
|
|
|
|
return loginEquipmentService.updateById(loginEquipment);
|
|
|
|
|
}
|
|
|
|
@ -242,4 +268,42 @@ public class WeChatServiceImpl extends ExtendServiceImpl<WeChatAccountMapper, We
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public AccountStatisticsVO statisticsAccountByUserId(Long currentUserId) {
|
|
|
|
|
List<String> onlineList = Lists.newArrayList();
|
|
|
|
|
AccountStatisticsVO vo = new AccountStatisticsVO();
|
|
|
|
|
List<WeChatAccountVO> weChatAccounts = loginEquipmentService.queryByUserId(currentUserId);
|
|
|
|
|
|
|
|
|
|
Long friendNum = wechatFriendService.queryByUserId(currentUserId);
|
|
|
|
|
Integer abnormalNum = DefaultNumberConstants.ZERO_NUMBER;
|
|
|
|
|
Integer onlineNum = DefaultNumberConstants.ZERO_NUMBER;
|
|
|
|
|
Map<String, Object> map = Maps.newHashMap();
|
|
|
|
|
for (WeChatAccountVO weChatAccount : weChatAccounts) {
|
|
|
|
|
map.put("robotId", weChatAccount.getRobotId());
|
|
|
|
|
String robotResult = HttpUtil.get
|
|
|
|
|
(weChatProperties.getGatewayHost().concat(WeChatRequestConstants.GET_ROBOT_TYPE)
|
|
|
|
|
.concat(weChatProperties.getAppKey()), map);
|
|
|
|
|
WeChatResponse weChatResponse = JSONUtil.toBean(robotResult, WeChatResponse.class);
|
|
|
|
|
if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) {
|
|
|
|
|
WeChatAccountDTO dto = BeanUtil.toBean(weChatResponse.getData(), WeChatAccountDTO.class);
|
|
|
|
|
if (ObjectUtil.isNotNull(dto) &&
|
|
|
|
|
dto.getStatus() == DefaultNumberConstants.ONE_NUMBER
|
|
|
|
|
&& !onlineList.contains(dto.getPit())) {
|
|
|
|
|
onlineList.add(dto.getPit());
|
|
|
|
|
onlineNum += DefaultNumberConstants.ONE_NUMBER;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
vo.setFriendNum(friendNum);
|
|
|
|
|
vo.setOnlineNum(onlineNum);
|
|
|
|
|
vo.setAbnormalNum(abnormalNum);
|
|
|
|
|
vo.setAccountNum(weChatAccounts.size());
|
|
|
|
|
return vo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean updateRemarkByWechatId(String wxId, String remark) {
|
|
|
|
|
return this.baseMapper.updateRemark(wxId, remark);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|