Browse Source

路演FICC销售列表

hsun 1 year ago
parent
commit
44f815e73f

+ 128 - 0
controllers/company_seller.go

@@ -0,0 +1,128 @@
+package controllers
+
+import (
+	"fmt"
+	"hongze/hongze_mobile_admin/models/tables/system"
+	"hongze/hongze_mobile_admin/services"
+	"hongze/hongze_mobile_admin/utils"
+)
+
+// CompanySellerController 销售管理
+type CompanySellerController struct {
+	BaseAuth
+}
+
+// RoadshowFiccList
+// @Title 路演FICC销售列表
+// @Description 路演FICC销售列表
+// @Success 200 {object} system.RoadshowGroupResp
+// @router /seller/roadshow_ficc/list [get]
+func (c *CompanySellerController) RoadshowFiccList() {
+	sysUser := c.AdminWx
+
+	resp := new(system.RoadshowGroupResp)
+	productId := services.GetProductId(sysUser.RoleTypeCode)
+	if productId == utils.COMPANY_PRODUCT_RAI_ID {
+		c.OkDetailed(resp, "获取成功")
+		return
+	}
+
+	// 分组
+	departmentId := 2
+	groups, e := system.GetGroupByDepartmentId(departmentId)
+	if e != nil {
+		c.FailWithMessage("获取失败", "获取FICC分组失败, Err: "+e.Error())
+		return
+	}
+	teamGroupId := make(map[int]int, 0) // 小组ID对应的大组ID
+	var list []system.RoadshowGroups
+	for _, g := range groups {
+		if g.ParentId > 0 {
+			teamGroupId[g.GroupId] = g.ParentId
+			continue
+		}
+
+		// 大组
+		list = append(list, system.RoadshowGroups{
+			GroupId:   g.GroupId,
+			GroupName: g.GroupName,
+		})
+	}
+
+	// 销售
+	roleArr := []string{
+		utils.ROLE_TYPE_CODE_FICC_ADMIN, utils.ROLE_TYPE_CODE_FICC_DEPARTMENT, utils.ROLE_TYPE_CODE_FICC_GROUP,
+		utils.ROLE_TYPE_CODE_FICC_TEAM, utils.ROLE_TYPE_CODE_FICC_SELLER,
+	}
+	cond := fmt.Sprintf(` AND role_type_code IN (%s)`, utils.GetOrmInReplace(len(roleArr)))
+	pars := make([]interface{}, 0)
+	pars = append(pars, roleArr)
+	sellers, e := system.GetSysUserItemsOrderByCreated(cond, pars)
+	if e != nil {
+		c.FailWithMessage("获取失败", "获取FICC销售失败, Err: "+e.Error())
+		return
+	}
+
+	groupIdChild := make(map[int][]system.RoadshowGroupSellers) // 大组ID对应的销售
+	for _, s := range sellers {
+		var seller system.RoadshowGroupSellers
+		seller.AdminId = s.AdminId
+		seller.AdminName = s.RealName
+
+		gid := teamGroupId[s.GroupId]
+		if gid > 0 {
+			// 小组
+			seller.GroupId = gid
+			seller.TeamId = s.GroupId
+		} else {
+			// 大组
+			seller.GroupId = s.GroupId
+		}
+		groupIdChild[seller.GroupId] = append(groupIdChild[seller.GroupId], seller)
+	}
+
+	// 根据当前角色过滤可选项
+
+	for _, v := range list {
+		// 如果是销售、组长、主管, 那么过滤掉自己大组外的其他组
+		if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER {
+			if sysUser.GroupId != v.GroupId && teamGroupId[sysUser.GroupId] != v.GroupId {
+				continue
+			}
+		}
+		child := groupIdChild[v.GroupId]
+
+		// 如果是小组长, 那么只能看到自己小组的信息
+		if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM {
+			var team []system.RoadshowGroupSellers
+			for _, c := range child {
+				if c.TeamId == sysUser.GroupId {
+					team = append(team, c)
+				}
+			}
+			v.Child = team
+			resp.List = append(resp.List, v)
+			continue
+		}
+
+		// 如果是普通销售, 那么只能看到分组中的自己
+		if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER {
+			var self []system.RoadshowGroupSellers
+			for _, c := range child {
+				if c.AdminId == sysUser.AdminId {
+					self = append(self, c)
+					break
+				}
+			}
+			v.Child = self
+			resp.List = append(resp.List, v)
+			continue
+		}
+
+		// 非以上两种情况, 可见该大组所有销售
+		v.Child = child
+		resp.List = append(resp.List, v)
+	}
+
+	c.OkDetailed(resp, "获取成功")
+}

+ 11 - 0
models/tables/system/sys_admin.go

@@ -146,3 +146,14 @@ type ResearcherAdminAndUser struct {
 	AdminName string `description:"管理员姓名"`
 	OpenId    string `description:"openid"`
 }
+
+func GetSysUserItemsOrderByCreated(condition string, pars []interface{}) (items []*AdminItem, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM admin WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` ORDER BY created_time DESC `
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 35 - 0
models/tables/system/sys_group.go

@@ -65,3 +65,38 @@ LEFT JOIN sys_department d on s.department_id=d.department_id`
 	_, err = o.Raw(sql).QueryRows(&list)
 	return
 }
+
+func GetGroupByDepartmentId(departmentId int) (list []*SysFullGroup, err error) {
+	sql := `SELECT
+				s.*, g.group_name AS parent_group_name,
+				d.department_name
+			FROM
+				sys_group s
+			LEFT JOIN sys_group g ON s.parent_id = g.group_id
+			LEFT JOIN sys_department d ON s.department_id = d.department_id
+			WHERE
+				s.department_id = ?
+			ORDER BY
+				s.sort ASC,
+				s.create_time ASC`
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, departmentId).QueryRows(&list)
+	return
+}
+
+type RoadshowGroupResp struct {
+	List []RoadshowGroups
+}
+
+type RoadshowGroups struct {
+	GroupId   int                    `description:"分组ID"`
+	GroupName string                 `description:"分组名称"`
+	Child     []RoadshowGroupSellers `description:"销售"`
+}
+
+type RoadshowGroupSellers struct {
+	GroupId   int    `description:"大组ID"`
+	TeamId    int    `description:"小组ID"`
+	AdminId   int    `description:"销售ID"`
+	AdminName string `description:"销售名称"`
+}

+ 9 - 0
routers/commentsRouter.go

@@ -493,6 +493,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_mobile_admin/controllers:CompanySellerController"] = append(beego.GlobalControllerRouter["hongze/hongze_mobile_admin/controllers:CompanySellerController"],
+        beego.ControllerComments{
+            Method: "RoadshowFiccList",
+            Router: `/seller/roadshow_ficc/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_mobile_admin/controllers:ContractApprovalCommon"] = append(beego.GlobalControllerRouter["hongze/hongze_mobile_admin/controllers:ContractApprovalCommon"],
         beego.ControllerComments{
             Method: "Approved",

+ 5 - 0
routers/router.go

@@ -109,6 +109,11 @@ func init() {
 				&controllers.SystemCommon{},
 			),
 		),
+		web.NSNamespace("/custom",
+			web.NSInclude(
+				&controllers.CompanySellerController{},
+			),
+		),
 	)
 	web.AddNamespace(ns)
 }