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.
538 lines
15 KiB
538 lines
15 KiB
package signmodel |
|
|
|
import ( |
|
"fmt" |
|
"net/url" |
|
"strings" |
|
"time" |
|
|
|
"go-common/app/admin/main/up/conf" |
|
"go-common/app/admin/main/up/dao" |
|
xtime "go-common/library/time" |
|
) |
|
|
|
// const . |
|
const ( |
|
SignUpList = 0 |
|
SignUpDetail = 1 |
|
) |
|
|
|
// ------------------------------------------------- |
|
|
|
// CommonResponse result |
|
type CommonResponse struct { |
|
} |
|
|
|
// CommonArg arg |
|
type CommonArg struct { |
|
} |
|
|
|
// SignUpBaseInfo struct |
|
type SignUpBaseInfo struct { |
|
ID int64 `json:"id"` |
|
Name string `json:"name"` |
|
Sex int8 `json:"sex"` |
|
Mid int64 `json:"mid"` |
|
BeginDate xtime.Time `json:"begin_date"` |
|
EndDate xtime.Time `json:"end_date"` |
|
State int8 `json:"state"` |
|
Country string `json:"country"` |
|
Province string `json:"province"` |
|
City string `json:"city"` |
|
Note string `json:"note"` |
|
TypeName string `json:"type_name"` |
|
ActiveTid int16 `json:"active_tid"` |
|
AdminID int `json:"admin_id"` |
|
AdminName string `json:"admin_name"` |
|
CreateTime xtime.Time `json:"create_time"` |
|
Organization int8 `json:"organization"` |
|
SignType int8 `json:"sign_type"` |
|
Age int8 `json:"age"` |
|
Residence string `json:"residence"` |
|
IDCard string `json:"id_card"` |
|
Phone string `json:"phone"` |
|
QQ int64 `json:"qq"` |
|
Wechat string `json:"wechat"` |
|
IsEconomic int8 `json:"is_economic"` |
|
EconomicCompany string `json:"economic_company"` |
|
EconomicBegin xtime.Time `json:"economic_begin"` |
|
EconomicEnd xtime.Time `json:"economic_end"` |
|
ViolationTimes int `json:"violation_times"` |
|
LeaveTimes int `json:"leave_times"` |
|
} |
|
|
|
// CopyTo copy |
|
func (s *SignUpBaseInfo) CopyTo(dbstruct *SignUp) { |
|
dbstruct.ID = s.ID |
|
dbstruct.Mid = s.Mid |
|
dbstruct.Sex = s.Sex |
|
dbstruct.BeginDate = s.BeginDate |
|
dbstruct.EndDate = s.EndDate |
|
dbstruct.Country = s.Country |
|
dbstruct.Province = s.Province |
|
dbstruct.City = s.City |
|
dbstruct.Note = s.Note |
|
dbstruct.AdminID = s.AdminID |
|
dbstruct.AdminName = s.AdminName |
|
dbstruct.Organization = s.Organization |
|
dbstruct.SignType = s.SignType |
|
dbstruct.Age = s.Age |
|
dbstruct.Residence = s.Residence |
|
dbstruct.IDCard = s.IDCard |
|
dbstruct.Phone = s.Phone |
|
dbstruct.QQ = s.QQ |
|
dbstruct.Wechat = s.Wechat |
|
dbstruct.IsEconomic = s.IsEconomic |
|
if s.IsEconomic == ContainEconomic { |
|
dbstruct.EconomicCompany = s.EconomicCompany |
|
dbstruct.EconomicBegin = s.EconomicBegin |
|
dbstruct.EconomicEnd = s.EconomicEnd |
|
} |
|
} |
|
|
|
// CopyFrom copy |
|
func (s *SignUpBaseInfo) CopyFrom(dbstruct *SignUp) { |
|
s.ID = dbstruct.ID |
|
s.Mid = dbstruct.Mid |
|
s.Sex = dbstruct.Sex |
|
s.BeginDate = dbstruct.BeginDate |
|
s.EndDate = dbstruct.EndDate |
|
s.Country = dbstruct.Country |
|
s.Province = dbstruct.Province |
|
s.City = dbstruct.City |
|
s.Note = dbstruct.Note |
|
s.AdminID = dbstruct.AdminID |
|
s.AdminName = dbstruct.AdminName |
|
s.Organization = dbstruct.Organization |
|
s.SignType = dbstruct.SignType |
|
s.Age = dbstruct.Age |
|
s.Residence = dbstruct.Residence |
|
s.IDCard = dbstruct.IDCard |
|
s.Phone = dbstruct.Phone |
|
s.QQ = dbstruct.QQ |
|
s.Wechat = dbstruct.Wechat |
|
s.IsEconomic = dbstruct.IsEconomic |
|
if dbstruct.IsEconomic == ContainEconomic { |
|
s.EconomicCompany = dbstruct.EconomicCompany |
|
s.EconomicBegin = dbstruct.EconomicBegin |
|
s.EconomicEnd = dbstruct.EconomicEnd |
|
} |
|
s.State = dbstruct.State |
|
s.ActiveTid = dbstruct.ActiveTid |
|
s.LeaveTimes = dbstruct.LeaveTimes |
|
s.ViolationTimes = dbstruct.ViolationTimes |
|
s.CreateTime = dbstruct.Ctime |
|
} |
|
|
|
// CopyFrom . |
|
func (t *SignTaskHistoryArg) CopyFrom(st *SignTaskHistory, absenceCounter int) { |
|
var taskBegin, taskEnd time.Time |
|
taskBegin, taskEnd = GetTaskDuration(st.GenerateDate.Time(), st.TaskType) |
|
t.TaskBegin = xtime.Time(taskBegin.Unix()) |
|
t.TaskEnd = xtime.Time(taskEnd.Unix()) |
|
t.TaskType = st.TaskType |
|
t.TaskState = int8(st.State) |
|
t.TaskCounter = st.TaskCounter |
|
t.TaskCondition = st.TaskCondition |
|
t.AbsenceCounter = absenceCounter |
|
t.IsBusinessArchive = st.AttrVal(AttrBitIsBusinessArchive) |
|
} |
|
|
|
// SignUpArg struct |
|
type SignUpArg struct { |
|
SignUpBaseInfo |
|
PayInfo []*SignPayInfoArg `json:"pay_info"` |
|
TaskInfo []*SignTaskInfoArg `json:"task_info"` |
|
ContractInfo []*SignContractInfoArg `json:"contract_info"` |
|
} |
|
|
|
// SignUpsArg struct |
|
type SignUpsArg struct { |
|
SignUpBaseInfo |
|
TaskHistoryInfo []*SignTaskHistoryArg `json:"task_history_info"` |
|
PayInfo []*SignPayInfoArg `json:"pay_info"` |
|
ContractInfo []*SignContractInfoArg `json:"contract_info"` |
|
} |
|
|
|
// SignQueryResult result |
|
type SignQueryResult struct { |
|
SignBaseInfo *SignUpBaseInfo `json:"sign_base_info"` |
|
Result []*SignUpsArg `json:"result"` |
|
TotalCount int `json:"total_count"` |
|
Page int `json:"page"` |
|
Size int `json:"size"` |
|
} |
|
|
|
// SignTaskHistoryArg struct |
|
type SignTaskHistoryArg struct { |
|
TaskBegin xtime.Time `json:"task_begin"` |
|
TaskEnd xtime.Time `json:"task_end"` |
|
TaskType int8 `json:"task_type"` |
|
TaskState int8 `json:"task_state"` |
|
TaskCounter int `json:"task_counter"` |
|
TaskCondition int `json:"task_condition"` |
|
AbsenceCounter int `json:"absence_counter"` |
|
IsBusinessArchive int64 `json:"is_business_archive"` |
|
} |
|
|
|
// ViolationArg struct |
|
type ViolationArg struct { |
|
ID int64 `json:"id"` |
|
SignID int64 `json:"sign_id"` |
|
Mid int64 `json:"mid"` |
|
ViolationReason string `json:"violation_reason"` |
|
AdminID int64 `json:"admin_id"` |
|
AdminName string `json:"admin_name"` |
|
OpTime xtime.Time `json:"op_time"` |
|
State int8 `json:"state"` |
|
} |
|
|
|
// ViolationResult result |
|
type ViolationResult struct { |
|
Result []*ViolationArg `json:"result"` |
|
TotalCount int `json:"total_count"` |
|
Page int `json:"page"` |
|
Size int `json:"size"` |
|
} |
|
|
|
// CopyTo violationArg. |
|
func (a *ViolationArg) CopyTo(v *SignViolationHistory) { |
|
v.SignID = a.SignID |
|
v.Mid = a.Mid |
|
v.AdminID = a.AdminID |
|
v.AdminName = a.AdminName |
|
v.ViolationReason = a.ViolationReason |
|
} |
|
|
|
// CopyFrom violationArg. |
|
func (a *ViolationArg) CopyFrom(v *SignViolationHistory) { |
|
a.ID = v.ID |
|
a.SignID = v.SignID |
|
a.Mid = v.Mid |
|
a.AdminID = v.AdminID |
|
a.AdminName = v.AdminName |
|
a.ViolationReason = v.ViolationReason |
|
a.OpTime = v.Mtime |
|
a.State = v.State |
|
} |
|
|
|
// AbsenceArg struct |
|
type AbsenceArg struct { |
|
ID int64 `json:"id"` |
|
SignID int64 `json:"sign_id"` |
|
Mid int64 `json:"mid"` |
|
AbsenceCount int `json:"absence_count"` |
|
Reason string `json:"reason"` |
|
AdminID int64 `json:"admin_id"` |
|
AdminName string `json:"admin_name"` |
|
OpTime xtime.Time `json:"op_time"` |
|
TaskBegin xtime.Time `json:"task_begin"` |
|
TaskEnd xtime.Time `json:"task_end"` |
|
State int8 `json:"state"` |
|
} |
|
|
|
// CopyTo AbsenceArg. |
|
func (a *AbsenceArg) CopyTo(v *SignTaskAbsence) { |
|
v.SignID = a.SignID |
|
v.Mid = a.Mid |
|
v.AdminID = a.AdminID |
|
v.AdminName = a.AdminName |
|
v.AbsenceCount = a.AbsenceCount |
|
v.Reason = a.Reason |
|
} |
|
|
|
// CopyFrom AbsenceArg. |
|
func (a *AbsenceArg) CopyFrom(v *SignTaskAbsence) { |
|
a.ID = v.ID |
|
a.SignID = v.SignID |
|
a.Mid = v.Mid |
|
a.AdminID = v.AdminID |
|
a.AdminName = v.AdminName |
|
a.AbsenceCount = v.AbsenceCount |
|
a.Reason = v.Reason |
|
a.State = v.State |
|
a.OpTime = v.Mtime |
|
} |
|
|
|
// AbsenceResult result |
|
type AbsenceResult struct { |
|
Result []*AbsenceArg `json:"result"` |
|
TotalCount int `json:"total_count"` |
|
Page int `json:"page"` |
|
Size int `json:"size"` |
|
} |
|
|
|
// PageArg . |
|
type PageArg struct { |
|
SignID int64 `form:"sign_id"` |
|
Page int `form:"page"` |
|
Size int `form:"size"` |
|
} |
|
|
|
// IDArg . |
|
type IDArg struct { |
|
ID int64 `json:"id"` |
|
SignID int64 `json:"sign_id"` |
|
AdminID int64 |
|
AdminName string |
|
} |
|
|
|
// PowerCheckArg . |
|
type PowerCheckArg struct { |
|
TIDs []int16 `form:"tids,split"` |
|
Mid int64 `form:"mid"` |
|
} |
|
|
|
// PowerCheckReply . |
|
type PowerCheckReply struct { |
|
IsPower bool `json:"is_power"` |
|
IsSign bool `json:"is_sign"` |
|
} |
|
|
|
// SignPayInfoArg ============= |
|
type SignPayInfoArg struct { |
|
ID int64 `json:"id"` |
|
SignID int64 `json:"sign_id"` |
|
Mid int64 `json:"mid"` |
|
DueDate xtime.Time `json:"due_date"` |
|
PayValue int64 `json:"pay_value"` |
|
Note string `json:"note"` |
|
State int8 `json:"state"` |
|
InTax int8 `json:"in_tax"` |
|
} |
|
|
|
// CopyTo copy |
|
func (s *SignPayInfoArg) CopyTo(dbstruct *SignPay) { |
|
dbstruct.ID = s.ID |
|
dbstruct.SignID = s.SignID |
|
dbstruct.Mid = s.Mid |
|
dbstruct.DueDate = s.DueDate |
|
dbstruct.PayValue = s.PayValue |
|
dbstruct.Note = s.Note |
|
dbstruct.InTax = s.InTax |
|
} |
|
|
|
// CopyFrom copy |
|
func (s *SignPayInfoArg) CopyFrom(dbstruct *SignPay) { |
|
s.ID = dbstruct.ID |
|
s.SignID = dbstruct.SignID |
|
s.Mid = dbstruct.Mid |
|
s.DueDate = dbstruct.DueDate |
|
s.PayValue = dbstruct.PayValue |
|
s.Note = dbstruct.Note |
|
s.State = dbstruct.State |
|
s.InTax = dbstruct.InTax |
|
} |
|
|
|
// SignTaskInfoArg ============= |
|
type SignTaskInfoArg struct { |
|
ID int64 `json:"id"` |
|
SignID int64 `json:"sign_id"` |
|
Mid int64 `json:"mid"` |
|
TaskType int8 `json:"task_type"` |
|
TaskCondition int `json:"task_condition"` |
|
TaskCounter int `json:"task_counter"` |
|
TaskState int8 `json:"task_state"` |
|
IsBusinessArchive int64 `json:"is_business_archive"` |
|
} |
|
|
|
// CopyTo copy |
|
func (s *SignTaskInfoArg) CopyTo(dbstruct *SignTask) { |
|
dbstruct.ID = s.ID |
|
dbstruct.SignID = s.SignID |
|
dbstruct.Mid = s.Mid |
|
dbstruct.TaskType = s.TaskType |
|
dbstruct.TaskCondition = s.TaskCondition |
|
dbstruct.AttrSet(s.IsBusinessArchive, AttrBitIsBusinessArchive) |
|
dbstruct.TaskData = "" |
|
} |
|
|
|
// CopyFrom copy |
|
func (s *SignTaskInfoArg) CopyFrom(dbstruct *SignTask) { |
|
s.ID = dbstruct.ID |
|
s.SignID = dbstruct.SignID |
|
s.Mid = dbstruct.Mid |
|
s.TaskType = dbstruct.TaskType |
|
s.TaskCondition = dbstruct.TaskCondition |
|
s.TaskCounter = dbstruct.TaskCounter |
|
s.IsBusinessArchive = dbstruct.AttrVal(AttrBitIsBusinessArchive) |
|
if s.TaskCounter >= s.TaskCondition { |
|
s.TaskState = 1 |
|
} |
|
} |
|
|
|
// SignContractInfoArg ============= |
|
type SignContractInfoArg struct { |
|
ID int64 `json:"id"` |
|
SignID int64 `json:"sign_id"` |
|
Mid int64 `json:"mid"` |
|
Filename string `json:"filename"` |
|
Filelink string `json:"filelink"` |
|
} |
|
|
|
// CopyTo copy |
|
func (s *SignContractInfoArg) CopyTo(dbstruct *SignContract) { |
|
dbstruct.ID = s.ID |
|
dbstruct.SignID = s.SignID |
|
dbstruct.Mid = s.Mid |
|
dbstruct.Filelink = BuildOrcBfsURL(s.Filelink) |
|
dbstruct.Filename = s.Filename |
|
} |
|
|
|
// CopyFrom copy |
|
func (s *SignContractInfoArg) CopyFrom(dbstruct *SignContract) { |
|
s.ID = dbstruct.ID |
|
s.SignID = dbstruct.SignID |
|
s.Mid = dbstruct.Mid |
|
s.Filelink = BuildDownloadURL(dbstruct.Filename, dbstruct.Filelink) |
|
s.Filename = dbstruct.Filename |
|
} |
|
|
|
// SignQueryArg ============= |
|
type SignQueryArg struct { |
|
Tids []int64 `form:"tids,split"` // 权限tid |
|
Mid int64 `form:"mid"` |
|
DueSign int8 `form:"due_sign"` // 签约即将过期 |
|
DuePay int8 `form:"due_pay"` // 支付周期即将过期 |
|
ExpireSign int8 `form:"expire_sign"` // 签约已过期 |
|
Sex int8 `form:"sex" default:"-1"` |
|
Country []string `form:"country,split"` |
|
ActiveTID int16 `form:"active_tid"` |
|
SignType int8 `form:"sign_type"` |
|
TaskState int8 `form:"task_state"` |
|
SignBegin xtime.Time `form:"sign_begin"` |
|
SignEnd xtime.Time `form:"sign_end"` |
|
IsDetail int8 `form:"is_detail"` // 是否详情 |
|
Page int `form:"page"` |
|
Size int `form:"size"` |
|
} |
|
|
|
// SignIDArg . |
|
type SignIDArg struct { |
|
ID int64 `form:"id" validate:"required"` |
|
} |
|
|
|
// SignPayCompleteArg ============== |
|
type SignPayCompleteArg struct { |
|
IDs []int64 `json:"ids"` |
|
} |
|
|
|
// SignPayCompleteResult result |
|
type SignPayCompleteResult struct { |
|
} |
|
|
|
// SignCheckTaskArg ============== |
|
type SignCheckTaskArg struct { |
|
Date string `form:"date"` |
|
} |
|
|
|
// SignCheckExsitArg ============== |
|
type SignCheckExsitArg struct { |
|
Mid int64 `form:"mid"` |
|
} |
|
|
|
// SignCheckExsitResult result |
|
type SignCheckExsitResult struct { |
|
Exist bool `json:"exist"` |
|
} |
|
|
|
// SignOpSearchArg . |
|
type SignOpSearchArg struct { |
|
Mid int64 `form:"mid"` |
|
OpID int64 `form:"oper_id"` // 操作人 |
|
SignID int64 `form:"sign_id"` |
|
Tp int8 `form:"type" default:"2"` // 操作类型 1:新增 2:修改 |
|
Order string `form:"order" default:"ctime"` |
|
Sort string `form:"sort" default:"desc"` |
|
PN int `form:"page" default:"1"` |
|
PS int `form:"size" default:"50"` |
|
} |
|
|
|
// BaseAuditReply . |
|
type BaseAuditReply struct { |
|
CTime string `json:"ctime"` |
|
IntOne int64 `json:"int_0"` |
|
OID int64 `json:"oid"` |
|
Tp int8 `json:"type"` |
|
UID int64 `json:"uid"` |
|
UName string `json:"uname"` |
|
ExtraData string `json:"extra_data"` |
|
} |
|
|
|
// BaseAuditListReply . |
|
type BaseAuditListReply struct { |
|
Order string `json:"order"` |
|
Sort string `json:"sort"` |
|
Pager *pager `json:"page"` |
|
Result []*BaseAuditReply `json:"result"` |
|
} |
|
|
|
type pager struct { |
|
Page int `json:"num"` |
|
Size int `json:"size"` |
|
TotalCount int `json:"total"` |
|
} |
|
|
|
// SignAuditReply . |
|
type SignAuditReply struct { |
|
CTime xtime.Time `json:"ctime"` |
|
SignID int64 `json:"sign_id"` |
|
Mid int64 `json:"mid"` |
|
Tp int8 `json:"type"` |
|
OperID int64 `json:"oper_id"` |
|
OperName string `json:"oper_name"` |
|
Content *SignContentReply `json:"content"` |
|
} |
|
|
|
// SignAuditListReply . |
|
type SignAuditListReply struct { |
|
Order string `json:"order"` |
|
Sort string `json:"sort"` |
|
Page int `json:"page"` |
|
Size int `json:"size"` |
|
TotalCount int `json:"total_count"` |
|
Result []*SignAuditReply `json:"result"` |
|
} |
|
|
|
// SignContentReply . |
|
type SignContentReply struct { |
|
New *SignUpArg `json:"new"` |
|
Old *SignUpArg `json:"old"` |
|
ChangeType []int8 `json:"change_type"` |
|
} |
|
|
|
// SignCountrysReply . |
|
type SignCountrysReply struct { |
|
List []string `json:"list"` |
|
} |
|
|
|
// SignTidsReply . |
|
type SignTidsReply struct { |
|
List map[int64]string `json:"list"` |
|
} |
|
|
|
// BuildOrcBfsURL orc bfs url. |
|
func BuildOrcBfsURL(raw string) string { |
|
if raw == "" { |
|
return "" |
|
} |
|
ori, err := url.Parse(raw) |
|
if err != nil { |
|
return raw |
|
} |
|
values := ori.Query() |
|
values.Del("token") |
|
ori.RawQuery = values.Encode() |
|
return ori.String() |
|
} |
|
|
|
// BuildDownloadURL . |
|
func BuildDownloadURL(fileName string, bfsurl string) (finalurl string) { |
|
var bfsConf = conf.Conf.BfsConf |
|
var index = strings.LastIndex(bfsurl, "/") |
|
if index >= 0 && index+1 < len(bfsurl) { |
|
fileName = bfsurl[index+1:] |
|
} |
|
finalurl = fmt.Sprintf("%s?token=%s", bfsurl, url.QueryEscape(dao.Authorize(bfsConf.Key, bfsConf.Secret, "GET", bfsConf.Bucket, fileName, time.Now().Unix()))) |
|
return |
|
}
|
|
|