123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /**
- * Created by chen on 2017/8/2.
- */
- let async_n = require("async");
- let mongoose = require('mongoose');
- let feeRateModel = mongoose.model('fee_rates');
- let consts = require('../../main/models/project_consts');
- let _=require("lodash");
- module.exports={
- save:save,
- getData:getData
- };
- let operationMap={
- 'ut_create':create_fee_rate,
- 'ut_update':update_fee_rate,
- 'ut_delete':delete_fee_rate
- };
- let updateFunctionMap = {
- 'normalUpdate':normalUpdate,
- 'update_rates':update_rates,
- 'updateStatusBySelected':updateStatusBySelected
- }
- function create_fee_rate() {
- }
- function update_fee_rate(user_id,datas) {
- if(datas.updateFunction){
- return updateFunctionMap[datas.updateFunction](user_id,datas);
- }else {
- return normalUpdate(user_id,datas);
- }
- }
- function updateStatusBySelected(user_id,datas) {
- return function(callback){
- feeRateModel.bulkWrite(generateUpdateTaks(datas.tasks),function (err,data) {
- console.log(data);
- commonCallback(callback,data,err);
- })
- }
- }
- function normalUpdate(user_id,datas) {
- return function(callback){
- console.log(datas)
- callback(null,'');
- }
- }
- function generateUpdateTaks(updateTasks) {
- var tasks=[];
- for(let u of updateTasks){
- let t ={
- updateOne:{
- filter:u.query,
- update: u.doc
- }
- }
- tasks.push(t);
- }
- return tasks;
- }
- function update_rates(user_id,datas) {
- return function(callback){
- console.log(datas);
- feeRateModel.findOne(datas.query,['rates'],function(err, data){
- let doc = datas.doc;
- if(_.isArray(doc)){
- _.forEach(doc,function (item) {
- data.rates[item.rateIndex]=item.rate;
- })
- }else {
- data.rates[doc.rateIndex]=doc.rate;
- }
- data.save(function (err) {
- commonCallback(callback,'',err);
- });
- })
- }
- }
- function delete_fee_rate() {
- }
- function save (user_id, datas, callback) {
- let operations=[];
- if(_.isArray(datas)){
- for(let i=0;i<datas.length;i++){
- operations.push(operationMap[datas[i].updateType](user_id,datas[i]));
- }
- }else {
- operations.push(operationMap[datas.updateType](user_id,datas));
- }
- async_n.parallel(operations,function (err,results) {
- if(err){
- callback(err,'');
- }else {
- if(results.length==1){
- callback(null,results[0])
- }else {
- callback(null,results)
- }
- }
- })
- }
- function getData(projectID, callback) {
- feeRateModel.find({'projectID':projectID}).exec((err,datas)=>{
- if(err){
- callback(1, '', null);
- }else {
- callback(0, consts.projectConst.FEERATE, datas);
- }
- })
- }
- function commonCallback(callback,result,err) {
- if(err){
- callback(err,'');
- }else {
- callback(null,result);
- }
- }
|