From ebeef34e2731999b6d79d80bbdb0952a0e96b80e Mon Sep 17 00:00:00 2001 From: bmpandlcm <1102247926@qq.com> Date: Tue, 24 Sep 2024 08:38:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A4=90=E9=A5=AE=E9=A2=84?= =?UTF-8?q?=E7=BA=A6=E4=BB=A5=E5=8F=8A=E7=95=99=E8=A8=80=E6=9D=BF=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=84=B1=E6=95=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AppointmentInfoController.java | 13 +- .../controller/ServiceMealController.java | 42 + .../nmgs/service/AppointmentInfoService.java | 3 +- .../impl/ApponintmentInfoServiceImpl.java | 73 +- .../impl/IntegralLevelMessageServiceImpl.java | 6 + .../service/impl/MessagePushServiceImpl.java | 8 +- .../SerivceAreaOperationMealServiceImpl.java | 38 + .../service/impl/ServiceAreaServiceImpl.java | 2 +- .../service/impl/UserTableServiceImpl.java | 35 +- .../service/impl/UserVehicleServiceImpl.java | 49 +- src/main/java/com/nmgs/util/ImageUtils.java | 49 +- src/main/java/com/nmgs/util/PathUtil.java | 4 +- src/main/java/com/nmgs/util/PubTools.java | 8 +- .../java/com/nmgs/util/SensitiveFilter.java | 165 +++ src/main/java/com/nmgs/util/WordInit.java | 85 ++ src/main/resources/static/Sensitive.txt | 1105 +++++++++++++++++ 16 files changed, 1617 insertions(+), 68 deletions(-) create mode 100644 src/main/java/com/nmgs/controller/ServiceMealController.java create mode 100644 src/main/java/com/nmgs/util/SensitiveFilter.java create mode 100644 src/main/java/com/nmgs/util/WordInit.java create mode 100644 src/main/resources/static/Sensitive.txt diff --git a/src/main/java/com/nmgs/controller/AppointmentInfoController.java b/src/main/java/com/nmgs/controller/AppointmentInfoController.java index c6a0ea2..fbec157 100644 --- a/src/main/java/com/nmgs/controller/AppointmentInfoController.java +++ b/src/main/java/com/nmgs/controller/AppointmentInfoController.java @@ -46,9 +46,10 @@ public class AppointmentInfoController { public ResultData getList(@RequestParam(value = "userId") String userId, @RequestParam(value = "appointmentType") String appointmentType, @RequestParam(value = "orderScope",required = false) String orderScope, - @RequestParam(value = "pageSize") String pageSize, - @RequestParam(value = "currentPage") String currentPage, - @RequestParam(value = "id",required = false) String id){ + @RequestParam(value = "pageSize",required = false) String pageSize, + @RequestParam(value = "currentPage",required = false) String currentPage, + @RequestParam(value = "id",required = false) String id, + @RequestParam(value = "orderId",required = false) String orderId){ int start=0; int end=1000000000; List integrationList =null; @@ -56,10 +57,10 @@ public class AppointmentInfoController { if(!PubTools.isNull(pageSize) && !PubTools.isNull(currentPage)){ start=(Integer.parseInt(currentPage)-1)* Integer.parseInt(pageSize)+1; end=Integer.parseInt(currentPage)*Integer.parseInt(pageSize); - integrationList = this.appointmentInfoService.getList(id, userId,appointmentType,orderScope,start,end); - totalList = this.appointmentInfoService.getList(id, userId,appointmentType,orderScope,0,0); + integrationList = this.appointmentInfoService.getList(id,orderId, userId,appointmentType,orderScope,start,end); + totalList = this.appointmentInfoService.getList(id,orderId, userId,appointmentType,orderScope,0,0); }else{ - integrationList = this.appointmentInfoService.getList(id, userId,appointmentType,orderScope,start,end); + integrationList = this.appointmentInfoService.getList(id,orderId, userId,appointmentType,orderScope,start,end); totalList=integrationList; } if(integrationList != null){ diff --git a/src/main/java/com/nmgs/controller/ServiceMealController.java b/src/main/java/com/nmgs/controller/ServiceMealController.java new file mode 100644 index 0000000..60e9bfc --- /dev/null +++ b/src/main/java/com/nmgs/controller/ServiceMealController.java @@ -0,0 +1,42 @@ +package com.nmgs.controller; + +import com.nmgs.config.ResultData; +import com.nmgs.service.UserTableService; +import com.nmgs.service.impl.SerivceAreaOperationMealServiceImpl; +import com.nmgs.util.PubTools; +import com.nmgs.util.WebsocketUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("serviceMeal") +@Api(tags="商户套餐信息操作") +public class ServiceMealController { + + public SerivceAreaOperationMealServiceImpl serivceAreaOperationMealServiceImpl; + @Autowired + public void setSerivceAreaOperationMealServiceImpl(SerivceAreaOperationMealServiceImpl serivceAreaOperationMealServiceImpl) { + this.serivceAreaOperationMealServiceImpl = serivceAreaOperationMealServiceImpl; + } + + @RequestMapping(value = "getMealInfoById", + method = {RequestMethod.POST} + ) + @ApiOperation(value="根据套餐ID获取套餐信息",httpMethod = "POST") + public ResultData getMealInfoById(@RequestParam("mealId") String mealId){ + List userByOpenId = serivceAreaOperationMealServiceImpl.getMealInfoById(mealId); + if(userByOpenId ==null){ + return ResultData.fail("查询失败"); + }else if(userByOpenId !=null){ + return ResultData.success("查询成功",userByOpenId,userByOpenId.size()); + } + return ResultData.success(1,"查询成功"); + } +} diff --git a/src/main/java/com/nmgs/service/AppointmentInfoService.java b/src/main/java/com/nmgs/service/AppointmentInfoService.java index a021ae2..107c35f 100644 --- a/src/main/java/com/nmgs/service/AppointmentInfoService.java +++ b/src/main/java/com/nmgs/service/AppointmentInfoService.java @@ -8,13 +8,14 @@ public interface AppointmentInfoService { /** * 查询预约记录 * @param id + * @param orderId * @param userId * @param appointmentType * @param start * @param end * @return */ - public List getList(String id, String userId,String appointmentType,String orderSope,int start,int end); + public List getList(String id,String orderId, String userId,String appointmentType,String orderSope,int start,int end); /** * 获取线路信息 diff --git a/src/main/java/com/nmgs/service/impl/ApponintmentInfoServiceImpl.java b/src/main/java/com/nmgs/service/impl/ApponintmentInfoServiceImpl.java index dab57bf..8e5f247 100644 --- a/src/main/java/com/nmgs/service/impl/ApponintmentInfoServiceImpl.java +++ b/src/main/java/com/nmgs/service/impl/ApponintmentInfoServiceImpl.java @@ -58,11 +58,9 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { " OR ait.ACARNO = '' \n" + " OR ait.ACARNO = 'null' THEN\n" + " '' ELSE to_char(\n" + - " CONCAT(\n" + - " substr( ait.ACARNO, 1, instr( ait.ACARNO, '_' ) - 1 ) || '_',\n" + + " substr( ait.ACARNO, 1, instr( ait.ACARNO, '_' ) - 1 ) || '_' || " + " ( SELECT text FROM PLATECOLOR_TEXT WHERE value = substr( ait.ACARNO, instr( ait.ACARNO, '_' ) + 1 ) ) \n" + " ) \n" + - " ) \n" + " END AS ACARNONAME,\n" + "\t(\n" + "\tCASE\n" + @@ -100,12 +98,10 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { "\t CASE WHEN ait.ACARNO IS NULL \n" + " OR ait.ACARNO = '' \n" + " OR ait.ACARNO = 'null' THEN\n" + - " '' ELSE to_char(\n" + - " CONCAT(\n" + + " '' ELSE CONCAT(\n" + " substr( ait.ACARNO, 1, instr( ait.ACARNO, '_' ) - 1 ) , '_',\n" + " ( SELECT text FROM PLATECOLOR_TEXT WHERE value = substr( ait.ACARNO, instr( ait.ACARNO, '_' ) + 1 ) ) \n" + " ) \n" + - " ) \n" + " END AS ACARNONAME,\n" + "\t(\n" + "\tCASE\n" + @@ -132,7 +128,7 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { public static String returnSql="SELECT ID,AREANAME,USERNAME,STROEPIC,APPOINTMENTTIME,CREATETIME,TOTALINTEGRAL,APPOINTMENTTYPE," + "MEALS,MEALSCOUNT,APPOINTMENTLINEID,INTEGRATIONLISTID,ACARNONAME,ORDERID,COMPLETESTATUS,(CASE COMPLETESTATUS WHEN 1 THEN '待使用' WHEN 2 THEN '已使用' ELSE '已过期' END ) AS COMPLETESTATUSNAME "; @Override - public List getList(String id, String userId,String appointmentType,String orderSope,int start,int end) { + public List getList(String id, String orderId, String userId, String appointmentType, String orderSope, int start, int end) { List list=null; List listRet=new ArrayList(); String sqlTemp=sql; @@ -140,6 +136,9 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { if(!PubTools.isNull(id)){ sqlTemp += " and ait.ID = "+id+""; } + if (!PubTools.isNull(orderId)) { + sqlTemp += " and ait.ORDERID='" + orderId + "'"; + } if(!PubTools.isNull(userId)){ sqlTemp += " AND wut.OPENID='"+userId+"'"; } @@ -209,6 +208,8 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { ja.add(jo); } } + map.remove("STROEPIC"); + map.put("STROEPIC", PubTools.isEmpty(map.get("STROEPIC")) ? "" : PubTools.ClobToString(map.get("MEALPIC"))); map.put("MEALINFO",ja); listRet.add(map); } @@ -270,6 +271,7 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { String mealTotalMoney,String dateTime) { JSONObject retJo=new JSONObject(); String ret="-2";// -1 代表接口处理失败 1 处理成功 2 用户不存在 3 兑换积分大于用户可用积分 4 二维码信息过期 5 商户不存在 6 积分类型与消费方式不匹配 7 商户角色未设置 8 用户已冻结 + String jobNumber = "";//商户工号 try{ String currentDate=PubTools.getCurrentDate(); if("2".equals(appointmentType)) {//餐饮预约需要扣除积分 @@ -332,22 +334,13 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { retJo.put("PAYINTEGRAL", rebateIntegrateIFcZK); } - //查询用户累积获取的总积分.消费的不用管 - /* String totalAddIntegralSql = "SELECT COALESCE(MAX(ilt.TOTALADDINTEGRATION),0) AS TOTALADDINTEGRATION FROM INTEGRATION_LIST_TABLE ilt,WEIXN_USER_TABLE ut WHERE ilt.USERID = ut.ID AND ut.OPENID='" + openId + "'"; - List selectforlistTotalAdd = this.mapperI.selectforlist(totalAddIntegralSql); - double totalAddIntegral = 0.0; - if (selectforlistTotalAdd.size() > 0) { - Map o = (Map) selectforlistTotalAdd.get(0); - totalAddIntegral = Double.parseDouble(o.get("TOTALADDINTEGRATION").toString()); - }*/ - //判断选择的套餐是哪几个商户的, 分别消费了多少积分 - String servicelistSql = ""; - if ("2".equals(DBType)) {//oralce数据库 - servicelistSql = "select tt.JOBNUMBER,LISTAGG ( tt.ID, ',' ) WITHIN GROUP ( ORDER BY tt.JOBNUMBER ) AS MEALIDS,LISTAGG ( tt.MEALPRICE, ',' ) WITHIN GROUP ( ORDER BY tt.JOBNUMBER ) AS MEALPRICES from SERVICE_AREA_OPERATION_MEAL_TABLE tt where tt.ID in(" + mealId + ") group by tt.JOBNUMBER"; - } else if ("4".equals(DBType)) {//mysql数据库 - servicelistSql = "select tt.JOBNUMBER,GROUP_CONCAT(tt.ID ORDER BY tt.JOBNUMBER Separator ',') AS MEALIDS,GROUP_CONCAT(tt.MEALPRICE ORDER BY tt.JOBNUMBER Separator ',') AS MEALPRICES from SERVICE_AREA_OPERATION_MEAL_TABLE tt where tt.ID in(" + mealId + ") group by tt.JOBNUMBER"; + String serivceOperatorRole = "SELECT saot.ID,saot.USERNAME,saot.ROLEID,saot.JOBNUMBER,saot.SERVICEAREAID FROM SERVICE_AREA_OPERATORS_TABLE saot" + + " WHERE saot.ID=" + operatorId + ""; + List serviceOperatorList = this.mapperI.selectforlist(serivceOperatorRole); + if (serviceOperatorList != null && serviceOperatorList.size() > 0) {//商户不存在 + Map oTemp = (Map) serviceOperatorList.get(0); + jobNumber = oTemp.get("JOBNUMBER").toString(); } - //List serviceforlist = this.mapperI.selectforlist(servicelistSql); String integralListId = "";//积分流水的ID String enabledIntegral = "";//本次消费之后,剩余的餐饮积分 // if (serviceforlist != null && serviceforlist.size() > 0) { @@ -415,7 +408,7 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { } else { integralListId += "," + (maxId + 1); } - LogUtil.WriteLog_Info("积分核减=====积分流水已插入", "QCodeInfoServiceImpl"); + LogUtil.WriteLog_Info("积分核减=====积分流水已插入", "ApponintmentInfoServiceImpl"); //2、新加一条消费记录 String sqlIntegralList = "insert into CAFTER_TABLE(ID,\n" + "ACARNO,\n" + @@ -426,7 +419,7 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { "INTEGRATIONLISTID,\n" + "ORDERID) values (\n" + " (select COALESCE(max(t.ID),0)+1 from CAFTER_TABLE t),''," + - "" + userIdNew + ",to_date('" + rollbackTime + "','yyyy-MM-dd HH24:mi:ss'),'" + operatorId + "','SUCCESS'," + (maxId + 1) + ",'" + operatorId + "'" + + "" + userIdNew + ",to_date('" + rollbackTime + "','yyyy-MM-dd HH24:mi:ss'),'" + jobNumber + "','SUCCESS'," + (maxId + 1) + ",'" + operatorId + "'" + ")"; if ("4".equals(DBType)) { sqlIntegralList = "insert into CAFTER_TABLE(ID,\n" + @@ -438,11 +431,11 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { "INTEGRATIONLISTID,\n" + "ORDERID) values (\n" + " (select COALESCE(max(t.ID),0)+1 from CAFTER_TABLE t),''," + - "" + userIdNew + ",str_to_date('" + rollbackTime + "','%Y-%m-%d %H:%i:%s'),'" + operatorId + "','SUCCESS'," + (maxId + 1) + ",'" + operatorId + "'" + + "" + userIdNew + ",str_to_date('" + rollbackTime + "','%Y-%m-%d %H:%i:%s'),'" + jobNumber + "','SUCCESS'," + (maxId + 1) + ",'" + jobNumber + "'" + ")"; } this.mapperI.insert(sqlIntegralList); - LogUtil.WriteLog_Info("积分核减=====消费记录已插入", "QCodeInfoServiceImpl"); + LogUtil.WriteLog_Info("积分核减=====消费记录已插入", "ApponintmentInfoServiceImpl"); // } String currentDate1 = PubTools.getCurrentDateNoStr().replace("-","").trim()+PubTools.getlinkNo(); String sqlTemp2 = "insert into APPOINTMENT_INFO_TABLE(ID,USERID,ACARNO,APPOINTMENTTYPE,APPOINTMENTTIME,APPOINTMENTLINEID,CREATETIME,SERVICEAREAID,MEALS,MEALSCOUNT,COMPLETESTATUS,INTEGRATIONLISTID,SERVICEOPERATIONID,TOTALINTEGRAL,ORDERID) " + @@ -475,12 +468,13 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { enabledIntegral = PubTools.doubleSave1(enabledTICp / 100) + ""; retJo.put("ENABLEINTEGRATION", enabledIntegral); retJo.put("ORDERID", currentDate1); - LogUtil.WriteLog_Info("用户更新可用积分完成", "QCodeInfoServiceImpl"); + LogUtil.WriteLog_Info("用户更新可用积分完成", "ApponintmentInfoServiceImpl"); } //发送消息 - String integralTypePu = "餐饮预约"; String consumeIntegral = rebateIntegrateSave + ""; + LogUtil.WriteLog_Info("餐饮预约积分核减已完成=====" + PubTools.getCurrentDate(), "ApponintmentInfoServiceImpl"); + String integralTypePu = "餐饮预约"; this.messagePushServiceImpl.pushMsg(openId, integralTypePu, "-" + consumeIntegral, enabledIntegral); //} }else{ @@ -660,9 +654,30 @@ public class ApponintmentInfoServiceImpl implements AppointmentInfoService { } content= dataStr+"|"+ rebateIntegrateTStr +"|"+resStr; // content= dateTimes+"|" +serialsT +"|"+rebateIntegrateT+"|"+res; - LogUtil.WriteLog_Info("用户:"+openId+"---->核销积分类型"+integrateType+"生成的流水号======"+content,"QCodeInfoServiceImpl"); + LogUtil.WriteLog_Info("用户:" + openId + "---->核销积分类型" + integrateType + "生成的流水号======" + content, "ApponintmentInfoServiceImpl"); Consistant.map.put(content,jo); return content; } + /** + * 修改已经过期的数据状态为 O + */ + + public void updateCompleteStastus() { + String selStr = "select t.id FROM APPOINTMENT_INFO_TABLE t WHERE t.COMPLETESTATUS='N'"; + String sql = "update APPOINTMENT_INFO_TABLE set COMPLETESTATUS='O' WHERE COMPLETESTATUS='N'"; + if ("2".equals(DBType)) { + selStr += " and t.APPOINTMENTTIME 0 && !PubTools.isEmpty(selectforlist.get(0))) { + this.mapperI.update(sql); + } + } + } diff --git a/src/main/java/com/nmgs/service/impl/IntegralLevelMessageServiceImpl.java b/src/main/java/com/nmgs/service/impl/IntegralLevelMessageServiceImpl.java index 745ba71..e59bbec 100644 --- a/src/main/java/com/nmgs/service/impl/IntegralLevelMessageServiceImpl.java +++ b/src/main/java/com/nmgs/service/impl/IntegralLevelMessageServiceImpl.java @@ -6,6 +6,7 @@ import com.nmgs.service.IntegralLevelMessageService; import com.nmgs.util.LogUtil; import com.nmgs.util.PropertiesUtil; import com.nmgs.util.PubTools; +import com.nmgs.util.SensitiveFilter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -16,6 +17,8 @@ public class IntegralLevelMessageServiceImpl implements IntegralLevelMessageServ @Autowired public Mapper mapperI; private static String DBType=PropertiesUtil.getValue("DBType"); + @Autowired + SensitiveFilter sensitiveFilter; private static String sql="SELECT ilt.ID,\n" + "ilt.POSITION,\n" + "ilt.MESSAGE,\n" + @@ -67,6 +70,9 @@ public class IntegralLevelMessageServiceImpl implements IntegralLevelMessageServ int ret=1; try{ String currentDate=PubTools.getCurrentDate(); + + message = sensitiveFilter.replaceSensitiveWord(message); + String sql="insert into INTEGRAL_LEAVEMESSAGE_TABLE(ID,USERID,POSITION,MESSAGE,CREATETIME,REPLYSTATUS) " + " values((SELECT NVL(MAX(ID),0)+1 FROM INTEGRAL_LEAVEMESSAGE_TABLE ),(SELECT ID FROM WEIXN_USER_TABLE WHERE OPENID='"+userId+"'),'"+positon+"','"+message+"',to_date('"+currentDate+"','YYYY-MM-DD HH24:MI:SS'),'N') "; if("4".equals(DBType)) { diff --git a/src/main/java/com/nmgs/service/impl/MessagePushServiceImpl.java b/src/main/java/com/nmgs/service/impl/MessagePushServiceImpl.java index 715a783..8b2a3a5 100644 --- a/src/main/java/com/nmgs/service/impl/MessagePushServiceImpl.java +++ b/src/main/java/com/nmgs/service/impl/MessagePushServiceImpl.java @@ -49,7 +49,7 @@ public class MessagePushServiceImpl { url = map.get("BAK3").toString(); } if (!PubTools.isNull(templete_id) && !PubTools.isNull(page) && !PubTools.isNull(url)) { - LogUtil.WriteLog_Info("小程序消息推送接口执行===templete_id===" + templete_id + "=====page===" + page + "====url===" + url, "QCodeInfoServiceImpl"); + LogUtil.WriteLog_Info("小程序消息推送接口执行===templete_id===" + templete_id + "=====page===" + page + "====url===" + url, "MessagePushServiceImpl"); HttpParamDto dto = new HttpParamDto(integralType, PubTools.getCurrentDate(), consumeIntegral, enabledIntegral, "进入小程序查看积分详情。"); dto.setTemplate_id(templete_id); dto.setPage(page); @@ -59,16 +59,16 @@ public class MessagePushServiceImpl { String retCode = retJo.get("code").toString(); if (!"200".equals(retCode)) { Object message = retJo.get("message"); - LogUtil.WriteLog_Error("小程序消息推送接口执行失败===code===" + retCode + "=====message===" + message, "QCodeInfoServiceImpl"); + LogUtil.WriteLog_Error("小程序消息推送接口执行失败===code===" + retCode + "=====message===" + message, "MessagePushServiceImpl"); } } System.out.println(s); } else { - LogUtil.WriteLog_Error("小程序消息推送接口未配置", "QCodeInfoServiceImpl"); + LogUtil.WriteLog_Error("小程序消息推送接口未配置", "MessagePushServiceImpl"); } System.out.println("更新任务线程,线程名:" + Thread.currentThread().getName()); } catch (Exception e) { - LogUtil.WriteLog_Error("小程序消息推送接口报错====" + e.getMessage(), "QCodeInfoServiceImpl"); + LogUtil.WriteLog_Error("小程序消息推送接口报错====" + e.getMessage(), "MessagePushServiceImpl"); } } } diff --git a/src/main/java/com/nmgs/service/impl/SerivceAreaOperationMealServiceImpl.java b/src/main/java/com/nmgs/service/impl/SerivceAreaOperationMealServiceImpl.java index b935aea..39a3d52 100644 --- a/src/main/java/com/nmgs/service/impl/SerivceAreaOperationMealServiceImpl.java +++ b/src/main/java/com/nmgs/service/impl/SerivceAreaOperationMealServiceImpl.java @@ -39,6 +39,7 @@ public class SerivceAreaOperationMealServiceImpl { if(!PubTools.isNull(jobNumber)){ sqlTemp += " and saot.JOBNUMBER = '"+jobNumber+"'"; } + sqlTemp += " order by saom.MEALNAME"; list= this.mapperI.selectforlist(sqlTemp); if(list != null && list.size()>0){ for(Object obj:list){ @@ -67,4 +68,41 @@ public class SerivceAreaOperationMealServiceImpl { } return retList; } + + public List getMealInfoById( String mealIds) { + List list=null; + String sqlTemp=sql; + List retList=new ArrayList(); + try{ + if(!PubTools.isNull(mealIds)){ + sqlTemp += " and saom.ID in( "+mealIds+")"; + } + list= this.mapperI.selectforlist(sqlTemp); + if(list != null && list.size()>0){ + for(Object obj:list){ + Map obj1 = (Map) obj; + Object o=obj1.get("MEALPIC"); + if(!PubTools.isEmpty(o)){ + String s = PubTools.ClobToString( o); + if(!PubTools.isNull(s)){ + obj1.remove("MEALPIC"); + obj1.put("MEALPIC",s); + }else{ + obj1.remove("MEALPIC"); + obj1.put("MEALPIC",""); + } + }else{ + obj1.put("MEALPIC",""); + } + retList.add(obj1); + } + }else{ + retList=list; + } + }catch (Exception e){ + LogUtil.WriteLog_Error("根据套餐ID查询套餐列表失败:===>"+e.getMessage(),"ServiceAreaServiceImpl"); + return retList=null; + } + return retList; + } } diff --git a/src/main/java/com/nmgs/service/impl/ServiceAreaServiceImpl.java b/src/main/java/com/nmgs/service/impl/ServiceAreaServiceImpl.java index 7eb2029..bbc6b42 100644 --- a/src/main/java/com/nmgs/service/impl/ServiceAreaServiceImpl.java +++ b/src/main/java/com/nmgs/service/impl/ServiceAreaServiceImpl.java @@ -245,7 +245,7 @@ static{ " case when oper.OPEN=0 then '暂停服务' else '营业中' end AS OPENNAME,\n" + //" oper.PASSWORD,\n" + // " r.VALUE as roleName,\n" + - " area.AREANAME as serviceAreaName\n" + + " area.AREANAME as SERVICEAREANAME" + " FROM\n" + " service_area_operators_table oper\n" + " LEFT JOIN service_area_table area on area.ID = oper.SERVICEAREAID\n" + diff --git a/src/main/java/com/nmgs/service/impl/UserTableServiceImpl.java b/src/main/java/com/nmgs/service/impl/UserTableServiceImpl.java index 40ef430..7a09639 100644 --- a/src/main/java/com/nmgs/service/impl/UserTableServiceImpl.java +++ b/src/main/java/com/nmgs/service/impl/UserTableServiceImpl.java @@ -122,7 +122,7 @@ public class UserTableServiceImpl implements UserTableService { try{ //图片加水印 if(!PubTools.isNull(numberPic)){ - String permitpicPic = ImageUtils.addImageWaterMark(numberPic, "仅用于内蒙古交通货运车辆积分会员认证"); + String permitpicPic = ImageUtils.addImageWaterMark(numberPic, "仅用于内蒙古交通货运车辆积分会员认证", userId + "NUMPIC" + ".jpg"); if(!PubTools.isNull(permitpicPic)){ numberPic=permitpicPic; } @@ -131,12 +131,37 @@ public class UserTableServiceImpl implements UserTableService { numberPic=PubTools.StringToClob(numberPic); } String sql="update WEIXN_USER_TABLE " + - " set REALNAME='"+realName+"',IDNUMBER='"+idNumber+"',PHONE='"+phone+"',NUMBERPIC="+numberPic+",CERTIFICATION=2 "+ - " where OPENID='"+userId+"'"; + " set CERTIFICATION=2 "; + if (!PubTools.isNull(realName)) { + sql += ",REALNAME='" + realName + "'"; + } + if (!PubTools.isNull(idNumber) && !idNumber.contains("*")) { + sql += ",IDNUMBER='" + idNumber + "'"; + } + if (!PubTools.isNull(phone)) { + sql += ",PHONE='" + phone + "'"; + } + if (!PubTools.isNull(numberPic)) { + sql += ",NUMBERPIC=" + numberPic + ""; + } + sql += " where OPENID='" + userId + "'"; if("4".equals(DBType)){ sql="update WEIXN_USER_TABLE " + - " set REALNAME='"+realName+"',IDNUMBER='"+idNumber+"',PHONE='"+phone+"',NUMBERPIC='"+numberPic+"',CERTIFICATION=2 "+ - " where OPENID='"+userId+"'"; + " set CERTIFICATION=2 "; + if (!PubTools.isNull(realName)) { + sql += ",REALNAME='" + realName + "'"; + } + if (!PubTools.isNull(idNumber) && !idNumber.contains("*")) { + sql += ",IDNUMBER='" + idNumber + "'"; + } + if (!PubTools.isNull(phone)) { + sql += ",PHONE='" + phone + "'"; + } + if (!PubTools.isNull(numberPic)) { + sql += ",NUMBERPIC='" + numberPic + "'"; + } + + sql += " where OPENID='" + userId + "'"; } ret=this.mapperI.update(sql); diff --git a/src/main/java/com/nmgs/service/impl/UserVehicleServiceImpl.java b/src/main/java/com/nmgs/service/impl/UserVehicleServiceImpl.java index 627656c..8e4b40e 100644 --- a/src/main/java/com/nmgs/service/impl/UserVehicleServiceImpl.java +++ b/src/main/java/com/nmgs/service/impl/UserVehicleServiceImpl.java @@ -248,7 +248,7 @@ public class UserVehicleServiceImpl implements UserVehicleService { try{ //图片加水印 if(!PubTools.isNull(permitpic)){ - String permitpicPic = ImageUtils.addImageWaterMark(permitpic, "仅用于内蒙古交通货运车辆积分会员认证"); + String permitpicPic = ImageUtils.addImageWaterMark(permitpic, "仅用于内蒙古交通货运车辆积分会员认证", userId + aCarNo + "per.jpg"); if(!PubTools.isNull(permitpicPic)){ permitpic=permitpicPic; } @@ -262,7 +262,7 @@ public class UserVehicleServiceImpl implements UserVehicleService { } //图片加水印 if(!PubTools.isNull(licensepic)){ - String permitpicPic = ImageUtils.addImageWaterMark(licensepic, "仅用于内蒙古交通货运车辆积分会员认证"); + String permitpicPic = ImageUtils.addImageWaterMark(licensepic, "仅用于内蒙古交通货运车辆积分会员认证", userId + aCarNo + "lic.jpg"); if(!PubTools.isNull(permitpicPic)){ licensepic=permitpicPic; } @@ -277,7 +277,7 @@ public class UserVehicleServiceImpl implements UserVehicleService { } //图片加水印 if(!PubTools.isNull(vehiclePic)){ - String permitpicPic = ImageUtils.addImageWaterMark(vehiclePic, "仅用于内蒙古交通货运车辆积分会员认证"); + String permitpicPic = ImageUtils.addImageWaterMark(vehiclePic, "仅用于内蒙古交通货运车辆积分会员认证", userId + aCarNo + "veh.jpg"); if(!PubTools.isNull(permitpicPic)){ vehiclePic=permitpicPic; } @@ -291,16 +291,43 @@ public class UserVehicleServiceImpl implements UserVehicleService { } String sql="update user_vehicle_table "+ - " set LICENSEPIC="+licensepic+",PERMITPIC="+permitpic+",VEHICLEPIC="+vehiclePic+", "+ - " CERTIFICATION="+certification+",REFERRERCODE='"+referrerCode+"',"+ - " CHECKUSERNAME='"+checkName+"',CHECKUSERNUMBER='"+checkUserNumber+"'"+ - " where USERID="+userId+" and ACARNO='"+aCarNo+"' AND CERTIFICATION not in(4)"; + " set LICENSEPIC=" + licensepic + ",PERMITPIC=" + permitpic + ",VEHICLEPIC=" + vehiclePic + " "; + if (!PubTools.isNull(certification)) { + sql += ",CERTIFICATION=" + certification; + } + if (!PubTools.isNull(referrerCode)) { + sql += ",REFERRERCODE='" + referrerCode + "'"; + } + if (!PubTools.isNull(checkName)) { + sql += ",CHECKUSERNAME='" + checkName + "'"; + } + if (!PubTools.isNull(checkUserNumber) && !checkUserNumber.contains("*")) { + sql += ",CHECKUSERNUMBER='" + checkUserNumber + "'"; + } + if (!PubTools.isNull(referrerCode)) { + sql += ",REFERRERCODE='" + referrerCode + "'"; + } + + sql += " where USERID=" + userId + " and ACARNO='" + aCarNo + "' AND CERTIFICATION not in(4)"; if("4".equals(DBType)){ sql="update user_vehicle_table "+ - " set LICENSEPIC='"+licensepic+"',PERMITPIC='"+permitpic+"',VEHICLEPIC='"+vehiclePic+"', "+ - " CERTIFICATION="+certification+",REFERRERCODE='"+referrerCode+"',"+ - " CHECKUSERNAME='"+checkName+"',CHECKUSERNUMBER='"+checkUserNumber+"'"+ - " where USERID="+userId+" and ACARNO='"+aCarNo+"' AND CERTIFICATION not in(4)"; + " set LICENSEPIC='" + licensepic + "',PERMITPIC='" + permitpic + "',VEHICLEPIC='" + vehiclePic + "'"; + if (!PubTools.isNull(certification)) { + sql += ",CERTIFICATION=" + certification; + } + if (!PubTools.isNull(referrerCode)) { + sql += ",REFERRERCODE='" + referrerCode + "'"; + } + if (!PubTools.isNull(checkName)) { + sql += ",CHECKUSERNAME='" + checkName + "'"; + } + if (!PubTools.isNull(checkUserNumber) && !checkUserNumber.contains("*")) { + sql += ",CHECKUSERNUMBER='" + checkUserNumber + "'"; + } + if (!PubTools.isNull(referrerCode)) { + sql += ",REFERRERCODE='" + referrerCode + "'"; + } + sql += " where USERID=" + userId + " and ACARNO='" + aCarNo + "' AND CERTIFICATION not in(4)"; } this.mapperI.insert(sql); }catch (Exception e){ diff --git a/src/main/java/com/nmgs/util/ImageUtils.java b/src/main/java/com/nmgs/util/ImageUtils.java index f81cf23..294df95 100644 --- a/src/main/java/com/nmgs/util/ImageUtils.java +++ b/src/main/java/com/nmgs/util/ImageUtils.java @@ -5,12 +5,13 @@ package com.nmgs.util; */ import java.awt.*; import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Base64; +import java.util.Properties; import javax.imageio.ImageIO; import org.springframework.scheduling.annotation.Async; @@ -25,18 +26,29 @@ public class ImageUtils { * @return * @throws Exception */ - public static String addImageWaterMark(String imageBase64,String text) throws Exception { + public static String addImageWaterMark(String imageBase64, String text, String fileName) throws Exception { String retStr=""; + Properties props = System.getProperties(); + String os = props.getProperty("os.name").toLowerCase(); + String fileAddress = PropertiesUtil.getValue("fileAddress"); InputStream inputStream = null; try { byte[] imageBytes = Base64.getDecoder().decode(imageBase64); // 构造 BufferedImage 对象 inputStream = new ByteArrayInputStream(imageBytes); BufferedImage bufferedImage1 = ImageIO.read(inputStream); - + if (PubTools.isEmpty(bufferedImage1)) { + /* // 创建文件 + if (os.startsWith("win")) { + fileAddress=fileAddress.replaceALl("/","\\"); + } + File file = new File(, fileName); // 指定上传位置 + // 保存文件 + org.apache.commons.io.FileUtils.writeByteArrayToFile(file, imageBytes);*/ + return imageBase64; + } int w1 = bufferedImage1.getWidth(); int h1 = bufferedImage1.getHeight(); - // 生成新图片 BufferedImage destImage = new BufferedImage(w1, h1, BufferedImage.TYPE_INT_RGB); Graphics2D graphics2D = destImage.createGraphics(); @@ -99,6 +111,10 @@ public class ImageUtils { ImageIO.write(bufferedImage1, "jpg", baos); byte[] watermarkedImageBytes = baos.toByteArray(); retStr = Base64.getEncoder().encodeToString(watermarkedImageBytes); + /* // 创建文件 + File file = new File(PropertiesUtil.getValue("fileAddress"), fileName); // 指定上传位置 + // 保存文件 + org.apache.commons.io.FileUtils.writeByteArrayToFile(file, watermarkedImageBytes);*/ return retStr; } catch (Exception e) { e.printStackTrace(); @@ -196,10 +212,26 @@ public class ImageUtils { return (length % 2 == 0) ? length / 2 : length / 2 + 1; } + public void deleteImage(String imagePath) { + Path path = Paths.get(imagePath); + try { + // 检查文件是否存在 + if (Files.exists(path)) { + // 删除文件 + Files.delete(path); + System.out.println("图片删除成功:" + imagePath); + } else { + System.out.println("图片不存在:" + imagePath); + } + } catch (IOException e) { + System.out.println("删除图片失败:" + imagePath); + e.printStackTrace(); + } + } public static void main(String[] args) { try { String basae64="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"; - String encode = ImageUtils.addImageWaterMark(basae64,"内蒙古积分"); + String encode = ImageUtils.addImageWaterMark(basae64, "内蒙古积分", "测试.png"); System.out.print(encode); } catch (IOException e) { e.printStackTrace(); @@ -208,4 +240,5 @@ public class ImageUtils { } } + } \ No newline at end of file diff --git a/src/main/java/com/nmgs/util/PathUtil.java b/src/main/java/com/nmgs/util/PathUtil.java index 0871887..c8d35a0 100644 --- a/src/main/java/com/nmgs/util/PathUtil.java +++ b/src/main/java/com/nmgs/util/PathUtil.java @@ -48,13 +48,13 @@ public class PathUtil { isWin = true; // TomcatPath = System.getProperty("user.dir").substring(0, System.getProperty("user.dir").lastIndexOf('\\')); webappsPath = TomcatPath + "\\webapps"; - uploadPath = TomcatPath + "\\uploadfiles"; + uploadPath = TomcatPath + "\\integralFile"; uploadWarPath = TomcatPath + "\\taskWarFiles\\uploadWarFile"; downloadWarPath = TomcatPath + "\\taskWarFiles\\downloadWarFile"; webPath = webPath.substring(1, webPath.length()) + webName; } else { webappsPath = TomcatPath + "/webapps"; - uploadPath = TomcatPath + "/uploadfiles"; + uploadPath = TomcatPath + "/integralFile"; uploadWarPath = TomcatPath + "/taskWarFiles/uploadWarFile"; downloadWarPath = TomcatPath + "/taskWarFiles/downloadWarFile"; webPath = webPath + webName; diff --git a/src/main/java/com/nmgs/util/PubTools.java b/src/main/java/com/nmgs/util/PubTools.java index 2bc3fd8..b11e42e 100644 --- a/src/main/java/com/nmgs/util/PubTools.java +++ b/src/main/java/com/nmgs/util/PubTools.java @@ -17,6 +17,8 @@ public class PubTools { static SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); static SimpleDateFormat dfYYD=new SimpleDateFormat("yyyy-MM-dd"); + + /** * 判断字符串是否为空 * yyp 20190305 @@ -212,13 +214,17 @@ public class PubTools { public static void main(String[] args) { System.out.println(getCurrentDateNoStr()); } - public static String ClobToString(Object clob) throws Exception { + public static String ClobToString(Object clob) { String reString = ""; + try{ if(clob instanceof CLOB){ reString = ((CLOB)clob).getSubString((long) 1, (int) ((CLOB)clob).length()); }else if(clob instanceof Blob){ reString = clob.toString(); } + }catch (Exception e){ + reString=""; + } return reString; } } diff --git a/src/main/java/com/nmgs/util/SensitiveFilter.java b/src/main/java/com/nmgs/util/SensitiveFilter.java new file mode 100644 index 0000000..9521ec5 --- /dev/null +++ b/src/main/java/com/nmgs/util/SensitiveFilter.java @@ -0,0 +1,165 @@ +package com.nmgs.util; + +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +@Component +public class SensitiveFilter { + /** + * 敏感词过滤器:利用DFA算法 进行敏感词过滤 + */ + private Map sensitiveWordMap = null; + + /** + * 最小匹配规则,如:敏感词库["中国","中国人"],语句:"我是中国人",匹配结果:我是[中国]人 + */ + public static int minMatchType = 1; + + /** + * 最大匹配规则,如:敏感词库["中国","中国人"],语句:"我是中国人",匹配结果:我是[中国人] + */ + public static int maxMatchType = 2; + + /** + * 敏感词替换词 + */ + public static String placeHolder = "*"; + + // 单例 + private static SensitiveFilter instance = null; + + /** + * 构造函数,初始化敏感词库 + */ + private SensitiveFilter() throws IOException { + sensitiveWordMap = new WordInit().initKeyWord(); + } + + /** + * 获取单例 + */ + public static SensitiveFilter getInstance() throws IOException { + if (null == instance) { + instance = new SensitiveFilter(); + } + return instance; + } + + /** + * 获取文字中的敏感词 + */ + public Set getSensitiveWord(String txt, int matchType) { + Set sensitiveWordList = new HashSet<>(); + for (int i = 0; i < txt.length(); i++) { + // 判断是否包含敏感字符 + int length = CheckSensitiveWord(txt, i, matchType); + // 存在,加入list中 + if (length > 0) { + sensitiveWordList.add(txt.substring(i, i + length)); + // 减1的原因,是因为for会自增 + i = i + length - 1; + } + } + return sensitiveWordList; + } + + + /** + * 替换敏感字字符,使用了默认的替换符合,默认最小匹配规则 + */ + public String replaceSensitiveWord(String txt) { + return replaceSensitiveWord(txt, minMatchType ,placeHolder); + } + + /** + * 替换敏感字字符,使用了默认的替换符合 + */ + public String replaceSensitiveWord(String txt, int matchType) { + return replaceSensitiveWord(txt, matchType,placeHolder); + } + + /** + * 替换敏感字字符 + */ + public String replaceSensitiveWord(String txt, int matchType, + String replaceChar) { + String resultTxt = txt; + // 获取所有的敏感词 + Set set = getSensitiveWord(txt, matchType); + Iterator iterator = set.iterator(); + String word = null; + String replaceString = null; + while (iterator.hasNext()) { + word = iterator.next(); + replaceString = getReplaceChars(replaceChar, word.length()); + resultTxt = resultTxt.replaceAll(word, replaceString); + } + return resultTxt; + } + + /** + * 获取替换字符串 + */ + private String getReplaceChars(String replaceChar, int length) { + StringBuilder resultReplace = new StringBuilder(replaceChar); + for (int i = 1; i < length; i++) { + resultReplace.append(replaceChar); + } + return resultReplace.toString(); + } + + /** + * 检查文字中是否包含敏感字符,检查规则如下:
+ * 如果存在,则返回敏感词字符的长度,不存在返回0 + * 核心 + */ + public int CheckSensitiveWord(String txt, int beginIndex, int matchType) { + // 敏感词结束标识位:用于敏感词只有1的情况结束 + boolean flag = false; + // 匹配标识数默认为0 + int matchFlag = 0; + Map nowMap = sensitiveWordMap; + for (int i = beginIndex; i < txt.length(); i++) { + char word = txt.charAt(i); + // 获取指定key + nowMap = (Map) nowMap.get(word); + // 存在,则判断是否为最后一个 + if (nowMap != null) { + // 找到相应key,匹配标识+1 + matchFlag++; + // 如果为最后一个匹配规则,结束循环,返回匹配标识数 + if ("1".equals(nowMap.get("isEnd"))) { + // 结束标志位为true + flag = true; + // 最小规则,直接返回,最大规则还需继续查找 + if (SensitiveFilter.minMatchType == matchType) { + break; + } + } + } + // 不存在,直接返回 + else { + break; + } + } + + // 匹配长度如果匹配上了最小匹配长度或者最大匹配长度 + if (SensitiveFilter.maxMatchType == matchType || SensitiveFilter.minMatchType == matchType){ + //长度必须大于等于1,为词,或者敏感词库还没有结束(匹配了一半),flag为false + if(matchFlag < 2 || !flag){ + matchFlag = 0; + } + } + return matchFlag; + } + + public static void main(String[] args) throws IOException { + SensitiveFilter sensitiveFilter =new SensitiveFilter(); + String s = sensitiveFilter.replaceSensitiveWord("你大爷"); + System.out.println(s); + } +} diff --git a/src/main/java/com/nmgs/util/WordInit.java b/src/main/java/com/nmgs/util/WordInit.java new file mode 100644 index 0000000..172639b --- /dev/null +++ b/src/main/java/com/nmgs/util/WordInit.java @@ -0,0 +1,85 @@ +package com.nmgs.util; + +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +@Configuration +public class WordInit { + // 字符编码 + private String ENCODING = "UTF-8"; + // 初始化敏感字库 + public Map initKeyWord() throws IOException { + // 读取敏感词库 ,存入Set中 + Set wordSet = readSensitiveWordFile(); + // 将敏感词库加入到HashMap中//确定有穷自动机DFA + return addSensitiveWordToHashMap(wordSet); + } + + // 读取敏感词库 ,存入HashMap中 + private Set readSensitiveWordFile() throws IOException { + Set wordSet = null; + ClassPathResource classPathResource = new ClassPathResource("static/Sensitive.txt"); + InputStream inputStream = classPathResource.getInputStream(); + //敏感词库 + try { + // 读取文件输入流 + InputStreamReader read = new InputStreamReader(inputStream, ENCODING); + // 文件是否是文件 和 是否存在 + wordSet = new HashSet(); + // StringBuffer sb = new StringBuffer(); + // BufferedReader是包装类,先把字符读到缓存里,到缓存满了,再读入内存,提高了读的效率。 + BufferedReader br = new BufferedReader(read); + String txt = null; + // 读取文件,将文件内容放入到set中 + while ((txt = br.readLine()) != null) { + wordSet.add(txt); + } + br.close(); + // 关闭文件流 + read.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return wordSet; + } + // 将HashSet中的敏感词,存入HashMap中 + private Map addSensitiveWordToHashMap(Set wordSet) { + // 初始化敏感词容器,减少扩容操作 + Map wordMap = new HashMap(wordSet.size()); + for (String word : wordSet) { + Map nowMap = wordMap; + for (int i = 0; i < word.length(); i++) { + // 转换成char型 + char keyChar = word.charAt(i); + // 获取 + Object tempMap = nowMap.get(keyChar); + // 如果存在该key,直接赋值 + if (tempMap != null) { + nowMap = (Map) tempMap; + } + // 不存在则,则构建一个map,同时将isEnd设置为0,因为他不是最后一个 + else { + // 设置标志位 + Map newMap = new HashMap(); + newMap.put("isEnd", "0"); + // 添加到集合 + nowMap.put(keyChar, newMap); + nowMap = newMap; + } + // 最后一个 + if (i == word.length() - 1) { + nowMap.put("isEnd", "1"); + } + } + } + return wordMap; + } +} diff --git a/src/main/resources/static/Sensitive.txt b/src/main/resources/static/Sensitive.txt new file mode 100644 index 0000000..0ae5907 --- /dev/null +++ b/src/main/resources/static/Sensitive.txt @@ -0,0 +1,1105 @@ +阿扁推翻 +阿宾 +阿賓 +挨了一炮 +你大爷的 +爱液横流 +操你 +安街逆 +安局办公楼 +安局豪华 +安门事 +助眠 +失眠 +滋阴补阳 +壮阳 +你大爷 +安眠藥 +丘疹 +脓疱 +手癣 +甲癣 +体癣 +头癣 +股癣 +脚癣 +脚气 +鹅掌癣 +花斑癣 +牛皮癣 +传染性湿疹 +伤风感冒 +经痛 +肌痛 +头痛 +腹痛 +便秘 +哮喘 +支气管炎 +消化不良 +刀伤 +烧伤 +烫伤 +疮痈 +毛囊炎 +皮肤感染 +皮肤面部痉挛 +案的准确 +八九民 +八九学 +八九政治 +把病人整 +把邓小平 +把学生整 +罢工门 +白黄牙签 +傻逼 +玛德 +妈的 +马德 +败培训 +办本科 +办理本科 +办理各种 +办理票据 +办理文凭 +办理真实 +办理证书 +办理资格 +办文凭 +办怔 +办证 +半刺刀 +辦毕业 +辦證 +谤罪获刑 +磅解码器 +磅遥控器 +宝在甘肃修 +保过答案 +报复执法 +爆发骚 +北省委门 +被打死 +被指抄袭 +被中共 +本公司担 +本无码 +毕业證 +变牌绝 +辩词与梦 +冰毒 +冰火毒 +冰火佳 +冰火九重 +冰火漫 +冰淫传 +冰在火上 +波推龙 +博彩娱 +博会暂停 +博园区伪 +不查都 +不查全 +不思四化 +布卖淫女 +部忙组阁 +部是这样 +才知道只生 +财众科技 +采花堂 +踩踏事 +苍山兰 +苍蝇水 +藏春阁 +藏獨 +操了嫂 +操嫂子 +策没有不 +插屁屁 +艹 +察象蚂 +拆迁灭 +车牌隐 +成人电 +成人卡通 +成人聊 +成人片 +成人视 +成人图 +成人文 +成人小 +城管灭 +惩公安 +惩贪难 +充气娃 +冲凉死 +抽着大中 +抽着芙蓉 +出成绩付 +出售发票 +出售军 +穿透仪器 +春水横溢 +纯度白 +纯度黄 +次通过考 +催眠水 +催情粉 +催情药 +催情藥 +挫仑 +达毕业证 +答案包 +答案提供 +打标语 +打错门 +打飞机专 +打死经过 +打死人 +打砸办公 +大鸡巴 +大雞巴 +大纪元 +大揭露 +大奶子 +大批贪官 +大肉棒 +大嘴歌 +代办发票 +代办各 +代办文 +代办学 +代办制 +代辦 +代表烦 +代開 +代考 +代理发票 +代理票据 +代您考 +代您考 +代写毕 +代写论 +代孕 +贷办 +贷借款 +贷开 +戴海静 +当代七整 +当官要精 +当官在于 +党的官 +党后萎 +党前干劲 +刀架保安 +导的情人 +导叫失 +导人的最 +导人最 +导小商 +到花心 +得财兼 +的同修 +灯草和 +等级證 +等屁民 +等人老百 +等人是老 +等人手术 +邓爷爷转 +邓玉娇 +地产之歌 +地下先烈 +地震哥 +帝国之梦 +递纸死 +点数优惠 +电狗 +电话监 +电鸡 +甸果敢 +蝶舞按 +丁香社 +丁子霖 +顶花心 +东北独立 +东复活 +东京热 +東京熱 +洞小口紧 +都当警 +都当小姐 +都进中央 +毒蛇钻 +独立台湾 +赌球网 +短信截 +对日强硬 +多美康 +躲猫猫 +俄羅斯 +恶势力操 +恶势力插 +恩氟烷 +儿园惨 +儿园砍 +儿园杀 +儿园凶 +二奶大 +发牌绝 +发票出 +发票代 +发票销 +發票 +法车仑 +法伦功 +法轮 +法轮佛 +法维权 +法一轮 +法院给废 +法正乾 +反测速雷 +反雷达测 +反屏蔽 +范燕琼 +方迷香 +防电子眼 +防身药水 +房贷给废 +仿真枪 +仿真证 +诽谤罪 +费私服 +封锁消 +佛同修 +夫妻交换 +福尔马林 +福娃的預 +福娃頭上 +福香巴 +府包庇 +府集中领 +妇销魂 +附送枪 +复印件生 +复印件制 +富民穷 +富婆给废 +改号软件 +感扑克 +冈本真 +肛交 +肛门是邻 +岡本真 +钢针狗 +钢珠枪 +港澳博球 +港馬會 +港鑫華 +高就在政 +高考黑 +高莺莺 +搞媛交 +告长期 +告洋状 +格证考试 +各类考试 +各类文凭 +跟踪器 +工程吞得 +工力人 +公安错打 +公安网监 +公开小姐 +攻官小姐 +共狗 +共王储 +狗粮 +狗屁专家 +鼓动一些 +乖乖粉 +官商勾 +官也不容 +官因发帖 +光学真题 +跪真相 +滚圆大乳 +国际投注 +国家妓 +国家软弱 +国家吞得 +国库折 +国一九五七 +國內美 +哈药直销 +海访民 +豪圈钱 +号屏蔽器 +和狗交 +和狗性 +和狗做 +黑火药的 +红色恐怖 +红外透视 +紅色恐 +胡江内斗 +胡紧套 +胡錦濤 +胡适眼 +胡耀邦 +湖淫娘 +虎头猎 +华国锋 +华门开 +化学扫盲 +划老公 +还会吹萧 +还看锦涛 +环球证件 +换妻 +皇冠投注 +黄冰 +浑圆豪乳 +活不起 +火车也疯 +机定位器 +机号定 +机号卫 +机卡密 +机屏蔽器 +基本靠吼 +绩过后付 +激情电 +激情短 +激情妹 +激情炮 +级办理 +级答案 +急需嫖 +集体打砸 +集体腐 +挤乳汁 +擠乳汁 +佳静安定 +家一样饱 +家属被打 +甲虫跳 +甲流了 +奸成瘾 +兼职上门 +监听器 +监听王 +简易炸 +江胡内斗 +江太上 +江系人 +江贼民 +疆獨 +蒋彦永 +叫自慰 +揭贪难 +姐包夜 +姐服务 +姐兼职 +姐上门 +金扎金 +金钟气 +津大地震 +津地震 +进来的罪 +京地震 +京要地震 +经典谎言 +精子射在 +警察被 +警察的幌 +警察殴打 +警察说保 +警车雷达 +警方包庇 +警用品 +径步枪 +敬请忍 +究生答案 +九龙论坛 +九评共 +酒象喝汤 +酒像喝汤 +就爱插 +就要色 +举国体 +巨乳 +据说全民 +绝食声 +军长发威 +军刺 +军品特 +军用手 +开邓选 +开锁工具 +開碼 +開票 +砍杀幼 +砍伤儿 +康没有不 +康跳楼 +考答案 +考后付款 +考机构 +考考邓 +考联盟 +考前答 +考前答案 +考前付 +考设备 +考试包过 +考试保 +考试答案 +考试机构 +考试联盟 +考试枪 +考研考中 +考中答案 +磕彰 +克分析 +克千术 +克透视 +空和雅典 +孔摄像 +控诉世博 +控制媒 +口手枪 +骷髅死 +快速办 +矿难不公 +拉登说 +拉开水晶 +来福猎 +拦截器 +狼全部跪 +浪穴 +老虎机 +雷人女官 +类准确答 +黎阳平 +李洪志 +李咏曰 +理各种证 +理是影帝 +理证件 +理做帐报 +力骗中央 +力月西 +丽媛离 +利他林 +连发手 +聯繫電 +炼大法 +两岸才子 +两会代 +两会又三 +聊视频 +聊斋艳 +了件渔袍 +猎好帮手 +猎枪销 +猎槍 +獵槍 +领土拿 +流血事 +六合彩 +六死 +六四事 +六月联盟 +龙湾事件 +隆手指 +陆封锁 +陆同修 +氯胺酮 +乱奸 +乱伦类 +乱伦小 +亂倫 +伦理大 +伦理电影 +伦理毛 +伦理片 +轮功 +轮手枪 +论文代 +罗斯小姐 +裸聊网 +裸舞视 +落霞缀 +麻古 +麻果配 +麻果丸 +麻将透 +麻醉狗 +麻醉枪 +麻醉槍 +麻醉藥 +蟆叫专家 +卖地财政 +卖发票 +卖银行卡 +卖自考 +漫步丝 +忙爱国 +猫眼工具 +毛一鲜 +媒体封锁 +每周一死 +美艳少妇 +妹按摩 +妹上门 +门按摩 +门保健 +門服務 +氓培训 +蒙汗药 +迷幻型 +迷幻药 +迷幻藥 +迷昏口 +迷昏药 +迷昏藥 +迷魂香 +迷魂药 +迷魂藥 +迷奸药 +迷情水 +迷情药 +迷藥 +谜奸药 +蜜穴 +灭绝罪 +民储害 +民九亿商 +民抗议 +明慧网 +铭记印尼 +摩小姐 +母乳家 +木齐针 +幕没有不 +幕前戲 +内射 +南充针 +嫩穴 +嫩阴 +泥马之歌 +你的西域 +拟涛哥 +娘两腿之间 +妞上门 +浓精 +怒的志愿 +女被人家搞 +女激情 +女技师 +女人和狗 +女任职名 +女上门 +女優 +鸥之歌 +拍肩神药 +拍肩型 +牌分析 +牌技网 +炮的小蜜 +陪考枪 +配有消 +喷尿 +嫖俄罗 +嫖鸡 +平惨案 +平叫到床 +仆不怕饮 +普通嘌 +期货配 +奇迹的黄 +奇淫散 +骑单车出 +气狗 +气枪 +汽狗 +汽枪 +氣槍 +铅弹 +钱三字经 +枪出售 +枪的参 +枪的分 +枪的结 +枪的制 +枪货到 +枪决女犯 +枪决现场 +枪模 +枪手队 +枪手网 +枪销售 +枪械制 +枪子弹 +强权政府 +强硬发言 +抢其火炬 +切听器 +窃听器 +禽流感了 +勤捞致 +氢弹手 +清除负面 +清純壆 +情聊天室 +情妹妹 +情视频 +情自拍 +氰化钾 +氰化钠 +请集会 +请示威 +请愿 +琼花问 +区的雷人 +娶韩国 +全真证 +群奸暴 +群起抗暴 +群体性事 +绕过封锁 +惹的国 +人权律 +人体艺 +人游行 +人在云上 +人真钱 +认牌绝 +任于斯国 +柔胸粉 +肉洞 +肉棍 +如厕死 +乳交 +软弱的国 +赛后骚 +三挫 +三级片 +三秒倒 +三网友 +三唑 +骚妇 +骚浪 +骚穴 +骚嘴 +扫了爷爷 +色电影 +色妹妹 +色视频 +色小说 +杀指南 +山涉黑 +煽动不明 +煽动群众 +上门激 +烧公安局 +烧瓶的 +韶关斗 +韶关玩 +韶关旭 +射网枪 +涉嫌抄袭 +深喉冰 +神七假 +神韵艺术 +生被砍 +生踩踏 +生肖中特 +圣战不息 +盛行在舞 +尸博 +失身水 +失意药 +狮子旗 +十八等 +十大谎 +十大禁 +十个预言 +十类人不 +十七大幕 +实毕业证 +实体娃 +实学历文 +士康事件 +式粉推 +视解密 +是躲猫 +手变牌 +手答案 +手狗 +手机跟 +手机监 +手机窃 +手机追 +手拉鸡 +手木仓 +手槍 +守所死法 +兽交 +售步枪 +售纯度 +售单管 +售弹簧刀 +售防身 +售狗子 +售虎头 +售火药 +售假币 +售健卫 +售军用 +售猎枪 +售氯胺 +售麻醉 +售冒名 +售枪支 +售热武 +售三棱 +售手枪 +售五四 +售信用 +售一元硬 +售子弹 +售左轮 +书办理 +熟妇 +术牌具 +双管立 +双管平 +水阎王 +丝护士 +丝情侣 +丝袜保 +丝袜恋 +丝袜美 +丝袜妹 +丝袜网 +丝足按 +司长期有 +司法黑 +私房写真 +死法分布 +死要见毛 +四博会 +四大扯个 +四小码 +苏家屯集 +诉讼集团 +素女心 +速代办 +速取证 +酸羟亚胺 +蹋纳税 +太王四神 +泰兴幼 +泰兴镇中 +泰州幼 +贪官也辛 +探测狗 +涛共产 +涛一样胡 +特工资 +特码 +特上门 +体透视镜 +替考 +替人体 +天朝特 +天鹅之旅 +天推广歌 +田罢工 +田田桑 +田停工 +庭保养 +庭审直播 +通钢总经 +偷電器 +偷肃贪 +偷听器 +偷偷贪 +头双管 +透视功能 +透视镜 +透视扑 +透视器 +透视眼镜 +透视药 +透视仪 +秃鹰汽 +突破封锁 +突破网路 +推油按 +脱衣艳 +瓦斯手 +袜按摩 +外透视镜 +外围赌球 +湾版假 +万能钥匙 +万人骚动 +王立军 +王益案 +网民案 +网民获刑 +网民诬 +微型摄像 +围攻警 +围攻上海 +维汉员 +维权基 +维权人 +维权谈 +委坐船 +谓的和谐 +温家堡 +温切斯特 +温影帝 +溫家寶 +瘟加饱 +瘟假饱 +文凭证 +文强 +纹了毛 +闻被控制 +闻封锁 +瓮安 +我的西域 +我搞台独 +乌蝇水 +无耻语录 +无码专 +五套功 +五月天 +午夜电 +午夜极 +武警暴 +武警殴 +武警已增 +务员答案 +务员考试 +雾型迷 +西藏限 +西服进去 +希脏 +习进平 +习晋平 +席复活 +席临终前 +席指着护 +洗澡死 +喜贪赃 +先烈纷纷 +现大地震 +现金投注 +线透视镜 +限制言 +陷害案 +陷害罪 +相自首 +香港论坛 +香港马会 +香港一类 +香港总彩 +硝化甘 +小穴 +校骚乱 +协晃悠 +写两会 +泄漏的内 +新建户 +新疆叛 +新疆限 +新金瓶 +新唐人 +信访专班 +信接收器 +兴中心幼 +星上门 +行长王益 +形透视镜 +型手枪 +姓忽悠 +幸运码 +性爱日 +性福情 +性感少 +性推广歌 +胸主席 +徐玉元 +学骚乱 +学位證 +學生妹 +丫与王益 +烟感器 +严晓玲 +言被劳教 +言论罪 +盐酸曲 +颜射 +恙虫病 +姚明进去 +要人权 +要射精了 +要射了 +要泄了 +夜激情 +液体炸 +一小撮别 +遗情书 +蚁力神 +益关注组 +益受贿 +阴间来电 +陰唇 +陰道 +陰戶 +淫魔舞 +淫情女 +淫肉 +淫騷妹 +淫兽 +淫兽学 +淫水 +淫穴 +隐形耳 +隐形喷剂 +应子弹 +婴儿命 +咏妓 +用手枪 +幽谷三 +游精佑 +有奶不一 +右转是政 +幼齿类 +娱乐透视 +愚民同 +愚民政 +与狗性 +玉蒲团 +育部女官 +冤民大 +鸳鸯洗 +园惨案 +园发生砍 +园砍杀 +园凶杀 +园血案 +原一九五七 +原装弹 +袁腾飞 +晕倒型 +韵徐娘 +遭便衣 +遭到警 +遭警察 +遭武警 +择油录 +曾道人 +炸弹教 +炸弹遥控 +炸广州 +炸立交 +炸药的制 +炸药配 +炸药制 +张春桥 +找枪手 +找援交 +找政法委副 +赵紫阳 +针刺案 +针刺伤 +针刺事 +针刺死 +侦探设备 +真钱斗地 +真钱投注 +真善忍 +真实文凭 +真实资格 +震惊一个民 +震其国土 +证到付款 +证件办 +证件集团 +证生成器 +证书办 +证一次性 +政府操 +政论区 +證件 +植物冰 +殖器护 +指纹考勤 +指纹膜 +指纹套 +至国家高 +志不愿跟 +制服诱 +制手枪 +制证定金 +制作证件 +中的班禅 +中共黑 +中国不强 +种公务员 +种学历证 +众像羔 +州惨案 +州大批贪 +州三箭 +宙最高法 +昼将近 +主席忏 +住英国房 +助考 +助考网 +专业办理 +专业代 +专业代写 +专业助 +转是政府 +赚钱资料 +装弹甲 +装枪套 +装消音 +着护士的胸 +着涛哥 +姿不对死 +资格證 +资料泄 +梓健特药 +字牌汽 +自己找枪 +自慰用 +自由圣 +自由亚 +总会美女 +足球玩法 +最牛公安 +醉钢枪 +醉迷药 +醉乙醚 +尊爵粉 +左转是政 +作弊器 +作各种证 +作硝化甘 +唑仑 +做爱小 +做原子弹 +做证件 +发票 \ No newline at end of file