package com.nova.sankuai.service.impl;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nova.sankuai.domain.api.aliyunIP.AliyunUtil;
import com.nova.sankuai.domain.dto.AddAppAudit;
import com.nova.sankuai.domain.dto.UpdateAppAudit;
import com.nova.sankuai.domain.entity.AppAudit;
import com.nova.sankuai.domain.vo.AppAuditVo;
import com.nova.sankuai.infra.config.CommonException;
import com.nova.sankuai.infra.mapper.AppAuditMapper;
import com.nova.sankuai.infra.utils.IpUtil;
import com.nova.sankuai.infra.utils.PageRequest;
import com.nova.sankuai.infra.utils.PageUtil;
import com.nova.sankuai.infra.utils.RsaSecretUtils;
import com.nova.sankuai.service.IAppAuditService;
import lombok.AllArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Random;
/**
*
* description
*
*
* @author denglb 2021/11/18
*/
@Service
@AllArgsConstructor
public class AppAuditServiceImpl extends ServiceImpl implements IAppAuditService {
private final AliyunUtil aliyunUtil;
private final AppAuditMapper appAuditMapper;
private final PageUtil pageUtil;
@Override
public JSONObject audit(AppAudit audit, HttpServletRequest request) {
JSONObject result = new JSONObject(true);
result.putOnce("code", 200);
result.putOnce("msg", "成功");
String content = null;
AppAudit one = this.getOne(new LambdaQueryWrapper()
.eq(AppAudit::getCompany, audit.getCompany())
.eq(AppAudit::getPlatform, audit.getPlatform())
.eq(AppAudit::getSource, audit.getSource())
.eq(AppAudit::getVersion, audit.getVersion()));
if (one == null) {
result.putOnce("data", "true");
} else {
if (one.getType() != null && 0 == one.getType()) {
result.putOnce("data", "false");
content = one.getContent0();
} else if (one.getType() != null && 1 == one.getType()) {
result.putOnce("data", "true");
content = one.getContent1();
}
}
if (content == null) {
content = "https://skfq.biaohekeji.com?appId=08d4ced2-d7d0-4509-b197-317f99c7f08f";
}
result.putOnce("content", content);
result.putOnce("timestamp", System.currentTimeMillis());
result.putOnce("chat", getRandomStr());
result.putOnce("xcodesss", getRandomStr());
result.putOnce("guidang", getRandomStr());
result.putOnce("demoww", getRandomStr());
result.putOnce("sahre", getRandomStr());
if (one.getType() != null && 0 == one.getType() && StringUtils.isNotEmpty(one.getPublicKey())) {
try {
com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
if (StringUtils.isNotEmpty(one.getOcrId())) {
jsonObject.put("id", one.getOcrId());
}
if (StringUtils.isNotEmpty(one.getOcrSecret())) {
jsonObject.put("secret", one.getOcrSecret());
}
if (StringUtils.isNotEmpty(one.getOcrLicense())) {
jsonObject.put("license", one.getOcrLicense());
}
if (jsonObject != null && !jsonObject.isEmpty()) {
byte[] bytes = RsaSecretUtils.publicEncrypt(jsonObject.toJSONString().getBytes(), one.getPublicKey());
String ocrinfo = RsaSecretUtils.byte2Base64(bytes);
result.putOnce("ocrinfo", ocrinfo);
}
} catch (Exception e) {
e.printStackTrace();
}
}
String ip = IpUtil.getIpAddr(request);
if (aliyunUtil.checkCounty(ip)) {
result.replace("data", "true");
}
// if ("true".equals(result.get("data"))) {
// result.replace("content", null);
// }
return result;
}
@Override
public void addAppVersion(AddAppAudit addAppAudit) {
String company = addAppAudit.getCompany().toLowerCase();
String platform = addAppAudit.getPlatform().toLowerCase();
String source = addAppAudit.getSource().toLowerCase();
String version = addAppAudit.getVersion();
addAppAudit.setCompany(company);
addAppAudit.setPlatform(platform);
addAppAudit.setSource(source);
//判断是否已存在
checkIsExistence(company, platform, source, version);
AppAudit appAuditsave = new AppAudit();
BeanUtils.copyProperties(addAppAudit, appAuditsave);
if (appAuditsave.getType() == null) {
appAuditsave.setType(1);
}
if (0 == appAuditsave.getType()) {
appAuditsave.setContent0(addAppAudit.getContent());
} else {
appAuditsave.setContent1(addAppAudit.getContent());
}
boolean save = save(appAuditsave);
if (!save) {
throw new CommonException("新增失败");
}
}
@Override
public void updateAppVersion(UpdateAppAudit updateAppAudit) {
AppAudit appAudit = getById(updateAppAudit.getId());
if (appAudit == null) {
throw new CommonException("未查询到App免审");
}
String company = updateAppAudit.getCompany().toLowerCase();
String platform = updateAppAudit.getPlatform().toLowerCase();
String source = updateAppAudit.getSource().toLowerCase();
String version = updateAppAudit.getVersion();
//判断是否已存在
checkOtherIsExistence(updateAppAudit.getId(), company, platform, source, version);
LambdaUpdateWrapper lambdaUpdate = Wrappers.lambdaUpdate();
lambdaUpdate.set(AppAudit::getType, updateAppAudit.getType());
if (updateAppAudit.getType() == null) {
lambdaUpdate.set(AppAudit::getType, 1);
}
if (0 == updateAppAudit.getType()) {
lambdaUpdate.set(AppAudit::getContent0, updateAppAudit.getContent());
} else {
lambdaUpdate.set(AppAudit::getContent1, updateAppAudit.getContent());
}
lambdaUpdate.set(AppAudit::getVersion, updateAppAudit.getVersion());
lambdaUpdate.set(AppAudit::getSource, source);
lambdaUpdate.set(AppAudit::getPlatform, platform);
lambdaUpdate.set(AppAudit::getCompany, company);
lambdaUpdate.set(AppAudit::getNotes, updateAppAudit.getNotes());
lambdaUpdate.eq(AppAudit::getId, updateAppAudit.getId());
boolean update = update(lambdaUpdate);
if (!update) {
throw new CommonException("修改失败");
}
}
@Override
public void deleteAppVersion(Long id) {
boolean removeById = removeById(id);
if (!removeById) {
throw new CommonException("删除失败");
}
}
@Override
public IPage queryAppVersion(PageRequest pageRequest,String company, String content) {
Page page = pageUtil.getPage(pageRequest);
IPage appAuditVoIPage = appAuditMapper.pageAppAudit(page, company, content);
return appAuditVoIPage;
}
public static String getRandomStr() {
String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++) {
int number = random.nextInt(base.length());
sb.append(base.charAt(number));
}
return sb.toString();
}
public void checkIsExistence(String company, String platform, String source, String version) {
AppAudit appAudit = getOne(new LambdaQueryWrapper().eq(AppAudit::getCompany, company)
.eq(AppAudit::getPlatform, platform).eq(AppAudit::getSource, source)
.eq(AppAudit::getVersion, version));
if (appAudit != null) {
throw new CommonException("该配置已存在");
}
}
public void checkOtherIsExistence(Long id, String company, String platform, String source, String version) {
List list = list(new LambdaQueryWrapper().eq(AppAudit::getCompany, company)
.eq(AppAudit::getPlatform, platform).eq(AppAudit::getSource, source)
.eq(AppAudit::getVersion, version).ne(AppAudit::getId, id));
if (list.size() > 0) {
throw new CommonException("该配置已存在");
}
}
}