package controller
|
|
import (
|
"basic.com/valib/bhomedbapi.git"
|
"basic.com/valib/licence.git"
|
"basic.com/valib/logger.git"
|
"encoding/json"
|
"errors"
|
"github.com/gin-gonic/gin"
|
"io/ioutil"
|
"net/http"
|
"os"
|
"strings"
|
"time"
|
"vamicro/config"
|
"vamicro/extend/code"
|
"vamicro/extend/util"
|
"vamicro/version-control/service"
|
)
|
|
/*
|
在线激活smartai
|
1.登录商城
|
2.展示商城订单
|
3.选择订单进行激活
|
*/
|
|
func pRet(b []byte, err error, c *gin.Context, cb func(data interface{}) (interface{}, error)) {
|
if err != nil {
|
logger.Error("pRet err:", err)
|
util.ResponseFormat(c, code.ComError, err.Error())
|
return
|
}
|
var ret bhomedbapi.Result
|
err = json.Unmarshal(b, &ret)
|
if err != nil {
|
logger.Error("pRet err:", err)
|
util.ResponseFormat(c, code.ComError, err.Error())
|
return
|
}
|
if !ret.Success {
|
logger.Error("!ret.Success ret:", ret)
|
c.JSON(http.StatusInternalServerError, ret)
|
return
|
}
|
if cb != nil {
|
var rd interface{}
|
rd, err = cb(ret.Data)
|
if err != nil {
|
util.ResponseFormat(c, code.ComError, err.Error())
|
return
|
} else {
|
util.ResponseFormat(c, code.Success, rd)
|
return
|
}
|
}
|
c.JSON(http.StatusOK, ret)
|
}
|
|
//请求商城端发送短信验证码
|
func shopMakSmsHandle(c *gin.Context) {
|
phoneNum := c.Query("phoneNum")
|
if phoneNum == "" {
|
util.ResponseFormat(c, code.RequestParamError, "")
|
return
|
}
|
url := util.GetShopUrl() + "/data/api-u/user/makeVerifyCode"
|
if !strings.HasPrefix(url, "http://") {
|
url = "http://" + url
|
}
|
m := map[string]string{
|
"phoneNum": phoneNum,
|
}
|
b, err := util.DoGetRequest(url, m, nil)
|
pRet(b, err, c, nil)
|
}
|
|
//调用商城端登录,获取token
|
func shopCenterLoginHandle(c *gin.Context) {
|
phoneNum := c.PostForm("phoneNum")
|
verifyCode := c.PostForm("verifyCode")
|
|
if phoneNum == "" || verifyCode == "" {
|
util.ResponseFormat(c, code.RequestParamError, "")
|
return
|
}
|
|
url := util.GetShopUrl() + "/data/api-u/user/login"
|
if !strings.HasPrefix(url, "http://") {
|
url = "http://" + url
|
}
|
m := map[string]interface{}{
|
"phoneNum": phoneNum,
|
"verifyCode": verifyCode,
|
}
|
|
b, err := util.DoPostRequest(url, util.CONTENT_TYPE_FORM, m, nil, nil, time.Second*5)
|
pRet(b, err, c, func(data interface{}) (interface{}, error) {
|
d, e := json.Marshal(data)
|
if e != nil {
|
return nil, e
|
}
|
type sld struct {
|
AccessToken string `json:"access_token"`
|
}
|
var u sld
|
e = json.Unmarshal(d, &u)
|
if e != nil {
|
return nil, e
|
}
|
if !strings.HasPrefix(u.AccessToken, "Bearer ") {
|
u.AccessToken = "Bearer " + u.AccessToken
|
}
|
return u, nil
|
})
|
}
|
|
//获取可用于激活的订单列表
|
func shopCenterGetOrderListHandle(c *gin.Context) {
|
token := c.PostForm("token")
|
if token == "" {
|
util.ResponseFormat(c, code.RequestParamError, "")
|
return
|
}
|
if !strings.HasPrefix(token, "Bearer ") {
|
token = "Bearer " + token
|
}
|
url := util.GetShopUrl() + "/data/api-s/order/getActiveOrder"
|
if !strings.HasPrefix(url, "http://") {
|
url = "http://" + url
|
}
|
header := map[string]string{
|
"Authorization": token,
|
}
|
m := map[string]interface{}{
|
"page": 1,
|
"size": 100,
|
}
|
b, err := util.DoPostRequest(url, util.CONTENT_TYPE_JSON, m, nil, header, time.Second*5)
|
pRet(b, err, c, nil)
|
}
|
|
//请求商城使用订单进行激活,返回内容:
|
//请求码 通道数量 摄像机数量 设备数量 服务时长 产品密钥
|
func authActiveByOrderHandle(c *gin.Context) {
|
token := c.PostForm("token")
|
orderId := c.PostForm("orderId")
|
productId := c.PostForm("productId")
|
activateCode := c.PostForm("activateCode") //25位激活码
|
if token == "" || activateCode == "" {
|
util.ResponseFormat(c, code.RequestParamError, "")
|
return
|
}
|
if !strings.HasPrefix(token, "Bearer ") {
|
token = "Bearer " + token
|
}
|
url := util.GetShopUrl() + "/data/api-s/q_authorization"
|
if !strings.HasPrefix(url, "http://") {
|
url = "http://" + url
|
}
|
header := map[string]string{
|
"Authorization": token,
|
}
|
|
var rd = util.AuthorizationInfo{
|
DevId: config.Server.AnalyServerId,
|
MachineCode: licence.GetMachineCode(),
|
DeviceType: config.Server.DeviceType,
|
DeviceMode: config.Server.DeviceModel,
|
ActivateCode: activateCode,
|
}
|
|
var sysInitApi bhomedbapi.SysInitApi
|
b, rInfo := sysInitApi.GetRegInfo()
|
if b {
|
rbd, e := json.Marshal(rInfo)
|
if e == nil {
|
var sysRI service.RegUserInfo
|
if e = json.Unmarshal(rbd, &sysRI); e == nil {
|
rd.UserType = sysRI.UserType
|
rd.PhoneNum = sysRI.PhoneNum
|
rd.Name = sysRI.Name
|
rd.ProvinceId = sysRI.ProvinceId
|
rd.CityId = sysRI.CityId
|
rd.CountyId = sysRI.CountyId
|
rd.Email = sysRI.Email
|
}
|
}
|
}
|
|
q, err := service.HackAuthorizationInfo(rd)
|
if err != nil {
|
logger.Error("Haq err:", err)
|
util.ResponseFormat(c, code.ComError, err.Error())
|
return
|
}
|
|
body := map[string]interface{}{
|
"sn": q,
|
"orderId": orderId,
|
"productId": productId,
|
"activateCode": activateCode,
|
}
|
|
rb, err := util.DoPostRequest(url, util.CONTENT_TYPE_JSON, body, nil, header, time.Second*5)
|
cb := func(data interface{}) (interface{}, error) {
|
rb, err := json.Marshal(data)
|
if err != nil {
|
logger.Error("json.Marshal err:", err)
|
return nil, err
|
}
|
type rs struct {
|
AuthInfo string `json:"authInfo"`
|
}
|
var rai rs
|
err = json.Unmarshal(rb, &rai)
|
if err != nil {
|
logger.Error("json.Unmarshal err:", err)
|
return nil, err
|
}
|
authInfo, e := util.GetAuthorizationInfo(rai.AuthInfo)
|
if e != nil {
|
logger.Error("GetAuthorizationInfo e:", e)
|
return nil, e
|
}
|
machineCode := licence.GetMachineCode()
|
if machineCode != authInfo.MachineCode {
|
logger.Error("GetAuthorization machineCode not match, local:", machineCode, " remote:", authInfo.MachineCode)
|
return nil, errors.New("机器码不匹配")
|
}
|
|
sn := util.GetVamicroPath() + "/sn.txt"
|
pathAuth := util.GetVamicroPath() + "/auth.txt"
|
ioutil.WriteFile(sn, []byte(""), os.ModePerm)
|
ioutil.WriteFile(pathAuth, []byte(rai.AuthInfo), os.ModePerm)
|
rm := map[string]interface{}{
|
"sn": authInfo.ActivateCode,
|
"edition": authInfo.Edition,
|
"chCount": authInfo.ChCount,
|
"cameraCount": authInfo.CameraCount,
|
"devCount": authInfo.DevCount,
|
"serveYear": authInfo.ServeYear,
|
"authInfo": rai.AuthInfo,
|
}
|
return rm, nil
|
}
|
pRet(rb, err, c, cb)
|
}
|