From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderServiceImpl.java | 592 +++++++++------------------------------------------------- 1 files changed, 98 insertions(+), 494 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderServiceImpl.java index 19b3879..16d24a6 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderServiceImpl.java @@ -1,494 +1,98 @@ -package com.yeshi.fanli.service.impl.order; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; - -import javax.annotation.Resource; - -import org.hibernate.HibernateException; -import org.hibernate.Query; -import org.hibernate.SQLQuery; -import org.hibernate.Session; -import org.springframework.orm.hibernate4.HibernateCallback; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.yeshi.utils.NumberUtil; - -import com.yeshi.fanli.dao.mybatis.ThreeSaleGiftMapper; -import com.yeshi.fanli.dao.mybatis.order.OrderItemMapper; -import com.yeshi.fanli.dao.mybatis.order.OrderMapper; -import com.yeshi.fanli.dao.order.OrderDao; -import com.yeshi.fanli.entity.bus.user.HongBao; -import com.yeshi.fanli.entity.bus.user.HongBaoV2; -import com.yeshi.fanli.entity.bus.user.Order; -import com.yeshi.fanli.entity.bus.user.OrderItem; -import com.yeshi.fanli.entity.bus.user.ThreeSaleGift; -import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; -import com.yeshi.fanli.exception.ObjectStateException; -import com.yeshi.fanli.service.inter.config.ConfigService; -import com.yeshi.fanli.service.inter.hongbao.HongBaoService; -import com.yeshi.fanli.service.inter.hongbao.ThreeSaleGiftService; -import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce; -import com.yeshi.fanli.service.inter.order.HongBaoOrderService; -import com.yeshi.fanli.service.inter.order.OrderItemServcie; -import com.yeshi.fanli.service.inter.order.OrderService; -import com.yeshi.fanli.service.inter.user.ShareManageService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.TimeUtil; -import com.yeshi.fanli.util.Utils; - -@Service -public class OrderServiceImpl implements OrderService { - - @Resource - private OrderDao orderDao; - - @Resource - private OrderService orderService; - - @Resource - private ShareManageService shareManageService; - - @Resource - private HongBaoService hongBaoService; - - @Resource - private ConfigService configService; - - @Resource - private ThreeSaleSerivce threeSaleSerivce; - - @Resource - private OrderItemServcie orderItemService; - - @Resource - private ThreeSaleGiftService threeSaleGiftService; - - @Resource - private OrderMapper orderMapper; - - @Resource - private OrderItemMapper orderItemMapper; - - @Resource - private HongBaoOrderService hongBaoOrderService; - - @Resource - private ThreeSaleGiftMapper threeSaleGiftMapper; - - public List<Order> getOrderByUid(int index, long uid) { - - int start = index * Constant.PAGE_SIZE; - - return orderDao.list("from Order o where o.userInfo.id=? and o.money>0 order by o.createtime desc", start, - Constant.PAGE_SIZE, new Serializable[] { uid }); - - } - - public long getOrderCountByTime(long startTime, long endTime) { - - long count = orderDao.getCount("select count(*) from Order where createtime >=? and createtime < ?", - new Serializable[] { startTime, endTime }); - - return count; - } - - @Transactional(propagation = Propagation.NESTED, rollbackFor = Exception.class) - public boolean addOrder(Order order) throws Exception { - order.setVersion(2); - WriteLock writeLock = orderLock.writeLock(); - // 淇濆瓨璁㈠崟 - // long oid; - try { - writeLock.lock(); - Order find = findOrderByOrderIdAndType(order.getOrderId(), order.getOrderType()); - if (find != null) { - return false; - } - // 鏌ユ壘鏄惁瀛樺湪鍒嗕韩璧氳鍗� - if (hongBaoOrderService.countByOrderNoAndHongBaoType(order.getOrderId(), HongBaoV2.TYPE_SHARE_GOODS) > 0) - return false; - - orderDao.save(order); - } finally { - writeLock.unlock(); - } - // UserInfo userInfo = order.getUserInfo(); - // // 鍙戠孩鍖呭暒 - // HongBao hongBao = HongBaoFactory.createHongBao(new BigDecimal(0), - // oid, null, - // order.getUserInfo(), Constant.TAOBAO); - // hongBaoService.save(hongBao); - // // 鐪嬫槸涓嶆槸琚紶閿�杩涙潵鐨� - // UserInfo boss1 = threeSaleSerivce.getBoss(userInfo.getId()); - // if (boss1 != null) { - // // 缁欎笂绾垮彂涓孩鍖� - // HongBao oneSaleHongBao = HongBaoFactory.createHongBao(new - // BigDecimal(0), null, - // hongBao, boss1, Constant.ONESALE); - // hongBaoService.save(oneSaleHongBao); - // // 缁х画鐪嬫槸涓嶆槸琚紶閿�杩涙潵鐨� - // UserInfo boss2 = threeSaleSerivce.getBoss(boss1.getId()); - // if (boss2 != null) { - // // 鍐嶅彂涓孩鍖呯粰浼犻攢澶村ご - // HongBao twoSaleHongBao = HongBaoFactory.createHongBao(new - // BigDecimal(0), null, - // hongBao, boss2, Constant.TWOSALE); - // hongBaoService.save(twoSaleHongBao); - // } - // } - return true; - } - - public boolean isfirstOrder(long uid) { - - List<Order> list = orderDao.list("from Order o where o.userInfo.id = ? and o.state = 1 ", 0, 1, - new Serializable[] { uid }); - if (list.size() == 0) { - return true; - } - return false; - } - - public int getCount(long uid) { - Long lcount = orderDao.getCount("select count(o.id) from Order o where o.userInfo.id = ? ", - new Serializable[] { uid }); - return lcount.intValue(); - } - - public List<Order> getOrderList(String key, int index) { - - int start = index * Constant.PAGE_SIZE; - - boolean b = NumberUtil.isNumeric(key); - if (b) { - long uid = Long.parseLong(key); - return orderDao.list( - "from Order o where o.userInfo.id = ? or o.userInfo.nickName like ? order by o.id desc ", start, - Constant.PAGE_SIZE, new Serializable[] { uid, "%" + key + "%" }); - } - return orderDao.list("from Order o where o.userInfo.nickName like ? order by o.id desc", start, - Constant.PAGE_SIZE, new Serializable[] { "%" + key + "%" }); - - } - - public int getCount() { - Long lcount = orderDao.getCount("select count(o.id) from Order o"); - return lcount.intValue(); - } - - @SuppressWarnings("unchecked") - public Map<String, Integer> getnewOrderByDate(final int days, Date date) { - - final Map<String, Integer> map = new HashMap<String, Integer>(); - long timestampms = date.getTime(); - final long timestamps = timestampms / 1000; - List<String> list = TimeUtil.getEmupDate(days, timestampms); - for (String dataStr : list) { - map.put(dataStr, 0); - } - return (Map<String, Integer>) orderDao.excute(new HibernateCallback<Map<String, Integer>>() { - - public Map<String, Integer> doInHibernate(Session session) throws HibernateException { - SQLQuery sqlQuery = session.createSQLQuery( - "SELECT DATE(FROM_UNIXTIME(createtime/1000)) c,COUNT(*) FROM yeshi_ec_order WHERE DATE_SUB(FROM_UNIXTIME(?), INTERVAL ? DAY) <= DATE(FROM_UNIXTIME(createtime/1000)) AND DATE(FROM_UNIXTIME(createtime/1000)) <= FROM_UNIXTIME(?) GROUP BY c"); - sqlQuery.setParameter(0, timestamps); - sqlQuery.setParameter(1, days); - sqlQuery.setParameter(2, timestamps); - List<Object[]> list = sqlQuery.list(); - for (Object[] objArr : list) { - map.put(TimeUtil.getSimpleDate((Date) objArr[0]), ((BigInteger) objArr[1]).intValue()); - } - return map; - } - }); - } - - @SuppressWarnings("unchecked") - public Map<String, Integer> getnewOrderByMonth(final int months, final Date endDate) { - List<String> monthList = Utils.getDateMonthList(months, endDate); - final Map<String, Integer> map = new HashMap<String, Integer>(); - for (String monthStr : monthList) { - map.put(monthStr, 0); - } - return (Map<String, Integer>) orderDao.excute(new HibernateCallback<Map<String, Integer>>() { - - public Map<String, Integer> doInHibernate(Session session) throws HibernateException { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(endDate); - calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + 1); - calendar.set(Calendar.DAY_OF_MONTH, 1); - long curTime = (calendar.getTime().getTime()) / 1000; - SQLQuery sqlQuery = session.createSQLQuery( - "SELECT DATE_FORMAT(FROM_UNIXTIME(createtime/1000),'%Y-%m') months,COUNT(*) FROM yeshi_ec_order WHERE DATE(FROM_UNIXTIME(createtime/1000)) >= DATE_SUB(FROM_UNIXTIME(?),INTERVAL ? MONTH) AND DATE(FROM_UNIXTIME(createtime/1000)) < FROM_UNIXTIME(?) GROUP BY months"); - sqlQuery.setParameter(0, curTime); - sqlQuery.setParameter(1, months); - sqlQuery.setParameter(2, curTime); - List<Object[]> list = sqlQuery.list(); - for (Object[] objArr : list) { - map.put((String) objArr[0], ((BigInteger) objArr[1]).intValue()); - } - return map; - } - }); - } - - @SuppressWarnings("unchecked") - public Map<String, Integer> getOrderTotalByDate(int days, Date date) { - - final Map<String, Integer> map = new HashMap<String, Integer>(); - long timestampms = date.getTime(); - final List<String> list = TimeUtil.getEmupDate(days, timestampms); - for (String dataStr : list) { - map.put(dataStr, 0); - } - return (Map<String, Integer>) orderDao.excute(new HibernateCallback<Map<String, Integer>>() { - - public Map<String, Integer> doInHibernate(Session session) throws HibernateException { - StringBuffer sb = new StringBuffer(); - int ii = 0; - for (String day : list) { - if (ii == 0) { - sb.append("SELECT '" + day + "' AS t,IFNULL(SUM(a.s),0) FROM yeshi_ec_order_day a WHERE a.c<= '" - + day + "' "); - } else { - sb.append("UNION ALL SELECT '" + day - + "' AS t,IFNULL(SUM(a.s),0) FROM yeshi_ec_order_day a WHERE a.c<= '" + day + "' "); - } - ii++; - } - - SQLQuery sqlQuery = session.createSQLQuery(sb.toString()); - List<Object[]> list = sqlQuery.list(); - for (Object[] objArr : list) { - map.put(String.valueOf(objArr[0]), ((BigDecimal) objArr[1]).intValue()); - } - return map; - } - }); - } - - @SuppressWarnings("unchecked") - public Map<String, Integer> getOrderTotalByMonth(int months, Date date) { - final List<String> monthList = Utils.getDateMonthList(months, date); - final Map<String, Integer> map = new HashMap<String, Integer>(); - for (String monthStr : monthList) { - map.put(monthStr, 0); - } - return (Map<String, Integer>) orderDao.excute(new HibernateCallback<Map<String, Integer>>() { - - public Map<String, Integer> doInHibernate(Session session) throws HibernateException { - - StringBuffer sb = new StringBuffer(); - int ii = 0; - for (String month : monthList) { - if (ii == 0) { - sb.append("SELECT '" + month - + "' AS t,IFNULL(SUM(a.s),0) FROM yeshi_ec_order_month a WHERE a.months<= '" + month - + "' "); - } else { - sb.append("UNION ALL SELECT '" + month - + "' AS t,IFNULL(SUM(a.s),0) FROM yeshi_ec_order_month a WHERE a.months<= '" + month - + "' "); - } - ii++; - } - - SQLQuery sqlQuery = session.createSQLQuery(sb.toString()); - List<Object[]> list = sqlQuery.list(); - for (Object[] objArr : list) { - map.put((String) objArr[0], ((BigDecimal) objArr[1]).intValue()); - } - return map; - } - }); - } - - public Order getOrder(final String orderid, final int orderType) { - return (Order) orderDao.excute(new HibernateCallback<Order>() { - - public Order doInHibernate(Session session) throws HibernateException { - Query query = session.createQuery("from Order o where o.orderId = ? and o.orderType = ? "); - query.setParameter(0, orderid); - query.setParameter(1, orderType); - List<Order> list = query.list(); - if (list.size() > 0) { - return list.get(0); - } - return null; - } - }); - } - - @Transactional(propagation = Propagation.REQUIRED) - public void failureOrder(final String orderid, final int orderType) throws ObjectStateException { - // 澶辨晥鐨勮鍗� - List<Order> orderList = orderService.setOrderState(orderid, orderType); - if (orderList != null && orderList.size() > 0) { - for (Order order : orderList) { - // 鎵惧埌杩欎釜澶辨晥璁㈠崟浠ュ墠鍙戠殑绾㈠寘 - List<HongBao> hongBaoList = hongBaoService.findHongBaoByOrderList(order.getId()); - if (hongBaoList != null) - for (HongBao hongBao : hongBaoList) - // 鎶婄孩鍖呮悶鎴愬け鏁堢殑,鍒嗛攢鐨勭孩鍖呬篃瑕佹悶澶辨晥 - hongBaoService.relevantInvalid(hongBao.getId()); - } - } - } - - @Transactional - public void failureOrderWithWeiQuan(final String orderid, final int orderType) throws ObjectStateException { - // 澶辨晥鐨勮鍗� - List<Order> orderList = orderService.setOrderState(orderid, orderType); - if (orderList != null && orderList.size() > 0) { - for (Order order : orderList) { - // if (order.getState() == Order.STATE_SHIXIAO) - // continue; - // 鎵惧埌杩欎釜澶辨晥璁㈠崟浠ュ墠鍙戠殑绾㈠寘 - List<HongBao> hongBaoList = hongBaoService.findHongBaoByOrderList(order.getId()); - if (hongBaoList != null) - for (HongBao hongBao : hongBaoList) - // 鎶婄孩鍖呮悶鎴愬け鏁堢殑,鍒嗛攢鐨勭孩鍖呬篃瑕佹悶澶辨晥 - hongBaoService.relevantInvalidVersion2(hongBao.getId()); - - List<OrderItem> orderItremList = orderItemService.findByOrderId(order.getId()); - if (orderItremList != null) - for (OrderItem orderItem : orderItremList) { - OrderItem updateOrderItem = new OrderItem(orderItem.getId()); - - updateOrderItem.setState(OrderItem.STATE_TUIKUAN); - // 鏌ヨ - List<ThreeSaleGift> giftList = threeSaleGiftService.findThreeSaleGiftList(orderItem.getId()); - for (ThreeSaleGift tsg : giftList) { - if (tsg.getState().intValue() != OrderItem.STATE_DAOZHANG - && tsg.getState().intValue() != OrderItem.STATE_SHOUHOU) { - ThreeSaleGift updateTsg = new ThreeSaleGift(); - updateTsg.setId(tsg.getId()); - updateTsg.setState(OrderItem.STATE_TUIKUAN); - threeSaleGiftMapper.updateByPrimaryKeySelective(updateTsg); - } - } - orderItemMapper.updateByPrimaryKeySelective(updateOrderItem); - } - Order updateOrder = new Order(); - updateOrder.setId(order.getId()); - updateOrder.setState(Order.STATE_SHIXIAO); - orderMapper.updateByPrimaryKeySelective(updateOrder); - } - } - } - - @Transactional - public List<Order> setOrderState(final String orderid, final int orderType) { - List<Order> orderList = orderMapper.selectOrderByOrderIdAndOrderType(orderid, orderType); - if (orderList != null) - for (Order order : orderList) { - if (order.getDrawbackTime() == null || order.getDrawbackTime() <= 0) { - Order updateOrder = new Order(); - updateOrder.setId(order.getId()); - updateOrder.setDrawbackTime(java.lang.System.currentTimeMillis()); - updateOrder.setState(Order.STATE_SHIXIAO); - orderMapper.updateByPrimaryKeySelective(updateOrder); - order.setDrawbackTime(updateOrder.getDrawbackTime()); - order.setState(updateOrder.getState()); - } - } - return orderList; - } - - public int getCount(String key) { - if (NumberUtil.isNumeric(key)) { - - if (key.trim().length() < 18) { - long lk = Long.parseLong(key); - return (int) orderDao.getCount( - "select count(*) from Order o where o.userInfo.id = ? or o.userInfo.nickName like ? ", - new Serializable[] { lk, "%" + key + "%" }); - } else { - return (int) orderDao.getCount("select count(*) from Order o where o.orderId like ? ", - new Serializable[] { "%" + key + "%" }); - } - - } else { - return (int) orderDao.getCount("select count(*) from Order o where o.userInfo.nickName like ? ", - new Serializable[] { "%" + key + "%" }); - } - } - - public Order find(long id) { - return orderDao.find(Order.class, id); - } - - public void update(Order findOrder) { - orderDao.update(findOrder); - } - - @Override - public Order findOrderByOrderIdAndType(String orderId, int type) { - List<Order> list = orderDao.list("from Order o where o.orderId=? and o.orderType=?", 0, 1, - new Serializable[] { orderId, type }); - if (list.size() > 0) { - return list.get(0); - } - return null; - } - - @Override - public Order findOrderByOrderIdAndTypeAndVersion(String orderId, int type, int version) { - List<Order> list = orderDao.list("from Order o where o.orderId=? and o.orderType=? and o.version=?", 0, 1, - new Serializable[] { orderId, type, version }); - if (list.size() > 0) { - return list.get(0); - } - return null; - } - - @Override - public Order getSystemOrderByUid(int type, long uid) { - - List<Order> list = orderDao.list( - "from Order o where o.userInfo.id = ? and o.orderType = ? and o.beizhu = '绯荤粺娣诲姞'", 0, 1, - new Serializable[] { uid, type }); - - if (list.size() > 0) { - return list.get(0); - } - - return null; - } - - @Override - public List<Order> findOldOrderListAll() { - - List<Order> list = orderDao.list("from Order or where or.version=1"); - - return list; - } - - // 澶勭悊缁存潈璁㈠崟 - @Override - public void update(TaoBaoWeiQuanOrder order) { - try { - failureOrderWithWeiQuan(order.getOrderId(), Order.ORDER_TYPE_TAOBAO); - } catch (ObjectStateException e) { - e.printStackTrace(); - } - } - - @Override - public Order getLatestOrder() { - List<Order> orderList = orderDao.list("from Order order order by order.thirdCreateTime desc", 0, 1, null); - if (orderList == null || orderList.size() == 0) - return null; - return orderList.get(0); - } - -} +package com.yeshi.fanli.service.impl.order; + +import java.util.List; +import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import com.yeshi.fanli.dao.mybatis.order.OrderMapper; +import com.yeshi.fanli.entity.bus.user.HongBaoV2; +import com.yeshi.fanli.entity.bus.user.Order; +import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.order.HongBaoOrderService; +import com.yeshi.fanli.service.inter.order.OrderService; +import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; + +@Service +public class OrderServiceImpl implements OrderService { + + @Resource + private ConfigService configService; + + @Resource + private ThreeSaleSerivce threeSaleSerivce; + + @Resource + private OrderMapper orderMapper; + + @Resource + private HongBaoOrderService hongBaoOrderService; + + // @Transactional(propagation = Propagation.NESTED, rollbackFor = + // Exception.class) + public boolean addOrder(Order order) throws Exception { + order.setVersion(2); + WriteLock writeLock = orderLock.writeLock(); + // 淇濆瓨璁㈠崟 + // long oid; + try { + writeLock.lock(); + Order find = findOrderByOrderIdAndType(order.getOrderId(), order.getOrderType()); + if (find != null) { + return false; + } + Integer orderType = order.getOrderType(); + if (orderType == null) { + orderType = Order.ORDER_TYPE_TAOBAO; + } + // 鏌ユ壘鏄惁瀛樺湪鍒嗕韩璧氳鍗� + if (hongBaoOrderService.countByOrderNoAndHongBaoType(order.getOrderId(), HongBaoV2.TYPE_SHARE_GOODS, orderType) > 0) + return false; + orderMapper.insertSelective(order); + } finally { + writeLock.unlock(); + } + // UserInfo userInfo = order.getUserInfo(); + // // 鍙戠孩鍖呭暒 + // HongBao hongBao = HongBaoFactory.createHongBao(new BigDecimal(0), + // oid, null, + // order.getUserInfo(), Constant.TAOBAO); + // hongBaoService.save(hongBao); + // // 鐪嬫槸涓嶆槸琚紶閿�杩涙潵鐨� + // UserInfo boss1 = threeSaleSerivce.getBoss(userInfo.getId()); + // if (boss1 != null) { + // // 缁欎笂绾垮彂涓孩鍖� + // HongBao oneSaleHongBao = HongBaoFactory.createHongBao(new + // BigDecimal(0), null, + // hongBao, boss1, Constant.ONESALE); + // hongBaoService.save(oneSaleHongBao); + // // 缁х画鐪嬫槸涓嶆槸琚紶閿�杩涙潵鐨� + // UserInfo boss2 = threeSaleSerivce.getBoss(boss1.getId()); + // if (boss2 != null) { + // // 鍐嶅彂涓孩鍖呯粰浼犻攢澶村ご + // HongBao twoSaleHongBao = HongBaoFactory.createHongBao(new + // BigDecimal(0), null, + // hongBao, boss2, Constant.TWOSALE); + // hongBaoService.save(twoSaleHongBao); + // } + // } + return true; + } + + @Override + public Order findOrderByOrderIdAndType(String orderId, int type) { + Order order = orderMapper.selectOrderByOrderIdAndOrderType(orderId, type); + return order; + } + + @Override + public Order getSystemOrderByUid(int type, long uid) { + List<Order> list = orderMapper.listByUidAndOrderTypeAndBeiZhu(uid, type, "绯荤粺娣诲姞"); + if (list != null && list.size() > 0) + return list.get(0); + return null; + } + +} -- Gitblit v1.8.0