package platform import ( "errors" "go-nc/configs/global" "go-nc/internal/utils" "go-nc/model" "go-nc/model/common" "strconv" "github.com/gin-gonic/gin" "github.com/jinzhu/copier" ) // 获取客户列表 func GetCustomerList(c *gin.Context) { type Param struct { Name string `json:"name"` common.Pagination } var param Param param.Pagination = common.NewPagination() if err := c.ShouldBindJSON(¶m); err != nil { c.Error(errors.New("缺少参数:" + err.Error())) return } // 查询总记录数 var total int64 if err := global.App.DB.Where("name LIKE ? AND user_type = 2", "%"+param.Name+"%").Model(&model.Sys_user{}).Count(&total).Error; err != nil { c.Error(err) return } // 使用分页查询 var dbList []model.Sys_user if err := global.App.DB.Where("name LIKE ? AND user_type = 2", "%"+param.Name+"%"). Limit(param.PageSize). Offset((param.Current - 1) * param.PageSize). Find(&dbList).Error; err != nil { c.Error(err) return } // 序列化 records := make([]interface{}, len(dbList)) for i, user := range dbList { user.Password = "" records[i] = user } data := common.BuildPagination(records, param.Current, param.PageSize, total) c.Set("res_data", data) } // 添加客户 func AddCustomer(c *gin.Context) { type Param struct { Username string `json:"username" validate:"required"` // 账号 State string `json:"state" validate:"required"` // 状态 Name string `json:"name" validate:"required"` // 姓名 Password string `json:"password" validate:"required"` // 密码 UserType string `json:"userType"` // 收获地址 Phone string `json:"phone" validate:"required"` // 手机 Email string `json:"email" validate:"required"` // 邮箱 Addr string `json:"addr" validate:"required"` // 地址 Zip string `json:"zip" validate:"required"` // 邮编 Note string `json:"note" validate:"required"` // 备注 // 短信通知 Sms string `json:"sms" validate:"required"` // 短信 SMSSignature string `json:"smsSignature" validate:"required"` // 短信签名 LoginSms string `json:"loginSms" validate:"required"` // 登录短信模板 WarnSms string `json:"warnSms" validate:"required"` // 警告模板 Amount float64 `json:"amount" validate:"required"` // 余额 // 发票信息 InvoiceTitle string `json:"invoiceTitle" validate:"required"` // 发票抬头 InvoiceType string `json:"invoiceType" validate:"required"` // 发票类型 InvoiceAddr string `json:"invoiceAddr" validate:"required"` // 发票地址 InvoiceZip string `json:"invoiceZip" validate:"required"` // 发票邮编 InvoiceEmail string `json:"invoiceEmail" validate:"required"` // 发票邮箱 // 银行信息 BankName string `json:"bankName" validate:"required"` // 银行名称 BankAccount string `json:"bankAccount" validate:"required"` // 银行账号 BankBranch string `json:"bankBranch" validate:"required"` // 开户支行 // 营业执照 BusinessLicense string `json:"businessLicense" validate:"required"` // 营业执照 // 税务登记复印件 TaxRegistrationCertificate string `json:"taxRegistrationCertificate" validate:"required"` // 税务登记复印件 // 一般纳税人认证资格复印件 TaxpayerQualification string `json:"taxpayerQualification" validate:"required"` // 一般纳税人认证资格复印件 AmountWarn int64 `json:"amountWarn" validate:"required"` // 余额预警 ArriveWarn int64 `json:"arriveWarn" validate:"required"` // 达量预警 ArriveStop int64 `json:"arriveStop" validate:"required"` // 达量停机 ArriveNetwork int64 `json:"arriveNetwork" validate:"required"` // 达量网络 ArriveStopOperation string `json:"arriveStopOperation" validate:"required"` // 达量停机操作 ArriveNetworkOperation string `json:"arriveStopNetwork" validate:"required"` // 达量网络操作 WarnPhone string `json:"warnPhone" validate:"required"` // 预警手机号 WarnEmail string `json:"warnEmail" validate:"required"` // 预警邮箱 } var param Param if err := c.ShouldBindJSON(¶m); err != nil { c.Error(errors.New("缺少参数!" + err.Error())) return } err := utils.ValidateStruct(param) if err != nil { c.Error(err) return } param.UserType = "2" // 创建用户&密码加密 pwd := utils.EncryptDES_ECB(param.Password, "limingYa") param.Password = pwd var user model.Sys_user copier.Copy(&user, ¶m) // 事务操作 tx := global.App.DB.Begin() // 添加用户 if err := tx.Create(&user).Error; err != nil { tx.Rollback() c.Error(err) return } // 添加用户角色关系 var userRoleList model.Sys_user_role userRoleList.UserId = user.Id userRoleList.RoleId = 2 if err := tx.Create(&userRoleList).Error; err != nil { tx.Rollback() c.Error(err) return } // 添加用户信息 var userInfo model.U_customerAccountInfo userInfo.UserId = user.Id copier.Copy(&userInfo, ¶m) if err := tx.Create(&userInfo).Error; err != nil { tx.Rollback() c.Error(err) return } // 添加用户预计信息 var warnUserInfo model.Alert_customer copier.Copy(&warnUserInfo, ¶m) warnUserInfo.UserId = userInfo.Id if err := tx.Create(&warnUserInfo).Error; err != nil { tx.Rollback() c.Error(err) return } // 提交 if err := tx.Commit().Error; err != nil { c.Error(err) return } c.Set("res_data", "添加成功!") } // 修改客户 func UpdateCustomer(c *gin.Context) { type Param struct { Username string `json:"username" validate:"required"` // 账号 State string `json:"state" validate:"required"` // 状态 Name string `json:"name" validate:"required"` // 姓名 Password string `json:"password" validate:"required"` // 密码 UserId int `json:"userId" validate:"required"` UserType string `json:"userType"` // 收获地址 Phone string `json:"phone" validate:"required"` // 手机 Email string `json:"email" validate:"required"` // 邮箱 Addr string `json:"addr" validate:"required"` // 地址 Zip string `json:"zip" validate:"required"` // 邮编 Note string `json:"note" validate:"required"` // 备注 // 短信通知 Sms string `json:"sms" validate:"required"` // 短信 SMSSignature string `json:"smsSignature" validate:"required"` // 短信签名 LoginSms string `json:"loginSms" validate:"required"` // 登录短信模板 WarnSms string `json:"warnSms" validate:"required"` // 警告模板 Amount float64 `json:"amount" validate:"required"` // 余额 // 发票信息 InvoiceTitle string `json:"invoiceTitle" validate:"required"` // 发票抬头 InvoiceType string `json:"invoiceType" validate:"required"` // 发票类型 InvoiceAddr string `json:"invoiceAddr" validate:"required"` // 发票地址 InvoiceZip string `json:"invoiceZip" validate:"required"` // 发票邮编 InvoiceEmail string `json:"invoiceEmail" validate:"required"` // 发票邮箱 // 银行信息 BankName string `json:"bankName" validate:"required"` // 银行名称 BankAccount string `json:"bankAccount" validate:"required"` // 银行账号 BankBranch string `json:"bankBranch" validate:"required"` // 开户支行 // 营业执照 BusinessLicense string `json:"businessLicense" validate:"required"` // 营业执照 // 税务登记复印件 TaxRegistrationCertificate string `json:"taxRegistrationCertificate" validate:"required"` // 税务登记复印件 // 一般纳税人认证资格复印件 TaxpayerQualification string `json:"taxpayerQualification" validate:"required"` // 一般纳税人认证资格复印件 AmountWarn int64 `json:"amountWarn" validate:"required"` // 余额预警 ArriveWarn int64 `json:"arriveWarn" validate:"required"` // 达量预警 ArriveStop int64 `json:"arriveStop" validate:"required"` // 达量停机 ArriveNetwork int64 `json:"arriveNetwork" validate:"required"` // 达量网络 ArriveStopOperation string `json:"arriveStopOperation" validate:"required"` // 达量停机操作 ArriveNetworkOperation string `json:"arriveStopNetwork" validate:"required"` // 达量网络操作 WarnPhone string `json:"warnPhone" validate:"required"` // 预警手机号 WarnEmail string `json:"warnEmail" validate:"required"` // 预警邮箱 } var param Param if err := c.ShouldBindJSON(¶m); err != nil { c.Error(errors.New("缺少参数!")) return } err := utils.ValidateStruct(param) if err != nil { c.Error(err) return } // 创建用户&密码加密 if param.Password != "" { pwd := utils.DecryptDES_ECB(param.Password, "") param.Password = utils.EncryptDES_ECB(pwd, "limingYa") } param.UserType = "2" var user model.Sys_user copier.Copy(&user, ¶m) // 事务操作 tx := global.App.DB.Begin() copier.Copy(&user, ¶m) if err := tx.Model(&model.Sys_user{}).Where("id = ?", param.UserId).Updates(&user).Error; err != nil { tx.Rollback() c.Error(err) return } // 更新用户和角色关系 // 删除用户角色关系 // if err := tx.Where("user_id = ?", param.Id).Unscoped().Delete(&model.Sys_user_role{}).Error; err != nil { // tx.Rollback() // c.Error(err) // return // } // 更新用户信息 var userInfo model.U_customerAccountInfo userInfo.UserId = uint(param.UserId) copier.Copy(&userInfo, ¶m) if err := tx.Where("user_id = ?", param.UserId).Updates(&userInfo).Error; err != nil { tx.Rollback() c.Error(err) return } // 修改预计信息 var warnUserInfo model.Alert_customer warnUserInfo.UserId = userInfo.Id copier.Copy(&warnUserInfo, ¶m) if err := tx.Where("user_id = ?", param.UserId).Updates(&warnUserInfo).Error; err != nil { tx.Rollback() c.Error(err) return } // 提交 if err := tx.Commit().Error; err != nil { tx.Rollback() c.Error(err) return } c.Set("res_data", "修改成功!") } // 删除客户 func DeleteCustomer(c *gin.Context) { Id := c.Query("id") if Id == "" { c.Error(errors.New("缺少参数:id")) return } userId, err := strconv.Atoi(Id) if err != nil { c.Error(err) return } // 事务操作 tx := global.App.DB.Begin() // 删除用户 var user model.Sys_user user.Id = uint(userId) if err := tx.Where("id = ?", userId).Unscoped().Delete(&user).Error; err != nil { tx.Rollback() c.Error(err) return } // 删除用户角色关系 var userRoleList model.Sys_user_role if err := tx.Where("user_id = ?", Id).Unscoped().Delete(&userRoleList).Error; err != nil { tx.Rollback() c.Error(err) return } // 删除用户信息 var userInfo model.U_customerAccountInfo userInfo.UserId = uint(userId) if err := tx.Where("user_id = ?", userId).Unscoped().Delete(&userInfo).Error; err != nil { tx.Rollback() c.Error(err) return } // 删除预计信息 var warnUserInfo model.Alert_customer warnUserInfo.UserId = uint(userId) if err := tx.Where("user_id = ?", userId).Unscoped().Delete(&warnUserInfo).Error; err != nil { tx.Rollback() c.Error(err) return } // 提交 if err := tx.Commit().Error; err != nil { c.Error(err) return } } // 客户详情信息 func GetCustomerInfo(c *gin.Context) { Id := c.Query("id") if Id == "" { c.Error(errors.New("缺少参数:id")) return } userId, err := strconv.Atoi(Id) if err != nil { c.Error(err) return } type userAllInfo struct { model.Sys_user Info model.U_customerAccountInfo `json:"info"` RoleName string `json:"roleName"` Alert model.Alert_customer `json:"alert"` } var user model.Sys_user if err := global.App.DB.Where("id = ?", userId).First(&user).Error; err != nil { c.Error(err) return } // 查询角色 var role model.Sys_user_role if err := global.App.DB.Where("user_id = ?", userId).First(&role).Error; err != nil { c.Error(err) return } // 查询角色名称 var roleInfo model.Sys_role if err := global.App.DB.Where("id = ?", role.RoleId).First(&roleInfo).Error; err != nil { c.Error(err) return } var userInfo model.U_customerAccountInfo if err := global.App.DB.Where("user_id = ?", userId).First(&userInfo).Error; err != nil { c.Error(err) return } // 查询预计信息 var warnUserInfo model.Alert_customer global.App.DB.Where("user_id = ?", userId).First(&warnUserInfo) user.Password = "" resUser := userAllInfo{ Sys_user: user, Info: userInfo, RoleName: roleInfo.Name, Alert: warnUserInfo, } c.Set("res_data", resUser) }