Browse Source

feat(审批记录列表):新增审批记录列表

Roc 3 years ago
parent
commit
e0a72237c0

+ 500 - 3
controllers/approval.go

@@ -1,15 +1,512 @@
 package controllers
 
+import (
+	"hongze/hongze_mobile_admin/models/response/approval"
+	"hongze/hongze_mobile_admin/models/tables/company_approval"
+	"hongze/hongze_mobile_admin/models/tables/company_delay_permission"
+	"hongze/hongze_mobile_admin/utils"
+	"rdluck_tools/paging"
+	"time"
+)
+
 type ApprovalCommon struct {
 	BaseAuth
 }
 
 // @Title 获取审批列表接口
 // @Description 获取审批列表接口
-// @Param	request	body admin.LoginReq true "type json string"
-// @Success 200 {object} admin3.LoginResp
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   Status   query   string  true       "状态:'全部','待审批','已审批','驳回','已撤回'"
+// @Param   KeyWord   query   string  true       "搜索关键词"
+// @Success 200 {object} approval.CompanyApprovalListResp
 // @router /list [get]
 func (this *ApprovalCommon) List() {
+	sysUser := this.AdminWx
+
+	roleTypeCode := sysUser.RoleTypeCode
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	status := this.GetString("Status")
+	keyWord := this.GetString("KeyWord")
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+
+	var condition string
+	var pars []interface{}
+
+	if status != "" {
+		if status == "已审批" {
+			condition += ` AND c.approve_status IN('已审批','驳回','已撤回') `
+		} else {
+			condition += ` AND c.approve_status=? `
+			pars = append(pars, status)
+		}
+	}
+
+	if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { //审批
+		condition += ` AND c.approve_role_type_code=? `
+		pars = append(pars, roleTypeCode)
+	} else if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER { //销售
+		condition += ` AND c.apply_user_id=? `
+		pars = append(pars, sysUser.AdminId)
+	}
 
-	this.OkDetailed("1", "获取成功")
+	if keyWord != "" {
+		condition += ` AND (a.company_name LIKE '%` + keyWord + `%' OR a.credit_code LIKE '%` + keyWord + `%') `
+	}
+
+	total, err := company_approval.GetApprovalCount(condition, pars)
+	if err != nil {
+		this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
+		return
+	}
+
+	list, err := company_approval.GetApprovalList(condition, pars, startSize, pageSize)
+	if err != nil {
+		this.FailWithMessage("获取失败", "获取数据失败,Err:"+err.Error())
+		return
+	}
+	listLen := len(list)
+	for i := 0; i < listLen; i++ {
+		item := list[i]
+		if item.FreezeStartDate != "" && item.FreezeEndDate != "" && item.Status == utils.COMPANY_STATUS_FREEZE {
+			freezeEndDate, _ := time.Parse(utils.FormatDate, item.FreezeEndDate)
+			if time.Now().Before(freezeEndDate) {
+				expireDays := freezeEndDate.Sub(time.Now()).Hours() / 24
+				list[i].FreezeExpireDays = int(expireDays)
+			}
+		}
+		if item.StartDate != "" && item.EndDate != "" {
+			endDate, _ := time.Parse(utils.FormatDate, item.EndDate)
+			if time.Now().Before(endDate) {
+				expireDays := endDate.Sub(time.Now()).Hours() / 24
+				list[i].ExpireDay = int(expireDays)
+			}
+		}
+
+		approvalCount, err := company_approval.GetCompanyApprovalCount(item.CompanyId, item.ProductId)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			this.FailWithMessage("获取失败", "获取延期审批次数失败,Err:"+err.Error())
+			return
+		}
+		list[i].ApprovalCount = approvalCount
+
+		if item.ApplyMethod == 3 {
+			delayPermission, err := company_delay_permission.GetApplyDelayPermission(item.CompanyApprovalId)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				this.FailWithMessage("获取失败", "获取延期审批权限失败,Err:"+err.Error())
+				return
+			}
+			list[i].DelayPermission = delayPermission
+		}
+	}
+
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp := approval.CompanyApprovalListResp{
+		Paging: page,
+		List:   list,
+	}
+	this.OkDetailed(resp, "获取成功")
 }
+
+//
+//// @Title 获取审批单中的权限列表
+//// @Description 获取审批单中的权限列表接口
+//// @Param   ApprovalId   query   int  true       "审批单id"
+//// @Success 200 {object} company.CompanyPermissionResp
+//// @router /approval/getApprovalPermissionList [get]
+//func (this *CompanyApprovalController) GetApprovalPermissionList() {
+//	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
+//	}
+//
+//	//返回基础参数
+//	resp := new(company.CompanyPermissionResp)
+//
+//	//获取审批单信息
+//	approvalId, _ := this.GetInt("ApprovalId")
+//	if approvalId <= 0 {
+//		br.Msg = "审批单参数异常"
+//		br.ErrMsg = "提交审批单参数异常"
+//		return
+//	}
+//	approvalInfo,err := company.GetCompanyApprovalByApprovalId(approvalId)
+//	if err != nil{
+//		br.Msg = "获取失败"
+//		br.ErrMsg = "获取审批单数据失败,Err:" + err.Error()
+//		return
+//	}
+//
+//	//子权限切片集合
+//	var permissionClassifyArr  []string
+//	if approvalInfo.ProductId == 1{
+//		for _, v := range utils.PermissionFiccClassifyArr{
+//			permissionClassifyArr = append(permissionClassifyArr,v)
+//		}
+//	}else{
+//		permissionClassifyArr = append(permissionClassifyArr,"权益")
+//	}
+//
+//	//获取需要审批的权限
+//	delayPermissionList, err := company.GetDelayPermissionItems(approvalInfo.CompanyId,approvalInfo.CompanyApprovalId)
+//	if err != nil && err.Error() != utils.ErrNoRow() {
+//		br.Msg = "获取失败"
+//		br.ErrMsg = "获取审批权限失败,Err:" + err.Error()
+//		return
+//	}
+//
+//	delayPermissionIdMap := make(map[int]int)
+//	for _,delayPermission := range delayPermissionList{
+//		delayPermissionIdMap[delayPermission.ChartPermissionId] = 0
+//	}
+//
+//	//遍历获取
+//	for _, v := range permissionClassifyArr {
+//		checkList := make([]int, 0)
+//		plist := new(company.PermissionLookList)
+//		items, err := company.GetPermissionLookItems(approvalInfo.ProductId, v)
+//		if err != nil {
+//			br.Msg = "获取失败"
+//			br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
+//			return
+//		}
+//		for _, n := range items {
+//			if _,ok := delayPermissionIdMap[n.ChartPermissionId];ok{
+//				checkList = append(checkList, n.ChartPermissionId)
+//			}
+//		}
+//		plist.Items = items
+//		plist.ClassifyName = v
+//		plist.CheckList = checkList
+//
+//		if approvalInfo.ProductId == 1 {
+//			resp.FiccPermissionList = append(resp.FiccPermissionList, plist)
+//		}else{
+//			resp.PermissionList = append(resp.PermissionList, plist)
+//		}
+//
+//	}
+//
+//	br.Ret = 200
+//	br.Success = true
+//	br.Msg = "获取成功"
+//	br.Data = resp
+//}
+//
+//// @Title 审批
+//// @Description 审批接口
+//// @Param	request	body company.CompanyApplyApproveReq true "type json string"
+//// @Success Ret=200 审批成功
+//// @router /approval/approve [post]
+//func (this *CompanyApprovalController) ApplyApprove() {
+//	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 company.CompanyApplyApproveReq
+//	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+//	if err != nil {
+//		br.Msg = "参数解析异常!"
+//		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+//		return
+//	}
+//	roleTypeCode := sysUser.RoleTypeCode
+//	productId := services.GetProductId(roleTypeCode)
+//	if productId == 0 {
+//		br.Msg = "参数错误"
+//		br.ErrMsg = "客户类型为:" + roleTypeCode
+//		return
+//	}
+//	if req.CompanyId <= 0 {
+//		br.Msg = "参数错误"
+//		br.ErrMsg = "客户Id小于等于0:"
+//		return
+//	}
+//	if req.Status != 1 && req.Status != 2 {
+//		br.Msg = "参数错误"
+//		br.ErrMsg = "审批状态Id小于等于0:"
+//		return
+//	}
+//	companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId)
+//	if err != nil {
+//		br.Msg = "获取信息失败"
+//		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+//		return
+//	}
+//	if companyProduct == nil {
+//		br.Msg = "获取信息失败"
+//		br.ErrMsg = "获取审批信息失败,Err:" + err.Error()
+//		return
+//	}
+//
+//	approvalItem, err := company.GetCompanyApprovalById(req.CompanyId, productId)
+//	if err != nil {
+//		if err.Error() == utils.ErrNoRow() {
+//			br.Msg = "订单已审批,请刷新页面查看最新状态"
+//			br.ErrMsg = "待审批信息不存在,CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId)
+//			return
+//		}
+//		br.Msg = "获取信息失败"
+//		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+//		return
+//	}
+//	if approvalItem == nil {
+//		br.Msg = "订单已审批,请刷新页面查看最新状态"
+//		br.ErrMsg = "待审批信息不存在,CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId)
+//		return
+//	}
+//
+//	if approvalItem.ApproveRoleTypeCode != roleTypeCode {
+//		br.Msg = "您无权审批"
+//		br.ErrMsg = "ApproveRoleTypeCode:" + approvalItem.ApproveRoleTypeCode + ";roleTypeCode:" + roleTypeCode
+//		return
+//	}
+//
+//	var approveStatus, approveContent string
+//
+//	if req.Status == 1 { //通过
+//		//申请类型:1:试用->正式,2:冻结—>试用,3:试用延期,4:原销售申请领取流失客户,5:正式客户申请服务更新
+//		if approvalItem.ApplyMethod == 1 { //试用转正式
+//			//获取合同信息
+//			contract, err := company.GetCompanyContractDetail(req.CompanyId, productId, req.CompanyContractId)
+//			if err != nil {
+//				br.Msg = "待审批信息不存在"
+//				br.ErrMsg = "待审批信息不存在,CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId) + ";Err:" + err.Error()
+//				return
+//			}
+//			if contract == nil {
+//				br.Msg = "待审批信息不存在"
+//				br.ErrMsg = "待审批信息不存在,CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId)
+//				return
+//			}
+//			err = company.TryOutToFormal(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, contract.CompanyContractId, contract.StartDate, contract.EndDate, sysUser.RealName, companyProduct.ProductName)
+//			if err != nil {
+//				br.Msg = "审批失败"
+//				br.ErrMsg = "审批失败,Err:" + err.Error()
+//				return
+//			}
+//		} else if approvalItem.ApplyMethod == 2 { //冻结->试用
+//			err = company.FreezeToTryOut(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, approvalItem.ApplyUserId, sysUser.RealName,companyProduct.ProductName)
+//			if err != nil {
+//				br.Msg = "审批失败"
+//				br.ErrMsg = "审批失败,Err:" + err.Error()
+//				return
+//			}
+//		} else if approvalItem.ApplyMethod == 3 { //试用延期
+//			err = company.TryOutDelay(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, sysUser.RealName, companyProduct.EndDate, companyProduct.ProductName)
+//			if err != nil {
+//				br.Msg = "审批失败"
+//				br.ErrMsg = "审批失败,Err:" + err.Error()
+//				return
+//			}
+//		} else if approvalItem.ApplyMethod == 4 { //原销售申请领取流失客户
+//			err = company.ApplyReceive(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, approvalItem.ApplyUserId, sysUser.RealName,companyProduct.ProductName)
+//			if err != nil {
+//				br.Msg = "审批失败"
+//				br.ErrMsg = "审批失败,Err:" + err.Error()
+//				return
+//			}
+//		} else if approvalItem.ApplyMethod == 5 { //正式客户申请服务更新
+//			//获取合同信息
+//			contract, err := company.GetCompanyContractDetail(req.CompanyId, productId, req.CompanyContractId)
+//			if err != nil {
+//				br.Msg = "待审批信息不存在"
+//				br.ErrMsg = "待审批信息不存在,CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId) + ";Err:" + err.Error()
+//				return
+//			}
+//			if contract == nil {
+//				br.Msg = "待审批信息不存在"
+//				br.ErrMsg = "待审批信息不存在,CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId)
+//				return
+//			}
+//			err = company.ApplyServiceUpdate(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, contract.CompanyContractId, companyProduct.StartDate, contract.EndDate, sysUser.RealName, companyProduct.ProductName)
+//			if err != nil {
+//				br.Msg = "审批失败"
+//				br.ErrMsg = "审批失败,Err:" + err.Error()
+//				return
+//			}
+//		} else {
+//			br.Msg = "审批失败"
+//			br.ErrMsg = "无效的审批状态,CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" +
+//				strconv.Itoa(productId) + ";ApplyMethod:" + strconv.Itoa(approvalItem.ApplyMethod) + " ApproveStatus;" + approvalItem.ApproveStatus
+//			return
+//		}
+//		approveContent = "审批通过"
+//	} else { //拒绝
+//		approveStatus = "驳回"
+//		err = company.ApproveRefuse(req.CompanyId, productId, approveStatus, req.Remark)
+//		approveContent = "审批驳回"
+//		if err != nil {
+//			br.Msg = "审批失败"
+//			br.ErrMsg = "审批失败,Err:" + err.Error()
+//			return
+//		}
+//	}
+//
+//	//新增客户产品日志
+//	{
+//		productLog := new(company.CompanyProductLog)
+//		productLog.CompanyProductId = companyProduct.CompanyProductId
+//		productLog.CompanyId = companyProduct.CompanyId
+//		productLog.ProductId = companyProduct.ProductId
+//		productLog.ProductName = companyProduct.ProductName
+//		productLog.CompanyName = companyProduct.CompanyName
+//		productLog.CompanyName = companyProduct.CompanyName
+//		productLog.Source = companyProduct.Source
+//		productLog.Reasons = companyProduct.Reasons
+//		productLog.Status = companyProduct.Status
+//		productLog.IndustryId = companyProduct.IndustryId
+//		productLog.IndustryName = companyProduct.IndustryName
+//		productLog.SellerId = companyProduct.SellerId
+//		productLog.SellerName = companyProduct.SellerName
+//		productLog.GroupId = companyProduct.GroupId
+//		productLog.DepartmentId = companyProduct.DepartmentId
+//		productLog.IsSuspend = companyProduct.IsSuspend
+//		productLog.SuspendTime = companyProduct.SuspendTime
+//		productLog.ApproveStatus = companyProduct.ApproveStatus
+//		productLog.FreezeTime = companyProduct.FreezeTime
+//		productLog.Remark = companyProduct.Remark
+//		productLog.StartDate = companyProduct.StartDate
+//		productLog.EndDate = companyProduct.EndDate
+//		productLog.CreateTime = companyProduct.CreateTime
+//		productLog.ModifyTime = companyProduct.ModifyTime
+//		productLog.LoseReason = companyProduct.LoseReason
+//		productLog.LossTime = companyProduct.LossTime
+//		productLog.LogType = "modify"
+//		productLog.LogCreateTime = time.Now()
+//		productLog.AdminId = this.SysUser.AdminId
+//		go company.AddCompanyProductLog(productLog)
+//	}
+//	//新增操作记录
+//	{
+//		remark := "审批"
+//		operation := "approve"
+//		services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, sysUser.AdminId, companyProduct.CompanyName,
+//			companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, sysUser.RealName, req.Remark, companyProduct.Status)
+//	}
+//	//待办通知
+//	{
+//		content := companyProduct.CompanyName + " " + approvalItem.ApproveContent + approveContent
+//		approvalSysUser, _ := system.GetSysAdminById(approvalItem.ApplyUserId)
+//		if sysUser != nil {
+//			go services.AddCompanyApprovalMessage(sysUser.AdminId, approvalItem.ApplyUserId, req.CompanyId, approvalItem.CompanyApprovalId, 2, companyProduct.CompanyName, content, content, approvalSysUser.Mobile)
+//		}
+//	}
+//	br.Ret = 200
+//	br.Success = true
+//	br.Msg = "审批成功"
+//}
+//
+//// @Title 审批列表删除
+//// @Description 审批列表删除接口
+//// @Param	request	body company.CompanyApplyDeleteReq true "type json string"
+//// @Success Ret=200 删除成功
+//// @router /approval/delete [post]
+//func (this *CompanyApprovalController) ApplyDelete() {
+//	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 company.CompanyApplyDeleteReq
+//	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+//	if err != nil {
+//		br.Msg = "参数解析异常!"
+//		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+//		return
+//	}
+//	roleTypeCode := sysUser.RoleTypeCode
+//	productId := services.GetProductId(roleTypeCode)
+//	if productId == 0 {
+//		br.Msg = "参数错误"
+//		br.ErrMsg = "客户类型为:" + roleTypeCode
+//		return
+//	}
+//	if req.CompanyId <= 0 {
+//		br.Msg = "参数错误"
+//		br.ErrMsg = "客户Id小于等于0:"
+//		return
+//	}
+//	companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId)
+//	if err != nil {
+//		br.Msg = "获取信息失败"
+//		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+//		return
+//	}
+//	if companyProduct == nil {
+//		br.Msg = "获取信息失败"
+//		br.ErrMsg = "获取审批信息失败,Err:" + err.Error()
+//		return
+//	}
+//	approvalItem, err := company.GetCompanyApprovalByApprovalId(req.CompanyApprovalId)
+//	if err != nil {
+//		if err.Error() == utils.ErrNoRow() {
+//			br.Msg = "待审批信息不存在"
+//			br.ErrMsg = "待审批信息不存在,CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId)
+//			return
+//		}
+//		br.Msg = "获取信息失败"
+//		br.ErrMsg = "获取信息失败,Err:" + err.Error()
+//		return
+//	}
+//	if approvalItem == nil {
+//		br.Msg = "待审批信息不存在"
+//		br.ErrMsg = "待审批信息不存在,CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId)
+//		return
+//	}
+//	if approvalItem.ApproveStatus != "待审批" && approvalItem.ApproveStatus != "已撤回" {
+//		br.Msg = "审批状态为:" + approvalItem.ApproveStatus + ";不可删除"
+//		br.ErrMsg = "审批状态为:" + approvalItem.ApproveStatus + ";不可删除" + ";CompanyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId)
+//		return
+//	}
+//	//删除
+//	err = company.ApplyDelete(req.CompanyId, req.CompanyApprovalId, approvalItem.ProductId)
+//	if err != nil {
+//		br.Msg = "删除失败"
+//		br.ErrMsg = "删除失败,Err:" + err.Error()
+//		return
+//	}
+//	//新增操作记录
+//	{
+//		remark := "删除审批申请"
+//		operation := "approve_delete"
+//		services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, sysUser.AdminId, companyProduct.CompanyName,
+//			companyProduct.ProductName, sysUser.RealName, remark, operation, remark, sysUser.RealName, "", companyProduct.Status)
+//	}
+//	br.Ret = 200
+//	br.Success = true
+//	br.Msg = "删除成功"
+//}

+ 3 - 0
main.go

@@ -4,6 +4,7 @@ import (
 	"fmt"
 	"github.com/astaxie/beego/context"
 	"github.com/astaxie/beego/logs"
+	"hongze/hongze_mobile_admin/models"
 	_ "hongze/hongze_mobile_admin/routers"
 	"hongze/hongze_mobile_admin/utils"
 	"runtime"
@@ -19,6 +20,8 @@ func main() {
 	}
 
 	beego.BConfig.RecoverFunc = Recover
+	//数据库初始化
+	models.InitDb()
 	beego.Run()
 }
 

+ 32 - 32
models/custom/admin.go

@@ -2,37 +2,37 @@ package custom
 
 //管理员账户信息结构体(包含微信信息)
 type AdminWx struct {
-	AdminId                 int    `orm:"admin_id" json:"admin_id"`
-	AdminName               string `orm:"admin_name" json:"admin_name"`
-	RealName                string `orm:"real_name" json:"real_name"`
-	Password                string `orm:"password" json:"password"`
-	LastUpdatedPasswordTime string `orm:"last_updated_password_time" json:"last_updated_password_time"`
-	Enabled                 int    `orm:"enabled" json:"enabled"` // 1:有效,0:禁用
-	Email                   string `orm:"email" json:"email"`
-	LastLoginTime           string `orm:"last_login_time" json:"last_login_time"` // 最近登陆时间
-	CreatedTime             string `orm:"created_time" json:"created_time"`       // 创建时间
-	LastUpdatedTime         string `orm:"last_updated_time" json:"last_updated_time"`
-	Role                    string `orm:"role" json:"role"`                       // 用户角色
-	Mobile                  string `orm:"mobile" json:"mobile"`                   // 手机号
-	RoleType                int    `orm:"role_type" json:"role_type"`             // 角色类型:1需要录入指标,0:不需要
-	RoleId                  int    `orm:"role_id" json:"role_id"`                 // 角色id
-	RoleName                string `orm:"role_name" json:"role_name"`             // 角色名称
-	RoleTypeCode            string `orm:"role_type_code" json:"role_type_code"`   // 角色编码
-	DepartmentId            int    `orm:"department_id" json:"department_id"`     // 部门id
-	DepartmentName          string `orm:"department_name" json:"department_name"` // 部门名称
-	GroupId                 int    `orm:"group_id" json:"group_id"`               // 分组id
-	GroupName               string `orm:"group_name" json:"group_name"`           // 分组名称
-	Authority               int    `orm:"authority" json:"authority"`             // 管理权限,0:无,1:部门负责人,2:小组负责人,3:超级管理员
-	Position                string `orm:"position" json:"position"`               // 职位
+	AdminId                 int    `json:"admin_id"`
+	AdminName               string `json:"admin_name"`
+	RealName                string `json:"real_name"`
+	Password                string `json:"password"`
+	LastUpdatedPasswordTime string `json:"last_updated_password_time"`
+	Enabled                 int    `json:"enabled"` // 1:有效,0:禁用
+	Email                   string `json:"email"`
+	LastLoginTime           string `json:"last_login_time"` // 最近登陆时间
+	CreatedTime             string `json:"created_time"`    // 创建时间
+	LastUpdatedTime         string `json:"last_updated_time"`
+	Role                    string `json:"role"`            // 用户角色
+	Mobile                  string `json:"mobile"`          // 手机号
+	RoleType                int    `json:"role_type"`       // 角色类型:1需要录入指标,0:不需要
+	RoleId                  int    `json:"role_id"`         // 角色id
+	RoleName                string `json:"role_name"`       // 角色名称
+	RoleTypeCode            string `json:"role_type_code"`  // 角色编码
+	DepartmentId            int    `json:"department_id"`   // 部门id
+	DepartmentName          string `json:"department_name"` // 部门名称
+	GroupId                 int    `json:"group_id"`        // 分组id
+	GroupName               string `json:"group_name"`      // 分组名称
+	Authority               int    `json:"authority"`       // 管理权限,0:无,1:部门负责人,2:小组负责人,3:超级管理员
+	Position                string `json:"position"`        // 职位
 
-	OpenId      string `orm:"open_id" json:"open_id"` // open_id
-	UnionId     string `orm:"union_id" json:"union_id"`
-	Subscribe   int    `orm:"subscribe" json:"subscribe"`       // 是否关注
-	NickName    string `orm:"nick_name" json:"nick_name"`       // 用户昵称
-	BindAccount string `orm:"bind_account" json:"bind_account"` // 绑定时的账号
-	Sex         int    `orm:"sex" json:"sex"`                   // 普通用户性别,1为男性,2为女性
-	Province    string `orm:"province" json:"province"`         // 普通用户个人资料填写的省份
-	City        string `orm:"city" json:"city"`                 // 普通用户个人资料填写的城市
-	Country     string `orm:"country" json:"country"`           // 国家,如中国为CN
-	Headimgurl  string `orm:"headimgurl" json:"headimgurl"`
+	OpenId      string `json:"open_id"` // open_id
+	UnionId     string `json:"union_id"`
+	Subscribe   int    `json:"subscribe"`    // 是否关注
+	NickName    string `json:"nick_name"`    // 用户昵称
+	BindAccount string `json:"bind_account"` // 绑定时的账号
+	Sex         int    `json:"sex"`          // 普通用户性别,1为男性,2为女性
+	Province    string `json:"province"`     // 普通用户个人资料填写的省份
+	City        string `json:"city"`         // 普通用户个人资料填写的城市
+	Country     string `json:"country"`      // 国家,如中国为CN
+	Headimgurl  string `json:"headimgurl"`
 }

+ 8 - 18
models/db_init.go

@@ -4,6 +4,10 @@ import (
 	_ "github.com/go-sql-driver/mysql"
 	"hongze/hongze_mobile_admin/models/tables/admin"
 	"hongze/hongze_mobile_admin/models/tables/admin_record"
+	"hongze/hongze_mobile_admin/models/tables/company_approval"
+	"hongze/hongze_mobile_admin/models/tables/company_delay_permission"
+	"hongze/hongze_mobile_admin/models/tables/company_permission_log"
+	"hongze/hongze_mobile_admin/models/tables/company_report_permission"
 	"hongze/hongze_mobile_admin/models/tables/h5_admin_session"
 	"hongze/hongze_mobile_admin/models/tables/wx_token"
 	"hongze/hongze_mobile_admin/utils"
@@ -11,23 +15,6 @@ import (
 	"time"
 )
 
-func init() {
-	_ = orm.RegisterDataBase("default", "mysql", utils.MYSQL_URL)
-	orm.SetMaxIdleConns("default", 50)
-	orm.SetMaxOpenConns("default", 100)
-
-	db, _ := orm.GetDB("default")
-	db.SetConnMaxLifetime(10 * time.Minute)
-
-	//注册对象
-	orm.RegisterModel(
-		//new(UserTrialApply),
-		new(admin.Admin),
-		new(admin_record.AdminRecord),
-		new(h5_admin_session.H5AdminSession),
-		new(wx_token.WxToken),
-	)
-}
 func InitDb() {
 	_ = orm.RegisterDataBase("default", "mysql", utils.MYSQL_URL)
 	orm.SetMaxIdleConns("default", 50)
@@ -38,9 +25,12 @@ func InitDb() {
 
 	//注册对象
 	orm.RegisterModel(
-		//new(UserTrialApply),
 		new(admin.Admin),
 		new(admin_record.AdminRecord),
+		new(company_approval.CompanyApproval),
+		new(company_delay_permission.CompanyDelayPermission),
+		new(company_permission_log.CompanyPermissionLog),
+		new(company_report_permission.CompanyReportPermission),
 		new(h5_admin_session.H5AdminSession),
 		new(wx_token.WxToken),
 	)

+ 11 - 0
models/response/approval/approval.go

@@ -0,0 +1,11 @@
+package approval
+
+import (
+	"hongze/hongze_mobile_admin/models/tables/company_approval"
+	"rdluck_tools/paging"
+)
+
+type CompanyApprovalListResp struct {
+	Paging *paging.PagingItem
+	List   []*company_approval.CompanyApprovalList
+}

+ 21 - 21
models/tables/admin/admin.go

@@ -8,27 +8,27 @@ import (
 
 type Admin struct {
 	AdminId                 int    `orm:"column(admin_id);pk";json:"admin_id"`
-	AdminName               string `orm:"admin_name";json:"admin_name"`
-	RealName                string `orm:"real_name" json:"real_name"`
-	Password                string `orm:"password" json:"password"`
-	LastUpdatedPasswordTime string `orm:"last_updated_password_time" json:"last_updated_password_time"`
-	Enabled                 int    `orm:"enabled" json:"enabled"` // 1:有效,0:禁用
-	Email                   string `orm:"email" json:"email"`
-	LastLoginTime           string `orm:"last_login_time" json:"last_login_time"` // 最近登陆时间
-	CreatedTime             string `orm:"created_time" json:"created_time"`       // 创建时间
-	LastUpdatedTime         string `orm:"last_updated_time" json:"last_updated_time"`
-	Role                    string `orm:"role" json:"role"`                       // 用户角色
-	Mobile                  string `orm:"mobile" json:"mobile"`                   // 手机号
-	RoleType                int    `orm:"role_type" json:"role_type"`             // 角色类型:1需要录入指标,0:不需要
-	RoleId                  int    `orm:"role_id" json:"role_id"`                 // 角色id
-	RoleName                string `orm:"role_name" json:"role_name"`             // 角色名称
-	RoleTypeCode            string `orm:"role_type_code" json:"role_type_code"`   // 角色编码
-	DepartmentId            int    `orm:"department_id" json:"department_id"`     // 部门id
-	DepartmentName          string `orm:"department_name" json:"department_name"` // 部门名称
-	GroupId                 int    `orm:"group_id" json:"group_id"`               // 分组id
-	GroupName               string `orm:"group_name" json:"group_name"`           // 分组名称
-	Authority               int    `orm:"authority" json:"authority"`             // 管理权限,0:无,1:部门负责人,2:小组负责人,3:超级管理员
-	Position                string `orm:"position" json:"position"`               // 职位
+	AdminName               string `orm:"column(admin_name);";json:"admin_name"`
+	RealName                string `orm:"column(real_name);" json:"real_name"`
+	Password                string `orm:"column(password);" json:"password"`
+	LastUpdatedPasswordTime string `orm:"column(last_updated_password_time);" json:"last_updated_password_time"`
+	Enabled                 int    `orm:"column(enabled);" json:"enabled"` // 1:有效,0:禁用
+	Email                   string `orm:"column(email);" json:"email"`
+	LastLoginTime           string `orm:"column(last_login_time);" json:"last_login_time"` // 最近登陆时间
+	CreatedTime             string `orm:"column(created_time);" json:"created_time"`       // 创建时间
+	LastUpdatedTime         string `orm:"column(last_updated_time);" json:"last_updated_time"`
+	Role                    string `orm:"column(role);" json:"role"`                       // 用户角色
+	Mobile                  string `orm:"column(mobile);" json:"mobile"`                   // 手机号
+	RoleType                int    `orm:"column(role_type);" json:"role_type"`             // 角色类型:1需要录入指标,0:不需要
+	RoleId                  int    `orm:"column(role_id);" json:"role_id"`                 // 角色id
+	RoleName                string `orm:"column(role_name);" json:"role_name"`             // 角色名称
+	RoleTypeCode            string `orm:"column(role_type_code);" json:"role_type_code"`   // 角色编码
+	DepartmentId            int    `orm:"column(department_id);" json:"department_id"`     // 部门id
+	DepartmentName          string `orm:"column(department_name);" json:"department_name"` // 部门名称
+	GroupId                 int    `orm:"column(group_id);" json:"group_id"`               // 分组id
+	GroupName               string `orm:"column(group_name);" json:"group_name"`           // 分组名称
+	Authority               int    `orm:"column(authority);" json:"authority"`             // 管理权限,0:无,1:部门负责人,2:小组负责人,3:超级管理员
+	Position                string `orm:"column(position);" json:"position"`               // 职位
 }
 
 //账号密码校验

+ 15 - 15
models/tables/admin_record/admin_record.go

@@ -7,21 +7,21 @@ import (
 
 type AdminRecord struct {
 	UserRecordId   int       `orm:"column(user_record_id);pk";json:"user_record_id"` // 用户id
-	OpenId         string    `orm:"open_id" json:"open_id"`                          // open_id
-	UnionId        string    `orm:"union_id" json:"union_id"`
-	Subscribe      int       `orm:"subscribe" json:"subscribe"`       // 是否关注
-	NickName       string    `orm:"nick_name" json:"nick_name"`       // 用户昵称
-	RealName       string    `orm:"real_name" json:"real_name"`       // 用户实际名称
-	BindAccount    string    `orm:"bind_account" json:"bind_account"` // 绑定时的账号
-	Sex            int       `orm:"sex" json:"sex"`                   // 普通用户性别,1为男性,2为女性
-	Province       string    `orm:"province" json:"province"`         // 普通用户个人资料填写的省份
-	City           string    `orm:"city" json:"city"`                 // 普通用户个人资料填写的城市
-	Country        string    `orm:"country" json:"country"`           // 国家,如中国为CN
-	Headimgurl     string    `orm:"headimgurl" json:"headimgurl"`
-	CreateTime     time.Time `orm:"create_time" json:"create_time"`         // 创建时间
-	CreatePlatform int       `orm:"create_platform" json:"create_platform"` // 注册平台,1:日度点评公众号,2:管理后台,3:pc端网站,4:查研观向小程序
-	SessionKey     string    `orm:"session_key" json:"session_key"`         // 微信小程序会话密钥
-	UserId         int       `orm:"user_id" json:"user_id"`                 // 用户id
+	OpenId         string    `orm:"column(open_id);" json:"open_id"`                 // open_id
+	UnionId        string    `orm:"column(union_id);" json:"union_id"`
+	Subscribe      int       `orm:"column(subscribe);" json:"subscribe"`       // 是否关注
+	NickName       string    `orm:"column(nick_name);" json:"nick_name"`       // 用户昵称
+	RealName       string    `orm:"column(real_name);" json:"real_name"`       // 用户实际名称
+	BindAccount    string    `orm:"column(bind_account);" json:"bind_account"` // 绑定时的账号
+	Sex            int       `orm:"column(sex);" json:"sex"`                   // 普通用户性别,1为男性,2为女性
+	Province       string    `orm:"column(province);" json:"province"`         // 普通用户个人资料填写的省份
+	City           string    `orm:"column(city);" json:"city"`                 // 普通用户个人资料填写的城市
+	Country        string    `orm:"column(country);" json:"country"`           // 国家,如中国为CN
+	Headimgurl     string    `orm:"column(headimgurl);" json:"headimgurl"`
+	CreateTime     time.Time `orm:"column(create_time);" json:"create_time"`         // 创建时间
+	CreatePlatform int       `orm:"column(create_platform);" json:"create_platform"` // 注册平台,1:日度点评公众号,2:管理后台,3:pc端网站,4:查研观向小程序
+	SessionKey     string    `orm:"column(session_key);" json:"session_key"`         // 微信小程序会话密钥
+	UserId         int       `orm:"column(user_id);" json:"user_id"`                 // 用户id
 }
 
 //根据openid获取用户关系

+ 749 - 0
models/tables/company_approval/company_approval.go

@@ -0,0 +1,749 @@
+package company_approval
+
+import (
+	"hongze/hongze_mobile_admin/models/tables/admin"
+	"hongze/hongze_mobile_admin/models/tables/company_delay_permission"
+	"hongze/hongze_mobile_admin/models/tables/company_permission_log"
+	"hongze/hongze_mobile_admin/models/tables/company_report_permission"
+	"hongze/hongze_mobile_admin/utils"
+	"rdluck_tools/orm"
+	"time"
+)
+
+type CompanyApproval struct {
+	CompanyApprovalId   int `orm:"column(company_approval_id);pk"`
+	CompanyId           int
+	ProductId           int
+	ApproveStatus       string    `description:"'待审批','已审批','驳回','已撤回'"`
+	ApproveUserId       int       `description:"审批人"`
+	ApproveRoleTypeCode string    `description:"审批人角色类型"`
+	ApproveRealName     string    `description:"审批人姓名"`
+	ApproveTime         time.Time `description:"审批时间"`
+	ApproveContent      string    `description:"待审内容"`
+	ApplyMethod         int       `description:"申请类型:1:试用->正式,2:冻结—>试用,3:流失—>正式,4:试用延期,5:原销售申请领取流失客户,6:正式客户申请服务更新"`
+	ApplyReasons        string    `description:"申请原因"`
+	ApplyUserId         int       `description:"申请人"`
+	ApplyRealName       string    `description:"申请人姓名"`
+	CreateTime          time.Time `description:"申请时间"`
+	ModifyTime          time.Time `description:"修改时间"`
+	CompanyContractId   int       `description:"合同id"`
+}
+
+//新增客户产品
+func AddCompanyApproval(item *CompanyApproval) (lastId int, err error) {
+	o := orm.NewOrm()
+	o.Begin()
+	defer func() {
+		if err != nil {
+			o.Rollback()
+		} else {
+			o.Commit()
+		}
+	}()
+	var newId int64
+	newId, err = o.Insert(item)
+	lastId = int(newId)
+	if err != nil {
+		return
+	}
+	sql := `UPDATE company_product SET approve_status=? WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, item.ApproveStatus, item.CompanyId, item.ProductId).Exec()
+	return
+}
+
+func GetCompanyApprovalCountById(companyId, productId int) (count int, err error) {
+	sql := `SELECT COUNT(1) AS count FROM company_approval WHERE company_id=? AND product_id=? AND approve_status='待审批' `
+	o := orm.NewOrm()
+	err = o.Raw(sql, companyId, productId).QueryRow(&count)
+	return
+}
+
+func GetCompanyApprovalById(companyId, productId int) (item *CompanyApproval, err error) {
+	sql := `SELECT * FROM company_approval WHERE company_id=? AND product_id=? AND approve_status='待审批' LIMIT 1 `
+	o := orm.NewOrm()
+	err = o.Raw(sql, companyId, productId).QueryRow(&item)
+	return
+}
+
+func GetCompanyApprovalByApprovalId(companyApprovalId int) (item *CompanyApproval, err error) {
+	sql := `SELECT * FROM company_approval WHERE company_approval_id=? LIMIT 1 `
+	o := orm.NewOrm()
+	err = o.Raw(sql, companyApprovalId).QueryRow(&item)
+	return
+}
+
+//客户审批单
+type CompanyApprovalList struct {
+	CompanyId         int
+	ProductId         int
+	CompanyName       string `description:"客户名称"`
+	CreditCode        string `description:"社会统一信用码"`
+	CompanyType       string `description:"客户类型"`
+	IndustryName      string `description:"行业名称"`
+	SellerName        string `description:"销售名称"`
+	CreateTime        string `description:"创建时间"`
+	ApprovalTime      string `description:"提交申请时间"`
+	ApproveTime       string `description:"审批时间"`
+	Status            string `description:"客户状态"`
+	ApproveContent    string `description:"待审内容"`
+	ApproveStatus     string `description:"当前状态"`
+	ApplyMethod       int    `description:"申请类型:1:试用->正式,2:冻结—>试用,3:流失—>正式,4:试用延期,5:原销售申请领取流失客户,6:正式客户申请服务更新"`
+	ApplyReasons      string `description:"申请理由"`
+	FreezeStartDate   string `description:"冻结开始日期"`
+	FreezeEndDate     string `description:"冻结结束日期"`
+	FreezeExpireDays  int    `description:"冻结到期天数"`
+	Address           string `description:"地址"`
+	Source            string `description:"客户来源"`
+	ApproveRemark     string `description:"驳回理由"`
+	StartDate         string `description:"开始日期"`
+	EndDate           string `description:"结束日期"`
+	ExpireDay         int    `description:"服务到期天数"`
+	CompanyApprovalId int    `description:"审批记录ID"`
+	ApprovalCount     int    `description:"已延期审批次数"`
+	CompanyContractId int    `description:"合同id"`
+	DelayPermission   string `description:"延期申请品种"`
+	ApplyRealName     string `description:"申请人姓名"`
+}
+
+func GetApprovalList(condition string, pars []interface{}, startSize, pageSize int) (items []*CompanyApprovalList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT a.company_id,b.product_id,a.company_name,a.credit_code,a.address,b.company_type,b.industry_name,
+			b.seller_name,b.create_time,b.freeze_start_date,b.freeze_end_date,b.source,c.create_time AS approval_time,c.approve_time,b.status,
+            c.approve_content,c.approve_status,c.apply_method,c.apply_reasons,c.approve_remark,b.start_date,b.end_date,c.company_approval_id,c.company_contract_id,
+            c.apply_real_name
+			FROM company AS a
+			INNER JOIN company_product AS b ON a.company_id=b.company_id
+			INNER JOIN company_approval AS c ON b.company_id=c.company_id AND b.product_id=c.product_id
+ 			WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY c.modify_time DESC LIMIT ?,? `
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+func GetApprovalCount(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count
+			FROM company AS a
+			INNER JOIN company_product AS b ON a.company_id=b.company_id
+			INNER JOIN company_approval AS c ON b.company_id=c.company_id AND b.product_id=c.product_id
+ 			WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY c.modify_time DESC `
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
+
+//试用转正式
+func TryOutToFormal(companyId, productId, sellerId, companyApprovalId, companyContractId int, startDate, endDate, sellerName, productName string) (err error) {
+	o := orm.NewOrm()
+	o.Begin()
+	defer func() {
+		if err != nil {
+			o.Rollback()
+		} else {
+			o.Commit()
+		}
+	}()
+	sql := `UPDATE company_product SET status='正式',approve_status='已审批',start_date=?,end_date=?,modify_time=NOW(),formal_time=NOW() WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+	sql = `UPDATE company SET type=1,last_updated_time=NOW() WHERE company_id=? `
+	_, err = o.Raw(sql, companyId).Exec()
+	if err != nil {
+		return
+	}
+	sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+	items := make([]*company_report_permission.CompanyReportPermission, 0)
+	sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
+	for _, pv := range items {
+		cpLog := new(company_permission_log.CompanyPermissionLog)
+		cpLog.CompanyId = companyId
+		cpLog.ChartPermissionId = pv.ChartPermissionId
+		cpLog.CreateTime = time.Now()
+		cpLog.SysUserId = sellerId
+		cpLog.SysUserName = sellerName
+		cpLog.StartDate = pv.StartDate
+		cpLog.EndDate = pv.EndDate
+		cpLog.ProductId = productId
+		cpLog.ProductName = pv.ProductName
+		go company_permission_log.AddCompanyPermissionLog(cpLog)
+	}
+
+	sql = `DELETE FROM company_report_permission WHERE company_id=? AND product_id=?`
+	_, err = o.Raw(sql, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+
+	contractPermission := make([]*company_report_permission.CompanyReportPermission, 0)
+	sql = `SELECT * FROM company_contract_permission WHERE company_contract_id=? AND company_id=? `
+	_, err = o.Raw(sql, companyContractId, companyId).QueryRows(&contractPermission)
+	if err != nil {
+		return
+	}
+	for _, pv := range contractPermission {
+		sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
+             chart_permission_id, start_date,end_date,product_id,product_name, modify_time,company_contract_id,status) 
+			VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?,?) `
+		_, err = o.Raw(sql, companyId, pv.ChartPermissionId, pv.ChartPermissionId, pv.StartDate, pv.EndDate, productId, productName, companyContractId, "正式").Exec()
+		if err != nil {
+			return
+		}
+	}
+	sql = `UPDATE company_contract SET status=1 WHERE company_contract_id=? AND company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyContractId, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+	return
+}
+
+//冻结转试用
+func FreezeToTryOut(companyId, productId, sellerId, companyApprovalId, applyUserId int, sellerName, productName string) (err error) {
+	o := orm.NewOrm()
+	o.Begin()
+	defer func() {
+		if err != nil {
+			o.Rollback()
+		} else {
+			o.Commit()
+		}
+	}()
+	startDate := time.Now().Format(utils.FormatDate)
+	endDate := time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
+
+	sellerItem, err := admin.GetAdminById(applyUserId)
+
+	if err != nil {
+		return
+	}
+
+	//更新用户产品状态
+	sql := `UPDATE company_product SET status='试用',approve_status='已审批',freeze_start_date=null,freeze_end_date=null,freeze_time=null,
+            start_date=?,end_date=?,seller_id=?,seller_name=?,group_id=?,department_id=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, startDate, endDate, sellerItem.AdminId, sellerItem.RealName, sellerItem.GroupId, sellerItem.DepartmentId, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+	//更新用户状态
+	sql = `UPDATE company SET type=2,last_updated_time=NOW() WHERE company_id=? `
+	_, err = o.Raw(sql, companyId).Exec()
+	if err != nil {
+		return
+	}
+	//更新审批单
+	sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+
+	//查询该用户所有产品权限,并把当前数据做日志(允许添加不修改的数据)
+	items := make([]*company_report_permission.CompanyReportPermission, 0)
+	sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
+	for _, pv := range items {
+		cpLog := new(company_permission_log.CompanyPermissionLog)
+		cpLog.CompanyId = companyId
+		cpLog.ChartPermissionId = pv.ChartPermissionId
+		cpLog.CreateTime = time.Now()
+		cpLog.SysUserId = sellerId
+		cpLog.SysUserName = sellerName
+		cpLog.StartDate = pv.StartDate
+		cpLog.EndDate = pv.EndDate
+		cpLog.ProductId = productId
+		cpLog.ProductName = pv.ProductName
+		go company_permission_log.AddCompanyPermissionLog(cpLog)
+	}
+
+	//更新产品(2021年03月02日14:58:50注释,调整为从申请权限表中获取数据并修改)
+	//sql = `UPDATE company_report_permission SET start_date=?,end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
+	//_, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
+	//if err != nil {
+	//	return
+	//}
+
+	//查询原先是否已经存在权限,如果有权限了,那么需要先删除原有的权限
+	count, _ := company_report_permission.GetCompanyReportPermissionCount(companyId, productId)
+	if count > 0 {
+		sql := ` DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
+		_, err = o.Raw(sql, companyId, productId).Exec()
+		if err != nil {
+			return
+		}
+	}
+	//获取需要试用的权限
+	delayPermissionItems, err := company_delay_permission.GetDelayPermissionItems(companyId, companyApprovalId)
+	if err != nil {
+		return err
+	}
+	status := `试用`
+	for _, v := range delayPermissionItems {
+		sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
+             chart_permission_id, start_date,end_date,product_id,product_name, modify_time,status) 
+			VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?) `
+		_, err = o.Raw(sql, companyId, v.ChartPermissionId, v.ChartPermissionId, v.StartDate, v.EndDate, productId, productName, status).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}
+
+//试用延期
+func TryOutDelay(companyId, productId, sellerId, companyApprovalId int, sellerName, endDate, productName string) (err error) {
+	o := orm.NewOrm()
+	o.Begin()
+	defer func() {
+		if err != nil {
+			o.Rollback()
+		} else {
+			o.Commit()
+		}
+	}()
+	endDateTime, err := time.Parse(utils.FormatDate, endDate)
+	if err != nil {
+		return
+	}
+	newEndDate := endDateTime.AddDate(0, 2, 0).Format(utils.FormatDate)
+	//更新用户产品状态
+	sql := `UPDATE company_product SET approve_status='已审批',end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, newEndDate, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+	//更新审批单
+	sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+
+	//查询该用户所有产品权限,并把当前数据做日志(允许添加不修改的数据)
+	items := make([]*company_report_permission.CompanyReportPermission, 0)
+	sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
+	for _, pv := range items {
+		cpLog := new(company_permission_log.CompanyPermissionLog)
+		cpLog.CompanyId = companyId
+		cpLog.ChartPermissionId = pv.ChartPermissionId
+		cpLog.CreateTime = time.Now()
+		cpLog.SysUserId = sellerId
+		cpLog.SysUserName = sellerName
+		cpLog.StartDate = pv.StartDate
+		cpLog.EndDate = pv.EndDate
+		cpLog.ProductId = productId
+		cpLog.ProductName = pv.ProductName
+		go company_permission_log.AddCompanyPermissionLog(cpLog)
+	}
+	//获取需要延期的权限
+	delayPermissionItems, err := company_delay_permission.GetDelayPermissionItems(companyId, companyApprovalId)
+	if err != nil {
+		return err
+	}
+	status := `试用`
+	for _, v := range delayPermissionItems {
+		isExist, err := company_report_permission.GetCompanyPermissionCheck(companyId, v.ChartPermissionId)
+		if err != nil {
+			return err
+		}
+		if isExist > 0 {
+			sql = `UPDATE company_report_permission SET end_date=?,status=?,modify_time=NOW() WHERE company_id=? AND product_id=? AND chart_permission_id=?`
+			_, err = o.Raw(sql, newEndDate, status, companyId, productId, v.ChartPermissionId).Exec()
+			if err != nil {
+				return err
+			}
+		} else {
+			sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
+             chart_permission_id, start_date,end_date,product_id,product_name, modify_time,status) 
+			VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?) `
+			_, err = o.Raw(sql, companyId, v.ChartPermissionId, v.ChartPermissionId, v.StartDate, newEndDate, productId, productName, status).Exec()
+			if err != nil {
+				return err
+			}
+		}
+	}
+	return
+}
+
+//原销售申请领取
+func ApplyReceive(companyId, productId, sysUserId, companyApprovalId, applyUserId int, sysUserName, productName string) (err error) {
+	o := orm.NewOrm()
+	o.Begin()
+	defer func() {
+		if err != nil {
+			o.Rollback()
+		} else {
+			o.Commit()
+		}
+	}()
+
+	sellerItem, err := admin.GetAdminById(applyUserId)
+	if err != nil {
+		return
+	}
+	startDate := time.Now().Format(utils.FormatDate)
+	endDate := time.Now().AddDate(0, 2, 0).Format(utils.FormatDate)
+
+	//更新用户产品状态
+	sql := `UPDATE company_product SET status='试用',approve_status='已审批', start_date=?,end_date=?,seller_id=?,seller_name=?,group_id=?,department_id=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, startDate, endDate, sellerItem.AdminId, sellerItem.RealName, sellerItem.GroupId, sellerItem.DepartmentId, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+
+	//更新用户状态
+	sql = `UPDATE company SET type=2,last_updated_time=NOW() WHERE company_id=? `
+	_, err = o.Raw(sql, companyId).Exec()
+	if err != nil {
+		return
+	}
+
+	//更新审批单
+	sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+	//查询该用户所有产品权限,并把当前数据做日志(允许添加不修改的数据)
+	items := make([]*company_report_permission.CompanyReportPermission, 0)
+	sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
+	for _, pv := range items {
+		cpLog := new(company_permission_log.CompanyPermissionLog)
+		cpLog.CompanyId = companyId
+		cpLog.ChartPermissionId = pv.ChartPermissionId
+		cpLog.CreateTime = time.Now()
+		cpLog.SysUserId = sysUserId
+		cpLog.SysUserName = sysUserName
+		cpLog.StartDate = pv.StartDate
+		cpLog.EndDate = pv.EndDate
+		cpLog.ProductId = productId
+		cpLog.ProductName = pv.ProductName
+		go company_permission_log.AddCompanyPermissionLog(cpLog)
+	}
+
+	//更新产品(2021年03月02日14:58:50注释,调整为从申请权限表中获取数据并修改)
+	//sql = `UPDATE company_report_permission SET start_date=?,end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
+	//_, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
+	//if err != nil {
+	//	return
+	//}
+
+	//查询原先是否已经存在权限,如果有权限了,那么需要先删除原有的权限
+	count, _ := company_report_permission.GetCompanyReportPermissionCount(companyId, productId)
+	if count > 0 {
+		sql := ` DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
+		_, err = o.Raw(sql, companyId, productId).Exec()
+		if err != nil {
+			return
+		}
+	}
+	//获取需要试用的权限
+	delayPermissionItems, err := company_delay_permission.GetDelayPermissionItems(companyId, companyApprovalId)
+	if err != nil {
+		return err
+	}
+	status := `试用`
+	for _, v := range delayPermissionItems {
+		sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
+             chart_permission_id, start_date,end_date,product_id,product_name, modify_time,status) 
+			VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?) `
+		_, err = o.Raw(sql, companyId, v.ChartPermissionId, v.ChartPermissionId, v.StartDate, v.EndDate, productId, productName, status).Exec()
+		if err != nil {
+			return err
+		}
+	}
+	return
+}
+
+//申请服务更新
+func ApplyServiceUpdate(companyId, productId, sellerId, companyApprovalId, companyContractId int, startDate, endDate, sellerName, productName string) (err error) {
+	o := orm.NewOrm()
+	o.Begin()
+	defer func() {
+		if err != nil {
+			o.Rollback()
+		} else {
+			o.Commit()
+		}
+	}()
+
+	sql := `UPDATE company_product SET status='正式',approve_status='已审批',start_date=?,end_date=?,modify_time=NOW() WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, startDate, endDate, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+	sql = `UPDATE company_approval SET approve_status='已审批',approve_time=NOW(),modify_time=NOW() WHERE company_approval_id=? AND company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyApprovalId, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+	items := make([]*company_report_permission.CompanyReportPermission, 0)
+	sql = `SELECT * FROM company_report_permission WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
+	if err != nil {
+		return
+	}
+	for _, pv := range items {
+		cpLog := new(company_permission_log.CompanyPermissionLog)
+		cpLog.CompanyId = companyId
+		cpLog.ChartPermissionId = pv.ChartPermissionId
+		cpLog.CreateTime = time.Now()
+		cpLog.SysUserId = sellerId
+		cpLog.SysUserName = sellerName
+		cpLog.StartDate = pv.StartDate
+		cpLog.EndDate = pv.EndDate
+		cpLog.ProductId = productId
+		cpLog.ProductName = pv.ProductName
+		go company_permission_log.AddCompanyPermissionLog(cpLog)
+	}
+	sql = `DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+
+	contractPermission := make([]*company_report_permission.CompanyReportPermission, 0)
+	sql = `SELECT * FROM company_contract_permission WHERE company_contract_id=? AND company_id=? `
+	_, err = o.Raw(sql, companyContractId, companyId).QueryRows(&contractPermission)
+	if err != nil {
+		return
+	}
+	for _, pv := range contractPermission {
+		sql = `INSERT INTO company_report_permission(company_id, report_permission_id,created_time, last_updated_time,
+             chart_permission_id, start_date,end_date,product_id,product_name, modify_time,company_contract_id,status) 
+			VALUES(?,?,NOW(),NOW(),?,?,?,?,?,NOW(),?,?) `
+		_, err = o.Raw(sql, companyId, pv.ChartPermissionId, pv.ChartPermissionId, pv.StartDate, pv.EndDate, productId, productName, companyContractId, "正式").Exec()
+		if err != nil {
+			return
+		}
+	}
+	sql = `UPDATE company_contract SET status=1 WHERE company_contract_id=? AND company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyContractId, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+	return
+}
+
+func GetCompanyApprovalDetailById(companyId, productId int) (item *CompanyApproval, err error) {
+	sql := `SELECT * FROM company_approval WHERE company_id=? AND product_id=? AND approve_status IN('驳回','已撤回') ORDER BY modify_time DESC LIMIT 1 `
+	o := orm.NewOrm()
+	err = o.Raw(sql, companyId, productId).QueryRow(&item)
+	return
+}
+
+type CompanyApplyDeleteReq struct {
+	CompanyId         int `description:"客户id"`
+	CompanyApprovalId int `description:"审批记录ID"`
+}
+
+//申请服务更新
+func ApplyDelete(companyId, companyApprovalId, productId int) (err error) {
+	o := orm.NewOrm()
+	o.Begin()
+	defer func() {
+		if err != nil {
+			o.Rollback()
+		} else {
+			o.Commit()
+		}
+	}()
+
+	sql := `DELETE FROM company_approval WHERE company_approval_id=? `
+	_, err = o.Raw(sql, companyApprovalId).Exec()
+	if err != nil {
+		return
+	}
+	sql = `UPDATE company_product SET approve_status='' WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyId, productId).Exec()
+	if err != nil {
+		return
+	}
+	return
+}
+
+//修改申请信息
+func ModifyCompanyApproval(companyId, productId, companyApprovalId int, approveContent, applyReasons string) (err error) {
+	o := orm.NewOrm()
+	o.Begin()
+	defer func() {
+		if err != nil {
+			utils.FileLog.Info("试用延期申请:Err %s", err.Error())
+			o.Rollback()
+		} else {
+			o.Commit()
+		}
+	}()
+	sql := `UPDATE company_approval SET approve_status = '待审批', approve_content=?,apply_reasons=?,modify_time=NOW() WHERE company_approval_id = ? `
+	_, err = o.Raw(sql, approveContent, applyReasons, companyApprovalId).Exec()
+	if err != nil {
+		return
+	}
+	sql = `UPDATE company_product SET approve_status='待审批' WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyId, productId).Exec()
+	utils.FileLog.Info("试用延期申请:Err %s,%s,%d", sql, companyId, productId)
+	return
+}
+
+////修改申请信息
+//func ModifyCompanyTurnPositive(item *CompanyApplyTurnPositiveReq, productId, companyContractId int) (err error) {
+//	o := orm.NewOrm()
+//	o.Begin()
+//	defer func() {
+//		if err != nil {
+//			o.Rollback()
+//		} else {
+//			o.Commit()
+//		}
+//	}()
+//	sql := `UPDATE  company_contract
+//			SET
+//			  start_date = ?,
+//			  end_date = ?,
+//			  money = ?,
+//			  pay_method = ?,
+//			  pay_channel = ?,
+//			  img_url = ?,
+//			  modify_time = NOW()
+//			WHERE company_contract_id = ? `
+//	_, err = o.Raw(sql, item.StartDate, item.EndDate, item.Money, item.PayMethod, item.PayChannel, item.ImgUrl, companyContractId).Exec()
+//	if err != nil {
+//		return
+//	}
+//
+//	sql = `DELETE FROM company_contract_permission WHERE company_contract_id = ? `
+//	_, err = o.Raw(sql, companyContractId).Exec()
+//	if err != nil {
+//		return
+//	}
+//
+//	permissionArr := strings.Split(item.PermissionIds, ",")
+//	for _, v := range permissionArr {
+//		contractPermission := new(CompanyContractPermission)
+//		contractPermission.CompanyId = item.CompanyId
+//		contractPermission.CompanyContractId = companyContractId
+//		contractPermission.ChartPermissionId = v
+//		contractPermission.StartDate = item.StartDate
+//		contractPermission.EndDate = item.EndDate
+//		contractPermission.ModifyTime = time.Now()
+//		contractPermission.CreateTime = time.Now()
+//		err = AddCompanyContractPermission(contractPermission)
+//		if err != nil {
+//			return
+//		}
+//		//新增日志
+//		{
+//			itemLog := new(CompanyContractPermissionLog)
+//			itemLog.CompanyId = item.CompanyId
+//			itemLog.CompanyContractId = companyContractId
+//			itemLog.ChartPermissionId = v
+//			itemLog.StartDate = item.StartDate
+//			itemLog.EndDate = item.EndDate
+//			itemLog.ModifyTime = time.Now()
+//			itemLog.CreateTime = time.Now()
+//			itemLog.LogCreateTime = time.Now()
+//			go AddCompanyContractPermissionLog(itemLog)
+//		}
+//	}
+//
+//	sql = `UPDATE company_approval SET approve_status = '待审批',modify_time=NOW() WHERE company_approval_id = ? `
+//	_, err = o.Raw(sql, item.CompanyApprovalId).Exec()
+//	if err != nil {
+//		return
+//	}
+//	sql = `UPDATE company_product SET approve_status='待审批' WHERE company_id=? AND product_id=? `
+//	_, err = o.Raw(sql, item.CompanyId, productId).Exec()
+//	return
+//}
+//
+////修改申请信息
+//func ModifyCompanyApplyServiceUpdate(item *CompanyApplyServiceUpdateReq, productId, companyContractId int) (err error) {
+//	o := orm.NewOrm()
+//	o.Begin()
+//	defer func() {
+//		if err != nil {
+//			o.Rollback()
+//		} else {
+//			o.Commit()
+//		}
+//	}()
+//	sql := `UPDATE  company_contract
+//			SET
+//			  start_date = ?,
+//			  end_date = ?,
+//			  money = ?,
+//			  pay_method = ?,
+//			  pay_channel = ?,
+//			  img_url = ?,
+//			  modify_time = NOW()
+//			WHERE company_contract_id = ? `
+//	_, err = o.Raw(sql, item.StartDate, item.EndDate, item.Money, item.PayMethod, item.PayChannel, item.ImgUrl, companyContractId).Exec()
+//	if err != nil {
+//		return
+//	}
+//
+//	sql = `DELETE FROM company_contract_permission WHERE company_contract_id = ? `
+//	_, err = o.Raw(sql, companyContractId).Exec()
+//	if err != nil {
+//		return
+//	}
+//
+//	permissionArr := strings.Split(item.PermissionIds, ",")
+//	for _, v := range permissionArr {
+//		contractPermission := new(CompanyContractPermission)
+//		contractPermission.CompanyId = item.CompanyId
+//		contractPermission.CompanyContractId = companyContractId
+//		contractPermission.ChartPermissionId = v
+//		contractPermission.StartDate = item.StartDate
+//		contractPermission.EndDate = item.EndDate
+//		contractPermission.ModifyTime = time.Now()
+//		contractPermission.CreateTime = time.Now()
+//		err = AddCompanyContractPermission(contractPermission)
+//		if err != nil {
+//			return
+//		}
+//		//新增日志
+//		{
+//			itemLog := new(CompanyContractPermissionLog)
+//			itemLog.CompanyId = item.CompanyId
+//			itemLog.CompanyContractId = companyContractId
+//			itemLog.ChartPermissionId = v
+//			itemLog.StartDate = item.StartDate
+//			itemLog.EndDate = item.EndDate
+//			itemLog.ModifyTime = time.Now()
+//			itemLog.CreateTime = time.Now()
+//			itemLog.LogCreateTime = time.Now()
+//			go AddCompanyContractPermissionLog(itemLog)
+//		}
+//	}
+//
+//	sql = `UPDATE company_approval SET approve_status = '待审批',modify_time=NOW() WHERE company_approval_id = ? `
+//	_, err = o.Raw(sql, item.CompanyApprovalId).Exec()
+//	if err != nil {
+//		return
+//	}
+//	sql = `UPDATE company_product SET approve_status='待审批' WHERE company_id=? AND product_id=? `
+//	_, err = o.Raw(sql, item.CompanyId, productId).Exec()
+//	return
+//}
+
+func GetCompanyApprovalCount(companyId, productId int) (count int, err error) {
+	sql := `SELECT COUNT(1) AS count FROM company_approval WHERE company_id=? AND product_id=? AND  approve_content='试用延期' `
+	o := orm.NewOrm()
+	err = o.Raw(sql, companyId, productId).QueryRow(&count)
+	return
+}

+ 62 - 0
models/tables/company_delay_permission/company_delay_permission.go

@@ -0,0 +1,62 @@
+package company_delay_permission
+
+import (
+	"rdluck_tools/orm"
+	"time"
+)
+
+type CompanyDelayPermission struct {
+	Id                int       `orm:"column(id);pk"`
+	CompanyId         int       `description:"客户id"`
+	CompanyApplyId    int       `description:"申请id"`
+	ChartPermissionId int       `description:"权限id"`
+	StartDate         string    `description:"开始日期"`
+	EndDate           string    `description:"结束日期"`
+	CreateTime        time.Time `description:"创建时间"`
+	ModifyTime        time.Time `description:"修改时间"`
+}
+
+//新增客户合同
+func AddCompanyDelayPermission(item *CompanyDelayPermission) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	return
+}
+
+func ModifyCompanyDelayPermission(companyId, companyApplyId, chartPermissionId int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE company_delay_permission SET end_date=DATE_FORMAT(DATE_ADD(end_date, INTERVAL 2 MONTH),'%Y-%m-%d') WHERE company_id=? AND company_apply_id=? AND chart_permission_id=? `
+	_, err = o.Raw(sql, companyId, companyApplyId, chartPermissionId).Exec()
+	return
+}
+
+func GetDelayPermissionCount(companyId, companyApplyId, chartPermissionId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count FROM company_delay_permission WHERE company_id=? AND company_apply_id=? AND chart_permission_id=? `
+	err = o.Raw(sql, companyId, companyApplyId, chartPermissionId).QueryRow(&count)
+	return
+}
+
+func GetApplyDelayPermission(companyApplyId int) (delay_permission string, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT GROUP_CONCAT(DISTINCT b.permission_name  SEPARATOR ' ') AS delay_permission FROM company_delay_permission AS a
+			INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
+			WHERE company_apply_id=? `
+	err = o.Raw(sql, companyApplyId).QueryRow(&delay_permission)
+	return
+}
+
+func GetDelayPermissionItems(companyId, companyApplyId int) (items []*CompanyDelayPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM company_delay_permission WHERE company_id=? AND company_apply_id=?  `
+	_, err = o.Raw(sql, companyId, companyApplyId).QueryRows(&items)
+	return
+}
+
+//根据合同id删除对应的权限
+func DeleteCompanyDelayPermission(companyApplyId int) (err error) {
+	o := orm.NewOrm()
+	sql := `DELETE FROM company_delay_permission WHERE company_apply_id=? `
+	_, err = o.Raw(sql, companyApplyId).Exec()
+	return
+}

+ 26 - 0
models/tables/company_permission_log/company_permission_log.go

@@ -0,0 +1,26 @@
+package company_permission_log
+
+import (
+	"rdluck_tools/orm"
+	"time"
+)
+
+type CompanyPermissionLog struct {
+	Id                int `orm:"column(id);pk"`
+	CompanyId         int
+	ChartPermissionId int
+	CreateTime        time.Time
+	SysUserId         int
+	SysUserName       string
+	StartDate         string
+	EndDate           string
+	ProductId         int
+	ProductName       string
+}
+
+//新增客户权限日志
+func AddCompanyPermissionLog(item *CompanyPermissionLog) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	return
+}

+ 66 - 0
models/tables/company_report_permission/company_report_permission.go

@@ -0,0 +1,66 @@
+package company_report_permission
+
+import (
+	"rdluck_tools/orm"
+	"time"
+)
+
+type CompanyReportPermission struct {
+	CompanyReportPermissionId int64 `orm:"column(company_report_permission_id);pk"`
+	CompanyId                 int
+	ReportPermissionId        int
+	CreatedTime               time.Time
+	LastUpdatedTime           time.Time
+	ChartPermissionId         int
+	StartDate                 string    `description:"权限开始日期"`
+	EndDate                   string    `description:"权限结束日期"`
+	ProductId                 int       `description:"产品id"`
+	ProductName               string    `description:"产品名称"`
+	CompanyContractId         int       `description:"合同id"`
+	Status                    string    `description:"'正式','试用','关闭'"`
+	ModifyTime                time.Time `description:"修改时间"`
+}
+
+func GetCompanyReportPermissionCount(companyId, productId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count FROM company_report_permission WHERE company_id=? AND product_id=? `
+	err = o.Raw(sql, companyId, productId).QueryRow(&count)
+	return
+}
+
+func DeleteCompanyReportPermission(companyId, productId int) (err error) {
+	o := orm.NewOrm()
+	sql := ` DELETE FROM company_report_permission WHERE company_id=? AND product_id=? `
+	_, err = o.Raw(sql, companyId, productId).Exec()
+	return
+}
+
+type PermissionLookList struct {
+	ClassifyName string `description:"分类"`
+	Items        []*PermissionLookItem
+	CheckList    []int
+}
+
+type PermissionLookItem struct {
+	ChartPermissionId int    `description:"权限id"`
+	PermissionName    string `description:"权限名称"`
+	StartDate         string `description:"权限开始日期"`
+	EndDate           string `description:"权限结束日期"`
+	Status            string `description:"'正式','试用','关闭'"`
+	ExpireDay         string `description:"到期天数"`
+	ClassifyName      string `description:"分类"`
+}
+
+func GetCompanyPermissionCheck(companyId, permissionId int) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) AS count FROM company_report_permission AS a WHERE a.company_id=? AND a.chart_permission_id=? `
+	err = o.Raw(sql, companyId, permissionId).QueryRow(&count)
+	return
+}
+
+func GetCompanyPermissionCheckItem(companyId, permissionId int) (item *PermissionLookItem, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM company_report_permission AS a WHERE a.company_id=? AND a.chart_permission_id=? `
+	err = o.Raw(sql, companyId, permissionId).QueryRow(&item)
+	return
+}

+ 6 - 6
models/tables/h5_admin_session/h5_admin_session.go

@@ -7,12 +7,12 @@ import (
 
 type H5AdminSession struct {
 	SessionId       int       `orm:"column(session_id);pk";json:"session_id"`
-	AdminId         int       `orm:"admin_id" json:"admin_id"` // 后台管理员id
-	OpenId          string    `orm:"open_id" json:"open_id"`   // 第三方openid(微信等)
-	AccessToken     string    `orm:"access_token" json:"access_token"`
-	ExpireTime      time.Time `orm:"expire_time" json:"expire_time"`   // 过期时间
-	CreatedTime     time.Time `orm:"created_time" json:"created_time"` // 创建时间
-	LastUpdatedTime time.Time `orm:"last_updated_time" json:"last_updated_time"`
+	AdminId         int       `orm:"column(admin_id);" json:"admin_id"` // 后台管理员id
+	OpenId          string    `orm:"column(open_id);" json:"open_id"`   // 第三方openid(微信等)
+	AccessToken     string    `orm:"column(access_token);" json:"access_token"`
+	ExpireTime      time.Time `orm:"column(expire_time);" json:"expire_time"`   // 过期时间
+	CreatedTime     time.Time `orm:"column(created_time);" json:"created_time"` // 创建时间
+	LastUpdatedTime time.Time `orm:"column(last_updated_time);" json:"last_updated_time"`
 }
 
 func GetSessionByToken(token string) (item *H5AdminSession, err error) {

+ 2 - 2
utils/config.go

@@ -23,7 +23,7 @@ var (
 
 func init() {
 	RunMode = beego.AppConfig.String("run_mode")
-	fmt.Println(RunMode)
+	fmt.Println(RunMode, "模式")
 	config, err := beego.AppConfig.GetSection(RunMode)
 	if err != nil {
 		panic("配置文件读取错误 " + err.Error())
@@ -47,7 +47,7 @@ func init() {
 		WxPlatform = 1
 	}
 
-	InitDb()
+	//InitDb()
 }
 
 //http://webapi.brilliantstart.cn/api/

+ 13 - 0
utils/constants.go

@@ -29,6 +29,19 @@ const (
 	RegularEmail  = `\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*`                                             //匹配电子邮箱
 )
 
+//客户状态
+const (
+	COMPANY_STATUS_TRY_OUT       = "试用"
+	COMPANY_STATUS_FOREVER       = "永续"
+	COMPANY_STATUS_FREEZE        = "冻结"
+	COMPANY_STATUS_LOSE          = "流失"
+	COMPANY_STATUS_FORMAL        = "正式"
+	COMPANY_STATUS_POTENTIAL     = "潜在"
+	COMPANY_STATUS_TRY_OUT_COUNT = 30
+
+	COMPANY_APPROVE_STATUS = "待审批"
+)
+
 //管理员,ficc管理员,ficc销售,权益管理员,权益销售。
 //角色类型/类型编码
 const (

+ 0 - 29
utils/init_db.go

@@ -1,29 +0,0 @@
-package utils
-
-import (
-	_ "github.com/go-sql-driver/mysql"
-	"hongze/hongze_mobile_admin/models/tables/admin"
-	"hongze/hongze_mobile_admin/models/tables/admin_record"
-	"hongze/hongze_mobile_admin/models/tables/h5_admin_session"
-	"hongze/hongze_mobile_admin/models/tables/wx_token"
-	"rdluck_tools/orm"
-	"time"
-)
-
-func InitDb() {
-	_ = orm.RegisterDataBase("default", "mysql", MYSQL_URL)
-	orm.SetMaxIdleConns("default", 50)
-	orm.SetMaxOpenConns("default", 100)
-
-	db, _ := orm.GetDB("default")
-	db.SetConnMaxLifetime(10 * time.Minute)
-
-	//注册对象
-	orm.RegisterModel(
-		//new(UserTrialApply),
-		new(admin.Admin),
-		new(admin_record.AdminRecord),
-		new(h5_admin_session.H5AdminSession),
-		new(wx_token.WxToken),
-	)
-}