Browse Source

perf: 企业方跟用户方动态连表查询

master
wangxiang 2 years ago
parent
commit
30a15053ff
  1. 4
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanController.java
  2. 2
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/mapper/PushConcernFanMapper.java
  3. 4
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IPushConcernFanService.java
  4. 4
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushConcernFanServiceImpl.java
  5. 20
      kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushConcernFanMapper.xml

4
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/controller/PushConcernFanController.java

@ -62,8 +62,8 @@ public class PushConcernFanController {
@ApiOperation("根据ID查询") @ApiOperation("根据ID查询")
@GetMapping("/getById") @GetMapping("/getById")
public R getById(String id, String onType) { public R getById(String id, String dynamicJoinType) {
return R.ok(iPushConcernFanService.getByPushConcernFanId(id, onType)); return R.ok(iPushConcernFanService.getByPushConcernFanId(id, dynamicJoinType));
} }
@ApiOperation("根据关注用户ID与粉丝用户ID查询") @ApiOperation("根据关注用户ID与粉丝用户ID查询")

2
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/mapper/PushConcernFanMapper.java

@ -22,7 +22,7 @@ public interface PushConcernFanMapper extends BaseMapper<PushConcernFan> {
IPage<Map<String, Object>> selectPushConcernFanList(@Param("page") IPage<Map<String, Object>> page, @Param("map") Map map); IPage<Map<String, Object>> selectPushConcernFanList(@Param("page") IPage<Map<String, Object>> page, @Param("map") Map map);
Map<String, Object> getByPushConcernFanId(@Param("id") String id, @Param("onType") String onType); Map<String, Object> getByPushConcernFanId(@Param("id") String id, @Param("dynamicJoinType") String dynamicJoinType);
IPage<Map<String, Object>> selectPushFriendList(@Param("page") IPage<Map<String, Object>> page, @Param("map") Map map); IPage<Map<String, Object>> selectPushFriendList(@Param("page") IPage<Map<String, Object>> page, @Param("map") Map map);

4
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/IPushConcernFanService.java

@ -26,10 +26,10 @@ public interface IPushConcernFanService extends IService<PushConcernFan> {
/** /**
* 根据ID查询 * 根据ID查询
* @param id 关注粉丝表Id * @param id 关注粉丝表Id
* @param onType 关注粉丝类型 0关联粉丝表 1关联关注表 * @param dynamicJoinType 动态切换连表类型 0关联粉丝表 1关联关注表
* @return * @return
*/ */
Map<String, Object> getByPushConcernFanId(String id, String onType); Map<String, Object> getByPushConcernFanId(String id, String dynamicJoinType);
/** /**
* 查询好友列表 * 查询好友列表

4
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/java/com/cloud/kicc/commonbiz/service/impl/PushConcernFanServiceImpl.java

@ -26,8 +26,8 @@ public class PushConcernFanServiceImpl extends ServiceImpl<PushConcernFanMapper,
} }
@Override @Override
public Map<String, Object> getByPushConcernFanId(String id, String onType) { public Map<String, Object> getByPushConcernFanId(String id, String dynamicJoinType) {
return baseMapper.getByPushConcernFanId(id, onType); return baseMapper.getByPushConcernFanId(id, dynamicJoinType);
} }
@Override @Override

20
kicc-platform/kicc-platform-biz/kicc-common-biz/src/main/resources/mapper/PushConcernFanMapper.xml

@ -33,7 +33,7 @@
common_push_concern_fan cf JOIN sys_user u common_push_concern_fan cf JOIN sys_user u
ON ON
<choose> <choose>
<when test="map.onType == 1"> <when test="map.dynamicJoinType == 1">
cf.concern_user_id = u.id cf.concern_user_id = u.id
</when> </when>
<otherwise> <otherwise>
@ -89,7 +89,7 @@
common_push_concern_fan cf JOIN sys_user u common_push_concern_fan cf JOIN sys_user u
ON ON
<choose> <choose>
<when test="onType == 1"> <when test="dynamicJoinType == 1">
cf.concern_user_id = u.id cf.concern_user_id = u.id
</when> </when>
<otherwise> <otherwise>
@ -103,7 +103,6 @@
</where> </where>
</select> </select>
<!-- todo: 多条 common_push_concern_fan 相同跟 sys_user 关联可能会出现问题 -->
<select id="selectPushFriendList" resultType="Map"> <select id="selectPushFriendList" resultType="Map">
SELECT SELECT
cf.`status` cf_status, cf.`status` cf_status,
@ -112,12 +111,22 @@
u.* u.*
FROM FROM
sys_user u sys_user u
LEFT JOIN (select * FROM common_push_concern_fan LEFT JOIN (select * FROM common_push_concern_fan WHERE del_flag = 0
WHERE del_flag = 0 <choose>
<!--企业用户进行粉丝查询连表-->
<when test="map.dynamicJoinType == 1">
AND concern_user_id = ${@com.cloud.kicc.common.security.util.SecurityUtils@getUser().id}) cf
ON u.id = cf.fan_user_id
LEFT JOIN common_push_blacklist b
ON u.id = b.fan_user_id
</when>
<otherwise>
AND fan_user_id = ${@com.cloud.kicc.common.security.util.SecurityUtils@getUser().id}) cf AND fan_user_id = ${@com.cloud.kicc.common.security.util.SecurityUtils@getUser().id}) cf
ON u.id = cf.concern_user_id ON u.id = cf.concern_user_id
LEFT JOIN common_push_blacklist b LEFT JOIN common_push_blacklist b
ON u.id = b.concern_user_id ON u.id = b.concern_user_id
</otherwise>
</choose>
<where> <where>
u.del_flag = 0 u.del_flag = 0
AND u.status = 0 AND u.status = 0
@ -129,6 +138,7 @@
<if test="map.nickName != null and map.nickName != ''"> <if test="map.nickName != null and map.nickName != ''">
AND u.nick_name = #{map.nickName} AND u.nick_name = #{map.nickName}
</if> </if>
ORDER BY u.create_time ASC
</where> </where>
</select> </select>

Loading…
Cancel
Save