倾心映蝶

纷纷扰扰,天地间飞寻,为那一残梦而倾心

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

我以前发布过这个数据层的介绍,一直没有做细致的说明,这次分几部分好好介绍。

(一)简单介绍:http://www.cnblogs.com/qingdie/p/3803696.html

(二)使用说明:http://www.cnblogs.com/qingdie/p/3803710.html

(三)开发实例:http://www.cnblogs.com/qingdie/p/3803745.html

开发实例

以下是一个CRM系统的开发实例:

涉及到使用本数据层的地方是业务逻辑层,所以只将业务逻辑层代码贴上来了,

 

系统的解决方案文件结构。

购买记录业务逻辑层代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using Qingdie.HTWeb.BLL;
using Qingdie.HTWeb.CRM.Model;
using Qingdie.HTWeb.Help;
using Qingdie.HTWeb.Help.Filter;
using QingdieDb;

namespace Qingdie.HTWeb.CRM.BLL
{
    public class BllBuyRecord
    {
        private const string Module = "产品购买记录";
        public string Add(BuyRecord buyRecord)
        {
            var msg = new JsonMessage { Message = "添加成功" };
            try
            {
                using (var db = new DbContext())
                {
                    var customer = db.Singordefault<Customer>(d => d.Name == buyRecord.Customer.Name, d => d.CustomerId);
                    if (customer == null)
                    {
                        msg.Message = "客户:" + buyRecord.Customer.Name + "不存在";
                        return msg.ToString();
                    }
                    buyRecord.Customer = customer;
                    db.Add(buyRecord);
                    msg.Success = true;
                }
            }
            catch (Exception err)
            {
                msg.Message = err.Message;
                BllErrLog.ErrLog(err, Module, "产品购买记录添加", buyRecord);
            }
            return msg.ToString();
        }

        public string Edit(BuyRecord buyRecord)
        {
            var msg = new JsonMessage { Message = "编辑成功" };
            try
            {
                using (var db = new DbContext())
                {
                    db.Update(buyRecord, d => d.BuyRecordId == buyRecord.BuyRecordId);
                    msg.Success = true;
                }
            }
            catch (Exception err)
            {
                msg.Message = err.Message;
                BllErrLog.ErrLog(err, Module, "产品购买编辑", buyRecord);
            }
            return msg.ToString();
        }

        public string Delete(int buyRecordId)
        {
            var msg = new JsonMessage { Message = "删除成功" };
            try
            {
                using (var db = new DbContext())
                {
                    db.Delete<BuyRecord>(d => d.BuyRecordId == buyRecordId);
                    msg.Success = true;
                }
            }
            catch (Exception err)
            {
                msg.Message = err.Message;
                BllErrLog.ErrLog(err, Module, "产品购买删除", buyRecordId);
            }
            return msg.ToString();
        }

        public string BuyRecordListJson(int pageindex, int pagesize, string filterJson, string sort, string order)
        {

            try
            {
                var orderType = OrderType.Asc;
                if (!string.IsNullOrEmpty(order))
                {
                    if (order == "desc") orderType = OrderType.Desc;
                }
                OrderSort<BuyRecord> sorts;
                switch (sort)
                {
                    case "Customer": sorts = new OrderSort<BuyRecord>(d => d.Customer.CustomerId, orderType); break;
                    case "Product": sorts = new OrderSort<BuyRecord>(d => d.Product, orderType); break;
                    case "Salesway": sorts = new OrderSort<BuyRecord>(d => d.Salesway, orderType); break;
                    default: sorts = new OrderSort<BuyRecord>(d => d.BuyTime, orderType); break;
                }
                Expression<Func<BuyRecord, bool>> lambda = null;
               
                using (var db = new DbContext())
                {
                    if (!string.IsNullOrEmpty(filterJson))
                    {
                        var fg = JsonHelper.ConvertToObject<FilterGroup>(filterJson);
                        if (fg != null)
                        {
                            foreach (var rule in fg.Rules)
                            {
                                var o = rule.data.ToString();
                                if (string.IsNullOrEmpty(o)) continue;
                                switch (rule.field)
                                {
                                    case "Customer":
                                        var c = db.Singordefault<Customer>(d => d.Name.Contains(o), d => d.CustomerId);
                                        if (c!=null)
                                        {
                                            lambda = d => d.Customer.CustomerId == c.CustomerId;
                                        }
                                        break;
                                    case "Product":
                                        lambda = lambda.AndAlso(d => d.Product == o);
                                        break;
                                    case "Salesway":
                                        lambda = lambda.AndAlso(d => d.Salesway == o);
                                        break;
                                }
                            }
                        }
                    }

                    int pagecount;
                    int datacount;
                    var button = db.SelectPageObject(null, pageindex, pagesize, out pagecount, out datacount, sorts);
                    return JsonHelper.ToJson(datacount, button);
                }
            }
            catch (Exception err)
            {
                BllErrLog.ErrLog(err, Module, "产品购买获取");
            }
            return "[]";
        }
    }
}
购买记录

客户信息维护代码

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
using Qingdie.help;
using Qingdie.HTWeb.BLL;
using Qingdie.HTWeb.CRM.Model;
using Qingdie.HTWeb.Help;
using Qingdie.HTWeb.Help.Filter;
using QingdieDb;

namespace Qingdie.HTWeb.CRM.BLL
{
    public class BllCustomer
    {
        private const string Module = "客户信息管理";
        public string CustomerListJson(int pageindex, int pagesize, string filterJson, string sort, string order)
        {
            try
            {
              
                var orderType = OrderType.Asc;
                if (!string.IsNullOrEmpty(order))
                {
                    if (order == "desc") orderType = OrderType.Desc;
                }
                if (string.IsNullOrEmpty(sort)) sort = "CustomerId";
                var sorts = new List<OrderSort<Customer>>();
                switch (sort)
                {
                    case "Name":
                        sorts.Add(new OrderSort<Customer>(d => d.Name, orderType));
                        break;
                    case "Contact":
                        sorts.Add(new OrderSort<Customer>(d => d.Contact, orderType));
                        break;
                    case "Province":
                        sorts.Add(new OrderSort<Customer>(d => d.Province, orderType));
                        break;
                    case "CustomerSource":
                        sorts.Add(new OrderSort<Customer>(d => d.CustomerSource, orderType));
                        break;
                    case "Products":
                        sorts.Add(new OrderSort<Customer>(d => d.Products, orderType));
                        break;
                    case "AddTime":
                        sorts.Add(new OrderSort<Customer>(d => d.AddTime, orderType));
                        break;
                }
                Expression<Func<Customer, bool>> lambda =null;
                if (!string.IsNullOrEmpty(filterJson))
                {
                    var fg = JsonHelper.ConvertToObject<FilterGroup>(filterJson);
                    if (fg != null)
                    {
                        foreach (var rule in fg.Rules)
                        {
                            var o = rule.data.ToString();
                            if (string.IsNullOrEmpty(o)) continue;
                            switch (rule.field)
                            {
                                case "Name":
                                    lambda = d => d.Name.Contains(o);
                                    break;
                                case "Contact":
                                    lambda =d => d.Contact == o;
                                    break;
                                case "Mobile":
                                    lambda =d => d.Mobile == o;
                                    break;
                                case "Phone":
                                    lambda = d => d.Phone == o;
                                    break;
                                case "Email":
                                    lambda = d => d.Email == o;
                                    break;
                                case "QQ":
                                    lambda =d => d.QQ == o;
                                    break;
                                case "Fax":
                                    lambda = d => d.Fax == o;
                                    break;
                                case "WeChat":
                                    lambda = d => d.WeChat == o;
                                    break;
                                case "Website":
                                    lambda = d => d.Website == o;
                                    break;
                                case "CustomerSource":
                                    lambda = d => d.CustomerSource == o;
                                    break;
                                case "Products":
                                    lambda = d => d.Products == o;
                                    break;
                                case "CategoryId":
                                    var idlist = o.Split(',').Select(int.Parse).ToList();
                                    lambda = d => d.Category.CategoryId.Include(idlist);
                                    break;

                            }
                        }
                    }
                }
                using (var db = new DbContext())
                {
                    int pagecount;
                    int datacount;
                    var button = db.SelectPageObject(lambda, pageindex, pagesize, out pagecount, out datacount, sorts);
                    return JsonHelper.ToJson(datacount, button);
                }
            }
            catch (Exception err)
            {
                BllErrLog.ErrLog(err, Module, "客户列表获取");
            }
            return "[]";
        }
        public string Add(Customer customer)
        {
            var msg = new JsonMessage { Message = "添加成功" };
            try
            {
                using (var db = new DbContext())
                {
                    customer.AddTime = CommonMethod.ChineDateTimeNow;
                    customer.UserId = SysVisitor.Instance.UserId;
                    db.Add(customer);
                    msg.Success = true;
                }
            }
            catch (Exception err)
            {
                msg.Message = err.Message;
                BllErrLog.ErrLog(err, Module, "客户添加", customer);
            }
            return msg.ToString();
        }
        public string Edit(Customer customer)
        {
            var msg = new JsonMessage { Message = "编辑成功" };
            try
            {
                using (var db = new DbContext())
                {
                    db.Update(customer, d => d.CustomerId == customer.CustomerId);
                    msg.Success = true;
                }
            }
            catch (Exception err)
            {
                msg.Message = err.Message;
                BllErrLog.ErrLog(err, Module, "客户编辑", customer);
            }
            return msg.ToString();
        }
        public string Delete(int customerId)
        {
            var msg = new JsonMessage { Message = "删除成功" };
            try
            {
                using (var db = new DbContext())
                {
                    db.Delete<Customer>(d => d.CustomerId == customerId);
                    msg.Success = true;
                }
            }
            catch (Exception err)
            {
                msg.Message = err.Message;
                BllErrLog.ErrLog(err, Module, "客户删除", customerId);
            }
            return msg.ToString();
        }
        public string Inport(string file)
        {
            var msg = new JsonMessage();
            try
            {
                var filearr = file.Split('|');
                var customeList = new List<Customer>();
                foreach (var s in filearr)
                {
                    try
                    {
                        if (string.IsNullOrEmpty(s)) continue;
                        var filename = HttpContext.Current.Server.MapPath(s);
                        if (!File.Exists(filename)) continue;
                        var tb = IoHelp.IoExcel.ExcelToDataTable(filename);
                        customeList.AddRange(from row in tb.Select()
                                             where !string.IsNullOrEmpty(row["客户名称"].ToString())
                                             select new Customer
                                             {
                                                 Name = row["客户名称"].ToString(),
                                                 Contact = row["联系人"].ToString(),
                                                 Mobile = row["手机"].ToString(),
                                                 Phone = row["固定电话"].ToString(),
                                                 Email = row["邮箱"].ToString(),
                                                 QQ = row["QQ"].ToString(),
                                                 Fax = row["传真"].ToString(),
                                                 WeChat = row["微信"].ToString(),
                                                 Province = row["省份"].ToString(),
                                                 Products = row["主营产品"].ToString(),
                                                 Website = row["网站"].ToString(),
                                                 CustomerSource = row["客户来源"].ToString()
                                             });
                    }
                    catch (Exception err)
                    {
                        msg.Message = string.Format("文件:{0}部分导入失败,错误信息:{1}", s, err.Message);
                        BllErrLog.ErrLog(err, Module, "客户导入", s);
                    }
                }

                using (var db = new DbContext())
                {
                    db.Add(customeList);
                    msg.Success = true;
                    if (string.IsNullOrEmpty(msg.Message))
                    {
                        msg.Message = "导入成功";
                    }
                }
            }
            catch (Exception err)
            {
                msg.Message = err.Message;
                BllErrLog.ErrLog(err, Module, "客户导入", file);
            }
            return msg.ToString();
        }
        public void Exout(HttpContext context)
        {
            var msg = new JsonMessage { Message = "删除成功" };
            try
            {
                using (var db = new DbContext())
                {
                    var tb = db.SelectTable<Customer>(null);
                    tb.Columns.Remove("CustomerId");
                    tb.Columns.Remove("UserId");
                    tb.Columns.Remove("CategoryId");
                    tb.Columns.Remove("UniqueKey");
                    tb.Columns["Name"].ColumnName = "客户名称";
                    tb.Columns["Contact"].ColumnName = "联系人";
                    tb.Columns["Mobile"].ColumnName = "手机";
                    tb.Columns["Phone"].ColumnName = "固定电话";
                    tb.Columns["Email"].ColumnName = "邮箱";
                    tb.Columns["Fax"].ColumnName = "传真";
                    tb.Columns["WeChat"].ColumnName = "微信";
                    tb.Columns["Province"].ColumnName = "省份";
                    tb.Columns["Products"].ColumnName = "主营产品";
                    tb.Columns["CustomerSource"].ColumnName = "客户来源";
                    tb.Columns["Website"].ColumnName = "网站";
                    tb.Columns["AddTime"].ColumnName = "添加时间";
                    var path = context.Server.MapPath("/upload/temp/");
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    var filename = CommonMethod.ChineDateTimeNow.ToString("yyyy-MM-dd HH mm ss") + ".xls";
                    IoHelp.IoExcel.DataTableToExcel(tb,path + filename);
                    msg.Data = "/upload/temp/"+filename;
                    msg.Success = true;
                }
            }
            catch (Exception err)
            {
                msg.Message = err.Message;
                BllErrLog.ErrLog(err, Module, "客户导出");
            }
            context.Response.Write(msg.ToString());
        }
    }
}
客户信息维护

产品评价业务逻辑层代码:

产品评价

购买记录实体代码:

using System;
using QingdieDb;

namespace Qingdie.HTWeb.CRM.Model
{
    [Entity("BuyRecordId")]
  public  class BuyRecord
    {
        [Property(Identity = true)]
        public int? BuyRecordId { get; set; }
        /// <summary>
        /// 客户
        /// </summary>
        [Relationship]
        public Customer Customer { get; set; }
        /// <summary>
        /// 交易时间
        /// </summary>
        public DateTime BuyTime { get; set; }
        /// <summary>
        /// 交易产品
        /// </summary>
        public string Product { get; set; }
        /// <summary>
        /// 销售方式
        /// </summary>
        public string Salesway { get; set; }
    }
}
购买记录实体

客户分类实体:

using System.Collections.Generic;
using QingdieDb;

namespace Qingdie.HTWeb.CRM.Model
{
    [Entity("CategoryId")]
    public class Category
    {
        [Property(Identity = true)]
        public int? CategoryId { get; set; }
        public string Name { get; set; }
        public int? ParentId { get; set; }
        public int? SortNum { get; set; }
        [Relationship(RelationKey = "ParentId")]
        public List<Category> children { get; set; }
    }
}
客户分类实体

 

 

posted on 2014-06-23 11:57  倾心映蝶  阅读(315)  评论(0编辑  收藏  举报