Browse Source

客户验证

wangxingcheng 2 years ago
parent
commit
ce9cec2401

+ 71 - 78
opms_parent/app/handler/cust/customer.go

@@ -30,91 +30,115 @@ const (
 	Receive          = "领取"
 )
 
-//公海列表
-func (c *CustomerHeader) PublicGetList(ctx context.Context, req *model.CustCustomerSearchReq, rsp *comm_def.CommonMsg) error {
+//创建客户
+func (c *CustomerHeader) Create(ctx context.Context, req *model.CustomerAddSeq, rsp *comm_def.CommonMsg) error {
+	g.Log().Info("客户名称", req.CustName)
+	if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
+		return err
+	}
 	customerServer, err := server.NewCustomerService(ctx)
 	if err != nil {
 		g.Log().Error(err)
 		return err
 	}
+	id, err := customerServer.Create(req)
 
-	req.IsPublic = noCustomer
-	g.Log().Info("publicGetlist", req)
-
-	total, list, err := customerServer.GetList(req)
+	var Ids []int64
+	Ids = append(Ids, gconv.Int64(id))
 	_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
 	if err != nil {
 		g.Log().Error(err)
 		return err
 	}
-	rsp.Data = g.Map{"list": list, "total": total}
+	//创建客户
+	c.WriteCustLog(ctx, Creates, Ids, req)
+	rsp.Data = g.Map{"lastId": id}
 	return nil
-
 }
 
-//客户列表
-func (c *CustomerHeader) GetList(ctx context.Context, req *model.CustCustomerSearchReq, rsp *comm_def.CommonMsg) error {
+//客户详情
+func (c *CustomerHeader) GetEntityById(ctx context.Context, req *comm_def.IdsReq, rsp *comm_def.CommonMsg) error {
+	if len(req.Ids) == 0 {
+
+		return gerror.New("参数有误!")
+	}
 	customerServer, err := server.NewCustomerService(ctx)
+	if err != nil {
+
+		return myerrors.New("系统异常,请重新尝试", err)
+	}
+	list, err := customerServer.GetEntityById(req.Ids)
+	_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
 	if err != nil {
 		g.Log().Error(err)
 		return err
 	}
-	total, list, err := customerServer.GetList(req)
+	rsp.Data = g.Map{"list": list}
+	return nil
+}
+
+//删除客户
+func (c *CustomerHeader) DeleteById(ctx context.Context, req *model.DelCustomer, rsp *comm_def.CommonMsg) error {
+	if req.Id == 0 {
+		return gerror.New("参数有误!")
+	}
+	customerServer, err := server.NewCustomerService(ctx)
+	if err != nil {
+		g.Log().Error(err)
+		return myerrors.New("系统异常,请重新尝试", err)
+	}
+	err = customerServer.DeleteById(req.Id)
+	var Ids []int64
+	Ids = append(Ids, gconv.Int64(req.Id))
+	//删除客户
+	c.WriteCustLog(ctx, DeleteById, Ids, req)
 
 	_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
 	if err != nil {
 		g.Log().Error(err)
 		return err
 	}
-	rsp.Data = g.Map{"list": list, "total": total}
 	return nil
-
 }
 
-//创建客户
-func (c *CustomerHeader) Create(ctx context.Context, req *model.Customer, rsp *comm_def.CommonMsg) error {
-	g.Log().Info("客户名称", req.CustName)
-	if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
-		return err
-	}
+//公海列表
+func (c *CustomerHeader) PublicGetList(ctx context.Context, req *model.CustCustomerSearchReq, rsp *comm_def.CommonMsg) error {
 	customerServer, err := server.NewCustomerService(ctx)
 	if err != nil {
 		g.Log().Error(err)
 		return err
 	}
-	id, err := customerServer.Create(req)
-	
-	var Ids []int64
-	Ids = append(Ids, gconv.Int64(id))
+
+	req.IsPublic = noCustomer
+	g.Log().Info("publicGetlist", req)
+
+	total, list, err := customerServer.GetList(req)
 	_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
 	if err != nil {
 		g.Log().Error(err)
 		return err
 	}
-	//创建客户
-	c.WriteCustLog(ctx, Creates, Ids, req)
-	rsp.Data = g.Map{"lastId": id}
+	rsp.Data = g.Map{"list": list, "total": total}
 	return nil
+
 }
 
-//客户详情
-func (c *CustomerHeader) GetEntityById(ctx context.Context, req *comm_def.IdsReq, rsp *comm_def.CommonMsg) error {
-	if len(req.Ids) == 0 {
-		return gerror.New("参数有误!")
-	}
+//客户列表
+func (c *CustomerHeader) GetList(ctx context.Context, req *model.CustCustomerSearchReq, rsp *comm_def.CommonMsg) error {
 	customerServer, err := server.NewCustomerService(ctx)
 	if err != nil {
 		g.Log().Error(err)
-		return gerror.New("系统异常,请重新尝试")
+		return err
 	}
-	list, err := customerServer.GetEntityById(req.Ids)
+	total, list, err := customerServer.GetList(req)
 	_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
 	if err != nil {
 		g.Log().Error(err)
 		return err
 	}
-	rsp.Data = g.Map{"list": list}
+	rsp.Data = g.Map{"list": list, "total": total}
 	return nil
+
 }
 
 //转移客户
@@ -124,8 +148,7 @@ func (c *CustomerHeader) UpdateBytransfer(ctx context.Context, req *model.Distri
 	}
 	customerServer, err := server.NewCustomerService(ctx)
 	if err != nil {
-		g.Log().Error(err)
-		return gerror.New("系统异常,请重新尝试")
+		return myerrors.New("系统异常,请重新尝试", err)
 	}
 	err = customerServer.UpdateBytransfer(req)
 	if err != nil {
@@ -149,11 +172,10 @@ func (c *CustomerHeader) DistriCustomer(ctx context.Context, req *model.DistriCu
 	if len(req.Ids) == 0 || req.SalesId == 0 {
 		return gerror.New("参数有误!")
 	}
-	g.Log().Info("DistriCustomer", req.Ids)
 	customerServer, err := server.NewCustomerService(ctx)
 	if err != nil {
-		g.Log().Error(err)
-		return gerror.New("系统异常,请重新尝试")
+
+		return myerrors.New("系统异常,请重新尝试", err)
 	}
 	err = customerServer.DistriCustomer(req)
 	if err != nil {
@@ -162,7 +184,6 @@ func (c *CustomerHeader) DistriCustomer(ctx context.Context, req *model.DistriCu
 	var behavior string
 	if req.Receive == "" {
 		behavior = DistriCustomer
-		//c.WriteCustLog(ctx, DistriCustomer, req.Ids, req)
 	} else {
 		behavior = Receive
 	}
@@ -177,30 +198,6 @@ func (c *CustomerHeader) DistriCustomer(ctx context.Context, req *model.DistriCu
 
 }
 
-//删除客户
-func (c *CustomerHeader) DeleteById(ctx context.Context, req *model.DelCustomer, rsp *comm_def.CommonMsg) error {
-	if req.Id == 0 {
-		return gerror.New("参数有误!")
-	}
-	customerServer, err := server.NewCustomerService(ctx)
-	if err != nil {
-		g.Log().Error(err)
-		return gerror.New("系统异常,请重新尝试")
-	}
-	err = customerServer.DeleteById(req.Id)
-	var Ids []int64
-	Ids = append(Ids, gconv.Int64(req.Id))
-	//删除客户
-	c.WriteCustLog(ctx, DeleteById, Ids, req)
-
-	_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
-	if err != nil {
-		g.Log().Error(err)
-		return err
-	}
-	return nil
-}
-
 //移入公海
 func (c *CustomerHeader) MoveToPubic(ctx context.Context, req *model.MoveToPubicRep, rsp *comm_def.CommonMsg) error {
 	if len(req.Ids) == 0 {
@@ -208,8 +205,8 @@ func (c *CustomerHeader) MoveToPubic(ctx context.Context, req *model.MoveToPubic
 	}
 	customerServer, err := server.NewCustomerService(ctx)
 	if err != nil {
-		g.Log().Error(err)
-		return gerror.New("系统异常,请重新尝试")
+
+		return myerrors.New("系统异常,请重新尝试", err)
 	}
 
 	err = customerServer.MoveToPubic(req.Ids)
@@ -229,14 +226,11 @@ func (c *CustomerHeader) MoveToPubic(ctx context.Context, req *model.MoveToPubic
 func (c *CustomerHeader) DynamicsList(ctx context.Context, req *model.CustomerDynameicsReq, rsp *comm_def.CommonMsg) error {
 	customerServer, err := server.NewCustomerService(ctx)
 	if err != nil {
-
-		g.Log().Error(err)
-		return err
+		return myerrors.New("系统异常,请重新尝试", err)
 	}
 	total, list, err := customerServer.DynamicsList(req)
 	_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
 	if err != nil {
-		g.Log().Error(err)
 		return err
 	}
 	rsp.Data = g.Map{"list": list, "total": total}
@@ -247,8 +241,8 @@ func (c *CustomerHeader) DynamicsList(ctx context.Context, req *model.CustomerDy
 func (c *CustomerHeader) Mergecustomer(ctx context.Context, req *model.MergecustomerRep, rsp *comm_def.CommonMsg) error {
 	customerServer, err := server.NewCustomerService(ctx)
 	if err != nil {
-		g.Log().Error(err)
-		return err
+		return myerrors.New("系统异常,请重新尝试", err)
+
 	}
 	if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
 		return err
@@ -258,7 +252,7 @@ func (c *CustomerHeader) Mergecustomer(ctx context.Context, req *model.Mergecust
 	Ids = append(Ids, gconv.Int64(req.Id))
 	_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
 	if err != nil {
-		g.Log().Error(err)
+
 		return err
 	}
 	c.WriteCustLog(ctx, Mergecustomer, Ids, req)
@@ -269,8 +263,8 @@ func (c *CustomerHeader) Mergecustomer(ctx context.Context, req *model.Mergecust
 func (c *CustomerHeader) UpdateById(ctx context.Context, req *model.UpdateCustomer, rsp *comm_def.CommonMsg) error {
 	customerServer, err := server.NewCustomerService(ctx)
 	if err != nil {
-		g.Log().Error(err)
-		return gerror.New("系统异常,请重新尝试")
+
+		return myerrors.New("系统异常,请重新尝试", err)
 	}
 	err = customerServer.UpdateById(req)
 	var Ids []int64
@@ -278,7 +272,6 @@ func (c *CustomerHeader) UpdateById(ctx context.Context, req *model.UpdateCustom
 	c.WriteCustLog(ctx, UpdateById, Ids, req)
 	_, err, rsp.Code, rsp.Msg = myerrors.CheckError(err)
 	if err != nil {
-		g.Log().Error(err)
 		return err
 	}
 	return nil
@@ -317,8 +310,8 @@ func (c *CustomerHeader) DeriveList(ctx context.Context, req *model.CustCustomer
 	if err != nil {
 		g.Log().Error(err)
 		return gerror.New("系统异常,请重新尝试")
-	}
-	buffer, _ := customerServer.Derive(req)
+	} //Export
+	buffer, _ := customerServer.Export(req)
 	rsp.Data = g.Map{"list": buffer}
 	return nil
 }

+ 6 - 4
opms_parent/app/model/cust/cust_customer.go

@@ -24,6 +24,7 @@ type CustCustomerSearchReq struct {
 	CustLevel    string `json:"custLevel"`
 	TargetType   string `json:"targetType,omitempty"`
 	FollowUpDate string `json:"followUpDate,omitempty"`
+	Remark       string `json:"remark"`
 	request.PageReq
 }
 
@@ -43,12 +44,12 @@ type CustExport struct {
 
 // 添加客户信息表
 type AddCustCustomerReq struct {
-	Cust *Customer
+	Cust *CustomerAddSeq
 	Info *Information
 }
 
 // 单表添加客户信息表
-type Customer struct {
+type CustomerAddSeq struct {
 	CustName     string      `p:"custName"        json:"custName"   v:"required#客户名称不能为空"`
 	AbbrName     string      `p:"abbrName"        json:"abbrName"   `                         // 助计名
 	CustLocation string      `p:"custLocation"    json:"custLocation"    `                    // 所在地区
@@ -90,6 +91,7 @@ type CustList struct {
 	CreatedTime  string `orm:"created_time"   json:"createdTime"`  // 创建时间
 	SalesId      int    `orm:"sales_id"   json:"salesId"`          //
 	SalesName    string `orm:"sales_name"   json:"salesName"`      //
+	Remark       string `orm:"remark"   json:"remark"`
 	//Follow       *Follow     `json:"follow"`
 }
 
@@ -137,7 +139,7 @@ type DelCustomerContact struct {
 //合并客户参数
 type MergecustomerRep struct {
 	Id int `json:"id"` //目标Id
-	*Customer
+	*CustomerAddSeq
 	//*CustCustomerContactSeq
 	*AddCustomerBelong
 	ChooseId []int64 `json:"chooseId,omitempty"` //被合并的客户id
@@ -146,7 +148,7 @@ type MergecustomerRep struct {
 //修改客户
 type UpdateCustomer struct {
 	Id int `json:"id,omitempty"` //客户id
-	*Customer
+	*CustomerAddSeq
 }
 
 //移入公海

+ 225 - 212
opms_parent/app/service/cust/cust_customer.go

@@ -5,8 +5,8 @@ import (
 	"context"
 	"math"
 	"strconv"
-	"time"
 
+	"dashoo.cn/opms_libary/myerrors"
 	"github.com/360EntSecGroup-Skylar/excelize"
 	"github.com/gogf/gf/errors/gerror"
 	"github.com/gogf/gf/frame/g"
@@ -57,91 +57,26 @@ func NewCustomerService(ctx context.Context) (svc *CustomerService, err error) {
 	return svc, nil
 }
 
-//导出数据
-func (c *CustomerService) Derive(req *model.CustCustomerExport) (content *model.CustExport, err error) {
-	var con model.CustExport
-	total, data, err := c.GetList(&req.CustCustomerSearchReq)
+//创建客户
+func (c *CustomerService) Create(req *model.CustomerAddSeq) (insertId int64, err error) {
+	cusTomer := new(model.CustCustomer)
+	count, err := c.Dao.Where(g.Map{"cust_name": req.CustName}).Count()
 	if err != nil {
+		err = myerrors.New("Sql执行异常", err)
 		return
 	}
-	f := excelize.NewFile()
-	index := f.NewSheet("Sheet1")
-	for index, item := range req.Columns {
-		sheetPosition := service.Div(index+1) + "1"
-		f.SetCellValue("Sheet1", sheetPosition, item)
-	}
-	if total > 0 {
-
-		for ck, item := range data {
-			for index, v := range req.Columns {
-				// "CustCode":客户编码
-				if v == "客户编码" {
-					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CustCode)
-				}
-				if v == "客户名称" {
-					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CustName)
-				}
-				if v == "助记名" {
-					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.AbbrName)
-				}
-				if v == "助记名" {
-					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.AbbrName)
-				}
-				if v == "所在地区" {
-					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CustLocation)
-				}
-				if v == "客户行业" {
-					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CustIndustry)
-				}
-				if v == "客户级别" {
-					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CustLevel)
-				}
-				if v == "客户状态" {
-					var CustStatus string
-					CustStatus = "正常"
-					if item.CustStatus != "10" {
-						CustStatus = "异常"
-					}
-					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), CustStatus)
-				}
-				if v == "最后跟进时间" {
-					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.FollowUpDate)
-				}
-				if v == "创建时间" {
-					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CreatedTime)
-				}
-			}
-
-		}
-
-	}
-	f.SetActiveSheet(index)
-
-	var buffer *bytes.Buffer
-	buffer, _ = f.WriteToBuffer()
-	con.Content = buffer.Bytes()
-
-	return &con, err
-}
-
-//创建客户
-func (c *CustomerService) Create(req *model.Customer) (insertId int64, err error) {
-	cusTomer := new(model.CustCustomer)
-	g.Log().Info(err)
-	Model := c.Dao.M
-	record, err := Model.Where(g.Map{"cust_name": req.CustName}).One()
-	g.Log().Info("recordE", record.IsEmpty())
-	if err != nil || !record.IsEmpty() {
-		err = gerror.New("该客户信息已存在,不可重复添加")
+	if count > 0 {
+		err = myerrors.NewMsgError(nil, "该客户信息已存在,不可重复添加")
 		return
 	}
-	g.Log().Info("recordreq----", req.CustSource)
+
 	if err = gconv.Struct(req, cusTomer); err != nil {
 		return
 	}
 	service.SetCreatedInfo(cusTomer, c.GetCxtUserId(), c.GetCxtUserName())
-	cusTomer.CustCode = strconv.Itoa(int(gtime.Timestamp()))
+	cusTomer.CustCode = "CT" + strconv.Itoa(int(gtime.Timestamp()))
 	cusTomer.CustStatus = "10"
+
 	Roles := c.GetCxtUserRoles()
 	roles := false
 	for _, v := range Roles {
@@ -154,87 +89,35 @@ func (c *CustomerService) Create(req *model.Customer) (insertId int64, err error
 		cusTomer.IsPublic = noPublic
 		cusTomer.SalesId = c.GetCxtUserId()
 		cusTomer.SalesName = c.GetCxtUserName()
-		lastId, err := Model.InsertAndGetId(cusTomer)
-		if err != nil && lastId > 0 {
-			belongData := new(model.CustCustomerBelong)
-			service.SetCreatedInfo(belongData, c.GetCxtUserId(), c.GetCxtUserName())
-			belongData.CustId = int(lastId)
-			belongData.SaleName = c.GetCxtUserName()
-			belongData.OpnType = AllocaTion
-			belongData.OpnPeople = c.GetCxtUserName()
-			belongData.OpnDatetime = gtime.Now()
-			_, err := c.BelongDao.InsertAndGetId(belongData)
-			if err != nil {
-				g.Log().Error(err)
-				err = gerror.New("创建失败")
-
-			}
+		insertId, err = c.Dao.InsertAndGetId(cusTomer)
+		if err != nil {
+			return
 		}
+		c.CreateContact(int(insertId))
 
+	} else {
+		cusTomer.IsPublic = isPublic
+		insertId, err = c.Dao.InsertAndGetId(cusTomer)
+		if err != nil {
+			err = gerror.New("创建失败")
+			return
+		}
 	}
-	cusTomer.IsPublic = isPublic
-
-	res, err := Model.Insert(cusTomer)
-	if err != nil {
-		g.Log().Error(err)
-		err = gerror.New("创建失败")
-		return
-	}
-	insertId, _ = res.LastInsertId()
 	return
 }
-
-//客户列表列表
-func (c *CustomerService) GetList(req *model.CustCustomerSearchReq) (total int, customerList []*model.CustList, err error) {
-
-	g.Log().Info("serverS", req)
-	Model := c.Dao.M
-	//Model = Model.Where(c.Dao.Columns.DeletedTime + " is null")
-	if req.TargetType == "" {
-		if !req.IsPublic {
-
-			Model = Model.Where(c.Dao.Columns.SalesId, c.CxtUser.Id).Where(c.Dao.Columns.IsPublic, noPublic)
-		} else {
-
-			Model = Model.Where(c.Dao.Columns.IsPublic, isPublic)
-		}
-	}
-	//客户名称
-	if req.CustName != "" {
-		Model = Model.Where(c.Dao.Columns.CustName+" like ?", "%"+req.CustName+"%")
-	}
-	//客户编码
-	if req.CustCode != "" {
-		Model = Model.Where(c.Dao.Columns.CustCode+" like ?", "%"+req.CustCode+"%")
-	}
-	//客户行业
-	if req.CustIndustry != "" {
-		Model = Model.Where(c.Dao.Columns.CustIndustry+" like ?", "%"+req.CustIndustry+"%")
-	}
-	//客户级别
-	if req.CustLevel != "" {
-		g.Log().Info("level", req.CustLevel)
-		Model = Model.Where(c.Dao.Columns.CustLevel, req.CustLevel)
-	}
-	//
-	if req.FollowUpDate != "" {
-		Model = Model.Where(c.Dao.Columns.FollowUpDate+" like ? ", req.FollowUpDate+"%")
-	}
-	total, err = Model.Count()
+func (c *CustomerService) CreateContact(cust_id int) (err error) {
+
+	belongData := new(model.CustCustomerBelong)
+	service.SetCreatedInfo(belongData, c.GetCxtUserId(), c.GetCxtUserName())
+	belongData.CustId = cust_id
+	belongData.SaleName = c.GetCxtUserName()
+	belongData.OpnType = AllocaTion
+	belongData.OpnPeople = c.GetCxtUserName()
+	belongData.OpnDatetime = gtime.Now()
+	_, err = c.BelongDao.InsertAndGetId(belongData)
 	if err != nil {
-		g.Log().Error(err)
-		err = gerror.New("获取总行数失败")
-		return
-	}
-	if req.PageNum == 0 {
-		req.PageNum = 1
-	}
 
-	err = Model.Page(req.GetPage()).Order("id desc").Scan(&customerList)
-	for _, v := range customerList {
-		times := gconv.String(v.CreatedTime)
-		v.FollowUpDate = gstr.SubStr(v.FollowUpDate, 0, 16)
-		v.CreatedTime = gstr.SubStr(times, 0, 16)
+		return
 	}
 	return
 }
@@ -246,7 +129,6 @@ func (c *CustomerService) DeleteById(id int) error {
 	BelongModel := c.BelongDao
 	regionDetail := new(model.CustCustomer)
 	err := Model.Where(c.Dao.Columns.Id, id).Scan(&regionDetail)
-	//g.Log().Info("DeleteByIds", one)
 	if err != nil {
 		g.Log().Error(err)
 		err = gerror.New("没有要删除的数据")
@@ -278,31 +160,94 @@ func (c *CustomerService) DeleteById(id int) error {
 //修改客户
 func (c *CustomerService) UpdateById(req *model.UpdateCustomer) (err error) {
 	db := c.Dao.M
-	record, err := db.FindOne(c.Dao.Columns.Id, req.Id)
-	if err != nil || record.IsEmpty() {
-		err = gerror.New("该数据不存在")
-		return err
+	count, err := db.Where(c.Dao.Columns.Id, req.Id).Count()
+	if err != nil {
+		err = gerror.New("修改用户信息失败")
+		return
+	}
+	if count == 0 {
+		err = gerror.New("用户信息不存在")
+		return
+	}
+	countNums, err := db.Where(c.Dao.Columns.CustName+" = ", req.CustName).Where(c.Dao.Columns.Id+" not in (?)", req.Id).Count()
+	if err != nil {
+		err = gerror.New("修改用户信息失败")
+		return
 	}
-	CustomertData := new(model.Customer)
+	if countNums > 0 {
+		err = gerror.New("客户名称已存在")
+		return
+	}
+
+	CustomertData := new(model.CustomerAddSeq)
 	if err = gconv.Struct(req, CustomertData); err != nil {
 		return
 	}
 	service.SetUpdatedInfo(CustomertData, c.GetCxtUserId(), c.GetCxtUserName())
 	_, err = db.FieldsEx(c.Dao.Columns.CreatedTime, c.Dao.Columns.CreatedBy, c.Dao.Columns.CreatedName, c.Dao.Columns.Id, c.Dao.Columns.CustCode, c.Dao.Columns.SalesName, c.Dao.Columns.SalesId).
 		WherePri(c.Dao.Columns.Id, req.Id).Update(CustomertData)
+	if err != nil {
+		err = gerror.New("修改用户信息失败")
+		return
+	}
+	return
+}
 
+//客户列表列表
+func (c *CustomerService) GetList(req *model.CustCustomerSearchReq) (total int, customerList []*model.CustList, err error) {
+	Model := c.Dao.M
+	if req.TargetType == "" {
+		if !req.IsPublic {
+
+			Model = Model.Where(c.Dao.Columns.SalesId, c.CxtUser.Id).Where(c.Dao.Columns.IsPublic, noPublic)
+		} else {
+
+			Model = Model.Where(c.Dao.Columns.IsPublic, isPublic)
+		}
+	}
+	//客户名称
+	if req.CustName != "" {
+		Model = Model.Where(c.Dao.Columns.CustName+" like ?", "%"+req.CustName+"%")
+	}
+	//客户编码
+	if req.CustCode != "" {
+		Model = Model.Where(c.Dao.Columns.CustCode+" like ?", "%"+req.CustCode+"%")
+	}
+	//客户行业
+	if req.CustIndustry != "" {
+		Model = Model.Where(c.Dao.Columns.CustIndustry+" like ?", "%"+req.CustIndustry+"%")
+	}
+	//客户级别
+	if req.CustLevel != "" {
+		g.Log().Info("level", req.CustLevel)
+		Model = Model.Where(c.Dao.Columns.CustLevel, req.CustLevel)
+	}
+	//
+	if req.FollowUpDate != "" {
+		Model = Model.Where(c.Dao.Columns.FollowUpDate+" like ? ", req.FollowUpDate+"%")
+	}
+	total, err = Model.Count()
 	if err != nil {
 		g.Log().Error(err)
-		err = gerror.New("修改用户信息失败")
+		err = gerror.New("获取总行数失败")
 		return
 	}
+	if req.PageNum == 0 {
+		req.PageNum = 1
+	}
+
+	err = Model.Page(req.GetPage()).Order("id desc").Scan(&customerList)
+	for _, v := range customerList {
+		times := gconv.String(v.CreatedTime)
+		v.FollowUpDate = gstr.SubStr(v.FollowUpDate, 0, 16)
+		v.CreatedTime = gstr.SubStr(times, 0, 16)
+	}
 	return
 }
 
 //移入公海
 func (c *CustomerService) MoveToPubic(ids []int64) error {
 	Model := c.Dao.M
-	//Cust := new(model.CustCustomer)
 	list, err := Model.Fields(c.Dao.Columns.CreatedTime).Where(c.Dao.Columns.Id+" in (?) ", ids).All()
 	if err != nil || list.Len() <= 0 {
 		g.Log().Error(err)
@@ -333,13 +278,10 @@ func (c *CustomerService) MoveToPubic(ids []int64) error {
 func (c *CustomerService) DistriCustomer(req *model.DistriCustomer) error {
 	custModel := c.Dao
 	rep, err := custModel.Where(cust.CustCustomer.Columns.Id+" in (?)  ", req.Ids).Where(cust.CustCustomer.Columns.IsPublic, isPublic).All()
-
-	g.Log().Info("fdasfsa", len(rep))
-	if err != nil || len(rep) == 0 {
-		err = gerror.New("该数据不存在")
+	if err != nil {
+		err = myerrors.New("DistriCustomer Sql执行异常", err)
 		return err
 	}
-	//cust := new(model.CustCustomer)
 	var custMap = make(map[int]string)
 	for _, v := range rep {
 		custMap[v.Id] = v.SalesName
@@ -376,62 +318,59 @@ func (c *CustomerService) DistriCustomer(req *model.DistriCustomer) error {
 
 //客户详情
 func (c *CustomerService) GetEntityById(ids []int64) (entityInfo []*model.CustList, err error) {
-	Model := c.Dao.M //
-	//FollowModel := c.FollowDao.M
-
+	Model := c.Dao //
 	err = Model.Where(cust.CustCustomer.Columns.Id+" in (?)", ids).Scan(&entityInfo)
+	if err != nil {
+		return nil, myerrors.New("获取用户数据失败", err)
+
+	}
 	for _, v := range entityInfo {
 		v.FollowUpDate = gstr.SubStr(v.FollowUpDate, 0, 16)
 		v.CreatedTime = gstr.SubStr(v.CreatedTime, 0, 16)
 	}
-	if err != nil {
-		g.Log().Error(err)
-		return nil, gerror.New("获取用户数据失败")
 
-	}
 	return
 }
 
 //客户摘要
 func (c *CustomerService) CustAbstract(id int64) (followInfo *model.Follow, err error) {
-	custModel := c.Dao.M //
-	Model := c.FollowDao.M
-
+	custModel := c.Dao //
+	Model := c.FollowDao
 	count, err := Model.Where(c.FollowDao.Columns.CustId, id).Count()
-	g.Log().Info("count", count)
 	if err != nil {
-		g.Log().Error(err)
-		gerror.New("获取用户数据失败")
+
+		err = myerrors.New("获取用户数据失败", err)
 		return
 	}
-
 	followInfo = new(model.Follow)
 	followInfo.FollowCount = count
 	//
-	find, err := custModel.Fields(c.Dao.Columns.FollowUpDate).Where(c.Dao.Columns.Id, id).FindOne()
-	g.Log().Info("find", find)
 
+	followUpdate, err := custModel.Fields(c.Dao.Columns.FollowUpDate).FindOne(id)
 	if err != nil {
-		g.Log().Error(err)
-		gerror.New("获取用户数据失败")
+		err = myerrors.New("CustAbstract Sql执行错误", err)
 		return
 	}
-
-	findOne := find.Map()
-	if findOne["follow_up_date"] == "" {
+	if followUpdate.FollowUpDate == nil {
 		followInfo.NotFollowDay = 0
 		return
 	}
-	upDate := gconv.String(findOne["follow_up_date"])
-	follow_up, err1 := time.Parse(TIME_LAYOUT, upDate)
+
+	g.Log().Info("fasa1211", followUpdate)
+	//g.Log().Info("find", followUpdate)
+	//if err != nil {
+	//	g.Log().Error(err)
+	//	myerrors.New("获取用户数据失败", err)
+	//	return
+	//}
+	//if followUpdate.FollowUpDate != nil {
+	//	followInfo.NotFollowDay = 0
+	//	return
+	//}
+	upDate := gtime.New(followUpdate.FollowUpDate)
 	now := gtime.Now()
-	follow_next, err2 := time.Parse(TIME_LAYOUT, gconv.String(now))
-	if err1 != nil || err2 != nil {
-		followInfo.NotFollowDay = 0
-		return
-	}
-	poor := follow_next.Sub(follow_up)
-	g.Log().Info("xxxxfdsaf", follow_up)
+	//
+	poor := now.Sub(upDate)
 	hours := float64(poor.Hours() / 24)
 	if hours < 0 {
 		followInfo.NotFollowDay = 0
@@ -444,22 +383,24 @@ func (c *CustomerService) CustAbstract(id int64) (followInfo *model.Follow, err
 //转移客户
 func (c *CustomerService) UpdateBytransfer(req *model.DistriCustomer) (err error) {
 	custModel := c.Dao
-	rep, err := custModel.Fields("sales_id,sales_name,id").Where(cust.CustCustomer.Columns.Id+" in (?)", req.Ids).All()
-	if err != nil || len(rep) == 0 {
-		err = gerror.New("该数据不存在")
+	data, err := custModel.Fields("sales_id,sales_name,id").Where(cust.CustCustomer.Columns.Id+" in (?)", req.Ids).All()
+	if err != nil {
+		err = myerrors.New("Sql执行异常", err)
+		return err
+	}
+
+	if len(data) == 0 {
+		err = myerrors.New("该数据不存在", err)
 		return
 	}
 	err = c.updateCustomer(req.Ids, req.SalesId, req.SalesName)
 	if err != nil {
-		err = gerror.New("转移客户失败")
 		return
 	}
 
-	err = c.Createbelong(rep, req)
-
+	err = c.Createbelong(data, req)
 	g.Log().Info("err", err)
 	if err != nil {
-		err = gerror.New("转移客户失败")
 		return
 	}
 	return
@@ -479,8 +420,7 @@ func (c *CustomerService) updateCustomer(ids []int64, salesId int64, salesName s
 	}).Where(cust.CustCustomer.Columns.Id+" in (?)", ids).Update()
 
 	if err != nil {
-		g.Log().Error(err)
-		err = gerror.New("变更失败")
+		err = myerrors.New("updateCustomer 变更执行失败", err)
 		return err
 	}
 	return nil
@@ -513,10 +453,13 @@ func (c *CustomerService) OperationLog(ctx context.Context, ids []int64, req *mo
 		contact["opn_content"] = req.OpnContent
 		maps = append(maps, contact)
 	}
-	_, err = Model.Insert(maps)
+	lastId, err := Model.InsertAndGetId(maps)
 	if err != nil {
-		g.Log().Error(err)
-		err = gerror.New("创建失败")
+		err = myerrors.New("OperationLog Sql执行失败", err)
+		return
+	}
+	if lastId == 0 {
+		err = myerrors.New("客户操作日志失败", err)
 		return
 	}
 	return
@@ -549,10 +492,9 @@ func (c *CustomerService) DynamicsList(req *model.CustomerDynameicsReq) (total i
 		})
 
 	}
-
-	g.Log().Info("DynamicsList----", dynamicsList)
-	result = append(result, dynamicsList)
-	g.Log().Info("Dy---", result)
+	//g.Log().Info("DynamicsList----", dynamicsList)
+	//result = append(result, dynamicsList)
+	//g.Log().Info("Dy---", result)
 	return
 }
 
@@ -573,7 +515,7 @@ func (c *CustomerService) Mergecustomer(req *model.MergecustomerRep) (err error)
 		err = gerror.New("合并联系人失败")
 		return
 	}
-	CustomertData := new(model.Customer)
+	CustomertData := new(model.CustomerAddSeq)
 	if err = gconv.Struct(req, CustomertData); err != nil {
 		return
 	}
@@ -646,11 +588,82 @@ func (c *CustomerService) Createbelong(rep []*model.CustCustomer, req *model.Dis
 		belong.CreatedBy = c.GetCxtUserId()
 		belongData = append(belongData, belong)
 	}
-	_, err = belongModel.Insert(belongData)
+	lastId, err := belongModel.InsertAndGetId(belongData)
 	g.Log().Info("belong", belongData)
 	if err != nil {
-		err = gerror.New("插入失败")
+		err = myerrors.New("Createbelong Sql执行异常", err)
+		return err
+	}
+	if lastId == 0 {
+		err = myerrors.New("Createbelong 插入", err)
 		return err
 	}
 	return
 }
+
+//导出数据
+func (c *CustomerService) Export(req *model.CustCustomerExport) (content *model.CustExport, err error) {
+	var con model.CustExport
+	total, data, err := c.GetList(&req.CustCustomerSearchReq)
+	if err != nil {
+		return
+	}
+	f := excelize.NewFile()
+	index := f.NewSheet("Sheet1")
+	for index, item := range req.Columns {
+		sheetPosition := service.Div(index+1) + "1"
+		f.SetCellValue("Sheet1", sheetPosition, item)
+	}
+	if total > 0 {
+
+		for ck, item := range data {
+			for index, v := range req.Columns {
+				// "CustCode":客户编码
+				if v == "客户编码" {
+					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CustCode)
+				}
+				if v == "客户名称" {
+					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CustName)
+				}
+				if v == "助记名" {
+					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.AbbrName)
+				}
+				if v == "助记名" {
+					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.AbbrName)
+				}
+				if v == "所在地区" {
+					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CustLocation)
+				}
+				if v == "客户行业" {
+					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CustIndustry)
+				}
+				if v == "客户级别" {
+					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CustLevel)
+				}
+				if v == "客户状态" {
+					var CustStatus string
+					CustStatus = "正常"
+					if item.CustStatus != "10" {
+						CustStatus = "异常"
+					}
+					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), CustStatus)
+				}
+				if v == "最后跟进时间" {
+					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.FollowUpDate)
+				}
+				if v == "创建时间" {
+					f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(ck+2), item.CreatedTime)
+				}
+			}
+
+		}
+
+	}
+	f.SetActiveSheet(index)
+
+	var buffer *bytes.Buffer
+	buffer, _ = f.WriteToBuffer()
+	con.Content = buffer.Bytes()
+
+	return &con, err
+}