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/user/UserInfoServiceImpl.java | 1648 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 812 insertions(+), 836 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java index 23a7e25..0d3a1dd 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoServiceImpl.java @@ -1,836 +1,812 @@ -package com.yeshi.fanli.service.impl.user; - -import java.io.InputStream; -import java.io.Serializable; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -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.HttpUtil; -import org.yeshi.utils.NumberUtil; -import org.yeshi.utils.tencentcloud.COSManager; - -import com.google.gson.Gson; -import com.yeshi.fanli.dao.mybatis.BindingAccountMapper; -import com.yeshi.fanli.dao.mybatis.PayInfoMapper; -import com.yeshi.fanli.dao.mybatis.ScanHistoryMapper; -import com.yeshi.fanli.dao.mybatis.UserInfoMapper; -import com.yeshi.fanli.dao.mybatis.UserShareGoodsHistoryMapper; -import com.yeshi.fanli.dao.mybatis.share.ShareMapper; -import com.yeshi.fanli.dao.user.UserInfoDao; -import com.yeshi.fanli.entity.bus.user.BindingAccount; -import com.yeshi.fanli.entity.bus.user.InviteUser; -import com.yeshi.fanli.entity.bus.user.UserInfo; -import com.yeshi.fanli.entity.bus.user.WeiXinUser; -import com.yeshi.fanli.entity.system.BusinessSystem; -import com.yeshi.fanli.exception.ThreeSaleException; -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.config.ConfigService; -import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; -import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce; -import com.yeshi.fanli.service.inter.user.UserInfoService; -import com.yeshi.fanli.service.inter.user.UserRankService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.ThreadUtil; -import com.yeshi.fanli.util.TimeUtil; -import com.yeshi.fanli.util.Utils; -import com.yeshi.fanli.util.account.UserUtil; -import com.yeshi.fanli.util.wx.WXLoginUtil; -import com.yeshi.fanli.vo.user.UserInfoVO; - -@Service -public class UserInfoServiceImpl implements UserInfoService { - - @Resource - private UserInfoDao userInfoDao; - - @Resource - private UserInfoService userInfoService; - - @Resource - private ConfigService configService; - - @Resource - private ThreeSaleSerivce threeSaleSerivce; - - @Resource - private UserInfoMapper userInfoMapper; - - @Resource - private BindingAccountMapper bindingAccountMapper; - - @Resource - private PayInfoMapper payInfoMapper; - - @Resource - private UserShareGoodsHistoryMapper userShareGoodsHistoryMapper; - - @Resource - private ScanHistoryMapper scanHistoryMapper; - - @Resource - private ShareMapper shareMapper; - - @Resource - private HongBaoV2CountService hongBaoV2CountService; - - @Resource - private UserRankService userRankService; - - - public UserInfo getUserByLoginTypeAndOpenId(int loginType, String openid, String appid) { - List<UserInfo> list = null; - if (loginType == 1) { - list = userInfoDao.list("from UserInfo u where u.openid=? and u.appId = ? ", - new Serializable[] { openid, appid }); - } else { - list = userInfoDao.list("from UserInfo u where u.wxUnionId=? and u.appId = ? ", - new Serializable[] { openid, appid }); - } - - if (list != null) - for (int i = 0; i < list.size(); i++) { - if (list.get(i).getState() == UserInfo.STATE_DELETE - || list.get(i).getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) { - list.remove(i); - i--; - } - } - - if (list != null && list.size() > 0) { - return list.get(0); - } - return null; - } - - // - // public UserInfo getUserByLoginTypeAndOpenIdByMybatis(int loginType, - // String openid, String appid) { - // List<UserInfo> list = null; - // if (loginType == 1) { - // list = userInfoDao.list("from UserInfo u where u.openid=? and u.appId = ? - // ", - // new Serializable[] { openid, appid }); - // } else { - // list = userInfoDao.list("from UserInfo u where u.wxUnionId=? and u.appId - // = ? ", - // new Serializable[] { openid, appid }); - // } - // if (list != null && list.size() > 0) { - // return list.get(0); - // } - // return null; - // } - - @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) - public UserInfo addUser(UserInfo form, String appid) { - try { - LogHelper.test("鐢ㄦ埛鐨勬敞鍐屼俊鎭�:" + new Gson().toJson(form)); - form.setCreatetime(new Date().getTime()); - form.setRank(0); - String openId = form.getLoginType() == Constant.TAOBAO ? form.getOpenid() : form.getWxUnionId(); - UserInfo find = getUserByLoginTypeAndOpenId(form.getLoginType(), openId, Constant.APPID); - if (find != null) { - return find; - } - boolean create = createUser(form, appid); - if (!create) { - return null; - } - int loginType = form.getLoginType(); - // 寤虹殑鍋囩敤鎴枫�傘�� - if (loginType == -1) { - return form; - } - - LogHelper.userInfo("娣诲姞鐢ㄦ埛:" + form); - if (form.getLoginType() == Constant.WEIXIN) { - // final UserInfo temp = form; - ThreadUtil.run(new Runnable() { - public void run() { - UserInfo temp = userInfoDao.find(UserInfo.class, form.getId()); - COSManager cosManager = COSManager.getInstance(); - InputStream inputStream = HttpUtil.getAsInputStream(temp.getPortrait()); - String uploadFile = cosManager.uploadFile(inputStream, UUID.randomUUID().toString()).getUrl(); - temp.setPortrait(uploadFile); - userInfoDao.update(temp); - } - }); - } - } catch (Exception e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - return null; - } - return form; - } - - public boolean createUser(UserInfo form, String appid) { - Long id = (Long) userInfoDao.excute(new HibernateCallback<Long>() { - public Long doInHibernate(Session session) throws HibernateException { - SQLQuery query = session.createSQLQuery("SELECT IFNULL(MAX(id),100000) FROM yeshi_ec_user "); - List list = query.list(); - long dd = (long) (Math.random() * 100); - if (dd == 0) { - dd = 1; - } - long bid = Long.parseLong(list.get(0) + ""); - return bid + dd; - } - }); - form.setId(id); - form.setAppId(appid); - userInfoDao.save(form); - return true; - } - - public UserInfo getUserById(long uid) { - UserInfo user = userInfoDao.find(UserInfo.class, uid); - if (user.getState() != null && user.getState() != UserInfo.STATE_NORMAL) - return null; - if (user != null) { - user.setRankIcon(UserUtil.getRankIcon(user.getRank())); - user.setRankNamePicture(UserUtil.getRankNamePicture(user.getRank())); - } - return user; - } - - @Transactional - public void update(UserInfo user) { - userInfoDao.update(user); - } - - public long getUserCount() { - return userInfoDao.getCount("select count(*) from UserInfo"); - } - - public List<UserInfo> getUserList(int index, String key) { - - int start = index * Constant.PAGE_SIZE; - - if (NumberUtil.isNumeric(key)) { - long l = Long.parseLong(key); - return userInfoDao.list("from UserInfo u where u.id = ? or u.nickName like ? order by u.id desc", start, - Constant.PAGE_SIZE, new Serializable[] { l, "%" + key + "%" }); - } - - return userInfoDao.list("from UserInfo u where u.nickName like ? order by u.id desc ", start, - Constant.PAGE_SIZE, new Serializable[] { "%" + key + "%" }); - - } - - public int getUserCount(String key) { - if (NumberUtil.isNumeric(key)) { - long lk = Long.parseLong(key); - return (int) userInfoDao.getCount("select count(u.id) from UserInfo u where u.id = ? or u.nickName like ? ", - new Serializable[] { lk, "%" + key + "%" }); - } - Long lcount = userInfoDao.getCount("select count(u.id) from UserInfo u where u.nickName like ? ", - new Serializable[] { "%" + key + "%" }); - return lcount.intValue(); - } - - @SuppressWarnings("unchecked") - public Map<String, Integer> getnewUserByDate(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>) userInfoDao.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_user 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> getnewUserByMonth(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>) userInfoDao.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_user 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> getUserTotalByDate(final 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>) userInfoDao.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_user_day a WHERE a.c<= '" - + day + "' "); - } else { - sb.append("UNION ALL SELECT '" + day - + "' AS t,IFNULL(SUM(a.s),0) FROM yeshi_ec_user_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> getUserTotalByMonth(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>) userInfoDao.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_user_month a WHERE a.months<= '" + month - + "' "); - } else { - sb.append("UNION ALL SELECT '" + month - + "' AS t,IFNULL(SUM(a.s),0) FROM yeshi_ec_user_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 List<UserInfo> getUserListByUid(long uid) { - List<UserInfo> list = userInfoDao.list("from UserInfo u where u.id = ? ", new Serializable[] { uid }); - return list; - } - - public double getFreezeAssets(final double min) { - return (Double) userInfoDao.excute(new HibernateCallback<Double>() { - - public Double doInHibernate(Session session) throws HibernateException { - Query query = session.createSQLQuery( - "select IFNULL(sum(u.my_hongBao),0) from yeshi_ec_user u where u.my_hongBao < ? "); - query.setParameter(0, min); - Double result = Double.parseDouble(query.uniqueResult() + ""); - return result.doubleValue(); - } - }); - } - - public double getCanAssets(final double min) { - return (Double) userInfoDao.excute(new HibernateCallback<Double>() { - - public Double doInHibernate(Session session) throws HibernateException { - Query query = session.createSQLQuery( - "select IFNULL(sum(u.my_hongBao),0) from yeshi_ec_user u where u.my_hongBao >= ? "); - query.setParameter(0, min); - Double result = Double.parseDouble(query.uniqueResult() + ""); - return result.doubleValue(); - } - }); - } - - public long getRandomShamUser() { - return (Long) userInfoDao.excute(new HibernateCallback<Long>() { - - public Long doInHibernate(Session session) throws HibernateException { - SQLQuery sqlQuery = session - .createSQLQuery("SELECT id FROM yeshi_ec_user WHERE login_type=-1 ORDER BY RAND() LIMIT 1"); - List list = sqlQuery.list(); - if (list.size() > 0) { - long id = Long.parseLong(list.get(0) + ""); - return id; - } - return (long) 0; - } - }); - } - - @Transactional - public boolean inviteWXUserInfo(String code, UserInfo inviter) { - WeiXinUser weiXinUser = WXLoginUtil.getWeiXinWYUser(code); - if (weiXinUser == null) { - return false; - } - String wxUnionId = weiXinUser.getUnionid(); - UserInfo find = getUserByLoginTypeAndOpenId(Constant.WEIXIN, wxUnionId, Constant.APPID); - - if (find == null) { - find = new UserInfo(); - find.setAppId(Constant.APPID); - find.setWxUnionId(weiXinUser.getUnionid()); - String wxHeadImg = COSManager.getInstance() - .uploadFile(HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl()), - Constant.WXHEADURL + UUID.randomUUID().toString()) - .getUrl(); - find.setPortrait(wxHeadImg); - find.setWxPic(wxHeadImg); - find.setNickName(weiXinUser.getNickname()); - find.setWxName(weiXinUser.getNickname()); - find.setLoginType(Constant.WEIXIN); - find.setRank(0); - find.setWxOpenId(weiXinUser.getOpenid()); - BusinessSystem system = new BusinessSystem(Constant.FANLI); - system.setPlatform(1); - find.setSystem(system); - } - - try { - threeSaleSerivce.bind(find, inviter); - return true; - } catch (ThreeSaleException e) { - e.printStackTrace(); - return false; - } - } - - @Transactional - public void unBindUserInfo(UserInfo user, int type) { - if (type == Constant.TAOBAO) { - user.setOpenid(""); - user.setTbName(""); - user.setTbPic(""); - if (!StringUtil.isNullOrEmpty(user.getWxOpenId())) { - user.setLoginType(Constant.WEIXIN); - user.setNickName(user.getWxName()); - user.setPortrait(user.getWxPic()); - } - } else if (type == Constant.WEIXIN) { - user.setWxName(""); - user.setWxOpenId(""); - user.setWxUnionId(""); - user.setWxPic(""); - if (!StringUtil.isNullOrEmpty(user.getOpenid())) { - user.setLoginType(Constant.TAOBAO); - user.setNickName(user.getTbName()); - user.setPortrait(user.getTbPic()); - } - } - userInfoDao.update(user); - } - - @Transactional - public void addMoney(UserInfo userInfo, BigDecimal money) { - - userInfoDao.excute(new HibernateCallback() { - @Override - public Object doInHibernate(Session session) throws HibernateException { - Query query = session.createQuery("update UserInfo u set u.myHongBao = u.myHongBao + ? where u.id = ?"); - query.setParameter(0, money); - query.setParameter(1, userInfo.getId()); - query.executeUpdate(); - return null; - } - }); - - } - - @SuppressWarnings("unchecked") - @Override - public List<UserInfo> findFriends(long id, int type) { - List<UserInfo> list; - if (type == 1) { - list = userInfoDao.list("select ts.worker from ThreeSale ts where ts.boss.id = ?", - new Serializable[] { id }); - } else { - list = (List<UserInfo>) userInfoDao.excute(new HibernateCallback<List<UserInfo>>() { - @Override - public List<UserInfo> doInHibernate(Session session) throws HibernateException { - SQLQuery query = session.createSQLQuery( - "select uu.* from yeshi_ec_user uu left join (SELECT trw.`worker_id` as id FROM yeshi_ec_threesale trw RIGHT JOIN " - + "(SELECT tr.`worker_id` AS id FROM `yeshi_ec_threesale` tr LEFT JOIN `yeshi_ec_user` u ON tr.`boss_id`=u.`id` WHERE tr.`boss_id`=?) nu ON nu.id = trw.`boss_id`" - + "WHERE nu.id = trw.`boss_id`) u on uu.id=u.id where uu.id=u.id"); - query.setParameter(0, id); - query.addEntity(UserInfo.class); - return query.list(); - } - }); - } - return list; - } - - @Override - public int findFriendsCount(long id, int type) { - if (type == 1) { - return (int) userInfoDao.getCount("select count(*) from ThreeSale ts where ts.boss.id = ? and ts.state=1", - new Serializable[] { id }); - } else { - return (int) userInfoDao.getCountSQL(" from yeshi_ec_threesale trw RIGHT JOIN " - + "(SELECT tr.`worker_id` AS id FROM `yeshi_ec_threesale` tr LEFT JOIN `yeshi_ec_user` u ON tr.`boss_id`=u.`id` WHERE tr.`boss_id`=? and tr.state=1) nu ON nu.id = trw.`boss_id`" - + "WHERE nu.id = trw.`boss_id` and trw.state=1", new Serializable[] { id }); - } - } - - @Override - public void updateLoginInfo(UserInfo user) { - userInfoDao.excute(new HibernateCallback() { - @Override - public Object doInHibernate(Session session) throws HibernateException { - SQLQuery query = session - .createSQLQuery("update yeshi_ec_user u set u.loginip=?,u.last_logintime=? where u.id = ?"); - query.setParameter(0, user.getLastLoginIp()); - query.setParameter(1, user.getLastLoginTime()); - query.setParameter(2, user.getId()); - return query.executeUpdate(); - } - }); - } - - @Override - public List<InviteUser> getFriendsList(final long id, int type, int page, int pageSize) { - List<InviteUser> list = null; - if (type == 1) { - list = userInfoDao.getHibernateTemplate().execute(new HibernateCallback<List<InviteUser>>() { - @Override - public List<InviteUser> doInHibernate(Session session) throws HibernateException { - List list = session - .createSQLQuery( - "SELECT u.id,u.`nick_name`,u.`portrait`,uu.state FROM (SELECT t.* FROM `yeshi_ec_threesale` t " - + "WHERE t.`boss_id`=? AND (t.expire = 0 OR t.expire IS NULL) ORDER BY t.createTime DESC) uu LEFT JOIN yeshi_ec_user u ON u.`id`=uu.worker_id") - .setParameter(0, id).setFirstResult((page - 1) * pageSize).setMaxResults(pageSize).list(); - return covertToInviteUserList(list); - } - }); - } else { - list = userInfoDao.getHibernateTemplate().execute(new HibernateCallback<List<InviteUser>>() { - @Override - public List<InviteUser> doInHibernate(Session session) throws HibernateException { - List list = session - .createSQLQuery( - "SELECT u.id,u.`nick_name`,u.`portrait`,uu.state FROM (SELECT tt.* FROM `yeshi_ec_threesale` t LEFT JOIN yeshi_ec_threesale tt ON tt.`boss_id`=t.`worker_id` " - + " WHERE t.`boss_id`=? AND tt.`id` IS NOT NULL AND (tt.expire = 0 OR tt.expire IS NULL) ORDER BY tt.createTime DESC) uu LEFT JOIN yeshi_ec_user u ON u.`id`=uu.worker_id") - .setParameter(0, id).setFirstResult((page - 1) * pageSize).setMaxResults(pageSize).list(); - return covertToInviteUserList(list); - } - }); - } - return list; - } - - private List<InviteUser> covertToInviteUserList(List list) { - List<InviteUser> ilist = new ArrayList<>(); - if (list != null) - for (int i = 0; i < list.size(); i++) { - Object[] objs = (Object[]) list.get(i); - InviteUser inviteUser = new InviteUser(); - UserInfo user = new UserInfo(); - user.setId(Long.parseLong(objs[0] + "")); - user.setNickName(objs[1] + ""); - user.setPortrait(objs[2] + ""); - inviteUser.setUserInfo(user); - inviteUser.setValid(Boolean.parseBoolean(objs[3] + "")); - ilist.add(inviteUser); - } - return ilist; - } - - @Override - public void cleanPassword(long id) { - userInfoMapper.cleanPassword(id); - } - - @Override - public long getFriendsListCount(long id, int type) { - if (type == 1) - return userInfoDao.getCountSQL("SELECT COUNT(t.`id`) FROM `yeshi_ec_threesale` t WHERE t.`boss_id`= " + id - + " AND (t.expire = 0 OR t.expire IS NULL)"); - else - return userInfoDao.getCountSQL( - "SELECT COUNT(tt.id) FROM `yeshi_ec_threesale` t LEFT JOIN yeshi_ec_threesale tt ON tt.`boss_id`=t.`worker_id` WHERE t.`boss_id`=" - + id + " AND tt.`id` IS NOT NULL AND (tt.expire = 0 OR tt.expire IS NULL)"); - } - - @Override - public BigDecimal getNewPeopleHB(Long id) { - return userInfoMapper.getNewPeopleHB(id); - } - - @Override - public BigDecimal getMyHB(Long id) { - return userInfoMapper.getMyHB(id); - } - - @Override - public UserInfo getUserByIdWithMybatis(long uid) { - UserInfo user = userInfoMapper.selectByPKey(uid); - return UserUtil.filterForClientUser(user); - } - - @Override - public long queryCount( Integer userState, String key, Integer keyType, String userRank, Integer days, String startTime, String endTime) { - return userInfoMapper.queryCount(userState, key, keyType, userRank, days, startTime, endTime); - } - - @Override - public List<UserInfoVO> query(long start, int count, Integer userState, String key, Integer keyType, - String userRank, Integer days, String startTime, String endTime, Integer orderField, Integer orderMode) { - - List<UserInfoVO> userList = userInfoMapper.query(start, count,userState, key, keyType, userRank, days, startTime, endTime, - orderField, orderMode); - - if (userList == null || userList.size() == 0) { - return null; - } - - for (UserInfoVO userInfoVO : userList) { - // 鏁版嵁鍔犲伐澶勭悊 - convertUserInfoVOData(userInfoVO); - } - - return userList; - } - - public void convertUserInfoVOData(UserInfoVO userInfoVO) { - - String rankName = userInfoVO.getRankName(); - if (rankName == null || rankName.trim().length() == 0) { - userInfoVO.setRankName("闈掗摐"); - userInfoVO.setRankPicture("http://img.flqapp.com/resource/rank/rank_picture_new_1.png"); - } - - String f_alipayAccount = userInfoVO.getAlipayAccountInvalid(); - if (f_alipayAccount != null && f_alipayAccount.trim().length() > 0) { - userInfoVO.setAlipayAccountState(1); - } - - String f_phone = userInfoVO.getPhoneInvalid(); - if (f_phone != null && f_phone.trim().length() > 0) { - userInfoVO.setPhoneState(1); - } - - String f_taobaoUid = userInfoVO.getTaobaoUidInvalid(); - if (f_taobaoUid != null && f_taobaoUid.trim().length() > 0) { - userInfoVO.setTaobaoUidState(1); - } - - String f_wxUnionId = userInfoVO.getWxUnionIdInvalid(); - if (f_wxUnionId != null && f_wxUnionId.trim().length() > 0) { - userInfoVO.setWxUnionIdState(1); - } - - // 鏈�杩戠櫥褰曟椂闂� - Long lastLoginTime = userInfoVO.getLastLoginTime(); - if (lastLoginTime != null && lastLoginTime == 0) { - userInfoVO.setLastLoginTime(null); - } - - /* 鏄剧ず鐢ㄦ埛寰俊 娣樺疂 鑰佺増鏈瓨鍦� - * String wxUnionId = userInfoVO.getWxUnionId(); if (wxUnionId == null || - * wxUnionId.trim().length() == 0) { userInfoVO.setWxName(null); } - * - * String taoBaoUid = userInfoVO.getTaoBaoUid(); if (taoBaoUid == null || - * taoBaoUid.trim().length() == 0) { userInfoVO.setTbName(null); } - */ - - - Long uid = userInfoVO.getId(); - - - /* 缁戝畾鏀舵璐﹀彿淇℃伅 */ - List<BindingAccount> account = bindingAccountMapper.selectByUid(uid); - if (account != null && account.size() > 0) { - BindingAccount bindingAccount = account.get(0); - Integer type = bindingAccount.getType(); - if (type != null && type == 1) { - // 鏀粯瀹� - userInfoVO.setAccountAlipay(bindingAccount.getAccount()); - userInfoVO.setAccountName(bindingAccount.getName()); - userInfoVO.setAccountBindId(bindingAccount.getId()); - - } else if (type != null && type == 2) { - // 寰俊 - userInfoVO.setAccountWX(bindingAccount.getAccount()); - userInfoVO.setAccountNameWX(bindingAccount.getName()); - userInfoVO.setAccountBindIdWX(bindingAccount.getId()); - } - } - - // 鏈�杩戜竴娆′笅鍗曟椂闂� - Date lastOrderTime = hongBaoV2CountService.getLastHongBaoTime(uid); - if (lastOrderTime != null && lastOrderTime.getTime() != 0) { - userInfoVO.setLastOrderTime(lastOrderTime.getTime()); - } - - // 浠婃棩鎬昏鍗� - long todayOrder = hongBaoV2CountService.countValidNumberByUid(uid, 1); - userInfoVO.setTodayOrder(todayOrder); - - // 鏈鍙栫孩鍖� 寰呭叆璐﹂噾棰� - BigDecimal unaccountedMoney = hongBaoV2CountService.countWillGetMoneyByUid(uid); - if (unaccountedMoney == null) { - unaccountedMoney = new BigDecimal(0); - } - userInfoVO.setUnaccountedMoney(unaccountedMoney.toString()); - - // 鍘嗗彶鎬绘敹鐩� - BigDecimal totalMoneyHistory = hongBaoV2CountService.countMoneyByUidAndState(uid, 3); - if (totalMoneyHistory == null) { - totalMoneyHistory = new BigDecimal(0); - } - userInfoVO.setTotalMoneyHistory(totalMoneyHistory.toString()); - - // 鏀粯瀹濊处鍙� 绱杞处鎬婚噾棰� - double totalMoney = payInfoMapper.sumMoneyByUid(uid); - userInfoVO.setTotalMoney(totalMoney); - - // 绱鎻愮幇 (鏆傛湭璁″叆寰俊) - userInfoVO.setTotalExtract(totalMoney); - - // 缁熻鍒嗕韩涓暟 - long countUserShares = userShareGoodsHistoryMapper.countUserShares(uid); - userInfoVO.setCountUserShares(countUserShares); - - // 缁熻娴忚瓒宠抗 - long countScanHistory = scanHistoryMapper.countUserScanHistory(uid); - userInfoVO.setCountScanHistory(countScanHistory); - - // 涓�搴﹂槦鍛樻暟閲� - int firstTeamCount = shareMapper.myFirstTeamCount(uid + ""); - userInfoVO.setCountLevelOne(firstTeamCount); - - // 浜屽害闃熷憳鏁伴噺 - int secondTeamCount = shareMapper.mySecondTeamCount(uid + ""); - userInfoVO.setCountLevelTwo(secondTeamCount); - } - - - @Override - public double querySumMoney(String key, Integer userType, Integer days, String startTime, String endTime) { - return userInfoMapper.querySumMoney(key, userType, days, startTime, endTime); - } - - @Override - public UserInfo selectByPKey(Long id) { - return userInfoMapper.selectByPKey(id); - } - - @Override - public int updateByPrimaryKeySelective(UserInfo record) { - return userInfoMapper.updateByPrimaryKeySelective(record); - } - - @Override - @Transactional - public void deleteBindInfo(UserInfo user, int type) { - if (type == 1) { - user.setOpenid(""); - user.setTbName(""); - user.setTbPic(""); - if (!StringUtil.isNullOrEmpty(user.getWxOpenId())) { - user.setLoginType(Constant.WEIXIN); - user.setNickName(user.getWxName()); - user.setPortrait(user.getWxPic()); - } - } else if (type == 2) { - user.setWxName(""); - user.setWxOpenId(""); - user.setWxUnionId(""); - user.setWxPic(""); - if (!StringUtil.isNullOrEmpty(user.getOpenid())) { - user.setLoginType(Constant.TAOBAO); - user.setNickName(user.getTbName()); - user.setPortrait(user.getTbPic()); - } - } else if (type == 3) { - user.setPhone(""); - } - - userInfoMapper.updateByPrimaryKeySelective(user); - } - - @Override - public List<Long> longTimeNoLogin(int daysNum, List<Long> list) { - return userInfoMapper.longTimeNoLogin(daysNum, list); - } - - /** - * 鏍规嵁鐢佃瘽鍙风爜銆侀個璇风爜鑾峰彇閭�璇风敤鎴� - * - * @param phone - * @param inviteCode - * @return - */ - @Override - public UserInfo getInfoByPhoneOrInviteCode(String phone, String inviteCode) { - return userInfoMapper.getInfoByPhoneOrInviteCode(phone, inviteCode); - } - -} +package com.yeshi.fanli.service.impl.user; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.UUID; + +import javax.annotation.Resource; + +import com.yeshi.fanli.entity.SystemEnum; +import com.yeshi.fanli.entity.config.SystemConfigKeyEnum; +import com.yeshi.fanli.service.inter.config.SystemConfigService; +import com.yeshi.fanli.util.*; +import org.springframework.context.annotation.Lazy; +import org.springframework.core.task.TaskExecutor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import org.yeshi.utils.FileUtil; +import org.yeshi.utils.HttpUtil; +import org.yeshi.utils.tencentcloud.COSManager; + +import com.google.gson.Gson; +import com.yeshi.fanli.dao.mybatis.BindingAccountMapper; +import com.yeshi.fanli.dao.mybatis.PayInfoMapper; +import com.yeshi.fanli.dao.mybatis.ScanHistoryMapper; +import com.yeshi.fanli.dao.mybatis.UserInfoMapper; +import com.yeshi.fanli.dao.mybatis.UserShareGoodsHistoryMapper; +import com.yeshi.fanli.dao.mybatis.share.ShareMapper; +import com.yeshi.fanli.entity.bus.user.BindingAccount; +import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; +import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.bus.user.UserInfoModifyRecord.ModifyTypeEnum; +import com.yeshi.fanli.exception.user.UserInfoException; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; +import com.yeshi.fanli.service.inter.order.CommonOrderCountService; +import com.yeshi.fanli.service.inter.user.SpreadUserImgService; +import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService; +import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.integral.IntegralDetailService; +import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; +import com.yeshi.fanli.service.inter.user.tb.TaoBaoUnionAuthRecordService; +import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; +import com.yeshi.fanli.util.account.UserUtil; +import com.yeshi.fanli.util.user.UserLevelUtil; +import com.yeshi.fanli.vo.user.UserInfoVO; + +import net.coobird.thumbnailator.Thumbnails; + +@Service +public class UserInfoServiceImpl implements UserInfoService { + + @Resource(name = "taskExecutor") + private TaskExecutor executor; + + @Resource + private ThreeSaleSerivce threeSaleSerivce; + + @Resource + private UserInfoMapper userInfoMapper; + + @Resource + private BindingAccountMapper bindingAccountMapper; + + @Resource + private PayInfoMapper payInfoMapper; + + @Resource + private UserShareGoodsHistoryMapper userShareGoodsHistoryMapper; + + @Resource + private ScanHistoryMapper scanHistoryMapper; + + @Resource + private HongBaoV2CountService hongBaoV2CountService; + + @Lazy + @Resource + private CommonOrderCountService commonOrderCountService; + + @Resource + private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; + + @Resource + private TaoBaoUnionAuthRecordService taoBaoUnionAuthRecordService; + + @Resource + private SpreadUserImgService spreadUserImgService; + + @Lazy + @Resource + private IntegralDetailService integralDetailService; + + @Lazy + @Resource + private UserInfoModifyRecordService userInfoModifyRecordService; + + @Resource + private RedisManager redisManager; + + @Resource + private SystemConfigService systemConfigService; + + + public UserInfo getUserByLoginTypeAndOpenId(int loginType, String openid, SystemEnum sysetm) { + List<UserInfo> list = null; + UserInfoMapper.DaoQuery daoQuery = new UserInfoMapper.DaoQuery(); + daoQuery.system = sysetm; + daoQuery.count = 1000; + if (loginType == 1) { + daoQuery.openId = openid; + } else { + daoQuery.wxUnionId = openid; + } + list = userInfoMapper.list(daoQuery); + + + if (list != null) + for (int i = 0; i < list.size(); i++) { + if (list.get(i).getState() == UserInfo.STATE_DELETE + || list.get(i).getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) { + list.remove(i); + i--; + } + } + + if (list != null && list.size() > 0) { + return list.get(0); + } + return null; + } + + @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) + public UserInfo addUser(UserInfo form, SystemEnum sysetm) { + try { + LogHelper.test("鐢ㄦ埛鐨勬敞鍐屼俊鎭�:" + new Gson().toJson(form)); + form.setCreatetime(new Date().getTime()); + form.setRank(0); + String openId = form.getLoginType() == Constant.TAOBAO ? form.getOpenid() : form.getWxUnionId(); + UserInfo find = getUserByLoginTypeAndOpenId(form.getLoginType(), openId, sysetm); + if (find != null) { + return find; + } + boolean create = createUser(form, sysetm); + if (!create) { + return null; + } + int loginType = form.getLoginType(); + // 寤虹殑鍋囩敤鎴枫�傘�� + if (loginType == -1) { + return form; + } + + LogHelper.userInfo("娣诲姞鐢ㄦ埛:" + form); + if (form.getLoginType() == Constant.WEIXIN) { + ThreadUtil.run(new Runnable() { + public void run() { + UserInfo temp = userInfoMapper.selectByPrimaryKey(form.getId()); + COSManager cosManager = COSManager.getInstance(); + InputStream inputStream = HttpUtil.getAsInputStream(temp.getPortrait()); + String uploadFile = cosManager.uploadFile(inputStream, FilePathEnum.userPortrait.getPath() + UUID.randomUUID().toString()).getUrl(); + UserInfo updateTemp = new UserInfo(temp.getId()); + updateTemp.setPortrait(uploadFile); + userInfoMapper.updateByPrimaryKeySelective(updateTemp); + } + }); + } + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + return null; + } + return form; + } + + @Transactional + public boolean createUser(UserInfo form, SystemEnum sysetm) { + long maxUid = userInfoMapper.getMaxUid(); + long dd = (long) (Math.random() * 100); + if (dd == 0) { + dd = 1; + } + long bid = maxUid; + long id = bid + dd; + + form.setId(id); + form.setSystem(sysetm); + userInfoMapper.insertSelective(form); + return true; + } + + public UserInfo getUserById(long uid) { + UserInfo user = userInfoMapper.selectByPrimaryKey(uid); + if (user.getState() != null && user.getState() != UserInfo.STATE_NORMAL) + return null; + if (user != null) { + user.setRankIcon(UserUtil.getRankIcon(user.getRank())); + user.setRankNamePicture(UserUtil.getRankNamePicture(user.getRank())); + } + return user; + } + + @Transactional + public void update(UserInfo user) { + userInfoMapper.updateByPrimaryKeySelective(user); + } + + public long getUserCount() { + return userInfoMapper.countAvaiableUser(); + } + + + @Transactional + public void unBindUserInfo(UserInfo user, int type) { + if (type == Constant.TAOBAO) { + user.setOpenid(""); + user.setTbName(""); + user.setTbPic(""); + if (!StringUtil.isNullOrEmpty(user.getWxOpenId())) { + user.setLoginType(Constant.WEIXIN); + user.setNickName(user.getWxName()); + user.setPortrait(user.getWxPic()); + } + } else if (type == Constant.WEIXIN) { + user.setWxName(""); + user.setWxOpenId(""); + user.setWxUnionId(""); + user.setWxPic(""); + if (!StringUtil.isNullOrEmpty(user.getOpenid())) { + user.setLoginType(Constant.TAOBAO); + user.setNickName(user.getTbName()); + user.setPortrait(user.getTbPic()); + } + } + userInfoMapper.updateByPrimaryKeySelective(user); + } + + @Transactional + public void addMoney(UserInfo userInfo, BigDecimal money) { + userInfoMapper.addHongBaoByUid(userInfo.getId(), money); + } + + @Override + public void updateLoginInfo(UserInfo user) { + UserInfo update = new UserInfo(user.getId()); + update.setLastLoginIp(user.getLastLoginIp()); + update.setLastLoginTime(user.getLastLoginTime()); + userInfoMapper.updateByPrimaryKeySelective(update); + } + + @Override + public void cleanPassword(long id) { + userInfoMapper.cleanPassword(id); + } + + @Override + public BigDecimal getNewPeopleHB(Long id) { + return userInfoMapper.getNewPeopleHB(id); + } + + @Override + public UserInfo getUserByIdWithMybatis(long uid) { + UserInfo user = userInfoMapper.selectByPrimaryKey(uid); + return UserUtil.filterForClientUser(user); + } + + + @Override + public long countInfo(Integer userState, String key, Integer keyType, String userRank, Integer days, + String startTime, String endTime, Integer userType, String level, Integer activeCode, SystemEnum system) { + return userInfoMapper.countInfo(userState, key, keyType, userRank, days, startTime, endTime, userType, level, activeCode, system); + } + + @Override + public List<UserInfoVO> queryInfo(long start, int count, Integer userState, String key, Integer keyType, + String userRank, Integer days, String startTime, String endTime, Integer userType, String level, Integer activeCode, SystemEnum system) { + + List<UserInfoVO> userList = userInfoMapper.queryInfo(start, count, userState, key, keyType, userRank, days, + startTime, endTime, userType, level, activeCode, system); + + if (userList == null || userList.size() == 0) { + return null; + } + + for (UserInfoVO userInfoVO : userList) { + Long uid = userInfoVO.getId(); + String rankName = userInfoVO.getRankName(); + if (rankName == null || rankName.trim().length() == 0) { + userInfoVO.setRankName("闈掗摐"); + userInfoVO.setRankPicture("http://img.flqapp.com/resource/rank/rank_picture_new_1.png"); + } + + String userLevel = userInfoVO.getUserLevel(); + if (!StringUtil.isNullOrEmpty(userLevel)) { + userInfoVO.setUserLevel(UserLevelUtil.getByEnumName(userLevel).getName()); + } + // 绱鎻愮幇 + userInfoVO.setTotalExtract(payInfoMapper.sumMoneyByUid(uid)); + + // 绱璁㈠崟鏁伴噺 + userInfoVO.setTotalOrder(commonOrderCountService.countHistoryOrderNum(uid)); + + // 绱鍏戞崲閲戝竵 + userInfoVO.setTotalGoldCoinUsed(Math.abs(integralDetailService.sumUseGoldCoin(uid))); + + // 閭�璇蜂汉 + UserInfo boss = threeSaleSerivce.getBoss(uid); + if (boss == null) { + userInfoVO.setBossName(""); + } else { + userInfoVO.setBossName("閭�璇蜂汉锛�" + boss.getNickName()); + } + + // 寰俊鍙� + String wxId = userInfoVO.getWxId(); + if (StringUtil.isNullOrEmpty(wxId)) { + userInfoVO.setWxId(""); + } else { + userInfoVO.setWxId("寰俊鍙�:" + wxId); + } + } + + return userList; + } + + @Override + public List<UserInfo> listBySystemAndWXUnionId(SystemEnum system, String unionId) { + UserInfoMapper.DaoQuery daoQuery = new UserInfoMapper.DaoQuery(); + daoQuery.system = system; + daoQuery.count = 1000; + daoQuery.wxUnionId = unionId; + + return userInfoMapper.list(daoQuery); + } + + @Override + public List<UserInfo> listBySystemAndTaoBaoOpenId(SystemEnum system, String openId) { + UserInfoMapper.DaoQuery daoQuery = new UserInfoMapper.DaoQuery(); + daoQuery.system = system; + daoQuery.count = 1000; + daoQuery.openId = openId; + return userInfoMapper.list(daoQuery); + } + + @Override + public List<UserInfo> listBySystemAndPhone(SystemEnum system, String phone) { + UserInfoMapper.DaoQuery daoQuery = new UserInfoMapper.DaoQuery(); + daoQuery.system = system; + daoQuery.count = 1000; + daoQuery.phone = phone; + return userInfoMapper.list(daoQuery); + } + + @Override + public SystemEnum getUserSystem(Long uid) { + String value = redisManager.getCommonString(RedisKeyEnum.getRedisKey(RedisKeyEnum.userSystem, uid + "")); + if (!StringUtil.isNullOrEmpty(value)) { + return SystemEnum.valueOf(value); + } + UserInfo user = selectByPKey(uid); + if (user != null) { + //淇濆瓨1澶� + redisManager.cacheCommonString(RedisKeyEnum.getRedisKey(RedisKeyEnum.userSystem, uid + ""), user.getSystem().name(), 60 * 60 * 24); + return user.getSystem(); + } + return null; + } + + + @Override + public long queryCount(Integer userState, String key, Integer keyType, String userRank, Integer days, + String startTime, String endTime, Integer userType, String level, Integer activeCode, SystemEnum system) { + return userInfoMapper.queryCount(userState, key, keyType, userRank, days, startTime, endTime, userType, level, activeCode, system); + } + + @Override + public List<UserInfoVO> query(long start, int count, Integer userState, String key, Integer keyType, + String userRank, Integer days, String startTime, String endTime, Integer orderField, Integer orderMode, + Integer userType, String level, Integer activeCode, SystemEnum system) { + + List<UserInfoVO> userList = userInfoMapper.query(start, count, userState, key, keyType, userRank, days, + startTime, endTime, orderField, orderMode, userType, level, activeCode, system); + + if (userList == null || userList.size() == 0) { + return null; + } + + for (UserInfoVO userInfoVO : userList) { + // 鏁版嵁鍔犲伐澶勭悊 + convertUserInfoVOData(userInfoVO); + } + + return userList; + } + + public void convertUserInfoVOData(UserInfoVO userInfoVO) { + String rankName = userInfoVO.getRankName(); + if (rankName == null || rankName.trim().length() == 0) { + userInfoVO.setRankName("闈掗摐"); + userInfoVO.setRankPicture("http://img.flqapp.com/resource/rank/rank_picture_new_1.png"); + } + + String f_alipayAccount = userInfoVO.getAlipayAccountInvalid(); + if (f_alipayAccount != null && f_alipayAccount.trim().length() > 0) { + userInfoVO.setAlipayAccountState(1); + } + + String f_phone = userInfoVO.getPhoneInvalid(); + if (f_phone != null && f_phone.trim().length() > 0) { + userInfoVO.setPhoneState(1); + } + + String f_taobaoUid = userInfoVO.getTaobaoUidInvalid(); + if (f_taobaoUid != null && f_taobaoUid.trim().length() > 0) { + userInfoVO.setTaobaoUidState(1); + } + + String f_wxUnionId = userInfoVO.getWxUnionIdInvalid(); + if (f_wxUnionId != null && f_wxUnionId.trim().length() > 0) { + userInfoVO.setWxUnionIdState(1); + } + + // 鏈�杩戠櫥褰曟椂闂� + Long lastLoginTime = userInfoVO.getLastLoginTime(); + if (lastLoginTime != null && lastLoginTime == 0) { + userInfoVO.setLastLoginTime(null); + } + + // 鏄剧ず鐢ㄦ埛寰俊 娣樺疂 鑰佺増鏈瓨鍦� + String wxUnionId = userInfoVO.getWxUnionId(); + if (wxUnionId == null || wxUnionId.trim().length() == 0) { + userInfoVO.setWxName(null); + } + + // 鏄惁缁戝畾鏀粯瀹濓紙璐拱 + 鍒嗕韩鏉冮檺锛� + String taoBaoUid = userInfoVO.getTaoBaoUid(); + String tbSpecialId = userInfoVO.getTbSpecialId(); + String tbRelationId = userInfoVO.getTbRelationId(); + if (StringUtil.isNullOrEmpty(taoBaoUid) || StringUtil.isNullOrEmpty(tbSpecialId) + || StringUtil.isNullOrEmpty(tbRelationId)) { + userInfoVO.setTbName(null); + userInfoVO.setTaoBaoUid(null); + } + + Long uid = userInfoVO.getId(); + /* 缁戝畾鏀舵璐﹀彿淇℃伅 */ + List<BindingAccount> account = bindingAccountMapper.selectByUid(uid); + if (account != null && account.size() > 0) { + BindingAccount bindingAccount = account.get(0); + Integer type = bindingAccount.getType(); + if (type != null && type == 1) { + // 鏀粯瀹� + userInfoVO.setAccountAlipay(bindingAccount.getAccount()); + userInfoVO.setAccountName(bindingAccount.getName()); + userInfoVO.setAccountBindId(bindingAccount.getId()); + + } else if (type != null && type == 2) { + // 寰俊 + userInfoVO.setAccountWX(bindingAccount.getAccount()); + userInfoVO.setAccountNameWX(bindingAccount.getName()); + userInfoVO.setAccountBindIdWX(bindingAccount.getId()); + } + } + + // 鏈�杩戜竴娆′笅鍗曟椂闂� + Date lastOrderTime = hongBaoV2CountService.getLastHongBaoTime(uid); + if (lastOrderTime != null && lastOrderTime.getTime() != 0) { + userInfoVO.setLastOrderTime(lastOrderTime.getTime()); + } + + // 浠婃棩鎬昏鍗� + long todayOrder = hongBaoV2CountService.countValidNumberByUid(uid, 1); + userInfoVO.setTodayOrder(todayOrder); + + // 鏈鍙栫孩鍖� 寰呭叆璐﹂噾棰� + BigDecimal unaccountedMoney = hongBaoV2CountService.countWillGetMoneyByUid(uid); + if (unaccountedMoney == null) { + unaccountedMoney = new BigDecimal(0); + } + userInfoVO.setUnaccountedMoney(unaccountedMoney.toString()); + + // 鍘嗗彶鎬绘敹鐩� + BigDecimal totalMoneyHistory = hongBaoV2CountService.countMoneyByUidAndState(uid, 3); + if (totalMoneyHistory == null) { + totalMoneyHistory = new BigDecimal(0); + } + userInfoVO.setTotalMoneyHistory(totalMoneyHistory.toString()); + + // 鏀粯瀹濊处鍙� 绱杞处鎬婚噾棰� + double totalMoney = payInfoMapper.sumMoneyByUid(uid); + userInfoVO.setTotalMoney(totalMoney); + + // 绱鎻愮幇 (鏆傛湭璁″叆寰俊) + userInfoVO.setTotalExtract(totalMoney); + + // 缁熻鍒嗕韩涓暟 + long countUserShares = userShareGoodsHistoryMapper.countUserShares(uid); + userInfoVO.setCountUserShares(countUserShares); + + // 缁熻娴忚瓒宠抗 + long countScanHistory = scanHistoryMapper.countUserScanHistory(uid); + userInfoVO.setCountScanHistory(countScanHistory); + + // 涓�搴﹂槦鍛樻暟閲� + //int firstTeamCount = shareMapper.myFirstTeamCount(uid + ""); + //userInfoVO.setCountLevelOne(firstTeamCount); + + // 浜屽害闃熷憳鏁伴噺 + //int secondTeamCount = shareMapper.mySecondTeamCount(uid + ""); + //userInfoVO.setCountLevelTwo(secondTeamCount); + + String userLevel = userInfoVO.getUserLevel(); + if (!StringUtil.isNullOrEmpty(userLevel)) { + userInfoVO.setUserLevel(UserLevelUtil.getByEnumName(userLevel).getName()); + } + + String inviteCode = userInfoVO.getInviteCode(); + if (!StringUtil.isNullOrEmpty(inviteCode)) { + userInfoVO.setInviteCode("宸叉縺娲�"); + } else { + userInfoVO.setInviteCode("鏈縺娲�"); + } + } + + @Override + public double querySumMoney(String key, Integer userType, Integer days, String startTime, String endTime) { + return userInfoMapper.querySumMoney(key, userType, days, startTime, endTime); + } + + @Override + public UserInfo selectByPKey(Long id) { + return userInfoMapper.selectByPrimaryKey(id); + } + + @Override + public int updateByPrimaryKeySelective(UserInfo record) { + return userInfoMapper.updateByPrimaryKeySelective(record); + } + + @Override + @Transactional + public void deleteBindInfo(UserInfo user, int type) { + if (type == 1) { + user.setOpenid(""); + user.setTbName(""); + user.setTbPic(""); + if (!StringUtil.isNullOrEmpty(user.getWxOpenId())) { + user.setLoginType(Constant.WEIXIN); + user.setNickName(user.getWxName()); + user.setPortrait(user.getWxPic()); + } + } else if (type == 2) { + user.setWxName(""); + user.setWxOpenId(""); + user.setWxUnionId(""); + user.setWxPic(""); + if (!StringUtil.isNullOrEmpty(user.getOpenid())) { + user.setLoginType(Constant.TAOBAO); + user.setNickName(user.getTbName()); + user.setPortrait(user.getTbPic()); + } + } else if (type == 3) { + user.setPhone(""); + } + + userInfoMapper.updateByPrimaryKeySelective(user); + } + + @Override + public List<Long> longTimeNoLogin(int daysNum, List<Long> list) { + return userInfoMapper.longTimeNoLogin(daysNum, list); + } + + /** + * 鏍规嵁鐢佃瘽鍙风爜銆侀個璇风爜鑾峰彇閭�璇风敤鎴� + * + * @param inviteCode + * @return + */ + @Override + public UserInfo getUserInfoByInviteCode(String inviteCode) { + return userInfoMapper.getUserInfoByInviteCode(inviteCode); + } + + @Override + public UserInfo getEffectiveUserInfoByPhone(String phone, SystemEnum system) { + + UserInfoMapper.DaoQuery daoQuery = new UserInfoMapper.DaoQuery(); + daoQuery.system = system; + daoQuery.count = 1000; + daoQuery.phone = phone; + daoQuery.state = UserInfo.STATE_NORMAL; + List<UserInfo> userInfoList = userInfoMapper.list(daoQuery); + + return userInfoList != null && userInfoList.size() > 0 ? userInfoList.get(0) : null; + } + + @Override + public UserInfo getEffectiveUserInfoByWXUnionId(String unionId, SystemEnum system) { + UserInfoMapper.DaoQuery daoQuery = new UserInfoMapper.DaoQuery(); + daoQuery.system = system; + daoQuery.count = 1000; + daoQuery.wxUnionId = unionId; + daoQuery.state = UserInfo.STATE_NORMAL; + List<UserInfo> userInfoList = userInfoMapper.list(daoQuery); + + return userInfoList != null && userInfoList.size() > 0 ? userInfoList.get(0) : null; + + } + + @Override + public UserInfo getEffectiveUserInfoByQQOpenId(String opneId, SystemEnum sysetm) { + UserInfoMapper.DaoQuery daoQuery = new UserInfoMapper.DaoQuery(); + daoQuery.system = sysetm; + daoQuery.count = 1000; + daoQuery.qqOpenId = opneId; + daoQuery.state = UserInfo.STATE_NORMAL; + List<UserInfo> userInfoList = userInfoMapper.list(daoQuery); + return userInfoList != null && userInfoList.size() > 0 ? userInfoList.get(0) : null; + } + + @Override + public UserInfo getEffectiveUserInfoByOpenId(String openId, SystemEnum sysetm) { + UserInfoMapper.DaoQuery daoQuery = new UserInfoMapper.DaoQuery(); + daoQuery.system = sysetm; + daoQuery.count = 1000; + daoQuery.openId = openId; + daoQuery.state = UserInfo.STATE_NORMAL; + List<UserInfo> userInfoList = userInfoMapper.list(daoQuery); + return userInfoList != null && userInfoList.size() > 0 ? userInfoList.get(0) : null; + } + + @Override + public UserInfo getUserInfo(Long uid) throws UserInfoException { + if (uid == null) { + throw new UserInfoException(1, "璇锋眰鍙傛暟涓虹┖"); + } + + UserInfo userInfo = userInfoMapper.selectByPrimaryKey(uid); + if (userInfo == null) { + throw new UserInfoException(1, "鐢ㄦ埛涓嶅瓨鍦�"); + } + + if (userInfo.getState() == UserInfo.STATE_FORBIDDEN) { + throw new UserInfoException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC); + } + + if (userInfo.getState() == UserInfo.STATE_DELETE || userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) { + throw new UserInfoException(Constant.CODE_FORBIDDEN_USER, "甯愭埛宸茶鍒犻櫎锛岃閲嶆柊鐧诲綍"); + } + + // 娣樺疂鏄电О 缁勭粐 + boolean clearOpenid = true; + UserExtraTaoBaoInfo extraTaoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid); + if (extraTaoBaoInfo != null) { + String specialId = extraTaoBaoInfo.getSpecialId(); + String relationId = extraTaoBaoInfo.getRelationId(); + String taoBaoNickName = extraTaoBaoInfo.getTaoBaoNickName(); + + if (!StringUtil.isNullOrEmpty(specialId) && !StringUtil.isNullOrEmpty(relationId)) { + clearOpenid = false; + userInfo.setOpenid(extraTaoBaoInfo.getTaoBaoUid()); + + if (!StringUtil.isNullOrEmpty(taoBaoNickName)) { + userInfo.setTbName(taoBaoNickName); + } else { + String taoBaoUserNick = taoBaoUnionAuthRecordService.getTaoBaoUserNick(uid); + if (!StringUtil.isNullOrEmpty(taoBaoUserNick)) { + userInfo.setTbName(taoBaoUserNick); + } + } + } + } + + if (clearOpenid) { + userInfo.setOpenid(null); + } + + return userInfo; + } + + @Override + public BigDecimal getBalance(Long uid) { + UserInfo user = userInfoMapper.selectByPrimaryKey(uid); + if (user != null) + return user.getMyHongBao(); + return null; + } + + @Override + public void uploadPortrait(MultipartFile file, Long uid) throws UserInfoException, IOException { + + UserInfo userInfo = userInfoMapper.selectByPrimaryKey(uid); + if (userInfo == null) { + throw new UserInfoException(1, "鐢ㄦ埛涓嶅瓨鍦�"); + } + + // 璋锋瓕鍘嬬缉鍥剧墖 + String targetPath = FileUtil.getCacheDir() + "/uploadPortrait_" + uid + "_" + System.currentTimeMillis() + + ".jpg"; + Thumbnails.of(file.getInputStream()).size(200, 200).toFile(targetPath); + + // 鎵ц涓婁紶 + String filePath = FilePathEnum.userPortrait.getPath() + UUID.randomUUID().toString().replace("-", "") + ".jpg"; + String fileLink = COSManager.getInstance().uploadFile(new File(targetPath), filePath).getUrl(); + + // 鍒犻櫎鏈湴鍥剧墖 + if (new File(targetPath).exists()) { + new File(targetPath).delete(); + } + + // 鍘熷ご鍍� + String portrait = userInfo.getPortrait(); + + // 鏇存柊淇℃伅 + userInfo.setPortrait(fileLink); + userInfoMapper.updateByPrimaryKeySelective(userInfo); + + // 鍒犻櫎鍘熷ご鍍� + if (!StringUtil.isNullOrEmpty(portrait)) { + COSManager.getInstance().deleteFile(portrait); + } + + userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.portrait, fileLink); + + executor.execute(new Runnable() { + @Override + public void run() { + try { + // 鍒犻櫎鍒嗕韩澶村儚淇℃伅 + spreadUserImgService.deleteImgUrl(uid); + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + }); + } + + @Override + public void saveUserInfo(String nickName, Long uid) throws UserInfoException { + UserInfo userInfo = userInfoMapper.selectByPrimaryKey(uid); + if (userInfo == null) { + throw new UserInfoException(1, "鐢ㄦ埛涓嶅瓨鍦�"); + } + + userInfo.setNickName(nickName); + userInfoMapper.updateByPrimaryKeySelective(userInfo); + } + + @Override + public List<UserInfo> getAutoExtractUser(int start, int count, BigDecimal minSurplus, String beganDate, + String endDate) { + return userInfoMapper.getAutoExtractUser(start, count, minSurplus, beganDate, endDate); + } + + @Override + public List<UserInfo> listByType(int type, int page, int count) { + return userInfoMapper.listByType(type, (page - 1) * count, count); + } + + @Override + public long countByType(int type) { + return userInfoMapper.countByType(type); + } + + @Override + public List<UserInfo> getAutoExtractUserTo1212(int start, int count) { + return userInfoMapper.getAutoExtractUserTo1212(start, count); + } + + @Override + public UserInfo selectAvailableByPrimaryKey(Long uid) { + return userInfoMapper.selectAvailableByPrimaryKey(uid); + } + + + @Override + public String getDefaultNickName(SystemEnum system, Long uid) { + return systemConfigService.getValueCache(SystemConfigKeyEnum.defaultNickNamePrefix, system) + uid; + } + + @Override + public String getDefaultNickName(Long uid) { + SystemEnum system = getUserSystem(uid); + return getDefaultNickName(system, uid); + } + + @Override + public String getDefaultPortrait(SystemEnum system) { + return systemConfigService.getValueCache(SystemConfigKeyEnum.defaultPortrait, system); + } + + @Override + public String getDefaultPortrait(Long uid) { + SystemEnum system = getUserSystem(uid); + return getDefaultPortrait(system); + } + + +} -- Gitblit v1.8.0