TdCCustSignServiceImpl.java
5.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package com.zteits.pay.biz;
import com.alibaba.fastjson.JSONObject;
import com.zteits.clouds.api.apibase.bean.BizResult;
import com.zteits.clouds.api.apibase.constants.ErrorType;
import com.zteits.clouds.api.apibase.exception.BizException;
import com.zteits.clouds.api.dto.pay.TdCCustSignDTO;
import com.zteits.clouds.api.dto.pay.param.TdCCustSignRequest;
import com.zteits.clouds.api.service.pay.TdCCustSignService;
import com.zteits.clouds.api.service.sys.SysCommonService;
import com.zteits.pay.dao.TdCCustScoreDetailDao;
import com.zteits.pay.dao.TdCCustSignDao;
import com.zteits.pay.domain.TdCCustSign;
import com.zteits.pay.domain.TdCCustSignDO;
import com.zteits.pay.service.presentrule.oper.TdCPresentRuleOperInnerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
@Service("com.zteits.pay.biz.TdCCustSignServiceImpl")
public class TdCCustSignServiceImpl implements TdCCustSignService{
private static final Logger logger = LoggerFactory.getLogger(TdCCustScoreDetailServiceImpl.class);
@Autowired
private TdCCustSignDao tdCCustSignDAO;
@Autowired
private SysCommonService sysCommonService;
@Autowired
private TdCCustScoreDetailDao tdCCustScoreDetailDao;
@Autowired
private TdCPresentRuleOperInnerService tdCPresentRuleOperInnerService;
@Override
public BizResult<Integer> getCustSignState(TdCCustSignRequest request) {
TdCCustSign tdCCustSign = new TdCCustSign();
BeanUtils.copyProperties(request, tdCCustSign);
int flg =tdCCustSignDAO.getCustSignState(tdCCustSign);
return new BizResult<Integer>(flg);
}
@Transactional
@Override
public BizResult<TdCCustSignDTO> saveCustSign(TdCCustSignRequest request) {
logger.info("签到入参信息:request={}"+ JSONObject.toJSONString(request));
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(new Date()); //当前时间
TdCCustSignDTO tdCCustSignDTO = new TdCCustSignDTO();
tdCCustSignDTO.setSignScore(0);
tdCCustSignDTO.setSignDate(new Date());
tdCCustSignDTO.setContinueSignNum(0);
TdCCustSign tdCCustSign = new TdCCustSign();
BeanUtils.copyProperties(request, tdCCustSign);
TdCCustSignDO tdCCustSignDO = new TdCCustSignDO();
//判断今天是否已经签到
tdCCustSignDO = tdCCustSignDAO.queryCustSignOld(tdCCustSign);
if(tdCCustSignDO.getSignDate() != null ){
BeanUtils.copyProperties(tdCCustSignDO, tdCCustSignDTO);
return new BizResult<TdCCustSignDTO>(tdCCustSignDTO);
}
Long score = tdCPresentRuleOperInnerService.presentForSign(tdCCustSign.getCustId());
if(score==null || score.intValue()==0){
BeanUtils.copyProperties(tdCCustSignDO, tdCCustSignDTO);
return new BizResult<TdCCustSignDTO>(tdCCustSignDTO);
}
tdCCustSign.setSignScore(score.intValue());
/**首先查询前一天的签到信息*/
TdCCustSign tdCCustSignQ = new TdCCustSign();
BeanUtils.copyProperties(tdCCustSign, tdCCustSignQ);
tdCCustSignQ.setSignDate(this.getBeforeTime(tdCCustSign.getSignDate()));
tdCCustSignDO = tdCCustSignDAO.queryCustSignOld(tdCCustSignQ);
if(tdCCustSignDO.getSignDate() == null){
//前一天没有签到
tdCCustSign.setContinueSignNum(1);
}else{
//前一天签到
if(tdCCustSignDO.getContinueSignNum() == 7){
//签到7天,今天按第一天开始签到
tdCCustSign.setContinueSignNum(1);
}else{
tdCCustSign.setContinueSignNum(tdCCustSignDO.getContinueSignNum()+1);
}
}
int flg =tdCCustSignDAO.saveCustSign(tdCCustSign);
if(flg == 0){
throw new BizException(ErrorType.CUST_SIGN_ERROR,"签到失败!");
}
//查询
tdCCustSignDO = tdCCustSignDAO.queryCustSignOld(tdCCustSign);
BeanUtils.copyProperties(tdCCustSignDO, tdCCustSignDTO);
return new BizResult<TdCCustSignDTO>(tdCCustSignDTO);
}
//获取明年的最后一天
private Date getEndTime(Date endTime){
Date beginTime = null;
//获取当前时间
Calendar cal = Calendar.getInstance();
cal.setTime(endTime);
//按你的要求设置时间
cal.set(cal.get(Calendar.YEAR)+1, 11, 31, 00, 00, 00);
beginTime = cal.getTime();
return beginTime;
}
//获取前一天
private Date getBeforeTime(Date beginTime){
Date date = null;
Calendar calendar = Calendar.getInstance();
calendar.setTime(beginTime);
calendar.add(Calendar.DAY_OF_MONTH, -1);//-1今天的时间减一天
date = calendar.getTime();
return date;
}
@Override
public BizResult<TdCCustSignDTO> queryCustSign(TdCCustSignRequest request) {
TdCCustSign tdCCustSign = new TdCCustSign();
TdCCustSignDO tdCCustSignDO = new TdCCustSignDO();
TdCCustSignDTO tdCCustSignDTO = new TdCCustSignDTO();
BeanUtils.copyProperties(request, tdCCustSign);
//查询是否签到
int flg =tdCCustSignDAO.getCustSignState(tdCCustSign);
if(flg>0){
tdCCustSignDO = tdCCustSignDAO.queryCustSignOld(tdCCustSign);
}else{
tdCCustSign.setSignDate(this.getBeforeTime(tdCCustSign.getSignDate()));
tdCCustSignDO = tdCCustSignDAO.queryCustSignOld(tdCCustSign);
tdCCustSignDO.setSignDate(tdCCustSign.getSignDate());
if(tdCCustSignDO.getContinueSignNum() == 7){
//签到7天,今天按第一天开始签到
tdCCustSignDO.setContinueSignNum(0);
}
}
BeanUtils.copyProperties(tdCCustSignDO, tdCCustSignDTO);
return new BizResult<TdCCustSignDTO>(tdCCustSignDTO);
}
}