应用集成平台服务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

542 lines
12 KiB

3 years ago
package dict
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"strconv"
"time"
"github.com/gin-gonic/gin"
)
/*
*
@ 作者: 秦东
@ 时间: 2023-05-25 10:33:18
@ 功能: 字典类型列表
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) DictTypeList(c *gin.Context) {
var requestData DictType
c.ShouldBindJSON(&requestData)
if requestData.Page == 0 {
requestData.Page = 1
}
if requestData.PageSize == 0 {
requestData.PageSize = 15
}
var dictListCont []modelAppPlatform.DictType
gormDb := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.DictType{}).Where("`status` BETWEEN ? AND ?", 1, 2)
if requestData.KeyWords != "" {
gormDb.Where("`name` like ?", "%"+requestData.KeyWords+"%")
}
var total int64
totalErr := gormDb.Count(&total).Error
if totalErr != nil {
total = 0
}
gormDb = publicmethod.PageTurningSettings(gormDb, requestData.Page, requestData.PageSize)
err := gormDb.Find(&dictListCont).Error
if err != nil && len(dictListCont) < 1 {
publicmethod.Result(105, err, c)
return
}
var sendData []SendDictTypeList
for _, v := range dictListCont {
var sendCont SendDictTypeList
sendCont.Id = v.Id //
sendCont.Name = v.Name //字典类型名称"`
sendCont.Code = v.Code //字典类型编码"`
sendCont.Status = v.Status //显示状态(1:显示;2:隐藏,3:删除)"`
sendCont.Remark = v.Remark //字典类型描述"`
sendCont.Time = v.Time //创建时间"`
sendCont.CodeKey = strconv.FormatInt(v.Code, 10)
sendData = append(sendData, sendCont)
}
publicmethod.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(sendData)), sendData, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-25 11:06:39
@ 功能: 新增字典类别
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) AddDictType(c *gin.Context) {
var requestData AddNewDictType
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if requestData.Name == "" {
publicmethod.Result(1, err, c, "请输入字典类型名称!")
return
}
if requestData.Status == 0 {
requestData.Status = 1
}
var dictCont modelAppPlatform.DictType
err = dictCont.GetCont(map[string]interface{}{"`name`": requestData.Name}, "`id`")
if err == nil || dictCont.Id != 0 {
publicmethod.Result(103, err, c)
return
}
dictCont.Name = requestData.Name //字典类型名称"`
dictCont.Code = publicmethod.GetUUid(4) //字典类型编码"`
dictCont.Status = requestData.Status //显示状态(1:显示;2:隐藏,3:删除)"`
dictCont.Remark = requestData.Remark //字典类型描述"`
dictCont.Time = time.Now().Unix() //创建时间"`
err = overall.CONSTANT_DB_AppPlatform.Create(&dictCont).Error
if err != nil {
publicmethod.Result(104, err, c)
return
}
publicmethod.Result(0, err, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-25 13:07:48
@ 功能: 查看字典类型内容
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) GetDictTypeCont(c *gin.Context) {
id := c.Query("id")
if id == "" {
publicmethod.Result(1, id, c, "未知字典类型!")
return
}
var dictCont modelAppPlatform.DictType
err := dictCont.GetCont(map[string]interface{}{"`id`": id})
if err != nil {
publicmethod.Result(105, err, c)
return
}
publicmethod.Result(0, dictCont, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-25 13:21:21
@ 功能: 编辑字典类型内容
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) EditDictCont(c *gin.Context) {
var requestData EditDictTypeInfo
c.ShouldBindJSON(&requestData)
if requestData.Id == "" {
publicmethod.Result(1, requestData, c, "未知字典类型!")
return
}
if requestData.Name == "" {
publicmethod.Result(1, requestData, c, "请输入字典类型名称!")
return
}
if requestData.Status == 0 {
requestData.Status = 1
}
whery := publicmethod.MapOut[string]()
whery["`id`"] = requestData.Id
var dictTypeOldCont modelAppPlatform.DictType
err := dictTypeOldCont.GetCont(whery)
if err != nil {
publicmethod.Result(107, err, c)
return
}
editCont := publicmethod.MapOut[string]()
if requestData.Name != dictTypeOldCont.Name {
var dictTypeCont modelAppPlatform.DictType
err = dictTypeCont.GetCont(map[string]interface{}{"`name`": requestData.Name}, "`id`")
if err == nil || dictTypeCont.Id != 0 {
publicmethod.Result(103, err, c)
return
}
editCont["`name`"] = requestData.Name
}
if requestData.Status != dictTypeOldCont.Status {
editCont["`status`"] = requestData.Status
}
if requestData.Remark != dictTypeOldCont.Remark {
editCont["`remark`"] = requestData.Remark
}
if len(editCont) > 0 {
editCont["`time`"] = time.Now().Unix()
var editDictTypeCont modelAppPlatform.DictType
err := editDictTypeCont.EiteCont(whery, editCont)
if err != nil {
publicmethod.Result(106, err, c)
return
}
syncSeting.Add(1)
go EditDictContStatus(dictTypeOldCont.Id, requestData.Status)
}
syncSeting.Wait()
publicmethod.Result(0, err, c)
}
// 操作字典类型下属内容
func EditDictContStatus(typeId, status int) {
defer syncSeting.Done()
var dictCont modelAppPlatform.Dictionary
dictCont.EiteCont(map[string]interface{}{"`typeCode`": typeId}, map[string]interface{}{"`status`": status, "`time`": time.Now().Unix()})
}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-25 13:54:09
@ 功能: 删除字典类别
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) DelDictTypeCont(c *gin.Context) {
var requestData DelDictTypeInfo
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if len(requestData.Id) < 1 {
publicmethod.Result(101, err, c)
return
}
editDictTypeInfo := publicmethod.MapOut[string]()
editDictTypeInfo["`status`"] = 3
err = overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.DictType{}).Where("`id` IN ?", requestData.Id).Updates(editDictTypeInfo).Error
if err != nil {
publicmethod.Result(108, err, c)
return
}
for i := 0; i < len(requestData.Id); i++ {
dictTypeId, dictErr := strconv.Atoi(requestData.Id[i])
if dictErr == nil {
syncSeting.Add(1)
go EditDictContStatus(dictTypeId, 3)
}
}
syncSeting.Wait()
publicmethod.Result(0, err, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-25 14:45:16
@ 功能: 获取字典内容列表
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) GetDictionary(c *gin.Context) {
var requestData DictionaryList
c.ShouldBindJSON(&requestData)
if requestData.CodeType == "" {
publicmethod.Result(1, requestData, c, "未知字典类型")
return
}
if requestData.Page == 0 {
requestData.Page = 1
}
if requestData.PageSize == 0 {
requestData.PageSize = 10
}
var dictionaryContList []modelAppPlatform.Dictionary
gormDb := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Dictionary{}).Where("`status` BETWEEN ? AND ?", 1, 2)
if requestData.KeyWords != "" {
gormDb.Where("`name` like ?", "%"+requestData.KeyWords+"%")
}
var total int64
totalErr := gormDb.Count(&total).Error
if totalErr != nil {
total = 0
}
gormDb = publicmethod.PageTurningSettings(gormDb, requestData.Page, requestData.PageSize)
err := gormDb.Order("`sort` ASC").Find(&dictionaryContList).Error
if err != nil && len(dictionaryContList) < 1 {
publicmethod.Result(105, err, c)
return
}
var sendDataList []SendDictionaryList
for _, v := range dictionaryContList {
var sendCont SendDictionaryList
sendCont.Id = v.Id
sendCont.Name = v.Name //字典内容名称"`
sendCont.TypeCode = v.TypeCode //字典类型编码"`
sendCont.Code = v.Code //字典内编码"`
sendCont.Sort = v.Sort //排序(数字越小排名越靠前))"`
sendCont.Status = v.Status //显示状态(1:显示;2:隐藏,3:删除)"`
sendCont.Remark = v.Remark //字典内描述"`
sendCont.Time = v.Time //创建时间"`
sendCont.CodeString = strconv.FormatInt(v.Code, 10)
sendDataList = append(sendDataList, sendCont)
}
publicmethod.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(sendDataList)), sendDataList, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-25 15:26:59
@ 功能: 新增字典内容
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) AddDictionaryCont(c *gin.Context) {
var requestData AddNewDictionaryCont
c.ShouldBindJSON(&requestData)
if requestData.TypeCode == "" {
publicmethod.Result(1, requestData, c, "未知字典类型")
return
}
typeCode, err := strconv.ParseInt(requestData.TypeCode, 10, 64)
if err != nil {
publicmethod.Result(1, err, c, "未知字典类型")
return
}
if requestData.Name == "" {
publicmethod.Result(1, requestData, c, "请输入字典内容名称")
return
}
var dictContJudge modelAppPlatform.Dictionary
err = dictContJudge.GetCont(map[string]interface{}{"`name`": requestData.Name}, "`id`")
if err == nil || dictContJudge.Id != 0 {
publicmethod.Result(103, err, c)
return
}
if requestData.Sort == 0 {
requestData.Sort = 50
}
if requestData.Status == 0 {
requestData.Status = 1
}
var dictCont modelAppPlatform.Dictionary
dictCont.Name = requestData.Name //字典内容名称"`
dictCont.TypeCode = typeCode //字典类型编码"`
dictCont.Code = publicmethod.GetUUid(6) //字典内编码"`
dictCont.Sort = requestData.Sort //排序(数字越小排名越靠前))"`
dictCont.Status = requestData.Status //显示状态(1:显示;2:隐藏,3:删除)"`
dictCont.Remark = requestData.Remark //字典内描述"`
dictCont.Time = time.Now().Unix() //创建时间"`
err = overall.CONSTANT_DB_AppPlatform.Create(&dictCont).Error
if err != nil {
publicmethod.Result(104, err, c)
return
}
publicmethod.Result(0, err, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-25 15:49:36
@ 功能: 查看字典内容详情
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) GetDictionaryCont(c *gin.Context) {
id := c.Query("id")
if id == "" {
publicmethod.Result(1, id, c, "未知字典内容!")
return
}
var dictCont modelAppPlatform.Dictionary
err := dictCont.GetCont(map[string]interface{}{"`id`": id})
if err != nil {
publicmethod.Result(105, err, c)
return
}
publicmethod.Result(0, dictCont, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-25 16:19:53
@ 功能:
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) EditDictionaryCont(c *gin.Context) {
var requestData EditNewDictionaryCont
c.ShouldBindJSON(&requestData)
if requestData.Id == 0 {
publicmethod.Result(1, requestData.Id, c, "未知字典内容!")
return
}
if requestData.Name == "" {
publicmethod.Result(1, requestData.Name, c, "请输入字典名称!")
return
}
if requestData.Sort == 0 {
requestData.Sort = 50
}
if requestData.Status == 0 {
requestData.Status = 1
}
whery := publicmethod.MapOut[string]()
whery["`id`"] = requestData.Id
var oldDictCont modelAppPlatform.Dictionary
err := oldDictCont.GetCont(whery)
if err != nil {
publicmethod.Result(107, err, c)
return
}
editCont := publicmethod.MapOut[string]()
if requestData.Name != oldDictCont.Name {
var dictCont modelAppPlatform.Dictionary
err = dictCont.GetCont(map[string]interface{}{"`name`": requestData.Name, "`typeCode`": oldDictCont.TypeCode}, "`id`")
if err == nil || dictCont.Id != 0 {
publicmethod.Result(103, err, c)
return
}
editCont["`name`"] = requestData.Name
}
if requestData.Status != oldDictCont.Status {
editCont["`status`"] = requestData.Status
}
if requestData.Remark != oldDictCont.Remark {
editCont["`remark`"] = requestData.Remark
}
if requestData.Sort != oldDictCont.Sort {
editCont["`sort`"] = requestData.Sort
}
if len(editCont) > 0 {
editCont["`time`"] = time.Now().Unix()
var editDictCont modelAppPlatform.Dictionary
err := editDictCont.EiteCont(whery, editCont)
if err != nil {
publicmethod.Result(106, err, c)
return
}
}
publicmethod.Result(0, err, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2023-05-25 16:35:04
@ 功能: 删除字典内容
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) DelDictionaryCont(c *gin.Context) {
var requestData DelDictTypeInfo
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if len(requestData.Id) < 1 {
publicmethod.Result(101, err, c)
return
}
editDictTypeInfo := publicmethod.MapOut[string]()
editDictTypeInfo["`status`"] = 3
err = overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Dictionary{}).Where("`id` IN ?", requestData.Id).Updates(editDictTypeInfo).Error
if err != nil {
publicmethod.Result(108, err, c)
return
}
publicmethod.Result(0, err, c)
}