Compare commits

...

7 Ревизии

Автор SHA1 Съобщение Дата
  DengBiao 550363bc49 1 преди 1 година
  DengBiao bc6a62dd9d 1 преди 1 година
  DengBiao cdfe5abc48 update преди 1 година
  DengBiao 3b441204c7 Merge branch 'master' into factory преди 1 година
  DengBiao 83693d2bb0 Merge branch 'master' into factory преди 1 година
  DengBiao bd9b75c92d Merge branch 'master' into factory преди 1 година
  DengBiao de4dfe3e5b 1 преди 1 година
променени са 39 файла, в които са добавени 2736 реда и са изтрити 5 реда
  1. +55
    -0
      app/admin/enum/enum_factory_identity.go
  2. +19
    -0
      app/admin/enum/enum_factory_set.go
  3. +14
    -0
      app/admin/hdl/enterprise_manage/hdl_enterprise.go
  4. +767
    -0
      app/admin/hdl/enterprise_manage/hdl_factory_identity.go
  5. +128
    -0
      app/admin/hdl/hdl_device.go
  6. +4
    -0
      app/admin/hdl/hdl_enterprise.go
  7. +16
    -0
      app/admin/md/md_device.go
  8. +22
    -0
      app/admin/md/md_enterprise_manage.go
  9. +16
    -0
      app/admin/md/md_factory.go
  10. +159
    -0
      app/admin/md/md_factory_identity.go
  11. +89
    -0
      app/admin/svc/enterprise_manage/svc_enterprise_manage.go
  12. +368
    -0
      app/admin/svc/enterprise_manage/svc_factory.go
  13. +203
    -0
      app/admin/svc/svc_factory_identity.go
  14. +53
    -0
      app/customer/hdl/hdl_self_support_for_school_order.go
  15. +19
    -0
      app/customer/hdl/hdl_user.go
  16. +89
    -0
      app/customer/hdl/hdl_user_identity.go
  17. +9
    -0
      app/customer/md/md_order.go
  18. +13
    -0
      app/customer/md/md_user_identity.go
  19. +61
    -0
      app/customer/svc/order/svc_factory_ord.go
  20. +2
    -2
      app/customer/svc/order/svc_self_support_for_school_order.go
  21. +19
    -0
      app/customer/svc/svc_user_identity.go
  22. +103
    -0
      app/db/db_factory_device.go
  23. +111
    -0
      app/db/db_factory_identity.go
  24. +68
    -0
      app/db/db_factory_identity_with_user_identity.go
  25. +115
    -0
      app/db/db_factory_ord.go
  26. +45
    -0
      app/db/db_factory_set.go
  27. +9
    -0
      app/db/db_user.go
  28. +11
    -0
      app/db/model/factory_device.go
  29. +16
    -0
      app/db/model/factory_identity.go
  30. +9
    -0
      app/db/model/factory_identity_with_user_identity.go
  31. +27
    -0
      app/db/model/factory_ord.go
  32. +10
    -0
      app/db/model/factory_set.go
  33. +3
    -0
      app/enum/enum_enterprise.go
  34. +40
    -0
      app/enum/enum_factory_ord.go
  35. +3
    -0
      app/enum/enum_user_identity.go
  36. +31
    -3
      app/router/admin_router.go
  37. +9
    -0
      app/router/customer_router.go
  38. +1
    -0
      go.mod
  39. Двоични данни
     

+ 55
- 0
app/admin/enum/enum_factory_identity.go Целия файл

@@ -0,0 +1,55 @@
package enum

type FactoryIdentityState int32

const (
FactoryIdentityStateForNormal = 1
FactoryIdentityStateForFreeze = 2
)

func (gt FactoryIdentityState) String() string {
switch gt {
case FactoryIdentityStateForNormal:
return "正常"
case FactoryIdentityStateForFreeze:
return "冻结"
default:
return "未知"
}
}

type FactoryIdentityIsSubsidy int32

const (
FactoryIdentityIsSubsidyForNo = 0
FactoryIdentityIsSubsidyForYes = 1
)

func (gt FactoryIdentityIsSubsidy) String() string {
switch gt {
case FactoryIdentityIsSubsidyForNo:
return "不开启优惠补贴"
case FactoryIdentityIsSubsidyForYes:
return "开启优惠补贴"
default:
return "未知"
}
}

type FactoryIdentityIsLimitConsumeNum int32

const (
FactoryIdentityIsLimitConsumeNumForNo = 0
FactoryIdentityIsLimitConsumeNumForYes = 1
)

func (gt FactoryIdentityIsLimitConsumeNum) String() string {
switch gt {
case FactoryIdentityIsSubsidyForNo:
return "不限制消费次数"
case FactoryIdentityIsSubsidyForYes:
return "限制消费次数"
default:
return "未知"
}
}

+ 19
- 0
app/admin/enum/enum_factory_set.go Целия файл

@@ -0,0 +1,19 @@
package enum

type FactorySetIsOpenNaturalCustomer int32

const (
FactorySetIsOpenNaturalCustomerForYes = 1
FactorySetIsOpenNaturalCustomerForNo = 2
)

func (gt FactorySetIsOpenNaturalCustomer) String() string {
switch gt {
case FactorySetIsOpenNaturalCustomerForYes:
return "开启自然顾客"
case FactorySetIsOpenNaturalCustomerForNo:
return "关闭自然顾客"
default:
return "未知"
}
}

+ 14
- 0
app/admin/hdl/enterprise_manage/hdl_enterprise.go Целия файл

@@ -42,6 +42,13 @@ func EnterpriseManageInfo(c *gin.Context) {
return
}
}
if enterprise.Pvd == enum.EnterprisePvdForAllPayment && enterprise.Mode == enum.EnterpriseModeForFactory {
err, resp = svc.FactoryInfo(utils.StrToInt(enterpriseId))
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
}
if enterprise.Kind == enum.EnterpriseKindByNursingHome {
err, resp = svc.NursingHomeInfo(utils.StrToInt(enterpriseId))
if err != nil {
@@ -115,6 +122,13 @@ func UserIdentityList(c *gin.Context) {
return
}
}
if enterprise.Pvd == enum.EnterprisePvdForAllPayment && enterprise.Mode == enum.EnterpriseModeForFactory {
resp, err = svc2.EnterpriseUserListByFactory(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
}
if enterprise.Kind == enum.EnterpriseKindByNursingHome {
resp, err = svc2.EnterpriseUserListByNursingHome(req)
if err != nil {


+ 767
- 0
app/admin/hdl/enterprise_manage/hdl_factory_identity.go Целия файл

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

import (
"applet/app/admin/enum"
"applet/app/admin/lib/validate"
"applet/app/admin/md"
"applet/app/admin/svc"
svc2 "applet/app/admin/svc/enterprise_manage"
"applet/app/db"
"applet/app/db/model"
"applet/app/e"
enum2 "applet/app/enum"
"applet/app/utils"
"fmt"
"github.com/360EntSecGroup-Skylar/excelize"
"github.com/gin-gonic/gin"
"github.com/jinzhu/copier"
"strconv"
"time"
)

func FactoryIdentityList(c *gin.Context) {
enterpriseId := utils.StrToInt(c.DefaultQuery("enterprise_id", "0"))
var req md.FactoryIdentityListReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}

factoryIdentity := db.FactoryIdentityDb{}
factoryIdentity.Set(enterpriseId)
factoryIdentityList, total, err := factoryIdentity.FindFactoryIdentity(req.Page, req.Limit)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}

var result []*md.FactoryIdentityListResp
for _, v := range *factoryIdentityList {
var temp md.FactoryIdentityListResp
copier.Copy(&temp, v)
sql := fmt.Sprintf("SELECT count(*) as total FROM factory_identity_with_user_identity where factory_identity_id = %d", v.Id)
mapArr1, err1 := db.QueryNativeString(db.Db, sql)
if err1 != nil {
e.OutErr(c, e.ERR, err1.Error())
return
}
temp.WithUserIdentitiesNum = mapArr1[0]["total"]
result = append(result, &temp)
}

e.OutSuc(c, map[string]interface{}{
"list": result,
"total": total,
"state": []map[string]interface{}{
{
"name": enum.FactoryIdentityState(enum.FactoryIdentityStateForNormal).String(),
"value": enum.FactoryIdentityStateForNormal,
},
{
"name": enum.FactoryIdentityState(enum.FactoryIdentityStateForFreeze).String(),
"value": enum.FactoryIdentityStateForFreeze,
},
},
"is_subsidy": []map[string]interface{}{
{
"name": enum.FactoryIdentityIsSubsidy(enum.FactoryIdentityIsSubsidyForYes).String(),
"value": enum.FactoryIdentityIsSubsidyForYes,
},
{
"name": enum.FactoryIdentityIsSubsidy(enum.FactoryIdentityIsSubsidyForNo).String(),
"value": enum.FactoryIdentityIsSubsidyForNo,
},
},
"is_limit_consume_num": []map[string]interface{}{
{
"name": enum.FactoryIdentityIsLimitConsumeNum(enum.FactoryIdentityIsLimitConsumeNumForNo).String(),
"value": enum.FactoryIdentityIsLimitConsumeNumForNo,
},
{
"name": enum.FactoryIdentityIsLimitConsumeNum(enum.FactoryIdentityIsLimitConsumeNumForYes).String(),
"value": enum.FactoryIdentityIsLimitConsumeNumForYes,
},
},
}, nil)
return
}

func AddFactoryIdentity(c *gin.Context) {
enterpriseId := utils.StrToInt(c.DefaultQuery("enterprise_id", "0"))
var req md.AddFactoryIdentityReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
factoryIdentityDb := db.FactoryIdentityDb{}
factoryIdentityDb.Set(0)
now := time.Now()
if req.SubsidyAmount == "" {
req.SubsidyAmount = "0.00"
}
if req.LeastPayAmount == "" {
req.LeastPayAmount = "0.00"
}
_, err = factoryIdentityDb.FactoryIdentityInsert(&model.FactoryIdentity{
Name: req.Name,
EnterpriseId: enterpriseId,
State: enum.FactoryIdentityStateForNormal,
Memo: req.Memo,
IsSubsidy: req.IsSubsidy,
SubsidyAmount: req.SubsidyAmount,
LeastPayAmount: req.LeastPayAmount,
IsLimitConsumeNum: req.IsLimitConsumeNum,
LimitConsumeNum: req.LimitConsumeNum,
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())
return
}

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

func UpdateFactoryIdentity(c *gin.Context) {
var req md.UpdateFactoryIdentityReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
factoryIdentityDb := db.FactoryIdentityDb{}
factoryIdentityDb.Set(0)
factoryIdentity, err := factoryIdentityDb.GetFactoryIdentity(req.Id)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if factoryIdentity == nil {
e.OutErr(c, e.ERR_NO_DATA, "未查询到相应记录")
return
}
factoryIdentity.Name = req.Name
factoryIdentity.Memo = req.Memo
factoryIdentity.IsSubsidy = req.IsSubsidy
factoryIdentity.SubsidyAmount = req.SubsidyAmount
factoryIdentity.LeastPayAmount = req.LeastPayAmount
factoryIdentity.IsLimitConsumeNum = req.IsLimitConsumeNum
factoryIdentity.LimitConsumeNum = req.LimitConsumeNum
_, err = factoryIdentityDb.UpdateFactoryIdentity(factoryIdentity,
"name", "memo", "is_subsidy", "subsidy_amount", "least_pay_amount", "is_limit_consume_num", "limit_consume_num")
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
e.OutSuc(c, "success", nil)
return
}

func UpdateFactoryIdentityState(c *gin.Context) {
var req md.UpdateFactoryIdentityStateReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
factoryIdentityDb := db.FactoryIdentityDb{}
factoryIdentityDb.Set(0)
factoryIdentity, err := factoryIdentityDb.GetFactoryIdentity(req.Id)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if factoryIdentity == nil {
e.OutErr(c, e.ERR_NO_DATA, "未查询到相应记录")
return
}
factoryIdentity.State = req.State
_, err = factoryIdentityDb.UpdateFactoryIdentity(factoryIdentity, "state")
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
e.OutSuc(c, "success", nil)
return
}

func DeleteFactoryIdentity(c *gin.Context) {
id := c.Param("id")
factoryIdentityDb := db.FactoryIdentityDb{}
factoryIdentityDb.Set(0)
role, err := factoryIdentityDb.GetFactoryIdentity(utils.StrToInt(id))
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if role == nil {
e.OutErr(c, e.ERR_NO_DATA, "未查询到相应记录")
return
}

err = svc.DeleteFactoryIdentity(utils.StrToInt(id))
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}

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

func BindUserFactoryIdentity(c *gin.Context) {
var req md.BindFactoryIdentityReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
err = svc.BindUserFactoryIdentity(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, "success", nil)
return
}

func SetBasicFactory(c *gin.Context) {
enterpriseId := utils.StrToInt(c.DefaultQuery("enterprise_id", "0"))
var req md.SetBasicFactoryReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
now := time.Now()

//1、更新 factory_set
factorySetDb := db.FactorySetDb{}
factorySetDb.Set(enterpriseId)
set, err := factorySetDb.GetFactorySet()
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if set != nil {
set.IsOpenNaturalCustomer = req.IsOpenNaturalCustomer
set.NaturalCustomerServiceFee = req.NaturalCustomerServiceFee
set.UpdateAt = now.Format("2006-01-02 15:04:05")
_, err2 := factorySetDb.FactorySetUpdate(set,
"is_open_natural_customer", "natural_customer_service_fee", "update_at")
if err2 != nil {
e.OutErr(c, e.ERR_DB_ORM, err2.Error())
return
}
} else {
_, err2 := factorySetDb.FactorySetInsert(&model.FactorySet{
EnterpriseId: enterpriseId,
IsOpenNaturalCustomer: req.IsOpenNaturalCustomer,
NaturalCustomerServiceFee: req.NaturalCustomerServiceFee,
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
}
}

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

func GetBasicFactory(c *gin.Context) {
enterpriseId := utils.StrToInt(c.DefaultQuery("enterprise_id", "0"))

//1、获取 factory_set
factorySetDb := db.FactorySetDb{}
factorySetDb.Set(enterpriseId)
set, err := factorySetDb.GetFactorySet()
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if set == nil {
set = &model.FactorySet{
EnterpriseId: enterpriseId,
IsOpenNaturalCustomer: 1,
NaturalCustomerServiceFee: "0.00",
CreateAt: time.Now().Format("2006-01-02 15:04:05"),
UpdateAt: time.Now().Format("2006-01-02 15:04:05"),
}
_, err2 := factorySetDb.FactorySetInsert(set)
if err2 != nil {
e.OutErr(c, e.ERR_DB_ORM, err2.Error())
return
}
}

e.OutSuc(c, map[string]interface{}{
"factory_set": set,
"is_open_natural_customer": []map[string]interface{}{
{
"name": enum.FactorySetIsOpenNaturalCustomer(enum.FactorySetIsOpenNaturalCustomerForYes).String(),
"value": enum.FactorySetIsOpenNaturalCustomerForYes,
},
{
"name": enum.FactorySetIsOpenNaturalCustomer(enum.FactorySetIsOpenNaturalCustomerForNo).String(),
"value": enum.FactorySetIsOpenNaturalCustomerForNo,
},
},
}, nil)
return
}

func FactoryDownloadTemplateExcel(c *gin.Context) {
e.OutSuc(c, "/template/工厂(身份信息导入模板).xlsx", nil)
return
}

func FactoryImportUserIdentity(c *gin.Context) {
enterpriseIdStr := c.DefaultQuery("enterprise_id", "")
enterpriseId := utils.StrToInt(enterpriseIdStr)
enterpriseDb := db.EnterpriseDb{}
enterpriseDb.Set()
enterprise, err := enterpriseDb.GetEnterprise(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
}
files, _ := c.FormFile("file")
dst := "./static/upload/" + files.Filename
err = c.SaveUploadedFile(files, dst)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}

xlsx, err := excelize.OpenFile(dst)
rows := xlsx.GetRows("Sheet" + "1")
for key, row := range rows {
if key > 0 && (row[0] != "" && row[1] != "" && row[2] != "" && row[3] != "") {
var certType = 1
if row[0] == "学工号" {
certType = 2
}
idNo := row[1]
name := row[2]

//查找当前工厂身份是否存在
factoryIdentityDb := db.FactoryIdentityDb{}
factoryIdentityDb.Set(enterpriseId)
factoryIdentity, err := factoryIdentityDb.GetFactoryIdentityByName(row[3])
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if factoryIdentity == nil {
continue
}

//查找当前用户身份是否已存在
userIdentityDb := db.UserIdentityDb{}
userIdentityDb.Set(0)

isHasUserIdentity, err := userIdentityDb.UserIdentityExist(enterpriseId, idNo, certType)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if isHasUserIdentity != nil {
continue
}

now := time.Now()
//新增身份信息
userIdentity := &model.UserIdentity{
Uid: 0,
Name: name,
IdNo: idNo,
CertType: certType,
Kind: enum2.UserIdentityKindForCommon,
Identity: enum2.UserIdentityForFactory,
EnterpriseId: enterpriseId,
State: enum2.UserIdentityStateForNormal,
Memo: "",
CreateAt: now.Format("2006-01-02 15:04:05"),
UpdateAt: now.Format("2006-01-02 15:04:05"),
}
insertAffected, err := userIdentityDb.UserIdentityInsert(userIdentity)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if insertAffected <= 0 {
e.OutErr(c, e.ERR_DB_ORM, "新增身份数据失败")
return
}

//更新 factory_identity
factoryIdentityWithUserIdentityDb := db.FactoryIdentityWithUserIdentityDb{}
factoryIdentityWithUserIdentityDb.Set()
info, err := factoryIdentityWithUserIdentityDb.GetFactoryIdentityWithUserIdentity(insertAffected)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if info == nil {
factoryIdentityWithUserIdentityDb.AddFactoryIdentityWithUserIdentity(&model.FactoryIdentityWithUserIdentity{
UserIdentityId: insertAffected,
FactoryIdentityId: factoryIdentity.Id,
CreateAt: now.Format("2006-01-02 15:04:05"),
UpdateAt: now.Format("2006-01-02 15:04:05"),
})
} else {
info.FactoryIdentityId = factoryIdentity.Id
_, err1 := factoryIdentityWithUserIdentityDb.UpdateFactoryIdentityWithUserIdentity(info, "factory_identity_id")
if err1 != nil {
e.OutErr(c, e.ERR_DB_ORM, err1.Error())
return
}
}
}
}

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

func FactoryUserUpdate(c *gin.Context) {
var req md.FactoryUserUpdateReq
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.FactoryUserUpdate(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, "success", nil)
return
}

func FactoryUserDelete(c *gin.Context) {
var req md.FactoryUserDeleteReq
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.FactoryUserDelete(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, "success", nil)
return
}

func FactoryWorkerList(c *gin.Context) {
var req md.FactoryWorkerListReq
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.FactoryWorkerList(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, map[string]interface{}{
"list": resp,
"total": total,
"user_identity_cert_type_list": []map[string]interface{}{
{
"name": enum2.UserIdentityCertType.String(enum2.UserIdentityCertTypeForIdCard),
"value": enum2.UserIdentityCertTypeForIdCard,
},
{
"name": enum2.UserIdentityCertType.String(enum2.UserIdentityCertTypeForStudentId),
"value": enum2.UserIdentityCertTypeForStudentId,
},
//{
// "name": enum.UserIdentityCertType.String(enum.UserIdentityCertTypeForPassport),
// "value": enum.UserIdentityCertTypeForPassport,
//},
},
}, nil)
return
}

func FactoryWorkerUpdate(c *gin.Context) {
var req md.FactoryWorkerUpdateReq
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.FactoryWorkerUpdate(req)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}

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

func FactoryWorkerDelete(c *gin.Context) {
var req md.FactoryWorkerDeleteReq
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.FactoryWorkerDelete(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, "success", nil)
return
}

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

//1、查找当前身份是否已存在
userIdentityDb := db.UserIdentityDb{}
userIdentityDb.Set(0)
isHasUserIdentity, err := userIdentityDb.UserIdentityExist(req.EnterpriseId, req.IdNo, req.CertType)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if isHasUserIdentity != nil {
e.OutErr(c, e.ERR, "当前身份已存在,直接修改身份即可!")
return
}

now := time.Now()
//2、新增身份信息
userIdentity := &model.UserIdentity{
Uid: 0,
Name: req.Name,
IdNo: req.IdNo,
CertType: req.CertType,
Kind: enum2.UserIdentityKindForCommon,
Identity: enum2.UserIdentityForFactory,
EnterpriseId: req.EnterpriseId,
State: enum2.UserIdentityStateForNormal,
Memo: "",
CreateAt: now.Format("2006-01-02 15:04:05"),
UpdateAt: now.Format("2006-01-02 15:04:05"),
}
insertAffected, err := userIdentityDb.UserIdentityInsert(userIdentity)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if insertAffected <= 0 {
e.OutErr(c, e.ERR_DB_ORM, "新增身份数据失败")
return
}

factoryIdentityWithUserIdentityDb := db.FactoryIdentityWithUserIdentityDb{}
factoryIdentityWithUserIdentityDb.Set()
_, err = factoryIdentityWithUserIdentityDb.AddFactoryIdentityWithUserIdentity(&model.FactoryIdentityWithUserIdentity{
UserIdentityId: userIdentity.Id,
FactoryIdentityId: req.FactoryIdentityId,
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, "关联工厂身份失败")
return
}
e.OutSuc(c, "success", nil)
return
}

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

resp, total, err := svc2.FactoryOrdList(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
e.OutSuc(c, map[string]interface{}{
"list": resp,
"total": total,
"order_status_list": []map[string]interface{}{
{
"name": enum2.FactoryOrdOrderStatus.String(enum2.FactoryOrdOrderStatusForSuccess),
"value": enum2.FactoryOrdOrderStatusForSuccess,
},
{
"name": enum2.FactoryOrdOrderStatus.String(enum2.FactoryOrdOrderStatusForRefund),
"value": enum2.FactoryOrdOrderStatusForRefund,
},
{
"name": enum2.FactoryOrdOrderStatus.String(enum2.FactoryOrdOrderStatusForClose),
"value": enum2.FactoryOrdOrderStatusForClose,
},
},
"trade_channel_list": []map[string]interface{}{
{
"name": enum2.FactoryOrdTradeChannel.String(enum2.FactoryOrdTradeChannelForAli),
"value": enum2.FactoryOrdTradeChannelForAli,
},
{
"name": enum2.FactoryOrdTradeChannel.String(enum2.FactoryOrdTradeChannelForWx),
"value": enum2.FactoryOrdTradeChannelForWx,
},
},
}, nil)
return
}

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

resp, err := svc2.FactoryOrdListExport(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}

titleList := []string{"校企名称", "用户电话", "就餐人姓名", "订单号", "交易号", "支付状态", "支付时间", "消费档口", "订单总金额", "实收金额", "买家支付金额", "补贴金额", "服务费用", "交易渠道"}
xlsx := excelize.NewFile()
xlsx.SetSheetRow("Sheet1", "A1", &titleList)
style, err := xlsx.NewStyle(`{"fill":{"type":"pattern","color":["FFFF00"],"pattern":1}, "alignment":{"horizontal":"center"}}`)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}
xlsx.SetCellStyle("Sheet1", "A1", "N1", style)
xlsx.SetColWidth("Sheet1", "A", "N", 25)
//xlsx.SetColWidth("Sheet1", "B", "B", 30)
//xlsx.SetColWidth("Sheet1", "C", "E", 15)
//xlsx.SetColWidth("Sheet1", "F", "I", 10)
//xlsx.SetColWidth("Sheet1", "J", "J", 20)
//xlsx.SetColWidth("Sheet1", "K", "K", 10)
//xlsx.SetColWidth("Sheet1", "L", "L", 25)
//xlsx.SetColWidth("Sheet1", "M", "M", 15)
//表头被第一行用了,只能从第二行开始
j := 2
//var totalAmount = 0.00
for _, v := range resp {
xlsx.SetSheetRow("Sheet1", "A"+strconv.Itoa(j), &[]interface{}{v.EnterpriseName, v.Phone, v.UserIdentityName, v.OutTradeNo, v.TradeNo, enum2.FactoryOrdOrderStatus.String(enum2.FactoryOrdOrderStatus(v.OrderStatus)),
v.GmtPayment, v.ShopName, v.TotalAmount, v.ReceiptAmount, v.BuyerPayAmount, v.SubsidyAmount, v.ServiceFee, v.TradeChannel})
j++
}

//xlsx.SetSheetRow("Sheet1", "A"+strconv.Itoa(j), &[]interface{}{"总计:", "-", "-", "-", "-", "-", "-", totalAmount, "-", "-", "-", "-", "-"})

c.Header("Content-Type", "application/octet-stream")
c.Header("Content-Disposition", "attachment; filename="+"工厂消费记录"+".xlsx")
c.Header("Content-Transfer-Encoding", "binary")
//回写到web 流媒体 形成下载
_ = xlsx.Write(c.Writer)
return
}

+ 128
- 0
app/admin/hdl/hdl_device.go Целия файл

@@ -158,3 +158,131 @@ func DeviceDelete(c *gin.Context) {
e.OutSuc(c, "success", nil)
return
}

func FactoryDeviceSave(c *gin.Context) {
var req md.FactoryDeviceSaveReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
deviceDd := db.FactoryDevice{}
deviceDd.Set(req.TerminalId)
//查找 device_sn
device, err := deviceDd.GetFactoryDevice()
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if device == nil {
insertAffected, err1 := deviceDd.FactoryDeviceInsert(&model2.FactoryDevice{
Name: req.Name,
TerminalId: req.TerminalId,
EnterpriseId: req.EnterpriseId,
Memo: req.Memo,
CreateAt: time.Now().Format("2006-01-02 15:04:05"),
UpdateAt: time.Now().Format("2006-01-02 15:04:05"),
})
if err1 != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if insertAffected <= 0 {
e.OutErr(c, e.ERR_DB_ORM, "新增数据失败")
return
}
} else {
device.EnterpriseId = req.EnterpriseId
device.Name = req.Name
device.Memo = req.Memo
device.UpdateAt = time.Now().Format("2006-01-02 15:04:05")
updateAffected, err1 := deviceDd.FactoryDeviceUpdate(device, "enterprise_id", "name", "memo", "update_at")
if err1 != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if updateAffected <= 0 {
e.OutErr(c, e.ERR_DB_ORM, "更新数据失败")
return
}
}

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

func FactoryDeviceList(c *gin.Context) {
var req md.FactoryDeviceListReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
if req.Limit == 0 {
req.Limit = 10
}
if req.Page == 0 {
req.Page = 10
}

sess := db.Db.Desc("factory_device.id")
if req.Name != "" {
sess.And("factory_device.name like ?", "%"+req.Name+"%")
}
if req.EnterpriseName != "" {
sess.And("enterprise.name like ?", "%"+req.EnterpriseName+"%")
}
if req.StartDate != "" {
sess.And("factory_device.create_at >=?", req.StartDate)
}
if req.EndDate != "" {
sess.And("factory_device.create_at <=?", req.EndDate)
}
var m []*db.FactoryDeviceWithEnterprise
total, err := sess.
Join("LEFT", "enterprise", "enterprise.id = factory_device.enterprise_id").Limit(req.Limit, (req.Page-1)*req.Limit).FindAndCount(&m)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}

var resp []interface{}
for _, v := range m {
resp = append(resp, map[string]interface{}{
"id": v.FactoryDevice.Id,
"name": v.FactoryDevice.Name,
"terminal_id": v.FactoryDevice.TerminalId,
"enterprise_id": v.FactoryDevice.EnterpriseId,
"memo": v.FactoryDevice.Memo,
"create_at": v.FactoryDevice.CreateAt,
"update_at": v.FactoryDevice.UpdateAt,
"enterprise_name": v.Enterprise.Name,
})
}
e.OutSuc(c, map[string]interface{}{
"list": resp,
"total": total,
}, nil)
return
}

func FactoryDeviceDelete(c *gin.Context) {
deviceSn := c.Param("terminal_id")
deviceDd := db.FactoryDevice{}
deviceDd.Set(deviceSn)
deviceDdAffected, err := deviceDd.FactoryDeviceDelete()
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
if deviceDdAffected <= 0 {
e.OutErr(c, e.ERR_DB_ORM, "删除数据失败")
return
}
e.OutSuc(c, "success", nil)
return
}

+ 4
- 0
app/admin/hdl/hdl_enterprise.go Целия файл

@@ -60,6 +60,10 @@ func EnterpriseList(c *gin.Context) {
"name": enum.EnterprisePvd(enum.EnterprisePvdForFaceScanPayment).String(),
"value": enum.EnterprisePvdForFaceScanPayment,
},
{
"name": enum.EnterprisePvd(enum.EnterprisePvdForAllPayment).String(),
"value": enum.EnterprisePvdForAllPayment,
},
},
}, nil)
return


+ 16
- 0
app/admin/md/md_device.go Целия файл

@@ -15,3 +15,19 @@ type DeviceSaveReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required"`
Memo string `json:"memo"`
}

type FactoryDeviceSaveReq struct {
Name string `json:"name" binding:"required"`
TerminalId string `json:"terminal_id" binding:"required"`
EnterpriseId int `json:"enterprise_id" binding:"required"`
Memo string `json:"memo"`
}

type FactoryDeviceListReq struct {
Page int `json:"page" label:"页码"`
Limit int `json:"limit" label:"每页数量"`
EnterpriseName string `json:"enterprise_name" label:"校企名称"`
Name string `json:"name" label:"档口名称"`
StartDate string `json:"start_date" label:"起始时间"`
EndDate string `json:"end_date" label:"截止时间"`
}

+ 22
- 0
app/admin/md/md_enterprise_manage.go Целия файл

@@ -637,6 +637,13 @@ type EnterpriseUserListByNursingHomeResp struct {
Total int64 `json:"total"`
}

type EnterpriseUserListByFactoryResp struct {
List []EnterpriseUserListByFactoryStruct `json:"list"`
Total int64 `json:"total"`
UserIdentityKindList interface{} `json:"user_identity_kind_list"`
UserIdentityCertTypeList interface{} `json:"user_identity_cert_type_list"`
}

type EnterpriseUserListByNursingHomeStruct struct {
Id int `json:"id" label:"支付宝昵称"`
Nickname string `json:"nickname" label:"支付宝昵称"`
@@ -651,6 +658,21 @@ type EnterpriseUserListByNursingHomeStruct struct {
} `json:"user_identities" label:"身份列表"`
}

type EnterpriseUserListByFactoryStruct struct {
Id int `json:"id" label:"支付宝昵称"`
Nickname string `json:"nickname" label:"支付宝昵称"`
Phone string `json:"phone" label:"手机号"`
Avatar string `json:"avatar" label:"头像"`
CreateAt string `json:"create_at" label:"创建时间"`
UserIdentities []struct {
Id int `json:"id" label:"身份id"`
IdNo string `json:"id_no" label:"身份证号"`
CertType int `json:"cert_type" label:"证件类型"`
EnterpriseName string `json:"enterprise_name" label:"单位名"`
Name string `json:"name" label:"姓名"`
} `json:"user_identities" label:"身份列表"`
}

type NursingHomeUserUpdateReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
Uid int `json:"uid" binding:"required" label:"用户id"`


+ 16
- 0
app/admin/md/md_factory.go Целия файл

@@ -0,0 +1,16 @@
package md

type FactoryInfoResp struct {
Name string `json:"name" label:"名称"`
Memo string `json:"memo" label:"备注"`
Mode string `json:"mode" label:"模式"`
Pvd string `json:"pvd" label:"场景"`
Kind string `json:"kind" label:"种类(1:央厨-学校 2:央厨-工厂 3:自营-学校 4:自营-工厂)"`
State string `json:"state" label:"状态(1:正常 2:冻结)"`
WorkerNum int64 `json:"worker_num" label:"员工数量"`
//UserNum int64 `json:"user_num" label:"用户数量"`
ThisMonthConsumeAmount float64 `json:"this_month_consume_amount" label:"本月消费金额"`
ThisMonthOrderNum float64 `json:"this_month_order_num" label:"本月订单"`
ThisMonthServiceAmount float64 `json:"this_month_service_amount" label:"本月服务费用"`
ThisMonthReceiptAmount float64 `json:"this_month_receipt_amount" label:"本月实收金额"`
}

+ 159
- 0
app/admin/md/md_factory_identity.go Целия файл

@@ -0,0 +1,159 @@
package md

type FactoryIdentityListResp struct {
Id int `json:"id" xorm:"not null pk autoincr INT(11)"`
Name string `json:"name" xorm:"not null default '' comment('名称') VARCHAR(255)"`
State int `json:"state" xorm:"not null default 1 comment('状态(1:正常 2:冻结)') TINYINT(1)"`
Memo string `json:"memo" xorm:"not null default '' comment('备注') VARCHAR(255)"`
IsSubsidy int `json:"is_subsidy" xorm:"not null default 0 comment('是否优惠补贴(0:否 1:是)') TINYINT(1)"`
SubsidyAmount string `json:"subsidy_amount" xorm:"not null default 0.00 comment('补贴金额') DECIMAL(8,2)"`
LeastPayAmount string `json:"least_pay_amount" xorm:"not null default 0.00 comment('最少支付金额') DECIMAL(8,2)"`
IsLimitConsumeNum int `json:"is_limit_consume_num" xorm:"not null default 0 comment('是否限制消费次数') TINYINT(1)"`
LimitConsumeNum int `json:"limit_consume_num" xorm:"default 0 comment('限制消费次数/日') TINYINT(1)"`
WithUserIdentitiesNum string `json:"with_user_identities_num"`
CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
}

type UpdateFactoryIdentityStateReq struct {
Id int `json:"id" binding:"required" label:"id"`
State int `json:"state" binding:"required" label:"状态"`
}

type AddFactoryIdentityReq struct {
Name string `json:"name" binding:"required" label:"名称"`
Memo string `json:"memo" label:"备注"`
IsSubsidy int `json:"is_subsidy" label:"是否优惠补贴(0:否 1:是)"`
SubsidyAmount string `json:"subsidy_amount" label:"补贴金额"`
LeastPayAmount string `json:"least_pay_amount" label:"最少支付金额"`
IsLimitConsumeNum int `json:"is_limit_consume_num" label:"是否限制消费次数"`
LimitConsumeNum int `json:"limit_consume_num" label:"限制消费次数/日"`
}

type UpdateFactoryIdentityReq struct {
Id int `json:"id" binding:"required" label:"id"`
Name string `json:"name" binding:"required" label:"名称"`
Memo string `json:"memo" label:"备注"`
IsSubsidy int `json:"is_subsidy" label:"是否优惠补贴(0:否 1:是)"`
SubsidyAmount string `json:"subsidy_amount" label:"补贴金额"`
LeastPayAmount string `json:"least_pay_amount" label:"最少支付金额"`
IsLimitConsumeNum int `json:"is_limit_consume_num" label:"是否限制消费次数"`
LimitConsumeNum int `json:"limit_consume_num" label:"限制消费次数/日"`
}

type FactoryIdentityListReq struct {
Limit int `json:"limit"`
Page int `json:"page" `
Name string `json:"name"`
State int `json:"state"`
StartDate string `json:"start_date" `
EndDate string `json:"end_date" `
}

type BindFactoryIdentityReq struct {
UserIdentitiesId int `json:"user_identities_id" binding:"required"`
FactoryIdentityId int `json:"factory_identity_id" label:"角色id"`
}

type SetBasicFactoryReq struct {
IsOpenNaturalCustomer int `json:"is_open_natural_customer" binding:"required"`
NaturalCustomerServiceFee string `json:"natural_customer_service_fee" binding:"required"`
}

type FactoryWorkerListReq 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:"手机号"`
}

type FactoryWorkerListResp struct {
UserIdentityId int `json:"user_identity_id" label:"用户身份id"`
IdNo string `json:"id_no" label:"身份证号"`
CertType int `json:"cert_type" label:"证件类型"`
Phone string `json:"parent_phone" label:"电话"`
Name string `json:"name" label:"姓名"`
FactoryIdentityId int `json:"factory_identity_id" label:"工厂身份id"`
FactoryIdentity string `json:"factory_identity" label:"工厂身份"`
CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
}

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

type FactoryUserUpdateReq 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:"身份证号"`
CertType int `json:"cert_type" label:"证件类型"`
Name string `json:"name" label:"姓名"`
} `json:"user_identities" label:"身份列表"`
}

type FactoryWorkerUpdateReq 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:"身份证号"`
CertType int `json:"cert_type" label:"证件类型(1:身份证 2:学工号 3:护照)"`
Name string `json:"name" label:"姓名"`
FactoryIdentityId int `json:"factory_identity_id" label:"工厂身份id"`
}

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

type FactoryWorkerAddReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
Name string `json:"name" label:"名称"`
CertType int `json:"cert_type" label:"证件类型(1:身份证 2:学工号 3:护照)"`
IdNo string `json:"id_no" label:"身份证号"`
FactoryIdentityId int `json:"factory_identity_id" label:"工厂身份id"`
}

type FactoryOrdListReq struct {
EnterpriseId int `json:"enterprise_id" label:"企业id"`
Limit int `json:"limit" binding:"required"`
Page int `json:"page" binding:"required"`
Name string `json:"name" label:"姓名"`
Phone string `json:"phone" label:"用户电话"`
OutTradeNo string `json:"out_trade_no" label:"订单号"`
TradeNo string `json:"trade_no" label:"交易单号"`
OrderStatus int `json:"order_status" label:"订单状态"`
StartDate string `json:"start_date" label:"订单-开始时间"`
EndDate string `json:"end_date" label:"订单-截止时间"`
TerminalId string `json:"terminal_id" label:"设备编号"`
TradeChannel string `json:"trade_channel" label:"交易渠道"`
ShopName string `json:"shop_name" label:"消费档口"`
}

type FactoryOrdListResp struct {
EnterpriseId int `json:"enterprise_id" `
EnterpriseName string `json:"enterprise_name" `
Uid int `json:"uid" `
UserIdentityId int `json:"user_identity_id" `
UserIdentityName string `json:"user_identity_name" `
OutTradeNo string `json:"out_trade_no" `
TradeNo string `json:"trade_no"`
OrderStatus int `json:"order_status"`
Phone string `json:"phone"`
GmtPayment string `json:"gmt_payment"`
TerminalId string `json:"terminal_id" label:"设备编号"`
ShopName string `json:"shop_name" label:"消费档口"`
TotalAmount string `json:"total_amount" label:"订单总金额"`
ReceiptAmount string `json:"receipt_amount" label:"实收金额"`
BuyerPayAmount string `json:"buyer_pay_amount" label:"买家支付金额"`
SubsidyAmount string `json:"subsidy_amount" label:"补贴金额"`
ServiceFee string `json:"service_fee" label:"服务费用"`
TradeChannel string `json:"trade_channel" label:"交易渠道"`
}

+ 89
- 0
app/admin/svc/enterprise_manage/svc_enterprise_manage.go Целия файл

@@ -378,3 +378,92 @@ func EnterpriseUserListByNursingHome(req md.EnterpriseUserListReq) (resp md.Ente
}
return
}

func EnterpriseUserListByFactory(req md.EnterpriseUserListReq) (resp md.EnterpriseUserListByFactoryResp, err error) {
userIdentityDb := db.UserIdentityDb{}
userIdentityDb.Set(0)
userIdentities, err := userIdentityDb.FindUserIdentityForEnterprise(req.EnterpriseId)
if err != nil {
return
}
var userIdentitiesMap = map[string][]model.UserIdentity{}
var uids []int
for _, v := range *userIdentities {
userIdentitiesMap[utils.IntToStr(v.Uid)] = append(userIdentitiesMap[utils.IntToStr(v.Uid)], v)
uids = append(uids, v.Uid)
}

var m []model.User
sess := db.Db.In("id", uids)
if req.Nickname != "" {
sess.And("nickname like ?", "%"+req.Nickname+"%")
}
if req.Phone != "" {
sess.And("phone like ?", "%"+req.Phone+"%")
}
count, err := sess.Limit(req.Limit, (req.Page-1)*req.Limit).FindAndCount(&m)
if err != nil {
return
}
resp.Total = count
for _, v := range m {
temp := md.EnterpriseUserListByFactoryStruct{
Id: v.Id,
Nickname: v.Nickname,
Phone: v.Phone,
Avatar: v.Avatar,
CreateAt: v.CreateAt,
}
for _, v1 := range userIdentitiesMap[utils.IntToStr(v.Id)] {
temp.UserIdentities = append(temp.UserIdentities, struct {
Id int `json:"id" label:"身份id"`
IdNo string `json:"id_no" label:"身份证号"`
CertType int `json:"cert_type" label:"证件类型"`
EnterpriseName string `json:"enterprise_name" label:"单位名"`
Name string `json:"name" label:"姓名"`
}{Id: v1.Id, IdNo: v1.IdNo, CertType: v1.CertType, EnterpriseName: req.EnterpriseName, Name: v1.Name})
}
resp.List = append(resp.List, temp)
}
resp.UserIdentityKindList = []map[string]interface{}{
{
"name": enum2.UserIdentity.String(enum2.UserIdentityForCentralKitchenForStudent),
"value": enum2.UserIdentityForCentralKitchenForStudent,
},
{
"name": enum2.UserIdentity.String(enum2.UserIdentityForCentralKitchenForTeacher),
"value": enum2.UserIdentityForCentralKitchenForTeacher,
},
{
"name": enum2.UserIdentity.String(enum2.UserIdentityForCentralKitchenForWorker),
"value": enum2.UserIdentityForCentralKitchenForWorker,
},
{
"name": enum2.UserIdentity.String(enum2.UserIdentityForSelfSupportForStudent),
"value": enum2.UserIdentityForSelfSupportForStudent,
},
{
"name": enum2.UserIdentity.String(enum2.UserIdentityForSelfSupportForTeacher),
"value": enum2.UserIdentityForSelfSupportForTeacher,
},
{
"name": enum2.UserIdentity.String(enum2.UserIdentityForSelfSupportForWorker),
"value": enum2.UserIdentityForSelfSupportForWorker,
},
}
resp.UserIdentityCertTypeList = []map[string]interface{}{
{
"name": enum2.UserIdentityCertType.String(enum2.UserIdentityCertTypeForIdCard),
"value": enum2.UserIdentityCertTypeForIdCard,
},
{
"name": enum2.UserIdentityCertType.String(enum2.UserIdentityCertTypeForStudentId),
"value": enum2.UserIdentityCertTypeForStudentId,
},
//{
// "name": enum.UserIdentityCertType.String(enum.UserIdentityCertTypeForPassport),
// "value": enum.UserIdentityCertTypeForPassport,
//},
}
return
}

+ 368
- 0
app/admin/svc/enterprise_manage/svc_factory.go Целия файл

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

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

func FactoryUserUpdate(req md.FactoryUserUpdateReq) (err error) {
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)
}

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

//2、新增 / 编辑 数据
now := time.Now()

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

var newUserIdentityIds []string
for _, v := range req.BindUserIdentities {
if v.UserIdentityId == 0 {
// 新增
insertId, err1 := userIdentityDb.UserIdentityInsertBySession(session, &model.UserIdentity{
Uid: req.Uid,
Name: v.Name,
IdNo: v.IdNo,
CertType: v.CertType,
Kind: enum2.UserIdentityKindForCommon,
Identity: enum2.UserIdentityForFactory,
EnterpriseId: req.EnterpriseId,
Memo: "",
State: enum2.UserIdentityStateForNormal,
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
}

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.CertType = v.CertType
identity.Name = v.Name
identity.Identity = enum2.UserIdentityForFactory

_, err3 := userIdentityDb.UserIdentityUpdateBySession(session, v.UserIdentityId, identity, "id_no", "cert_type", "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 FactoryUserDelete(req md.FactoryUserDeleteReq) (err error) {
//1、删除 user_identity
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.Where("enterprise_id =?", req.EnterpriseId).In("uid", req.Uids).Delete(model.UserIdentity{})
if err != nil {
return
}

//2、删除 factory_identity_with_user_identity
_, err = db.Db.In("user_identity_id", userIdentityIds).Delete(model.FactoryIdentityWithUserIdentity{})
if err != nil {
return
}

return
}

func FactoryWorkerList(req md.FactoryWorkerListReq) (resp []md.FactoryWorkerListResp, count int64, err error) {

sess := db.Db.Where("user_identity.enterprise_id =?", req.EnterpriseId).
And("user_identity.identity =?", enum2.UserIdentityForFactory)
if req.Name != "" {
sess.And("user_identity.name like ?", "%"+req.Name+"%")
}
if req.IdNo != "" {
sess.And("user_identity.id_no like ?", "%"+req.IdNo+"%")
}
if req.Phone != "" {
sess.And("user.phone like ?", "%"+req.Phone+"%")
}

var m []*db.UserIdentityWithFactoryIdentity
count, err = sess.
Join("LEFT", "user", "user_identity.uid = user.id").
Join("LEFT", "factory_identity_with_user_identity", "user_identity.id = factory_identity_with_user_identity.user_identity_id").
Join("LEFT", "factory_identity", "factory_identity_with_user_identity.factory_identity_id = factory_identity.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.FactoryWorkerListResp{
UserIdentityId: v.UserIdentity.Id,
IdNo: v.UserIdentity.IdNo,
CertType: v.UserIdentity.CertType,
Phone: v.User.Phone,
Name: v.UserIdentity.Name,
FactoryIdentityId: v.FactoryIdentity.Id,
FactoryIdentity: v.FactoryIdentity.Name,
CreateAt: v.FactoryIdentity.CreateAt,
UpdateAt: v.FactoryIdentity.UpdateAt,
})
}
return
}

func FactoryWorkerUpdate(req md.FactoryWorkerUpdateReq) (err error) {
//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.CertType = req.CertType
userIdentity.Name = req.Name
_, err = userIdentityDb.UserIdentityUpdate(req.UserIdentityId, userIdentity, "id_no", "name", "cert_type")
if err != nil {
return
}

//2、更新 factory_identity_with_user_identity
factoryIdentityWithUserIdentityDb := db.FactoryIdentityWithUserIdentityDb{}
factoryIdentityWithUserIdentityDb.Set()
info, err := factoryIdentityWithUserIdentityDb.GetFactoryIdentityWithUserIdentity(req.UserIdentityId)
if err != nil {
return
}
if info != nil {
info.FactoryIdentityId = req.FactoryIdentityId
_, err = factoryIdentityWithUserIdentityDb.UpdateFactoryIdentityWithUserIdentity(info, "factory_identity_id")
if err != nil {
return
}
} else {
_, err = factoryIdentityWithUserIdentityDb.AddFactoryIdentityWithUserIdentity(&model.FactoryIdentityWithUserIdentity{
UserIdentityId: userIdentity.Id,
FactoryIdentityId: req.FactoryIdentityId,
CreateAt: time.Now().Format("2006-01-02 15:04:05"),
UpdateAt: time.Now().Format("2006-01-02 15:04:05"),
})
if err != nil {
return
}
}
return
}

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

//2、删除 factory_identity_with_user_identity
_, err = db.Db.In("user_identity_id", req.UserIdentityIds).Delete(model.FactoryIdentityWithUserIdentity{})
if err != nil {
return
}
return
}

func FactoryOrdList(req md.FactoryOrdListReq) (resp []md.FactoryOrdListResp, count int64, err error) {
sess := db.Db.Desc("factory_ord.id")
if req.EnterpriseId != 0 {
sess.And("factory_ord.enterprise_id =?", req.EnterpriseId)
}
if req.StartDate != "" {
sess.And("factory_ord.gmt_payment >= ?", req.StartDate)
}
if req.EndDate != "" {
sess.And("factory_ord.gmt_payment <= ?", req.EndDate)
}
if req.OrderStatus != 0 {
sess.And("factory_ord.order_status = ?", req.OrderStatus)
}
if req.OutTradeNo != "" {
sess.And("factory_ord.out_order_no like ?", "%"+req.OutTradeNo+"%")
}
if req.TerminalId != "" {
sess.And("factory_ord.terminal_id like ?", "%"+req.TerminalId+"%")
}
if req.TradeNo != "" {
sess.And("factory_ord.trade_no like ?", "%"+req.TradeNo+"%")
}
if req.Name != "" {
sess.And("user_identity.name like ?", "%"+req.Name+"%")
}
if req.Phone != "" {
sess.And("user.phone like ?", "%"+req.Phone+"%")
}
if req.ShopName != "" {
sess.And("factory_device.name like ?", "%"+req.ShopName+"%")
}

var m []*db.FactoryOrdWithUserIdentity
count, err = sess.
Join("LEFT", "user_identity", "factory_ord.user_identity_id = user_identity.id").
Join("LEFT", "enterprise", "enterprise.id = user_identity.enterprise_id").
Join("LEFT", "user", "user.id = user_identity.uid").
Join("LEFT", "factory_device", "factory_ord.terminal_id = factory_device.terminal_id").
Limit(req.Limit, (req.Page-1)*req.Limit).Desc("factory_ord.create_at").FindAndCount(&m)
if err != nil {
return nil, 0, err
}

for _, v := range m {
resp = append(resp, md.FactoryOrdListResp{
EnterpriseId: v.Enterprise.Id,
EnterpriseName: v.Enterprise.Name,
Uid: v.User.Id,
UserIdentityId: v.UserIdentity.Id,
UserIdentityName: v.UserIdentity.Name,
OutTradeNo: v.FactoryOrd.OutOrderNo,
TradeNo: v.FactoryOrd.TradeNo,
OrderStatus: v.FactoryOrd.OrderStatus,
Phone: v.User.Phone,
GmtPayment: v.FactoryOrd.GmtPayment,
TerminalId: v.FactoryOrd.TerminalId,
ShopName: v.FactoryDevice.Name,
TotalAmount: v.FactoryOrd.TotalAmount,
ReceiptAmount: v.FactoryOrd.ReceiptAmount,
BuyerPayAmount: v.FactoryOrd.BuyerPayAmount,
SubsidyAmount: v.FactoryOrd.SubsidyAmount,
ServiceFee: v.FactoryOrd.ServiceFee,
TradeChannel: v.FactoryOrd.TradeChannel,
})
}
return
}

func FactoryOrdListExport(req md.FactoryOrdListReq) (resp []md.FactoryOrdListResp, err error) {
sess := db.Db.Desc("factory_ord.id")
if req.EnterpriseId != 0 {
sess.And("factory_ord.enterprise_id =?", req.EnterpriseId)
}
if req.StartDate != "" {
sess.And("factory_ord.gmt_payment >= ?", req.StartDate)
}
if req.EndDate != "" {
sess.And("factory_ord.gmt_payment <= ?", req.EndDate)
}
if req.OrderStatus != 0 {
sess.And("factory_ord.order_status = ?", req.OrderStatus)
}
if req.OutTradeNo != "" {
sess.And("factory_ord.out_order_no like ?", "%"+req.OutTradeNo+"%")
}
if req.TerminalId != "" {
sess.And("factory_ord.terminal_id like ?", "%"+req.TerminalId+"%")
}
if req.TradeNo != "" {
sess.And("factory_ord.trade_no like ?", "%"+req.TradeNo+"%")
}
if req.Name != "" {
sess.And("user_identity.name like ?", "%"+req.Name+"%")
}
if req.Phone != "" {
sess.And("user.phone like ?", "%"+req.Phone+"%")
}
if req.ShopName != "" {
sess.And("factory_device.name like ?", "%"+req.ShopName+"%")
}

var m []*db.FactoryOrdWithUserIdentity
err = sess.
Join("LEFT", "user_identity", "factory_ord.user_identity_id = user_identity.id").
Join("LEFT", "enterprise", "enterprise.id = user_identity.enterprise_id").
Join("LEFT", "user", "user.id = user_identity.uid").
Join("LEFT", "factory_device", "factory_ord.terminal_id = factory_device.terminal_id").
Desc("factory_ord.create_at").Find(&m)
if err != nil {
return nil, err
}
if err != nil {
return nil, err
}

for _, v := range m {
resp = append(resp, md.FactoryOrdListResp{
EnterpriseId: v.Enterprise.Id,
EnterpriseName: v.Enterprise.Name,
Uid: v.User.Id,
UserIdentityId: v.UserIdentity.Id,
UserIdentityName: v.UserIdentity.Name,
OutTradeNo: v.FactoryOrd.OutOrderNo,
TradeNo: v.FactoryOrd.TradeNo,
OrderStatus: v.FactoryOrd.OrderStatus,
Phone: v.User.Phone,
GmtPayment: v.FactoryOrd.GmtPayment,
TerminalId: v.FactoryOrd.TerminalId,
ShopName: v.FactoryDevice.Name,
TotalAmount: v.FactoryOrd.TotalAmount,
ReceiptAmount: v.FactoryOrd.ReceiptAmount,
BuyerPayAmount: v.FactoryOrd.BuyerPayAmount,
SubsidyAmount: v.FactoryOrd.SubsidyAmount,
ServiceFee: v.FactoryOrd.ServiceFee,
TradeChannel: v.FactoryOrd.TradeChannel,
})
}
return
}

+ 203
- 0
app/admin/svc/svc_factory_identity.go Целия файл

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

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

func DeleteFactoryIdentity(id int) (err error) {
session := db.Db.NewSession()
defer session.Close()
session.Begin()

//1、删除 `role`
factoryIdentityDb := db.FactoryIdentityDb{}
factoryIdentityDb.Set(id)
_, err = factoryIdentityDb.FactoryIdentityDeleteBySession(session, id)
if err != nil {
_ = session.Rollback()
return
}

//2、删除 `factory_identity_with_user_identity`
factoryIdentityWithUserIdentityDb := db.FactoryIdentityWithUserIdentityDb{}
factoryIdentityWithUserIdentityDb.Set()
_, err = factoryIdentityWithUserIdentityDb.FactoryIdentityWithUserIdentityDeleteForRoleBySession(session, id)
if err != nil {
_ = session.Rollback()
return
}

return session.Commit()
}

//func RoleBindPermissionGroup(req md.RoleBindPermissionGroupReq) (err error) {
// session := db.Db.NewSession()
// defer session.Close()
// session.Begin()
// //1、查询 `role`
// roleDb := db.RoleDb{}
// roleDb.Set(req.RoleId)
// role, err := roleDb.GetRole()
// if err != nil {
// return
// }
// if role == nil {
// return errors.New("未查询到相应记录")
// }
//
// //1、删除 `role_permission_group`
// rolePermissionGroupDb := db.RolePermissionGroupDb{}
// rolePermissionGroupDb.Set()
// _, err = rolePermissionGroupDb.RolePermissionGroupDeleteForRoleBySession(session, req.RoleId)
// if err != nil {
// _ = session.Rollback()
// return
// }
//
// //2、新增 `role_permission_group``
// var mm []*model.RolePermissionGroup
// now := time.Now()
// for _, v := range req.PermissionIds {
// mm = append(mm, &model.RolePermissionGroup{
// RoleId: role.Id,
// GroupId: v,
// CreateAt: now.Format("2006-01-02 15:04:05"),
// UpdateAt: now.Format("2006-01-02 15:04:05"),
// })
// }
// _, err = rolePermissionGroupDb.BatchAddRolePermissionGroupBySession(session, mm)
// if err != nil {
// _ = session.Rollback()
// return
// }
//
// return session.Commit()
//}

func BindUserFactoryIdentity(req md.BindFactoryIdentityReq) (err error) {
session := db.Db.NewSession()
defer session.Close()
session.Begin()
//1、查询 `role`
userIdentityDb := db.UserIdentityDb{}
userIdentityDb.Set(0)
role, err := userIdentityDb.GetUserIdentity(req.UserIdentitiesId)
if err != nil {
return
}
if role == nil {
return errors.New("未查询到相应记录")
}

//2、删除 `factory_identity_with_user_identity`
factoryIdentityWithUserIdentityDb := db.FactoryIdentityWithUserIdentityDb{}
factoryIdentityWithUserIdentityDb.Set()
_, err = factoryIdentityWithUserIdentityDb.FactoryIdentityWithUserIdentityDeleteForRoleBySession(session, req.FactoryIdentityId)
if err != nil {
_ = session.Rollback()
return
}

//3、新增 `删除 `factory_identity_with_user_identity``
now := time.Now()
_, err = factoryIdentityWithUserIdentityDb.AddFactoryIdentityWithUserIdentityBySession(session, &model.FactoryIdentityWithUserIdentity{
UserIdentityId: req.UserIdentitiesId,
FactoryIdentityId: req.FactoryIdentityId,
CreateAt: now.Format("2006-01-02 15:04:05"),
UpdateAt: now.Format("2006-01-02 15:04:05"),
})
if err != nil {
_ = session.Rollback()
return
}

return session.Commit()
}

func FactoryInfo(enterpriseId int) (err error, resp md.FactoryInfoResp) {
//1、查询`enterprise`
enterpriseDb := db.EnterpriseDb{}
enterpriseDb.Set()
enterprise, err := enterpriseDb.GetEnterprise(enterpriseId)
if err != nil {
return
}
resp.Name = enterprise.Name
resp.Memo = enterprise.Memo
resp.Kind = enum.EnterpriseKind(enterprise.Kind).String()
resp.Mode = enum.EnterpriseMode(enterprise.Mode).String()
resp.Pvd = enum.EnterprisePvd(enterprise.Pvd).String()
resp.State = enum.EnterpriseState(enterprise.State).String()

//2、统计 "用户"、 "工人" 数量
userIdentityDb := db.UserIdentityDb{}
userIdentityDb.Set(0)
resp.WorkerNum, err = userIdentityDb.CountUserIdentityForEnterprise(enterpriseId, enum.UserIdentityForFactory)
if err != nil {
return
}
//userDb := db.UserDb{}
//userDb.Set()
//resp.UserNum, err = userDb.CountUserForEnterprise(enterpriseId)
//if err != nil {
// return
//}

//3、统计 订单数据
now := time.Now()
today := now.AddDate(0, 0, +1).Format("2006-01-02") //今日
thisMonth := time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location()).Format("2006-01-02") //本月
sql1 := fmt.Sprintf("SELECT SUM(total_amount) AS this_month_consume_amount FROM factory_ord where gmt_payment >= '%s' and gmt_payment <= '%s'", thisMonth, today)
sql2 := fmt.Sprintf("SELECT count(*) AS this_month_order_num FROM factory_ord where gmt_payment >= '%s' and gmt_payment <= '%s'", thisMonth, today)
sql3 := fmt.Sprintf("SELECT SUM(service_fee) AS this_month_service_amount FROM factory_ord where gmt_payment >= '%s' and gmt_payment <= '%s'", thisMonth, today)
sql4 := fmt.Sprintf("SELECT SUM(receipt_amount) AS this_month_receipt_amount FROM factory_ord where gmt_payment >= '%s' and gmt_payment <= '%s'", thisMonth, today)

mapArr1, err := db.QueryNativeString(db.Db, sql1)
if err != nil {
return
}
if mapArr1 == nil {
resp.ThisMonthConsumeAmount = 0
} else {
resp.ThisMonthConsumeAmount = utils.StrToFloat64(mapArr1[0]["this_month_consume_amount"])
}

mapArr2, err := db.QueryNativeString(db.Db, sql2)
if err != nil {
return
}
if mapArr2 == nil {
resp.ThisMonthOrderNum = 0
} else {
resp.ThisMonthOrderNum = utils.StrToFloat64(mapArr2[0]["this_month_order_num"])
}

mapArr3, err := db.QueryNativeString(db.Db, sql3)
if err != nil {
return
}
if mapArr3 == nil {
resp.ThisMonthServiceAmount = 0
} else {
resp.ThisMonthServiceAmount = utils.StrToFloat64(mapArr3[0]["this_month_service_amount"])
}

mapArr4, err := db.QueryNativeString(db.Db, sql4)
if err != nil {
return
}

if mapArr4 == nil {
resp.ThisMonthReceiptAmount = 0
} else {
resp.ThisMonthReceiptAmount = utils.StrToFloat64(mapArr4[0]["receipt_amount"])
}
return
}

+ 53
- 0
app/customer/hdl/hdl_self_support_for_school_order.go Целия файл

@@ -11,6 +11,59 @@ import (
"github.com/gin-gonic/gin"
)

func FactoryOrderList(c *gin.Context) {
var req md.FactoryOrderListReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
list, total, err := svc.FactoryOrderList(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}

tradeAmountTotal, err := svc.FactoryOrderStatistic(req)
if err != nil {
e.OutErr(c, e.ERR, err.Error())
return
}

e.OutSuc(c, map[string]interface{}{
"list": list,
"total": total,
"trade_amount_total": tradeAmountTotal,
"order_status_list": []map[string]interface{}{
{
"name": enum.FactoryOrdOrderStatus.String(enum.FactoryOrdOrderStatusForSuccess),
"value": enum.FactoryOrdOrderStatusForSuccess,
},
{
"name": enum.FactoryOrdOrderStatus.String(enum.FactoryOrdOrderStatusForRefund),
"value": enum.FactoryOrdOrderStatusForRefund,
},
{
"name": enum.FactoryOrdOrderStatus.String(enum.FactoryOrdOrderStatusForClose),
"value": enum.FactoryOrdOrderStatusForClose,
},
},
"trade_channel_list": []map[string]interface{}{
{
"name": enum.FactoryOrdTradeChannel.String(enum.FactoryOrdTradeChannelForAli),
"value": enum.FactoryOrdTradeChannelForAli,
},
{
"name": enum.FactoryOrdTradeChannel.String(enum.FactoryOrdTradeChannelForWx),
"value": enum.FactoryOrdTradeChannelForWx,
},
},
}, nil)
return
}

func SelfSupportForSchoolOrderList(c *gin.Context) {
var req md.SelfSupportForSchoolOrderListReq
err := c.ShouldBindJSON(&req)


+ 19
- 0
app/customer/hdl/hdl_user.go Целия файл

@@ -137,6 +137,25 @@ func UserInfo(c *gin.Context) {
}
}

if v.Enterprise.Pvd == enum.EnterprisePvdForAllPayment && v.Enterprise.Mode == enum.EnterpriseModeForFactory {
//TODO::工厂
sMDate := utils.GetFirstDateOfMonth(now).Format("2006-01-02 15:04:05")
eMDate := utils.GetLastDateOfMonth(now).Format("2006-01-02 15:04:05")
sTDate, eTDate := utils.GetDateTimeRangeStr("today")
monthStatistic, err2 := svc2.FactoryUserIdentityOrderStatistic(v.UserIdentity.Id, sMDate, eMDate, "total_amount")
if err2 != nil {
e.OutErr(c, e.ERR, err2.Error())
return
}
dayStatistic, err2 := svc2.FactoryUserIdentityOrderStatistic(v.UserIdentity.Id, sTDate, eTDate, "total_amount")
if err2 != nil {
e.OutErr(c, e.ERR, err2.Error())
return
}
tmp["month_statistic"] = monthStatistic
tmp["day_statistic"] = dayStatistic
}

identityList = append(identityList, tmp)
}



+ 89
- 0
app/customer/hdl/hdl_user_identity.go Целия файл

@@ -287,6 +287,52 @@ func SaveSelfSupportForSchoolUserIdentity(c *gin.Context) {
return
}

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

if req.CertType == 0 {
req.CertType = enum.UserIdentityCertTypeForIdCard
}

//1、判断当前身份是否已绑定
userIdentityDb := db.UserIdentityDb{}
userIdentityDb.Set(user.Id)
isHasUserIdentity, err := userIdentityDb.UserIdentityExist(req.EnterpriseId, req.IdNo, req.CertType)
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}

if isHasUserIdentity == nil {
e.OutErr(c, e.ERR_NO_DATA, "当前身份信息不存在")
return
} else {
if isHasUserIdentity.Uid != 0 && isHasUserIdentity.Uid != user.Id {
e.OutErr(c, e.ERR, "当前身份信息已被绑定使用")
return
}
//2、修改身份信息
isHasUserIdentity.Uid = user.Id
isHasUserIdentity.Name = req.Name
isHasUserIdentity.State = enum.UserIdentityStateForNormal
_, err = userIdentityDb.UserIdentityUpdate(isHasUserIdentity.Id, isHasUserIdentity, "uid", "name", "state")
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}
}
e.OutSuc(c, "success", nil)
return
}

func SaveNursingHomeUserIdentity(c *gin.Context) {
var req md.SaveNursingHomeUserIdentityReq
err := c.ShouldBindJSON(&req)
@@ -482,6 +528,42 @@ func UpdateSelfSupportForSchoolUserIdentity(c *gin.Context) {
return
}

func UpdateFactoryUserIdentity(c *gin.Context) {
var req md.UpdateFactoryUserIdentityReq
err := c.ShouldBindJSON(&req)
if err != nil {
err = validate.HandleValidateErr(err)
err1 := err.(e.E)
e.OutErr(c, err1.Code, err1.Error())
return
}
user := svc.GetUser(c)
//1、查询当前身份是否存在
userIdentityDb := db.UserIdentityDb{}
userIdentityDb.Set(user.Id)
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
}
//2、修改身份信息
userIdentity.Name = req.Name
userIdentity.IdNo = req.IdNo
_, err = userIdentityDb.UserIdentityUpdate(userIdentity.Id, userIdentity, "id_no", "name")
if err != nil {
e.OutErr(c, e.ERR_DB_ORM, err.Error())
return
}

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

func UpdateNursingHomeUserIdentity(c *gin.Context) {
var req md.UpdateNursingHomeUserIdentityReq
err := c.ShouldBindJSON(&req)
@@ -574,6 +656,13 @@ func DeleteUserIdentity(c *gin.Context) {
return
}
break
case enum.UserIdentityForFactory:
err1 := svc.DeleteUserIdentityForFactory(userIdentity.Id)
if err1 != nil {
e.OutErr(c, e.ERR, err1.Error())
return
}
break
case enum.UserIdentityForNursingHome:
err1 := svc.DeleteUserIdentityForNursingHome(userIdentity.Id)
if err1 != nil {


+ 9
- 0
app/customer/md/md_order.go Целия файл

@@ -135,3 +135,12 @@ type NursingHomeMyReserveRespList struct {
LunchTotal int `json:"lunch_total" label:"午餐-总计"`
DinnerTotal int `json:"dinner_total" label:"晚餐-总计"`
}

type FactoryOrderListReq struct {
UserIdentityId int `json:"user_identity_id" label:"用户身份id"`
Limit int `json:"limit"`
Page int `json:"page" `
OrderStatus int `json:"order_status" `
StartDate string `json:"start_date" `
EndDate string `json:"end_date" `
}

+ 13
- 0
app/customer/md/md_user_identity.go Целия файл

@@ -28,6 +28,13 @@ type SaveSelfSupportForSchoolUserIdentityReq struct {
ClassId int `json:"class_id" label:"班级id"`
}

type SaveFactoryUserIdentityReq struct {
EnterpriseId int `json:"enterprise_id" binding:"required" label:"企业id"`
Name string `json:"name" binding:"required" label:"姓名"`
IdNo string `json:"id_no" binding:"required" label:"身份证号码"`
CertType int `json:"cert_type" label:"证件类型(1:身份证 2:学工号 3:护照)"`
}

type UpdateCentralKitchenForSchoolUserIdentityReq struct {
IdNo string `json:"id_no" label:"身份证号"`
Name string `json:"name" label:"姓名"`
@@ -44,6 +51,12 @@ type UpdateSelfSupportForSchoolUserIdentityReq struct {
UserIdentityId int `json:"user_identity_id" label:"用户身份id"`
}

type UpdateFactoryUserIdentityReq struct {
IdNo string `json:"id_no" label:"证件号证号"`
Name string `json:"name" label:"姓名"`
UserIdentityId int `json:"user_identity_id" label:"用户身份id"`
}

type UpdateNursingHomeUserIdentityReq struct {
IdNo string `json:"id_no" label:"身份证号"`
Name string `json:"name" label:"姓名"`


+ 61
- 0
app/customer/svc/order/svc_factory_ord.go Целия файл

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

import (
"applet/app/customer/md"
"applet/app/db"
"applet/app/db/model"
"applet/app/utils"
"fmt"
)

func FactoryOrderList(req md.FactoryOrderListReq) (m []model.FactoryOrd, total int64, err error) {
sess := db.Db.Desc("id").Where("user_identity_id =?", req.UserIdentityId).Limit(req.Limit, (req.Page-1)*req.Limit)
if req.OrderStatus != 0 {
sess.And("order_status = ?", req.OrderStatus)
}
if req.StartDate != "" {
sess.And("create_at >= ?", req.StartDate)
}
if req.EndDate != "" {
sess.And("create_at <= ?", req.EndDate)
}
total, err = sess.FindAndCount(&m)
if err != nil {
return
}
return
}

func FactoryOrderStatistic(req md.FactoryOrderListReq) (total float64, err error) {
var sql = fmt.Sprintf("SELECT SUM(total_amount) AS trade_amount_total FROM factory_ord where user_identity_id = '%d'", req.UserIdentityId)
if req.OrderStatus != 0 {
sql += fmt.Sprintf(" and order_status = %d", req.OrderStatus)
}
if req.StartDate != "" {
sql += fmt.Sprintf(" and create_at >= '%s'", req.StartDate)
}
if req.EndDate != "" {
sql += fmt.Sprintf(" and create_at <= '%s'", req.EndDate)
}
mapArr1, err := db.QueryNativeString(db.Db, sql)
if err != nil {
return
}
if mapArr1 != nil {
total = utils.StrToFloat64(mapArr1[0]["trade_amount_total"])
}
return
}

func FactoryUserIdentityOrderStatistic(userIdentityId int, sDate, eDate, column string) (total float64, err error) {
var sql = fmt.Sprintf("SELECT SUM(%s) AS total FROM factory_ord where user_identity_id = '%d' and gmt_payment >= '%s' and gmt_payment <= '%s'",
column, userIdentityId, sDate, eDate)
mapArr1, err := db.QueryNativeString(db.Db, sql)
if err != nil {
return
}
if mapArr1 != nil {
total = utils.StrToFloat64(mapArr1[0]["total"])
}
return
}

+ 2
- 2
app/customer/svc/order/svc_self_support_for_school_order.go Целия файл

@@ -33,10 +33,10 @@ func SupportOrderStatistic(req md.SelfSupportForSchoolOrderListReq) (total float
sql += fmt.Sprintf(" and order_status = %d", req.OrderStatus)
}
if req.StartDate != "" {
sql += fmt.Sprintf(" and create_at = %s", req.StartDate)
sql += fmt.Sprintf(" and create_at >= '%s'", req.StartDate)
}
if req.EndDate != "" {
sql += fmt.Sprintf(" and create_at <= %s", req.StartDate)
sql += fmt.Sprintf(" and create_at <= '%s'", req.EndDate)
}
mapArr1, err := db.QueryNativeString(db.Db, sql)
if err != nil {


+ 19
- 0
app/customer/svc/svc_user_identity.go Целия файл

@@ -114,6 +114,25 @@ func DeleteUserIdentityForSelfSupportForWorker(userIdentityId int) (err error) {
return
}

func DeleteUserIdentityForFactory(userIdentityId int) (err error) {
//1、删除 user_identity(将`state`变成"冻结"状态)
userIdentityDb := db.UserIdentityDb{}
userIdentityDb.Set(0)
identity, err := userIdentityDb.GetUserIdentity(userIdentityId)
if err != nil {
return err
}
identity.State = enum.UserIdentityStateForFreeze
updateAffected, err := userIdentityDb.UserIdentityUpdate(userIdentityId, identity, "state")
if err != nil {
return err
}
if updateAffected <= 0 {
return errors.New("删除用户信息数据失败")
}
return
}

func DeleteUserIdentityForNursingHome(userIdentityId int) (err error) {
//1、删除 user_identity(将`state`变成"冻结"状态)
userIdentityDb := db.UserIdentityDb{}


+ 103
- 0
app/db/db_factory_device.go Целия файл

@@ -0,0 +1,103 @@
package db

import (
"applet/app/db/model"
"applet/app/utils/logx"
"reflect"
"xorm.io/xorm"
)

type FactoryDevice struct {
Db *xorm.Engine `json:"db"`
TerminalId string `json:"terminal_id"`
}

func (factoryDeviceDb *FactoryDevice) Set(terminalId string) { // set方法
factoryDeviceDb.Db = Db
factoryDeviceDb.TerminalId = terminalId
}

func (factoryDeviceDb *FactoryDevice) GetFactoryDeviceById(id int) (m *model.FactoryDevice, err error) {
m = new(model.FactoryDevice)
has, err := factoryDeviceDb.Db.Where("id =?", id).Get(m)
if err != nil {
return nil, logx.Error(err)
}
if has == false {
return nil, nil
}
return m, nil
}

func (factoryDeviceDb *FactoryDevice) GetFactoryDevice() (m *model.FactoryDevice, err error) {
m = new(model.FactoryDevice)
has, err := factoryDeviceDb.Db.Where("terminal_id =?", factoryDeviceDb.TerminalId).Get(m)
if err != nil {
return nil, logx.Error(err)
}
if has == false {
return nil, nil
}
return m, nil
}

func (factoryDeviceDb *FactoryDevice) FactoryDeviceInsert(m *model.FactoryDevice) (int, error) {
_, err := factoryDeviceDb.Db.InsertOne(m)
if err != nil {
return 0, err
}
return m.Id, nil
}

func (factoryDeviceDb *FactoryDevice) FactoryDeviceInsertBySession(session *xorm.Session, m *model.FactoryDevice) (int, error) {
_, err := session.InsertOne(m)
if err != nil {
return 0, err
}
return m.Id, nil
}

func (factoryDeviceDb *FactoryDevice) BatchAddFactoryDevices(mm []*model.FactoryDevice) (int64, error) {
affected, err := factoryDeviceDb.Db.Insert(mm)
if err != nil {
return 0, err
}
return affected, nil
}

func (factoryDeviceDb *FactoryDevice) FactoryDeviceDeleteById(id interface{}) (int64, error) {
if reflect.TypeOf(id).Kind() == reflect.Slice {
return Db.In("id", id).Delete(model.FactoryDevice{})
} else {
return Db.Where("id = ?", id).Delete(model.FactoryDevice{})
}
}

func (factoryDeviceDb *FactoryDevice) FactoryDeviceDelete() (int64, error) {
return Db.Where("terminal_id = ?", factoryDeviceDb.TerminalId).Delete(model.FactoryDevice{})
}

func (factoryDeviceDb *FactoryDevice) FactoryDeviceUpdate(m *model.FactoryDevice, forceColums ...string) (int64, error) {
var (
affected int64
err error
)
if forceColums != nil {
affected, err = factoryDeviceDb.Db.Where("terminal_id=?", factoryDeviceDb.TerminalId).Cols(forceColums...).Update(m)
} else {
affected, err = factoryDeviceDb.Db.Where("terminal_id=?", factoryDeviceDb.TerminalId).Update(m)
}
if err != nil {
return 0, err
}
return affected, nil
}

type FactoryDeviceWithEnterprise struct {
model.FactoryDevice `xorm:"extends"`
model.Enterprise `xorm:"extends"`
}

func (FactoryDeviceWithEnterprise) TableName() string {
return "factory_device"
}

+ 111
- 0
app/db/db_factory_identity.go Целия файл

@@ -0,0 +1,111 @@
package db

import (
"applet/app/db/model"
"applet/app/utils/logx"
"reflect"
"xorm.io/xorm"
)

type FactoryIdentityDb struct {
Db *xorm.Engine `json:"db"`
EnterpriseId int `json:"enterprise_id"`
}

func (factoryIdentityDb *FactoryIdentityDb) Set(enterpriseId int) { // set方法
factoryIdentityDb.Db = Db
factoryIdentityDb.EnterpriseId = enterpriseId
}

func (factoryIdentityDb *FactoryIdentityDb) FindFactoryIdentity(page, limit int) (list *[]model.FactoryIdentity, count int64, err error) {
var m []model.FactoryIdentity
if count, err = factoryIdentityDb.Db.Where("enterprise_id = ?", factoryIdentityDb.EnterpriseId).Desc("id").Limit(limit, (page-1)*limit).FindAndCount(&m); err != nil {
return nil, 0, logx.Error(err)
}
return &m, count, nil
}

func (factoryIdentityDb *FactoryIdentityDb) GetFactoryIdentity(id int) (m *model.FactoryIdentity, err error) {
m = new(model.FactoryIdentity)
has, err := factoryIdentityDb.Db.Where("id = ?", id).Get(m)
if err != nil {
return nil, logx.Error(err)
}
if has == false {
return nil, nil
}
return m, nil
}

func (factoryIdentityDb *FactoryIdentityDb) GetFactoryIdentityByName(name string) (m *model.FactoryIdentity, err error) {
m = new(model.FactoryIdentity)
has, err := factoryIdentityDb.Db.Where("name = ?", name).Get(m)
if err != nil {
return nil, logx.Error(err)
}
if has == false {
return nil, nil
}
return m, nil
}

func (factoryIdentityDb *FactoryIdentityDb) UpdateFactoryIdentity(m *model.FactoryIdentity, columns ...string) (int64, error) {
affected, err := factoryIdentityDb.Db.Where("id =?", m.Id).Cols(columns...).Update(m)
if err != nil {
return 0, err
}
return affected, nil
}

func (factoryIdentityDb *FactoryIdentityDb) FactoryIdentityDeleteBySession(session *xorm.Session, id interface{}) (int64, error) {
if reflect.TypeOf(id).Kind() == reflect.Slice {
return session.In("id", id).Delete(model.FactoryIdentity{})
} else {
return session.Where("id = ?", id).Delete(model.FactoryIdentity{})
}
}

func (factoryIdentityDb *FactoryIdentityDb) FactoryIdentityInsert(m *model.FactoryIdentity) (int, error) {
_, err := factoryIdentityDb.Db.InsertOne(m)
if err != nil {
return 0, err
}
return m.Id, nil
}

func (factoryIdentityDb *FactoryIdentityDb) FindUserIdentityWithFactoryIdentity(userIdentityId int) (list []*UserIdentityWithFactoryIdentity, total int64, err error) {
total, err = factoryIdentityDb.Db.Where("user_identity.id =?", userIdentityId).
Join("LEFT", "factory_identity_with_user_identity", "factory_identity_with_user_identity.user_identity_id = user_identity.id").
Join("LEFT", "factory_identity", "factory_identity.id = factory_identity_with_user_identity.factory_identity_id").
FindAndCount(&list)
return
}

type UserIdentityWithFactoryIdentity struct {
model.UserIdentity `xorm:"extends"`
model.User `xorm:"extends"`
model.FactoryIdentityWithUserIdentity `xorm:"extends"`
model.FactoryIdentity `xorm:"extends"`
}

func (UserIdentityWithFactoryIdentity) TableName() string {
return "user_identity"
}

func (factoryIdentityDb *FactoryIdentityDb) FindFactoryIdentityWithUserIdentity(factoryIdentityId int) (list []*FactoryIdentityWithUserIdentity, total int64, err error) {
total, err = factoryIdentityDb.Db.Where("factory_identity.id =?", factoryIdentityId).
Join("LEFT", "factory_identity_with_user_identity", "factory_identity_with_user_identity.factory_identity_id = factory_identity.id").
Join("LEFT", "user_identity", "user_identity.id = factory_identity_with_user_identity.user_identity_id").
FindAndCount(&list)
return
}

type FactoryIdentityWithUserIdentity struct {
model.FactoryIdentity `xorm:"extends"`
model.UserIdentity `xorm:"extends"`
model.FactoryIdentityWithUserIdentity `xorm:"extends"`
}

func (FactoryIdentityWithUserIdentity) TableName() string {
return "factory_identity"
}

+ 68
- 0
app/db/db_factory_identity_with_user_identity.go Целия файл

@@ -0,0 +1,68 @@
package db

import (
"applet/app/db/model"
"applet/app/utils/logx"
"reflect"
"xorm.io/xorm"
)

type FactoryIdentityWithUserIdentityDb struct {
Db *xorm.Engine `json:"db"`
}

func (factoryIdentityWithUserIdentityDb *FactoryIdentityWithUserIdentityDb) Set() { // set方法
factoryIdentityWithUserIdentityDb.Db = Db
}

func (factoryIdentityWithUserIdentityDb *FactoryIdentityWithUserIdentityDb) FactoryIdentityWithUserIdentityDeleteForRoleBySession(session *xorm.Session, factoryIdentityId interface{}) (int64, error) {
if reflect.TypeOf(factoryIdentityId).Kind() == reflect.Slice {
return session.In("factory_identity_id", factoryIdentityId).Delete(model.FactoryIdentityWithUserIdentity{})
} else {
return session.Where("factory_identity_id = ?", factoryIdentityId).Delete(model.FactoryIdentityWithUserIdentity{})
}
}

func (factoryIdentityWithUserIdentityDb *FactoryIdentityWithUserIdentityDb) BatchAddFactoryIdentityWithUserIdentityBySession(session *xorm.Session, mm []*model.FactoryIdentityWithUserIdentity) (int64, error) {
affected, err := session.Insert(mm)
if err != nil {
return 0, err
}
return affected, nil
}

func (factoryIdentityWithUserIdentityDb *FactoryIdentityWithUserIdentityDb) AddFactoryIdentityWithUserIdentityBySession(session *xorm.Session, m *model.FactoryIdentityWithUserIdentity) (int, error) {
_, err := session.InsertOne(m)
if err != nil {
return 0, err
}
return m.Id, nil
}

func (factoryIdentityWithUserIdentityDb *FactoryIdentityWithUserIdentityDb) AddFactoryIdentityWithUserIdentity(m *model.FactoryIdentityWithUserIdentity) (int, error) {
_, err := factoryIdentityWithUserIdentityDb.Db.InsertOne(m)
if err != nil {
return 0, err
}
return m.Id, nil
}

func (factoryIdentityWithUserIdentityDb *FactoryIdentityWithUserIdentityDb) GetFactoryIdentityWithUserIdentity(userIdentityId int) (m *model.FactoryIdentityWithUserIdentity, err error) {
m = new(model.FactoryIdentityWithUserIdentity)
has, err := factoryIdentityWithUserIdentityDb.Db.Where("user_identity_id = ?", userIdentityId).Get(m)
if err != nil {
return nil, logx.Error(err)
}
if has == false {
return nil, nil
}
return m, nil
}

func (factoryIdentityWithUserIdentityDb *FactoryIdentityWithUserIdentityDb) UpdateFactoryIdentityWithUserIdentity(m *model.FactoryIdentityWithUserIdentity, columns ...string) (int64, error) {
affected, err := factoryIdentityWithUserIdentityDb.Db.Where("id =?", m.Id).Cols(columns...).Update(m)
if err != nil {
return 0, err
}
return affected, nil
}

+ 115
- 0
app/db/db_factory_ord.go Целия файл

@@ -0,0 +1,115 @@
package db

import (
"applet/app/db/model"
"applet/app/utils/logx"
"reflect"
"xorm.io/xorm"
)

type FactoryOrd struct {
Db *xorm.Engine `json:"db"`
OutOrderNo string `json:"user_identity_id"`
}

func (factoryOrdOrdDb *FactoryOrd) Set(outOrderNo string) { // set方法
factoryOrdOrdDb.Db = Db
factoryOrdOrdDb.OutOrderNo = outOrderNo
}

func (factoryOrdOrdDb *FactoryOrd) GetFactoryOrdById(id int) (m *model.FactoryOrd, err error) {
m = new(model.FactoryOrd)
has, err := factoryOrdOrdDb.Db.Where("id =?", id).Get(m)
if err != nil {
return nil, logx.Error(err)
}
if has == false {
return nil, nil
}
return m, nil
}

func (factoryOrdOrdDb *FactoryOrd) GetFactoryOrd() (m *model.FactoryOrd, err error) {
m = new(model.FactoryOrd)
has, err := factoryOrdOrdDb.Db.Where("out_order_no =?", factoryOrdOrdDb.OutOrderNo).Get(m)
if err != nil {
return nil, logx.Error(err)
}
if has == false {
return nil, nil
}
return m, nil
}

func (factoryOrdOrdDb *FactoryOrd) FactoryOrdInsert(m *model.FactoryOrd) (int, error) {
_, err := factoryOrdOrdDb.Db.InsertOne(m)
if err != nil {
return 0, err
}
return m.Id, nil
}

func (factoryOrdOrdDb *FactoryOrd) FactoryOrdInsertBySession(session *xorm.Session, m *model.FactoryOrd) (int, error) {
_, err := session.InsertOne(m)
if err != nil {
return 0, err
}
return m.Id, nil
}

func (factoryOrdOrdDb *FactoryOrd) BatchAddFactoryOrds(mm []*model.FactoryOrd) (int64, error) {
affected, err := factoryOrdOrdDb.Db.Insert(mm)
if err != nil {
return 0, err
}
return affected, nil
}

func (factoryOrdOrdDb *FactoryOrd) FactoryOrdDeleteById(id interface{}) (int64, error) {
if reflect.TypeOf(id).Kind() == reflect.Slice {
return Db.In("id", id).Delete(model.FactoryOrd{})
} else {
return Db.Where("id = ?", id).Delete(model.FactoryOrd{})
}
}

func (factoryOrdOrdDb *FactoryOrd) FactoryOrdDelete() (int64, error) {
return Db.Where("out_order_no = ?", factoryOrdOrdDb.OutOrderNo).Delete(model.FactoryOrd{})
}

func (factoryOrdOrdDb *FactoryOrd) FactoryOrdUpdate(m *model.FactoryOrd, forceColums ...string) (int64, error) {
var (
affected int64
err error
)
if forceColums != nil {
affected, err = factoryOrdOrdDb.Db.Where("out_order_no=?", factoryOrdOrdDb.OutOrderNo).Cols(forceColums...).Update(m)
} else {
affected, err = factoryOrdOrdDb.Db.Where("out_order_no=?", factoryOrdOrdDb.OutOrderNo).Update(m)
}
if err != nil {
return 0, err
}
return affected, nil
}

type FactoryOrdWithUserIdentity struct {
model.FactoryOrd `xorm:"extends"`
model.UserIdentity `xorm:"extends"`
model.Enterprise `xorm:"extends"`
model.User `xorm:"extends"`
model.FactoryDevice `xorm:"extends"`
}

func (FactoryOrdWithUserIdentity) TableName() string {
return "factory_ord"
}

type FactoryOrdWithUserIdentityV2 struct {
model.FactoryOrd `xorm:"extends"`
model.Enterprise `xorm:"extends"`
}

func (FactoryOrdWithUserIdentityV2) TableName() string {
return "factory_ord"
}

+ 45
- 0
app/db/db_factory_set.go Целия файл

@@ -0,0 +1,45 @@
package db

import (
"applet/app/db/model"
"applet/app/utils/logx"
"xorm.io/xorm"
)

type FactorySetDb struct {
Db *xorm.Engine `json:"db"`
EnterpriseId int `json:"enterprise_id"`
}

func (factorySetDb *FactorySetDb) Set(enterpriseId int) { // set方法
factorySetDb.Db = Db
factorySetDb.EnterpriseId = enterpriseId
}

func (factorySetDb *FactorySetDb) GetFactorySet() (m *model.FactorySet, err error) {
m = new(model.FactorySet)
has, err := factorySetDb.Db.Where("enterprise_id =?", factorySetDb.EnterpriseId).Get(m)
if err != nil {
return nil, logx.Error(err)
}
if has == false {
return nil, nil
}
return m, nil
}

func (factorySetDb *FactorySetDb) FactorySetInsert(m *model.FactorySet) (int, error) {
_, err := factorySetDb.Db.InsertOne(m)
if err != nil {
return 0, err
}
return m.Id, nil
}

func (factorySetDb *FactorySetDb) FactorySetUpdate(m *model.FactorySet, columns ...string) (int64, error) {
affected, err := factorySetDb.Db.Where("enterprise_id =?", factorySetDb.EnterpriseId).Cols(columns...).Update(m)
if err != nil {
return 0, err
}
return affected, nil
}

+ 9
- 0
app/db/db_user.go Целия файл

@@ -102,6 +102,15 @@ func (userDb *UserDb) DeleteUser(id interface{}) (int64, error) {
}
}

//func (userDb *UserDb) CountUserForEnterprise(enterpriseId int) (total int64, err error) {
// var m model.User
// total, err = userDb.Db.Where("enterprise_id =? ", enterpriseId).Count(&m)
// if err != nil {
// return
// }
// return
//}

type UserWithUserIdentity struct {
model.User `xorm:"extends"`
model.UserIdentity `xorm:"extends"`


+ 11
- 0
app/db/model/factory_device.go Целия файл

@@ -0,0 +1,11 @@
package model

type FactoryDevice struct {
Id int `json:"id" xorm:"not null pk autoincr INT(11)"`
Name string `json:"name" xorm:"not null default '' comment('档口名称') VARCHAR(255)"`
TerminalId string `json:"terminal_id" xorm:"not null default '' comment('设备编号') unique VARCHAR(255)"`
EnterpriseId int `json:"enterprise_id" xorm:"not null default 0 comment('校企id') INT(11)"`
Memo string `json:"memo" xorm:"not null default '' comment('备注信息') VARCHAR(255)"`
CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
}

+ 16
- 0
app/db/model/factory_identity.go Целия файл

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

type FactoryIdentity struct {
Id int `json:"id" xorm:"not null pk autoincr INT(11)"`
EnterpriseId int `json:"enterprise_id" xorm:"not null default 0 comment('所属单位id') INT(11)"`
Name string `json:"name" xorm:"not null default '' comment('名称') VARCHAR(255)"`
State int `json:"state" xorm:"not null default 1 comment('状态(1:正常 2:冻结)') TINYINT(1)"`
Memo string `json:"memo" xorm:"not null default '' comment('备注') VARCHAR(255)"`
IsSubsidy int `json:"is_subsidy" xorm:"not null default 0 comment('是否优惠补贴(0:否 1:是)') TINYINT(1)"`
SubsidyAmount string `json:"subsidy_amount" xorm:"not null default 0.00 comment('补贴金额') DECIMAL(8,2)"`
LeastPayAmount string `json:"least_pay_amount" xorm:"not null default 0.00 comment('最少支付金额') DECIMAL(8,2)"`
IsLimitConsumeNum int `json:"is_limit_consume_num" xorm:"not null default 0 comment('是否限制消费次数') TINYINT(1)"`
LimitConsumeNum int `json:"'limit_consume_num'" xorm:"default 0 comment('限制消费次数/日') 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
- 0
app/db/model/factory_identity_with_user_identity.go Целия файл

@@ -0,0 +1,9 @@
package model

type FactoryIdentityWithUserIdentity 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)"`
FactoryIdentityId int `json:"factory_identity_id" xorm:"not null default 0 comment('工厂身份id') INT(11)"`
CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
}

+ 27
- 0
app/db/model/factory_ord.go Целия файл

@@ -0,0 +1,27 @@
package model

type FactoryOrd struct {
Id int `json:"id" xorm:"not null pk autoincr INT(11)"`
EnterpriseId int `json:"enterprise_id" xorm:"not null default 0 comment('所属单位id') INT(11)"`
Uid int `json:"uid" xorm:"not null default 0 comment('用户id') INT(11)"`
UserIdentityId int `json:"user_identity_id" xorm:"not null default 0 comment('用户身份id') INT(11)"`
OutOrderNo string `json:"out_order_no" xorm:"not null default '' comment('外部订单号,设备端产生') VARCHAR(255)"`
TradeNo string `json:"trade_no" xorm:"not null default '' comment('第三方交易号,支付宝,微信,ISV渠道等') VARCHAR(255)"`
BuyerId string `json:"buyer_id" xorm:"not null default '' comment('渠道买家标识') CHAR(100)"`
TerminalId string `json:"terminal_id" xorm:"not null default '' comment('设备编号') CHAR(100)"`
TradeChannel string `json:"trade_channel" xorm:"not null default '' comment('交易渠道') CHAR(100)"`
StoreId string `json:"store_id" xorm:"not null default '' comment('门店编号') CHAR(100)"`
MerchantId string `json:"merchant_id" xorm:"not null default '' comment('商户编码') CHAR(100)"`
GmtPayment string `json:"gmt_payment" xorm:"not null default '' comment('支付成功时间') CHAR(100)"`
OrderStatus int `json:"order_status" xorm:"not null default 1 comment('交易状态 (1:支付成功 2:已退款 3:已关闭)') TINYINT(1)"`
Subject string `json:"subject" xorm:"not null default '' comment('订单主题') CHAR(50)"`
TotalAmount string `json:"total_amount" xorm:"not null default 0.00 comment('订单总金额') DECIMAL(8,2)"`
DiscountAmount string `json:"discount_amount" xorm:"not null default 0.00 comment('支付宝平台优惠金额') DECIMAL(8,2)"`
MdiscountAmount string `json:"mdiscount_amount" xorm:"not null default 0.00 comment('支付宝商家优惠金额') DECIMAL(8,2)"`
ReceiptAmount string `json:"receipt_amount" xorm:"not null default 0.00 comment('实收金额') DECIMAL(8,2)"`
BuyerPayAmount string `json:"buyer_pay_amount" xorm:"not null default 0.00 comment('买家支付金额') DECIMAL(8,2)"`
SubsidyAmount string `json:"subsidy_amount" xorm:"not null default 0.00 comment('补贴金额') DECIMAL(8,2)"`
ServiceFee string `json:"service_fee" xorm:"not null default 0.00 comment('服务费用') DECIMAL(8,2)"`
CreateAt string `json:"create_at" xorm:"not null pk default 'CURRENT_TIMESTAMP' DATETIME"`
UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
}

+ 10
- 0
app/db/model/factory_set.go Целия файл

@@ -0,0 +1,10 @@
package model

type FactorySet struct {
Id int `json:"id" xorm:"not null pk autoincr INT(11)"`
EnterpriseId int `json:"enterprise_id" xorm:"not null default 0 comment('所属单位id') INT(11)"`
IsOpenNaturalCustomer int `json:"is_open_natural_customer" xorm:"not null default 0 comment('开启自然顾客(1:开启 2:关闭)') TINYINT(1)"`
NaturalCustomerServiceFee string `json:"natural_customer_service_fee" xorm:"not null default 0.00 comment('自然顾客服务费') DECIMAL(8,2)"`
CreateAt string `json:"create_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
UpdateAt string `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"`
}

+ 3
- 0
app/enum/enum_enterprise.go Целия файл

@@ -50,6 +50,7 @@ type EnterprisePvd int32
const (
EnterprisePvdForOnlinePayment = 1
EnterprisePvdForFaceScanPayment = 2
EnterprisePvdForAllPayment = 3
)

func (gt EnterprisePvd) String() string {
@@ -58,6 +59,8 @@ func (gt EnterprisePvd) String() string {
return "在线支付"
case EnterprisePvdForFaceScanPayment:
return "刷脸支付"
case EnterprisePvdForAllPayment:
return "刷脸/刷码/扫码支付"
default:
return "未知"
}


+ 40
- 0
app/enum/enum_factory_ord.go Целия файл

@@ -0,0 +1,40 @@
package enum

type FactoryOrdOrderStatus int32

const (
FactoryOrdOrderStatusForSuccess = 1
FactoryOrdOrderStatusForRefund = 2
FactoryOrdOrderStatusForClose = 3
)

func (gt FactoryOrdOrderStatus) String() string {
switch gt {
case FactoryOrdOrderStatusForSuccess:
return "支付成功"
case FactoryOrdOrderStatusForRefund:
return "已退款"
case FactoryOrdOrderStatusForClose:
return "已关闭"
default:
return "未知"
}
}

type FactoryOrdTradeChannel string

const (
FactoryOrdTradeChannelForAli = "alipay"
FactoryOrdTradeChannelForWx = "wechat"
)

func (gt FactoryOrdTradeChannel) String() string {
switch gt {
case FactoryOrdTradeChannelForAli:
return "支付宝"
case FactoryOrdTradeChannelForWx:
return "微信"
default:
return "未知"
}
}

+ 3
- 0
app/enum/enum_user_identity.go Целия файл

@@ -10,6 +10,7 @@ const (
UserIdentityForSelfSupportForTeacher = 5
UserIdentityForSelfSupportForWorker = 6
UserIdentityForNursingHome = 7
UserIdentityForFactory = 8
)

func (gt UserIdentity) String() string {
@@ -28,6 +29,8 @@ func (gt UserIdentity) String() string {
return "自营-工作人员"
case UserIdentityForNursingHome:
return "养老院-普通用户"
case UserIdentityForFactory:
return "工厂-普通用户"
default:
return "未知"
}


+ 31
- 3
app/router/admin_router.go Целия файл

@@ -104,9 +104,12 @@ func rFinanceManage(r *gin.RouterGroup) {
}

func rDeviceManage(r *gin.RouterGroup) {
r.POST("/save", hdl2.DeviceSave) //设备管理-编辑/新增
r.POST("/list", hdl2.DeviceList) //设备管理-列表
r.DELETE("/delete/:device_sn", hdl2.DeviceDelete) //设备管理-删除
r.POST("/save", hdl2.DeviceSave) //设备管理-编辑/新增
r.POST("/list", hdl2.DeviceList) //设备管理-列表
r.DELETE("/delete/:device_sn", hdl2.DeviceDelete) //设备管理-删除
r.POST("/factory/save", hdl2.FactoryDeviceSave) //工厂设备管理-编辑/新增
r.POST("/factory/list", hdl2.FactoryDeviceList) //工厂设备管理-列表
r.DELETE("/factory/delete/:terminal_id", hdl2.FactoryDeviceDelete) //工厂设备管理-删除
}

func rDataStatistics(r *gin.RouterGroup) {
@@ -253,6 +256,31 @@ func rEnterpriseManage(r *gin.RouterGroup) {
//r.POST("/nursingHome/statisticsExport", hdl2.NursingHomeDataStatisticsExport) //"养老院-数据统计"-导出
//r.POST("/nursingHome/statisticsList", hdl2.NursingHomeDataStatisticsList) //"养老院-数据统计"-列表
//r.DELETE("/nursingHome/statisticsDelete/:id", hdl2.NursingHomeDataStatisticsDelete) //"养老院-数据统计"-删除
rFactory := r.Group("/factory") //工厂
{
rFactory.POST("/factoryIdentityList", hdl.FactoryIdentityList) //身份列表
rFactory.POST("/addFactoryIdentity", hdl.AddFactoryIdentity) //添加身份
rFactory.POST("/updateFactoryIdentityState", hdl.UpdateFactoryIdentityState) //修改身份状态
rFactory.POST("/updateFactoryIdentity", hdl.UpdateFactoryIdentity) //修改身份
rFactory.DELETE("/deleteFactoryIdentity/:id", hdl.DeleteFactoryIdentity) //删除身份
rFactory.POST("/bindFactoryIdentity", hdl.BindUserFactoryIdentity) //绑定身份

rFactory.GET("/getBasic", hdl.GetBasicFactory) //获取基础设置
rFactory.POST("/setBasic", hdl.SetBasicFactory) //设置基础设置

rFactory.POST("/userUpdate", hdl.FactoryUserUpdate) //用户编辑
rFactory.POST("/userDelete", hdl.FactoryUserDelete) //用户删除
rFactory.GET("/downloadTemplateExcel", hdl.FactoryDownloadTemplateExcel) //下载表格模板
rFactory.POST("/importUserIdentity", hdl.FactoryImportUserIdentity) //导入员工
rFactory.POST("/workersList", hdl.FactoryWorkerList) //员工列表
rFactory.POST("/workerUpdate", hdl.FactoryWorkerUpdate) //员工编辑
rFactory.POST("/workerDelete", hdl.FactoryWorkerDelete) //员工删除
rFactory.POST("/workerAdd", hdl.FactoryWorkerAdd) //员工新增

rFactory.POST("/ordList", hdl.FactoryOrdList) //订单列表
rFactory.Any("/ordListExport", hdl.FactoryOrdListExport) //订单列表-导出

}
}

func rRole(r *gin.RouterGroup) {


+ 9
- 0
app/router/customer_router.go Целия файл

@@ -13,6 +13,7 @@ func CustomerInit(r *gin.RouterGroup) {
rCentralKitchenForSchoolOrder(r.Group("/order/centralKitchenForSchool"))
rNursingHomeOrder(r.Group("/order/nursingHome"))
rSelfSupportForSchoolOrder(r.Group("/order/selfSupportForSchool"))
rFactoryOrder(r.Group("/order/factory"))
rSelfSupportForSchool(r.Group("/selfSupportForSchool"))
rUserIdentity(r.Group("/userIdentity"))
rTest(r.Group("/test"))
@@ -52,6 +53,8 @@ func CustomerInit(r *gin.RouterGroup) {

r.POST("enterprise/selfSupportForSchool/saveUserIdentity", hdl.SaveSelfSupportForSchoolUserIdentity) //"自营-学校"新增身份信息

r.POST("enterprise/factory/saveUserIdentity", hdl.SaveFactoryUserIdentity) //"工厂"新增身份信息

r.POST("enterprise/nursingHome/saveUserIdentity", hdl.SaveNursingHomeUserIdentity) //"养老院"新增身份信息
r.GET("enterprise/nursingHome/package", hdl.NursingHomePackage) //"养老院"获取套餐
r.GET("enterprise/nursingHome/myReserve", hdl.NursingHomeMyReserve) //"养老院"我的预定
@@ -107,6 +110,11 @@ func rSelfSupportForSchoolOrder(r *gin.RouterGroup) {
r.POST("/debtRepay", hdl.SelfSupportForSchoolOrderDebtRepay) // 自营学校-支付欠款订单
}

func rFactoryOrder(r *gin.RouterGroup) {
r.Use(mw.Auth) //检测登录状态
r.POST("/list", hdl.FactoryOrderList) // 自营学校-订单列表
}

func rSelfSupportForSchool(r *gin.RouterGroup) { //自营学校
r.Use(mw.Auth) //检测登录状态
r.GET("/educateSceneTokenQuery", selfSupportForSchoolhdl.EducateSceneTokenQuery) // 自营学校-查询刷脸用户开通详细信息
@@ -122,5 +130,6 @@ func rUserIdentity(r *gin.RouterGroup) { //用户身份
r.DELETE("/deleteUserIdentity/:id", hdl.DeleteUserIdentity) // 删除身份信息
r.POST("/updateCentralKitchenForSchoolUserIdentity", hdl.UpdateCentralKitchenForSchoolUserIdentity) // 修改"央厨-学校"学生身份信息
r.POST("/updateSelfSupportForSchoolUserIdentity", hdl.UpdateSelfSupportForSchoolUserIdentity) // 修改"自营-学校"学生身份信息
r.POST("/updateFactoryUserIdentity", hdl.UpdateFactoryUserIdentity) // 修改"工厂"身份信息
r.POST("/updateNursingHomeUserIdentity", hdl.UpdateNursingHomeUserIdentity) // 修改"养老院"身份信息
}

+ 1
- 0
go.mod Целия файл

@@ -40,6 +40,7 @@ require (
github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/gookit/color v1.3.6 // indirect
github.com/jinzhu/copier v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/kr/text v0.2.0 // indirect


Двоични данни
Целия файл


Зареждане…
Отказ
Запис