浏览代码

FIX:28:多个小程序、公众号关联不同的销售端

修复重复key处理不正确的问题
Long 3 天之前
父节点
当前提交
6c357c02cd

+ 6 - 0
fs-service/src/main/java/com/fs/his/mapper/FsUserWxMapper.java

@@ -4,4 +4,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fs.his.domain.FsUserWx;
 
 public interface FsUserWxMapper extends BaseMapper<FsUserWx> {
+
+    /**
+     * 根据FsUserId和AppId唯一键保存或更新
+     * @param wx    配置信息
+     */
+    void insertOrUpdateByUniqueKey(FsUserWx wx);
 }

+ 6 - 0
fs-service/src/main/java/com/fs/his/service/IFsUserWxService.java

@@ -4,4 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.fs.his.domain.FsUserWx;
 
 public interface IFsUserWxService extends IService<FsUserWx> {
+
+    /**
+     * 根据FsUserId和AppId唯一键保存或更新
+     * @param wx    配置信息
+     */
+    void saveOrUpdateByUniqueKey(FsUserWx wx);
 }

+ 9 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsUserWxServiceImpl.java

@@ -10,4 +10,13 @@ import org.springframework.stereotype.Service;
 @Service
 @Slf4j
 public class FsUserWxServiceImpl extends ServiceImpl<FsUserWxMapper, FsUserWx> implements IFsUserWxService {
+
+    /**
+     * 根据FsUserId和AppId唯一键保存或更新
+     * @param wx    配置信息
+     */
+    @Override
+    public void saveOrUpdateByUniqueKey(FsUserWx wx) {
+        baseMapper.insertOrUpdateByUniqueKey(wx);
+    }
 }

+ 12 - 0
fs-service/src/main/resources/mapper/his/FsUserWxMapper.xml

@@ -4,4 +4,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fs.his.mapper.FsUserWxMapper">
 
+    <insert id="insertOrUpdateByUniqueKey">
+        insert into fs_user_wx
+            (fs_user_id, app_id, union_id, open_id, create_time, update_time)
+        values
+            (#{fsUserId}, #{appId}, #{unionId}, #{openId}, #{createTime, jdbcType=TIMESTAMP}, #{updateTime, jdbcType=TIMESTAMP})
+        ON DUPLICATE KEY UPDATE
+        <if test="unionId != null">
+            union_id = VALUES(union_id),
+        </if>
+            open_id     = VALUES(open_id),
+            update_time = VALUES(update_time)
+    </insert>
 </mapper>

+ 8 - 14
fs-user-app/src/main/java/com/fs/app/controller/WxUserController.java

@@ -12,10 +12,7 @@ import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.param.LoginParam;
 import com.fs.common.utils.DateUtils;
-import com.fs.common.utils.IpUtil;
-import com.fs.company.domain.CompanyUser;
 import com.fs.core.config.WxMaConfiguration;
-import com.fs.core.config.WxMpConfiguration;
 import com.fs.course.config.CourseMaConfig;
 import com.fs.his.config.FsSysConfig;
 import com.fs.his.domain.*;
@@ -32,8 +29,6 @@ import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
 import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.mp.api.WxMpService;
-import me.chanjar.weixin.mp.api.WxMpUserService;
-import me.chanjar.weixin.mp.bean.result.WxMpUser;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -48,7 +43,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
-import java.util.function.Supplier;
 
 import static com.fs.his.utils.PhoneUtil.encryptPhone;
 
@@ -244,14 +238,14 @@ public class WxUserController extends AppBaseController{
             }
 
             // 保存用户openId
-//            FsUserWx wx = new FsUserWx();
-//            wx.setFsUserId(user.getUserId());
-//            wx.setAppId(appId);
-//            wx.setOpenId(session.getOpenid());
-//            wx.setUnionId(session.getUnionid());
-//            wx.setCreateTime(LocalDateTime.now());
-//            wx.setUpdateTime(LocalDateTime.now());
-//            userWxService.saveOrUpdate(wx);
+            FsUserWx wx = new FsUserWx();
+            wx.setFsUserId(user.getUserId());
+            wx.setAppId(appId);
+            wx.setOpenId(session.getOpenid());
+            wx.setUnionId(session.getUnionid());
+            wx.setCreateTime(LocalDateTime.now());
+            wx.setUpdateTime(LocalDateTime.now());
+            userWxService.saveOrUpdateByUniqueKey(wx);
 
             // 生成Token
             String token = jwtUtils.generateToken(user.getUserId());