Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
涂亚平
/
subsidy
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 148a074f
authored
Jun 02, 2023
by
涂亚平
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
补贴培训第一次上课熬夜改数据
1 parent
b0c7650e
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
286 additions
and
73 deletions
src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java
src/main/java/com/subsidy/controller/VodPlayHistoryController.java
src/main/java/com/subsidy/jobs/WarningJob.java
src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java
src/main/java/com/subsidy/service/VodPlayHistoryService.java
src/main/java/com/subsidy/service/impl/RenSheJuServiceImpl.java
src/main/java/com/subsidy/service/impl/VodPlayHistoryServiceImpl.java
src/main/java/com/subsidy/util/ConstantUtils.java
src/main/java/com/subsidy/util/SMSUtils.java
src/main/java/com/subsidy/vo/vod/VodPlayStateVO.java
src/main/resources/code.properties
src/main/resources/mapper/VodDictMapper.xml
src/main/resources/mapper/VodPlayHistoryMapper.xml
src/main/java/com/subsidy/common/interceptor/AuthenticationInterceptor.java
View file @
148a074
...
...
@@ -93,30 +93,27 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
Localstorage
.
setUser
(
administerDO
);
return
true
;
}
}
else
if
(
ConstantUtils
.
MOBILE_TERMINATE
.
equals
(
type
))
{
}
else
if
(
ConstantUtils
.
MOBILE_TERMINATE
.
equals
(
type
))
{
MemberDO
memberDO
=
memberMapper
.
selectById
(
claimMap
.
get
(
"id"
).
asLong
());
if
(
timeRequired
!=
null
)
{
if
(
timeRequired
!=
null
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
int
hour
=
calendar
.
get
(
Calendar
.
HOUR_OF_DAY
);
if
(
hour
<
6
){
// OprMemDictDO oprMemDictDO = new OprMemDictDO();
// oprMemDictDO.setUserId(memberDO.getId());
// oprMemDictDO.setOprType("登出");
// oprMemDictDO.setResult(1);
// oprMemDictMapper.insert(oprMemDictDO);
int
minute
=
calendar
.
get
(
Calendar
.
MINUTE
);
if
(
hour
<
6
||
(
hour
>=
23
&&
minute
>=
30
))
{
throw
new
HttpException
(
17001
);
}
}
if
(
memberDO
!=
null
)
{
if
(
memberDO
!=
null
)
{
Localstorage
.
setUser
(
memberDO
);
return
true
;
}
int
count
=
memberTokensMapper
.
selectCount
(
new
QueryWrapper
<
MemberTokensDO
>()
.
lambda
()
.
eq
(
MemberTokensDO:
:
getMemberId
,
memberDO
.
getId
()));
if
(
count
==
0
)
{
.
eq
(
MemberTokensDO:
:
getMemberId
,
memberDO
.
getId
()));
if
(
count
==
0
)
{
throw
new
HttpException
(
1011
);
}
...
...
src/main/java/com/subsidy/controller/VodPlayHistoryController.java
View file @
148a074
...
...
@@ -14,10 +14,7 @@ import com.subsidy.service.VodPlayHistoryService;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
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
org.springframework.web.bind.annotation.*
;
/**
* <p>
...
...
@@ -48,7 +45,6 @@ public class VodPlayHistoryController {
@ApiOperation
(
"记录学生看视频位置 classId班级id vodId 视频id memberId 成员id "
+
"playLength 播放时长 playRecord 位点 suspendLength"
)
@TimeRequired
// @LoginRequired
public
ResponseVO
insertHistoryNew
(
@RequestBody
String
param
){
InsertHistoryNewDTO
insertHistoryNewDTO
=
JSON
.
parseObject
(
param
,
InsertHistoryNewDTO
.
class
);
return
ResponseData
.
generateCreatedResponse
(
0
,
vodPlayHistoryService
.
insertHistoryNew
(
insertHistoryNewDTO
));
...
...
@@ -82,10 +78,16 @@ public class VodPlayHistoryController {
vodPlayHistoryService
.
playLengthFix
(
remainSecondsDTO
);
}
@PostMapping
(
"testPlays"
)
@ApiOperation
(
"解决有交叉时间的数据"
)
public
ResponseVO
testPlays
(
@RequestBody
VodPlayHistoryDO
vodPlayHistoryDO
){
return
ResponseData
.
generateCreatedResponse
(
0
,
vodPlayHistoryService
.
testPlays
(
vodPlayHistoryDO
));
@GetMapping
(
"testPlays"
)
@ApiOperation
(
"解决有交叉时间的数据 classId"
)
public
ResponseVO
testPlays
(
@RequestParam
(
"classId"
)
Long
classId
){
return
ResponseData
.
generateCreatedResponse
(
0
,
vodPlayHistoryService
.
testPlays
(
classId
));
}
@PostMapping
(
"warning"
)
@ApiOperation
(
"短信报警"
)
public
void
warning
(){
vodPlayHistoryService
.
warning
();
}
}
src/main/java/com/subsidy/jobs/WarningJob.java
0 → 100644
View file @
148a074
package
com
.
subsidy
.
jobs
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.subsidy.mapper.ClassMemberMappingMapper
;
import
com.subsidy.mapper.VodDictMapper
;
import
com.subsidy.mapper.VodPlayHistoryMapper
;
import
com.subsidy.model.ClassMemberMappingDO
;
import
com.subsidy.util.SMSUtils
;
import
com.subsidy.vo.vod.VodPlayStateVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.HashSet
;
import
java.util.List
;
@Component
public
class
WarningJob
{
/**
* 每天定时查看是否有问题数据,有问题的话并发送短信
*/
@Autowired
private
VodPlayHistoryMapper
vodPlayHistoryMapper
;
@Autowired
private
ClassMemberMappingMapper
classMemberMappingMapper
;
@Autowired
private
VodDictMapper
vodDictMapper
;
@Autowired
private
SMSUtils
smsUtils
;
@Value
(
"${spring.profiles.active}"
)
private
String
env
;
/**
* POST-2:班级基本信息信息采集接口
*/
@Scheduled
(
cron
=
"0 0 1 * * ?"
)
public
void
classBaseInfo
()
throws
IOException
{
if
(
"prod"
.
equals
(
env
))
{
List
<
Long
>
result
=
new
ArrayList
<>();
//查看当天产生视频学习的班级
List
<
Long
>
classIds
=
vodPlayHistoryMapper
.
dailyVodRecord
();
for
(
Long
classId
:
classIds
)
{
List
<
ClassMemberMappingDO
>
classMemberMappingDOS
=
classMemberMappingMapper
.
selectList
(
new
QueryWrapper
<
ClassMemberMappingDO
>()
.
lambda
()
.
eq
(
ClassMemberMappingDO:
:
getClassId
,
classId
));
for
(
ClassMemberMappingDO
classMemberMappingDO
:
classMemberMappingDOS
)
{
List
<
VodPlayStateVO
>
vodPlayStateVOS
=
vodDictMapper
.
testPlays
(
classMemberMappingDO
.
getMemberId
(),
Long
.
valueOf
(
classId
));
for
(
int
i
=
0
;
i
<
vodPlayStateVOS
.
size
()
-
1
;
i
++)
{
VodPlayStateVO
vodPlayStateVO
=
vodPlayStateVOS
.
get
(
i
+
1
);
//后面
VodPlayStateVO
vodPlayStateVO1
=
vodPlayStateVOS
.
get
(
i
);
//前面
if
(
vodPlayStateVO1
.
getEndDate
().
getTime
()
>
vodPlayStateVO
.
getStartDate
().
getTime
())
{
result
.
add
(
vodPlayStateVO
.
getClassId
());
break
;
}
}
}
}
// List<String> telephones = Arrays.asList(new String[]{"15201936167", "18201963812", "18217669021"});
// telephones.stream().forEach(x -> {
// smsUtils.sendVerifySMS("SMS_460945631", x, result.toString());
// });
smsUtils
.
sendVerifySMS
(
"SMS_460945631"
,
"15201936167"
,
result
.
toString
());
StringBuffer
stringBuffer
=
new
StringBuffer
();
for
(
int
i
=
0
;
i
<
result
.
size
();
i
++)
{
stringBuffer
.
append
(
result
);
if
(
i
==
result
.
size
()-
1
){
stringBuffer
.
append
(
"n"
);
}
}
// List<String> strings = Arrays.asList(new String[]{"15201936167", "18201963812", "18217669021"});
// List<String> telephones = Arrays.asList(new String[]{"15201936167", "18201963812", "18217669021"});
// for (String telephone : telephones){
// smsUtils.sendVerifySMS("SMS_460945631", telephone, stringBuffer.toString());
// }
smsUtils
.
sendWarning
(
"SMS_460945631"
,
"15201936167"
,
stringBuffer
.
toString
());
}
}
}
src/main/java/com/subsidy/mapper/VodPlayHistoryMapper.java
View file @
148a074
...
...
@@ -112,4 +112,8 @@ public interface VodPlayHistoryMapper extends BaseMapper<VodPlayHistoryDO> {
double
getSubsidyStudyTotal
();
int
getStudyHistoryNum
();
//查看当天产生视频学习的班级
List
<
Long
>
dailyVodRecord
();
}
src/main/java/com/subsidy/service/VodPlayHistoryService.java
View file @
148a074
...
...
@@ -33,5 +33,8 @@ public interface VodPlayHistoryService extends IService<VodPlayHistoryDO> {
void
playLengthFix
(
RemainSecondsDTO
remainSecondsDTO
);
HashSet
<
Long
>
testPlays
(
VodPlayHistoryDO
vodPlayHistoryDO
);
HashSet
<
Long
>
testPlays
(
Long
classId
);
void
warning
();
}
src/main/java/com/subsidy/service/impl/RenSheJuServiceImpl.java
View file @
148a074
...
...
@@ -102,27 +102,27 @@ public class RenSheJuServiceImpl implements RenSheJuService {
System
.
out
.
println
(
JSONObject
.
fromObject
(
classBaseInfoDTO
).
toString
());
RequestBody
body
=
RequestBody
.
create
(
mediaType
,
JSONObject
.
fromObject
(
classBaseInfoDTO
).
toString
());
Request
request
=
new
Request
.
Builder
()
.
url
(
renSheConfig
.
getUrl
()
+
"/import/downstream/enterprise/uploadClass"
)
.
method
(
"POST"
,
body
)
.
addHeader
(
"User-Agent"
,
"Apifox/1.0.0 (https://www.apifox.cn)"
)
.
addHeader
(
"Content-Type"
,
"application/json"
)
.
build
();
Response
response
=
client
.
newCall
(
request
).
execute
();
RensheResponseVO
rensheResponseVO
=
JSON
.
parseObject
(
response
.
body
().
string
(),
RensheResponseVO
.
class
);
RenshejuHistoryDO
renshejuHistoryDO
=
new
RenshejuHistoryDO
();
renshejuHistoryDO
.
setInterfaceName
(
RenSheJuConstant
.
POST_2
);
renshejuHistoryDO
.
setInputParam
(
JSONObject
.
fromObject
(
classBaseInfoDTO
).
toString
());
if
(
200
==
response
.
code
())
{
renshejuHistoryDO
.
setOutputParam
(
rensheResponseVO
.
getCtt
().
toString
());
}
else
{
renshejuHistoryDO
.
setOutputParam
(
RenSheJuConstant
.
API_ERROR
);
}
renshejuHistoryMapper
.
insert
(
renshejuHistoryDO
);
return
rensheResponseVO
;
//
return null;
//
RequestBody body = RequestBody.create(mediaType, JSONObject.fromObject(classBaseInfoDTO).toString());
//
Request request = new Request.Builder()
//
.url(renSheConfig.getUrl() + "/import/downstream/enterprise/uploadClass")
//
.method("POST", body)
//
.addHeader("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)")
//
.addHeader("Content-Type", "application/json")
//
.build();
//
Response response = client.newCall(request).execute();
//
//
RensheResponseVO rensheResponseVO = JSON.parseObject(response.body().string(), RensheResponseVO.class);
//
RenshejuHistoryDO renshejuHistoryDO = new RenshejuHistoryDO();
//
renshejuHistoryDO.setInterfaceName(RenSheJuConstant.POST_2);
//
renshejuHistoryDO.setInputParam(JSONObject.fromObject(classBaseInfoDTO).toString());
//
if (200 == response.code()) {
//
renshejuHistoryDO.setOutputParam(rensheResponseVO.getCtt().toString());
//
} else {
//
renshejuHistoryDO.setOutputParam(RenSheJuConstant.API_ERROR);
//
}
//
renshejuHistoryMapper.insert(renshejuHistoryDO);
//
return rensheResponseVO;
return
null
;
}
else
{
RenshejuHistoryDO
renshejuHistoryDO
=
new
RenshejuHistoryDO
();
renshejuHistoryDO
.
setInterfaceName
(
RenSheJuConstant
.
POST_2
);
...
...
src/main/java/com/subsidy/service/impl/VodPlayHistoryServiceImpl.java
View file @
148a074
...
...
@@ -13,6 +13,7 @@ import com.subsidy.service.VodPlayHistoryService;
import
com.subsidy.util.ConstantUtils
;
import
com.subsidy.util.DateFormatUtil
;
import
com.subsidy.util.RedisUtil
;
import
com.subsidy.util.SMSUtils
;
import
com.subsidy.vo.vod.VodPlayStateVO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -57,6 +58,9 @@ public class VodPlayHistoryServiceImpl extends ServiceImpl<VodPlayHistoryMapper,
@Autowired
private
MemberStudyLengthMapper
memberStudyLengthMapper
;
@Autowired
private
SMSUtils
smsUtils
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
String
insertHistory
(
VodPlayHistoryDO
vodPlayHistoryDO
)
{
...
...
@@ -631,14 +635,11 @@ public class VodPlayHistoryServiceImpl extends ServiceImpl<VodPlayHistoryMapper,
// }
}
public
HashSet
<
Long
>
testPlays
(
VodPlayHistoryDO
vodPlayHistoryDO
)
{
String
classIds
=
"402"
;
String
[]
classIdArr
=
classIds
.
split
(
","
);
public
HashSet
<
Long
>
testPlays
(
Long
classId
)
{
// String[] classIdArr = classIds.split(",");
HashSet
<
Long
>
result
=
new
HashSet
<>();
for
(
String
classId
:
classIdArr
)
{
//
for (String classId : classIdArr) {
List
<
ClassMemberMappingDO
>
classMemberMappingDOS
=
classMemberMappingMapper
.
selectList
(
new
QueryWrapper
<
ClassMemberMappingDO
>()
.
lambda
()
.
eq
(
ClassMemberMappingDO:
:
getClassId
,
classId
));
...
...
@@ -668,10 +669,53 @@ public class VodPlayHistoryServiceImpl extends ServiceImpl<VodPlayHistoryMapper,
}
}
}
}
//
}
return
result
;
}
public
void
warning
()
{
//有问题的班级
List
<
Long
>
result
=
new
ArrayList
<>();
//查看当天产生视频学习的班级
List
<
Long
>
classIds
=
vodPlayHistoryMapper
.
dailyVodRecord
();
for
(
Long
classId
:
classIds
)
{
List
<
ClassMemberMappingDO
>
classMemberMappingDOS
=
classMemberMappingMapper
.
selectList
(
new
QueryWrapper
<
ClassMemberMappingDO
>()
.
lambda
()
.
eq
(
ClassMemberMappingDO:
:
getClassId
,
classId
));
for
(
ClassMemberMappingDO
classMemberMappingDO
:
classMemberMappingDOS
)
{
List
<
VodPlayStateVO
>
vodPlayStateVOS
=
vodDictMapper
.
testPlays
(
classMemberMappingDO
.
getMemberId
(),
Long
.
valueOf
(
classId
));
for
(
int
i
=
0
;
i
<
vodPlayStateVOS
.
size
()
-
1
;
i
++)
{
VodPlayStateVO
vodPlayStateVO
=
vodPlayStateVOS
.
get
(
i
+
1
);
//后面
VodPlayStateVO
vodPlayStateVO1
=
vodPlayStateVOS
.
get
(
i
);
//前面
if
(
vodPlayStateVO1
.
getEndDate
().
getTime
()
>
vodPlayStateVO
.
getStartDate
().
getTime
())
{
if
(!
result
.
contains
(
vodPlayStateVO1
.
getClassId
())){
result
.
add
(
vodPlayStateVO
.
getClassId
());
}
}
break
;
}
}
}
//
// StringBuffer stringBuffer = new StringBuffer();
// for (int i = 0; i < result.size(); i++) {
// stringBuffer.append(result);
// if (i == result.size()-1){
// stringBuffer.append("n");
// }
// }
if
(
result
.
size
()>
0
){
List
<
String
>
telephones
=
Arrays
.
asList
(
new
String
[]{
"15201936167"
,
"18201963812"
,
"18217669021"
});
for
(
String
telephone
:
telephones
){
smsUtils
.
sendWarning
(
"SMS_460945631"
,
telephone
,
result
.
toString
());
}
}
}
//19为基数的话,3次签到6.5到8,4次签到4.8-6,
// 5次4-6,6次3.2-6,7次及以上2.5-6吧
//int randNumber =rand.nextInt(MAX - MIN + 1) + MIN;
...
...
@@ -712,9 +756,15 @@ public class VodPlayHistoryServiceImpl extends ServiceImpl<VodPlayHistoryMapper,
}
public
static
void
main
(
String
[]
args
)
{
while
(
true
)
{
System
.
out
.
println
(
getRandom1_2
());
}
List
<
Long
>
list
=
new
ArrayList
<
Long
>();
list
.
add
(
1L
);
list
.
add
(
2L
);
System
.
out
.
println
(
list
.
toString
());
// while (true) {
// System.out.println(getRandom1_2());
// }
// System.out.println(LocalDateTime.now());
// System.out.println(LocalDateTime.now().minusMinutes(3));
...
...
src/main/java/com/subsidy/util/ConstantUtils.java
View file @
148a074
...
...
@@ -65,12 +65,12 @@ public class ConstantUtils {
/**
* 短信 RAM账号AccessKey ID
*/
public
static
final
String
ACCESS_KEY_ID
=
"LTAI
OrpFKrDqsQ2c
"
;
public
static
final
String
ACCESS_KEY_ID
=
"LTAI
5tPAH7P7WQVeowo517BE
"
;
/**
* 短信 RAM账号AccessKey Secret
*/
public
static
final
String
SECRET
=
"
1Qp8huLETbWiBBJvHXJ7MOIhtKuA1G
"
;
public
static
final
String
SECRET
=
"
0ueqhIfdAZyw5lWlBVSLpAxTtx37RY
"
;
/**
* 腾讯云点播视频转码模板
...
...
src/main/java/com/subsidy/util/SMSUtils.java
View file @
148a074
...
...
@@ -76,27 +76,69 @@ public class SMSUtils {
* @param telephone 手机号
* @return
*/
public
static
String
sendVerifySMS
(
String
templateId
,
String
telephone
,
String
param
){
DefaultProfile
profile
=
DefaultProfile
.
getProfile
(
ConstantUtils
.
REGION_ID
,
ConstantUtils
.
ACCESS_KEY_ID
,
ConstantUtils
.
SECRET
);
IAcsClient
client
=
new
DefaultAcsClient
(
profile
);
public
String
sendVerifySMS
(
String
templateId
,
String
telephone
,
String
param
){
CommonRequest
request
=
new
CommonRequest
();
request
.
setSysMethod
(
MethodType
.
POST
);
request
.
setSysDomain
(
"dysmsapi.aliyuncs.com"
);
request
.
setSysVersion
(
"2017-05-25"
);
request
.
setSysAction
(
"SendSms"
);
request
.
putQueryParameter
(
"RegionId"
,
ConstantUtils
.
REGION_ID
);
request
.
putQueryParameter
(
"PhoneNumbers"
,
telephone
);
request
.
putQueryParameter
(
"SignName"
,
ConstantUtils
.
VERIFY_NAME
);
request
.
putQueryParameter
(
"TemplateCode"
,
templateId
);
// if (StringUtils.isEmpty(param)){
// request.putQueryParameter("TemplateParam","{ \"code\":\""+verifyCode +"\"}");
// }
request
.
putQueryParameter
(
"TemplateParam"
,
param
);
CommonResponse
response
=
null
;
try
{
response
=
client
.
getCommonResponse
(
request
);
System
.
setProperty
(
"sun.net.client.defaultConnectTimeout"
,
"10000"
);
System
.
setProperty
(
"sun.net.client.defaultReadTimeout"
,
"10000"
);
//初始化acsClient,暂不支持region化
IClientProfile
profile
=
DefaultProfile
.
getProfile
(
"cn-hangzhou"
,
aliyunSmsProperties
.
getAccessKeyId
(),
aliyunSmsProperties
.
getAccessKeySecret
());
DefaultProfile
.
addEndpoint
(
"cn-hangzhou"
,
"cn-hangzhou"
,
aliyunSmsProperties
.
getProduct
(),
aliyunSmsProperties
.
getDomain
());
IAcsClient
acsClient
=
new
DefaultAcsClient
(
profile
);
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest
request
=
new
SendSmsRequest
();
//必填:待发送手机号
request
.
setPhoneNumbers
(
telephone
);
//必填:短信签名-可在短信控制台中找到
request
.
setSignName
(
"有课互联"
);
//必填:短信模板-可在短信控制台中找到
request
.
setTemplateCode
(
templateId
);
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request
.
setTemplateParam
(
"{\"code\":\""
+
param
+
"\"}"
);
//hint 此处可能会抛出异常,注意catch
SendSmsResponse
sendSmsResponse
=
acsClient
.
getAcsResponse
(
request
);
if
(
sendSmsResponse
!=
null
&&
sendSmsResponse
.
getCode
().
equals
(
"OK"
))
{
return
ConstantUtils
.
SUCCESS_SEND_OUT
;
}
throw
new
Exception
(
sendSmsResponse
.
getMessage
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ConstantUtils
.
FAIL_SEND_OUT
;
}
}
public
String
sendWarning
(
String
templateId
,
String
telephone
,
String
param
){
try
{
System
.
setProperty
(
"sun.net.client.defaultConnectTimeout"
,
"10000"
);
System
.
setProperty
(
"sun.net.client.defaultReadTimeout"
,
"10000"
);
//初始化acsClient,暂不支持region化
IClientProfile
profile
=
DefaultProfile
.
getProfile
(
"cn-hangzhou"
,
aliyunSmsProperties
.
getAccessKeyId
(),
aliyunSmsProperties
.
getAccessKeySecret
());
DefaultProfile
.
addEndpoint
(
"cn-hangzhou"
,
"cn-hangzhou"
,
aliyunSmsProperties
.
getProduct
(),
aliyunSmsProperties
.
getDomain
());
IAcsClient
acsClient
=
new
DefaultAcsClient
(
profile
);
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest
request
=
new
SendSmsRequest
();
//必填:待发送手机号
request
.
setPhoneNumbers
(
telephone
);
//必填:短信签名-可在短信控制台中找到
request
.
setSignName
(
"有课互联科技"
);
//必填:短信模板-可在短信控制台中找到
request
.
setTemplateCode
(
templateId
);
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request
.
setTemplateParam
(
"{\"ids\":\""
+
param
+
"\"}"
);
//hint 此处可能会抛出异常,注意catch
SendSmsResponse
sendSmsResponse
=
acsClient
.
getAcsResponse
(
request
);
if
(
sendSmsResponse
!=
null
&&
sendSmsResponse
.
getCode
().
equals
(
"OK"
))
{
return
ConstantUtils
.
SUCCESS_SEND_OUT
;
}
throw
new
Exception
(
sendSmsResponse
.
getMessage
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
ConstantUtils
.
FAIL_SEND_OUT
;
...
...
src/main/java/com/subsidy/vo/vod/VodPlayStateVO.java
View file @
148a074
...
...
@@ -10,6 +10,8 @@ public class VodPlayStateVO {
private
Long
id
;
private
Long
classId
;
private
Long
memberId
;
private
Date
startDate
;
...
...
src/main/resources/code.properties
View file @
148a074
...
...
@@ -67,7 +67,7 @@ meishu.code-message[15002]=类型已存在证书,删除失败
meishu.code-message[16001]=该条件已存在
meishu.code-message[17001]=系统不支持
00
:
0
0:00~06:00:00学习
meishu.code-message[17001]=系统不支持
23
:
3
0:00~06:00:00学习
meishu.code-message[18001]=已超过当日验证次数上线
...
...
src/main/resources/mapper/VodDictMapper.xml
View file @
148a074
...
...
@@ -99,6 +99,7 @@
<select
id=
"testPlays"
parameterType=
"long"
resultType=
"com.subsidy.vo.vod.VodPlayStateVO"
>
SELECT
id,
t.class_id,
member_id,
DATE_SUB( create_date, INTERVAL (play_length+suspend_length) SECOND ) AS start_date,
create_date AS end_date,
...
...
src/main/resources/mapper/VodPlayHistoryMapper.xml
View file @
148a074
...
...
@@ -505,4 +505,19 @@
delete_date IS NULL
</select>
<select
id=
"dailyVodRecord"
resultType=
"long"
>
SELECT DISTINCT
t1.class_id
FROM
vod_play_history t1
LEFT JOIN class_dict t2 ON t1.class_id = t2.id
WHERE
DATE_FORMAT( t1.create_date, '%Y-%m-%d' ) = CURDATE()
AND t2.class_code IS NOT NULL
AND t2.class_type = 0
AND t1.delete_date IS NULL
AND t2.delete_date IS NULL
</select>
</mapper>
Write
Preview
Markdown
is supported
Attach a file
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 post a comment