Browse Source

Merge branch 'crm_optimize_257_1029@guomengyuan' into debug

gmy 4 months ago
parent
commit
1443379083
6 changed files with 242 additions and 58 deletions
  1. 170 57
      controllers/eta_trial.go
  2. 1 1
      go.mod
  3. 1 0
      go.sum
  4. 37 0
      models/eta_trial/eta_trial.go
  5. 15 0
      models/eta_trial/eta_trial_approval.go
  6. 18 0
      routers/commentsRouter.go

+ 170 - 57
controllers/eta_trial.go

@@ -443,7 +443,7 @@ func (this *ETATrialController) ApplyEnable() {
 		return
 	}
 
-	var req eta_trial.ETAAddEnableReq
+	var req eta_trial.ETAAddApplyReq
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -451,78 +451,108 @@ func (this *ETATrialController) ApplyEnable() {
 		return
 	}
 
+	if len(req.MobileList) <= 0 {
+		br.Msg = "至少选中一条记录"
+		br.ErrMsg = "至少选中一条记录"
+		return
+	}
+
 	seller, e := system.GetSysAdminById(sysUser.AdminId)
 	if e != nil {
 		err = e
 		return
 	}
 
-	approval, err := eta_trial.GetETATrialApprovalByMobile(req.Mobile)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		br.Msg = "获取失败!"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
+	var condition string
+	var pars []interface{}
+	if req.IsCheckAll {
+		if len(req.MobileList) > 0 {
+			condition += " and mobile not in (" + strings.Join(req.MobileList, ",") + ")"
+			for _, mobile := range req.MobileList {
+				pars = append(pars, mobile)
+			}
+		}
+	} else {
+		if len(req.MobileList) > 0 {
+			condition += " and mobile in (" + strings.Join(req.MobileList, ",") + ")"
+			for _, mobile := range req.MobileList {
+				pars = append(pars, mobile)
+			}
+		}
+	}
+	trialApprovalList, err := eta_trial.GetETATrialApprovalByCondition(condition, pars)
+	if err != nil {
 		return
 	}
 
-	var approvalId int64
-	if approval != nil && (approval.ApprovalStatus == "驳回" || approval.ApprovalStatus == "已撤回") && req.Mobile == approval.Mobile {
-		//若是被驳回或撤回后申请且手机号相同的,更新审批记录
-		err = eta_trial.ResubmitTrial(approval.ApprovalId, req.ApplyReasons)
-		if err != nil {
-			br.Msg = "更新失败!"
-			br.ErrMsg = "更新失败,Err:" + err.Error()
+	for _, trialApproval := range trialApprovalList {
+		approval, err := eta_trial.GetETATrialApprovalByMobile(trialApproval.Mobile)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取失败!"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
 			return
 		}
-		approvalId = int64(approval.ApprovalId)
-	} else if approval != nil && approval.ApprovalStatus == "待审批" && approval.ApprovalContent == "申请启用" {
-		br.Msg = "该客户已在审批中!"
-		br.ErrMsg = "该客户已在审批中!"
-		return
-	} else {
-		//加入审批列表
-		approvalItem := eta_trial.EtaTrialApproval{
-			UserName:        req.UserName,
-			CompanyName:     req.CompanyName,
-			Position:        req.Position,
-			Mobile:          req.Mobile,
-			SellerId:        seller.AdminId,
-			Seller:          seller.RealName,
-			CreateTime:      time.Now(),
-			ModifyTime:      time.Now(),
-			ApprovalContent: "申请启用",
-			ApplyMethod:     2,
-			ApprovalStatus:  "待审批",
-			ApplyReasons:    req.ApplyReasons,
-		}
 
-		approvalId, e = eta_trial.AddETATrialApproval(&approvalItem)
-		if e != nil {
-			err = e
+		var approvalId int64
+		if approval != nil && (approval.ApprovalStatus == "驳回" || approval.ApprovalStatus == "已撤回") && trialApproval.Mobile == approval.Mobile {
+			//若是被驳回或撤回后申请且手机号相同的,更新审批记录
+			err = eta_trial.ResubmitTrial(approval.ApprovalId, req.ApplyReasons)
+			if err != nil {
+				br.Msg = "更新失败!"
+				br.ErrMsg = "更新失败,Err:" + err.Error()
+				return
+			}
+			approvalId = int64(approval.ApprovalId)
+		} else if approval != nil && approval.ApprovalStatus == "待审批" && approval.ApprovalContent == "申请启用" {
+			br.Msg = "该客户已在审批中!"
+			br.ErrMsg = "该客户已在审批中!"
 			return
+		} else {
+			//加入审批列表
+			approvalItem := eta_trial.EtaTrialApproval{
+				UserName:        trialApproval.UserName,
+				CompanyName:     trialApproval.CompanyName,
+				Position:        trialApproval.Position,
+				Mobile:          trialApproval.Mobile,
+				SellerId:        seller.AdminId,
+				Seller:          seller.RealName,
+				CreateTime:      time.Now(),
+				ModifyTime:      time.Now(),
+				ApprovalContent: "申请启用",
+				ApplyMethod:     2,
+				ApprovalStatus:  "待审批",
+				ApplyReasons:    req.ApplyReasons,
+			}
+
+			approvalId, e = eta_trial.AddETATrialApproval(&approvalItem)
+			if e != nil {
+				err = e
+				return
+			}
 		}
-	}
 
-	//新增待办消息
-	msgItem := new(company.CompanyApprovalMessage)
-	msgItem.CreateUserId = sysUser.AdminId
-	msgItem.ReceiveUserId = -1
-	msgItem.MessageStatus = 1 // 已读, 不再亮红点, 但是消息要有
-	msgItem.Remark = seller.RealName + "申请账号启用"
-	msgItem.Content = seller.RealName + "申请账号启用"
-	msgItem.CompanyName = req.CompanyName
-	msgItem.CreateTime = time.Now()
-	msgItem.ModifyTime = time.Now()
-	msgItem.CompanyApprovalId = int(approvalId)
-	msgItem.OperationStatus = 1
-	msgItem.MessageType = 1    //1:申请消息,2:审批结果,3:文字消息
-	msgItem.SourceType = 9     //消息来源
-	msgItem.ApprovalStatus = 1 //审批状态,1:待审批,2:已审批,3:已驳回
-	err = company.AddCompanyApprovalMessage(msgItem)
+		//新增待办消息
+		msgItem := new(company.CompanyApprovalMessage)
+		msgItem.CreateUserId = sysUser.AdminId
+		msgItem.ReceiveUserId = -1
+		msgItem.MessageStatus = 1 // 已读, 不再亮红点, 但是消息要有
+		msgItem.Remark = seller.RealName + "申请账号启用"
+		msgItem.Content = seller.RealName + "申请账号启用"
+		msgItem.CompanyName = trialApproval.CompanyName
+		msgItem.CreateTime = time.Now()
+		msgItem.ModifyTime = time.Now()
+		msgItem.CompanyApprovalId = int(approvalId)
+		msgItem.OperationStatus = 1
+		msgItem.MessageType = 1    //1:申请消息,2:审批结果,3:文字消息
+		msgItem.SourceType = 9     //消息来源
+		msgItem.ApprovalStatus = 1 //审批状态,1:待审批,2:已审批,3:已驳回
+		err = company.AddCompanyApprovalMessage(msgItem)
 
-	// 2023-08-01默认审批通过, 不再进行人工审批
-	go func() {
-		_ = services.ApprovalApply(int(approvalId))
-	}()
+		// 2023-08-01默认审批通过, 不再进行人工审批
+		go func() {
+			_ = services.ApprovalApply(int(approvalId))
+		}()
+	}
 
 	br.Ret = 200
 	br.Success = true
@@ -1848,3 +1878,86 @@ func (this *ETATrialController) QuestionnaireDetail() {
 
 	return
 }
+
+// EnableAccountList
+// @Title 已启用账号列表
+// @Description 已启用账号列表
+// @Success 200
+// @router /enable/account/list [get]
+func (this *ETATrialController) EnableAccountList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	var condition string
+	var pars []interface{}
+
+	condition += ` AND enabled = ? `
+	pars = append(pars, 1)
+
+	adminItems, err := system.GetSysUserItems(condition, pars)
+	if err != nil {
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = adminItems
+	return
+}
+
+// AccountTransfer
+// @Title 账号转移
+// @Description 账号转移
+// @Success 200
+// @router /account/transfer [post]
+func (this *ETATrialController) AccountTransfer() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	var req eta_trial.TrialAccountTransferReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if len(req.EtaTrialIdList) <= 0 {
+		br.Msg = "参数有误"
+		br.ErrMsg = "参数有误, 至少选中一个试用用户"
+		return
+	}
+
+	err = eta_trial.TransferETATrial(&req)
+	if err != nil {
+		br.Msg = "转移失败!"
+		br.ErrMsg = "转移失败,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	return
+}

+ 1 - 1
go.mod

@@ -32,6 +32,7 @@ require (
 	github.com/tealeg/xlsx v1.0.5
 	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.541
 	github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.541
+	github.com/wechatpay-apiv3/wechatpay-go v0.2.18
 	github.com/xuri/excelize/v2 v2.6.1
 	github.com/yidane/formula v0.0.0-20210902154546-0782e1736717
 	gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
@@ -97,7 +98,6 @@ require (
 	github.com/tidwall/match v1.1.1 // indirect
 	github.com/tidwall/pretty v1.2.0 // indirect
 	github.com/tjfoc/gmsm v1.3.2 // indirect
-	github.com/wechatpay-apiv3/wechatpay-go v0.2.18 // indirect
 	github.com/xuri/efp v0.0.0-20220603152613-6918739fd470 // indirect
 	github.com/xuri/nfp v0.0.0-20220409054826-5e722a1d9e22 // indirect
 	golang.org/x/crypto v0.5.0 // indirect

+ 1 - 0
go.sum

@@ -13,6 +13,7 @@ github.com/SebastiaanKlippert/go-wkhtmltopdf v1.7.2 h1:LORAatv6KuKheYq8HXehiwx3f
 github.com/SebastiaanKlippert/go-wkhtmltopdf v1.7.2/go.mod h1:TY8r0gmwEL1c5Lbd66NgQCkL4ZjGDJCMVqvbbFvUx20=
 github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
 github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
+github.com/agiledragon/gomonkey v2.0.2+incompatible h1:eXKi9/piiC3cjJD1658mEE2o3NjkJ5vDLgYjCQu0Xlw=
 github.com/agiledragon/gomonkey v2.0.2+incompatible/go.mod h1:2NGfXu1a80LLr2cmWXGBDaHEjb1idR6+FVlX5T3D9hw=
 github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=

+ 37 - 0
models/eta_trial/eta_trial.go

@@ -3,6 +3,7 @@ package eta_trial
 import (
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
+	"hongze/hz_crm_api/utils"
 	"time"
 )
 
@@ -24,6 +25,13 @@ type EtaTrial struct {
 	LastLoginDuration int `description:"最后一次登录时长"`
 }
 
+type TrialAccountTransferReq struct {
+	EtaTrialIdList    []int  `description:"转移使用用户id列表"`
+	CurrentSellerId   int    `description:"转移后员工id"`
+	CurrentSellerName string `description:"转移后员工名称"`
+	IsCheckAll        bool   `description:"是否全选"`
+}
+
 // Update 更新用户基础信息
 func (item *EtaTrial) Update(cols []string) (err error) {
 	o := orm.NewOrm()
@@ -126,3 +134,32 @@ WHERE mobile=? `
 	_, err = o.Raw(sql, mobile).Exec()
 	return
 }
+
+// TransferETATrial 转移试用用户跟进销售人员
+func TransferETATrial(item *TrialAccountTransferReq) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE eta_trial SET seller=?,seller_id=?,modify_time=NOW()  WHERE 1 = 1 `
+
+	var condition string
+	var params []interface{}
+
+	if item.IsCheckAll {
+		if len(item.EtaTrialIdList) > 0 {
+			condition = ` AND eta_trial_id not IN (` + utils.GetOrmInReplace(len(item.EtaTrialIdList)) + `)`
+			for _, id := range item.EtaTrialIdList {
+				params = append(params, id)
+			}
+		}
+	} else {
+		condition = ` AND eta_trial_id IN (` + utils.GetOrmInReplace(len(item.EtaTrialIdList)) + `)`
+		for _, id := range item.EtaTrialIdList {
+			params = append(params, id)
+		}
+	}
+	sql += condition
+	params = append([]interface{}{item.CurrentSellerName, item.CurrentSellerId}, params...)
+
+	_, err = o.Raw(sql, params...).Exec()
+
+	return
+}

+ 15 - 0
models/eta_trial/eta_trial_approval.go

@@ -31,6 +31,15 @@ func GetETATrialApprovalByMobile(mobile string) (item *EtaTrialApproval, err err
 	return
 }
 
+func GetETATrialApprovalByCondition(condition string, pars []interface{}) (item []*EtaTrialApproval, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM eta_trial_approval WHERE 1=1 `
+
+	sql += condition
+	err = o.Raw(sql, pars).QueryRow(&item)
+	return
+}
+
 // AddETATrialApproval 新增审批
 func AddETATrialApproval(item *EtaTrialApproval) (lastId int64, err error) {
 	o := orm.NewOrm()
@@ -61,6 +70,12 @@ type ETAAddEnableReq struct {
 	ApplyReasons string `description:"申请理由"`
 }
 
+type ETAAddApplyReq struct {
+	IsCheckAll   bool     `description:"是否全选"`
+	ApplyReasons string   `description:"申请理由"`
+	MobileList   []string `description:"手机号列表"`
+}
+
 type ETATrialApplyRevokeReq struct {
 	Mobile string `description:"客户手机号"`
 }

+ 18 - 0
routers/commentsRouter.go

@@ -10528,6 +10528,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ETATrialController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ETATrialController"],
+        beego.ControllerComments{
+            Method: "AccountTransfer",
+            Router: `/account/transfer`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ETATrialController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ETATrialController"],
         beego.ControllerComments{
             Method: "Add",
@@ -10609,6 +10618,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ETATrialController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ETATrialController"],
+        beego.ControllerComments{
+            Method: "EnableAccountList",
+            Router: `/enable/account/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ETATrialController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers:ETATrialController"],
         beego.ControllerComments{
             Method: "List",