You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

327 lines
16 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.nmgs.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.nmgs.mapper.Mapper;
import com.nmgs.service.UserTableService;
import com.nmgs.util.*;
import oracle.sql.CLOB;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Blob;
import java.sql.Clob;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Service
public class UserTableServiceImpl implements UserTableService {
@Autowired
public Mapper mapperI;
private static String DBType= PropertiesUtil.getValue("DBType");
private static String sql="select " +
" ut.ID ,ut.OPENID ,ut.USERNAME ,ut.PHONE ," +
" ut.REALNAME,substr(ut.IDNUMBER,1,6)||'********'||substr(ut.IDNUMBER,15) AS IDNUMBER," +
//" ut.NUMBERPIC AS NUMBERPIC," +
" ut.CERTIFICATION,ut.CREATETIME," +
" ut.UNPASSINFO," +
" ROUND((ut.ENABLEINTEGRATION/100),1) AS ENABLEINTEGRATION,ut.REFERRER,ut.BAK1," +
" ut.BAK2,ut.BAK3,ut.STARLEVEL,ROUND((ut.OILENABLEINTEGRATION/100),1) AS OILENABLEINTEGRATION," +
" ROUND((ut.GASENABLEINTEGRATION/100),1) AS GASENABLEINTEGRATION," +
" ROUND((ut.SPENABLEINTEGRATION / 100),1) AS SPENABLEINTEGRATION," +
" ROUND((ut.CAFENABLEINTEGRATION/100),1) AS CAFENABLEINTEGRATION," +
" ROUND((ut.OGENABLEINTEGRATION/100),1) AS OGENABLEINTEGRATION," +
" ROUND((ut.CPENABLEINTEGRATION/100),1) AS CPENABLEINTEGRATION," +
" ut.NUMBERPICNAME AS NUMBERPICNAME," +
" ut.REFERRERCODE AS REFERRERCODE," +
" cst.VALUE as CERTIFICATIONNAME" +
" from WEIXN_USER_TABLE ut " +
" left join certification_status_text cst on(ut.CERTIFICATION = cst.ID)" +
" where 1=1 ";
static{
if("4".equals(DBType)){
sql="select " +
" ut.ID ,ut.OPENID ,ut.USERNAME ,ut.PHONE ," +
" ut.REALNAME,concat(substr(ut.IDNUMBER,1,6),'********',substr(ut.IDNUMBER,15)) AS IDNUMBER," +
" ut.UNPASSINFO," +
" ut.CERTIFICATION,ut.CREATETIME," +
" ROUND((ut.ENABLEINTEGRATION/100),1) AS ENABLEINTEGRATION,ut.REFERRER,ut.BAK1," +
" ut.BAK2,ut.BAK3,ut.STARLEVEL,ROUND((ut.OILENABLEINTEGRATION/100),1) AS OILENABLEINTEGRATION," +
" ROUND((ut.GASENABLEINTEGRATION/100),1) AS GASENABLEINTEGRATION," +
" ROUND((ut.SPENABLEINTEGRATION / 100),1) AS SPENABLEINTEGRATION," +
" ROUND((ut.CAFENABLEINTEGRATION/100),1) AS CAFENABLEINTEGRATION," +
" ROUND((ut.OGENABLEINTEGRATION/100),1) AS OGENABLEINTEGRATION," +
" ROUND((ut.CPENABLEINTEGRATION/100),1) AS CPENABLEINTEGRATION," +
" ut.REFERRERCODE AS REFERRERCODE," +
" ut.NUMBERPICNAME AS NUMBERPICNAME," +
" cst.VALUE as CERTIFICATIONNAME" +
" from WEIXN_USER_TABLE ut " +
" left join certification_status_text cst on(ut.CERTIFICATION = cst.ID)" +
" where 1=1 ";
}
}
@Override
public List getUserByOpenId(String openId) {
List retlist=new ArrayList();;
String sqlTemp=sql;
try{
sqlTemp += " and ut.OPENID = '"+openId+"'";
retlist= this.mapperI.selectforlist(sqlTemp);
}catch (Exception e){
LogUtil.WriteLog_Error("根据微信openid查询用户失败===>"+e.getMessage(),"UserTableServiceImpl");
return null;
}
return retlist;
}
@Override
//@Transactional(rollbackFor={RuntimeException.class, Exception.class},propagation= Propagation.REQUIRED)
public synchronized int addUser(String openId, String userName) {
int ret=-1;
//查询全部人员给list赋值推荐码
List<String> retlist = new ArrayList();
if(PubTools.list.size()==0){
String sqlTempQuery = "select ut.REFERRERCODE AS REFERRERCODE from WEIXN_USER_TABLE ut";
List list= this.mapperI.selectforlist(sqlTempQuery);
if(list.size()>0) {
for (Object obj : list) {
Map<String, Object> obj1 = (Map<String, Object>) obj;
Object o = PubTools.isEmpty(obj1.get("REFERRERCODE"))?"":obj1.get("REFERRERCODE");
retlist.add(o.toString());
}
}
}else{
retlist=PubTools.list;
}
String REFERRERCODE=PubTools.generateRandomCode(6);
//从redis中获取用户的ID防止重复
Object obj = redisConfigUtil.get("USER_ID");
int userId = 0;
if (obj != null) {
userId = Integer.parseInt(obj.toString());
redisConfigUtil.set("USER_ID", (userId + 1) + "");
} else {
Map<String, Object> select = this.mapperI.select("select max(ID) AS MAXID from WEIXN_USER_TABLE");
if (select != null && select.get("MAXID") != null) {
userId = Integer.parseInt(select.get("MAXID").toString());
}
redisConfigUtil.set("USER_ID", userId + "");
}
String sqlTemp="insert into WEIXN_USER_TABLE(ID,OPENID,USERNAME,CREATETIME,ENABLEINTEGRATION,STARLEVEL,OILENABLEINTEGRATION,GASENABLEINTEGRATION," +
" SPENABLEINTEGRATION,CAFENABLEINTEGRATION,CERTIFICATION,OGENABLEINTEGRATION,CPENABLEINTEGRATION,REFERRERCODE) values(" + (userId + 1) + ",'" + openId + "','" + userName + "',to_date('" + PubTools.getCurrentDate() + "','yyyy-MM-dd HH24:mi:ss'),0,0,0,0,0,0,0,0,0,'" + REFERRERCODE + "')";
if("4".equals(DBType)){
sqlTemp="insert into WEIXN_USER_TABLE(ID,OPENID,USERNAME,CREATETIME,ENABLEINTEGRATION,STARLEVEL,OILENABLEINTEGRATION,GASENABLEINTEGRATION," +
" SPENABLEINTEGRATION,CAFENABLEINTEGRATION,CERTIFICATION,OGENABLEINTEGRATION,CPENABLEINTEGRATION,REFERRERCODE) values(" + (userId + 1) + ",'" + openId + "','" + userName + "',str_to_date('" + PubTools.getCurrentDate() + "','%Y-%m-%d %H:%i:%s'),0,0,0,0,0,0,0,0,0,'" + REFERRERCODE + "')";
}
try{
ret= this.mapperI.insert(sqlTemp);
retlist.add(REFERRERCODE);
PubTools.list=retlist;
}catch (Exception e){
LogUtil.WriteLog_Error("根据微信openid新增用户失败===>"+e.getMessage(),"UserTableServiceImpl");
return ret=-1;
}
return ret;
}
@Override
// @Transactional(rollbackFor = {Exception.class, RuntimeException.class},propagation = Propagation.REQUIRED)
public int updateUser(String userId,String idNumber,String phone,String realName,String numberPic) {
int ret=-1;
try{
//图片加水印
String fileName = userId + "NUMPIC" + ".jpg";
LogUtil.WriteLog_Info("用户实名认证修改附件水印=开始===" + PubTools.getCurrentDate() + "====", "UserController");
if (!PubTools.isNull(numberPic) && !numberPic.contains("NUMPIC")) {
LogUtil.WriteLog_Info("用户实名认证修改附件水印===IF里面=" + PubTools.getCurrentDate() + "====", "UserController");
String permitpicPic = ImageUtils.addImageWaterMark(numberPic, "仅用于内蒙古交通货运车辆积分会员认证", fileName);
LogUtil.WriteLog_Info("用户实名认证修改附件水印=完成===" + PubTools.getCurrentDate() + "====", "UserController");
if(!PubTools.isNull(permitpicPic)){
numberPic=permitpicPic;
}
}
if("2".equals(DBType)){
numberPic=PubTools.StringToClob(numberPic);
}
fileName = PubTools.getCurrentDateYMD() + "/" + fileName;
String sql="update WEIXN_USER_TABLE " +
" set CERTIFICATION=2,CREATETIME=to_date('" + PubTools.getCurrentDate() + "','yyyy-MM-dd HH24:mi:ss'),NUMBERPICNAME='" + fileName + "'";
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 CERTIFICATION=2,CREATETIME=str_to_date('" + PubTools.getCurrentDate() + "','%Y-%m-%d %H:%i:%s') ,NUMBERPICNAME='" + fileName + "'";
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);
//人员实名认证之后,需要积分表中加一条流水
/* String sqlTemp="insert into integration_list_table(ID,USERID,LASTINTEGRATION,PAYINTEGRATION,RESTINTEGRATION,PAYTIME,PAYTYPE) " +
" values((select max(temp.id)+1 from integration_list_table temp),"+userId+",0,(select t.VALUE from pay_integration_number_table t where t.TYPE='AU'),0,to_date('"+PubTools.getCurrentDate()+"','YYYY-MM-DD HH24:MI:SS'),'AU')";
ret=this.mapperI.insert(sqlTemp);*/
}catch (Exception e){
LogUtil.WriteLog_Error("人员实名认证失败===>"+e.getMessage(),"UserTableServiceImpl");
return ret=-1;
//throw new RuntimeException();
}
return ret;
}
@Override
public List getUserStarByOepnId(String openId) {
String sqlTemp="select t.ID,t2.OPENID,t2.USERID,t.STAR_LEVEL,COALESCE(t.EQUITY,'') AS EQUITY,t.BAK1,t.BAK2,t.BEGIN_VALUE AS BEGINVALUE,t.END_VALUE AS ENDVALUE from integral_star_setup t , (\n" +
"\tSELECT\n" +
"\t\tut.OPENID,\n" +
"\t\tut.ID AS USERID,\n" +
"\t\tCOALESCE(sum( t1.PAYINTEGRATION ),0) AS totalinte\n" +
"\tFROM\n" +
"\t\n" +
"\t\tWEIXN_USER_TABLE ut left join \n" +
"\t\tintegration_list_table t1 on(t1.USERID = ut.ID \n" +
"\t\tAND substr( t1.PAYTYPE, 1, 1 )= 'A' )\n" +
"\tWHERE\n" +
"\t\t1=1\n" +
"\tGROUP BY\n" +
"\t\tut.OPENID,ut.ID \n" +
"\t) t2 where t2.totalinte >= t.begin_value and t2.totalinte <t.end_value and t2.OPENID='"+openId+"'";
List list=null;
try{
list= this.mapperI.selectforlist(sqlTemp);
}catch (Exception e){
LogUtil.WriteLog_Error("根据微信openid查询用户星级失败===>"+e.getMessage(),"UserTableServiceImpl");
return list=null;
}
return list;
}
/**
* clob转String
*
* @param clob
* @return
*/
public String ClobToString(Object clob) throws Exception {
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) {
LogUtil.WriteLog_Error("Oracle数据由Clob类型转化String类型处理失败====>"+ e.getMessage(),"UserTableServiceImpl");
throw new Exception("Oracle数据处理失败");
}
return reString;
}
@Override
public List getUserDetailByOpenId(String openId) {
String sqlTemp="select " +
" ut.ID ,ut.OPENID ,ut.USERNAME ,ut.PHONE ,ut.UNPASSINFO," +
" ut.REALNAME," ;
if("2".equals(DBType)){
sqlTemp+="substr(ut.IDNUMBER,1,6)||'********'||substr(ut.IDNUMBER,15) AS IDNUMBER ,";
}else if("4".equals(DBType)){
sqlTemp+="concat(substr(ut.IDNUMBER,1,6),'********',substr(ut.IDNUMBER,15)) AS IDNUMBER,";
}
sqlTemp+= " ut.NUMBERPIC AS NUMBERPIC," +
" ut.CERTIFICATION,ut.CREATETIME," +
" ROUND((ut.ENABLEINTEGRATION/100),1) AS ENABLEINTEGRATION,ut.REFERRER,ut.BAK1," +
" ut.BAK2,ut.BAK3,ut.STARLEVEL,ROUND((ut.OILENABLEINTEGRATION/100),1) AS OILENABLEINTEGRATION," +
" ROUND((ut.GASENABLEINTEGRATION/100),1) AS GASENABLEINTEGRATION," +
" ROUND((ut.SPENABLEINTEGRATION / 100),1) AS SPENABLEINTEGRATION," +
" ROUND((ut.CAFENABLEINTEGRATION/100),1) AS CAFENABLEINTEGRATION," +
" ROUND((ut.OGENABLEINTEGRATION/100),1) AS OGENABLEINTEGRATION," +
" ROUND((ut.CPENABLEINTEGRATION/100),1) AS CPENABLEINTEGRATION," +
" ut.REFERRERCODE AS REFERRERCODE," +
" ut.NUMBERPICNAME AS NUMBERPICNAME," +
" (SELECT IPS.BAK1 FROM INTEGRAL_PUBLIC_SET ips WHERE IPS.PARAMCODE='PICURL') AS NUMBERPICURL," +
" cst.VALUE as CERTIFICATIONNAME" +
" from WEIXN_USER_TABLE ut " +
" left join certification_status_text cst on(ut.CERTIFICATION = cst.ID)" +
" where 1=1 ";
List list=null;
List retlist=new ArrayList();;
try{
sqlTemp += " and ut.OPENID = '"+openId+"'";
list= this.mapperI.selectforlist(sqlTemp);
if(list.size()>0){
for(Object obj:list){
Map<String, Object> obj1 = (Map<String, Object>) obj;
Object o=obj1.get("NUMBERPIC");
String s = PubTools.ClobToString(o);
if(!PubTools.isNull(s)){
obj1.remove("NUMBERPIC");
obj1.put("NUMBERPIC",s);
}
retlist.add(obj1);
}
}
}catch (Exception e){
LogUtil.WriteLog_Error("根据微信openid查询用户详情失败===>"+e.getMessage(),"UserTableServiceImpl");
return retlist=null;
}
return retlist;
}
@Override
public List checkUserInfo(String PHONE, String IDNUMBER, String REALNAME) {
List retlist = new ArrayList();
;
String sqlTemp = sql + " AND CERTIFICATION not in(0,2,3)";
try {
if (!PubTools.isNull(PHONE) || !PubTools.isNull(IDNUMBER) || !PubTools.isNull(REALNAME)) {
if (!PubTools.isNull(PHONE)) {
sqlTemp += " and ut.PHONE = '" + PHONE + "'";
}
if (!PubTools.isNull(IDNUMBER)) {
sqlTemp += " and ut.IDNUMBER = '" + IDNUMBER + "'";
}
if (!PubTools.isNull(REALNAME)) {
sqlTemp += " and ut.REALNAME = '" + REALNAME + "'";
}
retlist = this.mapperI.selectforlist(sqlTemp);
}
} catch (Exception e) {
LogUtil.WriteLog_Error("根据用户信息查询失败===>" + e.getMessage(), "UserTableServiceImpl");
return null;
}
return retlist;
}
}