yujian
2020-05-09 7e7db2fa55a9a3af46d4fd8ede0dee147f101d64
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
147
148
149
150
package com.yeshi.fanli.dao.order;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import javax.annotation.Resource;
 
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;
 
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.GroupCommand;
import com.yeshi.fanli.entity.order.OrderMoneyDailyCount;
 
@Repository
public class OrderMoneyDailyCountDao {
 
    @Resource
    private MongoTemplate mongoTemplate;
 
    /**
     * 新增
     * 
     * @param record
     */
    public void save(OrderMoneyDailyCount record) {
        if (record == null) {
            return;
        }
        mongoTemplate.save(record);
    }
 
    /**
     * 查询ID
     * 
     * @param id
     * @return
     */
    public OrderMoneyDailyCount getById(String id) {
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(id));
        return mongoTemplate.findOne(query, OrderMoneyDailyCount.class);
    }
 
    /**
     * 选择更新
     * 
     * @param info
     */
    public void updateSelective(OrderMoneyDailyCount info) {
        Query query = new Query();
        query.addCriteria(Criteria.where("id").is(info.getId()));
        Update update = new Update();
        if (info.getIncome() != null)
            update.set("income", info.getIncome());
        if (info.getIncomeTeam() != null)
            update.set("incomeTeam", info.getIncomeTeam());
        if (info.getOrderNum() != null)
            update.set("orderNum", info.getOrderNum());
        if (info.getOrderNumTeam() != null)
            update.set("orderNumTeam", info.getOrderNumTeam());
        update.set("updateTime", new Date());
        mongoTemplate.updateMulti(query, update, OrderMoneyDailyCount.class);
    }
 
    // 查询
    public List<OrderMoneyDailyCount> query(Long uid, Date minDay, Date maxDay) {
        Query query = new Query();
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("uid").is(uid));
 
        if (minDay != null) {
            list.add(Criteria.where("bossSuperId").lte(uid));
        }
 
        if (maxDay != null) {
            list.add(Criteria.where("bossSuperId").gte(uid));
        }
 
        if (list.size() > 0) {
            Criteria[] cas = new Criteria[list.size()];
            for (int i = 0; i < list.size(); i++)
                cas[i] = list.get(i);
            query.addCriteria(new Criteria().andOperator(cas));
        }
        query.with(new Sort(Sort.Direction.ASC, "countDay"));
        return mongoTemplate.find(query, OrderMoneyDailyCount.class);
    }
 
    
//    
//    public List<PlaybackEntity> queryPlaybackRecord(FunctionUseQueryEntity queryEntity) {
//        Criteria criteria = Criteria.where("createTime").gte(queryEntity.getStartTime()).lte(queryEntity.getEndTime())
//                .and("status").is(1);
//        Query query = Query.query(criteria);
//
//        BasicDBObject initial = new BasicDBObject();
//        initial.put("playbackNum", 0);
//
//        String reduce = getReduce();
//        // 进行按天、周、月分组
//        String keyf = getKeyf(queryEntity);
//
//        DBCollection collection = mongoTemplate.getCollection(COLLNAME);
//
//        GroupCommand xx = new GroupCommand(collection, keyf, query.getQueryObject(), initial, reduce, null);
//
//        BasicDBList objects = (BasicDBList) collection.group(xx);
//
//        List<PlaybackEntity> results = new ArrayList<PlaybackEntity>();
//        if (objects != null) {
//            for (int i = 0; i < objects.size(); i++) {
//                PlaybackEntity play = new PlaybackEntity();
//                DBObject obj = (DBObject) objects.get(i);
//                play.setFormateTime((String) obj.get("strData"));
//                play.setPlaybackNum((Double) obj.get("playbackNum"));
//                results.add(play);
//            }
//        }
//        return results;
//    }
//
//    private String getKeyf(FunctionUseQueryEntity queryEntity) {
//        StringBuilder keyfBuilder = new StringBuilder();
//        keyfBuilder.append("function(doc){ ").append("    var date = new Date(doc.createTime); ");
//        if (DateTypeEnum.DATE.getValue().equals(queryEntity.getType())) {
//            keyfBuilder.append(
//                    "    var dateKey = '' + date.getFullYear()+ '-' + (date.getMonth()+1) + '-' + date.getDate();");
//        } else if (DateTypeEnum.MONTH.getValue().equals(queryEntity.getType())) {
//            keyfBuilder.append("    var dateKey = '' + date.getFullYear()+ '-' + (date.getMonth()+1);");
//        }
//        keyfBuilder.append("    return {'strData':dateKey};  ").append(" }");
//        return keyfBuilder.toString();
//    }
//
//    private String getReduce() {
//        StringBuilder reduceBuilder = new StringBuilder();
//        reduceBuilder.append("function Reduce(doc, out) { ").append("    out.playbackNum += 1; ").append(" }");
//        return reduceBuilder.toString();
//    }
 
}