| | |
| | | import com.yeshi.makemoney.app.dao.goldcorn.GoldCornGetRecordDao; |
| | | import com.yeshi.makemoney.app.dao.goldcorn.GoldCornGetRecordDao.DaoQuery; |
| | | import com.yeshi.makemoney.app.entity.goldcorn.GoldCornGetRecord; |
| | | import com.yeshi.makemoney.app.entity.goldcorn.GoldCornGetType; |
| | | import com.yeshi.makemoney.app.exception.goldcorn.GoldCornGetRecordException; |
| | | import com.yeshi.makemoney.app.service.inter.goldcorn.GoldCornGetRecordService; |
| | | import com.yeshi.makemoney.app.service.query.goldcorn.GoldCornGetRecordQuery; |
| | | import com.yeshi.makemoney.app.utils.goldcorn.GoldCornUtil; |
| | | import org.springframework.data.domain.Sort; |
| | | import org.springframework.data.mongodb.core.MongoTemplate; |
| | | import org.springframework.data.mongodb.core.aggregation.Aggregation; |
| | |
| | | import org.springframework.data.mongodb.core.query.Criteria; |
| | | import org.springframework.data.mongodb.core.query.Query; |
| | | import org.springframework.stereotype.Service; |
| | | import org.yeshi.utils.TimeUtil; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | |
| | | DaoQuery daoQuery = new DaoQuery(); |
| | | daoQuery.type = goldCornGetRecordQuery.getType(); |
| | | daoQuery.uid = goldCornGetRecordQuery.getUid(); |
| | | daoQuery.day=goldCornGetRecordQuery.getDay(); |
| | | daoQuery.dayList=goldCornGetRecordQuery.getDayList(); |
| | | |
| | | |
| | | daoQuery.minCreateTime = goldCornGetRecordQuery.toStartTime(); |
| | | daoQuery.maxCreateTime = goldCornGetRecordQuery.toEndTime(); |
| | | |
| | |
| | | DaoQuery daoQuery = new DaoQuery(); |
| | | daoQuery.type = goldCornGetRecordQuery.getType(); |
| | | daoQuery.uid = goldCornGetRecordQuery.getUid(); |
| | | daoQuery.day=goldCornGetRecordQuery.getDay(); |
| | | daoQuery.dayList=goldCornGetRecordQuery.getDayList(); |
| | | daoQuery.minCreateTime = goldCornGetRecordQuery.toStartTime(); |
| | | daoQuery.maxCreateTime = goldCornGetRecordQuery.toEndTime(); |
| | | return goldCornGetRecordDao.count(daoQuery); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Long getGoldCornByDay(Long uid, String day) { |
| | | public Long getGoldCornByDay(Long uid, Date day) { |
| | | List<Criteria> andList = new ArrayList<>(); |
| | | if (uid != null) { |
| | | andList.add(Criteria.where("uid").is(uid)); |
| | | } |
| | | |
| | | if (day != null) { |
| | | andList.add(Criteria.where("day").is(day)); |
| | | andList.add(Criteria.where("day").is(GoldCornUtil.getFormatDay(day))); |
| | | } |
| | | |
| | | Criteria[] ands = new Criteria[andList.size()]; |
| | |
| | | |
| | | @Override |
| | | public Map<Long, Integer> sumGoldCornByFromUids(Long uid, List<Long> fromUidList, String day) { |
| | | if (fromUidList == null || fromUidList.size() == 0) { |
| | | return new HashMap<>(); |
| | | } |
| | | Criteria[] ands = new Criteria[3]; |
| | | ands[0] = Criteria.where("day").is(day); |
| | | ands[1] = Criteria.where("uid").is(uid); |
| | |
| | | for (int i = 0; i < ors.length; i++) { |
| | | ors[i] = Criteria.where("fromUid").is(fromUidList.get(i)); |
| | | } |
| | | ands[3] = new Criteria().orOperator(ors); |
| | | ands[2] = new Criteria().orOperator(ors); |
| | | |
| | | List<AggregationOperation> list = new ArrayList<>(); |
| | | list.add(Aggregation.match(new Criteria().andOperator(ands))); |
| | |
| | | return map; |
| | | } |
| | | |
| | | @Override |
| | | public int getContinueDay(Long uid, GoldCornGetType type, Date deadDate) { |
| | | List<AggregationOperation> list = new ArrayList<>(); |
| | | list.add(Aggregation.match(Criteria.where("uid").is(uid).and("type").is(type).and("createTime").lte(deadDate))); |
| | | list.add(Aggregation.group("day").max("createTime").as("createTime")); |
| | | list.add(Aggregation.sort(Sort.Direction.DESC, "createTime")); |
| | | //最大限制为365天 |
| | | list.add(Aggregation.limit(365)); |
| | | list.add(Aggregation.project("day")); |
| | | AggregationResults<Map<String,String>> results = goldCornGetRecordDao.aggregate(list, Map.class); |
| | | List<Map<String,String>> resultList = results.getMappedResults(); |
| | | //获取连续的天数 |
| | | String format="yyyy-MM-dd"; |
| | | Date lastDay = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(deadDate.getTime(), format), format)); |
| | | int continueDay = 0; |
| | | for (Map<String,String> day : resultList) { |
| | | Long timestamp = TimeUtil.convertToTimeTemp(day.get("_id"), format); |
| | | long cha = lastDay.getTime() - timestamp; |
| | | if (cha <= 1000 * 60 * 60 * 24L) { |
| | | continueDay++; |
| | | } else { |
| | | break; |
| | | } |
| | | lastDay = new Date(timestamp); |
| | | } |
| | | return continueDay; |
| | | } |
| | | |
| | | |
| | | } |