韦忠喜提交

master
weizhongxi 3 years ago
parent dc44d17446
commit 3272b0bc3c

@ -19,7 +19,11 @@ public enum ResponseCode {
// 通用请求参数校验
ILLEGAL_ARGUMENT(1,"请求参数格式错误"),
EMPTY_ARGUMENT(1,"请求参数为空"),
/** modeify by wzx
*/
NO_SMS_BAD(1,"短信内容有问题"),
NO_MATCH_ARGUMENT_SET(1,"不能满足要求的参数设置"),
NO_FILE_INPUT(1,"没有文件输入"),
// 特殊需要进行前端返回说明的参数定义

@ -29,6 +29,7 @@ import me.zhengjie.modules.buildrecord.service.dto.BuildRecordQueryCriteria;
import me.zhengjie.modules.buildrecord.task.ProduceBigDataTask;
import me.zhengjie.modules.buildrecord.task.SendBigDataTask;
import me.zhengjie.modules.buildrecord.task.dto.SendBigDataDTO;
import me.zhengjie.modules.buildrecord.util.WordFilter;
import me.zhengjie.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
@ -59,11 +60,6 @@ public class BuildRecordController {
private final BuildRecordService buildRecordService;
private final String word1 = "日";
private final String word2 = "你妹";
private final String word3 = "操";
@Autowired
private ProduceBigDataTask produceBigDataTask;
@ -175,8 +171,9 @@ public class BuildRecordController {
}
//判断内容是否含有不良词
if (!StringUtils.isBlank(buildRecordSendVO.getRemoteRecord().getSmsContent())){
if (buildRecordSendVO.getRemoteRecord().getSmsContent().contains(word1) || buildRecordSendVO.getRemoteRecord().getSmsContent().contains(word2)
||buildRecordSendVO.getRemoteRecord().getSmsContent().contains(word3)){
WordFilter wf = new WordFilter();
String filter_search = wf.filter_search(buildRecordSendVO.getRemoteRecord().getSmsContent());
if (buildRecordSendVO.getRemoteRecord().getSmsContent().length() != filter_search.length()){
return new ResponseEntity<>(CommonResponse.createByError(ResponseCode.NO_SMS_BAD), HttpStatus.OK);
}
}

@ -0,0 +1,5 @@
package me.zhengjie.modules.buildrecord.rest.consts;
public class Sysconts {
public static final Integer NO_SEND = 0;
}

@ -10,11 +10,14 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import lombok.extern.slf4j.Slf4j;
import me.zhengjie.common.json.PushDBJsonContent;
import me.zhengjie.exception.BadRequestException;
import me.zhengjie.modules.buildrecord.domain.BuildRecord;
import me.zhengjie.modules.buildrecord.rest.consts.Sysconts;
import me.zhengjie.modules.buildrecord.service.BuildRecordService;
import me.zhengjie.modules.buildrecord.service.dto.BuildRecordDto;
import me.zhengjie.modules.buildrecord.task.dto.SendBigDataDTO;
import me.zhengjie.modules.buildrecord.task.model.SendSmsContenJsonContent;
import me.zhengjie.modules.remoterec.consts.SysConst;
import me.zhengjie.modules.remoterec.domain.RemoteRecord;
import me.zhengjie.modules.remoterec.service.RemoteRecordService;
import me.zhengjie.modules.remoterec.service.dto.RemoteRecordDto;
@ -122,7 +125,7 @@ public class SendBigDataTask {
// 获取需要进行去重的任务路径
String resultFilePath = getPreFilterPath(sendBigDataDTO);
if (resource != null){
if (resource.getId() != null){
// 根据发送任务的Id来读取发送号码表
Integer id = resource.getId();
@ -137,11 +140,11 @@ public class SendBigDataTask {
AtomicLong atomicLong = batchSend(collect, sendBigDataDTO, buildRecordDto);
finishSendThenUpdateRec(resource, buildRecordDto, atomicLong);
}
}
if (remoteRecord != null){
if (remoteRecord.getId() != null){
RemoteRecordDto remoteRecordDto = remoteRecordService.findById(remoteRecord.getId());
// //添加部分
// remoteRecordDto.setLocalSavePath(remoteRecordDto.getLocalSavePath()+"bak");
waitSendSuccessRemoteRec(remoteRecordDto);
// 远程文件存储形式的源
@ -161,18 +164,16 @@ public class SendBigDataTask {
remoteRecordService.update(remoteRecord);
RemoteRecordDto remoteRecordDto = remoteRecordService.findById(remoteRecord.getId());
if (remoteRecordDto != null){
TbSendSmsContent tbSendSmsContent = new TbSendSmsContent();
tbSendSmsContent.setSmsContent(remoteRecord.getSmsContent());
tbSendSmsContent.setSendStatus(0);
tbSendSmsContent.setSendStatus(Sysconts.NO_SEND);
tbSendSmsContent.setTaskName(sendBigDataDTO.getSendName());
Date date = new Date();
Timestamp nousedate = new Timestamp(date.getTime());
Timestamp nousedate = new Timestamp(System.currentTimeMillis());
tbSendSmsContent.setPushTime(nousedate);
tbSendSmsContent.setGmtCreate(nousedate);
tbSendSmsContent.setGmtModified(nousedate);
tbSendSmsContent.setLinkUrl(remoteRecord.getLinkUrl());
// String username = SecurityUtils.getCurrentUsername();
tbSendSmsContent.setOperation(remoteRecordDto.getOperation());
TbSendSmsContentDto tbSendSmsContentDto = tbSendSmsContentService.create(tbSendSmsContent);
tbSendSmsContentDto.setTaskName(sendBigDataDTO.getSendName());
@ -181,8 +182,8 @@ public class SendBigDataTask {
}
}
}
// 乱序 乱序的逻辑写在SQL语句中
// Collections.shuffle(collect);
}
}
}
private void waitSendSuccessRemoteRec(RemoteRecordDto remoteRecordDto) {
@ -483,6 +484,7 @@ public class SendBigDataTask {
Thread.sleep(3_0000);
} catch (InterruptedException e) {
log.error("SendBigDataTask|sendSmsContent sleep ERROR. message is", e.getMessage(), e);
throw new BadRequestException("请求异常!!!");
}
log.error("========== [SendBigDataTask|sendSmsContent request fail, response is {} ] ==========", httpResponse.body());
}
@ -491,6 +493,7 @@ public class SendBigDataTask {
tbSendSmsContent.setId(tbSendSmsContentDto.getId());
if (count >= 3) {
log.error("========== [SendBigDataTask|sendSmsContent update send status fail, url is {} ] ==========" );
throw new BadRequestException("请求异常!!!");
} else {
//发送成功!!
tbSendSmsContent.setSendStatus(1);

@ -0,0 +1,616 @@
package me.zhengjie.modules.buildrecord.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
public class KeyWordFilter {
public static final String PATH_DIC_WFC = "/lib/wfc.dic";
public static final String PATH_DIC_FQC = "/lib/fqc.dic";
private HashMap<String, String> wfc_map = null;
private HashMap<String, String> fqc_map = null;
private HashMap<String, Integer> firstword_map = new HashMap<String, Integer>();
private HashMap<String, Integer> firstword_fqc_map = new HashMap<String, Integer>();
private static KeyWordFilter singleton;
private KeyWordFilter() {
}
public synchronized static KeyWordFilter getInstance() {
if (singleton == null) {
singleton = new KeyWordFilter();
}
return singleton;
}
public synchronized HashMap<String, String> getWfcMap() {
if (wfc_map == null) {
wfc_map = getWordMap(PATH_DIC_WFC, "");
}
return wfc_map;
}
public synchronized HashMap<String, String> getFqcMap() {
if (fqc_map == null) {
fqc_map = getWordMap(PATH_DIC_FQC, "");
}
return fqc_map;
}
public synchronized HashMap<String, Integer> getFirstwordMap() {
if (firstword_map == null) {
firstword_map = new HashMap<String, Integer>();
}
return firstword_map;
}
public synchronized HashMap<String, Integer> getFirstwordFqcMap() {
if (firstword_fqc_map == null) {
firstword_fqc_map = new HashMap<String, Integer>();
}
return firstword_fqc_map;
}
public boolean reload() {
try {
wfc_map = null;
fqc_map = null;
KeyWordFilter.getInstance().getWfcMap();
KeyWordFilter.getInstance().getFqcMap();
return true;
} catch (Exception e) {
return false;
}
}
public boolean restart() {
try {
singleton = null;
getInstance();
return true;
} catch (Exception e) {
return false;
}
}
private HashMap<String, String> getWordMap(String dicPath, String replace) {
InputStream is = null;
HashMap<String, String> wordMap = new HashMap<String, String>();
try {
// is = new FileInputStream(dicPath);
is = KeyWordFilter.class.getResourceAsStream(dicPath);
if (is == null) {
System.out.println(dicPath + " not found!!!");
}
BufferedReader br = new BufferedReader(new InputStreamReader(is,
"UTF-8"), 512);
String theWord = null;
HashMap<String, Integer> firstword = getFirstwordMap();
HashMap<String, Integer> firstword_fqc = getFirstwordFqcMap();
String ss = null;
if (dicPath.equals(PATH_DIC_FQC)) {
do {
theWord = br.readLine();
if (theWord != null && !"".equals(theWord.trim())) {
String[] sss = theWord.trim().toLowerCase().split("@@");
if (sss[0] != null && !sss[0].equals("")) {
if (firstword_fqc
.containsKey(sss[0].toCharArray()[0] + "")
&& firstword_fqc
.get(sss[0].toCharArray()[0] + "") > sss[0]
.length()) {
// do nothing
} else {
firstword_fqc.put(sss[0].toCharArray()[0] + "",
sss[0].length());
}
wordMap.put(sss[0], sss.length == 1 ? "" : sss[1]);
}
}
} while (theWord != null);
} else {
do {
theWord = br.readLine();
if (theWord != null && !"".equals(theWord.trim())) {
ss = theWord.trim().toLowerCase();
if (firstword.containsKey(ss.toCharArray()[0] + "")
&& firstword.get(ss.toCharArray()[0] + "") > ss
.length()) {
// do nothing
} else {
firstword.put(theWord.trim().toLowerCase()
.toCharArray()[0]
+ "", ss.length());
}
wordMap.put(theWord.trim().toLowerCase(), replace);
}
} while (theWord != null);
}
} catch (IOException ioe) {
if (is == null) {
System.err.println(dicPath + " not found!!!");
} else {
System.err.println(dicPath + " loading exception.");
}
ioe.printStackTrace();
} finally {
try {
if (is != null) {
is.close();
is = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
return wordMap;
}
public String filter_in(String content, String sta, String usid) {
if (content == null || content.length() <= 0) {
return "0";
}
if (usid == null) {
usid = "0";
}
HashMap<String, String> wfc_map = KeyWordFilter.getInstance()
.getWfcMap();
HashMap<String, String> fqc_map = KeyWordFilter.getInstance()
.getFqcMap();
HashMap<String, Integer> firstword_map = KeyWordFilter.getInstance()
.getFirstwordMap();
HashMap<String, Integer> firstword_fqc_map = KeyWordFilter
.getInstance().getFirstwordFqcMap();
int result_type = 0;
char[] ch = content.toCharArray();
StringBuffer ret = new StringBuffer();
StringBuffer word = new StringBuffer();
int start = 0;
int step = 0;
int max_length = 1;
for (int i = 0; i < ch.length; i++) {
if (step == 0) {
start = i;
step = 1;
}
char c = ch[i];
word.append(c);
String tmp = word.toString();
if (i == start) {
if (!firstword_fqc_map.containsKey(tmp.toLowerCase())) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
continue;
} else {
max_length = firstword_fqc_map.get(tmp.toLowerCase());
}
}
if (fqc_map.containsKey(tmp.toLowerCase())) {
ret.append(fqc_map.get(tmp.toLowerCase()));
step = 0;
} else if (word.length() >= max_length || i >= ch.length - 1) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
}
}
ch = ret.toString().toCharArray();
word = new StringBuffer();
start = 0;
step = 0;
if (sta.equals("1")) {
for (int i = 0; i < ch.length; i++) {
if (step == 0) {
start = i;
step = 1;
}
char c = ch[i];
word.append(c);
String tmp = word.toString();
if (i == start) {
if (!firstword_map.containsKey(tmp.toLowerCase())) {
step = 0;
word.delete(0, word.length());
i = start;
continue;
} else {
max_length = firstword_map.get(tmp.toLowerCase());
}
}
if (wfc_map.containsKey(tmp.toLowerCase())) {
result_type = 2;
break;
} else if (word.length() >= max_length || i >= ch.length - 1) {
step = 0;
word.delete(0, word.length());
i = start;
}
}
} else if (sta.equals("0")) {
for (int i = 0; i < ch.length; i++) {
if (step == 0) {
start = i;
step = 1;
}
char c = ch[i];
word.append(c);
String tmp = word.toString();
if (i == start) {
if (!firstword_map.containsKey(tmp.toLowerCase())) {
step = 0;
word.delete(0, word.length());
i = start;
continue;
} else {
max_length = firstword_map.get(tmp.toLowerCase());
}
}
if (wfc_map.containsKey(tmp.toLowerCase())) {
result_type = 2;
break;
} else if (word.length() >= max_length || i >= ch.length - 1) {
step = 0;
word.delete(0, word.length());
i = start;
}
}
}
return Integer.toString(result_type);
}
public String filter_out(String content, String sta, String usid) {
if (content == null || content.length() <= 0) {
return "";
}
if (usid == null) {
usid = "0";
}
HashMap<String, String> wfc_map = KeyWordFilter.getInstance()
.getWfcMap();
HashMap<String, String> fqc_map = KeyWordFilter.getInstance()
.getFqcMap();
HashMap<String, Integer> firstword_map = KeyWordFilter.getInstance()
.getFirstwordMap();
HashMap<String, Integer> firstword_fqc_map = KeyWordFilter
.getInstance().getFirstwordFqcMap();
char[] ch = content.toCharArray();
StringBuffer ret = new StringBuffer();
StringBuffer word = new StringBuffer();
int start = 0;
int step = 0;
int max_length = 1;
for (int i = 0; i < ch.length; i++) {
if (step == 0) {
start = i;
step = 1;
}
char c = ch[i];
word.append(c);
String tmp = word.toString();
if (i == start) {
if (!firstword_fqc_map.containsKey(tmp.toLowerCase())) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
continue;
} else {
max_length = firstword_fqc_map.get(tmp.toLowerCase());
}
}
if (fqc_map.containsKey(tmp.toLowerCase())) {
ret.append(fqc_map.get(tmp.toLowerCase()));
step = 0;
} else if (word.length() >= max_length || i >= ch.length - 1) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
}
}
ch = ret.toString().toCharArray();
ret = new StringBuffer();
word = new StringBuffer();
start = 0;
step = 0;
if (sta.equals("1")) {
for (int i = 0; i < ch.length; i++) {
// System.out.println("i="+i+"\tstart="+start+"\tstep="+step+"\tret="+ret.toString());
if (step == 0) {
start = i;
step = 1;
}
char c = ch[i];
word.append(c);
String tmp = word.toString();
if (i == start) {
if (!firstword_map.containsKey(tmp.toLowerCase())) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
continue;
} else {
max_length = firstword_map.get(tmp.toLowerCase());
}
}
if (wfc_map.containsKey(tmp.toLowerCase())) {
ret.append("");
step = 0;
} else if (word.length() >= max_length || i >= ch.length - 1) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
}
}
} else if (sta.equals("0")) {
for (int i = 0; i < ch.length; i++) {
if (step == 0) {
start = i;
step = 1;
}
char c = ch[i];
word.append(c);
String tmp = word.toString();
if (i == start) {
if (!firstword_map.containsKey(tmp.toLowerCase())) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
continue;
} else {
max_length = firstword_map.get(tmp.toLowerCase());
}
}
if (wfc_map.containsKey(tmp.toLowerCase())) {
ret.append("");
step = 0;
} else if (word.length() >= max_length || i >= ch.length - 1) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
}
}
}
String rs = ret.toString().replace("⊙", "");
return rs;
}
public String filter_search(String content) {
if (content == null || content.length() <= 0) {
return "";
}
HashMap<String, String> fqc_map = KeyWordFilter.getInstance()
.getFqcMap();
HashMap<String, String> wfc_map = KeyWordFilter.getInstance()
.getWfcMap();
HashMap<String, Integer> firstword_map = KeyWordFilter.getInstance()
.getFirstwordMap();
HashMap<String, Integer> firstword_fqc_map = KeyWordFilter
.getInstance().getFirstwordFqcMap();
char[] ch = content.toCharArray();
StringBuffer ret = new StringBuffer();
StringBuffer word = new StringBuffer();
int start = 0;
int step = 0;
int max_length = 1;
for (int i = 0; i < ch.length; i++) {
if (step == 0) {
start = i;
step = 1;
}
char c = ch[i];
word.append(c);
String tmp = word.toString();
if (i == start) {
if (!firstword_fqc_map.containsKey(tmp.toLowerCase())) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
continue;
} else {
max_length = firstword_fqc_map.get(tmp.toLowerCase());
}
}
if (fqc_map.containsKey(tmp.toLowerCase())) {
ret.append(fqc_map.get(tmp.toLowerCase()));
step = 0;
} else if (word.length() >= max_length || i >= ch.length - 1) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
}
}
ch = ret.toString().toCharArray();
ret = new StringBuffer();
word = new StringBuffer();
start = 0;
step = 0;
for (int i = 0; i < ch.length; i++) {
if (step == 0) {
start = i;
step = 1;
}
char c = ch[i];
word.append(c);
String tmp = word.toString();
if (i == start) {
if (!firstword_map.containsKey(tmp.toLowerCase())) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
continue;
} else {
max_length = firstword_map.get(tmp.toLowerCase());
}
}
if (wfc_map.containsKey(tmp.toLowerCase())) {
ret.append("");
step = 0;
} else if (word.length() >= max_length || i >= ch.length - 1) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
}
}
String rs = ret.toString().replace("⊙", "");
return rs;
}
public String filter_jk(String content, String sta, String usid,
String mgcstyle1, String mgcstyle2, String wfcstyle1,
String wfcstyle2) {
if (content == null || content.length() <= 0) {
return "";
}
if (usid == null) {
usid = "0";
}
HashMap<String, String> wfc_map = KeyWordFilter.getInstance()
.getWfcMap();
HashMap<String, String> fqc_map = KeyWordFilter.getInstance()
.getFqcMap();
HashMap<String, Integer> firstword_map = KeyWordFilter.getInstance()
.getFirstwordMap();
HashMap<String, Integer> firstword_fqc_map = KeyWordFilter
.getInstance().getFirstwordFqcMap();
char[] ch = content.toCharArray();
StringBuffer ret = new StringBuffer();
StringBuffer word = new StringBuffer();
int start = 0;
int step = 0;
int max_length = 1;
for (int i = 0; i < ch.length; i++) {
if (step == 0) {
start = i;
step = 1;
}
char c = ch[i];
word.append(c);
String tmp = word.toString();
if (i == start) {
if (!firstword_fqc_map.containsKey(tmp.toLowerCase())) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
continue;
} else {
max_length = firstword_fqc_map.get(tmp.toLowerCase());
}
}
if (fqc_map.containsKey(tmp.toLowerCase())) {
ret.append(fqc_map.get(tmp.toLowerCase()));
step = 0;
} else if (word.length() >= max_length || i >= ch.length - 1) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
}
}
ch = ret.toString().toCharArray();
ret = new StringBuffer();
word = new StringBuffer();
start = 0;
step = 0;
if (sta.equals("1")) {
for (int i = 0; i < ch.length; i++) {
if (step == 0) {
start = i;
step = 1;
}
char c = ch[i];
word.append(c);
String tmp = word.toString();
if (i == start) {
if (!firstword_map.containsKey(tmp.toLowerCase())) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
continue;
} else {
max_length = firstword_map.get(tmp.toLowerCase());
}
}
if (wfc_map.containsKey(tmp.toLowerCase())) {
ret.append(wfcstyle1);
ret.append(tmp.toLowerCase());
ret.append(wfcstyle2);
step = 0;
} else if (word.length() >= max_length || i >= ch.length - 1) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
}
}
} else if (sta.equals("0")) {
for (int i = 0; i < ch.length; i++) {
if (step == 0) {
start = i;
step = 1;
}
char c = ch[i];
word.append(c);
String tmp = word.toString();
if (i == start) {
if (!firstword_map.containsKey(tmp.toLowerCase())) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
continue;
} else {
max_length = firstword_map.get(tmp.toLowerCase());
}
}
if (wfc_map.containsKey(tmp.toLowerCase())) {
ret.append(wfcstyle1);
ret.append(tmp.toLowerCase());
ret.append(wfcstyle2);
step = 0;
} else if (word.length() >= max_length || i >= ch.length - 1) {
step = 0;
ret.append(ch[start]);
word.delete(0, word.length());
i = start;
}
}
}
String rs = ret.toString().replace("⊙", "");
return rs;
}
}

@ -0,0 +1,38 @@
/*
10
filter_in_com
filter_in_info
filter_out_com
filter_out_info
filter_jk_com ;
filter_jk_info
*/
package me.zhengjie.modules.buildrecord.util;
public class WordFilter{
public KeyWordFilter kwf = KeyWordFilter.getInstance();
public String filter_jk_info(String content){
return kwf.filter_jk(content,"0","0","<font color=#ff0000>","</font>","<font color=#00ff00>","</font>");
}
public String filter_jk(String content,String sta,String mgcstyle1,String mgcstyle2,String wfcstyle1,String wfcstyle2){
return kwf.filter_jk(content,sta,"0",mgcstyle1, mgcstyle2, wfcstyle1, wfcstyle2);
}
public String filter_search(String content){
return kwf.filter_search(content);
}
/*
*
*/
public boolean reload(){
return kwf.reload();
}
}

@ -0,0 +1,50 @@
南宁市永安@@南宁市永⊙安
硫酸亚铁@@硫⊙酸亚铁
硫酸铁@@硫⊙酸铁
硫酸镁@@硫⊙酸镁
成人学校@@成⊙人学校
成人高考@@成⊙人高考
蛋白粉@@蛋白⊙粉
屏蔽电缆@@屏⊙蔽电缆
钛白粉@@钛白⊙粉
华莉达弹簧@@华莉达弹⊙簧
沙发转盘@@沙发转⊙盘
艺博彩鸿@@艺博⊙彩鸿
屏蔽线@@屏⊙蔽线
屏蔽网络线@@屏⊙蔽网络线
隐形纱窗@@隐⊙形纱窗
现代办公@@现代⊙办公
钻枪支架@@钻枪⊙支架
一次性用品@@一次性⊙用品
广东王牌@@广东⊙王牌
永康市@@永⊙康市
门口交易@@门口⊙交易
感情色彩@@感情⊙色彩
港口交通@@港口⊙交通
路口交通@@路口⊙交通
口交换机@@口⊙交换机
宝鸡巴士@@宝鸡⊙巴士
江阴道路@@江阴⊙道路
千百度@@千百⊙度
解放军7@@解⊙放军7
解放军七@@解⊙放军七
茅台镇@@茅⊙台镇
优阳科技@@优⊙阳科技
打折机票预订@@打折机⊙票预订
三螺@@三⊙螺
3螺@@3⊙螺
漂白粉@@漂白⊙粉
电动车@@电动⊙车
硫酸泵@@硫⊙酸泵
硫酸离心泵@@硫⊙酸离心泵
硫酸液下泵@@硫⊙酸液下泵
硫酸钡@@硫⊙酸钡
硫酸铵@@硫⊙酸铵
ngcd@@ng⊙cd
铅丝石笼@@铅⊙丝石笼
ISO认证@@ISO认⊙证
UC4@@UC⊙4
厨房刀具@@厨房刀⊙具
兽药@@兽⊙药
电动门遥控器@@电动门遥控⊙器
卷帘门遥控器@@卷帘门遥控⊙器

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save