ソースを参照

update

add_mode
DengBiao 1年前
コミット
f179bd6d29
8個のファイルの変更905行の追加17行の削除
  1. +5
    -0
      app/admin/hdl/enterprise_manage/hdl_enterprise.go
  2. +320
    -0
      app/admin/hdl/enterprise_manage/hdl_self_support_for_school.go
  3. +90
    -0
      app/admin/md/md_enterprise_manage.go
  4. +431
    -0
      app/admin/svc/enterprise_manage/svc_self_support_for_school.go
  5. +36
    -3
      app/customer/hdl/hdl_user_identity.go
  6. +1
    -1
      app/customer/svc/svc_curl_smart_pay.go
  7. +13
    -12
      app/db/model/self_support_for_user_face_info.go
  8. +9
    -1
      app/router/admin_router.go

+ 5
- 0
app/admin/hdl/enterprise_manage/hdl_enterprise.go ファイルの表示

@@ -98,6 +98,11 @@ func UserIdentityList(c *gin.Context) {
case enum.EnterprisePvdByCentralKitchenForFactory:
break
case enum.EnterprisePvdBySelfSupportForSchool:
resp, err = svc2.EnterpriseUserListByCentralKitchenForSchool(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
break
case enum.EnterprisePvdBySelfSupportForFactory:
break


+ 320
- 0
app/admin/hdl/enterprise_manage/hdl_self_support_for_school.go ファイルの表示

@@ -0,0 +1,320 @@
package hdl

import (
"applet/app/admin/lib/validate"
"applet/app/admin/md"
svc2 "applet/app/admin/svc/enterprise_manage"
"applet/app/db"
"applet/app/db/model"
"applet/app/e"
"github.com/gin-gonic/gin"
)

func SelfSupportForSchoolUserUpdate(c *gin.Context) {
var req md.SelfSupportForSchoolUserUpdateReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
enterpriseDb := db.EnterpriseDb{}
enterpriseDb.Set()
enterprise, err := enterpriseDb.GetEnterprise(req.EnterpriseId)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if enterprise == nil {
e.OutErr(c, e.ERR_NO_DATA, "未查询到对应记录")
return
}

err = svc2.SelfSupportForSchoolUserUpdate(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, "success", nil)
return
}

func SelfSupportForSchoolUserDelete(c *gin.Context) {
var req md.SelfSupportForSchoolUserDeleteReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
enterpriseDb := db.EnterpriseDb{}
enterpriseDb.Set()
enterprise, err := enterpriseDb.GetEnterprise(req.EnterpriseId)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if enterprise == nil {
e.OutErr(c, e.ERR_NO_DATA, "未查询到对应记录")
return
}

err = svc2.SelfSupportForSchoolUserDelete(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, "success", nil)
return
}

func SelfSupportForSchoolStudentList(c *gin.Context) {
var req md.SelfSupportForSchoolStudentListReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
enterpriseDb := db.EnterpriseDb{}
enterpriseDb.Set()
enterprise, err := enterpriseDb.GetEnterprise(req.EnterpriseId)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if enterprise == nil {
e.OutErr(c, e.ERR_NO_DATA, "未查询到对应记录")
return
}

resp, total, err := svc2.SelfSupportForSchoolStudentList(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, map[string]interface{}{
"list": resp,
"total": total,
"admission_list": []map[string]string{
{
"name": "按班级",
"value": "admission_type_by_class",
},
{
"name": "按年级",
"value": "admission_type_by_grade",
},
},
"collect_face_type_list": []map[string]interface{}{
{
"name": "个采",
"value": 1,
},
{
"name": "集采",
"value": 2,
},
},
}, nil)
return
}

func SelfSupportForSchoolTeacherList(c *gin.Context) {
var req md.SelfSupportForSchoolTeacherListReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
enterpriseDb := db.EnterpriseDb{}
enterpriseDb.Set()
enterprise, err := enterpriseDb.GetEnterprise(req.EnterpriseId)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if enterprise == nil {
e.OutErr(c, e.ERR_NO_DATA, "未查询到对应记录")
return
}

resp, total, err := svc2.SelfSupportForSchoolTeacherList(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, map[string]interface{}{
"list": resp,
"total": total,
"collect_face_type_list": []map[string]interface{}{
{
"name": "个采",
"value": 1,
},
{
"name": "集采",
"value": 2,
},
},
}, nil)
return
}

func SelfSupportForSchoolTeacherUpdate(c *gin.Context) {
var req md.SelfSupportForSchoolTeacherUpdateReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
userIdentityDb := db.UserIdentityDb{}
userIdentityDb.Set(0)
userIdentity, err := userIdentityDb.GetUserIdentity(req.UserIdentityId)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if userIdentity == nil {
e.OutErr(c, e.ERR_NO_DATA, "未查询到对应记录")
return
}
userIdentity.IdNo = req.IdNo
userIdentity.Name = req.Name
_, err = userIdentityDb.UserIdentityUpdate(req.UserIdentityId, userIdentity, "id_no", "name")
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}

//更新 self_support_for_user_face_info
selfSupportForUserFaceInfoDb := db.SelfSupportForUserFaceInfoDb{}
selfSupportForUserFaceInfoDb.Set(req.UserIdentityId)
info, err := selfSupportForUserFaceInfoDb.GetSelfSupportForUserFaceInfo()
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
info.CollectFaceType = req.CollectFaceType
_, err = selfSupportForUserFaceInfoDb.SelfSupportForUserFaceInfoUpdate(info, "collect_face_type")
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
e.OutSuc(c, "success", nil)
return
}

func SelfSupportForSchoolStudentUpdate(c *gin.Context) {
var req md.SelfSupportForSchoolStudentUpdateReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
err = svc2.SelfSupportForSchoolStudentUpdate(req)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}

e.OutSuc(c, "success", nil)
return
}

func SelfSupportForSchoolStudentAdmission(c *gin.Context) {
var req md.SelfSupportForSchoolStudentAdmissionReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
enterpriseDb := db.EnterpriseDb{}
enterpriseDb.Set()
enterprise, err := enterpriseDb.GetEnterprise(req.EnterpriseId)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if enterprise == nil {
e.OutErr(c, e.ERR_NO_DATA, "未查询到对应记录")
return
}

err = svc2.SelfSupportForSchoolStudentAdmission(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, "success", nil)
return
}

func SelfSupportForSchoolStudentDelete(c *gin.Context) {
var req md.SelfSupportForSchoolStudentDeleteReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
enterpriseDb := db.EnterpriseDb{}
enterpriseDb.Set()
enterprise, err := enterpriseDb.GetEnterprise(req.EnterpriseId)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if enterprise == nil {
e.OutErr(c, e.ERR_NO_DATA, "未查询到对应记录")
return
}

err = svc2.SelfSupportForSchoolStudentDelete(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, "success", nil)
return
}

func SelfSupportForSchoolTeacherDelete(c *gin.Context) {
var req md.SelfSupportForSchoolTeacherDeleteReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}

//删除 user_identity
_, err = db.Db.Where("enterprise_id =?", req.EnterpriseId).In("id", req.UserIdentityIds).Delete(model.UserIdentity{})
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}

//删除 self_support_for_user_face_info
_, err = db.Db.In("user_identity_id =?", req.UserIdentityIds).Delete(model.SelfSupportForUserFaceInfo{})
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}

e.OutSuc(c, "success", nil)
return
}

+ 90
- 0
app/admin/md/md_enterprise_manage.go ファイルの表示

@@ -208,3 +208,93 @@ type CentralKitchenForSchoolOrdListReq struct {
StartDate string `json:"start_date" label:"开始时间"`
EndDate string `json:"end_date" label:"截止时间"`
}

type SelfSupportForSchoolUserUpdateReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
Uid int `json:"uid" binding:"required" label:"用户id"`
Nickname string `json:"nickname" binding:"required" label:"支付宝昵称"`
Phone string `json:"phone" binding:"required" label:"手机号"`
BindUserIdentities []struct {
UserIdentityId int `json:"user_identity_id" label:"用户身份id"`
IdNo string `json:"id_no" label:"身份证号"`
Name string `json:"name" label:"姓名"`
GradeId int `json:"grade_id" label:"年级"`
ClassId int `json:"class_id" label:"班级"`
} `json:"user_identities" label:"身份列表"`
}

type SelfSupportForSchoolUserDeleteReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
Uids []int `json:"uids" binding:"required" label:"用户id"`
}

type SelfSupportForSchoolStudentListReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
Limit int `json:"limit" binding:"required"`
Page int `json:"page" binding:"required"`
Name string `json:"name" label:"姓名"`
IdNo string `json:"id_no" label:"身份证号"`
Phone string `json:"phone" label:"手机号"`
GradeId int `json:"grade_id" label:"年级id"`
ClassId int `json:"class_id" label:"班级id"`
}

type SelfSupportForSchoolStudentListResp struct {
IdNo string `json:"id_no" label:"身份证号"`
ParentPhone string `json:"parent_phone" label:"家长电话"`
Name string `json:"name" label:"姓名"`
Grade string `json:"grade" label:"年级"`
GradeId int `json:"grade_id" label:"年级id"`
Class string `json:"class" label:"班级"`
ClassId int `json:"class_id" label:"班级"`
UserIdentityId int `json:"user_identity_id" label:"用户身份id"`
}

type SelfSupportForSchoolTeacherListReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
Limit int `json:"limit" binding:"required"`
Page int `json:"page" binding:"required"`
Name string `json:"name" label:"姓名"`
IdNo string `json:"id_no" label:"身份证号"`
}

type SelfSupportForSchoolTeacherListResp struct {
UserIdentityId int `json:"user_identity_id" label:"用户身份id"`
IdNo string `json:"id_no" label:"身份证号"`
Phone string `json:"parent_phone" label:"电话"`
Name string `json:"name" label:"姓名"`
}

type SelfSupportForSchoolStudentUpdateReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
UserIdentityId int `json:"user_identity_id" binding:"required" label:"用户身份id"`
IdNo string `json:"id_no" label:"身份证号"`
Name string `json:"name" label:"姓名"`
GradeId int `json:"grade_id" label:"年级id"`
ClassId int `json:"class_id" label:"班级id"`
CollectFaceType int `json:"collect_face_type" label:"采集人脸方式(1:个采 2:集采)"`
}

type SelfSupportForSchoolStudentDeleteReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
UserIdentityIds []int `json:"user_identity_ids" binding:"required" label:"用户身份id"`
}

type SelfSupportForSchoolStudentAdmissionReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
ClassId int `json:"class_id" binding:"required" label:"班级id"`
GradeId int `json:"grade_id" binding:"required" label:"年级id"`
}

type SelfSupportForSchoolTeacherUpdateReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
UserIdentityId int `json:"user_identity_id" binding:"required" label:"用户身份id"`
IdNo string `json:"id_no" label:"身份证号"`
Name string `json:"name" label:"姓名"`
CollectFaceType int `json:"collect_face_type" label:"采集人脸方式(1:个采 2:集采)"`
}

type SelfSupportForSchoolTeacherDeleteReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
UserIdentityIds []int `json:"user_identity_ids" binding:"required" label:"用户身份id"`
}

+ 431
- 0
app/admin/svc/enterprise_manage/svc_self_support_for_school.go ファイルの表示

@@ -0,0 +1,431 @@
package svc

import (
"applet/app/admin/md"
"applet/app/db"
"applet/app/db/model"
enum2 "applet/app/enum"
"applet/app/utils"
"errors"
"time"
)

func SelfSupportForSchoolUserUpdate(req md.SelfSupportForSchoolUserUpdateReq) (err error) {
//1、删除当前用户&&当前单位下的所有身份对应的 `class_with_user` 记录
var userIdentities []model.UserIdentity
err = db.Db.Where("uid =? AND enterprise_id =?", req.Uid, req.EnterpriseId).Find(&userIdentities)
if err != nil {
return
}
var userIdentityIds []int
for _, v := range userIdentities {
userIdentityIds = append(userIdentityIds, v.Id)
}
_, err = db.Db.In("user_identity_id", userIdentityIds).Delete(model.ClassWithUser{})
if err != nil {
return
}

session := db.Db.NewSession()
defer session.Close()
session.Begin()

//2、新增 / 编辑 数据
now := time.Now()
selfSupportForSchoolInfoDb := db.SelfSupportForSchoolInfoDb{}
selfSupportForSchoolInfoDb.Set(req.EnterpriseId)
selfSupportForSchoolInfo, err := selfSupportForSchoolInfoDb.GetSelfSupportForSchoolInfo()
if err != nil {
return
}
if selfSupportForSchoolInfo == nil {
return errors.New("当前学校暂未完成《一脸通行入驻》")
}

userIdentityDb := db.UserIdentityDb{}
userIdentityDb.Set(req.Uid)

classWithUserDb := db.ClassWithUserDb{}
classWithUserDb.Set()

selfSupportForUserFaceInfoDb := db.SelfSupportForUserFaceInfoDb{}
var newUserIdentityIds []string
for _, v := range req.BindUserIdentities {
if v.UserIdentityId == 0 {
// 新增
if v.ClassId == -1 {
//TODO::为老师身份
_, err3 := userIdentityDb.UserIdentityInsertBySession(session, &model.UserIdentity{
Uid: req.Uid,
Name: v.Name,
IdNo: v.IdNo,
Kind: enum2.UserIdentityKindForCommon,
Identity: enum2.UserIdentityForCentralKitchenForTeacher,
EnterpriseId: req.EnterpriseId,
Memo: "",
CreateAt: now.Format("2006-01-02 15:04:05"),
UpdateAt: now.Format("2006-01-02 15:04:05"),
})
if err3 != nil {
_ = session.Rollback()
return err3
}
continue
}

insertId, err1 := userIdentityDb.UserIdentityInsertBySession(session, &model.UserIdentity{
Uid: req.Uid,
Name: v.Name,
IdNo: v.IdNo,
Kind: enum2.UserIdentityKindForCommon,
Identity: enum2.UserIdentityForCentralKitchenForStudent,
EnterpriseId: req.EnterpriseId,
Memo: "",
CreateAt: now.Format("2006-01-02 15:04:05"),
UpdateAt: now.Format("2006-01-02 15:04:05"),
})
if err1 != nil {
_ = session.Rollback()
return err1
}

_, err2 := classWithUserDb.ClassWithUserInsertBySession(session, &model.ClassWithUser{
UserIdentityId: insertId,
ClassId: v.ClassId,
CreateAt: now.Format("2006-01-02 15:04:05"),
UpdateAt: now.Format("2006-01-02 15:04:05"),
})
if err2 != nil {
_ = session.Rollback()
return err1
}

selfSupportForUserFaceInfoDb.Set(insertId)
_, err = selfSupportForUserFaceInfoDb.SelfSupportForUserFaceInfoInsert(&model.SelfSupportForUserFaceInfo{
UserIdentityId: insertId,
CollectFaceType: 1, //默认个采
SchoolCode: selfSupportForSchoolInfo.SchoolCode,
SchoolStdCode: selfSupportForSchoolInfo.SchoolStdCode,
ParentUserId: "",
ParentLogonId: "",
UserId: "",
SchoolFacePassStatus: "CLOSE",
SchoolFacePaymentStatus: "CLOSE",
ConcentrateSchoolFacePassStatus: 1,
CreateAt: now.Format("2006-01-02 15:04:05"),
UpdateAt: now.Format("2006-01-02 15:04:05"),
})
if err != nil {
return err
}

newUserIdentityIds = append(newUserIdentityIds, utils.IntToStr(insertId))
} else {
//编辑
identity, err2 := userIdentityDb.GetUserIdentity(v.UserIdentityId)
if err != nil {
_ = session.Rollback()
return err2
}
if identity == nil {
_ = session.Rollback()
return errors.New("未查询到对应的身份信息记录")
}
identity.IdNo = v.IdNo
identity.Name = v.Name
if v.ClassId == -1 {
//TODO::为老师身份
identity.Identity = enum2.UserIdentityForCentralKitchenForTeacher
} else {
_, err3 := classWithUserDb.ClassWithUserInsertBySession(session, &model.ClassWithUser{
UserIdentityId: v.UserIdentityId,
ClassId: v.ClassId,
CreateAt: now.Format("2006-01-02 15:04:05"),
UpdateAt: now.Format("2006-01-02 15:04:05"),
})
if err3 != nil {
_ = session.Rollback()
return err3
}
}
_, err3 := userIdentityDb.UserIdentityUpdateBySession(session, v.UserIdentityId, identity, "id_no", "name", "identity")
if err3 != nil {
_ = session.Rollback()
return err3
}

newUserIdentityIds = append(newUserIdentityIds, utils.IntToStr(v.UserIdentityId))
}
}

//3、删除需要删除的身份信息
for _, v := range userIdentityIds {
if !utils.InArr(utils.IntToStr(v), newUserIdentityIds) {
_, err = session.Where("id = ?", v).Delete(model.UserIdentity{})
if err != nil {
_ = session.Rollback()
return
}

_, err = session.Where("user_identity_id = ?", v).Delete(model.SelfSupportForUserFaceInfo{})
if err != nil {
_ = session.Rollback()
return
}
}
}
return session.Commit()
}

func SelfSupportForSchoolUserDelete(req md.SelfSupportForSchoolUserDeleteReq) (err error) {
//1、删除 class_with_user
var userIdentities []model.UserIdentity
err = db.Db.Where("enterprise_id =?", req.EnterpriseId).In("uid", req.Uids).Find(&userIdentities)
if err != nil {
return
}
var userIdentityIds []int
for _, v := range userIdentities {
userIdentityIds = append(userIdentityIds, v.Id)
}
_, err = db.Db.In("user_identity_id", userIdentityIds).Delete(model.ClassWithUser{})
if err != nil {
return
}

//2、删除 user_identity
_, err = db.Db.Where("enterprise_id =?", req.EnterpriseId).In("uid", req.Uids).Delete(model.UserIdentity{})
if err != nil {
return
}

//3、删除 self_support_for_user_face_info
_, err = db.Db.In("user_identity_id =?", userIdentityIds).Delete(model.SelfSupportForUserFaceInfo{})
if err != nil {
return
}

return
}

func SelfSupportForSchoolStudentList(req md.SelfSupportForSchoolStudentListReq) (resp []md.SelfSupportForSchoolStudentListResp, count int64, err error) {
var classWithUserIdentityIdsOne []int
var classWithUserIdentityIdsTwo []int
classWithUserDb := db.ClassWithUserDb{}
classWithUserDb.Set()
if req.ClassId != 0 {
classWithUsers, err2 := classWithUserDb.FindUserIdentity(req.ClassId)
if err2 != nil {
return nil, 0, err2
}
for _, v := range *classWithUsers {
classWithUserIdentityIdsOne = append(classWithUserIdentityIdsOne, v.UserIdentityId)
}
}
if req.GradeId != 0 {
classDb := db.ClassDb{}
classDb.Set(req.GradeId)
classes, err3 := classDb.FindClass()
if err3 != nil {
return nil, 0, err3
}
var classesId []int
for _, v := range *classes {
classesId = append(classesId, v.Id)
}
classWithUsers, err4 := classWithUserDb.FindUserIdentity(classesId)
if err4 != nil {
return nil, 0, err4
}
for _, v := range *classWithUsers {
classWithUserIdentityIdsTwo = append(classWithUserIdentityIdsTwo, v.UserIdentityId)
}
}
sess := db.Db.Where("user_identity.enterprise_id =?", req.EnterpriseId).And("identity =?", enum2.UserIdentityForCentralKitchenForStudent)
if req.Name != "" {
sess.And("user_identity.name like ?", "%"+req.Name+"%")
}
if req.IdNo != "" {
sess.And("user_identity.id_no like ?", "%"+req.IdNo+"%")
}
if len(classWithUserIdentityIdsOne) > 0 {
sess.In("user_identity.id", classWithUserIdentityIdsOne)
}
if len(classWithUserIdentityIdsTwo) > 0 {
sess.In("user_identity.id", classWithUserIdentityIdsTwo)
}

var m []*db.UserIdentityWithUser
count, err = sess.
Join("LEFT", "user", "user_identity.uid = user.id").
Join("LEFT", "class_with_user", "class_with_user.user_identity_id = user_identity.id").
Join("LEFT", "class", "class_with_user.class_id = class.id").
Join("LEFT", "grade", "class.grade_id = grade.id").
Limit(req.Limit, (req.Page-1)*req.Limit).FindAndCount(&m)
if err != nil {
return nil, 0, err
}

for _, v := range m {
resp = append(resp, md.SelfSupportForSchoolStudentListResp{
IdNo: v.UserIdentity.IdNo,
ParentPhone: v.User.Phone,
Name: v.UserIdentity.Name,
Grade: v.Grade.Name,
GradeId: v.Grade.Id,
Class: v.Class.Name,
ClassId: v.Class.Id,
UserIdentityId: v.UserIdentity.Id,
})
}
return
}

func SelfSupportForSchoolTeacherList(req md.SelfSupportForSchoolTeacherListReq) (resp []md.SelfSupportForSchoolTeacherListResp, count int64, err error) {
var classWithUserIdentityIdsOne []int
var classWithUserIdentityIdsTwo []int
classWithUserDb := db.ClassWithUserDb{}
classWithUserDb.Set()

sess := db.Db.Where("user_identity.enterprise_id =?", req.EnterpriseId).And("user_identity.identity =?", enum2.UserIdentityForCentralKitchenForTeacher)
if req.Name != "" {
sess.And("user_identity.name like ?", "%"+req.Name+"%")
}
if req.IdNo != "" {
sess.And("user_identity.id_no like ?", "%"+req.IdNo+"%")
}
if len(classWithUserIdentityIdsOne) > 0 {
sess.In("user_identity.id", classWithUserIdentityIdsOne)
}
if len(classWithUserIdentityIdsTwo) > 0 {
sess.In("user_identity.id", classWithUserIdentityIdsTwo)
}

var m []*db.UserIdentityWithUser
count, err = sess.
Join("LEFT", "user", "user_identity.uid = user.id").
Join("LEFT", "class_with_user", "class_with_user.user_identity_id = user_identity.id").
Join("LEFT", "class", "class_with_user.class_id = class.id").
Join("LEFT", "grade", "class.grade_id = grade.id").
Limit(req.Limit, (req.Page-1)*req.Limit).FindAndCount(&m)
if err != nil {
return nil, 0, err
}

for _, v := range m {
resp = append(resp, md.SelfSupportForSchoolTeacherListResp{
UserIdentityId: v.UserIdentity.Id,
IdNo: v.UserIdentity.IdNo,
Phone: v.User.Phone,
Name: v.UserIdentity.Name,
})
}
return
}

func SelfSupportForSchoolStudentUpdate(req md.SelfSupportForSchoolStudentUpdateReq) (err error) {
session := db.Db.NewSession()
defer session.Close()
session.Begin()

//1、修改 `user_identity`
userIdentityDb := db.UserIdentityDb{}
userIdentityDb.Set(0)
userIdentity, err := userIdentityDb.GetUserIdentity(req.UserIdentityId)
if err != nil {
return
}
if userIdentity == nil {
return errors.New("未查询到对应记录")
}
userIdentity.IdNo = req.IdNo
userIdentity.Name = req.Name
_, err = userIdentityDb.UserIdentityUpdate(req.UserIdentityId, userIdentity, "id_no", "name")
if err != nil {
return
}

//2、更新 `class_with_user`
_, err = session.Where("user_identity_id =?", req.UserIdentityId).Delete(model.ClassWithUser{})
if err != nil {
_ = session.Rollback()
return
}

classWithUserDb := db.ClassWithUserDb{}
classWithUserDb.Set()
_, err = classWithUserDb.ClassWithUserInsertBySession(session, &model.ClassWithUser{
UserIdentityId: req.UserIdentityId,
ClassId: req.ClassId,
CreateAt: time.Time{}.Format("2006-01-02 15:04:05"),
UpdateAt: time.Time{}.Format("2006-01-02 15:04:05"),
})

//3、更新 self_support_for_user_face_info
selfSupportForUserFaceInfoDb := db.SelfSupportForUserFaceInfoDb{}
selfSupportForUserFaceInfoDb.Set(req.UserIdentityId)
info, err := selfSupportForUserFaceInfoDb.GetSelfSupportForUserFaceInfo()
if err != nil {
_ = session.Rollback()
return
}
info.CollectFaceType = req.CollectFaceType
_, err = selfSupportForUserFaceInfoDb.SelfSupportForUserFaceInfoUpdate(info, "collect_face_type")
if err != nil {
_ = session.Rollback()
}
return session.Commit()
}

func SelfSupportForSchoolStudentDelete(req md.SelfSupportForSchoolStudentDeleteReq) (err error) {
//1、删除 class_with_user
_, err = db.Db.In("user_identity_id", req.UserIdentityIds).Delete(model.ClassWithUser{})
if err != nil {
return
}

//2、删除 user_identity
_, err = db.Db.Where("enterprise_id =?", req.EnterpriseId).In("id", req.UserIdentityIds).Delete(model.UserIdentity{})
if err != nil {
return
}

//3、删除 self_support_for_user_face_info
_, err = db.Db.In("user_identity_id =?", req.UserIdentityIds).Delete(model.SelfSupportForUserFaceInfo{})
if err != nil {
return
}
return
}

func SelfSupportForSchoolStudentAdmission(req md.SelfSupportForSchoolStudentAdmissionReq) (err error) {
//1、判断 "按年级" / "按班级" 升级
if req.ClassId != 0 {
// 删除 class_with_user 记录
_, err = db.Db.Where("class_id = ?", req.ClassId).Delete(model.ClassWithUser{})
if err != nil {
return
}
}
if req.GradeId != 0 {
// 查找班级记录
classDb := db.ClassDb{}
classDb.Set(req.GradeId)
classes, err1 := classDb.FindClass()
if err1 != nil {
return err1
}
var classesIds []int
for _, v := range *classes {
classesIds = append(classesIds, v.Id)
}

// 删除 class_with_user 记录
_, err = db.Db.In("class_id", classesIds).Delete(model.ClassWithUser{})
if err != nil {
return
}
}

return
}

+ 36
- 3
app/customer/hdl/hdl_user_identity.go ファイルの表示

@@ -189,17 +189,50 @@ func SaveSelfSupportForSchoolUserIdentity(c *gin.Context) {
if !req.IsTeacher {
classWithUserDb := db.ClassWithUserDb{}
classWithUserDb.Set()
_, err = classWithUserDb.ClassWithUserInsert(&model.ClassWithUser{
_, err1 := classWithUserDb.ClassWithUserInsert(&model.ClassWithUser{
UserIdentityId: insertAffected,
ClassId: req.ClassId,
CreateAt: now.Format("2006-01-02 15:04:05"),
UpdateAt: now.Format("2006-01-02 15:04:05"),
})
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
if err1 != nil {
e.OutErr(c, e.ERR_DB_ORM, err1.Error())
return
}
}

//4、新增 self_support_for_user_face_info 记录
selfSupportForSchoolInfoDb := db.SelfSupportForSchoolInfoDb{}
selfSupportForSchoolInfoDb.Set(req.EnterpriseId)
selfSupportForSchoolInfo, err := selfSupportForSchoolInfoDb.GetSelfSupportForSchoolInfo()
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if selfSupportForSchoolInfo == nil {
e.OutErr(c, e.ERR_NO_DATA, "当前学校暂未完成《一脸通行入驻》")
return
}
selfSupportForUserFaceInfoDb := db.SelfSupportForUserFaceInfoDb{}
selfSupportForUserFaceInfoDb.Set(insertAffected)
_, err2 := selfSupportForUserFaceInfoDb.SelfSupportForUserFaceInfoInsert(&model.SelfSupportForUserFaceInfo{
UserIdentityId: insertAffected,
CollectFaceType: 1,
SchoolCode: selfSupportForSchoolInfo.SchoolCode,
SchoolStdCode: selfSupportForSchoolInfo.SchoolStdCode,
ParentUserId: "",
ParentLogonId: "",
UserId: "",
SchoolFacePassStatus: "CLOSE",
SchoolFacePaymentStatus: "CLOSE",
ConcentrateSchoolFacePassStatus: 1,
CreateAt: now.Format("2006-01-02 15:04:05"),
UpdateAt: now.Format("2006-01-02 15:04:05"),
})
if err2 != nil {
e.OutErr(c, e.ERR_DB_ORM, err2.Error())
return
}
} else {
if isHasUserIdentity != nil && isHasUserIdentity.Uid != 0 && isHasUserIdentity.Uid != user.Id {
e.OutErr(c, e.ERR, "当前身份信息已被绑定使用")


+ 1
- 1
app/customer/svc/svc_curl_smart_pay.go ファイルの表示

@@ -282,7 +282,7 @@ func CurlEducateSceneTokenQuery(args md.CurlEducateSceneTokenReq, userIdentityId
info.SchoolFacePassStatus = res["school_face_pass_status"]
info.SchoolFacePaymentStatus = res["school_face_payment_status"]
info.UpdateAt = now
_, err2 := selfSupportForUserFaceInfoDb.SelfSupportForUserFaceInfoUpdate(info, "parent_user_id", "parent_logon_id", "user_id", "school_face_pass_status", "school_face_payment_status", "create_at")
_, err2 := selfSupportForUserFaceInfoDb.SelfSupportForUserFaceInfoUpdate(info, "parent_user_id", "parent_logon_id", "user_id", "school_face_pass_status", "school_face_payment_status", "update_at")
if err2 != nil {
return err2, nil
}


+ 13
- 12
app/db/model/self_support_for_user_face_info.go ファイルの表示

@@ -1,16 +1,17 @@
package model

type SelfSupportForUserFaceInfo struct {
Id int `json:"id" xorm:"not null pk autoincr INT(11)"`
UserIdentityId int `json:"user_identity_id" xorm:"not null default 0 comment('用户身份id') INT(11)"`
CollectFaceType int `json:"collect_face_type" xorm:"not null default 1 comment('采集人脸方式(1:个采 2:集采)') TINYINT(1)"`
SchoolCode string `json:"school_code" xorm:"not null default '' comment('学校内标') VARCHAR(255)"`
SchoolStdCode string `json:"school_std_code" xorm:"not null default '' comment('学校外标') VARCHAR(255)"`
ParentUserId string `json:"parent_user_id" xorm:"not null default '' comment('用于开通一脸通行的支付宝账户uid(如果是父母为孩子开通,则为父母支付宝uid;如果是用户为本人开通,则为本人支付宝uid)') VARCHAR(255)"`
ParentLogonId string `json:"parent_logon_id" xorm:"not null default '' comment('家长支付宝账户的脱敏信息') VARCHAR(255)"`
UserId string `json:"user_id" xorm:"not null default '' comment('刷脸用户id') VARCHAR(255)"`
SchoolFacePassStatus string `json:"school_face_pass_status" xorm:"not null default '' comment('校园一脸通行开通状态(开通:OPEN 关闭:CLOSE)') CHAR(50)"`
SchoolFacePaymentStatus string `json:"school_face_payment_status" xorm:"not null default '' comment('校园一脸通行刷脸支付开通状态(开通:OPEN 关闭:CLOSE)') CHAR(50)"`
CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
Id int `json:"id" xorm:"not null pk autoincr INT(11)"`
UserIdentityId int `json:"user_identity_id" xorm:"not null default 0 comment('用户身份id') INT(11)"`
CollectFaceType int `json:"collect_face_type" xorm:"not null default 1 comment('采集人脸方式(1:个采 2:集采)') TINYINT(1)"`
SchoolCode string `json:"school_code" xorm:"not null default '' comment('学校内标') VARCHAR(255)"`
SchoolStdCode string `json:"school_std_code" xorm:"not null default '' comment('学校外标') VARCHAR(255)"`
ParentUserId string `json:"parent_user_id" xorm:"not null default '' comment('用于开通一脸通行的支付宝账户uid(如果是父母为孩子开通,则为父母支付宝uid;如果是用户为本人开通,则为本人支付宝uid)') VARCHAR(255)"`
ParentLogonId string `json:"parent_logon_id" xorm:"not null default '' comment('家长支付宝账户的脱敏信息') VARCHAR(255)"`
UserId string `json:"user_id" xorm:"not null default '' comment('刷脸用户id') VARCHAR(255)"`
SchoolFacePassStatus string `json:"school_face_pass_status" xorm:"not null default '' comment('校园一脸通行开通状态(开通:OPEN 关闭:CLOSE)') CHAR(50)"`
SchoolFacePaymentStatus string `json:"school_face_payment_status" xorm:"not null default '' comment('校园一脸通行刷脸支付开通状态(开通:OPEN 关闭:CLOSE)') CHAR(50)"`
ConcentrateSchoolFacePassStatus int `json:"concentrate_school_face_pass_status" xorm:"not null default 1 comment('校园一脸通行集采状态(1:待采集 2:待确认 3:已确认)') TINYINT(1)"`
CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
}

+ 9
- 1
app/router/admin_router.go ファイルの表示

@@ -135,7 +135,15 @@ func rEnterpriseManage(r *gin.RouterGroup) {
r.POST("/saveCentralKitchenForSchoolPackage", hdl.SaveCentralKitchenForSchoolPackage) //新增/编辑 "央厨-学校-套餐"
r.DELETE("/deleteCentralKitchenForSchoolPackage/:id", hdl.DeleteCentralKitchenForSchoolPackage) //删除 "央厨-学校-套餐"

r.POST("/selfSupportForSchool/studentList", hdl.CentralKitchenForSchoolStudentList) //"央厨-学校"学生列表
r.POST("/selfSupportForSchool/userUpdate", hdl.SelfSupportForSchoolUserUpdate) //"自营-学校"用户编辑
r.POST("/selfSupportForSchool/userDelete", hdl.SelfSupportForSchoolUserDelete) //"自营-学校"用户删除
r.POST("/selfSupportForSchool/studentList", hdl.SelfSupportForSchoolStudentList) //"自营-学校"学生列表
r.POST("/selfSupportForSchool/studentUpdate", hdl.SelfSupportForSchoolStudentUpdate) //"自营-学校"学生编辑
r.POST("/selfSupportForSchool/studentDelete", hdl.SelfSupportForSchoolStudentDelete) //"自营-学校"学生删除
r.POST("/selfSupportForSchool/studentAdmission", hdl.SelfSupportForSchoolStudentAdmission) //"自营-学校"学生升学
r.POST("/selfSupportForSchool/teacherList", hdl.SelfSupportForSchoolTeacherList) //"自营-学校"教师列表
r.POST("/selfSupportForSchool/teacherUpdate", hdl.SelfSupportForSchoolTeacherUpdate) //"自营-学校"教师编辑
r.POST("/selfSupportForSchool/teacherDelete", hdl.SelfSupportForSchoolTeacherDelete) //"自营-学校"教师删除

}



読み込み中…
キャンセル
保存