Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
midjourney-proxy
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
徐少华
midjourney-proxy
Commits
4b59e54c
Commit
4b59e54c
authored
Nov 04, 2019
by
zhangdongwei-intern
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat-1001865: 群打卡排行榜新增点赞和分享功能
parent
d2167c92
Show whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
1564 additions
and
15 deletions
+1564
-15
GroupQrcodeDao.java
...c/main/java/com/pcloud/book/group/dao/GroupQrcodeDao.java
+7
-0
GroupQrcodeDaoImpl.java
...va/com/pcloud/book/group/dao/impl/GroupQrcodeDaoImpl.java
+5
-0
LunarCalendarUtils.java
.../java/com/pcloud/book/util/common/LunarCalendarUtils.java
+490
-0
WeixinClockBiz.java
.../java/com/pcloud/book/weixinclock/biz/WeixinClockBiz.java
+3
-2
WeixinClockPraiseBiz.java
...com/pcloud/book/weixinclock/biz/WeixinClockPraiseBiz.java
+27
-0
WeixinClockShareBiz.java
.../com/pcloud/book/weixinclock/biz/WeixinClockShareBiz.java
+19
-0
WeixinClockBizImpl.java
.../pcloud/book/weixinclock/biz/impl/WeixinClockBizImpl.java
+26
-8
WeixinClockPraiseBizImpl.java
...d/book/weixinclock/biz/impl/WeixinClockPraiseBizImpl.java
+106
-0
WeixinClockShareBizImpl.java
...ud/book/weixinclock/biz/impl/WeixinClockShareBizImpl.java
+77
-0
WeixinClockBrowseDao.java
...com/pcloud/book/weixinclock/dao/WeixinClockBrowseDao.java
+13
-0
WeixinClockMemberDao.java
...com/pcloud/book/weixinclock/dao/WeixinClockMemberDao.java
+8
-0
WeixinClockPraiseDao.java
...com/pcloud/book/weixinclock/dao/WeixinClockPraiseDao.java
+29
-0
WeixinClockShareDao.java
.../com/pcloud/book/weixinclock/dao/WeixinClockShareDao.java
+13
-0
WeixinClockShareWordDao.java
.../pcloud/book/weixinclock/dao/WeixinClockShareWordDao.java
+17
-0
WeixinClockTopicDao.java
.../com/pcloud/book/weixinclock/dao/WeixinClockTopicDao.java
+10
-0
WeixinClockBrowseDaoImpl.java
...d/book/weixinclock/dao/impl/WeixinClockBrowseDaoImpl.java
+18
-0
WeixinClockMemberDaoImpl.java
...d/book/weixinclock/dao/impl/WeixinClockMemberDaoImpl.java
+8
-0
WeixinClockPraiseDaoImpl.java
...d/book/weixinclock/dao/impl/WeixinClockPraiseDaoImpl.java
+29
-0
WeixinClockShareDaoImpl.java
...ud/book/weixinclock/dao/impl/WeixinClockShareDaoImpl.java
+17
-0
WeixinClockShareWordDaoImpl.java
...ook/weixinclock/dao/impl/WeixinClockShareWordDaoImpl.java
+20
-0
WeixinClockTopicDaoImpl.java
...ud/book/weixinclock/dao/impl/WeixinClockTopicDaoImpl.java
+9
-0
GetByMemberAndUserDto.java
...om/pcloud/book/weixinclock/dto/GetByMemberAndUserDto.java
+19
-0
ListWeixinClockRankDto.java
...m/pcloud/book/weixinclock/dto/ListWeixinClockRankDto.java
+41
-0
RankDto.java
...rc/main/java/com/pcloud/book/weixinclock/dto/RankDto.java
+35
-0
WeixinClockBrowse.java
...com/pcloud/book/weixinclock/entity/WeixinClockBrowse.java
+33
-0
WeixinClockPraise.java
...com/pcloud/book/weixinclock/entity/WeixinClockPraise.java
+38
-0
WeixinClockShare.java
.../com/pcloud/book/weixinclock/entity/WeixinClockShare.java
+32
-0
WeixinClockShareWord.java
.../pcloud/book/weixinclock/entity/WeixinClockShareWord.java
+17
-0
WeixinClockFacade.java
...com/pcloud/book/weixinclock/facade/WeixinClockFacade.java
+4
-1
WeixinClockFacadeImpl.java
...d/book/weixinclock/facade/impl/WeixinClockFacadeImpl.java
+15
-2
WeixinClockPraiseFacadeImpl.java
.../weixinclock/facade/impl/WeixinClockPraiseFacadeImpl.java
+52
-0
WeixinClockShareFacadeImpl.java
...k/weixinclock/facade/impl/WeixinClockShareFacadeImpl.java
+52
-0
PraiseForMemberRequestVO.java
...book/weixinclock/vo/request/PraiseForMemberRequestVO.java
+46
-0
DoShareResponseVO.java
...cloud/book/weixinclock/vo/response/DoShareResponseVO.java
+71
-0
GroupQrcode.Mapper.xml
...ok/src/main/resources/mapper/group/GroupQrcode.Mapper.xml
+6
-0
WeixinClockBrowse.Mapper.xml
...resources/mapper/weixinclock/WeixinClockBrowse.Mapper.xml
+21
-0
WeixinClockMember.Mapper.xml
...resources/mapper/weixinclock/WeixinClockMember.Mapper.xml
+15
-2
WeixinClockPraise.Mapper.xml
...resources/mapper/weixinclock/WeixinClockPraise.Mapper.xml
+68
-0
WeixinClockShare.Mapper.xml
.../resources/mapper/weixinclock/WeixinClockShare.Mapper.xml
+19
-0
WeixinClockShareWord.Mapper.xml
...ources/mapper/weixinclock/WeixinClockShareWord.Mapper.xml
+21
-0
WeixinClockTopic.Mapper.xml
.../resources/mapper/weixinclock/WeixinClockTopic.Mapper.xml
+8
-0
No files found.
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/GroupQrcodeDao.java
View file @
4b59e54c
...
@@ -273,4 +273,11 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
...
@@ -273,4 +273,11 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
* @return
* @return
*/
*/
List
<
Long
>
getIdsByBookGroupId
(
Long
bookGroupId
);
List
<
Long
>
getIdsByBookGroupId
(
Long
bookGroupId
);
/**
* 根据群id获取群信息
* @param wxGroupId
* @return
*/
GroupQrcode
getByWxGroupId
(
String
wxGroupId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/impl/GroupQrcodeDaoImpl.java
View file @
4b59e54c
...
@@ -277,4 +277,9 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
...
@@ -277,4 +277,9 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
public
List
<
Long
>
getIdsByBookGroupId
(
Long
bookGroupId
)
{
public
List
<
Long
>
getIdsByBookGroupId
(
Long
bookGroupId
)
{
return
this
.
getSqlSession
().
selectList
(
this
.
getStatement
(
"getIdsByBookGroupId"
),
bookGroupId
);
return
this
.
getSqlSession
().
selectList
(
this
.
getStatement
(
"getIdsByBookGroupId"
),
bookGroupId
);
}
}
@Override
public
GroupQrcode
getByWxGroupId
(
String
wxGroupId
)
{
return
super
.
getSessionTemplate
().
selectOne
(
getStatement
(
"getByWxGroupId"
),
wxGroupId
);
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/util/common/LunarCalendarUtils.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
util
.
common
;
import
com.pcloud.common.utils.string.StringUtil
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.GregorianCalendar
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.TimeZone
;
/**
* @Describe: 工具类,实现阴阳历互转
* @Author: zhangdongwei
* @Date: Create on 22:01 2019/10/28 0028
*/
public
class
LunarCalendarUtils
{
/**
* 支持转换的最小农历年份
*/
public
static
final
int
MIN_YEAR
=
1900
;
/**
* 支持转换的最大农历年份
*/
public
static
final
int
MAX_YEAR
=
2099
;
private
static
final
String
[]
CHINESE_NUM
=
{
"零"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"七"
,
"八"
,
"九"
,
"十"
,
"冬"
,
"腊"
};
private
static
final
String
[]
HEAD
=
{
"初"
,
"十"
,
"廿"
,
"卅"
};
private
static
final
String
[]
GAN
=
{
"甲"
,
"乙"
,
"丙"
,
"丁"
,
"戊"
,
"己"
,
"庚"
,
"辛"
,
"壬"
,
"癸"
};
private
static
final
String
[]
ZHI
=
{
"子"
,
"丑"
,
"寅"
,
"卯"
,
"辰"
,
"巳"
,
"午"
,
"未"
,
"申"
,
"酉"
,
"戌"
,
"亥"
};
private
static
final
int
[]
MONTH_DAY
=
{
0
,
31
,
28
,
31
,
30
,
31
,
30
,
31
,
31
,
30
,
31
,
30
,
31
};
/**
* 公历每月前的天数
*/
private
static
final
int
[]
DAYS_BEFORE_MONTH
=
{
0
,
31
,
59
,
90
,
120
,
151
,
181
,
212
,
243
,
273
,
304
,
334
,
365
};
/**
* 用来表示1900年到2099年间农历年份的相关信息,共24位bit的16进制表示,其中:
* 1. 前4位表示该年闰哪个月;
* 2. 5-17位表示农历年份13个月的大小月分布,0表示小,1表示大;
* 3. 最后7位表示农历年首(正月初一)对应的公历日期。
* 以2014年的数据0x955ABF为例说明:
* 1001 0101 0101 1010 1011 1111
* 闰九月 农历正月初一对应公历1月31号
*/
private
static
final
int
[]
LUNAR_INFO
=
{
/*1900*/
0x84B6BF
,
/*1901-1910*/
0x04AE53
,
0x0A5748
,
0x5526BD
,
0x0D2650
,
0x0D9544
,
0x46AAB9
,
0x056A4D
,
0x09AD42
,
0x24AEB6
,
0x04AE4A
,
/*1911-1920*/
0x6A4DBE
,
0x0A4D52
,
0x0D2546
,
0x5D52BA
,
0x0B544E
,
0x0D6A43
,
0x296D37
,
0x095B4B
,
0x749BC1
,
0x049754
,
/*1921-1930*/
0x0A4B48
,
0x5B25BC
,
0x06A550
,
0x06D445
,
0x4ADAB8
,
0x02B64D
,
0x095742
,
0x2497B7
,
0x04974A
,
0x664B3E
,
/*1931-1940*/
0x0D4A51
,
0x0EA546
,
0x56D4BA
,
0x05AD4E
,
0x02B644
,
0x393738
,
0x092E4B
,
0x7C96BF
,
0x0C9553
,
0x0D4A48
,
/*1941-1950*/
0x6DA53B
,
0x0B554F
,
0x056A45
,
0x4AADB9
,
0x025D4D
,
0x092D42
,
0x2C95B6
,
0x0A954A
,
0x7B4ABD
,
0x06CA51
,
/*1951-1960*/
0x0B5546
,
0x555ABB
,
0x04DA4E
,
0x0A5B43
,
0x352BB8
,
0x052B4C
,
0x8A953F
,
0x0E9552
,
0x06AA48
,
0x6AD53C
,
/*1961-1970*/
0x0AB54F
,
0x04B645
,
0x4A5739
,
0x0A574D
,
0x052642
,
0x3E9335
,
0x0D9549
,
0x75AABE
,
0x056A51
,
0x096D46
,
/*1971-1980*/
0x54AEBB
,
0x04AD4F
,
0x0A4D43
,
0x4D26B7
,
0x0D254B
,
0x8D52BF
,
0x0B5452
,
0x0B6A47
,
0x696D3C
,
0x095B50
,
/*1981-1990*/
0x049B45
,
0x4A4BB9
,
0x0A4B4D
,
0xAB25C2
,
0x06A554
,
0x06D449
,
0x6ADA3D
,
0x0AB651
,
0x095746
,
0x5497BB
,
/*1991-2000*/
0x04974F
,
0x064B44
,
0x36A537
,
0x0EA54A
,
0x86B2BF
,
0x05AC53
,
0x0AB647
,
0x5936BC
,
0x092E50
,
0x0C9645
,
/*2001-2010*/
0x4D4AB8
,
0x0D4A4C
,
0x0DA541
,
0x25AAB6
,
0x056A49
,
0x7AADBD
,
0x025D52
,
0x092D47
,
0x5C95BA
,
0x0A954E
,
/*2011-2020*/
0x0B4A43
,
0x4B5537
,
0x0AD54A
,
0x955ABF
,
0x04BA53
,
0x0A5B48
,
0x652BBC
,
0x052B50
,
0x0A9345
,
0x474AB9
,
/*2021-2030*/
0x06AA4C
,
0x0AD541
,
0x24DAB6
,
0x04B64A
,
0x6a573D
,
0x0A4E51
,
0x0D2646
,
0x5E933A
,
0x0D534D
,
0x05AA43
,
/*2031-2040*/
0x36B537
,
0x096D4B
,
0xB4AEBF
,
0x04AD53
,
0x0A4D48
,
0x6D25BC
,
0x0D254F
,
0x0D5244
,
0x5DAA38
,
0x0B5A4C
,
/*2041-2050*/
0x056D41
,
0x24ADB6
,
0x049B4A
,
0x7A4BBE
,
0x0A4B51
,
0x0AA546
,
0x5B52BA
,
0x06D24E
,
0x0ADA42
,
0x355B37
,
/*2051-2060*/
0x09374B
,
0x8497C1
,
0x049753
,
0x064B48
,
0x66A53C
,
0x0EA54F
,
0x06AA44
,
0x4AB638
,
0x0AAE4C
,
0x092E42
,
/*2061-2070*/
0x3C9735
,
0x0C9649
,
0x7D4ABD
,
0x0D4A51
,
0x0DA545
,
0x55AABA
,
0x056A4E
,
0x0A6D43
,
0x452EB7
,
0x052D4B
,
/*2071-2080*/
0x8A95BF
,
0x0A9553
,
0x0B4A47
,
0x6B553B
,
0x0AD54F
,
0x055A45
,
0x4A5D38
,
0x0A5B4C
,
0x052B42
,
0x3A93B6
,
/*2081-2090*/
0x069349
,
0x7729BD
,
0x06AA51
,
0x0AD546
,
0x54DABA
,
0x04B64E
,
0x0A5743
,
0x452738
,
0x0D264A
,
0x8E933E
,
/*2091-2099*/
0x0D5252
,
0x0DAA47
,
0x66B53B
,
0x056D4F
,
0x04AE45
,
0x4A4EB9
,
0x0A4D4C
,
0x0D1541
,
0x2D92B5
};
final
static
String
[]
SOLAR_TERM
=
new
String
[]
{
"小寒"
,
"大寒"
,
"立春"
,
"雨水"
,
"惊蛰"
,
"春分"
,
"清明"
,
"谷雨"
,
"立夏"
,
"小满"
,
"芒种"
,
"夏至"
,
"小暑"
,
"大暑"
,
"立秋"
,
"处暑"
,
"白露"
,
"秋分"
,
"寒露"
,
"霜降"
,
"立冬"
,
"小雪"
,
"大雪"
,
"冬至"
};
final
static
long
[]
SOLAR_TERM_INFO
=
new
long
[]
{
0
,
21208
,
42467
,
63836
,
85337
,
107014
,
128867
,
150921
,
173149
,
195551
,
218072
,
240693
,
263343
,
285989
,
308563
,
331033
,
353350
,
375494
,
397447
,
419210
,
440795
,
462224
,
483532
,
504758
};
/**
* 将农历日期转换为公历日期
*
* @param year 农历年份
* @param month 农历月
* @param monthDay 农历日
* @param isLeapMonth 该月是否是闰月
* @return 返回农历日期对应的公历日期,year0, month1, day2.
*/
public
static
final
int
[]
lunarToSolar
(
int
year
,
int
month
,
int
monthDay
,
boolean
isLeapMonth
)
{
int
dayOffset
;
int
leapMonth
;
int
i
;
if
(
year
<
MIN_YEAR
||
year
>
MAX_YEAR
||
month
<
1
||
month
>
12
||
monthDay
<
1
||
monthDay
>
30
)
{
throw
new
IllegalArgumentException
(
"Illegal lunar date, must be like that:\n\t"
+
"year : 1900~2099\n\t"
+
"month : 1~12\n\t"
+
"day : 1~30"
);
}
dayOffset
=
(
LUNAR_INFO
[
year
-
MIN_YEAR
]
&
0x001F
)
-
1
;
if
(((
LUNAR_INFO
[
year
-
MIN_YEAR
]
&
0x0060
)
>>
5
)
==
2
)
{
dayOffset
+=
31
;
}
for
(
i
=
1
;
i
<
month
;
i
++)
{
if
((
LUNAR_INFO
[
year
-
MIN_YEAR
]
&
(
0x80000
>>
(
i
-
1
)))
==
0
)
{
dayOffset
+=
29
;
}
else
{
dayOffset
+=
30
;
}
}
dayOffset
+=
monthDay
;
leapMonth
=
(
LUNAR_INFO
[
year
-
MIN_YEAR
]
&
0xf00000
)
>>
20
;
// 这一年有闰月
if
(
leapMonth
!=
0
)
{
if
(
month
>
leapMonth
||
(
month
==
leapMonth
&&
isLeapMonth
))
{
if
((
LUNAR_INFO
[
year
-
MIN_YEAR
]
&
(
0x80000
>>
(
month
-
1
)))
==
0
)
{
dayOffset
+=
29
;
}
else
{
dayOffset
+=
30
;
}
}
}
if
(
dayOffset
>
366
||
(
year
%
4
!=
0
&&
dayOffset
>
365
))
{
year
+=
1
;
if
(
year
%
4
==
1
)
{
dayOffset
-=
366
;
}
else
{
dayOffset
-=
365
;
}
}
int
[]
solarInfo
=
new
int
[
3
];
for
(
i
=
1
;
i
<
13
;
i
++)
{
int
iPos
=
DAYS_BEFORE_MONTH
[
i
];
if
(
year
%
4
==
0
&&
i
>
2
)
{
iPos
+=
1
;
}
if
(
year
%
4
==
0
&&
i
==
2
&&
iPos
+
1
==
dayOffset
)
{
solarInfo
[
1
]
=
i
;
solarInfo
[
2
]
=
dayOffset
-
31
;
break
;
}
if
(
iPos
>=
dayOffset
)
{
solarInfo
[
1
]
=
i
;
iPos
=
DAYS_BEFORE_MONTH
[
i
-
1
];
if
(
year
%
4
==
0
&&
i
>
2
)
{
iPos
+=
1
;
}
if
(
dayOffset
>
iPos
)
{
solarInfo
[
2
]
=
dayOffset
-
iPos
;
}
else
if
(
dayOffset
==
iPos
)
{
if
(
year
%
4
==
0
&&
i
==
2
)
{
solarInfo
[
2
]
=
DAYS_BEFORE_MONTH
[
i
]
-
DAYS_BEFORE_MONTH
[
i
-
1
]
+
1
;
}
else
{
solarInfo
[
2
]
=
DAYS_BEFORE_MONTH
[
i
]
-
DAYS_BEFORE_MONTH
[
i
-
1
];
}
}
else
{
solarInfo
[
2
]
=
dayOffset
;
}
break
;
}
}
solarInfo
[
0
]
=
year
;
return
solarInfo
;
}
/**
* 将公历日期转换为农历日期,且标识是否是闰月
*
* @param year
* @param month
* @param monthDay
* @return 返回公历日期对应的农历日期,year0,month1,day2,leap3
*/
public
static
final
int
[]
solarToLunar
(
int
year
,
int
month
,
int
monthDay
)
{
int
[]
lunarDate
=
new
int
[
4
];
Date
baseDate
=
new
GregorianCalendar
(
1900
,
0
,
31
).
getTime
();
Date
objDate
=
new
GregorianCalendar
(
year
,
month
-
1
,
monthDay
).
getTime
();
int
offset
=
(
int
)
((
objDate
.
getTime
()
-
baseDate
.
getTime
())
/
86400000L
);
// 用offset减去每农历年的天数计算当天是农历第几天
// iYear最终结果是农历的年份, offset是当年的第几天
int
iYear
,
daysOfYear
=
0
;
for
(
iYear
=
MIN_YEAR
;
iYear
<=
MAX_YEAR
&&
offset
>
0
;
iYear
++)
{
daysOfYear
=
daysInLunarYear
(
iYear
);
offset
-=
daysOfYear
;
}
if
(
offset
<
0
)
{
offset
+=
daysOfYear
;
iYear
--;
}
// 农历年份
lunarDate
[
0
]
=
iYear
;
int
leapMonth
=
leapMonth
(
iYear
);
// 闰哪个月,1-12
boolean
isLeap
=
false
;
// 用当年的天数offset,逐个减去每月(农历)的天数,求出当天是本月的第几天
int
iMonth
,
daysOfMonth
=
0
;
for
(
iMonth
=
1
;
iMonth
<=
13
&&
offset
>
0
;
iMonth
++)
{
daysOfMonth
=
daysInLunarMonth
(
iYear
,
iMonth
);
offset
-=
daysOfMonth
;
}
// 当前月超过闰月,要校正
if
(
leapMonth
!=
0
&&
iMonth
>
leapMonth
)
{
--
iMonth
;
if
(
iMonth
==
leapMonth
)
{
isLeap
=
true
;
}
}
// offset小于0时,也要校正
if
(
offset
<
0
)
{
offset
+=
daysOfMonth
;
--
iMonth
;
}
lunarDate
[
1
]
=
iMonth
;
lunarDate
[
2
]
=
offset
+
1
;
lunarDate
[
3
]
=
isLeap
?
1
:
0
;
return
lunarDate
;
}
/**
* 传回农历year年month月的总天数
*
* @param year 要计算的年份
* @param month 要计算的月
* @return 传回天数
*/
final
public
static
int
daysInMonth
(
int
year
,
int
month
)
{
return
daysInMonth
(
year
,
month
,
false
);
}
/**
* 传回农历year年month月的总天数
*
* @param year 要计算的年份
* @param month 要计算的月
* @param leap 当月是否是闰月
* @return 传回天数,如果闰月是错误的,返回0.
*/
public
static
final
int
daysInMonth
(
int
year
,
int
month
,
boolean
leap
)
{
int
leapMonth
=
leapMonth
(
year
);
int
offset
=
0
;
// 如果本年有闰月且month大于闰月时,需要校正
if
(
leapMonth
!=
0
&&
month
>
leapMonth
)
{
offset
=
1
;
}
// 不考虑闰月
if
(!
leap
)
{
return
daysInLunarMonth
(
year
,
month
+
offset
);
}
else
{
// 传入的闰月是正确的月份
if
(
leapMonth
!=
0
&&
leapMonth
==
month
)
{
return
daysInLunarMonth
(
year
,
month
+
1
);
}
}
return
0
;
}
/**
* 传回农历 year年的总天数
*
* @param year 将要计算的年份
* @return 返回传入年份的总天数
*/
private
static
int
daysInLunarYear
(
int
year
)
{
int
i
,
sum
=
348
;
if
(
leapMonth
(
year
)
!=
0
)
{
sum
=
377
;
}
int
monthInfo
=
LUNAR_INFO
[
year
-
MIN_YEAR
]
&
0x0FFF80
;
for
(
i
=
0x80000
;
i
>
0x7
;
i
>>=
1
)
{
if
((
monthInfo
&
i
)
!=
0
)
{
sum
+=
1
;
}
}
return
sum
;
}
/**
* 传回农历 year年month月的总天数,总共有13个月包括闰月
*
* @param year 将要计算的年份
* @param month 将要计算的月份
* @return 传回农历 year年month月的总天数
*/
private
static
int
daysInLunarMonth
(
int
year
,
int
month
)
{
if
((
LUNAR_INFO
[
year
-
MIN_YEAR
]
&
(
0x100000
>>
month
))
==
0
)
{
return
29
;
}
else
{
return
30
;
}
}
/**
* 传回农历 year年闰哪个月 1-12 , 没闰传回 0
*
* @param year 将要计算的年份
* @return 传回农历 year年闰哪个月1-12, 没闰传回 0
*/
private
static
int
leapMonth
(
int
year
)
{
return
((
LUNAR_INFO
[
year
-
MIN_YEAR
]
&
0xF00000
))
>>
20
;
}
/**
* 返回某一年的元旦农历日期
* @param year
* @return
*/
private
static
int
[]
firstDayInLunar
(
int
year
){
return
solarToLunar
(
year
,
1
,
1
);
}
/**
* 某年的第n个节气为几日(从0小寒起算)
* @param y
* @param n
* @return
*/
final
private
static
int
sTerm
(
int
y
,
int
n
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
1900
,
0
,
6
,
2
,
5
,
0
);
long
temp
=
calendar
.
getTime
().
getTime
();
calendar
.
setTime
(
new
Date
((
long
)
((
31556925974.7
*
(
y
-
1900
)
+
SOLAR_TERM_INFO
[
n
]
*
60000L
)
+
temp
)));
return
calendar
.
get
(
Calendar
.
DAY_OF_MONTH
);
}
/**
* 传入年份,返回干支年
* 公元元年是辛酉年,干的周期是10,支的周期是12
* @param year
* @return
*/
private
static
String
ganZhiYear
(
int
year
){
int
gan
=
year
%
10
>
3
?
(
year
%
10
-
3
)
:
(
year
%
10
-
3
+
10
);
int
zhi
=
year
%
12
>
3
?
(
year
%
12
-
3
)
:
(
year
%
12
-
3
+
12
);
return
GAN
[
gan
-
1
]
+
ZHI
[
zhi
-
1
]
+
"年"
;
}
/**
* 传入年月日和农历年月,返回干支月
* 支的周期是12, 正好对应12个月
* 干的周期是10,每一年的一月的“干”间隔2(即只能是:甲丙戊庚壬),每年一月的周期是5,
* @param month
* @return
*/
private
static
String
ganZhiMonth
(
int
year
,
int
month
,
int
day
,
int
lunarYear
,
int
lunarMonth
){
//该月第一个节气是一年里的第几个节气
int
num
=
month
*
2
-
2
;
//计算该节气在几日
int
d
=
sTerm
(
year
,
num
);
int
m
=
lunarMonth
;
int
y
=
lunarYear
;
if
(
day
<
d
){
//如果今天在本月第一个节气前 农历月份取上一月
y
=
lunarMonth
==
1
?
lunarYear
-
1
:
lunarYear
;
m
=
lunarMonth
==
1
?
12
:
lunarMonth
-
1
;
}
int
ganYear
=
y
%
10
>
3
?
(
y
%
10
-
3
)
:
(
y
%
10
-
3
+
10
);
int
gan
=
(
ganYear
*
2
+
m
)
%
10
;
gan
=
gan
==
0
?
10
:
gan
;
return
GAN
[
gan
-
1
]
+
ZHI
[
m
%
12
+
1
]
+
"月"
;
}
/**
* 传入年日,返回干支日
* 1900年元旦 己亥年 【猪年】 丙子月 甲戌日
* @param year
* @param month
* @param day
* @return
*/
private
static
String
ganZhiDay
(
int
year
,
int
month
,
int
day
){
int
ganZhi
=
0
;
int
num
=
0
;
for
(
int
i
=
1900
;
i
<
year
;
i
++
){
if
(
i
%
400
==
0
||
(
i
%
100
!=
0
&&
i
%
4
==
0
)){
num
+=
366
;
}
else
{
num
+=
365
;
}
}
for
(
int
i
=
1
;
i
<
month
;
i
++){
num
+=
MONTH_DAY
[
i
];
}
if
(
year
%
400
==
0
||
(
year
%
100
!=
0
&&
year
%
4
==
0
)){
num
+=
1
;
}
num
+=
day
;
num
%=
60
;
ganZhi
=
num
+
10
;
ganZhi
=
ganZhi
>
60
?
ganZhi
-
60
:
ganZhi
;
int
gan
=
ganZhi
%
10
==
0
?
ganZhi
%
10
+
10
:
ganZhi
%
10
;
int
zhi
=
ganZhi
%
12
==
0
?
ganZhi
%
12
+
12
:
ganZhi
%
12
;
return
GAN
[
gan
-
1
]
+
ZHI
[
zhi
-
1
]
+
"日"
;
}
/**
* 公历日期转农历日期
* @param date
* @return
*/
public
static
Map
<
String
,
String
>
dataToLunar
(
Date
date
){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
int
year
=
calendar
.
get
(
Calendar
.
YEAR
);
int
month
=
calendar
.
get
(
Calendar
.
MONTH
)
+
1
;
int
day
=
calendar
.
get
(
Calendar
.
DATE
);
int
[]
result
=
solarToLunar
(
year
,
month
,
day
);
Map
<
String
,
String
>
strMap
=
new
HashMap
<>();
String
lunar
=
CHINESE_NUM
[
result
[
0
]
/
1000
]
+
CHINESE_NUM
[
result
[
0
]
%
1000
/
100
]
+
CHINESE_NUM
[
result
[
0
]
%
100
/
10
]
+
CHINESE_NUM
[
result
[
0
]
%
10
]
+
"年 "
+
(
result
[
3
]
==
1
?
"闰"
:
""
)
+
(
result
[
1
]
==
1
?
"正"
:
CHINESE_NUM
[
result
[
1
]])
+
"月 "
;
if
(
result
[
2
]
==
20
||
result
[
2
]
==
30
){
lunar
+=
CHINESE_NUM
[
result
[
2
]
/
10
];
}
else
{
lunar
+=
HEAD
[
result
[
2
]
==
10
?
0
:
result
[
2
]
/
10
];
}
lunar
+=
CHINESE_NUM
[
result
[
2
]
%
10
==
0
?
10
:
result
[
2
]
%
10
]
+
"日"
;
strMap
.
put
(
"lunar"
,
lunar
);
String
ganZhi
=
ganZhiYear
(
year
)
+
" "
+
ganZhiMonth
(
year
,
month
,
day
,
result
[
0
],
result
[
1
])
+
" "
+
ganZhiDay
(
year
,
month
,
day
);
strMap
.
put
(
"ganZhi"
,
ganZhi
);
return
strMap
;
}
/*public static void main(String[] args){
SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
String str = "2023/2/1 00:00:00";
try {
Date d = sdf.parse(str);
*//*Calendar calendar = Calendar.getInstance();
calendar.setTime(d);
System.out.println(calendar.get(Calendar.MONTH) + 1);*//*
System.out.printf("字符串 %s 通过格式 yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s\n",str,d.toString());
System.out.println(dataToLunar(d));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}*/
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/biz/WeixinClockBiz.java
View file @
4b59e54c
...
@@ -2,6 +2,7 @@ package com.pcloud.book.weixinclock.biz;
...
@@ -2,6 +2,7 @@ package com.pcloud.book.weixinclock.biz;
import
com.pcloud.book.group.vo.BookGroupClassifyVO
;
import
com.pcloud.book.group.vo.BookGroupClassifyVO
;
import
com.pcloud.book.group.vo.ListGroupClassifyParam
;
import
com.pcloud.book.group.vo.ListGroupClassifyParam
;
import
com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto
;
import
com.pcloud.book.weixinclock.dto.RankDto
;
import
com.pcloud.book.weixinclock.dto.RankDto
;
import
com.pcloud.book.weixinclock.dto.WeixinClockDto
;
import
com.pcloud.book.weixinclock.dto.WeixinClockDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
...
@@ -77,10 +78,10 @@ public interface WeixinClockBiz {
...
@@ -77,10 +78,10 @@ public interface WeixinClockBiz {
/**
/**
* 获取某个群内的打卡排行榜
* 获取某个群内的打卡排行榜
* @param
wxGroupId
* @param
dto
* @return
* @return
*/
*/
PageBeanNew
<
RankDto
>
listWeixinClockRank
(
String
wxGroupId
,
String
wxUserId
,
Integer
currentPage
,
Integer
numPerPage
);
PageBeanNew
<
RankDto
>
listWeixinClockRank
(
ListWeixinClockRankDto
dto
);
/**
/**
* 获取某个群内某个用户的信息
* 获取某个群内某个用户的信息
...
...
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/biz/WeixinClockPraiseBiz.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
biz
;
import
com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto
;
import
com.pcloud.book.weixinclock.dto.RankDto
;
import
com.pcloud.book.weixinclock.vo.request.PraiseForMemberRequestVO
;
import
java.util.List
;
/**
* @Describe: 微信打卡点赞逻辑层
* @Author: zhangdongwei
* @Date: Create on 9:10 2019/10/23 0023
*/
public
interface
WeixinClockPraiseBiz
{
/**
* 为打卡成员点赞/取消点赞
* @param vo
*/
void
praiseForMember
(
PraiseForMemberRequestVO
vo
);
/**
* 填充打卡排行榜点赞信息
* @param list
* @param listWeixinClockRankDto
*/
void
fillPraise
(
List
<
RankDto
>
list
,
ListWeixinClockRankDto
listWeixinClockRankDto
);
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/biz/WeixinClockShareBiz.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
biz
;
import
com.pcloud.book.weixinclock.vo.response.DoShareResponseVO
;
/**
* @Describe: 微信群打卡分享逻辑层
* @Author: zhangdongwei
* @Date: Create on 10:23 2019/10/29 0029
*/
public
interface
WeixinClockShareBiz
{
/**
* 微信群打卡分享
* @param wechatUserId
* @param wxGroupId
* @param wxUserId
* @return
*/
DoShareResponseVO
doShare
(
Long
wechatUserId
,
String
wxGroupId
,
String
wxUserId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/biz/impl/WeixinClockBizImpl.java
View file @
4b59e54c
...
@@ -17,7 +17,9 @@ import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
...
@@ -17,7 +17,9 @@ import com.pcloud.book.group.dto.GroupClassifyQrcodeDTO;
import
com.pcloud.book.group.vo.BookGroupClassifyVO
;
import
com.pcloud.book.group.vo.BookGroupClassifyVO
;
import
com.pcloud.book.group.vo.ListGroupClassifyParam
;
import
com.pcloud.book.group.vo.ListGroupClassifyParam
;
import
com.pcloud.book.weixinclock.biz.WeixinClockBiz
;
import
com.pcloud.book.weixinclock.biz.WeixinClockBiz
;
import
com.pcloud.book.weixinclock.biz.WeixinClockPraiseBiz
;
import
com.pcloud.book.weixinclock.check.WeixinClockCheck
;
import
com.pcloud.book.weixinclock.check.WeixinClockCheck
;
import
com.pcloud.book.weixinclock.dao.WeixinClockBrowseDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockGroupClassifyDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockGroupClassifyDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockMemberDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockMemberDao
;
...
@@ -25,11 +27,14 @@ import com.pcloud.book.weixinclock.dao.WeixinClockPrizeRecordDao;
...
@@ -25,11 +27,14 @@ import com.pcloud.book.weixinclock.dao.WeixinClockPrizeRecordDao;
import
com.pcloud.book.weixinclock.dao.WeixinClockRewardDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockRewardDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockTopicDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockTopicDao
;
import
com.pcloud.book.weixinclock.dto.DrawRewardDto
;
import
com.pcloud.book.weixinclock.dto.DrawRewardDto
;
import
com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto
;
import
com.pcloud.book.weixinclock.dto.RankDto
;
import
com.pcloud.book.weixinclock.dto.RankDto
;
import
com.pcloud.book.weixinclock.dto.WeixinClockDto
;
import
com.pcloud.book.weixinclock.dto.WeixinClockDto
;
import
com.pcloud.book.weixinclock.entity.WeixinClock
;
import
com.pcloud.book.weixinclock.entity.WeixinClock
;
import
com.pcloud.book.weixinclock.entity.WeixinClockBrowse
;
import
com.pcloud.book.weixinclock.entity.WeixinClockGroupClassify
;
import
com.pcloud.book.weixinclock.entity.WeixinClockGroupClassify
;
import
com.pcloud.book.weixinclock.entity.WeixinClockMember
;
import
com.pcloud.book.weixinclock.entity.WeixinClockMember
;
import
com.pcloud.book.weixinclock.entity.WeixinClockPraise
;
import
com.pcloud.book.weixinclock.entity.WeixinClockPrizeRecord
;
import
com.pcloud.book.weixinclock.entity.WeixinClockPrizeRecord
;
import
com.pcloud.book.weixinclock.entity.WeixinClockTopic
;
import
com.pcloud.book.weixinclock.entity.WeixinClockTopic
;
import
com.pcloud.channelcenter.base.constants.ChannelConstants
;
import
com.pcloud.channelcenter.base.constants.ChannelConstants
;
...
@@ -125,6 +130,10 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
...
@@ -125,6 +130,10 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
private
WeixinClockPrizeRecordDao
weixinClockPrizeRecordDao
;
private
WeixinClockPrizeRecordDao
weixinClockPrizeRecordDao
;
@Autowired
@Autowired
private
AdviserConsr
adviserConsr
;
private
AdviserConsr
adviserConsr
;
@Autowired
private
WeixinClockPraiseBiz
weixinClockPraiseBiz
;
@Autowired
private
WeixinClockBrowseDao
weixinClockBrowseDao
;
private
static
final
ThreadFactory
NAMED_THREAD_FACTORY
=
new
ThreadFactoryBuilder
()
private
static
final
ThreadFactory
NAMED_THREAD_FACTORY
=
new
ThreadFactoryBuilder
()
.
setNameFormat
(
"weixinclock-pool-%d"
).
build
();
.
setNameFormat
(
"weixinclock-pool-%d"
).
build
();
...
@@ -326,6 +335,7 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
...
@@ -326,6 +335,7 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
WeixinClockDto
weixinClockDto
=
weixinClockDao
.
getWeixinClockBaseInfo
(
weixinClockId
);
WeixinClockDto
weixinClockDto
=
weixinClockDao
.
getWeixinClockBaseInfo
(
weixinClockId
);
if
(
null
!=
weixinClockDto
&&
null
!=
weixinClockDto
.
getClockPrizeId
()
&&
!
weixinClockDto
.
getClockPrizeId
().
equals
(
0L
))
{
if
(
null
!=
weixinClockDto
&&
null
!=
weixinClockDto
.
getClockPrizeId
()
&&
!
weixinClockDto
.
getClockPrizeId
().
equals
(
0L
))
{
AppDto
appDto
=
appConsr
.
getBaseById
(
weixinClockDto
.
getClockPrizeId
());
AppDto
appDto
=
appConsr
.
getBaseById
(
weixinClockDto
.
getClockPrizeId
());
appDto
=
null
==
appDto
?
new
AppDto
()
:
appDto
;
DrawRewardDto
drawRewardDto
=
new
DrawRewardDto
();
DrawRewardDto
drawRewardDto
=
new
DrawRewardDto
();
drawRewardDto
.
setAppId
(
weixinClockDto
.
getClockPrizeId
());
drawRewardDto
.
setAppId
(
weixinClockDto
.
getClockPrizeId
());
drawRewardDto
.
setChannelId
(
appDto
.
getChannelId
());
drawRewardDto
.
setChannelId
(
appDto
.
getChannelId
());
...
@@ -584,21 +594,29 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
...
@@ -584,21 +594,29 @@ public class WeixinClockBizImpl implements WeixinClockBiz {
/**
/**
* 获取某个群内的打卡排行榜
* 获取某个群内的打卡排行榜
* @param wxGroupId
* @param dto
* @param wxUserId
* @return
* @return
*/
*/
@Override
@Override
@ParamLog
(
"获取某个群内的打卡排行榜"
)
@ParamLog
(
"获取某个群内的打卡排行榜"
)
public
PageBeanNew
<
RankDto
>
listWeixinClockRank
(
String
wxGroupId
,
String
wxUserId
,
Integer
currentPage
,
Integer
numPerPage
)
{
public
PageBeanNew
<
RankDto
>
listWeixinClockRank
(
ListWeixinClockRankDto
dto
)
{
PageParam
pageParam
=
new
PageParam
(
currentPage
,
numPerPage
);
PageParam
pageParam
=
new
PageParam
(
dto
.
getCurrentPage
(),
dto
.
getNumPerPage
()
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"wxGroupId"
,
wxGroupId
);
map
.
put
(
"wxGroupId"
,
dto
.
getWxGroupId
()
);
map
.
put
(
"wxUserId"
,
wxUserId
);
map
.
put
(
"wxUserId"
,
dto
.
getWxUserId
()
);
PageBeanNew
<
RankDto
>
rankDtos
=
weixinClockMemberDao
.
listPageNew
(
pageParam
,
map
,
"listWeixinClockRank"
);
PageBeanNew
<
RankDto
>
rankDtos
=
weixinClockMemberDao
.
listPageNew
(
pageParam
,
map
,
"listWeixinClockRank"
);
if
(
null
==
rankDtos
||
ListUtils
.
isEmpty
(
rankDtos
.
getRecordList
()))
{
if
(
null
==
rankDtos
||
ListUtils
.
isEmpty
(
rankDtos
.
getRecordList
()))
{
return
new
PageBeanNew
<>(
currentPage
,
numPerPage
,
0
,
new
ArrayList
<>());
return
new
PageBeanNew
<>(
dto
.
getCurrentPage
(),
dto
.
getNumPerPage
(),
0
,
new
ArrayList
<>());
}
}
List
<
RankDto
>
list
=
rankDtos
.
getRecordList
();
weixinClockPraiseBiz
.
fillPraise
(
list
,
dto
);
rankDtos
.
setRecordList
(
list
);
//埋点,用户浏览排行榜记录
WeixinClockBrowse
clockBrowse
=
new
WeixinClockBrowse
();
BeanUtils
.
copyProperties
(
dto
,
clockBrowse
);
clockBrowse
.
setBrowseTime
(
new
Date
());
clockBrowse
.
setIpAddress
(
dto
.
getIpAddress
());
weixinClockBrowseDao
.
insert
(
clockBrowse
);
return
rankDtos
;
return
rankDtos
;
}
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/biz/impl/WeixinClockPraiseBizImpl.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
biz
.
impl
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.weixinclock.biz.WeixinClockPraiseBiz
;
import
com.pcloud.book.weixinclock.dao.WeixinClockMemberDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockPraiseDao
;
import
com.pcloud.book.weixinclock.dto.GetByMemberAndUserDto
;
import
com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto
;
import
com.pcloud.book.weixinclock.dto.RankDto
;
import
com.pcloud.book.weixinclock.entity.WeixinClockMember
;
import
com.pcloud.book.weixinclock.entity.WeixinClockPraise
;
import
com.pcloud.book.weixinclock.vo.request.PraiseForMemberRequestVO
;
import
com.pcloud.common.utils.ListUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
/**
* @Describe: 微信打卡点赞逻辑层实现类
* @Author: zhangdongwei
* @Date: Create on 9:10 2019/10/23 0023
*/
@Service
(
"weixinClockPraiseBiz"
)
public
class
WeixinClockPraiseBizImpl
implements
WeixinClockPraiseBiz
{
@Autowired
private
WeixinClockPraiseDao
weixinClockPraiseDao
;
@Autowired
private
WeixinClockMemberDao
weixinClockMemberDao
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
praiseForMember
(
PraiseForMemberRequestVO
vo
)
{
//根据微信群id和打卡成员id获取打卡成员信息
WeixinClockMember
weixinClockMember
=
weixinClockMemberDao
.
getByWxUserId
(
vo
.
getWxGroupId
(),
vo
.
getWxUserId
());
Optional
.
ofNullable
(
weixinClockMember
).
orElseThrow
(()
->
new
BookBizException
(
BookBizException
.
ID_NOT_EXIST
,
"该打卡成员不存在,不能点赞"
));
if
(
weixinClockMember
.
getAllClockDay
()
<=
0
){
throw
new
BookBizException
(
BookBizException
.
ID_NOT_EXIST
,
"该打卡成员未打过卡,不能点赞"
);
}
//获取当天零点的时间
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
new
Date
());
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
calendar
.
set
(
Calendar
.
MINUTE
,
0
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
Date
zero
=
calendar
.
getTime
();
GetByMemberAndUserDto
dto
=
new
GetByMemberAndUserDto
();
dto
.
setCreateTime
(
zero
);
dto
.
setWechatUserId
(
vo
.
getPraiseUserId
());
dto
.
setWxGroupId
(
vo
.
getWxGroupId
());
dto
.
setWxUserId
(
vo
.
getWxUserId
());
WeixinClockPraise
oldWeixinClockPraise
=
weixinClockPraiseDao
.
getByMemberAndUser
(
dto
);
WeixinClockPraise
weixinClockPraise
=
PraiseForMemberRequestVO
.
valueToClockPraise
(
vo
);
weixinClockPraise
.
setWeixinClockId
(
weixinClockMember
.
getWeixinClockId
());
if
(
null
==
oldWeixinClockPraise
){
weixinClockPraise
.
setIsCancel
(
1
);
weixinClockPraiseDao
.
insert
(
weixinClockPraise
);
}
else
{
weixinClockPraise
.
setId
(
oldWeixinClockPraise
.
getId
());
weixinClockPraiseDao
.
update
(
weixinClockPraise
);
}
}
@Override
public
void
fillPraise
(
List
<
RankDto
>
list
,
ListWeixinClockRankDto
listWeixinClockRankDto
)
{
if
(
ListUtils
.
isEmpty
(
list
)){
return
;
}
List
<
String
>
wxUserIds
=
list
.
stream
().
map
(
RankDto:
:
getWxUserId
).
collect
(
Collectors
.
toList
());
if
(
ListUtils
.
isEmpty
(
wxUserIds
)){
return
;
}
listWeixinClockRankDto
.
setWxUserIdList
(
wxUserIds
);
List
<
WeixinClockPraise
>
weixinClockPraiseList
=
weixinClockPraiseDao
.
getMemberPraise
(
listWeixinClockRankDto
);
Map
<
String
,
List
<
WeixinClockPraise
>>
praiseMap
=
weixinClockPraiseList
.
stream
().
collect
(
Collectors
.
groupingBy
(
WeixinClockPraise:
:
getWxUserId
));
Map
<
String
,
Boolean
>
map
=
new
HashMap
<>();
//获取当天零点的时间
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
new
Date
());
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
calendar
.
set
(
Calendar
.
MINUTE
,
0
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
Date
zero
=
calendar
.
getTime
();
for
(
WeixinClockPraise
praise
:
weixinClockPraiseList
){
if
(
null
==
praise
.
getPraiseUserId
()
||
!
listWeixinClockRankDto
.
getWechatUserId
().
equals
(
praise
.
getPraiseUserId
())
||
map
.
getOrDefault
(
praise
.
getWxUserId
(),
Boolean
.
FALSE
)||
praise
.
getCreateTime
().
before
(
zero
)){
continue
;
}
map
.
put
(
praise
.
getWxUserId
(),
Boolean
.
TRUE
);
}
for
(
RankDto
rankDto
:
list
){
rankDto
.
setPraiseNum
(
ListUtils
.
isEmpty
(
praiseMap
.
get
(
rankDto
.
getWxUserId
()))
?
0
:
praiseMap
.
get
(
rankDto
.
getWxUserId
()).
size
());
rankDto
.
setIsPraise
(
map
.
getOrDefault
(
rankDto
.
getWxUserId
(),
Boolean
.
FALSE
)
?
1
:
0
);
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/biz/impl/WeixinClockShareBizImpl.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
biz
.
impl
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.group.dao.GroupQrcodeDao
;
import
com.pcloud.book.group.entity.GroupQrcode
;
import
com.pcloud.book.util.common.LunarCalendarUtils
;
import
com.pcloud.book.weixinclock.biz.WeixinClockShareBiz
;
import
com.pcloud.book.weixinclock.dao.WeixinClockMemberDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockShareDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockShareWordDao
;
import
com.pcloud.book.weixinclock.dao.WeixinClockTopicDao
;
import
com.pcloud.book.weixinclock.dto.RankDto
;
import
com.pcloud.book.weixinclock.entity.WeixinClockMember
;
import
com.pcloud.book.weixinclock.entity.WeixinClockShare
;
import
com.pcloud.book.weixinclock.vo.response.DoShareResponseVO
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.Map
;
/**
* @Describe: 微信群打卡分享逻辑层实现
* @Author: zhangdongwei
* @Date: Create on 10:24 2019/10/29 0029
*/
@Service
(
"weixinClockShareBiz"
)
public
class
WeixinClockShareBizImpl
implements
WeixinClockShareBiz
{
@Autowired
private
WeixinClockShareWordDao
weixinClockShareWordDao
;
@Autowired
private
WeixinClockMemberDao
weixinClockMemberDao
;
@Autowired
private
WeixinClockTopicDao
weixinClockTopicDao
;
@Autowired
private
GroupQrcodeDao
groupQrcodeDao
;
@Autowired
private
WeixinClockShareDao
weixinClockShareDao
;
@Override
public
DoShareResponseVO
doShare
(
Long
wechatUserId
,
String
wxGroupId
,
String
wxUserId
)
{
if
(
null
==
wxGroupId
||
null
==
wxUserId
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"分享失败,参数为空"
);
}
RankDto
rankDto
=
weixinClockMemberDao
.
getClockWechatUserRank
(
wechatUserId
,
wxGroupId
);
if
(
null
==
rankDto
||
null
==
rankDto
.
getWxUserId
()){
rankDto
=
weixinClockMemberDao
.
getClockWechatUserRankByWxUserId
(
wxUserId
,
wxGroupId
);
}
if
(
null
==
rankDto
){
return
new
DoShareResponseVO
();
}
wxUserId
=
null
!=
rankDto
.
getWxUserId
()
?
rankDto
.
getWxUserId
()
:
wxUserId
;
DoShareResponseVO
doShareResponseVO
=
DoShareResponseVO
.
valueFromRankDto
(
rankDto
);
Date
today
=
new
Date
();
Map
<
String
,
String
>
strMap
=
LunarCalendarUtils
.
dataToLunar
(
today
);
doShareResponseVO
.
setLunar
(
strMap
.
get
(
"lunar"
));
doShareResponseVO
.
setToday
(
today
);
doShareResponseVO
.
setGanZhi
(
strMap
.
get
(
"ganZhi"
));
String
shareWord
=
weixinClockShareWordDao
.
getRoundWord
();
doShareResponseVO
.
setShareWord
(
shareWord
);
Date
date
=
weixinClockTopicDao
.
getFirstClockDay
(
wxUserId
,
wxGroupId
);
doShareResponseVO
.
setStartClockDate
(
date
);
GroupQrcode
groupQrcode
=
groupQrcodeDao
.
getByWxGroupId
(
wxGroupId
);
doShareResponseVO
.
setTitle
(
groupQrcode
.
getGroupName
());
doShareResponseVO
.
setQrcodeUrl
(
groupQrcode
.
getQrcodeUrl
());
//埋点,用户分享记录
WeixinClockShare
weixinClockShare
=
new
WeixinClockShare
();
weixinClockShare
.
setShareTime
(
new
Date
());
weixinClockShare
.
setShareUserId
(
wechatUserId
);
weixinClockShare
.
setWxGroupId
(
wxGroupId
);
weixinClockShareDao
.
insert
(
weixinClockShare
);
return
doShareResponseVO
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/WeixinClockBrowseDao.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
dao
;
import
com.pcloud.book.weixinclock.entity.WeixinClockBrowse
;
import
com.pcloud.common.core.dao.BaseDao
;
/**
* @Describe: 微信打卡分享记录dao接口层
* @Author: zhangdongwei
* @Date: Create on 17:03 2019/10/31 0031
*/
public
interface
WeixinClockBrowseDao
extends
BaseDao
<
WeixinClockBrowse
>
{
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/WeixinClockMemberDao.java
View file @
4b59e54c
...
@@ -57,4 +57,12 @@ public interface WeixinClockMemberDao extends BaseDao<WeixinClockMember> {
...
@@ -57,4 +57,12 @@ public interface WeixinClockMemberDao extends BaseDao<WeixinClockMember> {
* @return
* @return
*/
*/
void
updatMemberWechatUserId
(
String
wxUserId
,
Long
wechatUserId
);
void
updatMemberWechatUserId
(
String
wxUserId
,
Long
wechatUserId
);
/**
* 获取某个群内某个用户的信息
* @param wxGroupId
* @param wxUserId
* @return
*/
RankDto
getClockWechatUserRankByWxUserId
(
String
wxUserId
,
String
wxGroupId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/WeixinClockPraiseDao.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
dao
;
import
com.pcloud.book.weixinclock.dto.GetByMemberAndUserDto
;
import
com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto
;
import
com.pcloud.book.weixinclock.entity.WeixinClockPraise
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
/**
* @Describe: 打卡点赞dao
* @Author: zhangdongwei
* @Date: Create on 17:19 2019/10/22 0022
*/
public
interface
WeixinClockPraiseDao
extends
BaseDao
<
WeixinClockPraise
>
{
/**
* 获取用户为成员点赞信息
* @param dto
* @return
*/
WeixinClockPraise
getByMemberAndUser
(
GetByMemberAndUserDto
dto
);
/**
* 获取去打卡成员收到的点赞
* @param dto
* @return
*/
List
<
WeixinClockPraise
>
getMemberPraise
(
ListWeixinClockRankDto
dto
);
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/WeixinClockShareDao.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
dao
;
import
com.pcloud.book.weixinclock.entity.WeixinClockShare
;
import
com.pcloud.common.core.dao.BaseDao
;
/**
* @Describe: 微信群打卡分享dao接口层
* @Author: zhangdongwei
* @Date: Create on 17:40 2019/10/31 0031
*/
public
interface
WeixinClockShareDao
extends
BaseDao
<
WeixinClockShare
>
{
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/WeixinClockShareWordDao.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
dao
;
import
com.pcloud.book.weixinclock.entity.WeixinClockShareWord
;
import
com.pcloud.common.core.dao.BaseDao
;
/**
* @Describe: 微信打卡分享句子dao接口
* @Author: zhangdongwei
* @Date: Create on 9:52 2019/10/29 0029
*/
public
interface
WeixinClockShareWordDao
extends
BaseDao
<
WeixinClockShareWord
>
{
/**
* 随机获取一个句子
* @return
*/
String
getRoundWord
();
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/WeixinClockTopicDao.java
View file @
4b59e54c
...
@@ -3,6 +3,8 @@ package com.pcloud.book.weixinclock.dao;
...
@@ -3,6 +3,8 @@ package com.pcloud.book.weixinclock.dao;
import
com.pcloud.book.weixinclock.entity.WeixinClockTopic
;
import
com.pcloud.book.weixinclock.entity.WeixinClockTopic
;
import
com.pcloud.common.core.dao.BaseDao
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.Date
;
/**
/**
* @author 杨涛
* @author 杨涛
* @description TODO
* @description TODO
...
@@ -26,4 +28,12 @@ public interface WeixinClockTopicDao extends BaseDao<WeixinClockTopic> {
...
@@ -26,4 +28,12 @@ public interface WeixinClockTopicDao extends BaseDao<WeixinClockTopic> {
*/
*/
Long
getClockCountByUser
(
String
wxGroupId
,
String
wxUserId
);
Long
getClockCountByUser
(
String
wxGroupId
,
String
wxUserId
);
/**
* 获取成员第一次打卡日期
* @param wxUserId
* @param wxGroupId
* @return
*/
Date
getFirstClockDay
(
String
wxUserId
,
String
wxGroupId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/impl/WeixinClockBrowseDaoImpl.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
dao
.
impl
;
import
com.pcloud.book.weixinclock.dao.WeixinClockBrowseDao
;
import
com.pcloud.book.weixinclock.entity.WeixinClockBrowse
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
/**
* @Describe: 微信打卡分享记录dao实现层
* @Author: zhangdongwei
* @Date: Create on 17:08 2019/10/31 0031
*/
@Repository
(
"weixinClockBrowseDao"
)
public
class
WeixinClockBrowseDaoImpl
extends
BaseDaoImpl
<
WeixinClockBrowse
>
implements
WeixinClockBrowseDao
{
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/impl/WeixinClockMemberDaoImpl.java
View file @
4b59e54c
...
@@ -92,4 +92,12 @@ public class WeixinClockMemberDaoImpl extends BaseDaoImpl<WeixinClockMember> imp
...
@@ -92,4 +92,12 @@ public class WeixinClockMemberDaoImpl extends BaseDaoImpl<WeixinClockMember> imp
paramMap
.
put
(
"wechatUserId"
,
wechatUserId
);
paramMap
.
put
(
"wechatUserId"
,
wechatUserId
);
super
.
sqlSessionTemplate
.
update
(
getStatement
(
"updatMemberWechatUserId"
),
paramMap
);
super
.
sqlSessionTemplate
.
update
(
getStatement
(
"updatMemberWechatUserId"
),
paramMap
);
}
}
@Override
public
RankDto
getClockWechatUserRankByWxUserId
(
String
wxUserId
,
String
wxGroupId
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"wxUserId"
,
wxUserId
);
map
.
put
(
"wechatGroupId"
,
wxGroupId
);
return
super
.
getSqlSession
().
selectOne
(
getStatement
(
"getClockWechatUserRankByWxUserId"
),
map
);
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/impl/WeixinClockPraiseDaoImpl.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
dao
.
impl
;
import
com.pcloud.book.weixinclock.dao.WeixinClockPraiseDao
;
import
com.pcloud.book.weixinclock.dto.GetByMemberAndUserDto
;
import
com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto
;
import
com.pcloud.book.weixinclock.entity.WeixinClockPraise
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @Describe: 打卡点赞dao实现类
* @Author: zhangdongwei
* @Date: Create on 17:20 2019/10/22 0022
*/
@Repository
(
"weixinClockPraise"
)
public
class
WeixinClockPraiseDaoImpl
extends
BaseDaoImpl
<
WeixinClockPraise
>
implements
WeixinClockPraiseDao
{
@Override
public
WeixinClockPraise
getByMemberAndUser
(
GetByMemberAndUserDto
dto
){
return
super
.
sqlSessionTemplate
.
selectOne
(
getStatement
(
"getByMemberAndUser"
),
dto
);
}
@Override
public
List
<
WeixinClockPraise
>
getMemberPraise
(
ListWeixinClockRankDto
dto
)
{
return
super
.
sqlSessionTemplate
.
selectList
(
getStatement
(
"getMemberPraise"
),
dto
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/impl/WeixinClockShareDaoImpl.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
dao
.
impl
;
import
com.pcloud.book.weixinclock.dao.WeixinClockShareDao
;
import
com.pcloud.book.weixinclock.entity.WeixinClockShare
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
/**
* @Describe: 微信群打卡分享dao实现层
* @Author: zhangdongwei
* @Date: Create on 17:42 2019/10/31 0031
*/
@Repository
(
"weixinClockShareDao"
)
public
class
WeixinClockShareDaoImpl
extends
BaseDaoImpl
<
WeixinClockShare
>
implements
WeixinClockShareDao
{
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/impl/WeixinClockShareWordDaoImpl.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
dao
.
impl
;
import
com.pcloud.book.weixinclock.dao.WeixinClockShareWordDao
;
import
com.pcloud.book.weixinclock.entity.WeixinClockShareWord
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
/**
* @Describe: 微信打卡分享句子dao接口实现
* @Author: zhangdongwei
* @Date: Create on 9:52 2019/10/29 0029
*/
@Repository
(
"weixinClockShareWordDao"
)
public
class
WeixinClockShareWordDaoImpl
extends
BaseDaoImpl
<
WeixinClockShareWord
>
implements
WeixinClockShareWordDao
{
@Override
public
String
getRoundWord
()
{
return
super
.
sqlSessionTemplate
.
selectOne
(
getStatement
(
"getRoundWord"
));
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dao/impl/WeixinClockTopicDaoImpl.java
View file @
4b59e54c
...
@@ -9,6 +9,7 @@ import com.pcloud.common.utils.DateNewUtils;
...
@@ -9,6 +9,7 @@ import com.pcloud.common.utils.DateNewUtils;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.util.Date
;
import
java.util.Map
;
import
java.util.Map
;
/**
/**
...
@@ -42,4 +43,12 @@ public class WeixinClockTopicDaoImpl extends BaseDaoImpl<WeixinClockTopic> imple
...
@@ -42,4 +43,12 @@ public class WeixinClockTopicDaoImpl extends BaseDaoImpl<WeixinClockTopic> imple
return
super
.
getSqlSession
().
selectOne
(
getStatement
(
"getClockCountByUser"
),
paramMap
);
return
super
.
getSqlSession
().
selectOne
(
getStatement
(
"getClockCountByUser"
),
paramMap
);
}
}
@Override
public
Date
getFirstClockDay
(
String
wxUserId
,
String
wxGroupId
)
{
Map
<
String
,
Object
>
paramMap
=
Maps
.
newHashMap
();
paramMap
.
put
(
"wxGroupId"
,
wxGroupId
);
paramMap
.
put
(
"wxUserId"
,
wxUserId
);
return
super
.
getSqlSession
().
selectOne
(
getStatement
(
"getFirstClockDay"
),
paramMap
);
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dto/GetByMemberAndUserDto.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
dto
;
import
java.util.Date
;
import
lombok.Data
;
/**
* @Describe: 获取用户为打卡成员点赞参数dto
* @Author: zhangdongwei
* @Date: Create on 16:39 2019/10/29 0029
*/
@Data
public
class
GetByMemberAndUserDto
{
private
String
wxUserId
;
private
String
wxGroupId
;
private
Long
wechatUserId
;
private
Date
createTime
;
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dto/ListWeixinClockRankDto.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
dto
;
import
java.util.List
;
import
lombok.Data
;
/**
* @Describe: 获取微信群打卡排名请求dto
* @Author: zhangdongwei
* @Date: Create on 10:11 2019/10/28 0028
*/
@Data
public
class
ListWeixinClockRankDto
{
/**
* 微信群id
*/
private
String
wxGroupId
;
/**
* 微信打卡成员id
*/
private
String
wxUserId
;
/**
* 微信用户di
*/
private
Long
wechatUserId
;
/**
* 当前页
*/
private
Integer
currentPage
;
/**
* 每页条数
*/
private
Integer
numPerPage
;
/**
* 打卡成员id列表
*/
private
List
<
String
>
wxUserIdList
;
private
String
ipAddress
;
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/dto/RankDto.java
View file @
4b59e54c
...
@@ -16,6 +16,9 @@ public class RankDto extends BaseDto {
...
@@ -16,6 +16,9 @@ public class RankDto extends BaseDto {
@ApiModelProperty
(
"排名"
)
@ApiModelProperty
(
"排名"
)
private
Integer
rankNum
;
private
Integer
rankNum
;
@ApiModelProperty
(
"打卡成员微信号"
)
private
String
wxUserId
;
@ApiModelProperty
(
"昵称"
)
@ApiModelProperty
(
"昵称"
)
private
String
nickname
;
private
String
nickname
;
...
@@ -25,6 +28,12 @@ public class RankDto extends BaseDto {
...
@@ -25,6 +28,12 @@ public class RankDto extends BaseDto {
@ApiModelProperty
(
"打卡次数"
)
@ApiModelProperty
(
"打卡次数"
)
private
Integer
clockNum
;
private
Integer
clockNum
;
@ApiModelProperty
(
"获取的点赞数"
)
private
Integer
praiseNum
;
@ApiModelProperty
(
"当前用户是否点赞"
)
private
Integer
isPraise
;
public
Integer
getRankNum
()
{
public
Integer
getRankNum
()
{
return
rankNum
;
return
rankNum
;
}
}
...
@@ -33,6 +42,14 @@ public class RankDto extends BaseDto {
...
@@ -33,6 +42,14 @@ public class RankDto extends BaseDto {
this
.
rankNum
=
rankNum
;
this
.
rankNum
=
rankNum
;
}
}
public
String
getWxUserId
()
{
return
wxUserId
;
}
public
void
setWxUserId
(
String
wxUserId
)
{
this
.
wxUserId
=
wxUserId
;
}
public
String
getNickname
()
{
public
String
getNickname
()
{
return
nickname
;
return
nickname
;
}
}
...
@@ -57,6 +74,22 @@ public class RankDto extends BaseDto {
...
@@ -57,6 +74,22 @@ public class RankDto extends BaseDto {
this
.
clockNum
=
clockNum
;
this
.
clockNum
=
clockNum
;
}
}
public
Integer
getPraiseNum
()
{
return
praiseNum
;
}
public
void
setPraiseNum
(
Integer
praiseNum
)
{
this
.
praiseNum
=
praiseNum
;
}
public
Integer
getIsPraise
()
{
return
isPraise
;
}
public
void
setIsPraise
(
Integer
isPraise
)
{
this
.
isPraise
=
isPraise
;
}
@Override
@Override
public
String
toString
()
{
public
String
toString
()
{
return
"RankDto{"
+
return
"RankDto{"
+
...
@@ -64,6 +97,8 @@ public class RankDto extends BaseDto {
...
@@ -64,6 +97,8 @@ public class RankDto extends BaseDto {
", nickname='"
+
nickname
+
'\''
+
", nickname='"
+
nickname
+
'\''
+
", headPic='"
+
headPic
+
'\''
+
", headPic='"
+
headPic
+
'\''
+
", clockNum="
+
clockNum
+
", clockNum="
+
clockNum
+
", praiseNum="
+
praiseNum
+
", isPraise="
+
isPraise
+
'}'
;
'}'
;
}
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/entity/WeixinClockBrowse.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
entity
;
import
com.pcloud.common.entity.BaseEntity
;
import
java.util.Date
;
import
lombok.Data
;
/**
* @Describe: 打卡排行榜浏览记录实体类
* @Author: zhangdongwei
* @Date: Create on 17:00 2019/10/31 0031
*/
@Data
public
class
WeixinClockBrowse
extends
BaseEntity
{
/**
* 微信打卡id
*/
private
Long
weixinClockId
;
/**
* 微信群id
*/
private
String
wxGroupId
;
/**
* 微信用户id
*/
private
Long
wechatUserId
;
/**
* 浏览时间
*/
private
Date
browseTime
;
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/entity/WeixinClockPraise.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
entity
;
import
com.pcloud.common.entity.BaseEntity
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.ToString
;
/**
* @Describe: 打卡点赞实体
* @Author: zhangdongwei
* @Date: Create on 10:46 2019/10/22 0022
*/
@Data
@ToString
(
callSuper
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
WeixinClockPraise
extends
BaseEntity
{
/**
* 打卡id
*/
private
Long
weixinClockId
;
/**
* 打卡成员id
*/
private
String
wxUserId
;
/**
* 打卡所在微信群id
*/
private
String
wxGroupId
;
/**
* 点赞用户id
*/
private
Long
praiseUserId
;
/**
* 是否取消点赞
*/
private
Integer
isCancel
;
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/entity/WeixinClockShare.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
entity
;
import
com.pcloud.common.entity.BaseEntity
;
import
java.util.Date
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.ToString
;
/**
* @Describe: 打卡分享实体
* @Author: zhangdongwei
* @Date: Create on 11:53 2019/10/22 0022
*/
@Data
@ToString
(
callSuper
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
WeixinClockShare
extends
BaseEntity
{
/**
* 分享用户id
*/
private
Long
shareUserId
;
/**
* 微信群id
*/
private
String
wxGroupId
;
/**
* 分享时间
*/
private
Date
shareTime
;
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/entity/WeixinClockShareWord.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
entity
;
import
com.pcloud.common.entity.BaseEntity
;
import
lombok.Data
;
import
lombok.ToString
;
/**
* @Describe: 微信打卡分享句子
* @Author: zhangdongwei
* @Date: Create on 9:39 2019/10/29 0029
*/
@Data
@ToString
(
callSuper
=
true
)
public
class
WeixinClockShareWord
extends
BaseEntity
{
private
String
shareWord
;
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/facade/WeixinClockFacade.java
View file @
4b59e54c
...
@@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
...
@@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
javax.servlet.http.HttpServletRequest
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiImplicitParams
;
...
@@ -103,7 +105,8 @@ public interface WeixinClockFacade {
...
@@ -103,7 +105,8 @@ public interface WeixinClockFacade {
@RequestParam
(
value
=
"wxGroupId"
,
required
=
false
)
String
wxGroupId
,
@RequestParam
(
value
=
"wxGroupId"
,
required
=
false
)
String
wxGroupId
,
@RequestParam
(
value
=
"wxUserId"
,
required
=
false
)
String
wxUserId
,
@RequestParam
(
value
=
"wxUserId"
,
required
=
false
)
String
wxUserId
,
@RequestParam
(
value
=
"currentPage"
,
required
=
false
)
Integer
currentPage
,
@RequestParam
(
value
=
"currentPage"
,
required
=
false
)
Integer
currentPage
,
@RequestParam
(
value
=
"numPerPage"
,
required
=
false
)
Integer
numPerPage
)
@RequestParam
(
value
=
"numPerPage"
,
required
=
false
)
Integer
numPerPage
,
HttpServletRequest
request
)
throws
BizException
,
PermissionException
;
throws
BizException
,
PermissionException
;
@ApiOperation
(
"获取某个群内某个用户的信息"
)
@ApiOperation
(
"获取某个群内某个用户的信息"
)
...
...
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/facade/impl/WeixinClockFacadeImpl.java
View file @
4b59e54c
...
@@ -4,6 +4,7 @@ import com.pcloud.book.base.exception.BookBizException;
...
@@ -4,6 +4,7 @@ import com.pcloud.book.base.exception.BookBizException;
import
com.pcloud.book.group.vo.BookGroupClassifyVO
;
import
com.pcloud.book.group.vo.BookGroupClassifyVO
;
import
com.pcloud.book.group.vo.ListGroupClassifyParam
;
import
com.pcloud.book.group.vo.ListGroupClassifyParam
;
import
com.pcloud.book.weixinclock.biz.WeixinClockBiz
;
import
com.pcloud.book.weixinclock.biz.WeixinClockBiz
;
import
com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto
;
import
com.pcloud.book.weixinclock.dto.WeixinClockDto
;
import
com.pcloud.book.weixinclock.dto.WeixinClockDto
;
import
com.pcloud.book.weixinclock.facade.WeixinClockFacade
;
import
com.pcloud.book.weixinclock.facade.WeixinClockFacade
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.dto.ResponseDto
;
...
@@ -13,6 +14,7 @@ import com.pcloud.common.page.PageParam;
...
@@ -13,6 +14,7 @@ import com.pcloud.common.page.PageParam;
import
com.pcloud.common.permission.PermissionException
;
import
com.pcloud.common.permission.PermissionException
;
import
com.pcloud.common.utils.SessionUtil
;
import
com.pcloud.common.utils.SessionUtil
;
import
com.pcloud.common.utils.cookie.Cookie
;
import
com.pcloud.common.utils.cookie.Cookie
;
import
com.pcloud.common.utils.nginx.NginxUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.CookieValue
;
import
org.springframework.web.bind.annotation.CookieValue
;
...
@@ -26,6 +28,8 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -26,6 +28,8 @@ import org.springframework.web.bind.annotation.RestController;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
io.swagger.annotations.ApiParam
;
import
io.swagger.annotations.ApiParam
;
/**
/**
...
@@ -181,10 +185,19 @@ public class WeixinClockFacadeImpl implements WeixinClockFacade {
...
@@ -181,10 +185,19 @@ public class WeixinClockFacadeImpl implements WeixinClockFacade {
@RequestParam
(
value
=
"wxGroupId"
,
required
=
false
)
String
wxGroupId
,
@RequestParam
(
value
=
"wxGroupId"
,
required
=
false
)
String
wxGroupId
,
@RequestParam
(
value
=
"wxUserId"
,
required
=
false
)
String
wxUserId
,
@RequestParam
(
value
=
"wxUserId"
,
required
=
false
)
String
wxUserId
,
@RequestParam
(
value
=
"currentPage"
,
required
=
false
)
Integer
currentPage
,
@RequestParam
(
value
=
"currentPage"
,
required
=
false
)
Integer
currentPage
,
@RequestParam
(
value
=
"numPerPage"
,
required
=
false
)
Integer
numPerPage
)
@RequestParam
(
value
=
"numPerPage"
,
required
=
false
)
Integer
numPerPage
,
HttpServletRequest
request
)
throws
BizException
,
PermissionException
{
throws
BizException
,
PermissionException
{
Long
wechatUserId
=
Cookie
.
getId
(
userInfo
,
Cookie
.
_WECHAT_USER_ID
);
Long
wechatUserId
=
Cookie
.
getId
(
userInfo
,
Cookie
.
_WECHAT_USER_ID
);
return
new
ResponseDto
<>(
weixinClockBiz
.
listWeixinClockRank
(
wxGroupId
,
wxUserId
,
currentPage
,
numPerPage
));
ListWeixinClockRankDto
dto
=
new
ListWeixinClockRankDto
();
dto
.
setCurrentPage
(
currentPage
);
dto
.
setNumPerPage
(
numPerPage
);
dto
.
setWxGroupId
(
wxGroupId
);
dto
.
setWxGroupId
(
wxGroupId
);
dto
.
setWechatUserId
(
wechatUserId
);
String
ipAddress
=
NginxUtils
.
getClientIp
(
request
);
dto
.
setIpAddress
(
ipAddress
);
return
new
ResponseDto
<>(
weixinClockBiz
.
listWeixinClockRank
(
dto
));
}
}
/**
/**
...
...
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/facade/impl/WeixinClockPraiseFacadeImpl.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
facade
.
impl
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.weixinclock.biz.WeixinClockPraiseBiz
;
import
com.pcloud.book.weixinclock.vo.request.PraiseForMemberRequestVO
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.permission.PermissionException
;
import
com.pcloud.common.utils.cookie.Cookie
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.CookieValue
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Optional
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
/**
* @Describe: 微信打卡点赞外部接口实现
* @Author: zhangdongwei
* @Date: Create on 17:37 2019/10/22 0022
*/
@Api
(
description
=
"微信群签到打卡"
)
@RestController
(
"weixinClockPraiseFacade"
)
@RequestMapping
(
"weixinClockPraise"
)
public
class
WeixinClockPraiseFacadeImpl
{
@Autowired
private
WeixinClockPraiseBiz
weixinClockPraiseBiz
;
/**
* 为打卡成员点赞/取消点赞
* @param userInfo
* @param vo
* @return
* @throws BizException
* @throws PermissionException
*/
@ApiOperation
(
value
=
"为打卡成员点赞/取消点赞"
,
httpMethod
=
"POST"
)
@PostMapping
(
"praiseForMember"
)
public
ResponseDto
<?>
praiseForMember
(
@CookieValue
(
"userInfo"
)
String
userInfo
,
@RequestBody
PraiseForMemberRequestVO
vo
)
throws
BizException
,
PermissionException
{
Optional
.
ofNullable
(
vo
).
orElseThrow
(()
->
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"点赞失败,参数为空"
));
Long
wechatUserId
=
Cookie
.
getId
(
userInfo
,
Cookie
.
_WECHAT_USER_ID
);
vo
.
setPraiseUserId
(
wechatUserId
);
weixinClockPraiseBiz
.
praiseForMember
(
vo
);
return
new
ResponseDto
<>();
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/facade/impl/WeixinClockShareFacadeImpl.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
facade
.
impl
;
import
com.pcloud.book.weixinclock.biz.WeixinClockShareBiz
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.permission.PermissionException
;
import
com.pcloud.common.utils.cookie.Cookie
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.CookieValue
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
/**
* @Describe: 微信群打卡分享接口类
* @Author: zhangdongwei
* @Date: Create on 10:21 2019/10/29 0029
*/
@Api
(
description
=
"微信群签到打卡分享"
)
@RestController
(
"weixinClockShareFacade"
)
@RequestMapping
(
"weixinClockShare"
)
public
class
WeixinClockShareFacadeImpl
{
@Autowired
private
WeixinClockShareBiz
weixinClockShareBiz
;
/**
* 获取我的打卡排名
* @param userInfo
* @param wxGroupId
* @param wxUserId
* @return
* @throws BizException
* @throws PermissionException
*/
@ApiOperation
(
"分享我的排名"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"wxGroupId"
,
value
=
"微信群id"
,
dataType
=
"string"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"weUserId"
,
value
=
"微信群id"
,
dataType
=
"string"
,
paramType
=
"query"
)})
@RequestMapping
(
value
=
"doShare"
,
method
=
RequestMethod
.
GET
)
public
ResponseDto
<?>
doShare
(
@CookieValue
(
"userInfo"
)
String
userInfo
,
@RequestParam
(
"wxGroupId"
)
String
wxGroupId
,
@RequestParam
(
"wxUserId"
)
String
wxUserId
)
throws
BizException
,
PermissionException
{
Long
wechatUserId
=
Cookie
.
getId
(
userInfo
,
Cookie
.
_WECHAT_USER_ID
);
return
new
ResponseDto
<>(
weixinClockShareBiz
.
doShare
(
wechatUserId
,
wxGroupId
,
wxUserId
));
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/vo/request/PraiseForMemberRequestVO.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
vo
.
request
;
import
com.pcloud.book.weixinclock.entity.WeixinClockPraise
;
import
com.pcloud.common.utils.bean.BeanUtils
;
import
com.pcloud.common.vo.BaseVO
;
import
javax.validation.constraints.NotNull
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @Describe: 为打卡成员点赞请求vo
* @Author: zhangdongwei
* @Date: Create on 17:57 2019/10/22 0022
*/
@Data
@ApiModel
(
"为打卡成员点赞请求类"
)
public
class
PraiseForMemberRequestVO
extends
BaseVO
{
/**
* 点赞人id
*/
private
Long
praiseUserId
;
/**
* 打卡成员id
*/
@NotNull
(
message
=
"打卡成员不能为空"
)
@ApiModelProperty
(
"打卡成员id"
)
private
String
wxUserId
;
/**
* 群id
*/
@NotNull
(
message
=
"群id不能为空"
)
@ApiModelProperty
(
"打卡关联微信群id"
)
private
String
wxGroupId
;
@ApiModelProperty
(
"是否取消点赞"
)
private
Integer
isCancel
;
public
static
WeixinClockPraise
valueToClockPraise
(
PraiseForMemberRequestVO
vo
){
WeixinClockPraise
weixinClockPraise
=
BeanUtils
.
copy
(
vo
,
WeixinClockPraise
.
class
);
weixinClockPraise
.
setIsCancel
(
vo
.
getIsCancel
()
==
null
?
0
:
vo
.
getIsCancel
());
return
weixinClockPraise
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/weixinclock/vo/response/DoShareResponseVO.java
0 → 100644
View file @
4b59e54c
package
com
.
pcloud
.
book
.
weixinclock
.
vo
.
response
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.book.weixinclock.dto.RankDto
;
import
com.pcloud.common.utils.BeanUtils
;
import
com.pcloud.common.vo.BaseVO
;
import
java.util.Date
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @Describe: 微信群打卡分享返回类
* @Author: zhangdongwei
* @Date: Create on 10:43 2019/10/29 0029
*/
@Data
@ApiModel
(
"微信群打卡分享返回类"
)
public
class
DoShareResponseVO
extends
BaseVO
{
@ApiModelProperty
(
"排名"
)
private
Integer
rankNum
;
@ApiModelProperty
(
"打卡成员微信号"
)
private
String
wxUserId
;
@ApiModelProperty
(
"昵称"
)
private
String
nickname
;
@ApiModelProperty
(
"头像"
)
private
String
headPic
;
@ApiModelProperty
(
"打卡次数"
)
private
Integer
clockNum
;
@ApiModelProperty
(
"开始打卡日期"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
startClockDate
;
@ApiModelProperty
(
"今天日期"
)
@JsonFormat
(
pattern
=
"MM/dd"
,
timezone
=
"GMT+8"
)
private
Date
today
;
@ApiModelProperty
(
"农历日期"
)
private
String
lunar
;
@ApiModelProperty
(
"干支日期"
)
private
String
ganZhi
;
@ApiModelProperty
(
"分享句子"
)
private
String
shareWord
;
@ApiModelProperty
(
"二维码链接"
)
private
String
qrcodeUrl
;
@ApiModelProperty
(
"标题"
)
private
String
title
;
public
static
DoShareResponseVO
valueFromRankDto
(
RankDto
dto
){
DoShareResponseVO
vo
=
new
DoShareResponseVO
();
BeanUtils
.
copyProperties
(
dto
,
vo
);
return
vo
;
}
}
pcloud-service-book/src/main/resources/mapper/group/GroupQrcode.Mapper.xml
View file @
4b59e54c
...
@@ -770,5 +770,10 @@
...
@@ -770,5 +770,10 @@
WHERE
WHERE
c.book_group_id = #{bookGroupId}
c.book_group_id = #{bookGroupId}
</select>
</select>
<select
id=
"getByWxGroupId"
parameterType=
"string"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from book_group_qrcode where weixin_group_id = #{wxGroupId}
and is_delete = 0
</select>
</mapper>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/weixinclock/WeixinClockBrowse.Mapper.xml
0 → 100644
View file @
4b59e54c
<?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=
"com.pcloud.book.weixinclock.dao.impl.WeixinClockBrowseDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.weixinclock.entity.WeixinClockBrowse"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"weixin_clock_id"
property=
"weixinClockId"
jdbcType=
"BIGINT"
/>
<result
column=
"wx_group_id"
property=
"wxGroupId"
jdbcType=
"VARCHAR"
/>
<result
column=
"wechat_user_id"
property=
"wechatUserId"
jdbcType=
"BIGINT"
/>
<result
column=
"browse_time"
property=
"browseTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"ip_address"
property=
"ipAddress"
jdbcType=
"VARCHAR"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, weixin_clock_id, wx_group_id, wechat_user_id, browse_time, ip_address
</sql>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.weixinclock.entity.WeixinClockBrowse"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into weixin_clock_browse (weixin_clock_id, wx_group_id, wechat_user_id, browse_time, ip_address)
values (#{weixinClockId}, #{wxGroupId}, #{wechatUserId}, #{browseTime}, #{ipAddress})
</insert>
</mapper>
pcloud-service-book/src/main/resources/mapper/weixinclock/WeixinClockMember.Mapper.xml
View file @
4b59e54c
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
<select
id=
"listWeixinClockRank"
parameterType=
"map"
resultType=
"com.pcloud.book.weixinclock.dto.RankDto"
>
<select
id=
"listWeixinClockRank"
parameterType=
"map"
resultType=
"com.pcloud.book.weixinclock.dto.RankDto"
>
SELECT
SELECT
w.all_clock_day clockNum, w.nickname nickname, w.head_pic headPic, (@i :=@i + 1) rankNum
w.
wx_user_id wxUserId, w.
all_clock_day clockNum, w.nickname nickname, w.head_pic headPic, (@i :=@i + 1) rankNum
FROM
FROM
weixin_clock_member w,
weixin_clock_member w,
(SELECT @i := 0) i
(SELECT @i := 0) i
...
@@ -80,7 +80,7 @@
...
@@ -80,7 +80,7 @@
</select>
</select>
<select
id=
"getClockWechatUserRank"
parameterType=
"map"
resultType=
"com.pcloud.book.weixinclock.dto.RankDto"
>
<select
id=
"getClockWechatUserRank"
parameterType=
"map"
resultType=
"com.pcloud.book.weixinclock.dto.RankDto"
>
select cm.rankNum rankNum, cm.clockNum clockNum, cm.nickname nickname, cm.headPic headPic from (
select cm.
wx_user_id wxUserId, cm.
rankNum rankNum, cm.clockNum clockNum, cm.nickname nickname, cm.headPic headPic from (
select wx_user_id, (@rowNum:=@rowNum+1) AS rankNum, all_clock_day clockNum, nickname nickname, head_pic headPic, wechat_user_id from (
select wx_user_id, (@rowNum:=@rowNum+1) AS rankNum, all_clock_day clockNum, nickname nickname, head_pic headPic, wechat_user_id from (
select wx_user_id, all_clock_day, nickname, head_pic, wechat_user_id, @rowNum:=0 from weixin_clock_member
select wx_user_id, all_clock_day, nickname, head_pic, wechat_user_id, @rowNum:=0 from weixin_clock_member
where wx_group_id = #{wechatGroupId}
where wx_group_id = #{wechatGroupId}
...
@@ -98,4 +98,16 @@
...
@@ -98,4 +98,16 @@
where wx_user_id = #{wxUserId,jdbcType=VARCHAR}
where wx_user_id = #{wxUserId,jdbcType=VARCHAR}
</update>
</update>
<select
id=
"getClockWechatUserRankByWxUserId"
parameterType=
"map"
resultType=
"com.pcloud.book.weixinclock.dto.RankDto"
>
select cm.wx_user_id wxUserId, cm.rankNum rankNum, cm.clockNum clockNum, cm.nickname nickname, cm.headPic headPic from (
select wx_user_id, (@rowNum:=@rowNum+1) AS rankNum, all_clock_day clockNum, nickname nickname, head_pic headPic, wechat_user_id from (
select wx_user_id, all_clock_day, nickname, head_pic, wechat_user_id, @rowNum:=0 from weixin_clock_member
where wx_group_id = #{wechatGroupId}
AND (all_clock_day
<![CDATA[ >]]>
0 or wx_user_id = #{wxUserId, jdbcType=VARCHAR})
order by all_clock_day desc, update_time asc
) a
) cm where cm.wx_user_id = #{wxUserId}
LIMIT 1
</select>
</mapper>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/weixinclock/WeixinClockPraise.Mapper.xml
0 → 100644
View file @
4b59e54c
<?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=
"com.pcloud.book.weixinclock.dao.impl.WeixinClockPraiseDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.weixinclock.entity.WeixinClockPraise"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"weixin_clock_id"
property=
"weixinClockId"
jdbcType=
"BIGINT"
/>
<result
column=
"wx_user_id"
property=
"wxUserId"
jdbcType=
"VARCHAR"
/>
<result
column=
"wx_group_id"
property=
"wxGroupId"
jdbcType=
"VARCHAR"
/>
<result
column=
"praise_user_id"
property=
"praiseUserId"
jdbcType=
"BIGINT"
/>
<result
column=
"is_cancel"
property=
"isCancel"
jdbcType=
"INTEGER"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"update_time"
property=
"updateTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, weixin_clock_id, wx_user_id, wx_group_id, praise_user_id, is_cancel, create_time, update_time
</sql>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.weixinclock.entity.WeixinClockPraise"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into weixin_clock_praise (weixin_clock_id, wx_user_id, wx_group_id, praise_user_id, is_cancel, create_time, update_time)
values (#{weixinClockId}, #{wxUserId}, #{wxGroupId}, #{praiseUserId}, #{isCancel}, now(), now())
</insert>
<update
id=
"update"
parameterType=
"com.pcloud.book.weixinclock.entity.WeixinClockPraise"
>
update weixin_clock_praise
<set>
<if
test=
"weixinClockId != null"
>
weixin_clock_id = #{weixinClockId},
</if>
<if
test=
"wxUserId != null"
>
wx_user_id = #{wxUserId},
</if>
<if
test=
"wxGroupId"
>
wx_group_id = #{wxGroupId},
</if>
<if
test=
"praiseUserId != null"
>
praise_user_id = #{praiseUserId},
</if>
<if
test=
"isCancel != null"
>
is_cancel = #{isCancel},
</if>
update_time = now(),
</set>
where id = #{id}
</update>
<select
id=
"getByMemberAndUser"
parameterType=
"com.pcloud.book.weixinclock.dto.GetByMemberAndUserDto"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from weixin_clock_praise
where wx_group_id = #{wxGroupId} and wx_user_id = #{wxUserId}
and praise_user_id = #{wechatUserId} and create_time
<![CDATA[>]]>
#{createTime}
limit 1
</select>
<select
id=
"getMemberPraise"
parameterType=
"com.pcloud.book.weixinclock.dto.ListWeixinClockRankDto"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from weixin_clock_praise
where wx_group_id = #{wxGroupId}
and wx_user_id in
<foreach
collection=
"wxUserIdList"
open=
"("
close=
")"
separator=
","
item=
"item"
>
#{item}
</foreach>
and is_cancel = 1
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/weixinclock/WeixinClockShare.Mapper.xml
0 → 100644
View file @
4b59e54c
<?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=
"com.pcloud.book.weixinclock.dao.impl.WeixinClockShareDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.weixinclock.entity.WeixinClockShare"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"share_user_id"
property=
"shareUserId"
jdbcType=
"BIGINT"
/>
<result
column=
"wx_group_id"
property=
"wxGroupId"
jdbcType=
"VARCHAR"
/>
<result
column=
"share_time"
property=
"shareTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, share_user_id, wx_group_id, share_time
</sql>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.weixinclock.entity.WeixinClockShare"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into weixin_clock_share (share_user_id, wx_group_id, share_time)
values (#{shareUserId}, #{wxGroupId}, #{shareTime})
</insert>
</mapper>
pcloud-service-book/src/main/resources/mapper/weixinclock/WeixinClockShareWord.Mapper.xml
0 → 100644
View file @
4b59e54c
<?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=
"com.pcloud.book.weixinclock.dao.impl.WeixinClockShareWordDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.weixinclock.entity.WeixinClockShareWord"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"share_word"
property=
"shareWord"
jdbcType=
"VARCHAR"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, share_word
</sql>
<select
id=
"getRoundWord"
resultType=
"string"
>
SELECT share_word
FROM weixin_clock_share_word AS t1 JOIN (
SELECT ROUND(RAND() * ((SELECT MAX(id) FROM weixin_clock_share_word)-(SELECT MIN(id) FROM weixin_clock_share_word))+(SELECT MIN(id) FROM weixin_clock_share_word)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 1;
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/weixinclock/WeixinClockTopic.Mapper.xml
View file @
4b59e54c
...
@@ -56,4 +56,11 @@
...
@@ -56,4 +56,11 @@
</if>
</if>
</select>
</select>
<select
id=
"getFirstClockDay"
parameterType=
"map"
resultType=
"date"
>
select CREATED_DAY from weixin_clock_topic
where wx_group_id = #{wxGroupId, jdbcType=VARCHAR}
AND wx_user_id = #{wxUserId, jdbcType=VARCHAR}
order by CREATED_DAY limit 1
</select>
</mapper>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment