123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- package models
- import (
- "errors"
- "fmt"
- "strings"
- "time"
- "zhiyuan/pkg/db"
- "zhiyuan/pkg/utils"
- "zhiyuan/services/geo"
- "github.com/gin-gonic/gin"
- )
- type Worker struct {
- ID int `json:"id" prop:"add:false"`
- Name string `json:"name" label:"姓名" type:"string" prop:"add edit" search:"like"`
- Phone string `json:"phone" label:"电话号码" type:"string" prop:"add edit" search:"like"`
- Sex int `json:"sex" label:"性别" type:"int" prop:"edit" default:"0"`
- Age int `json:"age" label:"年龄" type:"int" prop:"edit" default:"0"`
- Insure int `json:"insure" label:"是否买保险" type:"int" prop:"edit" default:"0"`
- Password string `json:"password" type:"string" prop:"edit select:false"`
- TypeIds string `json:"type_ids" label:"工种" type:"string" prop:"add edit" search:"find_in_set"`
- Idcode string `json:"idcode" label:"身份证号" type:"string" prop:"edit" default:""`
- Idcard1 string `json:"idcard1" prop:"add:false select:false"`
- Idcard2 string `json:"idcard2" prop:"add:false select:false"`
- OpenId string `json:"openid" prop:"add:false select:false"`
- UnionId string `json:"unionid" prop:"add:false select:false"`
- HeadImgUrl string `json:"headimgurl" prop:"add:false select:false"`
- NickName string `json:"nickname" prop:"add:false select:false"`
- AccessToken string `json:"access_token" prop:"add:false select:false"`
- AccessTokenExipred int `json:"access_token_expired" prop:"add:false select:false"`
- InsureStart int `json:"insure_start" label:"保险开始日期" type:"int" prop:"edit" default:"0"`
- InsureEnd int `json:"insure_end" label:"保险结束日期" type:"int" prop:"edit" default:"0"`
- BankName string `json:"bank_name" label:"开户行" type:"string" prop:"edit" default:""`
- BankCardNo string `json:"bank_card_no" label:"银行卡号" type:"string" prop:"edit" default:""`
- Areacode string `json:"areacode" label:"区划代码" type:"string" prop:"edit" search:"rightlike"`
- State int `json:"state" label:"状态" type:"int" prop:"add:false" default:"1"`
- DeletedAt int64 `json:"deleted_at" prop:"add:false select:false"`
- CreatedAt int `json:"created_at" prop:"add:false"`
- UpdatedAt int `json:"updated_at" prop:"add:false"`
- TypeNames string `json:"type_names" label:"工种" prop:"add:false select:group_concat(distinct(worktype.name))" `
- db.BaseModel
- }
- func (Worker) TableName() string {
- return "zy_worker"
- }
- func (model Worker) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
- if search, ok := data["search"]; ok {
- str := db.ToString(search)
- if str != "" {
- param := s.Param(fmt.Sprintf("%%%s%%", str))
- s.Where = append(s.Where, fmt.Sprintf("(%s LIKE %s OR %s LIKE %s)", fmt.Sprintf("`%s`.`name`", model.TableName()), param, fmt.Sprintf("`%s`.`phone`", model.TableName()), param))
- }
- }
- return true
- }
- func (Worker) OnePrivilege(c *gin.Context, id int64) bool {
- return true
- }
- func (Worker) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error {
- if db.ToString(data["password"]) == "" {
- phone := db.ToString(data["phone"])
- data["password"] = phone[len(phone)-6:]
- }
- data["password"] = utils.MD5(db.ToString(data["password"]))
- data["created_id"] = c.GetInt("adminID")
- return nil
- }
- func (Worker) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error {
- if db.ToString(data["password"]) == "" {
- delete(data, "password")
- } else {
- data["password"] = utils.MD5(db.ToString(data["password"]))
- }
- data["updated_id"] = c.GetInt("adminID")
- return nil
- }
- func (model Worker) GroupBy() string {
- return fmt.Sprintf("`%s`.`id`", model.TableName())
- }
- func (Worker) Page() bool {
- return false
- }
- func (Worker) Count() bool {
- return true
- }
- func (model Worker) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
- return []db.JoinModel{
- {
- Model: WorkType{},
- As: "worktype",
- On: []string{"FIND_IN_SET(`worktype`.`id`, " + model.TableName() + ".`type_ids`)"},
- },
- }
- }
- func (a Worker) GetOne(where map[string]interface{}, fields []string, retVal interface{}) (*Worker, error) {
- if retVal == nil {
- var worker *Worker
- err := db.GetOne(a.TableName(), where, fields, &worker)
- return worker, err
- } else {
- err := db.GetOne(a.TableName(), where, fields, retVal)
- return nil, err
- }
- }
- func (a Worker) GetMulti(where map[string]interface{}, fields []string, retVal interface{}) ([]*Worker, error) {
- if retVal == nil {
- var worker []*Worker
- err := db.GetMulti(a.TableName(), where, fields, &worker)
- return worker, err
- } else {
- err := db.GetMulti(a.TableName(), where, fields, retVal)
- return nil, err
- }
- }
- func (a Worker) GetOneRaw(where map[string]string, param map[string]interface{}, retVal interface{}) (*Worker, error) {
- worker, err := a.GetMultiRaw(where, param, retVal)
- if err != nil {
- return nil, err
- }
- if len(worker) == 0 {
- return nil, errors.New("empty record2")
- }
- return worker[0], nil
- }
- func (a Worker) GetMultiRaw(where map[string]string, param map[string]interface{}, retVal interface{}) ([]*Worker, error) {
- field := "SELECT * FROM zy_worker "
- if retVal == nil {
- var worker []*Worker
- err := db.GetMultiRaw(field, where, param, &worker)
- return worker, err
- } else {
- err := db.GetMultiRaw(field, where, param, retVal)
- return nil, err
- }
- }
- func (model Worker) ExportFields() []db.ExportField {
- return []db.ExportField{
- {
- Label: "姓名",
- Name: "name",
- Width: 20,
- },
- {
- Label: "电话号码",
- Name: "phone",
- Width: 20,
- },
- {
- Label: "性别",
- Name: "sex",
- },
- {
- Label: "年龄",
- Name: "age",
- },
- {
- Label: "身份证号",
- Name: "idcode",
- Width: 30,
- },
- {
- Label: "工种",
- Name: "type_names",
- Width: 30,
- },
- {
- Label: "所在区域",
- Name: "areacode",
- Width: 30,
- },
- {
- Label: "是否买保险",
- Name: "insure",
- },
- {
- Label: "保险开始日期",
- Name: "insure_start",
- },
- {
- Label: "保险结束日期",
- Name: "insure_end",
- },
- {
- Label: "开户行",
- Name: "bank_name",
- Width: 20,
- },
- {
- Label: "银行卡号",
- Name: "bank_card_no",
- Width: 30,
- },
- }
- }
- func (Worker) ExportValue(row map[string]interface{}, rowIndex int, field db.ExportField, data []map[string]interface{}) string {
- sexs := []string{"未知", "男", "女"}
- insures := []string{"否", "是"}
- switch field.Name {
- case "sex":
- sex := ""
- if s, ok := db.ToInt64(row["sex"]); ok {
- if s >= 0 && int(s) < len(sexs) {
- sex = sexs[s]
- }
- }
- return sex
- case "areacode":
- areacode := db.ToString(row["areacode"])
- list := geo.Code(areacode)
- names := make([]string, 0)
- for _, l := range list {
- if name, ok := l["name"]; ok {
- names = append(names, db.ToString(name))
- }
- }
- return strings.Join(names, "/")
- case "insure":
- insure := ""
- if s, ok := db.ToInt64(row["insure"]); ok {
- if s >= 0 && int(s) < len(insures) {
- insure = insures[s]
- }
- }
- return insure
- case "insure_start":
- insure_start := ""
- if s, ok := db.ToInt64(row["insure_start"]); ok {
- insure_start = time.Unix(s, 0).Local().Format("2006-01-02")
- }
- return insure_start
- case "insure_end":
- insure_end := ""
- if s, ok := db.ToInt64(row["insure_end"]); ok {
- insure_end = time.Unix(s, 0).Local().Format("2006-01-02")
- }
- return insure_end
- }
- return db.ToString(row[field.Name])
- }
- type WorkerMobile struct {
- //UseCount string `json:"use_count" type:"int" prop:"select:count(finalsitetable.id)"`
- Worker
- }
- func (model WorkerMobile) GroupBy() string {
- return fmt.Sprintf("`%s`.`id`", model.TableName())
- }
- //func (model WorkerMobile) OrderBy() string {
- // return fmt.Sprintf("count(`finalsitetable`.`id`) desc, `%s`.`name` asc", model.TableName())
- //}
- func (model WorkerMobile) OnePrivilege(c *gin.Context, id int64) bool {
- fmt.Println()
- return true
- }
- func (model WorkerMobile) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
- s.LeftJoin = append(s.LeftJoin, db.Join{
- TableName: "zy_final_site",
- As: "finalsite",
- On: []string{fmt.Sprintf("`finalsite`.`manager_id` = %s", s.Param(c.GetInt("adminID")))},
- }, db.Join{
- TableName: "zy_final_site_table",
- As: "finalsitetable",
- On: []string{fmt.Sprintf("`finalsitetable`.`site_id` = `finalsite`.`id` and `finalsitetable`.`worker_id` = `%s`.`id`", model.TableName())},
- })
- return model.Worker.ListPrivilege(c, data, s)
- }
- func (model WorkerMobile) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
- return model.Worker.LeftJoin(data, s)
- }
|