package com.tingche.base.service.impl;
import java.rmi.RemoteException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.ParameterMode;
import javax.persistence.Query;
import javax.persistence.StoredProcedureQuery;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.poi.ss.formula.functions.T;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Order;
import org.springframework.transaction.annotation.Transactional;
import cn.jpush.api.push.PushResult;
import com.emay.example.SingletonClient;
import com.google.common.collect.ImmutableMap;
import com.thirdparty.jpush.PushNotification;
import com.thirdparty.jpush.exception.PushException;
import com.tingche.base.constant.StringRandom;
import com.tingche.base.constant.XaConstant;
import com.tingche.base.entity.XaResult;
import com.tingche.base.exception.BusinessException;
import com.tingche.base.util.DateProcessUtil;
import com.tingche.base.util.MD5Util;
import com.tingche.base.util.SearchFilter;
import com.tingche.base.util.SearchFilter.Operator;
import com.tingche.base.util.SqlResultUtil;
import com.tingche.base.util.Xa3itAliasToBeanResultTransformer;
import com.tingche.base.util.XaUtil;
import com.tingche.business.entity.Coupon;
import com.tingche.business.entity.IntegralInfo;
import com.tingche.business.entity.MessageInfo;
import com.tingche.business.entity.UserCoupon;
import com.tingche.business.entity.UserInfo;
import com.tingche.business.entity.UserIntegral;
import com.tingche.business.repository.CouponRepository;
import com.tingche.business.repository.IntegralInfoRepository;
import com.tingche.business.repository.MessageInfoRepository;
import com.tingche.business.repository.UserCouponRepository;
import com.tingche.business.repository.UserInfoRepository;
import com.tingche.business.repository.UserIntegralRepository;
/**
* @Title: BaseService.java
* @Description: TODO
* @author lwang
* @date 2014年8月20日 下午6:55:24
* @version V1.0
*/
public abstract class BaseService {
@Autowired
private EntityManagerFactory entityManagerFactory;
@Autowired
private UserInfoRepository userInfoRepository;
@Autowired
private CouponRepository couponRepository;
@Autowired
private UserCouponRepository userCouponRepository;
@Autowired
private IntegralInfoRepository integralInfoRepository;
@Autowired
private UserIntegralRepository userIntegralRepository;
@Autowired
private MessageInfoRepository messageInfoRepository;
private static final Logger LOGGER=Logger.getLogger(BaseService.class);
@SuppressWarnings("unchecked")
public List<T> query(String sql,String resultSetMapping){
EntityManager em = entityManagerFactory.createEntityManager();
Query query= em.createNativeQuery(sql,resultSetMapping);
List<T> list = query.getResultList();
em.close();
return list;
}
@SuppressWarnings("unchecked")
public List<Object[]> query(String sql){
EntityManager em = entityManagerFactory.createEntityManager();
Query query= em.createNativeQuery(sql);
List<Object[]> list = query.getResultList();
em.close();
return list;
}
public void executeSqlUpdate(String sql){
EntityManager em = entityManagerFactory.createEntityManager();
Query query= em.createNativeQuery(sql);
query.executeUpdate();
em.close();
}
public XaResult<UserInfo> updateUserInfo(Long userId, UserInfo model)
throws BusinessException {
// TODO Auto-generated method stub
return null;
}
public void execProcedure(String proc,String currentDate,String currentTime){
EntityManager em = entityManagerFactory.createEntityManager();
/*Connection connection = null;
CallableStatement statement =null;
Session session = (Session) em.getDelegate();
SessionFactoryImpl sessionFactory = (SessionFactoryImpl) session.getSessionFactory();
try {
connection = sessionFactory.getConnectionProvider().getConnection();
String sql = "call price_from_parkingspaceinfo('"+currentDate+"','"+currentTime+"')";
statement = connection.prepareCall(sql);
statement.execute(sql);
connection.commit();
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {try{
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
}catch (SQLException e) {
e.printStackTrace();
}
}
*/
StoredProcedureQuery query = em.createStoredProcedureQuery(proc);
query.registerStoredProcedureParameter("currentDate", String.class, ParameterMode.IN);
query.registerStoredProcedureParameter("currentTime", String.class, ParameterMode.IN);
// query.registerStoredProcedureParameter("result", String.class, ParameterMode.OUT);
query.setParameter("currentDate", currentDate);
query.setParameter("currentTime", currentTime);
query.execute();
// Object param3 = query.getOutputParameterValue("result");
em.close();
}
@SuppressWarnings("unchecked")
public Object queryForSingle(String sql){
EntityManager em = entityManagerFactory.createEntityManager();
Query query= em.createNativeQuery(sql);
Object list = query.getSingleResult();
em.close();
return list;
}
public boolean createUserCoupon(long userId ,int couponType){
Coupon coupon = couponRepository.findByCouponTypeAndStatus(couponType,XaConstant.Status.valid);
Integer couponNumber = 0;
if(XaUtil.isNotEmpty(coupon)){
// 送优惠券 6: 接受别人分享历史总收益 8: 接受别人分享的车位名片 9:接受别人分享的订单信息
if(couponType == XaConstant.CouponConstant.COUPONTYPE_6 || couponType == XaConstant.CouponConstant.COUPONTYPE_8 ||couponType == XaConstant.CouponConstant.COUPONTYPE_9){
List<UserCoupon> userCoupons = userCouponRepository.findByUserIdAndCouponId(userId, coupon.getTid());
if(XaUtil.isNotEmpty(userCoupons) && userCoupons.size() >= 1){
return false;
}
}
if(XaUtil.isNotEmpty(coupon.getNums())){
couponNumber = coupon.getNums();
}
for(int i = 0;i<couponNumber;i++){
UserCoupon userCoupon = new UserCoupon();
userCoupon.setUserId(userId);
userCoupon.setCouponId(coupon.getTid());
userCoupon.setUserCouponNumber(createUserCouponNumber());
userCoupon.setCreateTime(DateProcessUtil.getToday());
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
userCoupon.setExpireTime(df.format(DateProcessUtil.addDay(new Date(), 30)));
userCoupon = userCouponRepository.save(userCoupon);
return true;
}
}
return true;
}
public UserIntegral createIntegral(int integralType,long userId){
IntegralInfo integralInfo = integralInfoRepository.findByIntegralTypeAndStatus(integralType, XaConstant.Status.valid);
UserIntegral userIntegral = new UserIntegral();
if(XaUtil.isNotEmpty(integralInfo)){
userIntegral.setIntegralId(integralInfo.getTid());
userIntegral.setUserId(userId);
userIntegral.setScore(integralInfo.getScore());
userIntegral.setModifyDescription("初始创建");
userIntegral.setCreateTime(DateProcessUtil.getToday());
userIntegral = userIntegralRepository.save(userIntegral);
评论0
最新资源