From 03069ce0fef794d2641dd3c1ab8358d2a00ac714 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 18 Oct 2022 10:30:37 +0800 Subject: [PATCH] 1 --- controllers/app/print_bind_store.go | 31 +++++++++++++++++ controllers/app/wx_login.go | 14 ++++++++ controllers/app/wx_print.go | 13 +++++++- controllers/user_controller.go | 16 ++++----- dao/print_bill.go | 9 +++++ dao/print_bind_store.go | 6 ++++ dao/print_dao.go | 33 +++++++++++++++++-- dao/temp_dao.go | 15 +++++++++ model/app_model/print_bind_store.go | 5 +++ model/app_model/print_edition.go | 3 ++ model/app_model/wechat_pay.go | 1 + routers/v3_app_router.go | 5 ++- routers/v4_app_router.go | 5 +-- .../print_server/app_server/print_bill.go | 2 +- .../app_server/print_bind_store.go | 17 ++++++++-- .../print_server/app_server/print_setting.go | 1 + services/print_server/app_server/temp.go | 17 ++++++++++ services/print_server/app_server/wx_login.go | 5 +++ services/print_server/app_server/wx_print.go | 8 ++++- 19 files changed, 187 insertions(+), 19 deletions(-) create mode 100644 model/app_model/print_edition.go diff --git a/controllers/app/print_bind_store.go b/controllers/app/print_bind_store.go index bdc5b03..047b0a8 100644 --- a/controllers/app/print_bind_store.go +++ b/controllers/app/print_bind_store.go @@ -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(¶m); 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 检查用户是否可以取消门店打印机绑定 diff --git a/controllers/app/wx_login.go b/controllers/app/wx_login.go index 6648240..238ae6e 100644 --- a/controllers/app/wx_login.go +++ b/controllers/app/wx_login.go @@ -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 + }) +} diff --git a/controllers/app/wx_print.go b/controllers/app/wx_print.go index 570ec68..c51ca8c 100644 --- a/controllers/app/wx_print.go +++ b/controllers/app/wx_print.go @@ -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(¶m); 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 }) } diff --git a/controllers/user_controller.go b/controllers/user_controller.go index 00906cc..bfd39a2 100644 --- a/controllers/user_controller.go +++ b/controllers/user_controller.go @@ -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 { diff --git a/dao/print_bill.go b/dao/print_bill.go index aa93deb..2017765 100644 --- a/dao/print_bill.go +++ b/dao/print_bill.go @@ -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 +} diff --git a/dao/print_bind_store.go b/dao/print_bind_store.go index 99c6fd7..b5af528 100644 --- a/dao/print_bind_store.go +++ b/dao/print_bind_store.go @@ -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 +} diff --git a/dao/print_dao.go b/dao/print_dao.go index 14bbf53..4ba86f9 100644 --- a/dao/print_dao.go +++ b/dao/print_dao.go @@ -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 +} diff --git a/dao/temp_dao.go b/dao/temp_dao.go index c61c73d..2cab5d3 100644 --- a/dao/temp_dao.go +++ b/dao/temp_dao.go @@ -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 diff --git a/model/app_model/print_bind_store.go b/model/app_model/print_bind_store.go index 4b6df43..2a5fcb1 100644 --- a/model/app_model/print_bind_store.go +++ b/model/app_model/print_bind_store.go @@ -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"` // 打印机编号 +} diff --git a/model/app_model/print_edition.go b/model/app_model/print_edition.go new file mode 100644 index 0000000..83da6ee --- /dev/null +++ b/model/app_model/print_edition.go @@ -0,0 +1,3 @@ +package app_model + +//版本控制 diff --git a/model/app_model/wechat_pay.go b/model/app_model/wechat_pay.go index 60cc69b..9dab29e 100644 --- a/model/app_model/wechat_pay.go +++ b/model/app_model/wechat_pay.go @@ -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"` } diff --git a/routers/v3_app_router.go b/routers/v3_app_router.go index 782ee57..142eb6a 100644 --- a/routers/v3_app_router.go +++ b/routers/v3_app_router.go @@ -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) } diff --git a/routers/v4_app_router.go b/routers/v4_app_router.go index df17eef..0552093 100644 --- a/routers/v4_app_router.go +++ b/routers/v4_app_router.go @@ -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) // 解除打印机账号绑定关系 } diff --git a/services/print_server/app_server/print_bill.go b/services/print_server/app_server/print_bill.go index 09b3c8c..f235fd2 100644 --- a/services/print_server/app_server/print_bill.go +++ b/services/print_server/app_server/print_bill.go @@ -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 } diff --git a/services/print_server/app_server/print_bind_store.go b/services/print_server/app_server/print_bind_store.go index c842f13..afc7fea 100644 --- a/services/print_server/app_server/print_bind_store.go +++ b/services/print_server/app_server/print_bind_store.go @@ -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 } diff --git a/services/print_server/app_server/print_setting.go b/services/print_server/app_server/print_setting.go index 1b13cb7..7fea2e3 100644 --- a/services/print_server/app_server/print_setting.go +++ b/services/print_server/app_server/print_setting.go @@ -36,6 +36,7 @@ func (p *PrintSettingServer) SystemInitPrintSetting(txDB *sqlx.Tx, printNo strin return err } if !isHave { + // 修改打印机所属用户 return nil } day := time.Now() diff --git a/services/print_server/app_server/temp.go b/services/print_server/app_server/temp.go index 943477c..bc77b46 100644 --- a/services/print_server/app_server/temp.go +++ b/services/print_server/app_server/temp.go @@ -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() diff --git a/services/print_server/app_server/wx_login.go b/services/print_server/app_server/wx_login.go index 5ed18c1..332794c 100644 --- a/services/print_server/app_server/wx_login.go +++ b/services/print_server/app_server/wx_login.go @@ -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() +} diff --git a/services/print_server/app_server/wx_print.go b/services/print_server/app_server/wx_print.go index 8efb6fd..1a68fd7 100644 --- a/services/print_server/app_server/wx_print.go +++ b/services/print_server/app_server/wx_print.go @@ -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 }