From e8e342cd6c1334f1b8f71d24baa3157637a9ac43 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 04 二月 2021 19:33:26 +0800
Subject: [PATCH] 完善PPTV

---
 src/main/java/com/yeshi/buwan/service/imp/LoginUserServiceImpl.java |   92 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 75 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/service/imp/LoginUserServiceImpl.java b/src/main/java/com/yeshi/buwan/service/imp/LoginUserServiceImpl.java
index 770ef24..8a19755 100644
--- a/src/main/java/com/yeshi/buwan/service/imp/LoginUserServiceImpl.java
+++ b/src/main/java/com/yeshi/buwan/service/imp/LoginUserServiceImpl.java
@@ -5,6 +5,7 @@
 import com.yeshi.buwan.domain.user.LoginUser;
 import com.yeshi.buwan.domain.user.LoginUserExtra;
 import com.yeshi.buwan.exception.LoginUserException;
+import com.yeshi.buwan.pptv.PPTVUtil;
 import com.yeshi.buwan.service.inter.LoginUserService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -75,7 +76,6 @@
         loginUserDao.update(user);
     }
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
     public void bindQQ(String loginUid, String openId, String nickName, String portrait) throws LoginUserException {
 
@@ -85,28 +85,30 @@
         }
 
         LoginUser other = getLoginUserByQQOpenId(user.getSystemId(), openId);
-        if (other != null) {
+        if (other != null && !other.getId().equalsIgnoreCase(loginUid)) {
             throw new LoginUserException("QQ宸茶鍏朵粬璐︽埛缁戝畾");
         }
+        LoginUser update = new LoginUser();
+        update.setId(loginUid);
+        update.setQqOpenId(openId);
+        loginUserDao.updateSelective(update);
 
-        user.setQqOpenId(openId);
-        loginUserDao.update(user);
-
-        LoginUserExtra extra = new LoginUserExtra();
-        extra.setId(loginUid);
+        LoginUserExtra extra = loginUserExtraDao.get(loginUid);
+        if (extra == null) {
+            extra = new LoginUserExtra();
+            extra.setId(loginUid);
+        }
         extra.setQqNickName(nickName);
         extra.setQqOpenId(openId);
         extra.setQqPortrait(portrait);
-        if (loginUserExtraDao.get(loginUid) == null) {
+        if (extra.getId() == null) {
             initExtra(extra);
         } else {
-            loginUserExtraDao.updateSelective(extra);
+            loginUserExtraDao.save(extra);
         }
-
 
     }
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
     public void bindWX(String loginUid, WeiXinUser weiXinUser) throws LoginUserException {
         LoginUser user = getLoginUser(loginUid);
@@ -115,15 +117,20 @@
         }
 
         LoginUser other = getLoginUserByWxUnionId(user.getSystemId(), weiXinUser.getUnionid());
-        if (other != null) {
+        if (other != null && !other.getId().equalsIgnoreCase(loginUid)) {
             throw new LoginUserException("寰俊宸茶鍏朵粬璐︽埛缁戝畾");
         }
-        user.setWxOpenId(weiXinUser.getOpenid());
-        user.setWxUnionId(weiXinUser.getUnionid());
-        loginUserDao.update(user);
+        LoginUser update = new LoginUser();
+        update.setId(loginUid);
+        update.setWxOpenId(weiXinUser.getOpenid());
+        update.setWxUnionId(weiXinUser.getUnionid());
+        loginUserDao.updateSelective(update);
 
-        LoginUserExtra extra = new LoginUserExtra();
-        extra.setId(loginUid);
+        LoginUserExtra extra = null;//loginUserExtraDao.get(loginUid);
+        if (extra == null) {
+            extra = new LoginUserExtra();
+            extra.setId(loginUid);
+        }
         extra.setWxNickName(weiXinUser.getNickname());
         extra.setWxOpenId(weiXinUser.getOpenid());
         extra.setWxUnionId(weiXinUser.getUnionid());
@@ -132,9 +139,60 @@
         if (loginUserExtraDao.get(loginUid) == null) {
             initExtra(extra);
         } else {
+            extra.setUpdateTime(new Date());
             loginUserExtraDao.updateSelective(extra);
         }
 
+        System.out.println("12213");
 
     }
+
+    @Override
+    public LoginUserExtra getExtra(String uid) {
+        return loginUserExtraDao.get(uid);
+    }
+
+    @Override
+    public LoginUserExtra initExtra(String uid) {
+        LoginUser user = getLoginUser(uid);
+        if (user == null)
+            return null;
+        LoginUserExtra extra = new LoginUserExtra();
+        extra.setId(uid);
+        extra.setCreateTime(new Date());
+        //涔嬪墠鐨勭敤鎴烽偖绠辩櫥褰�
+        if (user.getLoginType() == LoginUser.LOGIN_TYPE_QQ) {
+            user.setQqOpenId(user.getOpenid());
+            extra.setQqOpenId(user.getOpenid());
+            extra.setQqPortrait(user.getPortrait());
+        } else if (user.getLoginType() == LoginUser.LOGIN_TYPE_EMAIL) {
+            user.setEmail(user.getOpenid());
+            extra.setEmail(user.getOpenid());
+        } else if (user.getLoginType() == LoginUser.LOGIN_TYPE_WX) {
+            user.setWxOpenId(user.getOpenid());
+            extra.setWxOpenId(user.getOpenid());
+            extra.setWxPortrait(user.getPortrait());
+        }
+
+        extra.setBirthday(user.getBirthday());
+        extra.setSex(user.getSex());
+        extra.setSign(user.getSign());
+        extra.setIpinfo(user.getIpinfo());
+        extra.setDevice(user.getDevice());
+        extra.setPptvUid(PPTVUtil.getPPTVUid(uid));
+        //TODO 鍒濆鍖栭檮鍔犱俊鎭�
+        loginUserDao.update(user);
+        loginUserExtraDao.save(extra);
+        return extra;
+    }
+
+    @Override
+    public void updateSelectiveByPrimaryKey(LoginUser loginUser) {
+        loginUserDao.updateSelective(loginUser);
+    }
+
+    @Override
+    public void updateSelectiveByPrimaryKey(LoginUserExtra extra) {
+        loginUserExtraDao.updateSelective(extra);
+    }
 }

--
Gitblit v1.8.0