zhangchuanxing 2 dias atrás
pai
commit
21ef8c931d

+ 1 - 1
controllers/company_user.go

@@ -6346,7 +6346,7 @@ func (this *CompanyUserController) UpadteUserYanxuanPermission() {
 	item.CompanyId = companyInfo.CompanyId
 	item.CompanyName = companyInfo.CompanyName
 	item.StartDate = time.Now().Format(utils.FormatDate)
-	item.EndDate = time.Now().AddDate(0, 2, 0).Format(utils.FormatDate) // 试用期两个月
+	item.EndDate = time.Now().AddDate(0, 0, 30).Format(utils.FormatDate) // 试用期30天
 	item.Mobile = userInfo.Mobile
 	item.Email = userInfo.Email
 	item.RealName = userInfo.RealName

+ 35 - 1
models/company/company_approval.go

@@ -285,7 +285,7 @@ func TryOutToFormal(companyId, productId, sellerId, companyApprovalId, companyCo
 }
 
 // TryOutToFormalByWxUser 试用转正式
-func TryOutToFormalByWxUser(companyId, productId, sellerId, companyApprovalId, companyContractId int, startDate, endDate, sellerName, productName string, packageType, raiPackageType, userId int) (newCompanyReportPermissionList []*CompanyReportPermission, err error) {
+func TryOutToFormalByWxUser(companyId, productId, sellerId, companyApprovalId, companyContractId int, startDate, endDate, sellerName, productName string, userId int, companyName, realName, mobile, email string) (newCompanyReportPermissionList []*CompanyReportPermission, err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -301,7 +301,41 @@ func TryOutToFormalByWxUser(companyId, productId, sellerId, companyApprovalId, c
 			err = to.Commit()
 		}
 	}()
+
 	var sql string
+	var total int
+	sql = `SELECT COUNT(1) AS total FROM user_product AS a WHERE user_id = ?  AND  product_id =  ?  `
+	err = o.Raw(sql, userId, productId).QueryRow(&total)
+	if err != nil {
+		return
+	}
+	//格式化合同结束日期
+	contractEndDate, _ := time.Parse(utils.FormatDate, endDate)
+	if total == 0 {
+		tmpUserProduct := &UserProduct{
+			UserId:          userId,
+			CompanyId:       companyId,
+			ProductId:       productId,
+			ProductName:     productName,
+			CompanyName:     companyName,
+			Status:          "正式",
+			CreateTime:      time.Now(),
+			ModifyTime:      time.Now(),
+			StartDate:       startDate,
+			EndDate:         endDate,
+			ContractEndDate: contractEndDate,
+			RealName:        realName,
+			Mobile:          mobile,
+			Email:           email,
+		}
+		_, tmpErr := to.Insert(tmpUserProduct)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+	} else {
+
+	}
 
 	sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
 	_, err = to.Raw(sql, companyApprovalId, companyId, productId).Exec()

+ 8 - 0
models/company/user_product.go

@@ -29,6 +29,14 @@ type UserProduct struct {
 	UserId          int       `description:"用户ID"`
 }
 
+// 获取用户是否有个人权限配置项
+func GetUserProductCountRaiByProductIdUserId(userId, productId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS total FROM user_product AS a WHERE user_id = ?  AND  product_id =  ?  `
+	err = o.Raw(sql, userId, productId).QueryRow(&count)
+	return
+}
+
 // 新增客户产品
 func AddUserProduct(item *UserProduct) (newId int64, err error) {
 	o := orm.NewOrm()

+ 2 - 1
models/db.go

@@ -271,8 +271,9 @@ func initCompany() {
 		new(company.CompanyHistoryRemark),                    // 客户记录历史备注表
 		new(company.CompanyHistoryRemarkLog),                 // 客户记录历史备注日志表
 		new(company.WxUserMoveLog),                           // 客户联系人移动记录日志表
-		new(company.UserReportPermission),                    // 用户权限表
+		new(company.UserReportPermission),                    // 用户权限配置
 		new(company.UserPermissionLog),                       // 用户权限日志表
+		new(company.UserProduct),                             // 用户权限表
 	)
 }
 

+ 1 - 0
models/seal/request/seal_approval.go

@@ -17,6 +17,7 @@ type SealApprovalApplyReq struct {
 	StartDate         string   `description:"开始日期."`
 	EndDate           string   `description:"结束日期"`
 	Money             float64  `description:"合同金额"`
+	WxUserId          int      `description:"用户ID"`
 }
 
 // 用印审批编辑请求

+ 2 - 0
models/seal/seal.go

@@ -40,6 +40,8 @@ type Seal struct {
 	EndDate           string    `description:"结束日期。"`
 	CompanyContractId int       `description:"合同id"`
 	Money             float64   `description:"合同金额"`
+	WxUserId          int       `description:"用户ID,开通个人权限使用"`
+	WxUserName        string    `description:"用户姓名,针对某份合同仅对单个用户使用的时候的场景"`
 }
 
 var EnumUse = []string{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议", "代付合同", "总对总协议"}

+ 8 - 1
services/company_apply/company_approval.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
+	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/contract"
 	"hongze/hz_crm_api/models/system"
@@ -674,11 +675,17 @@ func afterApproved(companyApprovalId int, opUserId int, opUserName string) (err
 		//}
 
 		if contractInfo.WxUserId > 0 {
+			wxUser, tmpErr := models.GetWxUserItemByUserId(contractInfo.WxUserId)
+			if tmpErr != nil {
+				err = errors.New("试用转正式失败,GetWxUserItemByUserId Err:" + tmpErr.Error())
+				return
+			}
 			//如果合同时间小于等于今天,那么立马执行合同内容
 			if time.Now().After(contractStartDate) {
 				startDate = contractInfo.StartDate
 				endDate = contractInfo.EndDate
-				companyReportPermissionList, tmpErr = company.TryOutToFormalByWxUser(recodeInfo.CompanyId, recodeInfo.ProductId, opUser.AdminId, recodeInfo.CompanyApprovalId, contractInfo.CompanyContractId, contractInfo.StartDate, contractInfo.EndDate, opUser.RealName, companyProduct.ProductName, contractInfo.PackageType, contractInfo.RaiPackageType, contractInfo.WxUserId)
+
+				companyReportPermissionList, tmpErr = company.TryOutToFormalByWxUser(recodeInfo.CompanyId, recodeInfo.ProductId, opUser.AdminId, recodeInfo.CompanyApprovalId, contractInfo.CompanyContractId, contractInfo.StartDate, contractInfo.EndDate, opUser.RealName, companyProduct.ProductName, contractInfo.WxUserId, wxUser.CompanyName, wxUser.RealName, wxUser.Mobile, wxUser.Email)
 				if tmpErr != nil {
 					err = errors.New("试用转正式失败,Err:" + tmpErr.Error())
 					return

+ 19 - 2
services/seal/seal.go

@@ -4,6 +4,7 @@ import (
 	"errors"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/contract"
 	"hongze/hz_crm_api/models/seal"
@@ -123,7 +124,7 @@ func ApplySeal(sysUser *system.Admin, req request.SealApprovalApplyReq) (err err
 	}()
 
 	// 添加用印
-	sealInfo, err := addSeal(sysUser.AdminId, req.ContractId, req.FileNum, req.CompanyId, sysUser.RealName, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrls, req.AffiliatedCompany, req.StartDate, req.EndDate, req.Money)
+	sealInfo, err := addSeal(sysUser.AdminId, req.ContractId, req.FileNum, req.CompanyId, sysUser.RealName, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrls, req.AffiliatedCompany, req.StartDate, req.EndDate, req.Money, req.WxUserId)
 	if err != nil {
 		return
 	}
@@ -140,7 +141,7 @@ func ApplySeal(sysUser *system.Admin, req request.SealApprovalApplyReq) (err err
 }
 
 // addSeal 新增用印
-func addSeal(userId, contractId, fileNum, companyId int, userName, use, companyName, useCompanyName, creditCode, serviceType, sealType, remark string, fileUrls []string, affiliatedCompany, startDate, endDate string, money float64) (sealInfo *seal.Seal, err error) {
+func addSeal(userId, contractId, fileNum, companyId int, userName, use, companyName, useCompanyName, creditCode, serviceType, sealType, remark string, fileUrls []string, affiliatedCompany, startDate, endDate string, money float64, wxUserId int) (sealInfo *seal.Seal, err error) {
 	if !strings.Contains(strings.Join(seal.EnumUse, ","), use) {
 		err = errors.New("用印用途异常")
 		return
@@ -180,6 +181,16 @@ func addSeal(userId, contractId, fileNum, companyId int, userName, use, companyN
 		fileUrl = fileUrls[0]
 	}
 
+	var wxUserName string
+	if wxUserId > 0 {
+		wxUser, tmpErr := models.GetWxUserItemByUserId(wxUserId)
+		if tmpErr != nil {
+			err = errors.New("获取用户信息失败,GetWxUserItemByUserIdErr:" + tmpErr.Error())
+			return
+		}
+		wxUserName = wxUser.RealName
+	}
+
 	sealInfo = &seal.Seal{
 		Code:              sealCode,
 		UserId:            userId,
@@ -203,6 +214,8 @@ func addSeal(userId, contractId, fileNum, companyId int, userName, use, companyN
 		StartDate:         startDate,
 		EndDate:           endDate,
 		Money:             money,
+		WxUserId:          wxUserId,
+		WxUserName:        wxUserName,
 	}
 
 	err = seal.AddSeal(sealInfo)
@@ -905,6 +918,10 @@ func GetSealApprovalDetail(sealId int, sysUser *system.Admin) (sealMore *respons
 		flowNodeListResp = tmpFlowNodeListResp
 	}
 
+	if sealInfo.WxUserId > 0 {
+		sealInfo.WxUserName += "(单账号签约)"
+	}
+
 	return
 }