Skip to content

Commit 62ad474

Browse files
committed
QQ登录功能大致完成
1 parent e50b880 commit 62ad474

49 files changed

Lines changed: 100 additions & 109 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

TimeMachine-core/src/main/java/com/xiaomo/timeMachine/core/api/OauthApi.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.xiaomo.timeMachine.core.api;
22

33
import com.alibaba.fastjson.JSONObject;
4+
import com.xiaomo.timeMachine.core.constant.OauthType;
45
import com.xiaomo.timeMachine.core.constant.QQUserField;
56
import com.xiaomo.timeMachine.core.model.QQUser;
6-
import com.xiaomo.timeMachine.core.util.IDUtil;
77

88
import java.util.Date;
99

@@ -23,6 +23,12 @@
2323
*/
2424
public class OauthApi {
2525

26+
/**
27+
* 将获取到的json数据转成用户实体类
28+
*
29+
* @param o json
30+
* @return QQUser
31+
*/
2632
public static QQUser getQQUser(JSONObject o) {
2733
QQUser user = new QQUser();
2834
String url = o.getString(QQUserField.figureurl);
@@ -31,14 +37,14 @@ public static QQUser getQQUser(JSONObject o) {
3137
String gender = o.getString(QQUserField.gender);
3238
String year = o.getString(QQUserField.year);
3339
String address = o.getString(QQUserField.province) + " " + o.getString(QQUserField.city);
34-
user.setCreate_time(new Date());
35-
user.setHead_photo(url);
36-
user.setNick_name(nickname);
40+
user.setCreateTime(new Date());
41+
user.setHeadPhoto(url);
42+
user.setNickName(nickname);
3743
user.setGender(gender);
3844
user.setYear(year);
39-
user.setOpen_id(openId);
45+
user.setOpenId(openId);
46+
user.setType(OauthType.qq);
4047
user.setAddress(address);
41-
user.setUser_id(IDUtil.getId());
4248
return user;
4349
}
4450
}

TimeMachine-core/src/main/java/com/xiaomo/timeMachine/core/constant/ConstWap.java renamed to TimeMachine-core/src/main/java/com/xiaomo/timeMachine/core/constant/OauthType.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,19 @@
1010
* @github: https://github.com/qq83387856
1111
* @email: hupengbest@163.com
1212
* @QQ_NO: 83387856
13-
* @Date: 11:19 2016/1/6
14-
* @Description: oauth常量
13+
* @Date: 14:20 2016/1/6
14+
* @Description: todo
1515
* @Copyright(©) 2015 by xiaomo.
1616
*/
17-
public interface ConstWap {
18-
String RETURN_URL = "http://www.hpbest.cn/api/qq/callback";
17+
public enum OauthType {
18+
19+
qq,
20+
weibo,
21+
weixin,
22+
github,
23+
baidu,
24+
gitosc,
25+
renren,
26+
douban
1927

2028
}

TimeMachine-core/src/main/java/com/xiaomo/timeMachine/core/constant/QQUserField.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
public interface QQUserField {
1818

19-
String figureurl = "figureurl";
19+
String figureurl = "figureurl_qq_2";
2020

2121
String nickname = "nickname";
2222

TimeMachine-core/src/main/java/com/xiaomo/timeMachine/core/dao/oauth/QQUserDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,6 @@
2121
@Repository
2222
public interface QQUserDao extends JpaRepository<QQUser, Long> {
2323

24+
QQUser findByOpenId(String openId);
25+
2426
}
Lines changed: 37 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package com.xiaomo.timeMachine.core.model;
22

3+
import com.xiaomo.timeMachine.core.constant.OauthType;
34
import com.xiaomo.timeMachine.core.model.base.GenerateIdEntity;
45

56
import javax.persistence.Entity;
7+
import javax.persistence.EnumType;
8+
import javax.persistence.Enumerated;
69
import javax.persistence.Table;
710
import java.util.Date;
811

@@ -24,17 +27,13 @@
2427
@Table(name = "qq_login")
2528
public class QQUser extends GenerateIdEntity {
2629

27-
private String open_id; // open_id
30+
private String openId; // open_id
2831

29-
private Long user_id; // user_id
32+
private Date createTime; // create_time
3033

31-
private Date create_time; // create_time
34+
private String nickName; // Nickname
3235

33-
private String nick_name; // Nickname
34-
35-
private String head_photo; // 头像url
36-
37-
private String status; // 状态 默认0,1校验通过
36+
private String headPhoto; // 头像url
3837

3938
private String address; //省+市
4039

@@ -46,53 +45,48 @@ public class QQUser extends GenerateIdEntity {
4645

4746
private String gender;
4847

49-
public String getOpen_id() {
50-
return open_id;
51-
}
48+
@Enumerated(EnumType.STRING)
49+
private OauthType type;
5250

53-
public void setOpen_id(String open_id) {
54-
this.open_id = open_id;
51+
public String getOpenId() {
52+
return openId;
5553
}
5654

57-
public Long getUser_id() {
58-
return user_id;
55+
public void setOpenId(String openId) {
56+
this.openId = openId;
5957
}
6058

61-
public void setUser_id(Long user_id) {
62-
this.user_id = user_id;
63-
}
6459

65-
public Date getCreate_time() {
66-
return create_time;
60+
public Date getCreateTime() {
61+
return createTime;
6762
}
6863

69-
public void setCreate_time(Date create_time) {
70-
this.create_time = create_time;
64+
public void setCreateTime(Date createTime) {
65+
this.createTime = createTime;
7166
}
7267

73-
public String getNick_name() {
74-
return nick_name;
68+
public String getNickName() {
69+
return nickName;
7570
}
7671

77-
public void setNick_name(String nick_name) {
78-
this.nick_name = nick_name;
72+
public void setNickName(String nickName) {
73+
this.nickName = nickName;
7974
}
8075

81-
public String getHead_photo() {
82-
return head_photo;
76+
public String getHeadPhoto() {
77+
return headPhoto;
8378
}
8479

85-
public void setHead_photo(String head_photo) {
86-
this.head_photo = head_photo;
80+
public void setHeadPhoto(String headPhoto) {
81+
this.headPhoto = headPhoto;
8782
}
8883

89-
90-
public String getStatus() {
91-
return status;
84+
public String getAddress() {
85+
return address;
9286
}
9387

94-
public void setStatus(String status) {
95-
this.status = status;
88+
public void setAddress(String address) {
89+
this.address = address;
9690
}
9791

9892
public int getTel() {
@@ -111,14 +105,6 @@ public void setE_mail(String e_mail) {
111105
this.e_mail = e_mail;
112106
}
113107

114-
public String getAddress() {
115-
return address;
116-
}
117-
118-
public void setAddress(String address) {
119-
this.address = address;
120-
}
121-
122108
public String getYear() {
123109
return year;
124110
}
@@ -134,4 +120,12 @@ public String getGender() {
134120
public void setGender(String gender) {
135121
this.gender = gender;
136122
}
123+
124+
public OauthType getType() {
125+
return type;
126+
}
127+
128+
public void setType(OauthType type) {
129+
this.type = type;
130+
}
137131
}

TimeMachine-core/src/main/java/com/xiaomo/timeMachine/core/service/QQUserService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,6 @@
2727
public interface QQUserService {
2828

2929
boolean saveUserData(QQUser userInfo);
30+
31+
QQUser findByOpenId(String openId);
3032
}

TimeMachine-core/src/main/java/com/xiaomo/timeMachine/core/service/impl/UserServiceImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,9 @@ public boolean saveUserData(QQUser userInfo) {
4343
return false;
4444
}
4545
}
46+
47+
@Override
48+
public QQUser findByOpenId(String openId) {
49+
return qqUserDao.findByOpenId(openId);
50+
}
4651
}

TimeMachine-web/src/main/java/com/xiaomo/timeMachine/web/controller/openLogin/AuthLoginController.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,19 @@
22

33
import com.alibaba.fastjson.JSONObject;
44
import com.xiaomo.timeMachine.core.api.OauthApi;
5+
import com.xiaomo.timeMachine.core.constant.QQUserField;
56
import com.xiaomo.timeMachine.core.model.QQUser;
67
import com.xiaomo.timeMachine.core.oauth.OauthQQ;
78
import com.xiaomo.timeMachine.core.service.QQUserService;
89
import com.xiaomo.timeMachine.core.util.TokenUtil;
910
import org.slf4j.Logger;
1011
import org.slf4j.LoggerFactory;
1112
import org.springframework.beans.factory.annotation.Autowired;
13+
import org.springframework.ui.Model;
1214
import org.springframework.web.bind.annotation.RequestMapping;
1315
import org.springframework.web.bind.annotation.RequestMethod;
1416
import org.springframework.web.bind.annotation.RestController;
17+
import org.springframework.web.servlet.ModelAndView;
1518

1619
import javax.servlet.http.HttpServletResponse;
1720
import java.io.IOException;
@@ -60,21 +63,29 @@ public void login(HttpServletResponse response) throws IOException {
6063
* @return String url
6164
*/
6265
@RequestMapping(value = "/qq/callback", method = RequestMethod.GET)
63-
public void callbackQQ(HttpServletResponse response, String code) throws IOException {
66+
public ModelAndView callbackQQ(HttpServletResponse response, Model model, String code) throws IOException {
6467
response.setContentType("text/html; charset=utf-8");
65-
JSONObject userInfo = null;
68+
JSONObject userInfo;
6669
try {
6770
userInfo = OauthQQ.getInstance().getUserInfoByCode(code);
68-
QQUser qQuser = OauthApi.getQQUser(userInfo);
69-
boolean saved = qqUserService.saveUserData(qQuser);
70-
if (saved) {
71-
LOGGER.info("新用户[{}]登录成功且己存储");
71+
QQUser qQuser = OauthApi.getQQUser(userInfo); //json to entity
72+
QQUser byOpenId = qqUserService.findByOpenId(userInfo.getString(QQUserField.openid));
73+
if (byOpenId == null) { //新用户
74+
boolean saved = qqUserService.saveUserData(qQuser);
75+
if (saved) {
76+
LOGGER.info("新用户[{}]登录成功且己存储", qQuser.getNickName());
77+
} else {
78+
LOGGER.error("数据库出现异常");
79+
}
80+
model.addAttribute("user", qQuser); //从QQ新取来的
7281
} else {
73-
LOGGER.error("数据库出现异常");
82+
LOGGER.info("老用户[{}]成功登录", qQuser.getNickName());
83+
model.addAttribute("user", byOpenId); //从数据库取来的
7484
}
7585
} catch (Exception e) {
76-
LOGGER.error("OauthBaidu error" + e.getMessage());
86+
LOGGER.error("error " + e.getMessage());
7787
}
88+
return new ModelAndView("index");
7889
}
7990

8091
}

TimeMachine-web/src/main/resources/config/application.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ spring.jpa.show-sql=false
2222
spring.velocity.cache=false
2323
spring.velocity.dateToolAttribute=MathTool
2424
spring.velocity.properties.velocimacro.library=VM_global_library.vm
25-
spring.velocity.toolbox-config-location=toolbox.xml
25+
#spring.velocity.toolbox-config-location=toolbox.xml
2626
spring.velocity.enabled=true
2727
spring.velocity.suffix=.vm
2828
spring.velocity.charset=utf-8

TimeMachine-web/src/main/resources/public/framework/bootstrap/css/bootstrap.css renamed to TimeMachine-web/src/main/resources/framework/bootstrap/css/bootstrap.css

File renamed without changes.

0 commit comments

Comments
 (0)