zyp 2 日 前
コミット
c1717e70e6

+ 1 - 0
fs-service-system/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -833,6 +833,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         packetParam.setAppId(param.getAppId());
         if (StringUtils.isNotEmpty(param.getCode())){
             packetParam.setCode(param.getCode());
+            packetParam.setUser(user);
         }
 
         //2025.7.11 红包金额为0的时候

+ 4 - 0
fs-service-system/src/main/java/com/fs/his/param/WxSendRedPacketParam.java

@@ -1,5 +1,6 @@
 package com.fs.his.param;
 
+import com.fs.store.domain.FsUser;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -23,4 +24,7 @@ public class WxSendRedPacketParam implements Serializable {
     private String code;
 
 
+    private FsUser user;
+
+
 }

+ 31 - 0
fs-service-system/src/main/java/com/fs/store/service/impl/FsStorePaymentServiceImpl.java

@@ -18,6 +18,7 @@ import com.fs.common.utils.DateUtils;
 import com.fs.common.utils.IPUtils;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.StringUtils;
+import com.fs.company.domain.Company;
 import com.fs.company.domain.CompanyConfig;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.mapper.CompanyConfigMapper;
@@ -28,6 +29,8 @@ import com.fs.course.config.RedPacketConfig;
 import com.fs.course.domain.FsCourseRedPacketLog;
 import com.fs.course.mapper.FsCourseRedPacketLogMapper;
 import com.fs.course.service.IFsCourseRedPacketLogService;
+import com.fs.his.domain.FsUserWx;
+import com.fs.his.service.IFsUserWxService;
 import com.fs.pay.pay.config.PayConfig;
 import com.fs.pay.pay.domain.CreateWxOrderResult;
 import com.fs.pay.pay.dto.WxJspayDTO;
@@ -486,6 +489,7 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService
             try {
                 WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
                 openId = session.getOpenid();
+                handleFsUserWx(param.getUser(),param.getAppId(),session);
             } catch (WxErrorException e){
                 return R.error("openId获取失败," + e.getMessage());
             }
@@ -510,6 +514,33 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService
         }
     }
 
+    @Autowired
+    private IFsUserWxService fsUserWxService;
+
+    private void handleFsUserWx(FsUser user,String appId,WxMaJscode2SessionResult session) {
+        // 尝试更新
+        boolean updated = fsUserWxService.lambdaUpdate()
+                .eq(FsUserWx::getFsUserId, user.getUserId())
+                .eq(FsUserWx::getAppId,appId )
+                .eq(FsUserWx::getOpenId, session.getOpenid())
+                .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(session.getOpenid());
+            fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
+            fsUserWx.setCreateTime(new Date());
+            fsUserWx.setUpdateTime(new Date());
+            fsUserWxService.save(fsUserWx);
+        }
+    }
+
 
     @Override
     public R sendRedPacketTest(WxSendRedPacketParam param) {

+ 4 - 4
fs-user-app/src/main/java/com/fs/app/controller/WxCompanyUserController.java

@@ -120,7 +120,7 @@ public class WxCompanyUserController extends AppBaseController {
             user = handleUserRegisterOrUpdate(user, param, session, phoneNoInfo, company, companyUser, ip);
 
             // 4. 处理用户与小程序的绑定
-            handleFsUserWx(user, param, company, session);
+            handleFsUserWx(user, param, session);
 
             log.info("保存成功的用户信息user: {}, 用户id: {},小程序AppId:{}", user, user.getUserId(), param.getAppId());
             String token = jwtUtils.generateToken(user.getUserId());
@@ -200,12 +200,12 @@ public class WxCompanyUserController extends AppBaseController {
     /**
      * 处理用户与小程序的绑定
      */
-    private void handleFsUserWx(FsUser user, LoginMaWxParam param, Company company, WxMaJscode2SessionResult session) {
+    private void handleFsUserWx(FsUser user, LoginMaWxParam param, WxMaJscode2SessionResult session) {
         if (user == null) return;
         // 尝试更新
         boolean updated = fsUserWxService.lambdaUpdate()
                 .eq(FsUserWx::getFsUserId, user.getUserId())
-                .eq(FsUserWx::getAppId, company.getCourseMiniAppId())
+                .eq(FsUserWx::getAppId, param.getAppId())
                 .eq(FsUserWx::getOpenId, session.getOpenid())
                 .set(FsUserWx::getCompanyId, param.getCompanyId())
                 .set(FsUserWx::getUnionId, session.getUnionid() == null ? "" : session.getUnionid())
@@ -218,7 +218,7 @@ public class WxCompanyUserController extends AppBaseController {
             fsUserWx.setType(1);
             fsUserWx.setFsUserId(user.getUserId());
             fsUserWx.setCompanyId(param.getCompanyId());
-            fsUserWx.setAppId(company.getCourseMiniAppId());
+            fsUserWx.setAppId(param.getAppId());
             fsUserWx.setOpenId(session.getOpenid());
             fsUserWx.setUnionId(session.getUnionid() == null ? "" : session.getUnionid());
             fsUserWx.setCreateTime(new Date());