package sysuser

import (
	"errors"
	"wechat-conf/models/model"
	"wechat-conf/models/sysuser"
	"wechat-conf/service"
	"wechat-conf/utils"
)

// SysuserServ 用户
type SysuserServ struct {
	ctx *utils.Context
	dao *sysuser.SysuserDAO
}

// NewSysuserServ 初始化
func NewSysuserServ(ctx *utils.Context) *SysuserServ {
	return &SysuserServ{
		ctx: ctx,
		dao: sysuser.NewSysuserDAO(ctx),
	}
}

func (s *SysuserServ) GetSysuserList(page, pageSize int) (map[string]interface{}, error) {
	if pageSize == 0 {
		pageSize = service.PAGENUM
	}
	sysuser, err := s.dao.GetSysuserList(page, pageSize)
	if err != nil {
		utils.LogError("获取用户列表失败: " + err.Error())
		return nil, errors.New("获取用户列表失败")
	}
	total, err := s.dao.GetSysuserListCount()
	if err != nil {
		utils.LogError("获取用户列表失败: " + err.Error())
		return nil, errors.New("获取用户列表失败")
	}
	return map[string]interface{}{
		"list":     sysuser,
		"pageSize": pageSize,
		"pagenum":  total,
		"page":     page,
	}, nil
}
func (s *SysuserServ) GetSysuserById(userId string) (*model.SysUser, error) {
	user, err := s.dao.GetSysuserById(userId)
	if err != nil {
		utils.LogError("获取用户详情失败: " + err.Error())
		return nil, errors.New("获取用户详情失败")
	}
	return user, nil
}
func (s *SysuserServ) SaveUser(user model.SysUser) (*model.SysUser, error) {
	var newUser *model.SysUser
	var err error
	if user.UserId == "" {
		newUser, err = s.dao.AddUser(user)
	} else {
		err = s.dao.EditUser(user)
		newUser = &user
	}
	if err != nil {
		utils.LogError("保存用户详情失败: " + err.Error())
		return nil, errors.New("保存用户详情失败")
	}
	return newUser, nil
}
func (s *SysuserServ) DeleteUser(userId string) error {
	err := s.dao.DeleteUser(userId)
	if err != nil {
		utils.LogError("删除用户失败: " + err.Error())
		return errors.New("删除用户失败")
	}
	return nil
}
func (s *SysuserServ) GetAppIdByOrgId(orgId string) (string, error) {
	appId, err := s.dao.GetAppIdByOrgId(orgId)
	if err != nil {
		utils.LogError("获取APPID失败: " + err.Error())
		return "", errors.New("获取APPID失败")
	}
	return appId, nil
}