@@ -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 | |||||
} |
@@ -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"` | |||||
} |
@@ -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" | |||||
} |
@@ -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"` | |||||
} |
@@ -1,32 +1,28 @@ | |||||
package model | package model | ||||
import ( | |||||
"time" | |||||
) | |||||
type SelfSupportForSchoolOrd struct { | 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"` | |||||
} | } |
@@ -101,6 +101,12 @@ func rFinanceManage(r *gin.RouterGroup) { | |||||
r.POST("/nursingHome/ordRefund", hdl.NursingHomeOrdRefund) //财务管理-(养老院)订单退款 | 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) { | func rDataStatistics(r *gin.RouterGroup) { | ||||
r.POST("/centralKitchenForSchool/export", hdl2.CentralKitchenForSchoolDataStatisticsExport) //数据统计-(央厨-学校)-导出 | r.POST("/centralKitchenForSchool/export", hdl2.CentralKitchenForSchoolDataStatisticsExport) //数据统计-(央厨-学校)-导出 | ||||
r.POST("/centralKitchenForSchool/list", hdl2.CentralKitchenForSchoolDataStatisticsList) //数据统计-(央厨-学校)-列表 | r.POST("/centralKitchenForSchool/list", hdl2.CentralKitchenForSchoolDataStatisticsList) //数据统计-(央厨-学校)-列表 | ||||
@@ -271,5 +277,6 @@ func AdminRoute(r *gin.RouterGroup) { | |||||
rUser(r.Group("/user")) //用户管理 | rUser(r.Group("/user")) //用户管理 | ||||
rAuditCenter(r.Group("/auditCenter")) //审核中心 | rAuditCenter(r.Group("/auditCenter")) //审核中心 | ||||
rFinanceManage(r.Group("/financeManage")) //财务管理 | rFinanceManage(r.Group("/financeManage")) //财务管理 | ||||
rDeviceManage(r.Group("/deviceManage")) //设备管理 | |||||
rDataStatistics(r.Group("/dataStatistics")) //数据统计 | rDataStatistics(r.Group("/dataStatistics")) //数据统计 | ||||
} | } |