diff --git a/app/admin/hdl/hdl_device.go b/app/admin/hdl/hdl_device.go new file mode 100644 index 0000000..adc02ef --- /dev/null +++ b/app/admin/hdl/hdl_device.go @@ -0,0 +1,125 @@ +package hdl + +import ( + "applet/app/admin/lib/validate" + "applet/app/admin/md" + "applet/app/db" + model2 "applet/app/db/model" + "applet/app/e" + "github.com/gin-gonic/gin" + "time" +) + +func DeviceList(c *gin.Context) { + var req md.DeviceListReq + 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("id") + if req.Name != "" { + sess.And("device.name like ?", "%"+req.Name+"%") + } + if req.EnterpriseName != "" { + sess.And("enterprise.name like ?", "%"+req.EnterpriseName+"%") + } + if req.StartDate != "" { + sess.And("device.create_at >=?", req.StartDate) + } + if req.EndDate != "" { + sess.And("device.create_at <=?", req.EndDate) + } + var m []*db.DeviceWithEnterprise + total, err := sess.Limit(req.Limit, (req.Page-1)*req.Limit).FindAndCount(&m) + if err != nil { + e.OutErr(c, e.ERR_DB_ORM, err.Error()) + return + } + + e.OutSuc(c, map[string]interface{}{ + "list": m, + "total": total, + }, nil) + return +} + +func DeviceSave(c *gin.Context) { + var req md.DeviceSaveReq + 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.Device{} + deviceDd.Set(req.DeviceSn) + //查找 device_sn + device, err := deviceDd.GetDevice() + if err != nil { + e.OutErr(c, e.ERR_DB_ORM, err.Error()) + return + } + if device == nil { + insertAffected, err1 := deviceDd.DeviceInsert(&model2.Device{ + Name: req.Name, + DeviceSn: req.DeviceSn, + 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.DeviceUpdate(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 DeviceDelete(c *gin.Context) { + deviceSn := c.Param("device_sn") + deviceDd := db.Device{} + deviceDd.Set(deviceSn) + deviceDdAffected, err := deviceDd.DeviceDelete() + 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 +} diff --git a/app/admin/md/md_device.go b/app/admin/md/md_device.go new file mode 100644 index 0000000..14e14ac --- /dev/null +++ b/app/admin/md/md_device.go @@ -0,0 +1,17 @@ +package md + +type DeviceListReq 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:"截止时间"` +} + +type DeviceSaveReq struct { + Name string `json:"name" binding:"required"` + DeviceSn string `json:"device_sn" binding:"required"` + EnterpriseId int `json:"enterprise_id" binding:"required"` + Memo string `json:"memo"` +} diff --git a/app/db/db_device.go b/app/db/db_device.go new file mode 100644 index 0000000..e4ebd4e --- /dev/null +++ b/app/db/db_device.go @@ -0,0 +1,103 @@ +package db + +import ( + "applet/app/db/model" + "applet/app/utils/logx" + "reflect" + "xorm.io/xorm" +) + +type Device struct { + Db *xorm.Engine `json:"db"` + DeviceSn string `json:"device_sn"` +} + +func (deviceOrdDb *Device) Set(deviceSn string) { // set方法 + deviceOrdDb.Db = Db + deviceOrdDb.DeviceSn = deviceSn +} + +func (deviceOrdDb *Device) GetDeviceById(id int) (m *model.Device, err error) { + m = new(model.Device) + has, err := deviceOrdDb.Db.Where("id =?", id).Get(m) + if err != nil { + return nil, logx.Error(err) + } + if has == false { + return nil, nil + } + return m, nil +} + +func (deviceOrdDb *Device) GetDevice() (m *model.Device, err error) { + m = new(model.Device) + has, err := deviceOrdDb.Db.Where("device_sn =?", deviceOrdDb.DeviceSn).Get(m) + if err != nil { + return nil, logx.Error(err) + } + if has == false { + return nil, nil + } + return m, nil +} + +func (deviceOrdDb *Device) DeviceInsert(m *model.Device) (int, error) { + _, err := deviceOrdDb.Db.InsertOne(m) + if err != nil { + return 0, err + } + return m.Id, nil +} + +func (deviceOrdDb *Device) DeviceInsertBySession(session *xorm.Session, m *model.Device) (int, error) { + _, err := session.InsertOne(m) + if err != nil { + return 0, err + } + return m.Id, nil +} + +func (deviceOrdDb *Device) BatchAddDevices(mm []*model.Device) (int64, error) { + affected, err := deviceOrdDb.Db.Insert(mm) + if err != nil { + return 0, err + } + return affected, nil +} + +func (deviceOrdDb *Device) DeviceDeleteById(id interface{}) (int64, error) { + if reflect.TypeOf(id).Kind() == reflect.Slice { + return Db.In("id", id).Delete(model.Device{}) + } else { + return Db.Where("id = ?", id).Delete(model.Device{}) + } +} + +func (deviceOrdDb *Device) DeviceDelete() (int64, error) { + return Db.Where("device_sn = ?", deviceOrdDb.DeviceSn).Delete(model.Device{}) +} + +func (deviceOrdDb *Device) DeviceUpdate(m *model.Device, forceColums ...string) (int64, error) { + var ( + affected int64 + err error + ) + if forceColums != nil { + affected, err = deviceOrdDb.Db.Where("device_sn=?", deviceOrdDb.DeviceSn).Cols(forceColums...).Update(m) + } else { + affected, err = deviceOrdDb.Db.Where("device_sn=?", deviceOrdDb.DeviceSn).Update(m) + } + if err != nil { + return 0, err + } + return affected, nil +} + +type DeviceWithEnterprise struct { + model.Device `xorm:"extends"` + model.Enterprise `xorm:"extends"` +} + +func (DeviceWithEnterprise) TableName() string { + return "device" +} diff --git a/app/db/model/device.go b/app/db/model/device.go new file mode 100644 index 0000000..bcfddff --- /dev/null +++ b/app/db/model/device.go @@ -0,0 +1,11 @@ +package model + +type Device struct { + Id int `json:"id" xorm:"not null pk autoincr INT(11)"` + Name string `json:"name" xorm:"not null default '' comment('档口名称') VARCHAR(255)"` + DeviceSn string `json:"device_sn" 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"` +} diff --git a/app/db/model/self_support_for_school_ord.go b/app/db/model/self_support_for_school_ord.go index a0e7469..70dd86e 100644 --- a/app/db/model/self_support_for_school_ord.go +++ b/app/db/model/self_support_for_school_ord.go @@ -1,32 +1,28 @@ package model -import ( - "time" -) - type SelfSupportForSchoolOrd 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)"` - Consumer string `json:"consumer" xorm:"not null default '' comment('消费人(花名册名称)') CHAR(100)"` - BuyerId string `json:"buyer_id" xorm:"not null default '' comment('云校园定义买家标识(支付宝刷脸用户id)') CHAR(100)"` - SellerId string `json:"seller_id" xorm:"not null default '' comment('卖家支付宝uid') CHAR(100)"` - DeviceSn string `json:"device_sn" xorm:"not null default '' comment('设备编号') CHAR(100)"` - SchoolName string `json:"school_name" xorm:"not null default '' comment('学校名称') CHAR(100)"` - SchoolCode string `json:"school_code" xorm:"not null default '' comment('学校内标') CHAR(100)"` - StoreBusinessScenario string `json:"store_business_scenario" xorm:"not null default '' comment('门店经营场景') CHAR(100)"` - StoreName string `json:"store_name" xorm:"not null default '' comment('门店名称') CHAR(100)"` - CpStoreId string `json:"cp_store_id" xorm:"not null default '' comment('门店编号') CHAR(100)"` - MerchantName string `json:"merchant_name" xorm:"not null default '' comment('商户名称') CHAR(100)"` - CpMerchantId string `json:"cp_merchant_id" xorm:"not null default '' comment('商户编码') CHAR(100)"` - TradeAmount string `json:"trade_amount" xorm:"not null default 0.00 comment('交易总金额') DECIMAL(8,2)"` - FaceTime string `json:"face_time" xorm:"not null default '' comment('刷脸时间') CHAR(100)"` - OrderStatus int `json:"order_status" xorm:"not null default 0 comment('支付状态 (1:待支付 2:支付成功)') TINYINT(1)"` - DebtBusinessCode string `json:"debt_business_code" xorm:"not null default '' comment('欠费订单异常渠道异常码(欠费返回)') CHAR(100)"` - DebtBusinessMsg string `json:"debt_business_msg" xorm:"not null default '' comment('欠费订单欠费原因(欠费返回)') VARCHAR(255)"` - CreateAt time.Time `json:"create_at" xorm:"not null pk default 'CURRENT_TIMESTAMP' DATETIME"` - UpdateAt time.Time `json:"update_at" xorm:"not null default 'CURRENT_TIMESTAMP' DATETIME"` + 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)"` + Consumer string `json:"consumer" xorm:"not null default '' comment('消费人(花名册名称)') CHAR(100)"` + BuyerId string `json:"buyer_id" xorm:"not null default '' comment('云校园定义买家标识(支付宝刷脸用户id)') CHAR(100)"` + SellerId string `json:"seller_id" xorm:"not null default '' comment('卖家支付宝uid') CHAR(100)"` + DeviceSn string `json:"device_sn" xorm:"not null default '' comment('设备编号') CHAR(100)"` + SchoolName string `json:"school_name" xorm:"not null default '' comment('学校名称') CHAR(100)"` + SchoolCode string `json:"school_code" xorm:"not null default '' comment('学校内标') CHAR(100)"` + StoreBusinessScenario string `json:"store_business_scenario" xorm:"not null default '' comment('门店经营场景') CHAR(100)"` + StoreName string `json:"store_name" xorm:"not null default '' comment('门店名称') CHAR(100)"` + CpStoreId string `json:"cp_store_id" xorm:"not null default '' comment('门店编号') CHAR(100)"` + MerchantName string `json:"merchant_name" xorm:"not null default '' comment('商户名称') CHAR(100)"` + CpMerchantId string `json:"cp_merchant_id" xorm:"not null default '' comment('商户编码') CHAR(100)"` + TradeAmount string `json:"trade_amount" xorm:"not null default 0.00 comment('交易总金额') DECIMAL(8,2)"` + FaceTime string `json:"face_time" xorm:"not null default '' comment('刷脸时间') CHAR(100)"` + OrderStatus int `json:"order_status" xorm:"not null default 0 comment('支付状态 (1:待支付 2:支付成功)') TINYINT(1)"` + DebtBusinessCode string `json:"debt_business_code" xorm:"not null default '' comment('欠费订单异常渠道异常码(欠费返回)') CHAR(100)"` + DebtBusinessMsg string `json:"debt_business_msg" xorm:"not null default '' comment('欠费订单欠费原因(欠费返回)') VARCHAR(255)"` + 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"` } diff --git a/app/router/admin_router.go b/app/router/admin_router.go index 605b4a9..79c6554 100644 --- a/app/router/admin_router.go +++ b/app/router/admin_router.go @@ -101,6 +101,12 @@ func rFinanceManage(r *gin.RouterGroup) { r.POST("/nursingHome/ordRefund", hdl.NursingHomeOrdRefund) //财务管理-(养老院)订单退款 } +func rDeviceManage(r *gin.RouterGroup) { + r.POST("/save", hdl2.DeviceSave) //设备管理-编辑/新增 + r.POST("/list", hdl2.DeviceList) //设备管理-列表 + r.DELETE("/delete/:device_sn", hdl2.DeviceDelete) //设备管理-删除 +} + func rDataStatistics(r *gin.RouterGroup) { r.POST("/centralKitchenForSchool/export", hdl2.CentralKitchenForSchoolDataStatisticsExport) //数据统计-(央厨-学校)-导出 r.POST("/centralKitchenForSchool/list", hdl2.CentralKitchenForSchoolDataStatisticsList) //数据统计-(央厨-学校)-列表 @@ -271,5 +277,6 @@ func AdminRoute(r *gin.RouterGroup) { rUser(r.Group("/user")) //用户管理 rAuditCenter(r.Group("/auditCenter")) //审核中心 rFinanceManage(r.Group("/financeManage")) //财务管理 + rDeviceManage(r.Group("/deviceManage")) //设备管理 rDataStatistics(r.Group("/dataStatistics")) //数据统计 }