ソースを参照

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	ruixuan-live/src/main/java/com/ruixuan/open/service/impl/KuaishouOpenPhotoListServiceImpl.java
yumeng 1 年間 前
コミット
2790c417b0

+ 6 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/controller/KuaishouItemListController.java

@@ -136,6 +136,12 @@ public class KuaishouItemListController extends BaseController {
         accessTokenService.refreshAccessToken();
     }
 
+    @GetMapping("/jyAccessToken")
+    @ApiOperation(value = "jyAccessToken")
+    public void jyAccessToken() {
+        accessTokenService.refreshJYAccessToken();
+    }
+
     @GetMapping("/getRegimental")
     @ApiOperation(value = "团长信息")
     public JSONObject getRegimental() {

+ 18 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/entity/JYAccessToken.java

@@ -0,0 +1,18 @@
+package com.ruixuan.isc.entity;
+
+import com.ruixuan.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class JYAccessToken extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    private String promoterId;
+    private String accessToken;
+    private String refreshToken;
+    private String appKey;
+    private String appSecret;
+    private String signSecret;
+
+}

+ 5 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/mapper/AccessTokenMapper.java

@@ -1,5 +1,6 @@
 package com.ruixuan.isc.mapper;
 
+import com.ruixuan.isc.entity.JYAccessToken;
 import com.ruixuan.isc.entity.KuaishouAccessToken;
 
 import java.util.List;
@@ -20,4 +21,8 @@ public interface AccessTokenMapper {
     List<KuaishouAccessToken> getYufuTokenInfos();
 
     List<KuaishouAccessToken> getRocketTokenInfos();
+
+    List<JYAccessToken> getJYTokenInfos();
+
+    void updateJYAccessToken(JYAccessToken updateToken);
 }

+ 3 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/IAccessTokenService.java

@@ -10,6 +10,8 @@ public interface IAccessTokenService {
 
     void refreshAccessToken();
 
+    void refreshJYAccessToken();
+
     void refreshByteDanceAccessToken();
 
     List<KuaishouAccessToken> getTokenInfos();
@@ -19,4 +21,5 @@ public interface IAccessTokenService {
     List<KuaishouAccessToken> getYufuTokenInfos();
 
     List<KuaishouAccessToken> getRocketTokenInfos();
+
 }

+ 27 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/AccessTokenServiceImpl.java

@@ -11,6 +11,7 @@ import com.kuaishou.merchant.open.api.client.oauth.OauthAccessTokenKsClient;
 import com.kuaishou.merchant.open.api.response.oauth.KsAccessTokenResponse;
 import com.ruixuan.bytedance.service.IBytedanceAccessTokenService;
 import com.ruixuan.common.utils.Check;
+import com.ruixuan.isc.entity.JYAccessToken;
 import com.ruixuan.isc.entity.KuaishouAccessToken;
 import com.ruixuan.isc.mapper.AccessTokenMapper;
 import com.ruixuan.isc.service.IAccessTokenService;
@@ -108,6 +109,32 @@ public class AccessTokenServiceImpl implements IAccessTokenService {
     }
 
     @Override
+    public void refreshJYAccessToken() {
+        List<JYAccessToken> tokens = accessTokenMapper.getJYTokenInfos();
+        if (!Check.isNull(tokens)) {
+            for (JYAccessToken token : tokens) {
+                String appKey = token.getAppKey();
+                String appSecret = token.getAppSecret();
+                String refreshToken = token.getRefreshToken();
+                OauthAccessTokenKsClient oauthAccessTokenKsClient = new OauthAccessTokenKsClient(appKey, appSecret);
+                try {
+                    KsAccessTokenResponse response = oauthAccessTokenKsClient.refreshAccessToken(refreshToken);
+                    JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(response));
+                    log.info("刷新token,id:{},返回结果:{}", token.getPromoterId(), jsonObject);
+                    if (jsonObject.getInteger("result") == 1) {
+                        JYAccessToken updateToken = new JYAccessToken();
+                        updateToken.setPromoterId(token.getPromoterId());
+                        updateToken.setAccessToken(jsonObject.getString("accessToken"));
+                        updateToken.setRefreshToken(jsonObject.getString("refreshToken"));
+                        accessTokenMapper.updateJYAccessToken(updateToken);
+                    }
+                } catch (KsMerchantApiException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+    @Override
     public List<KuaishouAccessToken> getTokenInfos() {
         return accessTokenMapper.getTokenInfos();
     }

+ 7 - 7
ruixuan-live/src/main/java/com/ruixuan/open/controller/KuaishouOpenPhotoListController.java

@@ -60,9 +60,9 @@ public class KuaishouOpenPhotoListController extends BaseController {
      */
     @GetMapping("/insertKuaishouOpenPhotoList")
     @ApiOperation(value = "新增视频列表")
-    public Result insertKuaishouOpenPhotoList(@ApiParam("userId") @RequestParam(value = "userId", required = false) Long userId) {
+    public Result insertKuaishouOpenPhotoList() {
         try {
-            openPhotoListService.insertKuaishouOpenPhotoList(userId, "0");
+            openPhotoListService.insertKuaishouOpenPhotoList();
             return Result.success();
         } catch (Exception e) {
             e.printStackTrace();
@@ -71,13 +71,13 @@ public class KuaishouOpenPhotoListController extends BaseController {
     }
 
     /**
-     * 新增视频数量
+     * 新增视频数量 1小时1次
      */
     @GetMapping("/insertKuaishouOpenPhotoCount")
     @ApiOperation(value = "新增视频数量")
-    public Result insertKuaishouOpenPhotoCount(@ApiParam("userId") @RequestParam(value = "userId", required = false) Long userId) {
+    public Result insertKuaishouOpenPhotoCount() {
         try {
-            openPhotoCountService.insertKuaishouOpenPhotoCount(userId);
+            openPhotoCountService.insertKuaishouOpenPhotoCount();
             return Result.success();
         } catch (Exception e) {
             e.printStackTrace();
@@ -91,9 +91,9 @@ public class KuaishouOpenPhotoListController extends BaseController {
      */
     @GetMapping("/insertKuaishouOpenUserInfo")
     @ApiOperation(value = "获取用户公开信息")
-    public Result insertKuaishouOpenUserInfo(@ApiParam("userId") @RequestParam(value = "userId", required = false) Long userId) {
+    public Result insertKuaishouOpenUserInfo() {
         try {
-            openUserInfoService.insertKuaishouOpenUserInfo(userId);
+            openUserInfoService.insertKuaishouOpenUserInfo();
             return Result.success();
         } catch (Exception e) {
             e.printStackTrace();

+ 1 - 1
ruixuan-live/src/main/java/com/ruixuan/open/service/IKuaishouOpenPhotoCountService.java

@@ -27,6 +27,6 @@ public interface IKuaishouOpenPhotoCountService {
      */
     public List<KuaishouOpenPhotoCount> selectKuaishouOpenPhotoCountList(KuaishouOpenPhotoCount kuaishouOpenPhotoCount);
 
-    void insertKuaishouOpenPhotoCount(Long userId);
+    void insertKuaishouOpenPhotoCount();
 
 }

+ 1 - 1
ruixuan-live/src/main/java/com/ruixuan/open/service/IKuaishouOpenPhotoListService.java

@@ -27,5 +27,5 @@ public interface IKuaishouOpenPhotoListService {
      */
     public List<KuaishouOpenPhotoList> selectKuaishouOpenPhotoListList(KuaishouOpenPhotoList kuaishouOpenPhotoList);
 
-    void insertKuaishouOpenPhotoList(Long userId, String cursor);
+    void insertKuaishouOpenPhotoList();
 }

+ 1 - 1
ruixuan-live/src/main/java/com/ruixuan/open/service/IKuaishouOpenUserInfoService.java

@@ -27,5 +27,5 @@ public interface IKuaishouOpenUserInfoService {
      */
     public List<KuaishouOpenUserInfo> selectKuaishouOpenUserInfoList(KuaishouOpenUserInfo kuaishouOpenUserInfo);
 
-    void insertKuaishouOpenUserInfo(Long userId);
+    void insertKuaishouOpenUserInfo();
 }

+ 18 - 7
ruixuan-live/src/main/java/com/ruixuan/open/service/impl/KuaishouOpenPhotoCountServiceImpl.java

@@ -6,6 +6,8 @@ import com.kuaishou.merchant.open.api.client.AccessTokenKsMerchantClient;
 import com.kuaishou.merchant.open.api.common.utils.GsonUtils;
 import com.kuaishou.merchant.open.api.request.video.OpenPhotoCountRequest;
 import com.kuaishou.merchant.open.api.response.video.OpenPhotoCountResponse;
+import com.ruixuan.isc.entity.JYAccessToken;
+import com.ruixuan.isc.mapper.AccessTokenMapper;
 import com.ruixuan.open.entity.KuaishouOpenPhotoCount;
 import com.ruixuan.open.mapper.KuaishouOpenPhotoCountMapper;
 import com.ruixuan.open.service.IKuaishouOpenPhotoCountService;
@@ -27,6 +29,9 @@ public class KuaishouOpenPhotoCountServiceImpl implements IKuaishouOpenPhotoCoun
     @Autowired
     private KuaishouOpenPhotoCountMapper kuaishouOpenPhotoCountMapper;
 
+    @Autowired
+    private AccessTokenMapper accessTokenMapper;
+
     /**
      * 查询视频数量
      *
@@ -51,13 +56,19 @@ public class KuaishouOpenPhotoCountServiceImpl implements IKuaishouOpenPhotoCoun
 
 
     @Override
-    public void insertKuaishouOpenPhotoCount(Long userId) {
+    public void insertKuaishouOpenPhotoCount() {
+        List<JYAccessToken> jyTokenInfos = accessTokenMapper.getJYTokenInfos();
+        for (JYAccessToken tokenInfo : jyTokenInfos) {
+            insertInfo(tokenInfo, null);
+        }
+    }
+
+    private void insertInfo(JYAccessToken token, String cursor) {
         try {
             String url = "https://openapi.kwaixiaodian.com";
-            String appKey = "ks690458118961229051";
-            String signSecret = "6ef1e2a231733bb0c38fb2bf0f50e45b";
-            String accessToken = "ChFvYXV0aC5hY2Nlc3NUb2tlbhJAhhjrjfDtPkuAuUN5pOWY1hl3SUdOrNORPbgFhIJ1uxNFUrKSaCTdaOcWUvlLqPOZWnnR-1_wWga0cNw-ZsmuYBoSdJTaZfTbRbe4zPS88hU0zxRHIiBA8uLLXu_BaAsO7k5WZayprQWLkUi_G-cvvV_XJMVzBCgFMAE";
-
+            String appKey = token.getAppKey();
+            String signSecret = token.getSignSecret();
+            String accessToken = token.getAccessToken();
             AccessTokenKsMerchantClient client = new AccessTokenKsMerchantClient(url, appKey, signSecret);
 
             OpenPhotoCountRequest request = new OpenPhotoCountRequest();
@@ -70,10 +81,10 @@ public class KuaishouOpenPhotoCountServiceImpl implements IKuaishouOpenPhotoCoun
             String code = resultJson.getString("code");
             if ("1".equals(code)) {
                 KuaishouOpenPhotoCount photoCount = JSONObject.parseObject(resultJson.getJSONObject("data").toJSONString(), KuaishouOpenPhotoCount.class);
-                photoCount.setPromoterId(userId);
+                photoCount.setPromoterId(Long.valueOf(token.getPromoterId()));
                 kuaishouOpenPhotoCountMapper.insertKuaishouOpenPhotoCount(photoCount);
             } else {
-                log.error("===新增视频数量(open.photo.count)失败,userID:{},信息:{}", userId, resultJson.getString("msg"));
+                log.error("===新增视频数量(open.photo.count)失败,promoterId:{},信息:{}", token.getPromoterId(), resultJson.getString("msg"));
             }
         } catch (KsMerchantApiException e) {
             e.printStackTrace();

+ 24 - 9
ruixuan-live/src/main/java/com/ruixuan/open/service/impl/KuaishouOpenPhotoListServiceImpl.java

@@ -7,6 +7,8 @@ import com.kuaishou.merchant.open.api.common.utils.GsonUtils;
 import com.kuaishou.merchant.open.api.request.video.OpenPhotoListRequest;
 import com.kuaishou.merchant.open.api.response.video.OpenPhotoListResponse;
 import com.ruixuan.common.utils.DateUtils;
+import com.ruixuan.isc.entity.JYAccessToken;
+import com.ruixuan.isc.mapper.AccessTokenMapper;
 import com.ruixuan.open.entity.KuaishouOpenPhotoList;
 import com.ruixuan.open.mapper.KuaishouOpenPhotoListMapper;
 import com.ruixuan.open.service.IKuaishouOpenPhotoListService;
@@ -29,6 +31,9 @@ public class KuaishouOpenPhotoListServiceImpl implements IKuaishouOpenPhotoListS
     @Autowired
     private KuaishouOpenPhotoListMapper kuaishouOpenPhotoListMapper;
 
+    @Autowired
+    private AccessTokenMapper accessTokenMapper;
+
     /**
      * 查询用户视频列
      *
@@ -52,14 +57,24 @@ public class KuaishouOpenPhotoListServiceImpl implements IKuaishouOpenPhotoListS
     }
 
     @Override
-    public void insertKuaishouOpenPhotoList(Long userId, String cursor) {
+    public void insertKuaishouOpenPhotoList() {
+        List<JYAccessToken> jyTokenInfos = accessTokenMapper.getJYTokenInfos();
+        for (JYAccessToken tokenInfo : jyTokenInfos) {
+            insertInfo(tokenInfo, null);
+        }
+    }
+
+    private void insertInfo(JYAccessToken token, String cursor) {
         try {
             String url = "https://openapi.kwaixiaodian.com";
 
-            String appKey = "ks690458118961229051";
-            String signSecret = "6ef1e2a231733bb0c38fb2bf0f50e45b";
-            String accessToken = "ChFvYXV0aC5hY2Nlc3NUb2tlbhJw0bf7W972LfB1ZvhEaRi75OvhHkxPHHN6_cZ74TKgJczDijS_1euj3PMQ9rVLu8-tOmMavY39RA-IqKdFHb7_AskVwj2gOEOnUj5nagoj76WUw0yONJOkQnCQui4IxhN8ITSrZfwyHrEkDobK7DBy8RoSXmId3s_9TpqnCS4FlyiXkIhhIiBCTvX6l7EEIivBhz0OxyrBpjVAUJES5GASUzv3tb_eZigFMAE";
+//            String appKey = "ks690458118961229051";
+//            String signSecret = "6ef1e2a231733bb0c38fb2bf0f50e45b";
+//            String accessToken = "ChFvYXV0aC5hY2Nlc3NUb2tlbhJAhhjrjfDtPkuAuUN5pOWY1hl3SUdOrNORPbgFhIJ1uxNFUrKSaCTdaOcWUvlLqPOZWnnR-1_wWga0cNw-ZsmuYBoSdJTaZfTbRbe4zPS88hU0zxRHIiBA8uLLXu_BaAsO7k5WZayprQWLkUi_G-cvvV_XJMVzBCgFMAE";
 
+            String appKey = token.getAppKey();
+            String signSecret = token.getSignSecret();
+            String accessToken = token.getAccessToken();
             AccessTokenKsMerchantClient client = new AccessTokenKsMerchantClient(url, appKey, signSecret);
 
             OpenPhotoListRequest request = new OpenPhotoListRequest();
@@ -69,7 +84,7 @@ public class KuaishouOpenPhotoListServiceImpl implements IKuaishouOpenPhotoListS
             //游标,用于分页,值为作品id。分页查询时,传上一页create_time最小的photo_id。第一页不传此参数。
             request.setCursor(cursor);
             //数量,默认为20,最大不超过200
-            request.setCount(20);
+            request.setCount(200);
 
             OpenPhotoListResponse response = client.execute(request);
             JSONObject resultJson = JSONObject.parseObject(GsonUtils.toJSON(response));
@@ -87,7 +102,7 @@ public class KuaishouOpenPhotoListServiceImpl implements IKuaishouOpenPhotoListS
                         min = obj.getLong("createTime");
                         minPhotoId = photo.getPhotoId();
                     }
-                    photo.setPromoterId(userId);
+                    photo.setPromoterId(Long.valueOf(token.getPromoterId()));
                     photo.setPhotoCreateTime(Long.valueOf(DateUtils.timestamptoStr(obj.getLong("createTime"))));
                     photo.setPending(String.valueOf(obj.getBoolean("pending") ? 1 : 0));
                     list.add(photo);
@@ -95,11 +110,11 @@ public class KuaishouOpenPhotoListServiceImpl implements IKuaishouOpenPhotoListS
                 if (list.size() > 0) {
                     kuaishouOpenPhotoListMapper.replaceBatchKuaishouOpenPhotoList(list);
                 }
-                if (jsonArray.size() == 20) {
-                    insertKuaishouOpenPhotoList(userId, minPhotoId);
+                if (jsonArray.size() == 200) {
+                    insertInfo(token, minPhotoId);
                 }
             } else {
-                log.error("===新增视频列表(open.photo.list)失败,userID:{},信息:{}", userId, resultJson.getString("msg"));
+                log.error("===新增视频列表(open.photo.list)失败,promoterId:{},信息:{}", token.getPromoterId(), resultJson.getString("msg"));
             }
         } catch (Exception e) {
             e.printStackTrace();

+ 18 - 7
ruixuan-live/src/main/java/com/ruixuan/open/service/impl/KuaishouOpenUserInfoServiceImpl.java

@@ -6,6 +6,8 @@ import com.kuaishou.merchant.open.api.client.AccessTokenKsMerchantClient;
 import com.kuaishou.merchant.open.api.common.utils.GsonUtils;
 import com.kuaishou.merchant.open.api.request.user.OpenUserInfoGetRequest;
 import com.kuaishou.merchant.open.api.response.user.OpenUserInfoGetResponse;
+import com.ruixuan.isc.entity.JYAccessToken;
+import com.ruixuan.isc.mapper.AccessTokenMapper;
 import com.ruixuan.open.entity.KuaishouOpenUserInfo;
 import com.ruixuan.open.mapper.KuaishouOpenUserInfoMapper;
 import com.ruixuan.open.service.IKuaishouOpenUserInfoService;
@@ -27,6 +29,9 @@ public class KuaishouOpenUserInfoServiceImpl implements IKuaishouOpenUserInfoSer
     @Autowired
     private KuaishouOpenUserInfoMapper kuaishouOpenUserInfoMapper;
 
+    @Autowired
+    private AccessTokenMapper accessTokenMapper;
+
     /**
      * 查询用户公开信息
      *
@@ -50,13 +55,19 @@ public class KuaishouOpenUserInfoServiceImpl implements IKuaishouOpenUserInfoSer
     }
 
     @Override
-    public void insertKuaishouOpenUserInfo(Long userId) {
+    public void insertKuaishouOpenUserInfo() {
+        List<JYAccessToken> jyTokenInfos = accessTokenMapper.getJYTokenInfos();
+        for (JYAccessToken tokenInfo : jyTokenInfos) {
+            insertInfo(tokenInfo, null);
+        }
+    }
+
+    private void insertInfo(JYAccessToken token, String cursor) {
         try {
             String url = "https://openapi.kwaixiaodian.com";
-            String appKey = "ks690458118961229051";
-            String signSecret = "6ef1e2a231733bb0c38fb2bf0f50e45b";
-            String accessToken = "ChFvYXV0aC5hY2Nlc3NUb2tlbhJAhhjrjfDtPkuAuUN5pOWY1hl3SUdOrNORPbgFhIJ1uxNFUrKSaCTdaOcWUvlLqPOZWnnR-1_wWga0cNw-ZsmuYBoSdJTaZfTbRbe4zPS88hU0zxRHIiBA8uLLXu_BaAsO7k5WZayprQWLkUi_G-cvvV_XJMVzBCgFMAE";
-
+            String appKey = token.getAppKey();
+            String signSecret = token.getSignSecret();
+            String accessToken = token.getAccessToken();
             AccessTokenKsMerchantClient client = new AccessTokenKsMerchantClient(url, appKey, signSecret);
 
             OpenUserInfoGetRequest request = new OpenUserInfoGetRequest();
@@ -68,10 +79,10 @@ public class KuaishouOpenUserInfoServiceImpl implements IKuaishouOpenUserInfoSer
             String code = resultJson.getString("code");
             if ("1".equals(code)) {
                 KuaishouOpenUserInfo userInfo = JSONObject.parseObject(resultJson.getJSONObject("data").toJSONString(), KuaishouOpenUserInfo.class);
-                userInfo.setPromoterId(userId);
+                userInfo.setPromoterId(Long.valueOf(token.getPromoterId()));
                 kuaishouOpenUserInfoMapper.insertKuaishouOpenUserInfo(userInfo);
             } else {
-                log.error("===获取用户公开信息(open.user.info.get)失败,userID:{},信息:{}", userId, resultJson.getString("msg"));
+                log.error("===获取用户公开信息(open.user.info.get)失败,promoterId:{},信息:{}", token.getPromoterId(), resultJson.getString("msg"));
             }
         } catch (KsMerchantApiException e) {
             e.printStackTrace();

+ 12 - 0
ruixuan-live/src/main/resources/mapper/isc/AccessTokenMapper.xml

@@ -10,6 +10,13 @@
         where id = #{id}
     </update>
 
+    <update id="updateJYAccessToken" parameterType="com.ruixuan.isc.entity.JYAccessToken">
+        update jy_promoter_access_token
+        set access_token  = #{accessToken},
+            refresh_token = #{refreshToken}
+        where promoter_id = #{promoterId}
+    </update>
+
     <update id="updateBytedance" parameterType="com.ruixuan.isc.entity.KuaishouAccessToken">
         update bytedance_access_token
         set access_token  = #{accessToken},
@@ -30,6 +37,11 @@
         from kuaishou_access_token
     </select>
 
+    <select id="getJYTokenInfos" resultType="com.ruixuan.isc.entity.JYAccessToken">
+        select *
+        from jy_promoter_access_token
+    </select>
+
     <select id="getMgsTokenInfos" resultType="com.ruixuan.isc.entity.KuaishouAccessToken">
         select *
         from miaogousi.kuaishou_access_token

+ 15 - 20
ruixuan-live/src/main/resources/mapper/open/KuaishouOpenPhotoCountMapper.xml

@@ -43,26 +43,21 @@
         where id = #{id}
     </select>
 
-    <insert id="insertKuaishouOpenPhotoCount" useGeneratedKeys="true" keyProperty="id">
-        insert into kuaishou_open_photo_count
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="promoterId != null">promoter_id,</if>
-            <if test="publicCount != null">public_count,</if>
-            <if test="friendCount != null">friend_count,</if>
-            <if test="privateCount != null">private_count,</if>
-            <if test="allCount != null">all_count,</if>
-            <if test="createTime != null">create_time,</if>
-            <if test="updateTime != null">update_time,</if>
-        </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="promoterId != null">#{promoterId},</if>
-            <if test="publicCount != null">#{publicCount},</if>
-            <if test="friendCount != null">#{friendCount},</if>
-            <if test="privateCount != null">#{privateCount},</if>
-            <if test="allCount != null">#{allCount},</if>
-            <if test="createTime != null">#{createTime},</if>
-            <if test="updateTime != null">#{updateTime},</if>
-        </trim>
+    <insert id="insertKuaishouOpenPhotoCount">
+        replace
+        into kuaishou_open_photo_count(
+        promoter_id,
+        public_count,
+        friend_count,
+        private_count,
+        all_count)
+		value(
+        #{promoterId},
+        #{publicCount},
+        #{friendCount},
+        #{privateCount},
+        #{allCount}
+        )
     </insert>
 
 </mapper>

+ 2 - 2
ruixuan-live/src/main/resources/mapper/open/KuaishouOpenUserInfoMapper.xml

@@ -47,8 +47,8 @@
         where id = #{id}
     </select>
 
-    <insert id="insertKuaishouOpenUserInfo" useGeneratedKeys="true" keyProperty="id">
-        insert into kuaishou_open_user_info
+    <insert id="insertKuaishouOpenUserInfo">
+        replace into kuaishou_open_user_info
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="promoterId != null">promoter_id,</if>
             <if test="name != null">name,</if>