package sysorg import ( "errors" "time" "wechat-conf/models" "wechat-conf/models/model" "wechat-conf/models/sysorg" "wechat-conf/models/sysuser" "wechat-conf/models/wechat" "wechat-conf/models/wechatmenu" "wechat-conf/service" "wechat-conf/utils" ) // SysorgServ 用户 type SysorgServ struct { ctx *utils.Context dao *sysorg.SysorgDAO mdao *wechatmenu.WechatMenuDAO wechatdao *wechat.WechatDAO userdao *sysuser.SysuserDAO } // NewSysorgServ 初始化 func NewSysorgServ(ctx *utils.Context) *SysorgServ { return &SysorgServ{ ctx: ctx, dao: sysorg.NewSysorgDAO(ctx), mdao: wechatmenu.NewWechatMenuDAO(ctx), wechatdao: wechat.NewWechatDAO(ctx), userdao: sysuser.NewSysuserDAO(ctx), } } func (s *SysorgServ) GetOrgList(page, pageSize int) (map[string]interface{}, error) { if pageSize == 0 { pageSize = service.PAGENUM } org, err := s.dao.GetOrgList(page, pageSize) if err != nil { utils.LogError("获取项目列表失败: " + err.Error()) return nil, errors.New("获取项目列表失败") } total, err := s.dao.GetOrgListCount() if err != nil { utils.LogError("获取项目列表失败: " + err.Error()) return nil, errors.New("获取项目列表失败") } return map[string]interface{}{ "list": org, "pageSize": pageSize, "pagenum": total, "page": page, }, nil } func (s *SysorgServ) AddOrg(org model.SysOrg) (*model.SysOrg, error) { newOrg, err := s.dao.AddOrg(org) if err != nil { utils.LogError("新增项目失败: " + err.Error()) return nil, errors.New("新增项目失败") } var wechatmenu = model.TaWechatMenu{ OrgId: newOrg.OrgId, WechatConfigJson: "", } _, err = s.mdao.AddWechatMenu(wechatmenu) if err != nil { utils.LogError("新增项目失败: " + err.Error()) return nil, errors.New("新增项目失败") } return newOrg, nil } func (s *SysorgServ) AuthOrg(org model.SysOrg) error { err := s.dao.AuthOrg(org) if err != nil { utils.LogError("授权项目失败: " + err.Error()) return errors.New("授权项目失败") } return nil } func (s *SysorgServ) DeleteOrg(orgId string) error { var err error var user *model.SysUser user, err = s.userdao.GetSysuserByOrgId(orgId) if err != nil { utils.LogError("删除项目失败: " + err.Error()) return errors.New("删除项目失败") } if user != nil { return errors.New("当前项目已被用户绑定,请先进行解绑操作") } err = s.dao.DeleteOrg(orgId) if err != nil { utils.LogError("删除项目失败: " + err.Error()) return errors.New("删除项目失败") } return nil } // BindWechat 绑定微信 func (s *SysorgServ) BindWechat(orgid, confid string) error { wechatConf, err := s.wechatdao.GetWechatConfByConfId(confid) if err != nil { return err } if wechatConf == nil && wechatConf.Appid == "" { return errors.New("没有获取到微信信息") } var orginfo = model.SysOrg{ OrgId: orgid, WechatId: wechatConf.ConfId, WechatName: wechatConf.WxNikeName, } err = s.dao.AuthOrg(orginfo) if err != nil { return err } // 更新微信信息 var conf = model.SysWechatConf{ BindDate: time.Now().Local(), Status: models.STATUS_NORMAL, ConfId: wechatConf.ConfId, } err = s.wechatdao.UpdateWechatConf(conf, []string{ "bind_date", "status", }) return err }