fonchain-fiee/pkg/service/blockchain/blockchain.go
2025-02-19 14:24:15 +08:00

302 lines
7.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package blockchain
import (
"context"
"fmt"
"github.com/fonchain_enterprise/fonchain-main/api/account"
"github.com/fonchain_enterprise/fonchain-main/api/e_card"
"github.com/fonchain_enterprise/fonchain-main/api/equity"
"github.com/fonchain_enterprise/fonchain-main/api/rule"
"github.com/fonchain_enterprise/fonchain-main/pkg/e"
"github.com/fonchain_enterprise/fonchain-main/pkg/model/request"
"github.com/fonchain_enterprise/fonchain-main/pkg/response"
"github.com/fonchain_enterprise/fonchain-main/pkg/service"
"github.com/gin-gonic/gin"
)
// BlockUserList 用户列表
func BlockUserList(ctx *gin.Context) {
req := &request.BlockUserListReq{}
resp := &response.BlockUserListResp{}
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.ResponseQuickMsg(ctx, e.Failed, err.Error(), nil)
return
}
status := ""
if req.Status == 1 {
status = "notactive"
} else if req.Status == 2 {
status = "left"
}
userReq := &account.ListRequest{
Domain: "blockchain",
PageSize: req.PageSize,
Page: req.Page,
Key: req.Name,
TelNum: req.TelNum,
Status: status,
StartEnterDate: req.StartDate,
EndEnterDate: req.EndDate,
}
res, err := service.AccountProvider.List(ctx, userReq)
if err != nil {
service.ResponseQuickMsg(ctx, e.Failed, err.Error(), nil)
return
}
// 一次性分配 UserId 切片的空间
UserId := make([]int32, 0, len(res.Data))
for _, v := range res.Data {
UserId = append(UserId, int32(v.ID))
}
// 获取余额
rep, err := service.EquityProvider.GetResourcesByUserIds(ctx, &equity.GetResourcesByUserIdsRequest{
UserIDs: UserId,
})
if err != nil {
service.ResponseQuickMsg(ctx, e.Failed, err.Error(), nil)
return
}
resourcesByUserID := make(map[uint64]*equity.ResourcesByUserID)
for _, resource := range rep.ResourcesByUserID {
resourcesByUserID[uint64(resource.UserID)] = resource
}
// 处理结果
for _, v := range res.Data {
resource, ok := resourcesByUserID[v.ID]
if !ok {
// 如果获取不到余额将余额赋值为0
resource = &equity.ResourcesByUserID{
UserID: int32(v.ID),
Money: 0,
Resource: 0,
}
}
resStatus := 0
switch v.Status {
case "notactive":
resStatus = 1
case "left":
resStatus = 2
}
resp.List = append(resp.List, &response.BlockUserList{
Id: v.ID,
Name: v.NickName,
TelNum: v.TelNum,
Status: resStatus,
RegisterDate: v.EnterDate,
IdCard: v.IDNum,
BlockAddr: v.BlockAddr,
CardBalance: uint64(resource.Money),
EquityBalance: uint64(resource.Resource),
})
}
service.ResponseQuickMsg(ctx, e.Success, "success", resp)
return
}
func BlockUserSetting(ctx *gin.Context) {
req := &request.BlockUserSettingReq{}
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.ResponseQuickMsg(ctx, e.Failed, err.Error(), nil)
return
}
if len(req.Ids) > 10 || req.Status != 1 && req.Status != 2 {
service.ResponseQuickMsg(ctx, e.Failed, e.GetMsg(e.InvalidParams), nil)
return
}
status := ""
switch req.Status {
case 1:
status = "notactive"
case 2:
status = "left"
}
for _, i := range req.Ids {
_, err = service.AccountProvider.Update(ctx, &account.UpdateRequest{
ID: i,
Domain: "blockchian",
Status: status,
})
if err != nil {
service.ResponseQuickMsg(ctx, e.Failed, err.Error(), nil)
return
}
}
service.ResponseQuickMsg(ctx, e.Success, "success", nil)
return
}
func AddChain(c *gin.Context) {
var addChainRequest e_card.AddChainRequest
if err := c.ShouldBind(&addChainRequest); err != nil {
service.Error(c, e.InvalidParams, err)
return
}
rep, err := service.ECardProvider.AddChain(context.Background(), &addChainRequest)
if err != nil {
service.Error(c, e.Error, err)
return
}
service.Success(c, rep)
return
}
func ECardUserManage(c *gin.Context) {
var eCardUserManageRequest e_card.ECardUserManageRequest
if err := c.ShouldBind(&eCardUserManageRequest); err != nil {
service.Error(c, e.InvalidParams, err)
return
}
rep, err := service.ECardProvider.ECardUserManage(context.Background(), &eCardUserManageRequest)
if err != nil {
service.Error(c, e.Error, err)
return
}
service.Success(c, rep)
return
}
func ChainRecord(c *gin.Context) {
var chainRecordRequest e_card.ChainRecordRequest
if err := c.ShouldBind(&chainRecordRequest); err != nil {
service.Error(c, e.InvalidParams, err)
return
}
rep, err := service.ECardProvider.ChainRecord(context.Background(), &chainRecordRequest)
if err != nil {
service.Error(c, e.Error, err)
return
}
service.Success(c, rep)
return
}
func SaveInfo(c *gin.Context) {
res, err := service.AccountProvider.List(context.Background(), &account.ListRequest{Domain: "fontree", PageSize: 99999, Page: 1, Status: "notactive"})
if err != nil {
fmt.Println("获取用户信息失败", err)
return
}
for _, data := range res.Data {
// 获取岗位信息
uReq := rule.RulesRequest{
Domain: "fontree",
AccountID: data.ID,
}
posResp, err := service.RuleProvider.UserInfo(context.Background(), &uReq)
if err != nil {
fmt.Println("获取用户信息失败", err)
service.Error(c, e.Error, err)
return
}
var department []string
var post []string
for _, position := range posResp.PositionUsers {
department = append(department, position.DepartmentName)
post = append(post, position.PositionName)
}
addChainRequest := &e_card.AddChainRequest{
Name: data.NickName,
Phone: data.TelNum,
Company: "泰丰国际",
Department: department,
Post: post,
DateOnBoard: data.EnterDate,
UserID: int32(data.ID),
Addr: data.Account,
ChangedPlace: "新建电子名片",
}
_, err = service.ECardProvider.AddChain(context.Background(), addChainRequest)
if err != nil {
service.Error(c, e.Error, err)
return
}
}
return
}
func UserExist(c *gin.Context) {
var userByTelRequest account.UserByTelRequest
if err := c.ShouldBind(&userByTelRequest); err != nil {
service.Error(c, e.InvalidParams, err)
return
}
rep, err := service.AccountProvider.UserByTel(c, &userByTelRequest)
if err != nil {
return
}
service.Success(c, rep)
}
func Send(c *gin.Context) {
var req account.SendMsgRequest
if err := c.ShouldBind(&req); err != nil {
service.Error(c, e.InvalidParams, err)
return
}
res, err := service.AccountProvider.SendMsg(context.Background(), &req)
if err != nil {
service.Error(c, e.Error, err)
return
}
service.Success(c, res)
return
}
func Login(c *gin.Context) {
var loginRequest account.LoginRequest
if err := c.ShouldBind(&loginRequest); err != nil {
service.Error(c, e.InvalidParams, err)
return
}
rep, err := service.AccountProvider.Login(c, &loginRequest)
if err != nil {
service.Error(c, e.Error, err)
return
}
service.Success(c, rep)
}
func Check(c *gin.Context) {
var checkMsgRequest account.CheckMsgRequest
if err := c.ShouldBind(&checkMsgRequest); err != nil {
service.Error(c, e.InvalidParams, err)
return
}
rep, err := service.AccountProvider.CheckMsg(c, &checkMsgRequest)
if err != nil {
service.Error(c, e.Error, err)
return
}
service.Success(c, rep)
}