package com.sp2p.service;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.shove.Convert;
import com.shove.base.BaseService;
import com.shove.data.DataException;
import com.shove.data.DataRow;
import com.shove.data.DataSet;
import com.shove.data.dao.Database;
import com.shove.data.dao.MySQL;
import com.shove.util.BeanMapUtils;
import com.sp2p.constants.IConstants;
import com.sp2p.dao.BeVipDao;
import com.sp2p.dao.OperationLogDao;
import com.sp2p.database.Dao;
import com.sp2p.database.Dao.Procedures;
import com.sp2p.database.Dao.Tables;
import com.sp2p.database.Dao.Tables.t_person;
import com.sp2p.database.Dao.Tables.t_user;
import com.sp2p.service.admin.SendmsgService;
public class BeVipService extends BaseService{
public static Log log = LogFactory.getLog(BeVipService.class);
private BeVipDao beVipDao;
private SendmsgService sendmsgService;
private OperationLogDao operationLogDao;
private SelectedService selectedService;
public void setSendmsgService(SendmsgService sendmsgService) {
this.sendmsgService = sendmsgService;
}
public void setBeVipDao(BeVipDao beVipDao) {
this.beVipDao = beVipDao;
}
/**
* 用于手机注册 查询t_user表中手机号码
* @param phone
* @return
* @throws SQLException
* @throws DataException
*/
public Map<String, String> queryIsPhoneonUser(String phone) throws SQLException, DataException {
Connection conn = connectionManager.getConnection();
Map<String, String> map = new HashMap<String, String>();
try {
map = beVipDao.queryIsPhoneonUser(conn, phone);
} catch (SQLException e) {
log.error(e);
e.printStackTrace();
throw e;
} catch (DataException e) {
log.error(e);
e.printStackTrace();
throw e;
} finally {
conn.close();
}
return map;
}
/**
* 验证手机的唯一性
* @param phone
* @return
* @throws SQLException
* @throws DataException
*/
public Map<String, String> queryIsPhone(String phone) throws SQLException, DataException {
Connection conn = connectionManager.getConnection();
Map<String, String> map = new HashMap<String, String>();
try {
map = beVipDao.queryIsPhone(conn, phone);
} catch (SQLException e) {
log.error(e);
e.printStackTrace();
throw e;
} catch (DataException e) {
log.error(e);
e.printStackTrace();
throw e;
} finally {
conn.close();
}
return map;
}
/**
* 查询用户基本信息
* @param id
* @return
* @throws SQLException
* @throws DataException
*/
public Map<String, String> queryPUser(Long id) throws SQLException, DataException {
Connection conn = connectionManager.getConnection();
Map<String, String> map = new HashMap<String, String>();
try {
map = beVipDao.queryPUser(conn, id);
} catch (SQLException e) {
log.error(e);
e.printStackTrace();
throw e;
} catch (DataException e) {
log.error(e);
e.printStackTrace();
throw e;
} finally {
conn.close();
}
return map;
}
/**
* 查询vip页面状态参数
*
* @param id
* @return
* @throws Exception
*/
public Map<String, String> queryVipParamList(long id) throws Exception {
Connection conn = connectionManager.getConnection();
Map<String, String> map = new HashMap<String, String>();
try {
map = beVipDao.queryVipParamList(conn, id);
} catch (Exception e) {
log.error(e);
e.printStackTrace();
throw e;
} finally {
conn.close();
}
return map;
}
/**
* 根据用户id查询用户信息
*
* @param id
* @throws DataException
* @throws SQLException
* @return Map<String,String>
*/
public Map<String, String> queryUserById(long id) throws DataException,
SQLException {
Connection conn = MySQL.getConnection();
Map<String, String> map = new HashMap<String, String>();
try {
map = beVipDao.queryUserById(conn, id);
conn.commit();
} catch (SQLException e) {
log.error(e);
conn.rollback();
e.printStackTrace();
throw e;
} catch (DataException e) {
log.error(e);
conn.rollback();
e.printStackTrace();
throw e;
} finally {
conn.close();
}
return map;
}
/**
* 修改用户的VIP状态
* @param userId
* @param vipStatus
* @param servicePersonId
* @param content
* @param vipFee
* @param username
* @return
* @throws Exception
*/
public Long updataUserVipStatus(Long userId, int vipStatus,
int servicePersonId, String content, String vipFee,String username)
throws Exception {
StringBuffer msg = new StringBuffer();
Long resultId = -1L;
int authStep = 1 ;
Connection conn = MySQL.getConnection();
try {
DataSet dataSet = Database.executeQuery(conn,"select authStep,username,lastIP from t_user where id = "+userId );
Map<String,String> UserMap = BeanMapUtils.dataSetToMap(dataSet);
if(UserMap!=null&&UserMap.size()>0){
authStep = Convert.strToInt(UserMap.get("authStep"), 1);
}else{
conn.rollback();
return -1L;
}
resultId = beVipDao.updateUser(conn, userId, vipStatus,
servicePersonId, content, vipFee,authStep);
//添加系统操作日志
resultId = operationLogDao.addOperationLog(conn, "t_user", Convert.strToStr(UserMap.get("username"), ""), IConstants.UPDATE, Convert.strToStr(UserMap.get("lastIP"), ""), 0, "申请会员", 1);
if (resultId <= 0) {
conn.rollback();
return -1L;
}else{
//发送站内信
msg.append("尊敬的"+username+",你申请vip成功");
//发站内信
resultId = sendmsgService.sendCheckMail(userId, " 申请vip审核通知", msg.toString(), 2, -1);//2管理员信件 -1 后台管理员
if(resultId<=0){
conn.rollback();
return -1L;
}
}
conn.commit();
} catch (Exception e) {
log.error(e);
conn.rollback();
e.printStackTrace();
throw e;
} finally {
conn.close();
}
return resultId;
}
/**
* 更新用户的认证状态
* @param id
* @param austept
* @return
* @throws Exception
*/
public Long updateUserAustep(Long id,Integer austept)
throws Exception {
Long resultId = -1L;
Connection conn = MySQL.getConnection();
try {
resultId = beVipDao.updateUserAustep(conn, id, austept);
if (resultId <= 0) {
conn.rollback();
return -1L;
}
conn.commit();
} catch (Exception e) {
log.error(e);
conn.rollback();
e.printStackTrace();
throw e;
} finally {
conn.close();
}
return resultId;
}
/**
* 查询身份证号码是否已经被注册
* @param idCard
* @return
* @throws SQLException
* @throws DataException
*/
public Map<String, String> queryIDCard(String idCard) throws SQLException, DataException {
Connection conn = connectionManager.getConnection();
Map<String, String> map = new HashMap<String, String>();
try {
map = beVipDao.queryIDCard(conn, StringEscapeUtils.escapeSql(idCard));
} catch (SQLException e) {
log.error(e);
e.printStackTrace();
throw e;
} catch (DataException e) {
log.error(e);
e.printStackTrace();
throw e;
} finally {
conn.close();
}
return map;
}
public Map<String, String> beVip(Long userId,Long server, double vipFee, double money) throws SQLException, DataException {
Connection conn = MySQL.getConnection();
long ret = -1;
DataSet ds = new DataSet();
Map<String, String> map = new HashMap<String, String>();
List<Object> outParameterValues = new ArrayList<Object>();
try {
Procedures.p_bevip(conn, ds, outParameterValues, userId,server, new BigDecimal(vipFee), new BigDecimal(money), -1, "", "", "");
ret = Convert.strToLong(outParameterValues.get(0) + "", -1);
map.put("ret", ret + "");
map.put("ret_desc", outParameterValues.get(1) + "");
if (ret < 0) {
conn.rollback();
}else{
String out_vip_desc = outParameterValues.get(2)+"";
if(!"-1".equals(out_vip_desc)){
Map<String,String> noticeMap = new HashMap<String, String>();
noticeMap.put("mail", out_vip_desc);
noticeMap.put("email", out_vip_desc);
noticeMap.put("note", out_vip_desc);
//发送通知
selectedService.sendNoticeMSG(conn, userId, "VIP会员成功续费", noticeMap, IConstants.NOTICE_MODE_5);
}
String out_friend_desc = outParameterValues.get(3)+"";
if(!"-1".equals(out_friend_desc)){
String[] msg = out_friend_desc.split("#");
long uId = Convert.strToLong(msg[0], -1);
Map<String,String> noticeMap = new HashMap<String, String>();
noticeMap.put("mail", msg[1]);
noticeMap.put("email", msg[1]);
noticeMap.put("note", msg[1]);
//发送通知
selectedService.sendNoticeMSG(conn, uId, "好友邀请奖励", noticeMap, IConstants.NOTICE_MODE_5);
}
conn.commit();
}
} catch (SQLException e) {
conn.rollback();
log.error(e);
e.printStackTrace();
throw e;
} catch (DataException e) {
conn.rollback();
log.error(e);
e.printStackTrace();
throw e;
} finally {
conn.close();
conn = null;
ds = null;
outParameterValues = null;
}
return map;
}
public OperationLogDao getOperationLogDao() {
return operationLogDao;
}
public void setOperationLogDao(OperationLogDao operationLogDao) {
this.operationLogDao = operationLogDao;
}
public SelectedService getSelectedService() {
return selectedService;
}
public void setSelectedService(SelectedService selectedService) {
this.selectedService = selectedService;
}
public BeVipDao getBeVipDao() {
return beVipDao;
}
public SendmsgService getSendmsgService() {
return sendmsgService;
}
}