|
|
@@ -16,10 +16,15 @@ import (
|
|
|
|
|
|
type customerService struct {
|
|
|
*service.ContextService
|
|
|
- Dao *cust.CustCustomerDao
|
|
|
- BelongDao *cust.CustCustomerBelongDao
|
|
|
+ Dao *cust.CustCustomerDao
|
|
|
+ BelongDao *cust.CustCustomerBelongDao
|
|
|
+ DynamicsDao *cust.CustCustomerDynamicsDao
|
|
|
}
|
|
|
|
|
|
+var isPublic, noPublic = "10", "20" // 公海,非公海
|
|
|
+var isTransfer int8 = 1 //转移
|
|
|
+var isAllocation int8 = 2 //分配 Allocation
|
|
|
+
|
|
|
func NewCustomerService(ctx context.Context) (svc *customerService, err error) {
|
|
|
svc = new(customerService)
|
|
|
if svc.ContextService, err = svc.Init(ctx); err != nil {
|
|
|
@@ -27,79 +32,109 @@ func NewCustomerService(ctx context.Context) (svc *customerService, err error) {
|
|
|
}
|
|
|
svc.Dao = cust.NewCustCustomerDao(svc.Tenant)
|
|
|
svc.BelongDao = cust.NewCustCustomerBelongDao(svc.Tenant)
|
|
|
+ svc.DynamicsDao = cust.NewCustCustomerDynamicsDao(svc.Tenant)
|
|
|
return svc, nil
|
|
|
}
|
|
|
|
|
|
//创建客户
|
|
|
func (c *customerService) Create(req *model.Customer) (insertId int64, err error) {
|
|
|
cusTomer := new(model.CustCustomer)
|
|
|
- custBelong := new(model.CustCustomerBelong)
|
|
|
if err = gconv.Struct(req, cusTomer); err != nil {
|
|
|
g.Log().Info("error", err)
|
|
|
return
|
|
|
}
|
|
|
g.Log().Info(err)
|
|
|
Model := c.Dao.M
|
|
|
- record, err := Model.Where(
|
|
|
- g.Map{
|
|
|
- "cust_name": req.CustName,
|
|
|
- },
|
|
|
- ).One()
|
|
|
+ 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("该客户信息已存在,不可重复添加")
|
|
|
return
|
|
|
}
|
|
|
+ //OpnPeopleId int ` json:"opnPeopleId"` // 操作人ID
|
|
|
+ //OpnPeople string ` json:"opnPeople"` // 操作人
|
|
|
+ //OpnDate *gtime.Time ` json:"opnDate"` // 操作日期
|
|
|
+ //OpnType string ` json:"opnType"` // 操作类型
|
|
|
+ //OpnContent string ` json:"opnContent"` // 操作内容
|
|
|
+
|
|
|
+ //c.OperationLog()
|
|
|
+
|
|
|
+ g.Log().Info("部门ID", c.CxtUser.DeptId)
|
|
|
service.SetCreatedInfo(cusTomer, c.GetCxtUserId(), c.GetCxtUserName())
|
|
|
cusTomer.CustCode = strconv.Itoa(int(gtime.Timestamp()))
|
|
|
- cusTomer.IsPublic = "20"
|
|
|
- cusTomer.DeptId = c.GetCxtUserDeptId() //部门id
|
|
|
- cusTomer.DeptId = c.GetCxtUserDeptId() //部门名称
|
|
|
- cusTomer.SalesId = c.GetCxtUserId() // 销售id
|
|
|
- cusTomer.SalesName = c.GetCxtUserName() // 销售名称
|
|
|
+ cusTomer.IsPublic = isPublic
|
|
|
+ //if c.CxtUser.DeptId == 2 {
|
|
|
+ // cusTomer.IsPublic = noPublic // 非公海用户
|
|
|
+ // cusTomer.DeptId = c.GetCxtUserDeptId() // 部门id
|
|
|
+ // cusTomer.DeptId = c.GetCxtUserDeptId() // 部门名称
|
|
|
+ // cusTomer.SalesId = c.GetCxtUserId() // 销售id
|
|
|
+ // cusTomer.SalesName = c.GetCxtUserName() // 销售名称
|
|
|
+ //}
|
|
|
res, err := Model.Insert(cusTomer)
|
|
|
if err != nil {
|
|
|
g.Log().Error(err)
|
|
|
- err = gerror.New("cusTomer表插入失败")
|
|
|
+ err = gerror.New("创建失败")
|
|
|
+ return
|
|
|
}
|
|
|
insertId, _ = res.LastInsertId()
|
|
|
- if c.CxtUser.Id == 1 { //
|
|
|
- service.SetCreatedInfo(custBelong, c.GetCxtUserId(), c.GetCxtUserName())
|
|
|
- custBelong.CustId = int(insertId)
|
|
|
- custBelong.OpnType = "10"
|
|
|
- custBelong.OpnDatetime = gtime.Now()
|
|
|
- service.SetCreatedInfo(custBelong, c.GetCxtUserId(), c.GetCxtUserName())
|
|
|
- _, err = c.BelongDao.Insert(custBelong)
|
|
|
- if err != nil {
|
|
|
- g.Log().Error(err)
|
|
|
- err = gerror.New("创建失败")
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
+ //销售人员创建条件成立 同步belong 表
|
|
|
+ //custBelong := new(model.AddCustomerBelong)
|
|
|
+ //custBelong.CustId = int(insertId)
|
|
|
+ //custBelong.SaleName = "xxx"
|
|
|
+ //custBelong.OpnPeople = "xxxx"
|
|
|
+ //custBelong.OpnDatetime = gtime.Now()
|
|
|
+ //err = c.CreateBelong()
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+//销售人员创建 直接认领客户
|
|
|
+func (c *customerService) CreateBelong(req *model.AddCustomerBelong) (err error) {
|
|
|
+ cusTomerBelong := new(model.CustCustomerBelong)
|
|
|
+ if err = gconv.Struct(req, cusTomerBelong); err != nil {
|
|
|
+ g.Log().Info("error", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ service.SetCreatedInfo(cusTomerBelong, c.GetCxtUserId(), c.GetCxtUserName())
|
|
|
+
|
|
|
+ cusTomerBelong.OpnType = isPublic
|
|
|
+ cusTomerBelong.OpnDatetime = gtime.Now()
|
|
|
+ service.SetCreatedInfo(cusTomerBelong, c.GetCxtUserId(), c.GetCxtUserName())
|
|
|
+ _, err = c.BelongDao.Insert(cusTomerBelong)
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ err = gerror.New("创建失败")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
//客户列表列表
|
|
|
func (c *customerService) GetList(req *model.CustCustomerSearchReq) (total int, customerList []*model.CustList, err error) {
|
|
|
- Model := c.Dao.M //非公海客户
|
|
|
- Model.Where("is_public", 20)
|
|
|
+ g.Log().Info("serverS", req)
|
|
|
+ Model := c.Dao.M
|
|
|
+ if !req.IsPublic {
|
|
|
+ Model = Model.Where(c.Dao.Columns.SalesId, c.CxtUser.Id).Where(c.Dao.Columns.IsPublic, noPublic)
|
|
|
+ } else {
|
|
|
+ g.Log().Info("serverS", req)
|
|
|
+ Model = Model.Where(c.Dao.Columns.IsPublic, isPublic)
|
|
|
+ }
|
|
|
//客户名称
|
|
|
if req.CustName != "" {
|
|
|
- Model = Model.Where("cust_name ", req.CustName)
|
|
|
+ Model = Model.Where(c.Dao.Columns.CustName+" like ?", "%"+req.CustName+"%")
|
|
|
}
|
|
|
//客户编码
|
|
|
if req.CustCode != "" {
|
|
|
- Model = Model.Where("cust_name ", req.CustCode)
|
|
|
+ Model = Model.Where(c.Dao.Columns.CustCode+" like ?", "%"+req.CustCode+"%")
|
|
|
}
|
|
|
-
|
|
|
//客户行业
|
|
|
- //if req.SalesName != "" {
|
|
|
- // Model = Model.Where("c.sales_name ?", req.SalesName)
|
|
|
- //}
|
|
|
+ if req.CustIndustry != "" {
|
|
|
+ Model = Model.Where(c.Dao.Columns.CustIndustry+" like ?", "%"+req.CustIndustry+"%")
|
|
|
+ }
|
|
|
//客户级别
|
|
|
- //if req.Telephone != "" {
|
|
|
- // Model = Model.Where("ct.telephone ?", req.Telephone)
|
|
|
- //}
|
|
|
+ if req.CustLevel != "" {
|
|
|
+ Model = Model.Where(c.Dao.Columns.CustLevel, req.CustLevel)
|
|
|
+ }
|
|
|
total, err = Model.Fields().Count()
|
|
|
if err != nil {
|
|
|
g.Log().Error(err)
|
|
|
@@ -109,8 +144,7 @@ func (c *customerService) GetList(req *model.CustCustomerSearchReq) (total int,
|
|
|
if req.PageNum == 0 {
|
|
|
req.PageNum = 1
|
|
|
}
|
|
|
- fields := "id,cust_code,cust_name,abbr_name,'' as indus_try,'' as level,cust_location,cust_status,follow_up_date,created_name,created_time"
|
|
|
- err = Model.Fields(fields).Page(req.PageNum, req.PageSize).Order("id desc").Scan(&customerList)
|
|
|
+ err = Model.Page(req.PageNum, req.PageSize).Order("id desc").Scan(&customerList)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
@@ -128,12 +162,12 @@ func (c *customerService) DistriCustomer(req *model.DistriCustomer) error {
|
|
|
}
|
|
|
*/
|
|
|
custModel := c.Dao.M
|
|
|
- rep, err := custModel.Where(cust.CustCustomer.Columns.Id+" in (?) ", req.Ids).Where(cust.CustCustomer.Columns.IsPublic, 10).All()
|
|
|
+ rep, err := custModel.Where(cust.CustCustomer.Columns.Id+" in (?) ", req.Ids).Where(cust.CustCustomer.Columns.IsPublic, isPublic).All()
|
|
|
if err != nil || rep.IsEmpty() {
|
|
|
err = gerror.New("该数据不存在")
|
|
|
return err
|
|
|
}
|
|
|
- err = c.UpdateCustomer(req.Ids, req.SalesId, 2)
|
|
|
+ err = c.UpdateCustomer(req.Ids, req.SalesId, isAllocation)
|
|
|
if err != nil {
|
|
|
err = gerror.New("可配客户失败")
|
|
|
return err
|
|
|
@@ -163,7 +197,7 @@ func (c *customerService) UpdateBytransfer(req *model.CustSalesReq) (entityInfo
|
|
|
err = gerror.New("该数据不存在")
|
|
|
return
|
|
|
}
|
|
|
- err = c.UpdateCustomer(req.Ids, req.SalesIds, 1)
|
|
|
+ err = c.UpdateCustomer(req.Ids, req.SalesIds, isTransfer)
|
|
|
if err != nil {
|
|
|
err = gerror.New("转移客户失败")
|
|
|
return
|
|
|
@@ -206,10 +240,10 @@ func (c *customerService) UpdateCustomer(ids []int64, salesId int64, behavior in
|
|
|
switch behavior {
|
|
|
case 1:
|
|
|
custCustomerData.SalesName = "转移销售"
|
|
|
- custCustomerData.IsPublic = "10"
|
|
|
+ custCustomerData.IsPublic = isPublic
|
|
|
case 2:
|
|
|
custCustomerData.SalesName = "分配销售"
|
|
|
- custCustomerData.IsPublic = "20"
|
|
|
+ custCustomerData.IsPublic = noPublic
|
|
|
}
|
|
|
service.SetUpdatedInfo(custCustomerData, c.GetCxtUserId(), c.GetCxtUserName())
|
|
|
_, err := custModel.FieldsEx(
|
|
|
@@ -231,3 +265,32 @@ func (c *customerService) UpdateCustomer(ids []int64, salesId int64, behavior in
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+//客户操作日志
|
|
|
+func (c *customerService) OperationLog(req *model.AddCustomerDynameicsReq) (err error) {
|
|
|
+ cusDynameics := new(model.CustCustomerDynamics)
|
|
|
+ if err = gconv.Struct(req, cusDynameics); err != nil {
|
|
|
+ g.Log().Info("error", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ Model := c.Dao.M
|
|
|
+ service.SetCreatedInfo(cusDynameics, c.GetCxtUserId(), c.GetCxtUserName())
|
|
|
+ _, err = Model.Insert(cusDynameics)
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ err = gerror.New("创建失败")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+//日志详情
|
|
|
+func (c *customerService) OperationLogInfo(id int64) (dynamics *model.CustomerDynameicsRep, err error) {
|
|
|
+ Model := c.Dao.M
|
|
|
+ err = Model.Where(cust.CustCustomerDynamics.Columns.Id, id).Scan(&dynamics)
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ return nil, gerror.New("获取用户数据失败")
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|