This commit is contained in:
邹宗楠
2022-10-18 10:30:37 +08:00
parent c0d92f612e
commit 03069ce0fe
19 changed files with 187 additions and 19 deletions

View File

@@ -45,6 +45,37 @@ func (p *PrinterBindStore) AddPrinterBindStore(c *gin.Context) {
})
}
// UpdatePrinterUnBindStore 解除打印机账号绑定关系
// @Title 解除打印机账号绑定关系
// @Description 解除打印机账号绑定关系
// @Param token cookie string true "用户登录token"
// @Param data body app_model.RelieveBind true "请求参数"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /bindingStore [post]
func (p *PrinterBindStore) UpdatePrinterUnBindStore(c *gin.Context) {
var (
err error
tokenInfo *model.TokenInfo
param = &tempModel.RelieveBind{}
bindServer = printServer.PrintBindStore{}
)
if err = c.ShouldBind(&param); err != nil {
controllers.BuildErrJson(c, err)
return
}
if tokenInfo = controllers.CheckToken(c); tokenInfo == nil {
return
}
// 解除用户和打印机绑定关系,
controllers.CallFunc(c, func() (retVal interface{}, errCode string, err error) {
err = bindServer.RelievePrintBindStore(tokenInfo.User.UserID, param.PrintNo)
return retVal, "", err
})
}
// CheckStoreBindStatus 检查用户是否可以取消门店打印机绑定
// @Title 检查用户是否可以取消门店打印机绑定
// @Description 检查用户是否可以取消门店打印机绑定

View File

@@ -142,3 +142,17 @@ func (a *Auth2Controller) GetToken4Jxc4(c *gin.Context) {
return map[string]interface{}{"token": token}, "", nil
})
}
// MiniProgramSortLink 获取小程序跳转联机
// @Title 获取小程序跳转联机
// @Description 获取小程序跳转联机
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /getToken4Jxc4 [get]
func (a *Auth2Controller) MiniProgramSortLink(c *gin.Context) {
controllers.CallFunc(c, func() (retVal interface{}, errCode string, err error) {
service := app_server.UserLogin{}
link, err := service.GetAppJupLink()
return map[string]interface{}{"link": link}, "", err
})
}

View File

@@ -35,6 +35,7 @@ func (p *Print) AddPrinters(c *gin.Context) {
setting = printServer.PrintSettingInfoServer
bill = printServer.PrintBillServer
txDB = globals.GetTxDb()
temp = printServer.TempServer{}
)
if err = c.ShouldBind(&param); err != nil {
@@ -72,6 +73,12 @@ func (p *Print) AddPrinters(c *gin.Context) {
return nil, "", err
}
// 模板,查询模板是否存在,存在修改用户模板所属用户
if err := temp.QueryPrintTempByPrintNo(tokenInfo.User.UserID, printInfo[0].PrintNo); err != nil {
txDB.Rollback()
return nil, "", err
}
// 初始化打印机账户
if err := bill.InitPPrintBill(txDB, &printModel.PrintBill{
CreatedAt: time.Now(),
@@ -143,7 +150,11 @@ func (p *Print) GetPrintIsUse(c *gin.Context) {
return
}
controllers.CallFunc(c, func() (retVal interface{}, errCode string, err error) {
retVal, err = printServer.GetPrintIsUse(param.PrintNo)
have, phone, err := printServer.GetPrintIsUse(param.PrintNo)
result := make(map[string]interface{}, 0)
result["isBind"] = have
result["phone"] = phone
retVal = result
return retVal, "", err
})
}

View File

@@ -66,14 +66,14 @@ func Login(c *gin.Context) {
globals.SugarLogger.Debugf("End API :%s error:%v:", c.Request.URL, err)
return
}
if !CaptchaVerify(c, user.Code) {
c.JSON(http.StatusOK, &model.CallBack{
Code: model.ErrCodeNormal,
Desc: "验证码错误!",
})
globals.SugarLogger.Debugf("End API :%s error:%v:", c.Request.URL, err)
return
}
//if !CaptchaVerify(c, user.Code) {
// c.JSON(http.StatusOK, &model.CallBack{
// Code: model.ErrCodeNormal,
// Desc: "验证码错误!",
// })
// globals.SugarLogger.Debugf("End API :%s error:%v:", c.Request.URL, err)
// return
//}
if !CallFunc(c, func() (retVal interface{}, errCode string, err error) {
loginResult, err := print_server.Login(c, user.Name, user.Password)
if err != nil {

View File

@@ -47,3 +47,12 @@ func AddMoney(db *sqlx.Tx, printNo string, money int64) error {
func UpdateBillToUser(db *sqlx.Tx, param *app_model.PrintBill) error {
return UpdateTx(db, param, []string{"user_id"}...)
}
// UpdatePrintToSystem 修改打印机账户所属用户
func UpdatePrintToSystem(db *sqlx.Tx, printNo string) error {
sql := `UPDATE print_bill SET user_id = ? WHERE print_no = ?`
if _, err := db.Exec(sql, []interface{}{"system", printNo}...); err != nil {
return err
}
return nil
}

View File

@@ -47,3 +47,9 @@ func UpdateStoreAuthorize(storeId int64) error {
_, err := globals.GetDB().Exec(`UPDATE print_bind_store SET store_status = ? WHERE store_id = ?`, []interface{}{storeModel.StoreStatusLose, storeId}...)
return err
}
// PrintLoseUser 门店打印机失去所属用户,一般是打印机解绑在重新绑定!触发
func PrintLoseUser() {
//_, err := globals.GetDB().Exec(`UPDATE print_bind_store SET store_status = ? WHERE store_id = ?`, []interface{}{storeModel.StoreStatusLose, storeId}...)
//return err
}

View File

@@ -87,14 +87,14 @@ func GetPrintersPage(db *sqlx.DB, appID int, printNo, name string, status, isOnl
return &model.PagedInfo{TotalCount: count, Data: printers}, err
}
func GetPrintIsUse(printNo string) (bool, error) {
func GetPrintIsUse(printNo string) (bool, string, error) {
sql := `SELECT * FROM printer WHERE deleted_at = ? AND print_no = ?`
param := []interface{}{utils.DefaultTimeValue, printNo}
var result []*model.Printer
if err := globals.GetDB().Select(&result, sql, param...); err != nil {
return false, err
return false, "", err
}
return len(result) == 1, nil
return len(result) == 1, result[0].PrintKey, nil
}
func GetPrintMessagesPage(db *sqlx.DB, printNo, msgID, beginAt, endAt string, offset, pageSize int) (page *model.PagedInfo, err error) {
@@ -237,6 +237,23 @@ func GetPrinter(db *sqlx.DB, printNo, iccID string) (printer *model.Printer, err
return printer, err
}
// GetUserBindAppNo 获取用户绑定app数
func GetUserBindAppNo(db *sqlx.DB, userId string) (int, error) {
sql := `
SELECT *
FROM printer
WHERE 1 = 1 AND deleted_at = ? AND user_id = ?
`
sqlParams := []interface{}{utils.DefaultTimeValue}
sqlParams = append(sqlParams, utils.DefaultTimeValue, userId)
var printers []*model.Printer
if err := db.Select(&printers, sql, sqlParams...); err != nil {
return 0, err
}
return len(printers), nil
}
// GetPrintById 根据用户id和打印机编号获取打印机
func GetPrintById(userId, printNo string) (bool, *model.Printer, error) {
var printer []*model.Printer
@@ -255,3 +272,13 @@ func DeletePrinterMsg(printNos string) error {
_, err := globals.GetDB().Exec(`DELETE FROM print_msg WHERE print_no = ?`, []interface{}{printNos}...)
return err
}
// UpdatePrintUser 将打印机所属用户值为空
func UpdatePrintUser(db *sqlx.Tx, userId, printNo string) error {
sql := `UPDATE printer SET print_key = ?,user_id = ? WHERE print_no = ? `
_, err := globals.GetDB().Exec(sql, []interface{}{"system", "system", printNo})
if err != nil {
return err
}
return nil
}

View File

@@ -45,6 +45,12 @@ func UpdateOtherTempStatus(userId, printNo string) error {
return err
}
// UpdateTempOnUser 将模板修改为用户模板
func UpdateTempOnUser(id int, userId string) error {
_, err := globals.GetDB().Exec(`UPDATE system_temp SET user_id = ? WHERE id = ?`, []interface{}{userId, id}...)
return err
}
// UpdateTemp 修改模板数据
func UpdateTemp(param *app_model.SystemTemp, fields []string) error {
//sql := `UPDATE system_temp SET `
@@ -104,6 +110,15 @@ func SelectUserTemp(userId, printSn string) ([]*app_model.SystemTemp, error) {
return result, nil
}
// SelectPrintTemp 根据打印机编号查询模板
func SelectPrintTemp(printSn string) ([]*app_model.SystemTemp, error) {
var result []*app_model.SystemTemp
if err := globals.GetDB().Select(&result, `SELECT * FROM system_temp WHERE print_sn = ? AND deleted_at = ? ORDER BY created_at desc `, []interface{}{printSn, utils.DefaultTimeValue}...); err != nil {
return nil, err
}
return result, nil
}
// SelectUserDefaultTemp 查询用户默认模板
func SelectUserDefaultTemp(userId string, tempType string) (*app_model.SystemTemp, bool, error) {
var result []*app_model.SystemTemp

View File

@@ -41,3 +41,8 @@ type RelieveStore struct {
StoreID int64 `json:"store_id" form:"store_id" binding:"required"` // 门店id(为京西创建门店id)
PrintNo string `json:"print_no" form:"print_no" binding:"required"` // 打印机编号
}
// RelieveBind 解除用户和打印机的绑定关系
type RelieveBind struct {
PrintNo string `json:"print_no" form:"print_no" binding:"required"` // 打印机编号
}

View File

@@ -0,0 +1,3 @@
package app_model
//版本控制

View File

@@ -8,4 +8,5 @@ type GetPrinterReportResult struct {
OfflinePrinterCount int `json:"offline_printer_count"`
FlowPrinterCount int `json:"flow_printer_count"`
PaperPrinterCount int `json:"paper_printer_count"`
UserAllPrintCount int `json:"user_all_print_count"`
}

View File

@@ -15,10 +15,13 @@ func InitV3App(v1 *gin.RouterGroup) {
// 获取短信
appNo.POST("/sendVerifyCode", app.VerificationController.SendVerifyCode) // 获取短信验证码
appNo.GET("/getPrintIsUse", app.PrintController.GetPrintIsUse) // 打印消息统计
appNo.GET("/getPrintIsUse", app.PrintController.GetPrintIsUse) // 查询打印机是否被使用
// 支付回调
appNo.POST("/payCallBack", app.Auth2ControllerController.PayCallBack)
// 门店失去授权回调
appNo.POST("/loseAuthorize", app.PrinterBindStoreController.LoseStoreAuthorize)
// 获取小程序跳转连接
appNo.GET("/getMinJupLink", app.Auth2ControllerController.MiniProgramSortLink)
}

View File

@@ -36,6 +36,7 @@ func InitV4App(v2 *gin.RouterGroup) {
appYes.POST("/pay", app.Auth2ControllerController.Pay4Order) // 吊起微信支付
// 用户授权成功之后获取绑定门店信息
appYes.POST("/bindingStore", app.PrinterBindStoreController.AddPrinterBindStore) // 添加门店绑定授权
appYes.POST("/checkRelieve", app.PrinterBindStoreController.CheckStoreBindStatus) // 检查是否可以解除绑定
appYes.POST("/bindingStore", app.PrinterBindStoreController.AddPrinterBindStore) // 添加门店绑定授权
appYes.POST("/checkRelieve", app.PrinterBindStoreController.CheckStoreBindStatus) // 检查是否可以解除绑定
appYes.POST("/unBindingStore", app.PrinterBindStoreController.UpdatePrinterUnBindStore) // 解除打印机账号绑定关系
}

View File

@@ -25,7 +25,7 @@ func (p *PrintBill) InitPPrintBill(tx *sqlx.Tx, bill *app_model.PrintBill) error
if err := dao.InitPrintBill(tx, bill); err != nil {
return err
}
} else if len(result) == 1 {
} else if len(result) == 1 && result[0].UserId == "system" {
if err := dao.UpdateBillToUser(tx, bill); err != nil {
return err
}

View File

@@ -4,6 +4,7 @@ import (
"fmt"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-print/dao"
"git.rosy.net.cn/jx-print/globals"
storeModel "git.rosy.net.cn/jx-print/model/app_model"
"io/ioutil"
"net/http"
@@ -55,10 +56,22 @@ func (p *PrintBindStore) QueryStoreAndUser(param *storeModel.RelieveStore) (bool
}
// RelievePrintBindStore 解除门店和打印机的绑定关系
func (p *PrintBindStore) RelievePrintBindStore(param *storeModel.RelieveStore) error {
if err := dao.RelieveToken(param.UserId, param.PrintNo, param.StoreID); err != nil {
func (p *PrintBindStore) RelievePrintBindStore(userId, printNo string) error {
// 1.修改打印机表
db := globals.GetTxDb()
defer db.Commit()
if err := dao.UpdatePrintUser(db, userId, printNo); err != nil {
db.Rollback()
return err
}
// 修改账号说用户
if err := dao.UpdatePrintToSystem(db, printNo); err != nil {
db.Rollback()
return err
}
// 绑定的门店将用户信息修改掉(暂时没做)
return nil
}

View File

@@ -36,6 +36,7 @@ func (p *PrintSettingServer) SystemInitPrintSetting(txDB *sqlx.Tx, printNo strin
return err
}
if !isHave {
// 修改打印机所属用户
return nil
}
day := time.Now()

View File

@@ -217,6 +217,23 @@ func (t *TempServer) QueryTempList(userId, printSn string) ([]*tempModel.SystemT
return userList, nil
}
// QueryPrintTempByPrintNo 根据打印机id查询打印机
func (t *TempServer) QueryPrintTempByPrintNo(userId, printSn string) error {
printList, err := dao.SelectPrintTemp(printSn)
if err != nil {
return err
}
for _, v := range printList {
if v.UserId == userId {
continue
} else {
dao.UpdateTempOnUser(v.ID, userId)
}
}
return nil
}
// QuerySystemTemp 查询系统模板
func (t *TempServer) QuerySystemTemp() ([]*tempModel.SystemTemp, error) {
return dao.QuerySystemTemp()

View File

@@ -230,3 +230,8 @@ func (u *UserLogin) GetJxc4Token() (string, error) {
Jxc4UserToken["expirationTime"] = utils.Int64ToStr(time.Now().Unix() + 5*24*60*60)
return user.Token, nil
}
// GetAppJupLink 获取小程序跳转短连接
func (u *UserLogin) GetAppJupLink() (string, error) {
return api.WeixinMiniAPI.MiniProgramSortLink()
}

View File

@@ -125,7 +125,7 @@ func GetPrinters(appID int, printNo, name string, status, isOnline, offset, page
return dao.GetPrintersPage(globals.GetDB(), appID, printNo, name, status, isOnline, offset, pageSize, userId)
}
func GetPrintIsUse(printNo string) (bool, error) {
func GetPrintIsUse(printNo string) (bool, string, error) {
return dao.GetPrintIsUse(printNo)
}
@@ -272,6 +272,7 @@ func GetPrinterReport(tokenInfo *model.TokenInfo) (getPrinterReportResult *app_m
papers, _ := dao.GetPrinters(db, app.ID, "", model.PrinterStatusWithouPaper, 0, 0)
paperC += len(papers)
}
getPrinterReportResult.WeekPrintCount = weekCount
getPrinterReportResult.DayPrintCount = DayCount
getPrinterReportResult.DayUnPrintCount = DayUnCount
@@ -279,5 +280,10 @@ func GetPrinterReport(tokenInfo *model.TokenInfo) (getPrinterReportResult *app_m
getPrinterReportResult.OfflinePrinterCount = offlineC
getPrinterReportResult.FlowPrinterCount = flowC
getPrinterReportResult.PaperPrinterCount = paperC
getPrinterReportResult.UserAllPrintCount, err = dao.GetUserBindAppNo(db, tokenInfo.User.UserID)
if err != nil {
return nil, err
}
return getPrinterReportResult, err
}