添加企业微信创建群数据
This commit is contained in:
165
business/enterprise_session/create_session.go
Normal file
165
business/enterprise_session/create_session.go
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
package enterprise_session
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
enterprise "git.rosy.net.cn/baseapi/platformapi/enterprise_wechat"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/auth2"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/authz"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/authz/autils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CreateSession struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建老板的业务群
|
||||||
|
func (c *CreateSession) CreateBossToStaffAndCreateSession(token string, storeId int) (map[string]interface{}, error) {
|
||||||
|
// 获取老本的电话和门店信息
|
||||||
|
authInfo, err := auth2.GetTokenInfo(token)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
store, err := dao.GetStoreDetail2(dao.GetDB(), storeId, "", 0)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if store.Tel1 != authInfo.Mobile || store.Tel1 == "" {
|
||||||
|
return nil, errors.New("不是门店老板,不创建群聊")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测用户是否存在
|
||||||
|
if _, err := CheckUserExist(store); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取创建群聊所需基础人员id
|
||||||
|
enterpriseIdList, err := CheckBoosGroupChat(store)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
result := make(map[string]interface{}, 0)
|
||||||
|
result["enterpriseIdList"] = enterpriseIdList
|
||||||
|
result["chatName"] = "京西菜市" + store.Name + "群"
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测用户是否存在
|
||||||
|
func CheckUserExist(store *dao.StoreDetail2) (string, error) {
|
||||||
|
enterpriseUserId, err := api.EnterpriseChatHeadApi.GetUserIdByMobile(store.Tel1)
|
||||||
|
if strings.Contains(fmt.Sprintf("%v", err), "user no exist") || strings.Contains(fmt.Sprintf("%v", err), "46004") {
|
||||||
|
boss := &enterprise.CreateBoos2JXStaffReq{
|
||||||
|
Userid: store.Tel1 + "_" + strconv.Itoa(store.ID),
|
||||||
|
Name: store.LicenceOwnerName,
|
||||||
|
Alias: "",
|
||||||
|
Mobile: store.Tel1,
|
||||||
|
Department: nil, // 四川省
|
||||||
|
Order: nil,
|
||||||
|
Gender: "1",
|
||||||
|
Email: "",
|
||||||
|
IsLeaderInDept: nil,
|
||||||
|
Enable: 0,
|
||||||
|
AvatarMediaid: "",
|
||||||
|
Telephone: "",
|
||||||
|
Address: store.Address,
|
||||||
|
Extattr: enterprise.Extattr{},
|
||||||
|
MainDepartment: 0,
|
||||||
|
ToInvite: true,
|
||||||
|
ExternalPosition: "",
|
||||||
|
ExternalProfile: enterprise.ExternalProfile{},
|
||||||
|
}
|
||||||
|
if boss.Name == "" {
|
||||||
|
boss.Name = store.Name + "(老板名称不存在)"
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询本门店所属省code
|
||||||
|
parentCityName := ""
|
||||||
|
for {
|
||||||
|
place, err := dao.GetPlaceByCode(dao.GetDB(), store.CityCode)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if place.Level != model.YES && place.ParentCode != 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
parentCityName = place.Name
|
||||||
|
break
|
||||||
|
}
|
||||||
|
// 查询企业微信所有省份部门分类
|
||||||
|
departmentList, err := api.EnterpriseChatHeadApi.GetAllDepartmentList()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
for _, v := range departmentList {
|
||||||
|
if !strings.Contains(v.Name, parentCityName[:6]) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
boss.Department = []int{v.ID}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建老板为京西员工,并存放在对应的省份里面
|
||||||
|
if err := api.EnterpriseChatHeadApi.CreateBoss2JxStaff(boss); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
enterpriseUserId = boss.Userid
|
||||||
|
}
|
||||||
|
|
||||||
|
return enterpriseUserId, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取当前门店企业内部人员信息
|
||||||
|
func CheckBoosGroupChat(store *dao.StoreDetail2) ([]string, error) {
|
||||||
|
// 获取门店角色
|
||||||
|
roleNames := []string{"StoreBoss"}
|
||||||
|
storeIDs := []int{store.ID}
|
||||||
|
var roleList []*authz.RoleInfo
|
||||||
|
for _, roleName := range roleNames {
|
||||||
|
if roleName == authz.StoreRoleBoss {
|
||||||
|
for _, storeID := range storeIDs {
|
||||||
|
roleList = append(roleList, autils.NewRole(roleName, storeID))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
roleList = append(roleList, autils.NewRole(roleName, 0))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
retVal, err := cms.GetRolesUserList(nil, roleList)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取角色系统userId
|
||||||
|
systemUserId := make([]string, 0, 0)
|
||||||
|
for _, v := range retVal {
|
||||||
|
if len(v) == 0 {
|
||||||
|
return nil, errors.New("门店负责人为空,数据异常.联系管理员")
|
||||||
|
}
|
||||||
|
systemUserId = append(systemUserId, v...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据userId获取系统用户电话号码
|
||||||
|
userList, _, err := dao.GetUsers(dao.GetDB(), 0, "", systemUserId, nil, nil, 0, 50)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
enterpriseList := make([]string, 0, 0)
|
||||||
|
// 获取用户企业微信用户id
|
||||||
|
for _, v := range userList {
|
||||||
|
enterpriseId, err := api.EnterpriseChatHeadApi.GetUserIdByMobile(*v.Mobile)
|
||||||
|
if err != nil {
|
||||||
|
globals.SugarLogger.Debug("Get enterpriseId err ,maybe system mobile different with enterprise", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
enterpriseList = append(enterpriseList, enterpriseId)
|
||||||
|
}
|
||||||
|
return enterpriseList, nil
|
||||||
|
}
|
||||||
27
controllers/enterprise_session.go
Normal file
27
controllers/enterprise_session.go
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.rosy.net.cn/jx-callback/business/enterprise_session"
|
||||||
|
"github.com/astaxie/beego/server/web"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SessionController struct {
|
||||||
|
web.Controller
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建门店老板的会话群
|
||||||
|
// @Title 创建门店老板的会话群
|
||||||
|
// @Description 创建门店老板的会话群
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param storeId formData int true "门店id"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /CreateBossSession [post]
|
||||||
|
func (c *SessionController) CreateBossSession() {
|
||||||
|
c.callCreateBossSession(func(params *tSessionCreateBossSessionParams) (interface{}, string, error) {
|
||||||
|
session := enterprise_session.CreateSession{}
|
||||||
|
result, err := session.CreateBossToStaffAndCreateSession(params.Token, params.StoreId)
|
||||||
|
return result, "", err
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
enterprise "git.rosy.net.cn/baseapi/platformapi/enterprise_wechat"
|
||||||
gomei "git.rosy.net.cn/baseapi/platformapi/gome_live_show"
|
gomei "git.rosy.net.cn/baseapi/platformapi/gome_live_show"
|
||||||
"git.rosy.net.cn/baseapi/platformapi/jxprintapi"
|
"git.rosy.net.cn/baseapi/platformapi/jxprintapi"
|
||||||
"git.rosy.net.cn/baseapi/platformapi/qywxapi"
|
"git.rosy.net.cn/baseapi/platformapi/qywxapi"
|
||||||
@@ -111,8 +112,11 @@ var (
|
|||||||
Cacher cache.ICacher
|
Cacher cache.ICacher
|
||||||
SMSClient *aliyunsmsclient.SmsClient
|
SMSClient *aliyunsmsclient.SmsClient
|
||||||
|
|
||||||
TiktokApi *tiktok.API
|
TiktokApi *tiktok.API // 抖音api
|
||||||
GuoMeiApi *gomei.API
|
GuoMeiApi *gomei.API // 国美api
|
||||||
|
|
||||||
|
EnterpriseChatHeadApi *enterprise.API // 企业微信api
|
||||||
|
EnterpriseChatMin *enterprise.API // 企业微信小程序api
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -299,5 +303,6 @@ func Init() {
|
|||||||
TiktokApi = tiktok.New(beego.AppConfig.DefaultString("tiktokAppSecret", ""), beego.AppConfig.DefaultString("tiktokAppKey", ""))
|
TiktokApi = tiktok.New(beego.AppConfig.DefaultString("tiktokAppSecret", ""), beego.AppConfig.DefaultString("tiktokAppKey", ""))
|
||||||
// 国美aip
|
// 国美aip
|
||||||
GuoMeiApi = gomei.New(beego.AppConfig.DefaultString("gomeiAppKey", ""), beego.AppConfig.DefaultString("gomeiAppSecret", ""), "")
|
GuoMeiApi = gomei.New(beego.AppConfig.DefaultString("gomeiAppKey", ""), beego.AppConfig.DefaultString("gomeiAppSecret", ""), "")
|
||||||
|
EnterpriseChatHeadApi = enterprise.New("ww9a156bfa070e1857", "0jBdCjSmoFiOoHIXyeCK9VbGQ82fVNJZ8uMl6JNN7X4") // 通讯录
|
||||||
|
EnterpriseChatMin = enterprise.NewMin("ww9a156bfa070e1857", "JQsEmSTltHhNgdPIT320YJFphiYmRs-YZa-rCBwplss") // 小程序
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4025,6 +4025,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
// 创建会话,客户群
|
||||||
|
web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SessionController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SessionController"],
|
||||||
|
web.ControllerComments{
|
||||||
|
Method: "CreateBossSession",
|
||||||
|
Router: `/CreateBossSession`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
//web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:FnController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:FnController"],
|
//web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:FnController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:FnController"],
|
||||||
// web.ControllerComments{
|
// web.ControllerComments{
|
||||||
// Method: "FnStore",
|
// Method: "FnStore",
|
||||||
|
|||||||
@@ -156,6 +156,11 @@ func init() {
|
|||||||
&controllers.BiddingController{},
|
&controllers.BiddingController{},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
web.NSNamespace("/session",
|
||||||
|
web.NSInclude(
|
||||||
|
&controllers.SessionController{},
|
||||||
|
),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
web.AddNamespace(ns)
|
web.AddNamespace(ns)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user