From 9eeda0d3049b71877c373c04d65533939b5582ef Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期一, 02 九月 2019 09:55:55 +0800 Subject: [PATCH] getBoss方法只查询有效上级信息 --- fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java | 871 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 527 insertions(+), 344 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java index 1320154..b9c6f0a 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java @@ -1,45 +1,46 @@ package com.yeshi.fanli.service.impl.hongbao; -import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; -import java.util.Map; import javax.annotation.Resource; + +import org.springframework.context.annotation.Lazy; +import org.springframework.core.task.TaskExecutor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.yeshi.fanli.dao.mybatis.ThreeSaleMapper; +import com.yeshi.fanli.dao.mybatis.UserInfoMapper; +import com.yeshi.fanli.entity.bus.user.ThreeSale; +import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo; +import com.yeshi.fanli.entity.bus.user.UserActiveLog; +import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.exception.ThreeSaleException; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; +import com.yeshi.fanli.service.inter.hongbao.ThreeSaleExtraInfoSerivce; +import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce; +import com.yeshi.fanli.service.inter.integral.IntegralGetService; +import com.yeshi.fanli.service.inter.msg.MsgInviteDetailService; +import com.yeshi.fanli.service.inter.msg.UserInviteMsgNotificationService; +import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService; +import com.yeshi.fanli.service.inter.user.UserActiveLogService; +import com.yeshi.fanli.service.inter.user.UserInfoExtraService; +import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.VersionUtil; +import com.yeshi.fanli.util.cmq.ThreeSaleCMQManager; import net.sf.json.JSONArray; import net.sf.json.JSONObject; -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.Transactional; -import org.yeshi.utils.NumberUtil; - -import com.yeshi.fanli.dao.mybatis.ThreeSaleMapper; -import com.yeshi.fanli.dao.mybatis.UserInfoMapper; -import com.yeshi.fanli.dao.user.ThreeSaleDao; -import com.yeshi.fanli.entity.bus.user.ThreeSale; -import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo; -import com.yeshi.fanli.entity.bus.user.UserInfo; -import com.yeshi.fanli.service.inter.config.InviteGetMoneyService; -import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; -import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce; -import com.yeshi.fanli.service.inter.user.UserInfoService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.StringUtil; - @Service public class ThreeSaleSerivceImpl implements ThreeSaleSerivce { - - @Resource - private ThreeSaleDao dao; @Resource private HongBaoManageService hongBaoManageService; @@ -48,275 +49,249 @@ private UserInfoService userInfoService; @Resource - private InviteGetMoneyService inviteGetMoneyService; - - @Resource private UserInfoMapper userInfoMapper; - + @Resource private ThreeSaleMapper threeSaleMapper; + + @Resource + private UserInviteMsgNotificationService userInviteMsgNotificationService; + + @Resource + private MsgInviteDetailService msgInviteDetailService; + + @Resource + private UserTaoLiJinOriginService userTaoLiJinOriginService; + + @Resource + private UserActiveLogService userActiveLogService; + + @Resource + private UserInfoExtraService userInfoExtraService; + + @Resource + private ThreeSaleExtraInfoSerivce threeSaleExtraInfoSerivce; + - - + @Lazy + @Resource + private IntegralGetService integralGetService; + + @Resource(name = "taskExecutor") + private TaskExecutor executor; public UserInfo getBoss(final long uid) { - return (UserInfo) dao.excute(new HibernateCallback<UserInfo>() { - public UserInfo doInHibernate(Session session) throws HibernateException { - Query query = session.createQuery("select ts.boss FROM ThreeSale ts where ts.worker.id = ?"); - query.setParameter(0, uid); - List<UserInfo> list = query.list(); - if (list.size() > 0) { - return list.get(0); + return threeSaleMapper.selectBoss(uid); + } + + @Transactional + public void bind(UserInfo worker, UserInfo inviter) throws ThreeSaleException { + if (worker == null || inviter == null) + throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖"); + + if (worker.getId() == null)// 璇ョ敤鎴疯繕涓嶅瓨鍦� + { + // 淇濆瓨鐢ㄦ埛 + UserInfo inviteeUser = userInfoService.addUser(worker, Constant.APPID); + if (inviteeUser == null) + throw new ThreeSaleException(2, "鍒涘缓鐢ㄦ埛澶辫触"); + // 淇濆瓨鍏崇郴 + ThreeSale threeSale = new ThreeSale(); + threeSale.setBoss(inviter); + threeSale.setCreateTime(java.lang.System.currentTimeMillis()); + threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); + threeSale.setState(false); + threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); + threeSale.setWorker(inviteeUser); + threeSaleMapper.insertSelective(threeSale); + + List<ThreeSale> listExpire = threeSaleMapper.getExpireRecord(inviter.getId(), inviteeUser.getId()); + if (listExpire != null && listExpire.size() > 0) { + // 鍒犻櫎澶辨晥 + for (ThreeSale saleExpire : listExpire) { + msgInviteDetailService.deleteByThreeSale(saleExpire); } - return null; + // 鍒犻櫎宸插け鏁堝叧绯� + threeSaleMapper.deleteExpireRecord(inviter.getId(), inviteeUser.getId()); } - }); - } - public int findInviteCount(final long id) { + // 鍒涘缓閫氱煡 + userInviteMsgNotificationService.inviteScan(inviter.getId(), threeSale); - return (Integer) dao.excute(new HibernateCallback<Integer>() { + } else {// 鏄凡缁忓瓨鍦ㄧ殑鐢ㄦ埛 + if (worker.getId().longValue() == inviter.getId()) + throw new ThreeSaleException(4, "涓嶈兘缁戝畾鑷繁"); - public Integer doInHibernate(Session session) throws HibernateException { - SQLQuery query = session.createSQLQuery( - "SELECT COUNT(*) from `yeshi_ec_threesale` t1 RIGHT JOIN (SELECT t2.`worker_id` AS worker_id FROM `yeshi_ec_threesale` t2 WHERE t2.`boss_id`=? ) t3 ON t1.`boss_id`=t3.worker_id WHERE t1.`boss_id`=t3.worker_id "); - query.setParameter(0, id); - SQLQuery query2 = session - .createSQLQuery("SELECT COUNT(*) from `yeshi_ec_threesale` t4 WHERE t4.`boss_id`=?"); - query2.setParameter(0, id); - int int1 = Integer.parseInt(query.uniqueResult() + ""); - int int2 = Integer.parseInt(query2.uniqueResult() + ""); - return int1 + int2; + worker = userInfoService.selectByPKey(worker.getId()); + + // 鐢ㄦ埛宸茬粡瀛樺湪鎴戜滑鐨勭敤鎴峰簱涓� + if (worker.getLastLoginTime() == null || worker.getLastLoginTime() == 0L) { + // 鐢ㄦ埛鏈櫥褰� + int outOfDateCount = 0;// 杩囨湡鏁伴噺 + // 鏌ヨ閭�璇峰叧绯� + List<ThreeSale> list = listByWorkerId(worker.getId()); + if (list != null && list.size() > 0) { + for (ThreeSale ts : list) { + if (!ts.getState() && ts.getExpire() == ThreeSale.EXPIRE_OUTOFDATE) { + outOfDateCount++; + } + } + // 鍏ㄩ儴鏄け鏁堢姸鎬� + if (outOfDateCount == list.size()) { + // 鍙互纭畾鍏崇郴 + ThreeSale threeSale = new ThreeSale(); + threeSale.setBoss(inviter); + threeSale.setCreateTime(java.lang.System.currentTimeMillis()); + threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); + threeSale.setState(false); + threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); + threeSale.setWorker(worker); + threeSaleMapper.insertSelective(threeSale); + + // 鍒犻櫎宸插け鏁堝叧绯� + threeSaleMapper.deleteExpireRecord(inviter.getId(), worker.getId()); + + List<ThreeSale> listExpire = threeSaleMapper.getExpireRecord(inviter.getId(), worker.getId()); + if (listExpire != null && listExpire.size() > 0) { + // 鍒犻櫎鍘嗗彶閫氱煡 + for (ThreeSale saleExpire : listExpire) { + msgInviteDetailService.deleteByThreeSale(saleExpire); + } + // 鍒犻櫎宸插け鏁堝叧绯� + threeSaleMapper.deleteExpireRecord(inviter.getId(), worker.getId()); + } + + userInviteMsgNotificationService.inviteScan(inviter.getId(), threeSale); + // threeSaleSerivce.bind(invitee, inviter); + + } else { + // 杩樺瓨鍦ㄦ湁鏁堢殑閭�璇凤紝鍒欎笉鍋氬鐞� + } + } else { + // 鐢ㄦ埛鏈櫥褰�,鍙堜笉瀛樺湪閭�璇峰叧绯�,涓嶅仛澶勭悊 + } + } else { + // 宸茬粡鐧诲綍锛岃�屼笖娌℃湁涓婁笅绾у叧绯绘垨鑰呬笂涓嬬骇鍏崇郴鏈敓鏁堬紝鍒欑粦瀹氬叧绯� + List<ThreeSale> list = threeSaleMapper.listByWorkerId(worker.getId()); + // 鍒犻櫎鏃犳晥鐨� + if (list != null) + for (int i = 0; i < list.size(); i++) { + if (list.get(i).getState() != null && list.get(i).getState() == false + && list.get(i).getExpire() == ThreeSale.EXPIRE_OUTOFDATE) {// 杩囨湡鐨� + list.remove(i); + i--; + } + } + // 鏌ヨ涓婄骇鏄惁鏈夊拰鐜板湪涓婄骇涓�鏍风殑 + if (list == null || list.size() == 0)// 灏氭湭纭珛鍏崇郴锛屽缓绔嬪叧绯� + { + ThreeSale ts = new ThreeSale(); + ts.setBoss(inviter); + ts.setCreateTime(System.currentTimeMillis()); + ts.setExpire(ThreeSale.EXPIRE_NORMAL); + ts.setState(true); + ts.setSucceedTime(System.currentTimeMillis()); + ts.setWorker(worker); + threeSaleMapper.insertSelective(ts); + ThreeSaleCMQManager.getInstance().addThreeSaleMsg(ts); + userInviteMsgNotificationService.inviteSuccess(inviter.getId(), ts); + } else { + if (!list.get(0).getState() && list.get(0).getExpire() == ThreeSale.EXPIRE_NORMAL + && list.get(0).getBoss().getId() == inviter.getId().longValue()) {// 鏈敓鏁堢殑涓婄骇鍜岀幇鍦ㄤ笂绾т竴鏍峰氨鐢熸晥 + ThreeSale update = new ThreeSale(list.get(0).getId()); + update.setState(true); + update.setSucceedTime(System.currentTimeMillis()); + threeSaleMapper.updateByPrimaryKeySelective(update); + ThreeSaleCMQManager.getInstance().addThreeSaleMsg(list.get(0));// 娣诲姞閫氱煡 + userInviteMsgNotificationService.inviteSuccess(inviter.getId(), list.get(0)); + } + } } - }); + } } @Transactional - public void bind(UserInfo invitee, UserInfo inviter) { - ThreeSale threeSale = new ThreeSale(); - threeSale.setBoss(inviter); - threeSale.setWorker(invitee); - threeSale.setState(false); - threeSale.setCreateTime(System.currentTimeMillis()); - dao.save(threeSale); - } - - @Transactional - public void effective(UserInfo invitee) { - List<ThreeSale> list = dao.list("from ThreeSale ts where ts.worker.id = ? ", - new Serializable[] { invitee.getId() }); + public void effective(UserInfo worker) { + List<ThreeSale> list = threeSaleMapper.listByWorkerId(worker.getId()); + if (list != null) + for (int i = 0; i < list.size(); i++) { + if (list.get(i).getState() != null && list.get(i).getState() == false + && list.get(i).getExpire() == ThreeSale.EXPIRE_NORMAL) { + ; + } else { + list.remove(i); + i--; + } + } if (list.size() > 0) { - ThreeSale threeSale = list.get(0); - UserInfo inviter = threeSale.getBoss(); - threeSale.setState(true); - dao.update(threeSale); - if (inviter != null) - reComputeUserRank(inviter.getId()); - // } - // }); + ThreeSale oldSale = list.get(0); + + ThreeSale update = new ThreeSale(list.get(0).getId()); + update.setState(true); + update.setSucceedTime(System.currentTimeMillis()); + threeSaleMapper.updateByPrimaryKeySelective(update); + + oldSale.setState(update.getState()); + oldSale.setSucceedTime(update.getSucceedTime()); + + UserInfo inviter = list.get(0).getBoss(); + // 涓嶄互閭�璇蜂汉鏁拌绠楃瓑绾� + // if (inviter != null) + // reComputeUserRank(inviter.getId()); + // 娣诲姞鍒伴槦鍒� + ThreeSaleCMQManager.getInstance().addThreeSaleMsg(oldSale); + // 閫氱煡 + userInviteMsgNotificationService.inviteSuccess(inviter.getId(), oldSale); } - } - - @Transactional - public void validateTwentyFour() { - dao.excute(new HibernateCallback() { - @Override - public Object doInHibernate(Session session) throws HibernateException { - long currentTimeMillis = System.currentTimeMillis(); - Query query = session - .createQuery("delete from ThreeSale ts where ts.state = ? and (?-ts.createTime) > 86400000"); - query.setParameter(0, false); - query.setParameter(1, currentTimeMillis); - query.executeUpdate(); - return null; - } - }); - } - - @Transactional - public void validate365() { - dao.excute(new HibernateCallback() { - @Override - public Object doInHibernate(Session session) throws HibernateException { - long currentTimeMillis = System.currentTimeMillis(); - Query query = session.createQuery("delete from ThreeSale ts where (?-ts.createTime) > 31536000000"); - query.setParameter(0, currentTimeMillis); - query.executeUpdate(); - return null; - } - }); - } - - @SuppressWarnings("unchecked") - @Override - public List<UserInfo> getFirstUsers(Long uid, int page) { - return (List<UserInfo>) dao.excute(new HibernateCallback<List<UserInfo>>() { - - @Override - public List<UserInfo> doInHibernate(Session session) throws HibernateException { - Query query = session - .createSQLQuery( - "SELECT u.* FROM `yeshi_ec_threesale` t LEFT JOIN `yeshi_ec_user` u ON u.`id`=t.`worker_id` WHERE t.`boss_id`=? ORDER BY t.`createtime` DESC") - .addEntity(UserInfo.class); - query.setParameter(0, uid); - query.setFirstResult((page - 1) * Constant.PAGE_SIZE).setMaxResults(Constant.PAGE_SIZE); - return query.list(); - } - }); - - } - - @SuppressWarnings("unchecked") - @Override - public List<UserInfo> getSecondUsers(Long uid, int page) { - return (List<UserInfo>) dao.excute(new HibernateCallback<List<UserInfo>>() { - - @Override - public List<UserInfo> doInHibernate(Session session) throws HibernateException { - Query query = session - .createSQLQuery( - "SELECT u.* FROM `yeshi_ec_threesale` t LEFT JOIN yeshi_ec_threesale t1 ON t1.`boss_id`=t.`worker_id` LEFT JOIN `yeshi_ec_user` u ON u.`id`=t1.`worker_id` WHERE t.`boss_id`=? AND u.`id` IS NOT NULL GROUP BY u.`id` ORDER BY t.`createtime` DESC") - .addEntity(UserInfo.class); - query.setParameter(0, uid); - query.setFirstResult((page - 1) * Constant.PAGE_SIZE).setMaxResults(Constant.PAGE_SIZE); - return query.list(); - } - }); - } - - @Override - public List<ThreeSale> getLastestThreeSaleList(int page, String key) { - if (NumberUtil.isNumeric(key)) { - Long uid = Long.parseLong(key); - int start = (page - 1) * Constant.PAGE_SIZE; - List<ThreeSale> list = dao.list( - "from ThreeSale ts where ts.boss.nickName like ? or ts.boss.id = ? or ts.worker.nickName like ? or ts.worker.id = ? order by ts.createTime desc", - start, Constant.PAGE_SIZE, new Serializable[] { "%" + key + "%", uid, "%" + key + "%", uid }); - return list; - } - int start = (page - 1) * Constant.PAGE_SIZE; - List<ThreeSale> list = dao.list( - "from ThreeSale ts where ts.boss.nickName like ? or ts.worker.nickName like ? order by ts.createTime desc", - start, Constant.PAGE_SIZE, new Serializable[] { "%" + key + "%", "%" + key + "%" }); - return list; - - } - - @Override - public int getLastestThreeSaleCount(String key) { - if (NumberUtil.isNumeric(key)) { - long lk = Long.parseLong(key); - return (int) dao.getCount( - "select count(*) from ThreeSale ts where ts.boss.id = ? or ts.worker.id = ? or ts.boss.nickName like ? or ts.worker.nickName like ?", - new Serializable[] { lk, lk, "%" + key + "%", "%" + key + "%" }); - } - Long lcount = dao.getCount( - "select count(*) from ThreeSale ts where ts.boss.nickName like ? or ts.worker.nickName like ?", - new Serializable[] { "%" + key + "%", "%" + key + "%" }); - return lcount.intValue(); - } @Override public long getFirstUsersCount(Long uid) { - return (Long) dao.excute(new HibernateCallback<Long>() { - - @Override - public Long doInHibernate(Session session) throws HibernateException { - Query query = session.createSQLQuery( - "SELECT count(u.id) FROM `yeshi_ec_threesale` t LEFT JOIN `yeshi_ec_user` u ON u.`id`=t.`worker_id` WHERE t.`boss_id`=?"); - query.setParameter(0, uid); - Object count = query.uniqueResult(); - return Long.parseLong(count + ""); - } - }); + return threeSaleMapper.countFirstTeam(uid, null); } @Override public long getSecondUsersCount(Long uid) { - return (Long) dao.excute(new HibernateCallback<Long>() { - - @Override - public Long doInHibernate(Session session) throws HibernateException { - Query query = session.createSQLQuery( - "SELECT count(1) FROM `yeshi_ec_threesale` t LEFT JOIN yeshi_ec_threesale t1 ON t1.`boss_id`=t.`worker_id` LEFT JOIN `yeshi_ec_user` u ON u.`id`=t1.`worker_id` WHERE t.`boss_id`=? AND u.`id` IS NOT NULL"); - query.setParameter(0, uid); - Object count = query.uniqueResult(); - return Long.parseLong(count + ""); - } - }); + return threeSaleMapper.countSecondTeam(uid, null); } @Override - public void reComputeUserRank(Long uid) { - int myFirstTeamCount = inviteGetMoneyService.myFirstTeamCount(uid + ""); - int mySecondTeamCount = inviteGetMoneyService.mySecondTeamCount(uid + ""); - int count = myFirstTeamCount + mySecondTeamCount; - UserInfo user = userInfoService.getUserById(uid); - if (user == null) - return; - - Map<String, String> convertMap = hongBaoManageService.convertMap(); - int tong = Integer.parseInt(convertMap.get("sale_tong")); - int yin = Integer.parseInt(convertMap.get("sale_yin")); - int jin = Integer.parseInt(convertMap.get("sale_jin")); - int rank = user.getRank(); - if (count >= jin) { - rank = 3; - } else if (count >= yin) { - rank = 2; - } else if (count >= tong) { - rank = 1; - } - - if (rank > user.getRank()) { - // 鏇存柊Rank - UserInfo userInfo = new UserInfo(uid); - userInfo.setRank(rank); - userInfoMapper.updateByPrimaryKeySelective(userInfo); - } - - } - - @Override - public List<ThreeSale> queryMyFirstTeamList(int start, int count, String key, Long bossId){ + public List<ThreeSale> queryMyFirstTeamList(int start, int count, String key, Long bossId) { return threeSaleMapper.queryMyFirstTeamList(start, count, key, bossId); } - + @Override - public long queryCountMyFirstTeamList(String key, Long bossId){ + public long queryCountMyFirstTeamList(String key, Long bossId) { return threeSaleMapper.queryCountMyFirstTeamList(key, bossId); } - + @Override - public List<ThreeSale> queryMySecondTeamList(int start, int count, String key, Long bossId){ + public List<ThreeSale> queryMySecondTeamList(int start, int count, String key, Long bossId) { return threeSaleMapper.queryMySecondTeamList(start, count, key, bossId); } - + @Override - public long queryCountMySecondTeamList(String key, Long bossId){ + public long queryCountMySecondTeamList(String key, Long bossId) { return threeSaleMapper.queryCountMySecondTeamList(key, bossId); } - - + @Override - public int deleteByPrimaryKey(Long id){ + public int deleteByPrimaryKey(Long id) { return threeSaleMapper.deleteByPrimaryKey(id); } - + @Override - public List<Long> queryLongTimeFailed(int daysNum){ + public List<Long> queryLongTimeFailed(int daysNum) { return threeSaleMapper.queryLongTimeFailed(daysNum); } - - + @Override - public List<ThreeSale> queryLongTimeSuccess(int daysNum){ + public List<ThreeSale> queryLongTimeSuccess(int daysNum) { return threeSaleMapper.queryLongTimeSuccess(daysNum); } - + @Override - public int updateExpire(List<Long> list){ + public int updateExpire(List<Long> list) { return threeSaleMapper.updateExpire(list); } @@ -353,96 +328,76 @@ } @Override - public List<ThreeSale> listFirstTeam(long start, int count, Long uid) { - return threeSaleMapper.listFirstTeam(start, count, uid); - } - - @Override public long countFirstTeam(Long uid, Integer state) { return threeSaleMapper.countFirstTeam(uid, state); - } - - @Override - public List<ThreeSale> listSecondTeam(long start, int count, Long uid) { - return threeSaleMapper.listSecondTeam(start, count, uid); } @Override public long countSecondTeam(Long uid, Integer state) { return threeSaleMapper.countSecondTeam(uid, state); } - + @Override public ThreeSale getMyBoss(Long uid) { return threeSaleMapper.getMyBoss(uid); } - - + @Override public ThreeSale selectByPrimaryKey(Long id) { return threeSaleMapper.selectByPrimaryKey(id); } - - + @Override public List<ThreeSale> listbyIdAndBossId(Long id, Long uid, Integer expire) { return threeSaleMapper.listbyIdAndBossId(id, uid, expire); } @Override - public JSONObject getMyFirstTeam(long start, int count, Long uid) { - - List<ThreeSale> list = threeSaleMapper.listFirstTeam(start, count, uid); + public JSONObject getMyFirstTeam(long start, int count, Long uid, Integer state) { + + List<ThreeSale> list = threeSaleMapper.listFirstTeam(start, count, uid, state); if (list == null) { list = new ArrayList<ThreeSale>(); } - - long countTotal = threeSaleMapper.countFirstTeam(uid, null); - + + long countTotal = threeSaleMapper.countFirstTeam(uid, state); + return organizeTeam(countTotal, list); } @Override - public JSONObject getMySecondTeam(long start, int count, Long uid) { - List<ThreeSale> list = threeSaleMapper.listSecondTeam(start, count, uid); + public JSONObject getMySecondTeam(long start, int count, Long uid, Integer state) { + List<ThreeSale> list = threeSaleMapper.listSecondTeam(start, count, uid, state); if (list == null) { list = new ArrayList<ThreeSale>(); } - - long countTotal = threeSaleMapper.countSecondTeam(uid, null); - + + long countTotal = threeSaleMapper.countSecondTeam(uid, state); + return organizeTeam(countTotal, list); } - - public JSONObject organizeTeam(long count, List<ThreeSale> list) { - + JSONObject result = new JSONObject(); - - JSONArray resultArray = new JSONArray(); - - for (ThreeSale threeSale: list) { + + JSONArray resultArray = new JSONArray(); + + for (ThreeSale threeSale : list) { JSONObject object = new JSONObject(); SimpleDateFormat sdf = new SimpleDateFormat("MM.dd HH:mm"); SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); SimpleDateFormat formatYears = new SimpleDateFormat("yyyy"); - + Date todayTime = new Date(); // 閭�璇穒d object.put("inviteId", threeSale.getId()); - + + // 鍔犲叆闃熷垪鏃堕棿 Long createTime = threeSale.getCreateTime(); Date inviteTime = new Date(createTime); - - if (formatYears.format(todayTime).equals(formatYears.format(inviteTime))) { - // 鏈勾 - object.put("inviteTime", sdf.format(inviteTime) + " 鍔犲叆"); - } else { - // 寰�骞� - object.put("inviteTime", format.format(inviteTime) + " 鍔犲叆"); - } - + object.put("inviteTime", format.format(inviteTime) + " 鍔犲叆"); + String memoName = ""; ThreeSaleExtraInfo threeSaleExtraInfo = threeSale.getThreeSaleExtraInfo(); if (threeSaleExtraInfo != null) { @@ -451,89 +406,317 @@ } } object.put("memoName", memoName); - + String nickName = ""; String portrait = ""; Long lastLoginTime = null; - Long workerId = null; - + UserInfo worker = threeSale.getWorker(); if (worker != null) { - workerId = worker.getId(); portrait = worker.getPortrait(); lastLoginTime = worker.getLastLoginTime(); nickName = worker.getNickName(); } object.put("nickName", nickName); - object.put("workerId", workerId); object.put("portrait", portrait); - - int type = 0; + + int state = 0; String fontColor1 = "#888888"; String fontColor2 = "#F14242"; - - JSONArray array = new JSONArray(); + + JSONArray array = new JSONArray(); if (threeSale.getState()) { - type = 1; + state = 1; if (lastLoginTime == null) { lastLoginTime = threeSale.getCreateTime(); } - - JSONArray array1 = new JSONArray(); - array1.add(fontColor1); - array1.add("鏈�杩戠櫥闄� " + sdf.format(lastLoginTime)); - - array.add(array1); - - } else if ( threeSale.getExpire()!= null && (threeSale.getExpire() == 1 || threeSale.getExpire().equals(1))) { - type = 2; - JSONArray array1 = new JSONArray(); - array1.add(fontColor1); - array1.add("宸茬粡鑴辩閭�璇峰叧绯�"); - - array.add(array1); + + JSONObject contentJson = new JSONObject(); + contentJson.put("color", fontColor1); + + if (formatYears.format(todayTime).equals(formatYears.format(lastLoginTime))) { + // 鏈勾 + contentJson.put("content", "鏈�杩戠櫥褰� " + sdf.format(lastLoginTime)); + } else { + // 寰�骞� + contentJson.put("content", "鏈�杩戠櫥褰� " + format.format(lastLoginTime)); + } + + array.add(contentJson); + + } else if (threeSale.getExpire() != null + && (threeSale.getExpire() == 1 || threeSale.getExpire().equals(1))) { + state = 2; + JSONObject contentJson = new JSONObject(); + contentJson.put("color", fontColor1); + contentJson.put("content", "宸茬粡鑴辩閭�璇峰叧绯�"); + array.add(contentJson); } else { - type = 0; - + state = 0; + Calendar c = Calendar.getInstance(); c.setTime(inviteTime); c.add(Calendar.DAY_OF_MONTH, 60);// 閭�璇蜂笉瓒呰繃60澶� - - - long days = (c.getTimeInMillis() -todayTime.getTime()) / (1000*3600*24); + + long days = (c.getTimeInMillis() - todayTime.getTime()) / (1000 * 3600 * 24); if (days < 0) { days = 0; } - - JSONArray array1 = new JSONArray(); - array1.add(fontColor1); - array1.add("灏嗕簬"); - - JSONArray array2 = new JSONArray(); - array2.add(fontColor2); - array2.add(days+"澶�"); - - JSONArray array3 = new JSONArray(); - array3.add(fontColor1); - array3.add("鍚庤劚绂婚個璇峰叧绯�"); - - array.add(array1); - array.add(array2); - array.add(array3); + + JSONObject contentJson1 = new JSONObject(); + contentJson1.put("color", fontColor1); + contentJson1.put("content", "灏嗕簬"); + + JSONObject contentJson2 = new JSONObject(); + contentJson2.put("color", fontColor2); + contentJson2.put("content", days + "澶�"); + + JSONObject contentJson3 = new JSONObject(); + contentJson3.put("color", fontColor1); + contentJson3.put("content", "鍚庤劚绂婚個璇峰叧绯�"); + + array.add(contentJson1); + array.add(contentJson2); + array.add(contentJson3); } - - object.put("type", type); + + object.put("state", state); object.put("recentMsg", array); - + resultArray.add(object); } - + result.put("count", count); result.put("result_list", resultArray); - + return result; - } - - + + @Override + public List<ThreeSale> listByWorkerId(Long workerId) { + return threeSaleMapper.listByWorkerId(workerId); + } + + @Override + public int getSuccessRelationshipNum(Long uid) { + return threeSaleMapper.getSuccessRelationshipNum(uid); + } + + @Override + @Transactional + public void bindRelationshipByInviteCode(UserInfo invitee, UserInfo inviter) throws ThreeSaleException { + + if (invitee == null || inviter == null) + throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖"); + + // 鑾峰彇鏈夋晥鐨勯個璇峰叧绯� + ThreeSale threeSale = threeSaleMapper.getRelationshipByBossIdAndWorkerId(inviter.getId(), invitee.getId()); + + if (threeSale != null) { + // 鏈夋晥鍏崇郴--鐢熸晥 + threeSale.setBoss(inviter); + threeSale.setWorker(invitee); + threeSale.setState(true); + threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); + threeSale.setSucceedTime(java.lang.System.currentTimeMillis()); + threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); + threeSaleMapper.updateByPrimaryKeySelective(threeSale); + } else { + // 鏂板缓绔嬬‘瀹氬叧绯� + threeSale = new ThreeSale(); + threeSale.setBoss(inviter); + threeSale.setWorker(invitee); + threeSale.setState(true); + threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); + threeSale.setSucceedTime(java.lang.System.currentTimeMillis()); + threeSale.setCreateTime(java.lang.System.currentTimeMillis()); + threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); + threeSaleMapper.insertSelective(threeSale); + } + + List<ThreeSale> listExpire = threeSaleMapper.getExpireRecord(inviter.getId(), invitee.getId()); + if (listExpire != null && listExpire.size() > 0) { + // 鍒犻櫎鍘嗗彶閫氱煡 + for (ThreeSale saleExpire : listExpire) { + msgInviteDetailService.deleteByThreeSale(saleExpire); + } + // 鍒犻櫎宸插け鏁堝叧绯� + threeSaleMapper.deleteExpireRecord(inviter.getId(), invitee.getId()); + } + + // 娣诲姞鍒伴槦鍒� + ThreeSaleCMQManager.getInstance().addThreeSaleMsg(threeSale); + + // 閭�璇锋秷鎭� + userInviteMsgNotificationService.inviteSuccess(inviter.getId(), threeSale); + + executor.execute(new Runnable() { + @Override + public void run() { + + UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(inviter.getId()); + try { + if (activeLog != null && !StringUtil.isNullOrEmpty(activeLog.getVersionCode())) { + String versionCode = activeLog.getVersionCode(); + String channel = activeLog.getChannel(); + + boolean result = false; + // 娓犻亾鏄痑ppstore 鍒ゆ柇涓篒OS + if (!StringUtil.isNullOrEmpty(channel) && "appstore".equalsIgnoreCase(channel)) { + result = VersionUtil.greaterThan_1_5_60("ios", versionCode); + } else { + result = VersionUtil.greaterThan_1_5_60("android", versionCode); + } + + if (result) { + // 琚個璇峰悕绉� + String inviteName = invitee.getNickName(); + if (StringUtil.isNullOrEmpty(inviteName)) { + UserInfo userInfo = userInfoService.selectByPKey(invitee.getId()); + if (userInfo != null) { + inviteName = userInfo.getNickName(); + } + } + // 濂栧姳閭�璇风孩鍖咃紙娣樼ぜ閲戯級 + userTaoLiJinOriginService.addInviteWinMoney(inviter.getId(), inviteName); + } + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + + // 閭�璇烽噾甯� + integralGetService.addInviteLevelOne(inviter.getId(), invitee.getId()); + } + }); + + } + + @Override + @Transactional + public void bindRelationshipByWX(UserInfo invitee, Long inviterId, ThreeSale threeSaleOld) + throws ThreeSaleException { + + if (invitee == null || (inviterId == null && threeSaleOld == null)) + throw new ThreeSaleException(1, "鐢ㄦ埛淇℃伅涓虹┖"); + + ThreeSale threeSale = null; + if (inviterId != null) { + // 鏂板缓绔嬬‘瀹氬叧绯� + threeSale = new ThreeSale(); + threeSale.setBoss(new UserInfo(inviterId)); + threeSale.setWorker(invitee); + threeSale.setState(true); + threeSale.setExpire(ThreeSale.EXPIRE_NORMAL); + threeSale.setSucceedTime(java.lang.System.currentTimeMillis()); + threeSale.setCreateTime(java.lang.System.currentTimeMillis()); + threeSale.setUpdateTime(java.lang.System.currentTimeMillis()); + threeSaleMapper.insertSelective(threeSale); + + // 閭�璇峰叧绯诲け鏁� 1.5.3 涔嬪墠澶辨晥 + if (threeSaleOld != null) { + ThreeSale three = new ThreeSale(); + three.setId(threeSaleOld.getId()); + three.setExpire(ThreeSale.EXPIRE_OUTOFDATE); + three.setUpdateTime(java.lang.System.currentTimeMillis()); + threeSaleMapper.updateByPrimaryKeySelective(three); + } + } else if (threeSaleOld != null && inviterId == null) { + // 1.5.3 涔嬪墠鐢熸晥 + threeSaleOld.setState(true); + threeSaleOld.setExpire(ThreeSale.EXPIRE_NORMAL); + threeSaleOld.setSucceedTime(java.lang.System.currentTimeMillis()); + threeSaleOld.setUpdateTime(java.lang.System.currentTimeMillis()); + threeSaleMapper.updateByPrimaryKeySelective(threeSaleOld); + + threeSale = threeSaleOld; + } + + if (threeSale == null) { + throw new ThreeSaleException(1, "鍏崇郴缁戝畾澶辫触"); + } + + UserInfo boss = userInfoService.selectByPKey(threeSale.getBoss().getId()); + threeSale.setBoss(boss); + threeSale.setWorker(invitee); + + // 娣诲姞鍒伴槦鍒� + ThreeSaleCMQManager.getInstance().addThreeSaleMsg(threeSale); + + // 閭�璇锋秷鎭� + userInviteMsgNotificationService.inviteSuccess(threeSale.getBoss().getId(), threeSale); + + executor.execute(new Runnable() { + @Override + public void run() { + try { + UserActiveLog activeLog = userActiveLogService.getUserLatestActiveInfo(inviterId); + if (activeLog != null && !StringUtil.isNullOrEmpty(activeLog.getVersionCode())) { + boolean result = false; + String versionCode = activeLog.getVersionCode(); + String channel = activeLog.getChannel(); + + // 娓犻亾鏄痑ppstore 鍒ゆ柇涓篒OS + if (!StringUtil.isNullOrEmpty(channel) && "appstore".equalsIgnoreCase(channel)) { + result = VersionUtil.greaterThan_1_5_60("ios", versionCode); + } else { + result = VersionUtil.greaterThan_1_5_60("android", versionCode); + } + + if (result) { + // 琚個璇峰悕绉� + String inviteName = invitee.getNickName(); + if (StringUtil.isNullOrEmpty(inviteName)) { + UserInfo userInfo = userInfoService.selectByPKey(invitee.getId()); + if (userInfo != null) { + inviteName = userInfo.getNickName(); + } + } + // 濂栧姳閭�璇风孩鍖咃紙娣樼ぜ閲戯級 + userTaoLiJinOriginService.addInviteWinMoney(inviterId, inviteName); + } + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + }); + } + + /** + * 鏍规嵁閭�璇疯�呮煡璇㈠叧绯� + * + * @param workerId + * @return + */ + @Override + public ThreeSale getByWorkerId(Long workerId) { + return threeSaleMapper.getByWorkerId(workerId); + } + + @Override + public long countSuccessFirstTeam(Long uid) { + return threeSaleMapper.countFirstTeam(uid, 1); + } + + @Override + public ThreeSale selectByWorkerId(Long workerId) { + return threeSaleMapper.selectSuccessByWorkerId(workerId); + } + + @Override + public List<ThreeSale> getSuccessByDate(Long bossId, Long minTime, Long maxTime) { + return threeSaleMapper.getSuccessByDate(bossId, minTime, maxTime); + } + + @Override + public List<ThreeSale> listFirstTeam(long start, int count, Long uid, Integer state) { + return threeSaleMapper.listFirstTeam(start, count, uid, state); + } + + @Override + public List<ThreeSale> listSecondTeam(long start, int count, Long uid, Integer state) { + return threeSaleMapper.listSecondTeam(start, count, uid, state); + } + } -- Gitblit v1.8.0