CmOrganValueSystemMapper.xml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.caimei365.tools.mapper.CmOrganValueSystemMapper">
  4. <select id="newAdd" resultType="java.lang.Integer">
  5. SELECT DISTINCT userID FROM USER WHERE TIMESTAMPDIFF(DAY , registerTime,NOW()) <![CDATA[ <= ]]> 30
  6. </select>
  7. <select id="active" resultType="java.lang.Integer">
  8. SELECT DISTINCT userID FROM USER WHERE TIMESTAMPDIFF(DAY, registerTime, NOW()) > 30 AND TIMESTAMPDIFF(DAY, loginTime, NOW()) <![CDATA[ <= ]]> 90
  9. AND userID NOT IN (
  10. SELECT DISTINCT userID FROM USER WHERE
  11. userID IN (
  12. SELECT DISTINCT u.userID FROM USER u LEFT JOIN cm_order cod ON u.userID = cod.userID
  13. WHERE u.userID NOT IN (SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(DAY , u.registerTime,NOW()) <![CDATA[ <= ]]> 30 )
  14. AND u.userID NOT IN (SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2
  15. AND orderNo NOT IN (
  16. SELECT orderNo FROM cm_order WHERE
  17. STATUS = 6 OR refundType = 2
  18. OR orderID IN (
  19. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  20. )
  21. )
  22. )
  23. AND u.userID NOT IN (
  24. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR,loginTime, NOW()) <![CDATA[ < ]]> 2
  25. )
  26. )
  27. AND userID IN (
  28. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR, loginTime, NOW()) <![CDATA[ < ]]> 2
  29. )
  30. AND userID IN (
  31. SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2 AND orderNo NOT IN (
  32. SELECT orderNo FROM cm_order WHERE
  33. STATUS = 6 OR refundType = 2
  34. OR orderID IN (
  35. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  36. )
  37. )
  38. )
  39. UNION
  40. SELECT DISTINCT u.userID FROM USER u LEFT JOIN cm_order cod ON u.userID = cod.userID
  41. WHERE TIMESTAMPDIFF(DAY, u.loginTIme, NOW()) <![CDATA[ <= ]]> 90
  42. AND u.userID NOT IN(SELECT userID FROM USER WHERE TIMESTAMPDIFF(DAY, registerTime, NOW()) <![CDATA[ < ]]> 30)
  43. AND TIMESTAMPDIFF(YEAR, cod.orderTime, NOW()) <![CDATA[ < ]]> 2
  44. AND orderNo NOT IN (
  45. SELECT orderNo FROM cm_order WHERE
  46. STATUS = 6 OR refundType = 2
  47. OR orderID IN (
  48. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  49. )
  50. )
  51. )
  52. </select>
  53. <select id="inactive" resultType="java.lang.Integer">
  54. SELECT DISTINCT userID FROM USER WHERE userID NOT IN ( SELECT userID FROM USER WHERE TIMESTAMPDIFF(DAY , registerTime,NOW()) <![CDATA[ <= ]]> 30 )
  55. AND userID NOT IN (
  56. SELECT DISTINCT u.userID FROM USER u LEFT JOIN cm_order cod ON u.userID = cod.userID
  57. WHERE u.userID NOT IN ( SELECT userID FROM USER WHERE TIMESTAMPDIFF(DAY , registerTime,NOW()) <![CDATA[ <= ]]> 30 ) -- AND u.userID = 100351
  58. AND u.userID NOT IN (SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2
  59. AND orderNo NOT IN (
  60. SELECT orderNo FROM cm_order WHERE
  61. STATUS = 6 OR refundType = 2
  62. OR orderID IN (
  63. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  64. )
  65. )
  66. )
  67. AND u.userID NOT IN (
  68. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR,loginTime, NOW()) <![CDATA[ < ]]> 2
  69. )
  70. UNION
  71. SELECT userID FROM USER WHERE TIMESTAMPDIFF(DAY, loginTime, NOW()) <![CDATA[ <= ]]> 90
  72. UNION
  73. SELECT DISTINCT u.userID FROM USER u LEFT JOIN cm_order cod ON u.userID = cod.userID
  74. WHERE u.userID NOT IN (
  75. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR,loginTime, NOW()) <![CDATA[ < ]]> 2
  76. UNION
  77. SELECT DISTINCT userID FROM USER WHERE
  78. userID IN (
  79. SELECT DISTINCT u.userID FROM USER u LEFT JOIN cm_order cod ON u.userID = cod.userID
  80. WHERE u.userID NOT IN (SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(DAY , u.registerTime,NOW()) <![CDATA[ <= ]]> 30 )
  81. AND u.userID NOT IN (SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2
  82. AND orderNo NOT IN (
  83. SELECT orderNo FROM cm_order WHERE
  84. STATUS = 6 OR refundType = 2
  85. OR orderID IN (
  86. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  87. )
  88. )
  89. )
  90. AND u.userID NOT IN (
  91. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR,loginTime, NOW()) <![CDATA[ < ]]> 2
  92. )
  93. )
  94. AND userID IN (
  95. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR, loginTime, NOW()) <![CDATA[ < ]]> 2
  96. )
  97. AND userID IN (
  98. SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2 AND orderNo NOT IN (
  99. SELECT orderNo FROM cm_order WHERE
  100. STATUS = 6 OR refundType = 2
  101. OR orderID IN (
  102. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  103. )
  104. )
  105. )
  106. )
  107. AND u.userID IN (
  108. SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2
  109. AND orderNo NOT IN (
  110. SELECT orderNo FROM cm_order WHERE
  111. STATUS = 6 OR refundType = 2
  112. OR orderID IN (
  113. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  114. )
  115. )
  116. )
  117. )
  118. </select>
  119. <select id="loss" resultType="java.lang.Integer">
  120. SELECT DISTINCT u.userID FROM USER u LEFT JOIN cm_order cod ON u.userID = cod.userID
  121. WHERE u.userID NOT IN (SELECT userID FROM USER WHERE TIMESTAMPDIFF(DAY , registerTime,NOW()) <![CDATA[ <= ]]> 30 )
  122. AND u.userID NOT IN (SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2
  123. AND orderNo NOT IN (
  124. SELECT orderNo FROM cm_order WHERE
  125. STATUS = 6 OR refundType = 2
  126. OR orderID IN (
  127. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  128. )
  129. )
  130. )
  131. AND u.userID NOT IN (
  132. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR,loginTime, NOW()) <![CDATA[ < ]]> 2
  133. )
  134. </select>
  135. <select id="backflow" resultType="java.lang.Integer">
  136. SELECT DISTINCT userID FROM USER WHERE
  137. userID IN (
  138. SELECT DISTINCT u.userID FROM USER u LEFT JOIN cm_order cod ON u.userID = cod.userID
  139. WHERE u.userID NOT IN (SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(DAY , u.registerTime,NOW()) <![CDATA[ <= ]]> 30 )
  140. AND u.userID NOT IN (SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2
  141. AND orderNo NOT IN (
  142. SELECT orderNo FROM cm_order WHERE
  143. STATUS = 6 OR refundType = 2
  144. OR orderID IN (
  145. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  146. )
  147. )
  148. )
  149. AND u.userID NOT IN (
  150. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR,loginTime, NOW()) <![CDATA[ < ]]> 2
  151. )
  152. )
  153. AND userID IN (
  154. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR, loginTime, NOW()) <![CDATA[ < ]]> 2
  155. )
  156. AND userID IN (
  157. SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2 AND orderNo NOT IN (
  158. SELECT orderNo FROM cm_order WHERE
  159. STATUS = 6 OR refundType = 2
  160. OR orderID IN (
  161. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  162. )
  163. )
  164. )
  165. </select>
  166. <select id="loyal" resultType="java.lang.Integer">
  167. SELECT DISTINCT u.userID FROM USER u LEFT JOIN cm_order cod ON u.userID = cod.userID
  168. WHERE TIMESTAMPDIFF(DAY, u.loginTIme, NOW()) <![CDATA[ <= ]]> 90
  169. AND u.userID NOT IN(SELECT userID FROM USER WHERE TIMESTAMPDIFF(DAY, registerTime, NOW()) <![CDATA[ < ]]> 30)
  170. AND TIMESTAMPDIFF(YEAR, cod.orderTime, NOW()) <![CDATA[ < ]]> 2
  171. AND orderNo NOT IN (
  172. SELECT orderNo FROM cm_order WHERE
  173. STATUS = 6 OR refundType = 2
  174. OR orderID IN (
  175. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  176. )
  177. )
  178. </select>
  179. <select id="silent" resultType="java.lang.Integer">
  180. SELECT DISTINCT u.userID FROM USER u LEFT JOIN cm_order cod ON u.userID = cod.userID
  181. WHERE u.userID NOT IN (
  182. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR,loginTime, NOW()) <![CDATA[ < ]]> 2
  183. )
  184. AND u.userID IN
  185. (
  186. SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2
  187. AND orderNo NOT IN (
  188. SELECT orderNo FROM cm_order WHERE
  189. STATUS = 6 OR refundType = 2
  190. OR orderID IN (
  191. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  192. )
  193. )
  194. )
  195. AND u.userID NOT IN (
  196. SELECT DISTINCT userID FROM USER WHERE
  197. userID IN (
  198. SELECT DISTINCT u.userID FROM USER u LEFT JOIN cm_order cod ON u.userID = cod.userID
  199. WHERE u.userID NOT IN (SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(DAY , u.registerTime,NOW()) <![CDATA[ <= ]]> 30 )
  200. AND u.userID NOT IN (SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2
  201. AND orderNo NOT IN (
  202. SELECT orderNo FROM cm_order WHERE
  203. STATUS = 6 OR refundType = 2
  204. OR orderID IN (
  205. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  206. )
  207. )
  208. )
  209. AND u.userID NOT IN (
  210. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR,loginTime, NOW()) <![CDATA[ < ]]> 2
  211. )
  212. )
  213. AND userID IN (
  214. SELECT userID FROM USER WHERE TIMESTAMPDIFF(YEAR, loginTime, NOW()) <![CDATA[ < ]]> 2
  215. )
  216. AND userID IN (
  217. SELECT userID FROM cm_order WHERE TIMESTAMPDIFF(YEAR, orderTime, NOW()) <![CDATA[ < ]]> 2 AND orderNo NOT IN (
  218. SELECT orderNo FROM cm_order WHERE
  219. STATUS = 6 OR refundType = 2
  220. OR orderID IN (
  221. SELECT orderID FROM cm_order_product WHERE productID IN (6060, 6061, 6062, 6063, 6064, 6065, 6066, 6067, 6068, 6069) GROUP BY orderID
  222. )
  223. )
  224. )
  225. )
  226. </select>
  227. <select id="getOrganUserId" resultType="com.caimei365.tools.model.po.CmOrganValueSystemPo">
  228. SELECT organID as organId, userId FROM cm_organ_value_system
  229. </select>
  230. <select id="getClubUserId" resultType="com.caimei365.tools.model.po.CmUserPo">
  231. SELECT userID, clubID FROM user WHERE userId IS NOT NULL AND userId != ''
  232. </select>
  233. <!--机构登录时间-->
  234. <select id="getClubLoginTime" resultType="com.caimei365.tools.model.po.UserOrganPo">
  235. SELECT
  236. c.clubId,
  237. c.userId,
  238. u.loginTime
  239. FROM club c
  240. LEFT JOIN USER u ON c.userId = u.userId
  241. where u.loginTime > DATE_SUB(NOW(), INTERVAL 6 MONTH)
  242. </select>
  243. <!--机构咨询记录数-->
  244. <select id="getClubRemarks" resultType="com.caimei365.tools.model.po.UserOrganPo">
  245. SELECT clubId, SUM(cou) AS number, communicationSituation as situation FROM (
  246. SELECT c.clubId, COUNT(*) AS cou, (SELECT communicationSituation FROM cm_club_remarks WHERE clubId = c.clubId ORDER BY ADDTIME DESC LIMIT 1) AS communicationSituation
  247. FROM club c
  248. LEFT JOIN cm_club_remarks ccr ON c.clubId = ccr.clubId
  249. WHERE ccr.addTime > DATE_SUB(NOW(), INTERVAL 6 MONTH) AND ccr.communicationSituation != 1 GROUP BY c.clubId
  250. UNION
  251. SELECT c.clubId, COUNT(*) AS cou, (SELECT communicationSituation FROM cm_visitor_remarks WHERE clubId = c.clubId ORDER BY ADDTIME DESC LIMIT 1) AS communicationSituation
  252. FROM club c
  253. LEFT JOIN cm_visitor_remarks cvr ON c.clubId = cvr.clubId
  254. WHERE cvr.addTime > DATE_SUB(NOW(), INTERVAL 6 MONTH) AND cvr.communicationSituation != 1 GROUP BY c.clubId
  255. ) remark GROUP BY clubId
  256. </select>
  257. <!--机构子订单数-->
  258. <select id="getClubShopOrder" resultType="com.caimei365.tools.model.po.UserOrganPo">
  259. SELECT u.userId, COUNT(*) AS shopOrderNumber
  260. FROM user u
  261. LEFT JOIN cm_shop_order cso ON cso.userId = u.userId
  262. WHERE cso.shopId != 998 AND cso.orderTime > DATE_SUB(NOW(), INTERVAL 6 MONTH) GROUP BY u.userId
  263. </select>
  264. <!--机构子订单数、需支付金额-->
  265. <select id="getUserAmount" resultType="com.caimei365.tools.model.po.UserOrganPo">
  266. SELECT
  267. userId,
  268. clubId,
  269. COUNT(shopOrderId) AS shopOrderNumber,
  270. SUM(needPayAmount) AS amount
  271. FROM cm_shop_order
  272. WHERE userId != '' AND userId IS NOT NULL
  273. AND clubId != '' AND clubId IS NOT NULL
  274. and userId = #{userId}
  275. AND orderTime > DATE_SUB(NOW(), INTERVAL 1 YEAR)
  276. GROUP BY userId
  277. </select>
  278. <select id="getBehaviorNumber" resultType="com.caimei365.tools.model.po.UserOrganPo">
  279. SELECT
  280. userId,
  281. COUNT(recordID) as recordNumber
  282. FROM cm_behavior_record
  283. WHERE userId != 0 AND accessTime > DATE_SUB(NOW(), INTERVAL 1 YEAR)
  284. and userId = #{userId}
  285. GROUP BY accessDate
  286. </select>
  287. <update id="updateOrgan">
  288. UPDATE cm_organ_value_system
  289. SET stage = ( CASE stage
  290. WHEN 0 THEN 1
  291. WHEN 1 THEN 2
  292. END), delType = 0
  293. WHERE organID IS NOT NULL
  294. </update>
  295. <update id="updateOrganActive">
  296. UPDATE cm_organ_active_system
  297. SET stage = ( CASE stage
  298. WHEN 0 THEN 1
  299. WHEN 1 THEN 2
  300. END), delType = 0
  301. WHERE id IS NOT NULL
  302. </update>
  303. <insert id="insertOrganActive">
  304. insert into cm_organ_active_system (userID, activeState, activeStatus, stage, addTime, delType)
  305. values (#{userId}, #{activeState}, #{activeStatus}, #{stage}, date_format(now(), '%Y-%m-%d'), #{delType})
  306. </insert>
  307. <insert id="organBatch" parameterType="java.util.List">
  308. insert into cm_organ_value_system (userID, customerValue, customerStatus, stage, addTime, delType)
  309. values (#{userId}, #{customerValue}, #{customerStatus}, #{stage}, date_format(now(), '%Y-%m-%d'), #{delType})
  310. </insert>
  311. <update id="updateOrganBatch">
  312. update cm_organ_value_system
  313. set <if test="userId != null">
  314. userID = #{userId},
  315. </if>
  316. <if test="customerValue != null and customerValue != ''">
  317. customerValue = #{customerValue},
  318. </if>
  319. <if test="customerStatus != null">
  320. customerStatus = #{customerStatus},
  321. </if>
  322. stage = #{stage},
  323. delType = #{delType}
  324. where organID = #{organId}
  325. </update>
  326. </mapper>