zyp 2 天之前
父節點
當前提交
423c82be7f

+ 34 - 4
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.fs.course.service.impl;
 
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
@@ -828,11 +829,15 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
 //        }
         if (param.getSource() == 2) {
             FsUserWx fsUserWx = fsUserWxService.selectByAppIdAndUserId(param.getAppId(),user.getUserId(),1);
-            if (fsUserWx ==null || fsUserWx.getOpenId()==null){
-                return R.error("小程序openId参数缺失");
+            if (fsUserWx ==null){
+                packetParam.setOpenId(user.getMaOpenId());
+                handleFsUserWx(user,param.getAppId());
+            }else {
+                //查出openid并赋值
+                packetParam.setOpenId(fsUserWx.getOpenId());
             }
-            //查出公司绑定openid并赋值
-            packetParam.setOpenId(fsUserWx.getOpenId());
+
+
         }
         packetParam.setAmount(amount);
         packetParam.setSource(param.getSource());
@@ -912,6 +917,31 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         }
     }
 
+
+    private void handleFsUserWx(FsUser user, String appId) {
+        // 尝试更新
+        boolean updated = fsUserWxService.lambdaUpdate()
+                .eq(FsUserWx::getFsUserId, user.getUserId())
+                .eq(FsUserWx::getAppId,appId )
+                .eq(FsUserWx::getOpenId, user.getMaOpenId())
+//                .set(FsUserWx::getUnionId, session.getUnionid() == null ? "" : session.getUnionid())
+                .set(FsUserWx::getUpdateTime, new Date())
+                .update();
+
+        // 如果更新失败(记录不存在),则插入
+        if (!updated) {
+            FsUserWx fsUserWx = new FsUserWx();
+            fsUserWx.setType(1);
+            fsUserWx.setFsUserId(user.getUserId());
+            fsUserWx.setAppId(appId);
+            fsUserWx.setOpenId(user.getMaOpenId());
+//            fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
+            fsUserWx.setCreateTime(new Date());
+            fsUserWx.setUpdateTime(new Date());
+            fsUserWxService.save(fsUserWx);
+        }
+    }
+
     /**
      * 发放红包奖励
      *