From 5196a1d1e00ced009a2d4e8ea0aa5f3bb7cefe33 Mon Sep 17 00:00:00 2001
From: EricsHu <hrr145632>
Date: 星期一, 10 四月 2023 15:56:37 +0800
Subject: [PATCH] 小程序登陆绑定
---
src/main/java/com/qxueyou/scc/stucontroller/HomePageController.java | 2
src/main/java/com/qxueyou/scc/sys/action/LoginController.java | 49 +++++++++---
src/main/java/com/qxueyou/scc/wx/utils/Code2Session.java | 32 ++++++++
src/main/java/com/qxueyou/scc/user/model/User.java | 14 +++
src/main/java/com/qxueyou/scc/base/dao/BaseDAO.java | 3
src/main/java/com/qxueyou/scc/base/model/Result.java | 4 +
src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java | 2
src/main/java/com/qxueyou/scc/wx/service/IWechatService.java | 5 +
src/main/java/com/qxueyou/scc/wx/utils/HttpClientUtil.java | 34 ++++++++
src/main/java/com/qxueyou/scc/teach/student/model/StuStudent.java | 2
src/main/java/com/qxueyou/scc/wx/service/impl/WechatService.java | 47 ++++++++++-
src/main/java/com/qxueyou/scc/controller/VideoLiveController.java | 4
src/main/java/com/qxueyou/scc/controller/ResController.java | 1
13 files changed, 177 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/qxueyou/scc/base/dao/BaseDAO.java b/src/main/java/com/qxueyou/scc/base/dao/BaseDAO.java
index 5dec6f7..13f67a8 100644
--- a/src/main/java/com/qxueyou/scc/base/dao/BaseDAO.java
+++ b/src/main/java/com/qxueyou/scc/base/dao/BaseDAO.java
@@ -7,6 +7,7 @@
package com.qxueyou.scc.base.dao;
+import java.beans.Transient;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.ArrayList;
@@ -29,6 +30,7 @@
import com.qxueyou.scc.base.model.Pager;
import com.qxueyou.scc.base.model.Result;
+import org.springframework.transaction.annotation.Transactional;
/**
* 鍩虹DAO绫�,鑷姩娉ㄥ叆sessionFactory
@@ -84,6 +86,7 @@
/**
* 淇濆瓨鎴栨洿鏂板璞�
*/
+ @Transactional(readOnly = false)
public void saveOrUpdate(Object obj) {
this.getHibernateTemplate().saveOrUpdate(obj);
}
diff --git a/src/main/java/com/qxueyou/scc/base/model/Result.java b/src/main/java/com/qxueyou/scc/base/model/Result.java
index cbb9343..d29db52 100644
--- a/src/main/java/com/qxueyou/scc/base/model/Result.java
+++ b/src/main/java/com/qxueyou/scc/base/model/Result.java
@@ -83,6 +83,10 @@
this.success = success;
}
+ public Boolean getSuccess() {
+ return success;
+ }
+
public String getMsg() {
return msg;
}
diff --git a/src/main/java/com/qxueyou/scc/controller/ResController.java b/src/main/java/com/qxueyou/scc/controller/ResController.java
index 2fc0d31..4f3d8b6 100644
--- a/src/main/java/com/qxueyou/scc/controller/ResController.java
+++ b/src/main/java/com/qxueyou/scc/controller/ResController.java
@@ -25,6 +25,7 @@
* @author chenjunliang
*/
@Api(tags = "璧勬簮绠$悊鎺ュ彛")
+@CrossOrigin
@RestController
@RequestMapping(value = "/teach/res")
public class ResController {
diff --git a/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java b/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
index 7388141..33e20fe 100644
--- a/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
+++ b/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
@@ -128,7 +128,7 @@
String startTime1 = simpleDateFormat.format(new Date(startTime));
String endTime1 = simpleDateFormat.format(new Date(endTime));
//璋冪敤绗笁鏂圭洿鎾帴鍙�
- String s = client.courseAdd(name, "16624662432", startTime1, endTime1, ClientUtils.getUserName(), "222", options);
+ String s = client.courseAdd(name, ClientUtils.getUserId(), startTime1, endTime1, ClientUtils.getUserName(), "222", options);
//json杞崲鎷垮埌courseId
JSONObject jsonObject = JSON.parseObject(s);
JSONObject data = jsonObject.getJSONObject("data");
@@ -149,7 +149,7 @@
HashMap<Object,Object> options = new HashMap<Object, Object>();
options.put("ssl", false);
- String res = client.courseLogin("16624662432", MTCloud.ACCOUNT_TYPE_THIRD, options);
+ String res = client.courseLogin(ClientUtils.getUserId(),MTCloud.ACCOUNT_TYPE_THIRD, options);
System.out.println(res);
JSONObject jsonObject = JSON.parseObject(res);
JSONObject data = jsonObject.getJSONObject("data");
diff --git a/src/main/java/com/qxueyou/scc/stucontroller/HomePageController.java b/src/main/java/com/qxueyou/scc/stucontroller/HomePageController.java
index 1c90167..40dae86 100644
--- a/src/main/java/com/qxueyou/scc/stucontroller/HomePageController.java
+++ b/src/main/java/com/qxueyou/scc/stucontroller/HomePageController.java
@@ -5,6 +5,7 @@
import com.qxueyou.scc.base.util.ClientUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -31,6 +32,7 @@
*
*/
@RestController
+@CrossOrigin
@RequestMapping(value = "/stu/homepage")
public class HomePageController {
diff --git a/src/main/java/com/qxueyou/scc/sys/action/LoginController.java b/src/main/java/com/qxueyou/scc/sys/action/LoginController.java
index 555edcc..81ed905 100644
--- a/src/main/java/com/qxueyou/scc/sys/action/LoginController.java
+++ b/src/main/java/com/qxueyou/scc/sys/action/LoginController.java
@@ -13,6 +13,7 @@
import com.alibaba.fastjson.JSONObject;
import com.qxueyou.scc.base.util.*;
import com.qxueyou.scc.wx.service.IWechatService;
+import freemarker.template.utility.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.kafka.common.network.LoginType;
import org.apache.tomcat.util.net.openssl.ciphers.Authentication;
@@ -126,22 +127,46 @@
* @param uid
* @throws IOException
*/
- @PostMapping("/auth/wechat/login")
+
+ @PostMapping("/wxlogin")
@ApiOperation("寰俊鐧诲綍")
+ @ResponseBody
public Result wechatLogin(String code,String number) {
JSONObject sessionKeyOrOpenId = wechatService.getSessionKeyOrOpenId(code);
- String phone = wechatService.getNumber(number);
- String hql = "from User where deleteFlag is false and mobilePhone = ? ";
- List<Object> params = CollectionUtils.newList(phone);
- User user = commonDAO.findUnique(hql,params, User.class);
- if(user==null){
- User user1=new User();
- user1.setMobilePhone(phone);
- commonDAO.save(user1);
+ JSONObject gettoken = wechatService.gettoken(appId, secret);
+ Result phone = wechatService.getNumber(gettoken.get("access_token").toString(), number);
+ if(phone.getSuccess()){
+ String hql = "from User where deleteFlag is false and mobilePhone = ? ";
+ System.out.println(phone.getData());
+ List<Object> params = CollectionUtils.newList(phone.getData());
+ User user = commonDAO.findUnique(hql,params, User.class);
+ if(user==null){
+ //鏂板鐢ㄦ埛
+ User user1=new User();
+ user1.setMobilePhone(phone.getData().toString());
+ user1.setOpenId(sessionKeyOrOpenId.get("openid").toString());
+ commonDAO.save(user1);
+ //鏂板鍏宠仈瀛﹀憳
+ String addUserSql = "from User where deleteFlag is false and mobilePhone = ? ";
+ List<Object> newParams = CollectionUtils.newList(phone.getData());
+ User newUser = commonDAO.findUnique(addUserSql,newParams, User.class);
+ StuStudent stuStudent=new StuStudent();
+ stuStudent.setStatus(StuStudent.STATUS_REGISTER);
+ stuStudent.setUserId(newUser.getUserId());
+ stuStudent.setMobilePhone(newUser.getMobilePhone());
+ commonDAO.save(stuStudent);
+ }
+ if(StringUtils.isEmpty(user.getOpenId())){
+ user.setOpenId(sessionKeyOrOpenId.get("openid").toString());
+ commonDAO.saveOrUpdate(user);
+ }
+ String studentSql = "from StuStudent where deleteFlag is false and userId = ? ";
+ List<Object> stuParams = CollectionUtils.newList(user.getUserId());
+ StuStudent stuStudent = commonDAO.findUnique(studentSql, stuParams, StuStudent.class);
+ return new Result(true,"鎺堟潈鎴愬姛",CollectionUtils.newObjectMap("user",user,"ClassId",stuStudent.getClassId()));
}
- return new Result(true,"cg",user);
-// return new Result(true,"token",securityProperties.getTokenStartWith() + token,"user",user);
- }
+ return phone;
+}
@ApiOperation(value = "鐧诲叆鎺ュ彛", notes = "")
@ApiImplicitParams({
diff --git a/src/main/java/com/qxueyou/scc/teach/student/model/StuStudent.java b/src/main/java/com/qxueyou/scc/teach/student/model/StuStudent.java
index 962e0ec..1a235c0 100644
--- a/src/main/java/com/qxueyou/scc/teach/student/model/StuStudent.java
+++ b/src/main/java/com/qxueyou/scc/teach/student/model/StuStudent.java
@@ -28,7 +28,7 @@
private static final long serialVersionUID = 7504161189427721559L;
/*
- * 鐘舵��: 宸叉姤鍚�
+ * 鐘舵��: 宸叉姤鍚�,鏈縺娲伙紝宸叉瘯涓�
*/
public static final String STATUS_REGISTER = "register";
public static final String STATUS_ACTIVE = "active";
diff --git a/src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java b/src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java
index 4627751..aa9121f 100644
--- a/src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java
+++ b/src/main/java/com/qxueyou/scc/teach/subject/service/impl/SubjectService.java
@@ -644,7 +644,7 @@
String className = "鍏紑璇�";
subjectMap.put("subjectName",subject.getSubjectName());
subjectMap.put("subjectId",subject.getSubjectId());
-
+ subjectMap.put("coverPageUrl",subject.getCoverPageUrl());
subjectMap.put("percent", new BigDecimal(percentAvg));
subjectMap.put("progressValue", new BigDecimal(progressValue));
subjectMap.put("className",className);
diff --git a/src/main/java/com/qxueyou/scc/user/model/User.java b/src/main/java/com/qxueyou/scc/user/model/User.java
index 8e7b836..7975abc 100644
--- a/src/main/java/com/qxueyou/scc/user/model/User.java
+++ b/src/main/java/com/qxueyou/scc/user/model/User.java
@@ -144,6 +144,20 @@
@Column(name = "IMEI", length = 255)
private String imei;
+ /**
+ * 缁戝畾璐﹀彿ID
+ */
+ @Column(name = "OPENID", length = 255)
+ private String openId;
+
+ public String getOpenId() {
+ return openId;
+ }
+
+ public void setOpenId(String openId) {
+ this.openId = openId;
+ }
+
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "users")
@JsonIgnore
private List<UserRole> roles;
diff --git a/src/main/java/com/qxueyou/scc/wx/service/IWechatService.java b/src/main/java/com/qxueyou/scc/wx/service/IWechatService.java
index ee291ee..b6c3f04 100644
--- a/src/main/java/com/qxueyou/scc/wx/service/IWechatService.java
+++ b/src/main/java/com/qxueyou/scc/wx/service/IWechatService.java
@@ -1,6 +1,7 @@
package com.qxueyou.scc.wx.service;
import com.alibaba.fastjson.JSONObject;
+import com.qxueyou.scc.base.model.Result;
import com.qxueyou.scc.teach.student.model.StuStudent;
import java.util.Map;
@@ -19,7 +20,9 @@
JSONObject getSessionKeyOrOpenId(String code);
- String getNumber(String number);
+ Result getNumber(String tonken, String number);
+
+ JSONObject gettoken(String appid,String secret);
// Result isBindWx(String userId);
// Result getSignature(String url);
diff --git a/src/main/java/com/qxueyou/scc/wx/service/impl/WechatService.java b/src/main/java/com/qxueyou/scc/wx/service/impl/WechatService.java
index 5f98963..3400b95 100644
--- a/src/main/java/com/qxueyou/scc/wx/service/impl/WechatService.java
+++ b/src/main/java/com/qxueyou/scc/wx/service/impl/WechatService.java
@@ -1,8 +1,11 @@
package com.qxueyou.scc.wx.service.impl;
+import cn.hutool.http.HttpUtil;
import com.alibaba.druid.util.HttpClientUtils;
+import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.qxueyou.scc.base.model.Result;
import com.qxueyou.scc.base.service.ICacheService;
import com.qxueyou.scc.teach.student.model.StuStudent;
import com.qxueyou.scc.wx.service.IWechatService;
@@ -67,16 +70,50 @@
}
@Override
- public String getNumber(String number) {
- String requestUrl = "https://api.weixin.qq.com/wxa/business/getuserphonenumber";
+ public Result getNumber(String tonken, String number) {
+ JSONObject jsonCode = new JSONObject();
+
+ jsonCode.put("code",number);
+
+
+ String resPhone = HttpClientUtil.doPostUrl("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + tonken, jsonCode);
+
+ if(StringUtils.isEmpty(resPhone) || !resPhone.contains("phone_info") || !resPhone.contains("phoneNumber")){
+ return new Result(false,"寰俊瀹樻柟淇敼浜嗗皬绋嬪簭鑾峰彇鐢ㄦ埛鎵嬫満鍙风爜鐩稿叧鎺ュ彛锛�");
+ }
+ JSONObject resPhoneInfo = JSON.parseObject(resPhone);
+ JSONObject phoneInfo=resPhoneInfo.getJSONObject("phone_info");
+ System.out.println(resPhoneInfo);
+ System.out.println(phoneInfo);
+ String phoneNumber = phoneInfo.get("phoneNumber").toString();
+
+ return new Result(true,"鑾峰彇鎵嬫満鍙锋垚鍔�",phoneNumber);
+// String requestUrl = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token="+tonken+jsonObject.toJSONString();
+
+// Map<String, String> requestUrlParam = new HashMap<>();
+
+
+
+// requestUrlParam.put("code", number);
+
+// JSONObject s =JSON.parseObject(HttpClientUtil.doPost(requestUrl));
+
+// return s;
+ }
+
+ @Override
+ public JSONObject gettoken(String appid, String secret) {
+ String requestUrl = "https://api.weixin.qq.com/cgi-bin/token";
Map<String, String> requestUrlParam = new HashMap<>();
- requestUrlParam.put("access_token", "access_token");
+ requestUrlParam.put("grant_type", "client_credential");
- requestUrlParam.put("code", number);
+ requestUrlParam.put("appid", appid);
- String s = HttpClientUtil.doPost(requestUrl, requestUrlParam);
+ requestUrlParam.put("secret", secret);
+
+ JSONObject s = JSON.parseObject(HttpClientUtil.doGet(requestUrl, requestUrlParam));
return s;
}
diff --git a/src/main/java/com/qxueyou/scc/wx/utils/Code2Session.java b/src/main/java/com/qxueyou/scc/wx/utils/Code2Session.java
new file mode 100644
index 0000000..f1ed42a
--- /dev/null
+++ b/src/main/java/com/qxueyou/scc/wx/utils/Code2Session.java
@@ -0,0 +1,32 @@
+package com.qxueyou.scc.wx.utils;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * <p>
+ * 璋冪敤寰俊鎺ュ彛 杩斿洖鎺堟潈淇℃伅~
+ * </p>
+ * @author echo lovely
+ * @date 2020/12/4 21:56
+ */
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Code2Session {
+
+ //鐢ㄦ埛鍞竴鏍囪瘑
+ private String openid;
+ // 浼氳瘽瀵嗛挜
+ private String session_key;
+ // 鐢ㄦ埛鍦ㄥ紑鏀惧钩鍙扮殑鍞竴鏍囪瘑绗�
+ private String unionid;
+ // 閿欒鐮�
+ private Integer errcode;
+ // 閿欒淇℃伅
+ private String errmsg;
+
+}
+
diff --git a/src/main/java/com/qxueyou/scc/wx/utils/HttpClientUtil.java b/src/main/java/com/qxueyou/scc/wx/utils/HttpClientUtil.java
index faab644..dafe729 100644
--- a/src/main/java/com/qxueyou/scc/wx/utils/HttpClientUtil.java
+++ b/src/main/java/com/qxueyou/scc/wx/utils/HttpClientUtil.java
@@ -1,5 +1,7 @@
package com.qxueyou.scc.wx.utils;
+import com.alibaba.fastjson.JSONObject;
+import net.sf.json.JSONString;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
@@ -78,6 +80,8 @@
if (param != null) {
List<NameValuePair> paramList = new ArrayList<>();
for (String key : param.keySet()) {
+ System.out.println(key);
+ System.out.println(param.get(key));
paramList.add(new BasicNameValuePair(key, param.get(key)));
}
// 妯℃嫙琛ㄥ崟
@@ -100,6 +104,36 @@
return resultString;
}
+ public static String doPostUrl(String url, JSONObject jsonCode) {
+ // 鍒涘缓Httpclient瀵硅薄
+ CloseableHttpClient httpClient = HttpClients.createDefault();
+ CloseableHttpResponse response = null;
+ String resultString = "";
+ try {
+ // 鍒涘缓Http Post璇锋眰
+ HttpPost httpPost = new HttpPost(url);
+
+ String s = jsonCode.toJSONString(jsonCode);
+
+ StringEntity entity=new StringEntity(s);
+
+ httpPost.setEntity(entity);
+ // 鎵цhttp璇锋眰
+ response = httpClient.execute(httpPost);
+ resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ response.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ return resultString;
+ }
+
public static String doPost(String url) {
return doPost(url, null);
}
--
Gitblit v1.8.0