Browse Source

微信获取openid

weifanli 3 years ago
parent
commit
f3a416d149

+ 3 - 0
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/SysUserFeignService.java

@@ -45,4 +45,7 @@ public interface SysUserFeignService {
 
 	@PostMapping(value = "user/realNameAuth")
 	public HttpResponseResult<IdcardInfoExtractor> realNameAuth(@RequestBody RealnameAuthReq realNameAuthDto);
+
+	@PostMapping(value = "user/bindOpenId")
+	HttpResponseResult<Boolean> bindOpenId(@RequestBody SysUser user);
 }

+ 6 - 1
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/client/fallback/SysUserFeignServiceFallback.java

@@ -44,7 +44,7 @@ public class SysUserFeignServiceFallback implements SysUserFeignService {
 
 	@Override
 	public HttpResponseResult<Boolean> updateSysUser(SysUser user) {
-		return null;
+		return HttpResponseResult.failed("请求失败");
 	}
 
 	@Override
@@ -56,4 +56,9 @@ public class SysUserFeignServiceFallback implements SysUserFeignService {
 	public HttpResponseResult<IdcardInfoExtractor> realNameAuth(RealnameAuthReq realNameAuthDto) {
 		return null;
 	}
+
+	@Override
+	public HttpResponseResult<Boolean> bindOpenId(SysUser user) {
+		return HttpResponseResult.failed("请求失败");
+	}
 }

+ 20 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java

@@ -488,4 +488,24 @@ public class UserController extends BaseController {
         sysUserService.submitSetDetail(setReq, user.getId());
         return succeed(sysUserService.getSetDetail(user.getId()));
     }
+
+    @PostMapping(value = "/bindOpenId")
+    public HttpResponseResult<Boolean> bindOpenId(@RequestBody SysUser param) {
+        AuthUser authUser = SecurityUtils.getUser();
+        if (authUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        SysUser user = sysUserService.get(authUser.getUserId());
+        if (user == null || null == user.getId()) {
+            return failed("用户不存在");
+        }
+        user.setWechatId(
+                StringUtil.isEmpty(param.getWechatId()) ? user.getWxOpenid() : param.getWechatId()
+        );
+        user.setQqOpenid(
+                StringUtil.isEmpty(param.getQqOpenid()) ? user.getQqOpenid() : param.getQqOpenid()
+        );
+        sysUserService.update(user);
+        return HttpResponseResult.succeed(true);
+    }
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/StudentTotal.java

@@ -20,7 +20,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 public class StudentTotal implements Serializable {
 	private static final long serialVersionUID = 1L;
     @ApiModelProperty("对应user表用户编号 ")
-    @TableId(value = "user_id_", type = IdType.AUTO)
+    @TableId(value = "user_id_")
     private Long userId;
     @ApiModelProperty("累计练习天数 ")
 	@TableField(value = "exercise_days_")

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/props/HuifuProperties.java

@@ -34,6 +34,12 @@ public class HuifuProperties {
      */
     private String rsaPrivateKey;
     /***
+     * 付款成功回调地址
+     * @author liweifan
+     * @updateTime 2022/3/31 11:24
+     */
+    private String notifyUrl;
+    /***
      * 微信appid
      * @author liweifan
      * @updateTime 2022/3/31 11:24
@@ -93,4 +99,12 @@ public class HuifuProperties {
     public void setWxSecret(String wxSecret) {
         this.wxSecret = wxSecret;
     }
+
+    public String getNotifyUrl() {
+        return notifyUrl;
+    }
+
+    public void setNotifyUrl(String notifyUrl) {
+        this.notifyUrl = notifyUrl;
+    }
 }

+ 4 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/sdk/PaymentSdk.java

@@ -139,7 +139,8 @@ public class PaymentSdk {
      * @updateTime 2022/4/8 15:49
      * @return: java.lang.Object
      */
-    public HttpResponseResult<Map<String, Object>> getOpenId(String js_code) {
+    public HttpResponseResult<Map<String, String>> getOpenId(String js_code) {
+        log.info("微信[获取用户openId] Req:{}", js_code);
         Map<String, Object> param = new HashMap<>();
         param.put("appid", HuifuConfiguration.getHuifuProperties().getWxAppid());
         param.put("secret", HuifuConfiguration.getHuifuProperties().getWxSecret());
@@ -149,10 +150,10 @@ public class PaymentSdk {
         try {
             String res = HttpUtil.get("https://api.weixin.qq.com/sns/jscode2session", param);
             JSONObject jsonObject = JSONObject.parseObject(res);
-
+            log.info("微信[获取用户openId] Res:{}", jsonObject.toJSONString());
             String errcode = jsonObject.getString("errcode");
             if("0".equals(errcode)){
-                Map<String, Object> resMap = new HashMap<>();
+                Map<String, String> resMap = new HashMap<>();
                 resMap.put("openid", jsonObject.getString("openid"));
                 resMap.put("session_key", jsonObject.getString("session_key"));
                 resMap.put("unionid", jsonObject.getString("unionid"));

+ 3 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.config.HuifuConfiguration;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderPayReq;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
@@ -164,8 +165,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         deviceInfo.setDevice_ip(payReq.getIpAddress());
 
         paymentReq.setDevice_info(deviceInfo);
-        //todo 异步通知地址
-        //paymentReq.setNotify_url("异步通知地址");
+        //异步通知地址
+        paymentReq.setNotify_url(HuifuConfiguration.getHuifuProperties().getNotifyUrl());
 
         if (PayChannelEnum.wx_lite.equals(payReq.getPayChannel())) {
             Map<String, Object> expend = new HashMap<>();

+ 31 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherStyleVideoVo.java

@@ -1,7 +1,9 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
 import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author: liweifan
@@ -9,5 +11,34 @@ import io.swagger.annotations.ApiModel;
  */
 @ApiModel(value = "TeacherStyleVideoVo对象", description = "老师风采信息")
 public class TeacherStyleVideoVo extends TeacherStyleVideo {
+    @ApiModelProperty(value = "是否直播 0否 1是")
+    private YesOrNoEnum liveFlag;
+    @ApiModelProperty("头像地址")
+    private String avatar;
+    @ApiModelProperty("老师昵称")
+    private String username;
 
+    public YesOrNoEnum getLiveFlag() {
+        return liveFlag;
+    }
+
+    public void setLiveFlag(YesOrNoEnum liveFlag) {
+        this.liveFlag = liveFlag;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
 }

+ 9 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -33,13 +33,18 @@
         SELECT
             <include refid="baseColumns"/>,
             u.avatar_ as avatar,
+            u.real_name_ as realName,
+            u.id_card_no_ as idCardNo,
             u.username_ as username,
             u.gender_ as gender,
             u.birthdate_ as birthdate,
+            TIMESTAMPDIFF(YEAR, u.birthdate_, CURDATE()) as age,
             u.phone_ as phone,
-            !isnull(u.id_card_no_) as isReal,
-            u.real_name_ as realName,
-            id_card_no_ as idCardNo
+            !isnull(birthdate_) as isReal,
+            (!isnull(membership_end_time_) and membership_end_time_ > now()) as isVip,
+            (
+            SELECT GROUP_CONCAT(name_) FROM subject WHERE FIND_IN_SET(id_,t.subject_id_)
+            ) as subjectName
         FROM student t
         left join sys_user u on t.user_id_ = u.id_
         where t.user_id_ = #{userId}
@@ -54,7 +59,7 @@
             TIMESTAMPDIFF(YEAR, u.birthdate_, CURDATE()) as age,
             u.phone_ as phone,
             !isnull(birthdate_) as isReal,
-            (membership_end_time_ > now()) as isVip,
+            (!isnull(membership_end_time_) and membership_end_time_ > now()) as isVip,
             (
             SELECT GROUP_CONCAT(name_) FROM subject WHERE FIND_IN_SET(id_,t.subject_id_)
             ) as subjectName

+ 4 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherStyleVideoMapper.xml

@@ -43,7 +43,10 @@
 
 	<select id="stylePage" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherStyleVideoVo">
 		SELECT
-			<include refid="baseColumns"/>
+			<include refid="baseColumns"/>,
+			ta.live_flag_ as liveFlag,
+			u.avatar,
+			u.username
 		FROM teacher_style_video t
 		LEFT JOIN teacher a on t.user_id_ = a.user_id_
 		LEFT JOIN sys_user u on t.user_id_ = u.id_

+ 23 - 9
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/PaymentController.java

@@ -2,12 +2,17 @@ package com.yonge.cooleshow.student.controller;
 
 import com.huifu.adapay.core.AdapayCore;
 import com.huifu.adapay.core.util.AdapaySign;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.sdk.PaymentSdk;
+import com.yonge.cooleshow.biz.dal.service.EmployeeService;
 import com.yonge.cooleshow.biz.dal.service.UserOrderService;
+import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
@@ -20,17 +25,15 @@ import java.util.Map;
 @RestController
 @RequestMapping("/payment")
 @Api(value = "付款接口", tags = "付款接口")
-public class PaymentController {
+public class PaymentController extends BaseController {
     @Autowired
     private PaymentSdk paymentSdk;
     @Autowired
     private UserOrderService userOrderService;
-
-/*    @ApiOperation(value = "订单付款")
-    @PostMapping("/orderPay")
-    public HttpResponseResult<Map<String, Object>> orderPay(@RequestBody PaymentReq param) {
-        return HttpResponseResult.succeed(paymentSdk.executePayment(param));
-    }*/
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeService employeeService;
 
     @ApiOperation(value = "查询付款单")
     @GetMapping("/queryPayment")
@@ -40,8 +43,19 @@ public class PaymentController {
 
     @ApiOperation(value = "微信支付获取openid")
     @GetMapping("/getOpenId")
-    public HttpResponseResult<Map<String, Object>> getOpenId(String js_code) {
-        return paymentSdk.getOpenId(js_code);
+    public HttpResponseResult<Map<String, String>> getOpenId(String js_code) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        HttpResponseResult<Map<String, String>> responseResult = paymentSdk.getOpenId(js_code);
+        if(responseResult.getStatus()){
+            Map<String, String> data = responseResult.getData();
+            //绑定到用户表
+            user.setWechatId(data.get("openid"));
+            sysUserFeignService.bindOpenId(user);
+        }
+        return responseResult;
     }
 
     /***