company.go 9.3 KB
package controllers

import (
	"encoding/json"
	"oppmg/common/log"
	"oppmg/protocol"
	servecompany "oppmg/services/company"
	"oppmg/storage/redisdata"
	"oppmg/utils"
	"strconv"
	"strings"
)

type CompanyController struct {
	BaseController
}

//URLMapping 实现ControllerInterface中的URLMapping
func (c *CompanyController) URLMapping() {
	//c.Mapping("AccessToken", c.AccessToken)
}

// DepartmentList 部门列表
// @router /department [post]
func (c *CompanyController) DepartmentList() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()
	companyid := c.GetCompanyId()
	if companyid <= 0 {
		msg = protocol.BadRequestParam("1")
		return
	}
	departs, err := servecompany.DepartmentListAll(companyid)
	listdata := protocol.ResponseDepartmentList{
		List: departs,
	}
	msg = protocol.NewReturnResponse(listdata, err)
}

// DepartmentUser 部门下的人员
// @router /department/user [get]
func (c *CompanyController) DepartmentUser() {
	log.Debug("DepartmentOne param:%v", c.Ctx.Input.Param(":id"))
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()
	var (
		param string
		id    int64
		err   error
	)
	param = c.Ctx.Input.Param(":id")
	id, err = strconv.ParseInt(param, 10, 64)
	if err != nil {
		msg = protocol.BadRequestParam("1")
		return
	}
	if id <= 0 {
		msg = protocol.BadRequestParam("1")
		return
	}
	msg = protocol.NewReturnResponse(nil, nil)
}

// DepartmentAdd 添加部门
// @router /department/add [post]
func (c *CompanyController) DepartmentAdd() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()
	var param protocol.RequestDepartmentAdd
	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
		log.Error("json 解析失败 err:%s", err)
		msg = protocol.BadRequestParam("1")
		return
	}
	s := []rune(param.Name)
	if len(s) == 0 {
		msg = protocol.BadRequestParam("10044")
		return
	}
	if len(s) > 20 {
		msg = protocol.BadRequestParam("10043")
		return
	}
	if param.ParentID <= 0 {
		msg = protocol.BadRequestParam("10042")
		return
	}
	if param.ParentID == 0 {
		//部门必定有上级部门 ,至少是公司一级
		msg = protocol.BadRequestParam("10042")
		return
	}
	param.CompanyID = c.GetCompanyId()
	if param.CompanyID <= 0 {
		log.Error("param.CompanyID <= 0")
		msg = protocol.BadRequestParam("1")
		return
	}
	result, err := servecompany.DepartmentAdd(param)
	msg = protocol.NewReturnResponse(result, err)
	return
}

// DepartmentUpdate 更新部门
// @router /department/edit [post]
func (c *CompanyController) DepartmentUpdate() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()

	var param protocol.RequestDepartmentEdit
	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
		log.Error("json 解析失败 err:%s", err)
		msg = protocol.BadRequestParam("1")
		return
	}
	s := []rune(param.Name)
	if len(s) == 0 {
		msg = protocol.BadRequestParam("10044")
		return
	}
	if len(s) > 20 {
		msg = protocol.BadRequestParam("10043")
		return
	}
	param.CompanyID = c.GetCompanyId()
	if param.ID <= 0 {
		log.Error(" param.ID <= 0 ")
		msg = protocol.BadRequestParam("1")
		return
	}
	err := servecompany.DepartmentEdit(param)
	msg = protocol.NewReturnResponse(nil, err)
	return
}

// DepartmentUpdate 删除部门
// @router /department/delete [post]
func (c *CompanyController) DepartmentDelete() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()

	var param protocol.RequestDepartmentDelete
	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
		log.Error("json 解析失败 err:%s", err)
		msg = protocol.BadRequestParam("1")
		return
	}
	param.CompanyID = c.GetCompanyId()
	err := servecompany.DepartmentDelete(param)
	msg = protocol.NewReturnResponse(nil, err)
	return
}

// PositionAdd 添加职位
// @router /position/add [post]
func (c *CompanyController) PositionAdd() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()
	var param protocol.RequestPositionAdd
	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
		log.Error("json 解析失败 err:%s", err)
		msg = protocol.BadRequestParam("1")
		return
	}

	param.CompanyID = c.GetCompanyId()
	positioninfo, err := servecompany.PositionAdd(param)
	msg = protocol.NewReturnResponse(positioninfo, err)
	return
}

// PositionEdit 编辑职位
// @router /position/edit [post]
func (c *CompanyController) PositionEdit() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()
	var param protocol.RequestPositionEdit
	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
		log.Error("json 解析失败 err:%s", err)
		msg = protocol.BadRequestParam("1")
		return
	}
	param.CompanyID = c.GetCompanyId()
	positioninfo, err := servecompany.PositionEdit(param)
	msg = protocol.NewReturnResponse(positioninfo, err)
	return
}

// PositionDelete 删除职位
// @router /position/delete [post]
func (c *CompanyController) PositionDelete() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()
	var param protocol.RequestPositionDelete
	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
		log.Error("json 解析失败 err:%s", err)
		msg = protocol.BadRequestParam("1")
		return
	}
	param.CompanyID = c.GetCompanyId()
	err := servecompany.PositionDelete(param)
	msg = protocol.NewReturnResponse(nil, err)
	return
}

// PositionList 获取职位列表
// @router /position [get]
func (c *CompanyController) PositionList() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()

	var (
		err       error
		list      []protocol.ResponsePositionInfo
		companyid int64
	)

	companyid = c.GetCompanyId()
	if companyid <= 0 {
		msg = protocol.BadRequestParam("1")
		return
	}
	list, err = servecompany.GetPositionList(companyid)
	msg = protocol.NewReturnResponse(list, err)
	return
}

//UserAdd 添加用户
//@Router /user/add [post]
func (c *CompanyController) UserAdd() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()
	var param protocol.RequestUserAdd
	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
		log.Error("json 解析失败 err:%s", err)
		msg = protocol.BadRequestParam("1")
		return
	}
	name := []rune(strings.TrimSpace(param.Name))
	if len(name) == 0 {
		msg = protocol.BadRequestParam("10035")
		return
	}
	if len(name) > 10 {
		msg = protocol.BadRequestParam("10034")
		return
	}
	ok := utils.PhoneMatch.MatchString(param.Phone)
	if !ok {
		msg = protocol.BadRequestParam("10036")
		return
	}
	if len(param.Departments) == 0 {
		msg = protocol.BadRequestParam("10037")
		return
	}
	if len(param.Roles) == 0 {
		msg = protocol.BadRequestParam("10038")
		return
	}
	param.CompanyId = c.GetCompanyId()
	err := servecompany.UserAdd(param)
	msg = protocol.NewReturnResponse(nil, err)
	return
}

//UserEdit 编辑用户
//@Router /user/edit [post]
func (c *CompanyController) UserEdit() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()
	var param protocol.RequestUserEdit
	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
		log.Error("json 解析失败 err:%s", err)
		msg = protocol.BadRequestParam("1")
		return
	}
	name := []rune(strings.TrimSpace(param.Name))
	if len(name) == 0 {
		msg = protocol.BadRequestParam("10035")
		return
	}
	if len(name) > 10 {
		msg = protocol.BadRequestParam("10034")
		return
	}

	if len(param.Departments) == 0 {
		msg = protocol.BadRequestParam("10037")
		return
	}
	if len(param.Roles) == 0 {
		msg = protocol.BadRequestParam("10038")
		return
	}
	param.CompanyId = c.GetCompanyId()
	err := servecompany.UserEdit(param)
	msg = protocol.NewReturnResponse(nil, err)
	return
}

//UserDelete 删除用户
//@Router /user/delete [post]
func (c *CompanyController) UserDelete() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()
	type Parameter struct {
		Userid int64 `json:"user_id"`
	}
	var param Parameter
	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
		log.Error("json 解析失败 err:%s", err)
		msg = protocol.BadRequestParam("1")
		return
	}
	companyId := c.GetCompanyId()
	err := servecompany.UserDelete(param.Userid, companyId)
	if err == nil {
		e := redisdata.DeleteLoginToken(param.Userid)
		if e != nil {
			log.Error(e.Error())
		}
	}
	msg = protocol.NewReturnResponse(nil, err)
	return
}

//UserEdit 禁用、启用用户 TODO
//@Router /user/enable [post]
func (c *CompanyController) UserEnable() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()
	var param protocol.RequestUserEdit
	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
		log.Error("json 解析失败 err:%s", err)
		msg = protocol.BadRequestParam("1")
		return
	}

	param.CompanyId = c.GetCompanyId()
	err := servecompany.UserEdit(param)
	redisdata.DeleteLoginToken(0)
	msg = protocol.NewReturnResponse(nil, err)
	return
}

//UserEdit用户列表
//@Router /user/list [post]
func (c *CompanyController) UserList() {
	var msg *protocol.ResponseMessage
	defer func() {
		c.ResposeJson(msg)
	}()
	var param protocol.RequestUserList
	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
		log.Error("json 解析失败 err:%s", err)
		msg = protocol.BadRequestParam("1")
		return
	}

	param.Companyid = c.GetCompanyId()
	result, err := servecompany.UserList(param)
	msg = protocol.NewPageDataResponse(result, err)
	return
}

//Regist
// func