adminStatisticsMapper.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC
  4. "-//mybatis.org//DTD Mapper 3.0//EN"
  5. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  6. <!-- 命名,每一个映射对象不一样
  7. namespace:必须与对应的接口全类名一致
  8. -->
  9. <mapper namespace="com.iamberry.wechat.service.mapper.AdminStatisticsMapper">
  10. <!-- 查询门店关注人数等报表数据 -->
  11. <select id="selectStoreAttentionList" resultType="AttentionInfo" parameterType="AttentionInfo">
  12. select
  13. p.place_id placeId,
  14. sum(case WHEN u.user_status <![CDATA[<>]]> 1 THEN 1 else 0 end) attentionSum,
  15. sum(case WHEN u.user_status = 2 THEN 1 else 0 end) nowAttentionNum,
  16. sum(case WHEN u.user_status = 0 THEN 1 else 0 end) cancelAttentionNum,
  17. case when Q.QRCODE_STATUS = 1 THEN Q.QRCODE_URL end qrcodeUrl,
  18. MIN(u.USER_SUB_DATE) firstEmployDate
  19. from
  20. tb_iamberry_place_info p LEFT JOIN tb_iamberry_user_userinfo u on p.place_pids = u.user_dealers
  21. LEFT JOIN TB_IAMBERRY_USER_QRCODE q on p.place_id = Q.QRCODE_REPLACE_OPENID
  22. where
  23. p.Place_role_id in (
  24. <foreach collection="roleList" item="item" separator=",">
  25. #{item}
  26. </foreach>)
  27. <if test="storeName != null and storeName !=''">
  28. AND PLACE_NAME LIKE CONCAT('%',#{storeName},'%')
  29. </if>
  30. GROUP BY
  31. p.place_id
  32. LIMIT ${page.recordBegin},${page.pageSize}
  33. </select>
  34. <!-- 查询省代收益报表数据数量 -->
  35. <select id="selectStoreAttentionListCount" resultType="Integer" parameterType="AttentionInfo">
  36. select count(t.placeId) from (select
  37. p.place_id placeId,
  38. sum(case WHEN u.user_status is not null THEN 1 else 0 end),
  39. sum(case WHEN u.user_status = 2 THEN 1 else 0 end),
  40. sum(case WHEN u.user_status = 0 THEN 1 else 0 end),
  41. case when Q.QRCODE_STATUS = 1 THEN Q.QRCODE_URL end qrcodeUrl,
  42. MIN(u.USER_SUB_DATE)
  43. from
  44. tb_iamberry_place_info p LEFT JOIN tb_iamberry_user_userinfo u on p.place_pids = u.user_dealers
  45. LEFT JOIN TB_IAMBERRY_USER_QRCODE q on p.place_id = Q.QRCODE_REPLACE_OPENID
  46. where
  47. p.Place_role_id in (
  48. <foreach collection="roleList" item="item" separator=",">
  49. #{item}
  50. </foreach>)
  51. <if test="storeName != null and storeName !=''">
  52. AND PLACE_NAME LIKE CONCAT('%',#{storeName},'%')
  53. </if>
  54. GROUP BY
  55. p.place_id ) t
  56. </select>
  57. <!-- 分页查询省代收益报表数据 -->
  58. <select id="selectProvinceEarningsList" resultType="EarningsInfo" parameterType="EarningsInfo">
  59. SELECT
  60. PLACE_ID placeId,
  61. PLACE_NAME provinceName,
  62. PLACE_PID placePid,
  63. PLACE_AMOUNT usableMoney,
  64. PLACE_OPENID palceOpenid,
  65. PLACE_AREA district,
  66. (SELECT COUNT(PLACE_ID) from TB_IAMBERRY_PLACE_INFO WHERE PLACE_PID = placeId AND PLACE_ROLE_ID = (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = '代理')) cityNum,
  67. (SELECT COUNT(PLACE_ID) from TB_IAMBERRY_PLACE_INFO WHERE PLACE_PIDS IN (SELECT DEALER_ID FROM TB_IAMBERRY_DEALERS WHERE DEALER_FIRST = placeId) AND PLACE_ROLE_ID IN (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE (ROLE_NAME = '门店' OR ROLE_NAME = '母婴店'))) storeNum,
  68. (SELECT SUM(reback_money) FROM TB_IAMBERRY_REBACK WHERE REBACK_TO_OPENID = palceOpenid) awaitMoney,
  69. (SELECT SUM(SALES_YET_AMOUNT) FROM TB_IAMBERRY_SHOP_SALES_ORDER WHERE (SALES_STATUS = 5 OR SALES_STATUS = 2 OR SALES_STATUS = 12) AND SALES_OPENID IN (SELECT USER_OPENID FROM TB_IAMBERRY_USER_USERINFO WHERE USER_DEALERS IN (SELECT DEALER_ID FROM TB_IAMBERRY_DEALERS WHERE DEALER_FIRST = placeId))) marketMoney
  70. FROM
  71. TB_IAMBERRY_PLACE_INFO
  72. WHERE
  73. PLACE_ROLE_ID = (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = '省代')
  74. <if test="provinceName != null and provinceName !=''">
  75. AND PLACE_NAME LIKE CONCAT('%',#{provinceName},'%')
  76. </if>
  77. LIMIT ${page.recordBegin},${page.pageSize}
  78. </select>
  79. <select id="selectProvinceEarningsListCount" resultType="Integer" parameterType="EarningsInfo">
  80. SELECT
  81. COUNT(PLACE_ID)
  82. FROM
  83. TB_IAMBERRY_PLACE_INFO
  84. WHERE
  85. PLACE_ROLE_ID = (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = '省代')
  86. <if test="provinceName != null and provinceName !=''">
  87. AND PLACE_NAME LIKE CONCAT('%',#{provinceName},'%')
  88. </if>
  89. </select>
  90. <!-- 查询商户层的激活信息 -->
  91. <select id="selectActivateList" parameterType="ActivateInfo" resultType="ActivateInfo">
  92. select
  93. t.PLACE_ROLE_ID roleId,
  94. r.ROLE_NAME roleName,
  95. sum(case when t.PLACE_OPENID is null then 1 else 0 end) nonactivatedNum,
  96. sum(case when t.PLACE_OPENID is not null then 1 else 0 end) activateNum,
  97. round(sum(case when t.PLACE_OPENID is not null then 1 else 0 end)/(sum(case when t.PLACE_OPENID is null then 1 else 0 end) + sum(case when t.PLACE_OPENID is not null then 1 else 0 end))*100,2) roundNum
  98. from
  99. TB_IAMBERRY_PLACE_INFO t LEFT JOIN TB_IAMBERRY_PLACE_ROLE r ON t.PLACE_ROLE_ID = r.ROLE_ID
  100. GROUP BY t.PLACE_ROLE_ID,r.ROLE_NAME
  101. ORDER BY t.PLACE_ROLE_ID
  102. LIMIT ${page.recordBegin},${page.pageSize}
  103. </select>
  104. <!-- 查询商户层的激活信息总条目数 -->
  105. <select id="selectActivateListCount" parameterType="ActivateInfo" resultType="Integer">
  106. SELECT COUNT(a.placeNum) FROM (SELECT
  107. COUNT(t.PLACE_ROLE_ID) placeNum
  108. FROM
  109. TB_IAMBERRY_PLACE_INFO t LEFT JOIN TB_IAMBERRY_PLACE_ROLE r ON t.PLACE_ROLE_ID = r.ROLE_ID
  110. GROUP BY t.PLACE_ROLE_ID,r.ROLE_NAME
  111. ORDER BY t.PLACE_ROLE_ID) a
  112. </select>
  113. <!-- 根据条件查询商户层信息 -->
  114. <select id="selectUserActivateList" parameterType="UerActivateInfo" resultType="UerActivateInfo">
  115. select
  116. p.PLACE_ROLE_ID placeRoleId,
  117. t.USER_HEAD userHead,
  118. t.USER_NICKNAME userNickname,
  119. p.PLACE_NAME placeName,
  120. p.PLACE_AREA placeArea
  121. FROM
  122. TB_IAMBERRY_PLACE_INFO p LEFT JOIN TB_IAMBERRY_USER_USERINFO t
  123. ON
  124. p.PLACE_OPENID = t.USER_OPENID
  125. <where>
  126. <if test="placeRoleId != null and placeRoleId != ''">
  127. p.PLACE_ROLE_ID = #{placeRoleId}
  128. </if>
  129. <if test="isActivate == 1">
  130. AND p.PLACE_OPENID is not null
  131. </if>
  132. <if test="isActivate == 2">
  133. AND p.PLACE_OPENID is null
  134. </if>
  135. <if test="placeName != null and placeName != ''">
  136. AND p.PLACE_NAME LIKE CONCAT('%',#{placeName},'%')
  137. </if>
  138. </where>
  139. LIMIT ${page.recordBegin},${page.pageSize}
  140. </select>
  141. <!-- 查询是否激活的商户层列表数量 -->
  142. <select id="selectUserActivateListCount" parameterType="UerActivateInfo" resultType="Integer">
  143. select
  144. COUNT(p.PLACE_ID)
  145. FROM
  146. TB_IAMBERRY_PLACE_INFO p LEFT JOIN TB_IAMBERRY_USER_USERINFO t
  147. ON
  148. p.PLACE_OPENID = t.USER_OPENID
  149. <where>
  150. <if test="placeRoleId != null and placeRoleId != ''">
  151. p.PLACE_ROLE_ID = #{placeRoleId}
  152. </if>
  153. <if test="isActivate == 1">
  154. AND p.PLACE_OPENID is not null
  155. </if>
  156. <if test="isActivate == 2">
  157. AND p.PLACE_OPENID is null
  158. </if>
  159. </where>
  160. </select>
  161. <!-- 按月份查询商户层收益金额 -->
  162. <select id="selectMarketList" parameterType="MarketInfo" resultType="MarketInfo">
  163. SELECT
  164. p.PLACE_ID placeId,
  165. DATE_FORMAT(r.REBACK_CREATE_DATE,'%Y-%m') rebackMonth,
  166. SUM(CASE WHEN (o.SALES_STATUS = 2 OR o.SALES_STATUS = 5 OR o.SALES_STATUS = 12) THEN o.SALES_YET_AMOUNT ELSE 0 END) monthMoney,
  167. SUM(CASE WHEN r.REBACK_STATUS = 2 THEN r.REBACK_MONEY ELSE 0 END) alreadyMoney,
  168. SUM(CASE WHEN r.REBACK_STATUS = 1 THEN r.REBACK_MONEY ELSE 0 END) waitMoney
  169. from
  170. TB_IAMBERRY_REBACK r LEFT JOIN TB_IAMBERRY_SHOP_SALES_ORDER o ON r.REBACK_ORDERID = o.SALES_ORDERID
  171. LEFT JOIN TB_IAMBERRY_PLACE_INFO p ON r.REBACK_TO_OPENID = p.PLACE_OPENID
  172. <where>
  173. <if test="rebackMonth != null and rebackMonth != ''">
  174. DATE_FORMAT(r.REBACK_CREATE_DATE,'%Y-%m') = DATE_FORMAT(#{rebackMonth},'%Y-%m')
  175. </if>
  176. <if test="placeName != null and placeName != ''">
  177. AND p.PLACE_NAME LIKE CONCAT('%',#{placeName},'%')
  178. </if>
  179. <if test="placeType != null and placeType != '' and placeType != '门店'.toString()">
  180. AND PLACE_ROLE_ID = (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = #{placeType})
  181. </if>
  182. <if test="placeType != null and placeType != '' and placeType == '门店'.toString()">
  183. AND (PLACE_ROLE_ID = (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = #{placeType}) OR PLACE_ROLE_ID = (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = '母婴店'))
  184. </if>
  185. </where>
  186. GROUP BY
  187. DATE_FORMAT(r.REBACK_CREATE_DATE,'%Y-%m'),r.REBACK_TO_OPENID
  188. LIMIT ${page.recordBegin},${page.pageSize}
  189. </select>
  190. <!-- 按月份查询商户层收益总条目数 -->
  191. <select id="selectMarketListCount" parameterType="MarketInfo" resultType="Integer">
  192. SELECT COUNT(a.rebackMonth) FROM (SELECT
  193. DATE_FORMAT(r.REBACK_CREATE_DATE,'%Y-%m') rebackMonth
  194. FROM
  195. TB_IAMBERRY_REBACK r LEFT JOIN TB_IAMBERRY_SHOP_SALES_ORDER o ON r.REBACK_FROM_OPENID = o.SALES_ORDERID
  196. LEFT JOIN TB_IAMBERRY_PLACE_INFO p ON r.REBACK_TO_OPENID = p.PLACE_OPENID
  197. <where>
  198. <if test="rebackMonth != null and rebackMonth != ''">
  199. DATE_FORMAT(r.REBACK_CREATE_DATE,'%Y-%m') = DATE_FORMAT(#{rebackMonth},'%Y-%m')
  200. </if>
  201. <if test="placeName != null and placeName != ''">
  202. AND p.PLACE_NAME LIKE CONCAT('%',#{placeName},'%')
  203. </if>
  204. <if test="placeType != null and placeType != ''">
  205. AND PLACE_ROLE_ID = (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = #{placeType})
  206. </if>
  207. </where>
  208. GROUP BY
  209. DATE_FORMAT(r.REBACK_CREATE_DATE,'%Y-%m'),r.REBACK_TO_OPENID) a
  210. </select>
  211. <select id="selectPlaceList" resultType="MarketInfo">
  212. SELECT
  213. PLACE_ID placeId,
  214. PLACE_NAME storeName,
  215. PLACE_PID placePid,
  216. PLACE_OPENID palceOpenid,
  217. (SELECT PLACE_NAME FROM TB_IAMBERRY_PLACE_INFO WHERE PLACE_ID = placePid) cityName,
  218. (SELECT PLACE_NAME FROM TB_IAMBERRY_PLACE_INFO WHERE PLACE_ID = (SELECT PLACE_PID FROM TB_IAMBERRY_PLACE_INFO WHERE PLACE_ID = placePid)) provinceName
  219. FROM
  220. TB_IAMBERRY_PLACE_INFO
  221. WHERE PLACE_ROLE_ID = (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = '门店')
  222. UNION
  223. SELECT
  224. PLACE_ID placeId,
  225. NULL storeName,
  226. PLACE_PID placePid,
  227. PLACE_OPENID palceOpenid,
  228. PLACE_NAME cityName,
  229. (SELECT PLACE_NAME FROM TB_IAMBERRY_PLACE_INFO WHERE PLACE_ID = placePid) provinceName
  230. FROM TB_IAMBERRY_PLACE_INFO
  231. WHERE PLACE_ROLE_ID = (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = '代理')
  232. UNION
  233. SELECT
  234. PLACE_ID placeId,
  235. PLACE_NAME storeName,
  236. PLACE_PID placePid,
  237. PLACE_OPENID palceOpenid,
  238. NULL cityName,
  239. (SELECT PLACE_NAME FROM TB_IAMBERRY_PLACE_INFO WHERE PLACE_ID = placePid) provinceName
  240. FROM
  241. TB_IAMBERRY_PLACE_INFO
  242. WHERE PLACE_ROLE_ID = (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = '母婴店')
  243. UNION
  244. SELECT
  245. PLACE_ID placeId,
  246. NULL storeName,
  247. PLACE_PID placePid,
  248. PLACE_OPENID palceOpenid,
  249. NULL cityName,
  250. PLACE_NAME provinceName
  251. FROM
  252. TB_IAMBERRY_PLACE_INFO
  253. WHERE PLACE_ROLE_ID = (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = '省代')
  254. </select>
  255. <!-- 查询总关注人数 -->
  256. <select id="selectAttentionSum" resultType="Integer">
  257. SELECT
  258. COUNT(DISTINCT USER_ID)
  259. FROM
  260. TB_IAMBERRY_USER_USERINFO
  261. WHERE
  262. USER_STATUS <![CDATA[<>]]> 1
  263. </select>
  264. <!-- 查询总销售台数和总金额 -->
  265. <select id="selectSalesAmount" resultType="StatisticsInfo">
  266. SELECT
  267. SUM(t.amount) salesMoney,
  268. SUM(t.num) salesSum
  269. FROM
  270. (SELECT
  271. SUM(ITEM_NUM) num,
  272. SALES_YET_AMOUNT amount
  273. FROM
  274. TB_IAMBERRY_SHOP_SALES_ORDER LEFT JOIN TB_IAMBERRY_SHOP_ORDER_ITEM
  275. ON SALES_ORDERID = iTEM_SALES_ORDERID
  276. WHERE
  277. SALES_STATUS = 12
  278. GROUP BY SALES_ORDERID
  279. ) t
  280. </select>
  281. <!-- 查询今日关注人数,今日取消关注人数 -->
  282. <select id="selectCurrentAttentionNum" resultType="StatisticsInfo">
  283. SELECT
  284. SUM(CASE WHEN USER_STATUS = 2 then 1 else 0 end) newAttentionNum,
  285. SUM(CASE WHEN USER_STATUS = 0 then 1 else 0 end) cancelAttentionNum
  286. FROM
  287. TB_IAMBERRY_USER_USERINFO
  288. WHERE
  289. DATE_FORMAT(USER_SUB_DATE,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
  290. </select>
  291. <!-- 查询当前已激活省代数量,市代数量、门店数量 -->
  292. <select id="selectPlaceActivate" resultType="ActivateInfo">
  293. SELECT
  294. ROLE_NAME roleName,
  295. COUNT(PLACE_ID) activateNum
  296. FROM
  297. TB_IAMBERRY_PLACE_INFO LEFT JOIN TB_IAMBERRY_PLACE_ROLE
  298. ON PLACE_ROLE_ID = ROLE_ID
  299. WHERE
  300. PLACE_OPENID IS NOT NULL
  301. GROUP BY PLACE_ROLE_ID
  302. </select>
  303. <!-- 查询当前门店二维码启用数量 -->
  304. <select id="selectQrCodeNum" resultType="Integer">
  305. SELECT
  306. COUNT(DISTINCT PLACE_ID) qrCodeNum
  307. FROM
  308. TB_IAMBERRY_PLACE_INFO
  309. WHERE
  310. PLACE_ROLE_ID IN (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = '门店' OR ROLE_NAME = '母婴店')
  311. AND
  312. PLACE_PIDS IN (SELECT USER_DEALERS FROM TB_IAMBERRY_USER_USERINFO)
  313. </select>
  314. <!-- 查询当前通过门店二维码销售台数,总金额 -->
  315. <select id="selectStoreSalesInfo" resultType="StatisticsInfo">
  316. SELECT
  317. SUM(t.num) storeSalesNum,
  318. SUM(t.amount) storeSalesMoney
  319. FROM
  320. (SELECT
  321. SUM(ITEM_NUM) num,
  322. SALES_YET_AMOUNT amount
  323. FROM
  324. TB_IAMBERRY_SHOP_SALES_ORDER LEFT JOIN TB_IAMBERRY_SHOP_ORDER_ITEM
  325. ON SALES_ORDERID = ITEM_SALES_ORDERID
  326. WHERE
  327. SALES_STATUS = 12
  328. AND
  329. SALES_OPENID IN
  330. (SELECT
  331. DISTINCT USER_OPENID
  332. FROM
  333. TB_IAMBERRY_USER_USERINFO LEFT JOIN TB_IAMBERRY_PLACE_INFO
  334. ON USER_DEALERS = PLACE_PIDS
  335. WHERE
  336. PLACE_ROLE_ID IN (SELECT ROLE_ID FROM TB_IAMBERRY_PLACE_ROLE WHERE ROLE_NAME = '门店' OR ROLE_NAME = '母婴店')
  337. )
  338. GROUP BY SALES_ORDERID
  339. )t;
  340. </select>
  341. </mapper>