package com.nmgs.service.impl; import com.alibaba.fastjson.JSONObject; import com.nmgs.entity.Consistant; import com.nmgs.mappercommon.Mapper; import com.nmgs.mapperset.mysqlmapper.AppointmentInfoMyMapper; import com.nmgs.mapperset.mysqlmapper.CafterTableMyMapper; import com.nmgs.mapperset.mysqlmapper.IntegrationListMyMapper; import com.nmgs.mapperset.mysqlmapper.UserTableMysqlMapper; import com.nmgs.mapperset.oraclemapper.AppointmentInfoMapper; import com.nmgs.mapperset.oraclemapper.CafterTableMapper; import com.nmgs.mapperset.oraclemapper.IntegrationListMapper; import com.nmgs.mapperset.oraclemapper.UserTableMapper; import com.nmgs.service.UserTableService; import com.nmgs.util.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.math.BigDecimal; import java.math.BigInteger; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; @Service @Transactional public class QCodeInfoServiceImpl { SimpleDateFormat df=new SimpleDateFormat("yyyyMMdd"); @Autowired public Mapper mapperI; private static String DBType= PropertiesUtil.getValue("DBType"); public UserTableService userTableService; @Autowired public void setUserTableService(UserTableService userTableService) { this.userTableService = userTableService; } public IntegralStarSetupServiceImpl integralStarSetupServiceImpl; @Autowired public void setIntegralStarSetupServiceImpl(IntegralStarSetupServiceImpl integralStarSetupServiceImplT) { this.integralStarSetupServiceImpl = integralStarSetupServiceImplT; } public MessagePushServiceImpl messagePushServiceImpl; @Autowired public void setMessagePushServiceImpl(MessagePushServiceImpl messagePushServiceImpl) { this.messagePushServiceImpl = messagePushServiceImpl; } public IntegrationListMapper integrationListMapper; @Autowired public void setIntegrationListMapper(IntegrationListMapper integrationListMapper) { this.integrationListMapper = integrationListMapper; } public IntegrationListMyMapper integrationListMyMapper; @Autowired public void setIntegrationListMyMapper(IntegrationListMyMapper integrationListMyMapper) { this.integrationListMyMapper = integrationListMyMapper; } public UserTableMapper userTableMapper; @Autowired public void setUserTableMapper(UserTableMapper userTableMapper) { this.userTableMapper = userTableMapper; } public UserTableMysqlMapper userTableMyMapper; @Autowired public void setUserTableMyMapper(UserTableMysqlMapper userTableMapper) { this.userTableMyMapper = userTableMapper; } public UserTableMysqlMapper userTableMysqlMapper; @Autowired public void setUserTableMysqlMapper(UserTableMysqlMapper userTableMysqlMapper) { this.userTableMysqlMapper = userTableMysqlMapper; } public CafterTableMapper cafterTableMapper; @Autowired public void setCafterTableMapper(CafterTableMapper cafterTableMapper) { this.cafterTableMapper = cafterTableMapper; } public CafterTableMyMapper cafterTableMyMapper; @Autowired public void setCafterTableMyMapper(CafterTableMyMapper cafterTableMyMapper) { this.cafterTableMyMapper = cafterTableMyMapper; } public AppointmentInfoMyMapper appointmentInfoMyMapper; @Autowired public void setAppointmentInfoMyMapper(AppointmentInfoMyMapper appointmentInfoMyMapper) { this.appointmentInfoMyMapper = appointmentInfoMyMapper; } public AppointmentInfoMapper appointmentInfoMapper; @Autowired public void setAppointmentInfoMapper(AppointmentInfoMapper appointmentInfoMapper) { this.appointmentInfoMapper = appointmentInfoMapper; } /** *利用redis做缓存 * @param openId 用户微信iD * @param integrateType 积分类型 * @param rebateIntegrate 兑换积分 * @return */ public String getQcodeInfoByUserIdRedis(String openId, String integrateType, String rebateIntegrate){ JSONObject jo=new JSONObject(); jo.put("openId",openId); jo.put("integrateType",integrateType); jo.put("rebateIntegrate",rebateIntegrate); jo.put("createTime",PubTools.getCurrentDate());//二维码生成时间,20s之后过期 //判断用户是否被冻结 List userStarByOepnIdTemp = this.userTableService.getUserByOpenId(openId); if(userStarByOepnIdTemp.size()<1){ return "-2"; }else { Object obj = userStarByOepnIdTemp.get(0); Map obj1 = (Map) obj; String certification = obj1.get("CERTIFICATION").toString();//认证状态 if ("5".equals(certification)) { return "-3"; } } //生成一个二维码流水号 //xxxx xxxx(8位时间戳16进制) |xxxx(4位流水序号16进制)|xxxx(4位兑换积分16进制)|xxxx(4位校验码,16进制)"} String content=""; String dateTimes=df.format(new Date()); String serialsT=""; String rebateIntegrateT=rebateIntegrate; Random random = new Random(); int res = 1000+random.nextInt(9000); int serials = Consistant.serials+1; Consistant.serials=serials; if(serials<10){ serialsT="000"+serials; }else if(serials >=10 && serials<100){ serialsT="00"+serials; Consistant.serials=serials; }else if(serials >=10 && serials<100){ serialsT="00"+serials; }else if(serials >=100 && serials<1000){ serialsT="0"+serials; }else if(serials >=1000 && serials<10000){ serialsT=""+serials; }else{ serialsT="1000"; Consistant.serials=999; } Long seconds = (new Date()).getTime()/1000; String dataStr=Long.toHexString(seconds); String serialsTStr=Integer.toHexString(Integer.parseInt(serialsT)); if(serialsTStr.length()<4){ int diff= 4 - serialsTStr.length() ; if(diff==3){ serialsTStr="000"+serialsTStr; }else if(diff==2){ serialsTStr="00"+serialsTStr; }else if(diff==1){ serialsTStr="0"+serialsTStr; } } String rebateIntegrateTStr=Integer.toHexString(Integer.parseInt(rebateIntegrateT)); if(rebateIntegrateTStr.length()<4){ int diff= 4 - rebateIntegrateTStr.length() ; if(diff==3){ rebateIntegrateTStr="000"+rebateIntegrateTStr; }else if(diff==2){ rebateIntegrateTStr="00"+rebateIntegrateTStr; }else if(diff==1){ rebateIntegrateTStr="0"+rebateIntegrateTStr; } } String resStr=Integer.toHexString(res); if(resStr.length()<4){ int diff= 4 - resStr.length() ; if(diff==3){ resStr="000"+resStr; }else if(diff==2){ resStr="00"+resStr; }else if(diff==1){ resStr="0"+resStr; } } content= dataStr+"|" +serialsTStr+"|"+ rebateIntegrateTStr +"|"+resStr; // content= dateTimes+"|" +serialsT +"|"+rebateIntegrateT+"|"+res; LogUtil.WriteLog_Info("用户:"+openId+"---->核销积分"+integrateType+"生成的流水号======"+content,"QCodeInfoServiceImpl"); // Consistant.map.put(content,jo); Long l = redisConfigUtil.setIntegral(content, jo.toJSONString()); if(l<0){ return "5"; } return content; } /** * @param content 二维码内容 * @return */ public String removeContent(String content){ Object content1 = Consistant.map.get(content); if(!PubTools.isEmpty(content1)){ Consistant.map.remove(content); } Long l = redisConfigUtil.delIntegral(content); if(l<0){ LogUtil.WriteLog_Error("removeContent 删除缓存中key失败,redis 连接失败了","QCodeInfoServiceImpl"); } return "1"; } public int failBackMoney(String content, String serverOperationId,String orderId) throws Exception { return rollBackIntegral(content,serverOperationId,orderId); } @Transactional(value = "jtatransactionManager",timeout = 100) public int rollBackIntegral(String content, String serverOperationId,String orderId) throws Exception { int ret=1;// -1 代表接口处理失败 1 处理成功 2 商户不存在 3订单已经退回 4 用户信息未找到 LogUtil.WriteLog_Info("调用红冲接口开始=====","QCodeInfoServiceImpl"); String sqlTemp="select t.ID,COALESCE(to_char(t.INTEGRATIONLISTID),'') AS INTEGRATIONLISTID,COALESCE(to_char(t.INTEGRALROLLBACK),'') AS INTEGRALROLLBACK,t.USERID from CAFTER_TABLE t where t.ORDERID = '"+orderId+"' AND t.USERJOBNUMBER='"+serverOperationId+"'"; if("4".equals(DBType)){ sqlTemp="select t.ID,COALESCE(CONVERT(t.INTEGRATIONLISTID,CHAR),'') AS INTEGRATIONLISTID,COALESCE(CONVERT(t.INTEGRALROLLBACK,CHAR),'') AS INTEGRALROLLBACK,t.USERID from CAFTER_TABLE t where t.ORDERID = '"+orderId+"' AND t.USERJOBNUMBER='"+serverOperationId+"'"; } List selectforlist = this.mapperI.selectforlist(sqlTemp); if(selectforlist.isEmpty()){ ret=2; return ret; }else{ //判断订单是否已经取消过 Map o =(Map) selectforlist.get(0); String integralIdRoll=PubTools.isEmpty(o.get("INTEGRALROLLBACK"))?"":o.get("INTEGRALROLLBACK").toString(); String userId=PubTools.isEmpty(o.get("USERID"))?"":o.get("USERID").toString(); //判断用户是否被锁定 String sqlUserTemp="SELECT ut.CERTIFICATION FROM WEIXN_USER_TABLE ut WHERE ID="+userId+""; List userByOpenIdTemp = this.mapperI.selectforlist(sqlUserTemp); if(userByOpenIdTemp.isEmpty()){ ret=4; return ret; }else { Object obj = userByOpenIdTemp.get(0); Map obj1 = (Map) obj; String certification = obj1.get("CERTIFICATION").toString();//认证状态 if ("5".equals(certification)) { ret=5; return ret; } } if(!PubTools.isNull(integralIdRoll)){ ret=3; return ret; } String openId=""; //查询积分流水 String integralId=o.get("INTEGRATIONLISTID").toString(); String integralSql="select " + " ilt.ID,ilt.USERID ,ilt.ACARNO ,ilt.LASTINTEGRATION AS LASTINTEGRATION ,ilt.PAYTYPE,ilt.PAYINTEGRATION AS PAYINTEGRATION , " + " ilt.RESTINTEGRATION AS RESTINTEGRATION,ilt.OGENABLEINTEGRATION AS OGENABLEINTEGRATION,ilt.CPENABLEINTEGRATION AS CPENABLEINTEGRATION " + " from integration_list_table ilt where ilt.ID="+integralId+" "; List selectforlistInt = this.mapperI.selectforlist(integralSql); String rollbackTime=PubTools.getCurrentDate(); if(!selectforlistInt.isEmpty()){ Map oIntegral =(Map) selectforlistInt.get(0); String userid=PubTools.isEmpty(oIntegral.get("USERID"))?"": oIntegral.get("USERID").toString(); String payType=PubTools.isEmpty(oIntegral.get("PAYTYPE"))?"": oIntegral.get("PAYTYPE").toString(); String aCarNo= PubTools.isEmpty(oIntegral.get("ACARNO"))?"":oIntegral.get("ACARNO").toString(); String payIntegral= PubTools.isEmpty(oIntegral.get("PAYINTEGRATION"))?"0":oIntegral.get("PAYINTEGRATION").toString(); String sqlMax="select COALESCE(max(t.ID),0) AS ID from integration_list_table t"; List selectforlistMax = this.mapperI.selectforlist(sqlMax); int maxId=1; if(!selectforlistMax.isEmpty()){ Map os =(Map) selectforlistMax.get(0); maxId=Integer.parseInt(os.get("ID").toString()) ; } String sqlUser="select " + " ut.ID ,ut.OPENID ,COALESCE(ut.ENABLEINTEGRATION,0) AS ENABLEINTEGRATION," + " COALESCE(ut.OGENABLEINTEGRATION,0) AS OGENABLEINTEGRATION," + " COALESCE(ut.CPENABLEINTEGRATION,0) AS CPENABLEINTEGRATION" + " from WEIXN_USER_TABLE ut " + " where 1=1 AND ut.ID="+userid+""; List userByOpenId = this.mapperI.selectforlist(sqlUser); String ENABLEINTEGRATION="0"; double OGENABLEINTEGRATION=0.0; double CPENABLEINTEGRATION=0.0; if(!userByOpenId.isEmpty()){ Object obj = userByOpenId.get(0); Map obj1 = (Map) obj; ENABLEINTEGRATION = obj1.get("ENABLEINTEGRATION").toString();//用户可用公共积分 OGENABLEINTEGRATION =Double.parseDouble(obj1.get("OGENABLEINTEGRATION").toString()) ;//用户可用加油、加气积分 CPENABLEINTEGRATION = Double.parseDouble(obj1.get("CPENABLEINTEGRATION").toString());//用户可用消费积分 } if("FG".equals(payType) || "FP".equals(payType)){//加油加气 OGENABLEINTEGRATION= PubTools.doubleSave1(OGENABLEINTEGRATION+Double.parseDouble(payIntegral)); }else {//消费 CPENABLEINTEGRATION= PubTools.doubleSave1(CPENABLEINTEGRATION+Double.parseDouble(payIntegral)); } Map integralList = new HashMap<>(); integralList.put("maxid",(maxId + 10)); integralList.put("userId",userid); integralList.put("acarNo",""); integralList.put("lastintegration",PubTools.doubleSave1(Double.parseDouble(ENABLEINTEGRATION))); integralList.put("payintegration",PubTools.doubleSave1(Double.parseDouble(payIntegral))); integralList.put("restintegration",PubTools.doubleSave1((Double.parseDouble(ENABLEINTEGRATION)+Double.parseDouble(payIntegral)))); integralList.put("payTime",rollbackTime); integralList.put("paytype","TK"); integralList.put("DBTYPE",DBType); integralList.put("cpenableintegration",PubTools.doubleSave1(CPENABLEINTEGRATION)); integralList.put("ogenableintegration", PubTools.doubleSave1(OGENABLEINTEGRATION)); this.integrationListMapper.addIntegralList(integralList); if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) { String bakDBType = PropertiesUtil.getValue("BakDBType"); integralList.put("DBTYPEBAK",bakDBType); this.integrationListMyMapper.addIntegralList(integralList); } LogUtil.WriteLog_Info("积分恢复=====流水记录已插入","QCodeInfoServiceImpl"); Map updateCafe=new HashMap<>(); updateCafe.put("rollback","SUCCESS"); updateCafe.put("integralrollback",(maxId+1)); updateCafe.put("rollbackTime",rollbackTime); updateCafe.put("orderId",orderId); updateCafe.put("serverOperationId",serverOperationId); updateCafe.put("DBTYPE",DBType); this.cafterTableMapper.updatecafter(updateCafe); if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) { String bakDBType = PropertiesUtil.getValue("BakDBType"); updateCafe.put("DBTYPEBAK",bakDBType); this.cafterTableMyMapper.updatecafter(updateCafe); } LogUtil.WriteLog_Info("积分恢复=====消费记录已更新完成","QCodeInfoServiceImpl"); //3、计算用户可用积分 String sql="select " + " ut.ID ,ut.OPENID ,COALESCE(ut.ENABLEINTEGRATION,0) AS ENABLEINTEGRATION,COALESCE(ut.CPENABLEINTEGRATION,0) AS CPENABLEINTEGRATION,COALESCE(ut.OGENABLEINTEGRATION,0) AS OGENABLEINTEGRATION" + " from WEIXN_USER_TABLE ut " + " where 1=1 AND ut.ID="+userid+""; List selectforlist1 = this.mapperI.selectforlist(sql); double enabledIntegral = 0.0; if(!selectforlist1.isEmpty()){ Object objT = selectforlist1.get(0); Map obj1T = (Map) objT; openId=obj1T.get("OPENID").toString(); double enabledT=Double.parseDouble(obj1T.get("ENABLEINTEGRATION").toString()); BigDecimal bd = BigDecimal.valueOf(enabledT + Double.parseDouble(payIntegral)); bd = bd.setScale(1, RoundingMode.HALF_UP); double enabledTI = bd.doubleValue(); double enabledTCp=Double.parseDouble(obj1T.get("CPENABLEINTEGRATION").toString()); BigDecimal bdcp = BigDecimal.valueOf(enabledTCp + Double.parseDouble(payIntegral)); bdcp = bdcp.setScale(1, RoundingMode.HALF_UP); double enabledTICp =0.0; if("FC".equals(payType) || "FS".equals(payType)){ enabledTICp = bdcp.doubleValue(); enabledIntegral=enabledTICp; }else{ enabledTICp=enabledTCp; } double enabledTOG=Double.parseDouble(obj1T.get("OGENABLEINTEGRATION").toString()); BigDecimal bdco = BigDecimal.valueOf(enabledTOG +Double.parseDouble(payIntegral)); bdco = bdco.setScale(1, RoundingMode.HALF_UP); double enabledTIOG =0.0; if("FG".equals(payType) || "FP".equals(payType)){ enabledTIOG = bdco.doubleValue(); enabledIntegral=enabledTIOG; }else{ enabledTIOG=enabledTOG; } /* String sqlUpdate="update WEIXN_USER_TABLE SET ENABLEINTEGRATION="+enabledTI+",CPENABLEINTEGRATION="+enabledTICp+",OGENABLEINTEGRATION="+enabledTIOG+" " + " where ID="+userid; this.mapperI.update(sqlUpdate);*/ Map userParams=new HashMap(); userParams.put("userId",openId); userParams.put("enabledTI",enabledTI); userParams.put("enabledTICp",enabledTICp); userParams.put("enabledTIOG",enabledTIOG); userParams.put("DBTYPE",DBType); this.userTableMapper.updateUserById(userParams); if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) { String bakDBType = PropertiesUtil.getValue("BakDBType"); userParams.put("DBTYPEBAK",bakDBType); this.userTableMyMapper.updateUserById(userParams); } LogUtil.WriteLog_Info("用户更新可用积分完成","QCodeInfoServiceImpl"); } //发送消息 String integralTypePu=""; if("FP".equals(payType)){ integralTypePu="加油(恢复积分)"; }else if("FG".equals(payType)){ integralTypePu="加气(恢复积分)"; }else if("FC".equals(payType)){ integralTypePu="餐饮(恢复积分)"; }else if("FS".equals(payType)){ integralTypePu="商超(恢复积分)"; } this.messagePushServiceImpl.pushMsg(openId,integralTypePu,"+"+PubTools.doubleSave1(Double.parseDouble(payIntegral)/100)+"",(enabledIntegral/100)+""); } } return ret; } public String getStatusByOrderId( String orderId,String checkType){ String ret="1";// -1 代表接口处理失败 1 处理成功 2 根据订单id未找到积分消费记录 try{ String sqlTemp="select t.ID,t.ORDERID,COALESCE(t.INTEGRATIONLISTID,'') AS INTEGRATIONLISTID,COALESCE(t.INTEGRALROLLBACK,'') AS INTEGRALROLLBACK from CAFTER_TABLE t where t.ORDERID = '"+orderId+"' "; List selectforlist = this.mapperI.selectforlist(sqlTemp); if(selectforlist.size()<1){ ret="2"; return ret; }else{ Map o =(Map) selectforlist.get(0); String integralId=o.get("INTEGRATIONLISTID").toString(); String integralrollbacklId=o.get("INTEGRALROLLBACK").toString(); if ("TRIMINTEGRAL".equals(checkType)){//积分核减结果 if(PubTools.isNull(integralId)){ ret="0"; } }else if ("ROLLBACK".equals(checkType)){//退款结果 if(PubTools.isNull(integralrollbacklId)){ ret="0"; } } } }catch (Exception e){ LogUtil.WriteLog_Error("查询积分核减(退款)结果操作失败","QCodeInfoServiceImpl"); ret="-1"; return ret; } return ret; } public List getIntegralListByServiceId( String serverOperationId,String checkType,String payBeginTime,String payEndTime){ List ret=null;// -1 代表接口处理失败 1 处理成功 try{ String sqlTemp="SELECT\n" + "\tct.ORDERID,\n" + "\tct.USERJOBNUMBER,\n" + "\tCOALESCE(TO_CHAR(ct.CAFTERTIME,'YYYY-MM-dd HH24:mi:ss'),'') AS CAFTERTIMEBAK,\n" + "\t\tCOALESCE(TO_CHAR(ct.ROLLBACKTIME,'YYYY-MM-dd HH24:mi:ss'),'') AS ROLLBACKTIME,\n" + "\t\tCOALESCE(TO_CHAR(ilt.PAYTIME,'YYYY-MM-dd HH24:mi:ss'),'') AS CAFTERTIME,\n" + "\tROUND(ilt.PAYINTEGRATION/100,1) AS PAYINTEGRATION,\n" + "\tilt.PAYTYPE,\n" + "\tpt.TEXT AS PAYTYPENAME\n" + "FROM\n" + "\tCAFTER_TABLE ct,\n" + "\tINTEGRATION_LIST_TABLE ilt,\n" + " PEYTYPE_TEXT pt\t\n" + "WHERE\n" + "\t( ct.INTEGRATIONLISTID = ilt.ID OR ct.INTEGRALROLLBACK = ilt.ID ) \n" + "\tAND ilt.PAYTYPE = pt.VALUE\n" + "\tAND ct.USERJOBNUMBER = '"+serverOperationId+"'\n"; if("4".equals(DBType)){ sqlTemp="SELECT\n" + "\tct.ORDERID,\n" + "\tct.USERJOBNUMBER,\n" + "\tCOALESCE(date_format(ct.CAFTERTIME, '%Y-%m-%d %H:%i:%s'),'') AS CAFTERTIMEBAK,\n" + "\t\tCOALESCE(date_format(ct.ROLLBACKTIME,'%Y-%m-%d %H:%i:%s'),'') AS ROLLBACKTIME,\n" + "\t\tCOALESCE(date_format(ilt.PAYTIME,'%Y-%m-%d %H:%i:%s'),'') AS CAFTERTIME,\n" + "\tROUND(ilt.PAYINTEGRATION/100,1) AS PAYINTEGRATION,\n" + "\tilt.PAYTYPE,\n" + "\tpt.TEXT AS PAYTYPENAME\n" + "FROM\n" + "\tCAFTER_TABLE ct,\n" + "\tINTEGRATION_LIST_TABLE ilt,\n" + " PEYTYPE_TEXT pt\t\n" + "WHERE\n" + "\t( ct.INTEGRATIONLISTID = ilt.ID OR ct.INTEGRALROLLBACK = ilt.ID ) \n" + "\tAND ilt.PAYTYPE = pt.VALUE\n" + "\tAND ct.USERJOBNUMBER = '"+serverOperationId+"'\n"; } if(!PubTools.isNull(payBeginTime) && !PubTools.isNull(payEndTime)){ if("2".equals(DBType)){ sqlTemp +=" \tAND (\n" + "\t\t (TO_CHAR( ct.CAFTERTIME, 'YYYY-MM-dd HH24:mi:ss' )>= '"+payBeginTime+"' AND TO_CHAR( ct.CAFTERTIME, 'YYYY-MM-dd HH24:mi:ss' )<= '"+payEndTime+"')\n" + "\t\tOR (TO_CHAR( ct.ROLLBACKTIME, 'YYYY-MM-dd HH24:mi:ss' ) >= '"+payBeginTime+"' AND TO_CHAR( ct.ROLLBACKTIME, 'YYYY-MM-dd HH24:mi:ss' )<= '"+payEndTime+"')\n" + "\t) "; }else if("4".equals(DBType)){ sqlTemp +=" \tAND (\n" + "\t\t (date_format( ct.CAFTERTIME, '%Y-%m-%d %H:%i:%s' )>= '"+payBeginTime+"' AND date_format( ct.CAFTERTIME, '%Y-%m-%d %H:%i:%s' )<= '"+payEndTime+"')\n" + "\t\tOR (date_format( ct.ROLLBACKTIME, '%Y-%m-%d %H:%i:%s' ) >= '"+payBeginTime+"' AND date_format( ct.ROLLBACKTIME, '%Y-%m-%d %H:%i:%s' )<= '"+payEndTime+"')\n" + "\t) "; }else{} }else if(!PubTools.isNull(payBeginTime) && PubTools.isNull(payEndTime)){ if("2".equals(DBType)){ sqlTemp +="\tAND (\n" + "\t\t TO_CHAR( ct.CAFTERTIME, 'YYYY-MM-dd HH24:mi:ss' )>= '"+payBeginTime+"' \n" + "\t\tOR TO_CHAR( ct.ROLLBACKTIME, 'YYYY-MM-dd HH24:mi:ss' ) >= '"+payBeginTime+"' \n" + "\t)"; }else if("4".equals(DBType)){ sqlTemp +="\tAND (\n" + "\t\t date_format( ct.CAFTERTIME, '%Y-%m-%d %H:%i:%s' )>= '"+payBeginTime+"' \n" + "\t\tOR date_format( ct.ROLLBACKTIME, '%Y-%m-%d %H:%i:%s' ) >= '"+payBeginTime+"' \n" + "\t)"; }else{ } }else if(PubTools.isNull(payBeginTime) && !PubTools.isNull(payEndTime)){ if("2".equals(DBType)){ sqlTemp +="AND (\n" + "\t\tTO_CHAR( ct.CAFTERTIME, 'YYYY-MM-dd HH24:mi:ss' )<= '"+payEndTime+"'\n" + "\t\tOR TO_CHAR( ct.ROLLBACKTIME, 'YYYY-MM-dd HH24:mi:ss' )<= '"+payEndTime+"'\n" + "\t) "; }else if("4".equals(DBType)){ sqlTemp +="AND (\n" + "\t\tdate_format( ct.CAFTERTIME, '%Y-%m-%d %H:%i:%s' )<= '"+payEndTime+"'\n" + "\t\tOR date_format( ct.ROLLBACKTIME, '%Y-%m-%d %H:%i:%s' )<= '"+payEndTime+"'\n" + "\t) "; }else{ } }else{ } if(!PubTools.isNull(checkType)){ if("TK".equals(checkType)){ sqlTemp +=" AND ilt.PAYTYPE='TK' "; }else{ sqlTemp +=" AND substr(ilt.PAYTYPE,1,1)='F' "; } } sqlTemp +=" order by ct.CAFTERTIME,ct.ROLLBACKTIME"; ret = this.mapperI.selectforlist(sqlTemp); }catch (Exception e){ LogUtil.WriteLog_Error("根据商户查询积分明细失败","QCodeInfoServiceImpl"); ret=null; return ret; } return ret; } public List getIntegralTotalByServiceId( String serverOperationId){ List ret=null;// -1 代表接口处理失败 1 处理成功 try{ String sqlTemp="SELECT\n" + "\tCOALESCE(ROUND(sum(ilt.PAYINTEGRATION)/100,1),0) AS PAYINTEGRATION\n" + "FROM\n" + "\tCAFTER_TABLE ct,\n" + "\tINTEGRATION_LIST_TABLE ilt,\n" + "\tSERVICE_AREA_OPERATORS_TABLE soat,\n" + " PEYTYPE_TEXT pt\t\n" + "WHERE\n" + "\t( ct.INTEGRATIONLISTID = ilt.ID OR ct.INTEGRALROLLBACK = ilt.ID ) \n" + "\tAND ilt.PAYTYPE = pt.VALUE\n" + "\tAND ct.USERJOBNUMBER = soat.JOBNUMBER\n" + "\tAND ct.USERJOBNUMBER = '"+serverOperationId+"' AND (ct.INTEGRALROLLBACK is null or ct.INTEGRALROLLBACK ='') group by ct.USERJOBNUMBER"; ret = this.mapperI.selectforlist(sqlTemp); }catch (Exception e){ LogUtil.WriteLog_Error("根据商户查询总积分失败","QCodeInfoServiceImpl"); ret=null; return ret; } return ret; } public String hexToString(String hexStr){ String[] split = hexStr.replace("|", ",").split(","); Long dataStr = Long.valueOf(split[0], 16); BigInteger bigint=new BigInteger(split[1], 16); int series=bigint.intValue(); BigInteger bigint2=new BigInteger(split[2], 16); int rebateInteger=bigint2.intValue(); BigInteger bigint3=new BigInteger(split[3], 16); int checkStr=bigint3.intValue(); return dataStr+"|"+series+"|"+rebateInteger+"|"+checkStr; } /** * * @param content 二维码流水号 * @param serverOperationId 商超用户ID * @param payMoney 实际支付金额 * @return */ @Transactional(value = "jtatransactionManager",timeout = 100) public JSONObject solveQcodeRedis(String content, String serverOperationId,String orderId, Double payMoney,Double discountMoneyBefore,Double discountMoney){ String ret="-2";// -1 代表接口处理失败 1 处理成功 2 用户不存在 3 兑换积分大于用户可用积分 4 二维码信息过期 5 商户不存在 6 积分类型与消费方式不匹配 7 商户角色未设置 8 用户已冻结 9 折扣金额与消费积分不一致 10 请重新生成二维码 11 订单中商户与核销中的商户不匹配 12 订单已核销 JSONObject retJo=new JSONObject(); String openId=""; LogUtil.WriteLog_Info("积分核减操作开始====="+PubTools.getCurrentDate()+"=======params==={content:"+content+",serverOperationId:"+serverOperationId+",discountMoney:"+discountMoney+"}","QCodeInfoServiceImpl"); //查询金额与积分的兑换比例 String sqlTemp="select t.VALUE/100 AS VALUE ,t.EVERYMONEY/100 AS EVERYMONEY from PAY_INTEGRATION_NUMBER_TABLE t where t.TYPE='@TYPE@'"; String rollbackTime=PubTools.getCurrentDate(); Object content1 = Consistant.map.get(content); if(PubTools.isEmpty(content1)){ content1 = redisConfigUtil.getIntegral(content); } if(content1 != null && !"-1".equals(content1.toString())){ JSONObject joMap=null; if(content1 instanceof JSONObject){ joMap=(JSONObject)content1; } else if (content1 instanceof String) { joMap = JSONObject.parseObject(content1.toString()); } if(joMap== null){ ret="4"; retJo.put("ret",ret); return retJo; } openId= PubTools.isEmpty(joMap.get("openId"))?"":joMap.get("openId").toString(); String integrateTypeParam= PubTools.isEmpty(joMap.get("integrateType"))?"":joMap.get("integrateType").toString(); String rebateIntegrate= PubTools.isEmpty(joMap.get("rebateIntegrate"))?"":joMap.get("rebateIntegrate").toString(); String createTime= PubTools.isEmpty(joMap.get("createTime"))?"":joMap.get("createTime").toString(); Long s = PubTools.dateDiff(createTime, rollbackTime, "S"); LogUtil.WriteLog_Info("二维码生成时间长度====="+s,"QCodeInfoServiceImpl"); retJo.put("openId",openId); String integrateType=""; String enabledIntegral=""; int userIdNew=0; //校验用户状态 List userByOpenId = userTableService.getUserByOpenId(openId); Object obj = userByOpenId.get(0); Map obj1 = (Map) obj; String certification = obj1.get("CERTIFICATION").toString();//认证状态 if(userByOpenId.isEmpty()){ Object contentNew = Consistant.map.get(content); if(!PubTools.isEmpty(contentNew)){ Consistant.map.remove(content); } Long l = redisConfigUtil.delIntegral(content); ret="2"; retJo.put("ret",ret); return retJo; } if ("5".equals(certification)) { ret = "8"; retJo.put("ret", ret); Object contentNew = Consistant.map.get(content); if(!PubTools.isEmpty(contentNew)){ Consistant.map.remove(content); } Long l = redisConfigUtil.delIntegral(content); return retJo; } //先查询商户角色 String serviceRole = ""; String inputMoney = "";//是否需要商户端输入金额 String serivceOperatorRole = "SELECT saot.ID,saot.USERNAME,saot.ROLEID,saot.SERVICEAREAID,saoc.INPUTMENEY FROM SERVICE_AREA_OPERATORS_TABLE saot,SERVICE_AREA_OPERATORS_COMPANY_TEXT saoc " + " WHERE saoc.ID = saot.COMPANYID AND saot.JOBNUMBER='" + serverOperationId + "'"; List serviceOperatorList = this.mapperI.selectforlist(serivceOperatorRole); if (serviceOperatorList.isEmpty()) {//商户不存在 Object contentNew = Consistant.map.get(content); if(!PubTools.isEmpty(contentNew)){ Consistant.map.remove(content); } ret = "5"; retJo.put("ret", ret); return retJo; } boolean isCheckDiscountMoney=false; if(!userByOpenId.isEmpty()){ String ENABLEINTEGRATION = obj1.get("ENABLEINTEGRATION").toString();//用户可用公共积分 String OGENABLEINTEGRATION = obj1.get("OGENABLEINTEGRATION").toString();//加油、加气可用积分 String CPENABLEINTEGRATION = obj1.get("CPENABLEINTEGRATION").toString();//餐饮、消费可用积分 userIdNew = Integer.parseInt(obj1.get("ID").toString());//人员id if (s > 30) { Object contentNew = Consistant.map.get(content); if(!PubTools.isEmpty(contentNew)){ Consistant.map.remove(content); } Long l = redisConfigUtil.delIntegral(content); ret = "4"; retJo.put("ret", ret); return retJo; } //核验商户角色与积分消费类型是否匹配 if (!serviceOperatorList.isEmpty()) { //校验用户与角色出示二维码积分消费类型是否匹配 Map mapServiceOperator = (Map) serviceOperatorList.get(0); serviceRole = mapServiceOperator.get("ROLEID").toString(); /* serviceAreaId = mapServiceOperator.get("SERVICEAREAID").toString();*/ inputMoney = mapServiceOperator.get("INPUTMENEY").toString(); } if("1".equals(inputMoney)){ isCheckDiscountMoney=true; } //根据商户角色判断消费类型 if (PubTools.isNull(serviceRole)) { LogUtil.WriteLog_Info("商户角色未设置", "QCodeInfoServiceImpl"); Object contentNew = Consistant.map.get(content); if(!PubTools.isEmpty(contentNew)){ Consistant.map.remove(content); } Long l = redisConfigUtil.delIntegral(content); ret = "7"; retJo.put("ret", ret); return retJo; } else { if ("3".equals(serviceRole) || "1".equals(serviceRole)) {//加油加气 if (!"FPG".equals(integrateTypeParam)) { ret = "6"; retJo.put("ret", ret); Object contentNew = Consistant.map.get(content); if(!PubTools.isEmpty(contentNew)){ Consistant.map.remove(content); } return retJo; } } if ("2".equals(serviceRole) || "4".equals(serviceRole)) {//餐饮、商超 if (!"FCS".equals(integrateTypeParam) && !"FCA".equals(integrateTypeParam)) { ret = "6"; retJo.put("ret", ret); Object contentNew = Consistant.map.get(content); if(!PubTools.isEmpty(contentNew)){ Consistant.map.remove(content); } return retJo; } } if ("1".equals(serviceRole)) { integrateType = "FP"; } else if ("2".equals(serviceRole)) { integrateType = "FC"; } else if ("3".equals(serviceRole)) { integrateType = "FG"; } else if ("4".equals(serviceRole)) { integrateType = "FS"; } else { } } //查询用户累积获取的总积分 double rebateIntegrateSave = 0.0; switch (integrateType) { case "FP"://加油 retJo.put("ENABLEINTEGRATIONBEFORE", PubTools.doubleSave1(Double.parseDouble(OGENABLEINTEGRATION))); String sqlFp = sqlTemp.replace("@TYPE@", integrateType); List selectforlist = this.mapperI.selectforlist(sqlFp); //判断兑换积分是否够本次折扣 int rebateIn = 1; if (!selectforlist.isEmpty()) { Map o = (Map) selectforlist.get(0); BigDecimal bd = BigDecimal.valueOf(Double.parseDouble(o.get("VALUE").toString())); bd = bd.setScale(1, BigDecimal.ROUND_HALF_UP); rebateIn=bd.intValue(); } //根据折扣金额计算积分 Double rebateIntegrateI = Double.parseDouble(rebateIntegrate); Double rebateIntegrateIZK=PubTools.doubleSave1(discountMoney*rebateIn); if(isCheckDiscountMoney){ if((rebateIntegrateIZK - rebateIntegrateI) != 0){ ret = "9"; retJo.put("PAYINTEGRAL", rebateIntegrateI); retJo.put("discountMoney", rebateIntegrateIZK); retJo.put("ret", ret); return retJo; } } double enabledInteg = Double.parseDouble(OGENABLEINTEGRATION); if (rebateIntegrateI > enabledInteg) { ret = "3"; retJo.put("PAYINTEGRAL", rebateIntegrateI); retJo.put("ret", ret); return retJo; } else { rebateIntegrateSave=rebateIntegrateI; retJo.put("PAYINTEGRAL", rebateIntegrateI); } break; case "FG"://加气 retJo.put("ENABLEINTEGRATIONBEFORE", PubTools.doubleSave1(Double.parseDouble(OGENABLEINTEGRATION))); String sqlFg = sqlTemp.replace("@TYPE@", integrateType); List selectforlistFg = this.mapperI.selectforlist(sqlFg); //判断兑换积分是否够本次折扣 int rebateInFg = 1; if (!selectforlistFg.isEmpty()) { Map o = (Map) selectforlistFg.get(0); BigDecimal bd = BigDecimal.valueOf(Double.parseDouble(o.get("VALUE").toString())); bd = bd.setScale(1, BigDecimal.ROUND_HALF_UP); rebateInFg=bd.intValue(); } //根据折扣金额计算积分 Double rebateIntegrateIFgZk=PubTools.doubleSave1(discountMoney*rebateInFg); Double rebateIntegrateIFg = Double.parseDouble(rebateIntegrate); //折扣金额与输入的积分是否一致 if(isCheckDiscountMoney) { if ((rebateIntegrateIFgZk - rebateIntegrateIFg) != 0) { ret = "9"; retJo.put("PAYINTEGRAL", rebateIntegrateIFg); retJo.put("discountMoney", rebateIntegrateIFgZk); retJo.put("ret", ret); return retJo; } } double enabledIntegFg = Double.parseDouble(OGENABLEINTEGRATION); if (rebateIntegrateIFg > enabledIntegFg) { ret = "3"; retJo.put("PAYINTEGRAL", rebateIntegrateIFg); retJo.put("ret", ret); return retJo; } else { rebateIntegrateSave=rebateIntegrateIFg; retJo.put("PAYINTEGRAL", rebateIntegrateIFg); } break; case "FC"://餐饮 retJo.put("ENABLEINTEGRATIONBEFORE", PubTools.doubleSave1(Double.parseDouble(CPENABLEINTEGRATION))); String sqlFc = sqlTemp.replace("@TYPE@", integrateType); List selectforlistFc = this.mapperI.selectforlist(sqlFc); //判断兑换积分是否够本次折扣 int rebateInFc = 1; if (selectforlistFc.size() > 0) { Map o = (Map) selectforlistFc.get(0); BigDecimal bd = BigDecimal.valueOf(Double.parseDouble(o.get("VALUE").toString())); bd = bd.setScale(1, BigDecimal.ROUND_HALF_UP); rebateInFc=bd.intValue(); } //根据折扣金额计算积分 Double rebateIntegrateIFcZK=discountMoney*rebateInFc; Double rebateIntegrateIFc = Double.parseDouble(rebateIntegrate); if(isCheckDiscountMoney) { if ((rebateIntegrateIFcZK - rebateIntegrateIFc) != 0) { ret = "9"; retJo.put("PAYINTEGRAL", rebateIntegrateIFc); retJo.put("discountMoney", rebateIntegrateIFcZK); retJo.put("ret", ret); return retJo; } } double enabledIntegFc = Double.parseDouble(CPENABLEINTEGRATION); if (rebateIntegrateIFc > enabledIntegFc) { ret = "3"; retJo.put("PAYINTEGRAL", rebateIntegrateIFc); retJo.put("ret", ret); return retJo; } else { //进行积分核减 rebateIntegrateSave=rebateIntegrateIFc; retJo.put("PAYINTEGRAL", rebateIntegrateIFc); } break; case "FS"://消费 retJo.put("ENABLEINTEGRATIONBEFORE", PubTools.doubleSave1(Double.parseDouble(CPENABLEINTEGRATION))); String sqlFs = sqlTemp.replace("@TYPE@", integrateType); List selectforlistFs = this.mapperI.selectforlist(sqlFs); //判断兑换积分是否够本次折扣 int rebateInFs = 1; if (selectforlistFs.size() > 0) { Map o = (Map) selectforlistFs.get(0); BigDecimal bd = BigDecimal.valueOf(Double.parseDouble(o.get("VALUE").toString())); bd = bd.setScale(1, BigDecimal.ROUND_HALF_UP); rebateInFs=bd.intValue(); } //根据折扣金额计算积分 Double rebateIntegrateIFsZK=discountMoney*rebateInFs; Double rebateIntegrateIFs = Double.parseDouble(rebateIntegrate); if(isCheckDiscountMoney) { if ((rebateIntegrateIFsZK - rebateIntegrateIFs) != 0) { ret = "9"; retJo.put("PAYINTEGRAL", rebateIntegrateIFs); retJo.put("discountMoney", rebateIntegrateIFsZK); retJo.put("ret", ret); return retJo; } } double enabledIntegFs = Double.parseDouble(CPENABLEINTEGRATION); if (rebateIntegrateIFs > enabledIntegFs) { ret = "3"; retJo.put("PAYINTEGRAL", rebateIntegrateIFs); retJo.put("ret", ret); return retJo; } else { //进行积分核减 rebateIntegrateSave=rebateIntegrateIFs; retJo.put("PAYINTEGRAL", rebateIntegrateIFs); } break; default: break; } //进行积分核减 //1、积分流水记录新加 String sqlMax = "select COALESCE(max(ID),0) AS ID from integration_list_table"; List selectforlistMax = this.mapperI.selectforlist(sqlMax); //判断兑换积分是否够本次折扣 int maxId = 1; if (!selectforlistMax.isEmpty()) { Map o = (Map) selectforlistMax.get(0); maxId = Integer.parseInt(o.get("ID").toString()); } Map integralList = new HashMap<>(); integralList.put("maxid",(maxId + 10)); integralList.put("userId",userIdNew); integralList.put("acarNo",""); integralList.put("lastintegration",PubTools.doubleSave1(Double.parseDouble(ENABLEINTEGRATION) * 100)); integralList.put("payintegration",PubTools.doubleSave1(rebateIntegrateSave * 100)); integralList.put("restintegration",PubTools.doubleSave1(((Double.parseDouble(ENABLEINTEGRATION) - rebateIntegrateSave) * 100))); integralList.put("payTime",rollbackTime); integralList.put("paytype",integrateType); integralList.put("DBTYPE",DBType); if("FP".equals(integrateType) || "FG".equals(integrateType)){ integralList.put("cpenableintegration",PubTools.doubleSave1(((Double.parseDouble(OGENABLEINTEGRATION) - rebateIntegrateSave) * 100))); integralList.put("ogenableintegration", PubTools.doubleSave1(Double.parseDouble(CPENABLEINTEGRATION) * 100)); }else if("FC".equals(integrateType) || "FS".equals(integrateType)) { integralList.put("cpenableintegration",PubTools.doubleSave1(((Double.parseDouble(OGENABLEINTEGRATION)) * 100))); integralList.put("ogenableintegration",PubTools.doubleSave1((Double.parseDouble(CPENABLEINTEGRATION) - rebateIntegrateSave) * 100)); } this.integrationListMapper.addIntegralList(integralList); if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) { String bakDBType = PropertiesUtil.getValue("BakDBType"); integralList.put("DBTYPEBAK",bakDBType); this.integrationListMyMapper.addIntegralList(integralList); } LogUtil.WriteLog_Info("积分核减=====积分流水已插入", "QCodeInfoServiceImpl"); //2、新加一条消费记录 String maxIdCafeSql="select COALESCE(max(t.ID),0)+1 as ID from CAFTER_TABLE t"; List maxIdCafeSqlMax = this.mapperI.selectforlist(maxIdCafeSql); //判断兑换积分是否够本次折扣 int maxIdCafe = 1; if (!maxIdCafeSqlMax.isEmpty()) { Map o = (Map) maxIdCafeSqlMax.get(0); maxIdCafe = Integer.parseInt(o.get("ID").toString()); } Map cafetparam = new HashMap<>(); cafetparam.put("maxId",maxIdCafe); cafetparam.put("acarNo",""); cafetparam.put("userId",userIdNew); cafetparam.put("cafterTime",rollbackTime); cafetparam.put("userJobnumber",serverOperationId); cafetparam.put("trimintegral","SUCCESS"); cafetparam.put("integrationListId",(maxId + 10)); cafetparam.put("orderId",orderId); cafetparam.put("content",content); cafetparam.put("DBTYPE",DBType); this.cafterTableMapper.addcafter(cafetparam); if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) { String bakDBType = PropertiesUtil.getValue("BakDBType"); cafetparam.put("DBTYPEBAK",bakDBType); this.cafterTableMyMapper.addcafter(cafetparam); } LogUtil.WriteLog_Info("积分核减=====消费记录已插入", "QCodeInfoServiceImpl"); //3、计算用户可用积分 String sql = "select " + " ut.ID ,ut.OPENID ,COALESCE(ut.ENABLEINTEGRATION,0) AS ENABLEINTEGRATION,COALESCE(ut.CPENABLEINTEGRATION,0) AS CPENABLEINTEGRATION,COALESCE(ut.OGENABLEINTEGRATION,0) AS OGENABLEINTEGRATION" + " from WEIXN_USER_TABLE ut " + " where 1=1 AND ut.OPENID='" + openId + "'"; List selectforlist1 = this.mapperI.selectforlist(sql); if (!selectforlist1.isEmpty()) { Object objT = selectforlist1.get(0); Map obj1T = (Map) objT; double enabledT = Double.parseDouble(obj1T.get("ENABLEINTEGRATION").toString()); BigDecimal bd = BigDecimal.valueOf(enabledT - rebateIntegrateSave * 100); bd = bd.setScale(1, RoundingMode.HALF_UP); double enabledTI = bd.doubleValue(); double enabledTCp = Double.parseDouble(obj1T.get("CPENABLEINTEGRATION").toString()); BigDecimal bdcp = BigDecimal.valueOf(enabledTCp - rebateIntegrateSave * 100); bdcp = bdcp.setScale(1, RoundingMode.HALF_UP); double enabledTICp = bdcp.doubleValue(); double enabledTPG = Double.parseDouble(obj1T.get("OGENABLEINTEGRATION").toString()); BigDecimal bdcpPG = BigDecimal.valueOf(enabledTPG - rebateIntegrateSave * 100); BigDecimal bdcpPg = bdcpPG.setScale(1, RoundingMode.HALF_UP); double enabledTIPG = bdcpPg.doubleValue(); Map userParams=new HashMap(); userParams.put("userId",openId); userParams.put("enabledTI",enabledTI); if("FP".equals(integrateType) || "FG".equals(integrateType)){ userParams.put("enabledTIPG",enabledTIPG); enabledIntegral=PubTools.doubleSave1(enabledTIPG / 100)+""; retJo.put("ENABLEINTEGRATION",enabledIntegral); }else if("FC".equals(integrateType) || "FS".equals(integrateType)) { userParams.put("enabledTICp",enabledTICp); enabledIntegral=PubTools.doubleSave1(enabledTICp / 100)+""; retJo.put("ENABLEINTEGRATION", enabledIntegral); }else{ } userParams.put("DBTYPE",DBType); this.userTableMapper.updateUserById(userParams); if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) { String bakDBType = PropertiesUtil.getValue("BakDBType"); userParams.put("DBTYPEBAK",bakDBType); this.userTableMyMapper.updateUserById(userParams); } LogUtil.WriteLog_Info("用户更新可用积分完成", "QCodeInfoServiceImpl"); } Object contentNew = Consistant.map.get(content); if(!PubTools.isEmpty(contentNew)){ Consistant.map.remove(content); } Long l = redisConfigUtil.delIntegral(content); //发送消息 String integralTypePu=""; if("FP".equals(integrateType)){ integralTypePu="加油"; }else if("FG".equals(integrateType)){ integralTypePu="加气"; }else if("FC".equals(integrateType)){ integralTypePu="餐饮"; }else if("FS".equals(integrateType)){ integralTypePu="商超"; } this.messagePushServiceImpl.pushMsg(openId,integralTypePu,"-"+rebateIntegrateSave,enabledIntegral); } //积分核减成功 }else{ if (!content.contains("|")) { //需要判断是否是餐饮预约 String appointMentSql = "select t.ID,t.SERVICEOPERATIONID,tt.JOBNUMBER,t.COMPLETESTATUS,wut.OPENID from APPOINTMENT_INFO_TABLE t,SERVICE_AREA_OPERATORS_TABLE tt,WEIXN_USER_TABLE wut where wut.ID=t.USERID AND t.SERVICEOPERATIONID = tt.ID AND t.ORDERID='" + content + "'"; List appointMentList = this.mapperI.selectforlist(appointMentSql); if (appointMentList != null && appointMentList.size() > 0) { Map appointment = (Map) appointMentList.get(0); String appomintJob = appointment.get("JOBNUMBER").toString(); String completeStatus = appointment.get("COMPLETESTATUS").toString(); openId = appointment.get("OPENID").toString(); if ("Y".equals(completeStatus)) { if (!appomintJob.equals(serverOperationId)) {//数据已核销 ret = "12"; retJo.put("ret", ret); return retJo; } } if (!appomintJob.equals(serverOperationId)) {//说明订单中商户与核销的商户不符 ret = "11"; retJo.put("ret", ret); return retJo; } //先查询商户角色 String serivceOperatorRole = "SELECT saot.ID,saot.USERNAME,saot.ROLEID,saot.SERVICEAREAID,saoc.INPUTMENEY FROM SERVICE_AREA_OPERATORS_TABLE saot,SERVICE_AREA_OPERATORS_COMPANY_TEXT saoc " + " WHERE saoc.ID = saot.COMPANYID AND saot.JOBNUMBER='" + serverOperationId + "'"; List serviceOperatorList = this.mapperI.selectforlist(serivceOperatorRole); if (serviceOperatorList.isEmpty()) {//商户不存在 ret = "5"; retJo.put("ret", ret); return retJo; } //如果是餐饮预约, 则直接改了状态即可 Map updateCafe=new HashMap<>(); updateCafe.put("completeStatus","Y"); updateCafe.put("orderId",content); this.appointmentInfoMapper.updateConpleteStatus(updateCafe); if ("Y".equals(PropertiesUtil.getValue("BAKEnabled"))) { String bakDBType = PropertiesUtil.getValue("BakDBType"); updateCafe.put("DBTYPEBAK",bakDBType); this.appointmentInfoMyMapper.updateConpleteStatus(updateCafe); } LogUtil.WriteLog_Info("积分核减=====修改预约记录为已核销", "QCodeInfoServiceImpl"); ret = "1"; retJo.put("openId", openId); retJo.put("ret", ret); return retJo; } }else{ ret="4"; retJo.put("ret",ret); return retJo; } } retJo.put("ret",ret); return retJo; } }