Files
jcs/ruoyi-modules/ruoyi-mall/src/main/resources/mapper/mall/HyMemberCodeMapper.xml
2025-04-03 10:50:11 +08:00

67 lines
2.6 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.mall.mapper.HyMemberCodeMapper">
<select id="monthPerCode" resultType="org.dromara.mall.domain.vo.PerSumVo">
SELECT
`type`,
max( `count` ) AS `num`
FROM
(
SELECT
count(1) AS `count`,
DATE_FORMAT( create_time, '%Y-%m-%d' ) AS `type`
FROM
`hy_member_code` a
WHERE
DATE_FORMAT( create_time, '%Y%m' ) = DATE_FORMAT(#{month}, '%Y%m' )
AND `status` in (0,1)
GROUP BY
`type` UNION ALL
SELECT
0 AS `copunt`,
@cdate := date_add( @cdate, INTERVAL - 1 DAY ) `type`
FROM
( SELECT @cdate := date_add( last_day(#{month}), INTERVAL + 1 DAY ) FROM `hy_member_code` ) t1
WHERE
@cdate > (
date_add(#{month}, INTERVAL - DAY (#{month})+ 1 DAY ))
) _tmpAllTable
GROUP BY `type`
ORDER BY `type`
</select>
<select id="yearPerCode" resultType="org.dromara.mall.domain.vo.PerSumVo">
WITH RECURSIVE DateSeries AS (
SELECT STR_TO_DATE(CONCAT(YEAR(#{year}), '-', '01', '-', '01'), '%Y-%m-%d') AS click_date
UNION ALL
SELECT DATE_ADD(click_date, INTERVAL 1 MONTH)
FROM DateSeries
WHERE click_date &lt; DATE_ADD(STR_TO_DATE(CONCAT(YEAR(#{year}), '-', '01', '-', '01'), '%Y-%m-%d'), INTERVAL 11 MONTH)
)
SELECT
CONCAT(YEAR(ds.click_date), '-', LPAD(MONTH(ds.click_date), 2, '0')) AS `type`,
IFNULL(b.`sum`, 0) AS `sum`
FROM
DateSeries ds
LEFT JOIN (
SELECT
COUNT(1) AS `sum`,
CONCAT(YEAR(create_time), '-', LPAD(MONTH(create_time), 2, '0')) AS mon
FROM
`hy_member_code`
WHERE
`del_flag` = 1
AND create_time BETWEEN STR_TO_DATE(CONCAT(YEAR(#{year}), '-', '01', '-', '01'), '%Y-%m-%d')
AND DATE_ADD(STR_TO_DATE(CONCAT(YEAR(#{year}), '-', '01', '-', '01'), '%Y-%m-%d'), INTERVAL 11 MONTH)
GROUP BY
mon
) b ON CONCAT(YEAR(ds.click_date), '-', LPAD(MONTH(ds.click_date), 2, '0')) = b.mon
ORDER BY
ds.click_date;
</select>
</mapper>