InterestAiChatSessionMapper.xml 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.fs.aiChat.mapper.InterestAiChatSessionMapper">
  6. <resultMap type="InterestAiSession" id="getSessionListByUserIdResultMap">
  7. <result property="sessionId" column="session_id" />
  8. <result property="roleId" column="role_id" />
  9. <result property="roleName" column="role_name" />
  10. <result property="welcomeMessage" column="welcome_message" />
  11. <result property="textDescription" column="text_description" />
  12. <result property="lastCreateTime" column="lastCreateTime" />
  13. <result property="lastContent" column="lastContent" />
  14. <result property="roleAvatar" column="roleAvatar" />
  15. <result property="roleTag" column="role_tag" />
  16. </resultMap>
  17. <select id="getSessionListByUserId" resultMap="getSessionListByUserIdResultMap">
  18. select temp.role_id,
  19. temp.role_name,
  20. temp.role_tag,
  21. temp.roleAvatar as roleAvatar,
  22. temp.welcome_message,
  23. temp.text_description,
  24. temp.lastContent,
  25. temp.lastCreateTime,
  26. temp.session_id
  27. from (select t1.role_id,
  28. t1.role_name,
  29. t1.role_tag,
  30. t1.avatar as roleAvatar,
  31. t1.welcome_message,
  32. t1.text_description,
  33. (select content
  34. from (select ROW_NUMBER() over (PARTITION by session_id ORDER BY create_time desc) rowNum, content, session_id, create_time
  35. from fs_interest_ai_msg
  36. where session_id = t3.session_id
  37. and send_type = 2) temp
  38. where temp.rowNum = 1) as lastContent
  39. ,
  40. (select max(create_time)
  41. from fs_interest_ai_msg
  42. where session_id = t3.session_id and send_type = 2) as lastCreateTime,
  43. t3.session_id
  44. from fs_interest_ai_role t1
  45. left join fs_interest_ai_session t3 on t3.role_id = t1.role_id and t3.user_id = #{userId} ) temp
  46. order by temp.lastCreateTime desc
  47. </select>
  48. <resultMap type="SessionRoleInfo" id="getSessionRoleInfoBySessionIdResultMap" >
  49. <result property="roleId" column="role_id" />
  50. <result property="roleName" column="role_name" />
  51. <result property="roleTag" column="role_tag" />
  52. <result property="appKey" column="app_key" />
  53. <result property="avatar" column="avatar" />
  54. <result property="welcomeMessage" column="welcome_message" />
  55. <result property="imageUrl" column="image_url" />
  56. <result property="createTime" column="create_time" />
  57. <result property="updateTime" column="update_time" />
  58. <result property="textDescription" column="text_description" />
  59. <result property="title" column="title" />
  60. <result property="wordList" column="wordList" />
  61. <result property="isRecommend" column="is_recommend" />
  62. <result property="recommendImgUrl" column="recommend_img_url" />
  63. <result property="sessionId" column="session_id" />
  64. </resultMap>
  65. <select id="getSessionRoleInfoByRoleId" resultMap="getSessionRoleInfoBySessionIdResultMap">
  66. select t1.role_id,
  67. t1.role_name,
  68. t1.role_tag,
  69. t1.app_key,
  70. t1.avatar,
  71. t1.welcome_message,
  72. t1.image_url,
  73. t1.create_time,
  74. t1.update_time,
  75. t1.text_description,
  76. t1.title,
  77. (select GROUP_CONCAT(t3.content order by t3.sort SEPARATOR "||") from fs_interest_ai_role_words t3 where t3.role_id = t1.role_id) as wordList
  78. from fs_interest_ai_role t1
  79. where t1.role_id = #{roleId}
  80. </select>
  81. <select id="getRecommendRoleList" resultMap="getSessionRoleInfoBySessionIdResultMap">
  82. select t1.role_id,
  83. t1.role_name,
  84. t1.is_recommend,
  85. t1.recommend_img_url,
  86. (select max(session_id) from fs_interest_ai_session t2 where t2.user_id = #{userId} and t2.role_id = t1.role_id) as session_id
  87. from fs_interest_ai_role t1
  88. where t1.is_recommend = 1
  89. order by t1.update_time desc,t1.create_time desc
  90. </select>
  91. <resultMap type="FsInterestAiRole" id="FsInterestAiRoleResult">
  92. <result property="roleId" column="role_id" />
  93. <result property="roleName" column="role_name" />
  94. <result property="roleTag" column="role_tag" />
  95. <result property="appKey" column="app_key" />
  96. <result property="avatar" column="avatar" />
  97. <result property="welcomeMessage" column="welcome_message" />
  98. <result property="createTime" column="create_time" />
  99. <result property="updateTime" column="update_time" />
  100. <result property="imageUrl" column="image_url" />
  101. <result property="textDescription" column="text_description" />
  102. <result property="title" column="title" />
  103. <result property="isRecommend" column="is_recommend" />
  104. <result property="recommendImgUrl" column="recommend_img_url" />
  105. </resultMap>
  106. <sql id="selectFsInterestAiRoleVo">
  107. select role_id, role_name, role_tag, app_key, avatar, welcome_message, create_time, update_time, image_url,text_description,title,is_recommend,recommend_img_url from fs_interest_ai_role
  108. </sql>
  109. <select id="selectFsInterestAiRoleByRoleId" parameterType="Long" resultMap="FsInterestAiRoleResult">
  110. <include refid="selectFsInterestAiRoleVo"/>
  111. where role_id = #{roleId}
  112. </select>
  113. <select id="getSessionChatList" resultType="InterestAiChatMsg">
  114. select t1.msg_id,
  115. t1.session_id,
  116. t1.user_id,
  117. t1.role_id,
  118. t1.role_name,
  119. t1.send_type,
  120. t1.content,
  121. t1.create_time,
  122. t1.nick_name,
  123. t1.avatar,
  124. t3.avatar as role_avatar
  125. from fs_interest_ai_session t2
  126. inner join fs_interest_ai_msg t1 on t1.session_id = t2.session_id
  127. inner join fs_interest_ai_role t3 on t3.role_id = t2.role_id
  128. where t2.session_id = #{sessionId}
  129. </select>
  130. <insert id="insertFsInterestAiSession" parameterType="FsInterestAiSession" useGeneratedKeys="true" keyProperty="sessionId">
  131. insert into fs_interest_ai_session
  132. <trim prefix="(" suffix=")" suffixOverrides=",">
  133. <if test="chatId != null">chat_id,</if>
  134. <if test="userId != null">user_id,</if>
  135. <if test="roleId != null">role_id,</if>
  136. <if test="roleName != null">role_name,</if>
  137. <if test="status != null">status,</if>
  138. <if test="nickName != null">nick_name,</if>
  139. <if test="avatar != null">avatar,</if>
  140. <if test="createTime != null">create_time,</if>
  141. <if test="updateTime != null">update_time,</if>
  142. </trim>
  143. <trim prefix="values (" suffix=")" suffixOverrides=",">
  144. <if test="chatId != null">#{chatId},</if>
  145. <if test="userId != null">#{userId},</if>
  146. <if test="roleId != null">#{roleId},</if>
  147. <if test="roleName != null">#{roleName},</if>
  148. <if test="status != null">#{status},</if>
  149. <if test="nickName != null">#{nickName},</if>
  150. <if test="avatar != null">#{avatar},</if>
  151. <if test="createTime != null">#{createTime},</if>
  152. <if test="updateTime != null">#{updateTime},</if>
  153. </trim>
  154. </insert>
  155. <insert id="insertFsInterestAiMsg" parameterType="FsInterestAiMsg" useGeneratedKeys="true" keyProperty="msgId">
  156. insert into fs_interest_ai_msg
  157. <trim prefix="(" suffix=")" suffixOverrides=",">
  158. <if test="sessionId != null">session_id,</if>
  159. <if test="userId != null">user_id,</if>
  160. <if test="content != null">content,</if>
  161. <if test="sendType != null">send_type,</if>
  162. <if test="roleId != null">role_id,</if>
  163. <if test="roleName != null">role_name,</if>
  164. <if test="createTime != null">create_time,</if>
  165. <if test="nickName != null">nick_name,</if>
  166. <if test="avatar != null">avatar,</if>
  167. <if test="promptTokens != null">prompt_tokens,</if>
  168. <if test="completionTokens != null">completion_tokens,</if>
  169. <if test="totalTokens != null">total_tokens,</if>
  170. </trim>
  171. <trim prefix="values (" suffix=")" suffixOverrides=",">
  172. <if test="sessionId != null">#{sessionId},</if>
  173. <if test="userId != null">#{userId},</if>
  174. <if test="content != null">#{content},</if>
  175. <if test="sendType != null">#{sendType},</if>
  176. <if test="roleId != null">#{roleId},</if>
  177. <if test="roleName != null">#{roleName},</if>
  178. <if test="createTime != null">#{createTime},</if>
  179. <if test="nickName != null">#{nickName},</if>
  180. <if test="avatar != null">#{avatar},</if>
  181. <if test="promptTokens != null">#{promptTokens},</if>
  182. <if test="completionTokens != null">#{completionTokens},</if>
  183. <if test="totalTokens != null">#{totalTokens},</if>
  184. </trim>
  185. </insert>
  186. </mapper>