优化生产反馈缺陷:
1.小程序调用erp登录接口不判断验证码; 2.修改原接口的翻页相关字段; 3.修复float64转int32精度丢失的缺陷; 4.注释库存导入时采购价需大于0的校验; 5.相关域名改成生产环境域名;
This commit is contained in:
parent
59766f70b3
commit
0a5fe58bbe
4
Makefile
4
Makefile
|
@ -26,3 +26,7 @@ dev:
|
||||||
|
|
||||||
beta:
|
beta:
|
||||||
GOOS=linux GOARCH=amd64 go build -o test_mh_goadmin_server main.go
|
GOOS=linux GOARCH=amd64 go build -o test_mh_goadmin_server main.go
|
||||||
|
|
||||||
|
|
||||||
|
pro:
|
||||||
|
GOOS=linux GOARCH=amd64 go build -o mh_goadmin_server main.go
|
||||||
|
|
|
@ -453,7 +453,7 @@ func DeliverTaskList(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ret := map[string]interface{}{
|
ret := map[string]interface{}{
|
||||||
"count": totalCount,
|
"total": totalCount,
|
||||||
"list": list,
|
"list": list,
|
||||||
"page_index": req.PageIdx,
|
"page_index": req.PageIdx,
|
||||||
"page_size": req.PageSize,
|
"page_size": req.PageSize,
|
||||||
|
|
|
@ -46,7 +46,7 @@ func GoodsOrderList(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ret := map[string]interface{}{
|
ret := map[string]interface{}{
|
||||||
"count": totalCount,
|
"total": totalCount,
|
||||||
"list": orderList,
|
"list": orderList,
|
||||||
"page_index": req.PageIdx,
|
"page_index": req.PageIdx,
|
||||||
"page_size": req.PageSize,
|
"page_size": req.PageSize,
|
||||||
|
|
|
@ -265,10 +265,10 @@ func FundRecordList(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ret := map[string]interface{}{
|
ret := map[string]interface{}{
|
||||||
"count": count,
|
"total": count,
|
||||||
"list": list,
|
"list": list,
|
||||||
"pageIndex": req.Page,
|
"pageIndex": req.Page,
|
||||||
"total_page": req.PageSize,
|
"pageSize": req.PageSize,
|
||||||
}
|
}
|
||||||
app.OK(c, ret, "")
|
app.OK(c, ret, "")
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ import (
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/core/option"
|
"github.com/wechatpay-apiv3/wechatpay-go/core/option"
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/services/refunddomestic"
|
"github.com/wechatpay-apiv3/wechatpay-go/services/refunddomestic"
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/services/transferbatch"
|
"github.com/wechatpay-apiv3/wechatpay-go/services/transferbatch"
|
||||||
|
"go-admin/tools/config"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
@ -77,14 +78,17 @@ const (
|
||||||
WxAppMchId = "1609877389"
|
WxAppMchId = "1609877389"
|
||||||
WxAppMchSecret = "DeovoMingHuiRengTianTang45675456"
|
WxAppMchSecret = "DeovoMingHuiRengTianTang45675456"
|
||||||
|
|
||||||
UnifiedOrderUrl = "https://api.mch.weixin.qq.com/pay/unifiedorder"
|
UnifiedOrderUrl = "https://api.mch.weixin.qq.com/pay/unifiedorder"
|
||||||
HmPayApiUrl = "https://hmpay.sandpay.com.cn/gateway/api"
|
HmPayApiUrl = "https://hmpay.sandpay.com.cn/gateway/api"
|
||||||
PemBegin = "-----BEGIN RSA PRIVATE KEY-----\n"
|
PemBegin = "-----BEGIN RSA PRIVATE KEY-----\n"
|
||||||
PemEnd = "\n-----END RSA PRIVATE KEY-----"
|
PemEnd = "\n-----END RSA PRIVATE KEY-----"
|
||||||
HmPubKey = `MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDzGVH0Fxpb2M48U1BWr6lpNs2W3VHqtjO8X5RqWjtTwpQVKo8dqaiAGxVbsdnefPpsbI5l9rKquRAOJhWFU07hxSUgXZOk55QQmll03MBgRDXLgxyKfycLLQwhsCJAzDIWC7IWgok/RHV9m9AV2GbQxWBl+7iDE4prcbpgG8Z0HwIDAQAB`
|
HmPubKey = `MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDzGVH0Fxpb2M48U1BWr6lpNs2W3VHqtjO8X5RqWjtTwpQVKo8dqaiAGxVbsdnefPpsbI5l9rKquRAOJhWFU07hxSUgXZOk55QQmll03MBgRDXLgxyKfycLLQwhsCJAzDIWC7IWgok/RHV9m9AV2GbQxWBl+7iDE4prcbpgG8Z0HwIDAQAB`
|
||||||
HmPayMerchantId = "664403000030115"
|
HmPayMerchantId = "664403000030115"
|
||||||
TimeFormat = "2006-01-02 15:04:05"
|
TimeFormat = "2006-01-02 15:04:05"
|
||||||
clientIp = "112.33.14.191"
|
clientIp = "39.108.188.218" // 小程序服务器
|
||||||
|
clientIpDev = "112.33.14.191" // 移动云服务器
|
||||||
|
HmPayMerchantIdDeovo = "664403000021193"
|
||||||
|
HmPubKeyDeovo = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDA4g8VFWIxEbOzxYC8ZIOgaOsLWK4Y5k9D8GwJ1Gige79LbTxbe3PH12KMc59DpCR1PnIDwlYWjIE7mZZAHgImXs0pSFihvlNS9srWk2uPlEXXQjjIZ3mnPoXtNhU0x5cYdkB8jtijcYMSGwKmdrIvpvPX3MrDKOX6dJ1T4ll+QIDAQAB"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -693,6 +697,81 @@ type HmPayUnifiedOrderRsp struct {
|
||||||
Sign string `json:"sign"`
|
Sign string `json:"sign"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ParsePrivateKeyDeovo() (*rsa.PrivateKey, error) {
|
||||||
|
//fp := "/Users/max/Documents/code/deovo/mh_goadmin_server/config/hm_pay/private_key.pem"
|
||||||
|
fp := "./config/hm_pay/deovo_private_key.pem"
|
||||||
|
privateKey, err := os.ReadFile(fp)
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorf("read file err:", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
block, _ := pem.Decode([]byte(privateKey))
|
||||||
|
if block == nil {
|
||||||
|
return nil, errors.New("私钥信息错误!")
|
||||||
|
}
|
||||||
|
//priKey, err := x509.ParsePKCS1PrivateKey(block.Bytes)
|
||||||
|
priKey, err := x509.ParsePKCS8PrivateKey(block.Bytes)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if priKey == nil {
|
||||||
|
return nil, errors.New("pri key is nil")
|
||||||
|
}
|
||||||
|
return priKey.(*rsa.PrivateKey), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Sha1withRsaDeovo(signContent string) (string, error) {
|
||||||
|
hash := crypto.SHA1
|
||||||
|
shaNew := hash.New()
|
||||||
|
shaNew.Write([]byte(signContent))
|
||||||
|
hashed := shaNew.Sum(nil)
|
||||||
|
priKey, err := ParsePrivateKeyDeovo()
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorf("parse err:", err)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
signature, err := rsa.SignPKCS1v15(rand.Reader, priKey, hash, hashed)
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorf("sign err:", err)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return b64.StdEncoding.EncodeToString(signature), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenHmPaySignDeovo(m map[string]string) (string, error) {
|
||||||
|
delete(m, "sign")
|
||||||
|
var signData []string
|
||||||
|
for k, v := range m {
|
||||||
|
if k == "openid" {
|
||||||
|
fmt.Println(k, ":", v)
|
||||||
|
}
|
||||||
|
if v != "" && v != "0" {
|
||||||
|
signData = append(signData, fmt.Sprintf("%s=%s", k, v))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//signDataJson, _ := json.MarshalIndent(&signData, "", " ")
|
||||||
|
//fmt.Println("signDataJson1", string(signDataJson))
|
||||||
|
|
||||||
|
sort.Strings(signData)
|
||||||
|
|
||||||
|
//signDataJson2, _ := json.MarshalIndent(&signData, "", " ")
|
||||||
|
//fmt.Println("signDataJson2", string(signDataJson2))
|
||||||
|
|
||||||
|
signStr := strings.Join(signData, "&")
|
||||||
|
//signStr = signStr + "&key=" + payKey
|
||||||
|
//logger.Info("签字符串1:", logger.Field("signStr", signStr))
|
||||||
|
fmt.Println("签字符串1:", signStr)
|
||||||
|
|
||||||
|
signature, err := Sha1withRsaDeovo(signStr)
|
||||||
|
if err != nil {
|
||||||
|
logger.Errorf("signature err:", err)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return signature, nil
|
||||||
|
}
|
||||||
|
|
||||||
func ParsePrivateKey() (*rsa.PrivateKey, error) {
|
func ParsePrivateKey() (*rsa.PrivateKey, error) {
|
||||||
//fp := "/Users/max/Documents/code/deovo/mh_goadmin_server/config/hm_pay/private_key.pem"
|
//fp := "/Users/max/Documents/code/deovo/mh_goadmin_server/config/hm_pay/private_key.pem"
|
||||||
fp := "./config/hm_pay/private_key.pem"
|
fp := "./config/hm_pay/private_key.pem"
|
||||||
|
@ -825,6 +904,50 @@ func HmPayUnifiedOrder(r HmJsPayUnifiedOrderReq) (HmPayUnifiedOrderRsp, error) {
|
||||||
return hmPayUnifiedOrderRsp, nil
|
return hmPayUnifiedOrderRsp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func HmVerifySha1RsaDeovo(signContent, signBase string) error {
|
||||||
|
//fp := "/Users/li/mh/mh_server/pack/configs/hm_pay/public_key.pme"
|
||||||
|
//publicKeyString, err := ioutil.ReadFile(fp)
|
||||||
|
//if err != nil {
|
||||||
|
// fmt.Println("read file err:", err)
|
||||||
|
// return err
|
||||||
|
//}
|
||||||
|
|
||||||
|
block, _ := pem.Decode([]byte(FormatPrivateKey(HmPubKeyDeovo)))
|
||||||
|
if block == nil {
|
||||||
|
fmt.Println("decode block is nil")
|
||||||
|
return errors.New("decode block is nil")
|
||||||
|
}
|
||||||
|
publicKey, err := x509.ParsePKIXPublicKey(block.Bytes)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("public key err:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if publicKey == nil {
|
||||||
|
fmt.Println("public key nil:")
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
hash := crypto.SHA1
|
||||||
|
shaNew := hash.New()
|
||||||
|
shaNew.Write([]byte(signContent))
|
||||||
|
hashed := shaNew.Sum(nil)
|
||||||
|
|
||||||
|
sign, err := b64.StdEncoding.DecodeString(signBase)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("sign decode err:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = rsa.VerifyPKCS1v15(publicKey.(*rsa.PublicKey), hash, hashed, sign)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("verify err:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
//logger.Error("验签成功")
|
||||||
|
fmt.Println("验签成功")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func HmVerifySha1Rsa(signContent, signBase string) error {
|
func HmVerifySha1Rsa(signContent, signBase string) error {
|
||||||
//fp := "/Users/li/mh/mh_server/pack/configs/hm_pay/public_key.pme"
|
//fp := "/Users/li/mh/mh_server/pack/configs/hm_pay/public_key.pme"
|
||||||
//publicKeyString, err := ioutil.ReadFile(fp)
|
//publicKeyString, err := ioutil.ReadFile(fp)
|
||||||
|
@ -911,7 +1034,7 @@ func HmJsPayBToCOrder(orderId string, totalFee float64, authCode, notifyUrl stri
|
||||||
|
|
||||||
unifiedOrderReq := HmJsPayUnifiedOrderReq{}
|
unifiedOrderReq := HmJsPayUnifiedOrderReq{}
|
||||||
publicPara := HmPayPublicPara{
|
publicPara := HmPayPublicPara{
|
||||||
AppId: HmPayMerchantId,
|
AppId: HmPayMerchantIdDeovo,
|
||||||
//SubAppId: HmWxSubMerchantId,
|
//SubAppId: HmWxSubMerchantId,
|
||||||
Method: "trade.pay",
|
Method: "trade.pay",
|
||||||
//Charset: "UTF-8",
|
//Charset: "UTF-8",
|
||||||
|
@ -935,6 +1058,10 @@ func HmJsPayBToCOrder(orderId string, totalFee float64, authCode, notifyUrl stri
|
||||||
StoreId: "100001",
|
StoreId: "100001",
|
||||||
NotifyUrl: notifyUrl,
|
NotifyUrl: notifyUrl,
|
||||||
}
|
}
|
||||||
|
if config.ApplicationConfig.Mode == "dev" {
|
||||||
|
biz.CreateIp = clientIpDev
|
||||||
|
}
|
||||||
|
|
||||||
unifiedOrderReq.HmPayPublicPara = publicPara
|
unifiedOrderReq.HmPayPublicPara = publicPara
|
||||||
|
|
||||||
bizString, err := json.Marshal(&biz)
|
bizString, err := json.Marshal(&biz)
|
||||||
|
@ -949,7 +1076,7 @@ func HmJsPayBToCOrder(orderId string, totalFee float64, authCode, notifyUrl stri
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
sign, err := GenHmPaySign(m)
|
sign, err := GenHmPaySignDeovo(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("HmJsPayUnifiedOrder GenHmPaySign err:", logger.Field("err", err))
|
logger.Error("HmJsPayUnifiedOrder GenHmPaySign err:", logger.Field("err", err))
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -967,7 +1094,7 @@ func HmJsPayBToCOrder(orderId string, totalFee float64, authCode, notifyUrl stri
|
||||||
logger.Errorf("ToSignContent err:", err)
|
logger.Errorf("ToSignContent err:", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = HmVerifySha1Rsa(signContent, unifiedOrderResp.Sign)
|
err = HmVerifySha1RsaDeovo(signContent, unifiedOrderResp.Sign)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Errorf("HmVerifySha1Rsa err:", err)
|
logger.Errorf("HmVerifySha1Rsa err:", err)
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -241,6 +241,12 @@ func InsertSysUser(c *gin.Context) {
|
||||||
begin := orm.Eloquent.Begin()
|
begin := orm.Eloquent.Begin()
|
||||||
sysUser.CreateBy = tools.GetUserIdStr(c)
|
sysUser.CreateBy = tools.GetUserIdStr(c)
|
||||||
id, err := sysUser.Insert(begin)
|
id, err := sysUser.Insert(begin)
|
||||||
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
logger.Error("Insert err:", logger.Field("err", err))
|
||||||
|
app.Error(c, http.StatusInternalServerError, err, "添加失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// 如果添加了小程序id,则需要更新user表的user_type字段为2-店员
|
// 如果添加了小程序id,则需要更新user表的user_type字段为2-店员
|
||||||
if req.Uid != 0 {
|
if req.Uid != 0 {
|
||||||
|
|
|
@ -72,7 +72,7 @@ func Authenticator(c *gin.Context) (interface{}, error) {
|
||||||
|
|
||||||
return nil, jwt.ErrMissingLoginValues
|
return nil, jwt.ErrMissingLoginValues
|
||||||
}
|
}
|
||||||
if config.ApplicationConfig.Mode != "dev" {
|
if config.ApplicationConfig.Mode != "dev" && loginVals.Username != "erp" {
|
||||||
if !store.Verify(loginVals.UUID, loginVals.Code, true) {
|
if !store.Verify(loginVals.UUID, loginVals.Code, true) {
|
||||||
username = loginVals.Username
|
username = loginVals.Username
|
||||||
msg = "验证码错误"
|
msg = "验证码错误"
|
||||||
|
|
|
@ -817,6 +817,13 @@ func (m *CooperativeMemberPromotionStatisticReq) List(c *gin.Context) (*Cooperat
|
||||||
if !endTime.IsZero() {
|
if !endTime.IsZero() {
|
||||||
qs = qs.Where("created_at<?", endTime)
|
qs = qs.Where("created_at<?", endTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = qs.Count(&count).Error
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("count err:", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if m.IsExport == 1 {
|
if m.IsExport == 1 {
|
||||||
err = qs.Order("id DESC").Find(&memberDayStorePromotions).Error
|
err = qs.Order("id DESC").Find(&memberDayStorePromotions).Error
|
||||||
} else {
|
} else {
|
||||||
|
@ -839,6 +846,13 @@ func (m *CooperativeMemberPromotionStatisticReq) List(c *gin.Context) (*Cooperat
|
||||||
if !endTime.IsZero() {
|
if !endTime.IsZero() {
|
||||||
qs = qs.Where("created_at<?", endTime)
|
qs = qs.Where("created_at<?", endTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = qs.Count(&count).Error
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("count err:", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if m.IsExport == 1 {
|
if m.IsExport == 1 {
|
||||||
err = qs.Order("id DESC").Find(&memberDayPromotions).Error
|
err = qs.Order("id DESC").Find(&memberDayPromotions).Error
|
||||||
} else {
|
} else {
|
||||||
|
@ -869,6 +883,13 @@ func (m *CooperativeMemberPromotionStatisticReq) List(c *gin.Context) (*Cooperat
|
||||||
if !endTime.IsZero() {
|
if !endTime.IsZero() {
|
||||||
qs = qs.Where("created_at<?", endTime)
|
qs = qs.Where("created_at<?", endTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = qs.Count(&count).Error
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("count err:", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if m.IsExport == 1 {
|
if m.IsExport == 1 {
|
||||||
err = qs.Order("id DESC").Find(&memberStorePromotions).Error
|
err = qs.Order("id DESC").Find(&memberStorePromotions).Error
|
||||||
} else {
|
} else {
|
||||||
|
@ -878,13 +899,13 @@ func (m *CooperativeMemberPromotionStatisticReq) List(c *gin.Context) (*Cooperat
|
||||||
} else {
|
} else {
|
||||||
var memberPromotions []CooperativeMemberPromotion
|
var memberPromotions []CooperativeMemberPromotion
|
||||||
qs = orm.Eloquent.Table("cooperative_member_promotion").Where("cooperative_business_id=?", m.CooperativeBusinessId)
|
qs = orm.Eloquent.Table("cooperative_member_promotion").Where("cooperative_business_id=?", m.CooperativeBusinessId)
|
||||||
if len(validStoreList) > 0 {
|
//if len(validStoreList) > 0 {
|
||||||
if len(validStoreList) == 1 {
|
// if len(validStoreList) == 1 {
|
||||||
qs = qs.Where("store_id = ?", validStoreList[0])
|
// qs = qs.Where("store_id = ?", validStoreList[0])
|
||||||
} else {
|
// } else {
|
||||||
qs = qs.Where("store_id IN (?)", validStoreList)
|
// qs = qs.Where("store_id IN (?)", validStoreList)
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
//if m.Date != "" {
|
//if m.Date != "" {
|
||||||
// qs = qs.Where("date=?", m.Date)
|
// qs = qs.Where("date=?", m.Date)
|
||||||
//}
|
//}
|
||||||
|
@ -894,6 +915,13 @@ func (m *CooperativeMemberPromotionStatisticReq) List(c *gin.Context) (*Cooperat
|
||||||
if !endTime.IsZero() {
|
if !endTime.IsZero() {
|
||||||
qs = qs.Where("created_at<?", endTime)
|
qs = qs.Where("created_at<?", endTime)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = qs.Count(&count).Error
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("count err:", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if m.IsExport == 1 {
|
if m.IsExport == 1 {
|
||||||
err = qs.Order("id DESC").Find(&memberPromotions).Error
|
err = qs.Order("id DESC").Find(&memberPromotions).Error
|
||||||
} else {
|
} else {
|
||||||
|
@ -914,11 +942,11 @@ func (m *CooperativeMemberPromotionStatisticReq) List(c *gin.Context) (*Cooperat
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = qs.Count(&count).Error
|
//err = qs.Count(&count).Error
|
||||||
if err != nil {
|
//if err != nil {
|
||||||
logger.Error("count err:", err)
|
// logger.Error("count err:", err)
|
||||||
return nil, err
|
// return nil, err
|
||||||
}
|
//}
|
||||||
|
|
||||||
if m.IsExport == 1 {
|
if m.IsExport == 1 {
|
||||||
fileName, err := promotionStatisticListExport(list)
|
fileName, err := promotionStatisticListExport(list)
|
||||||
|
|
|
@ -408,10 +408,10 @@ type ErpOrderReceiptDataResp struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type TableData struct {
|
type TableData struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
SL uint32 `json:"SL"` // 销售数量
|
SL uint32 `json:"SL"` // 销售数量
|
||||||
DJ uint32 `json:"DJ"` // 商品指导零售价
|
DJ float64 `json:"DJ"` // 商品指导零售价
|
||||||
JE uint32 `json:"JE"` // 商品指导零售价乘以销售数量
|
JE float64 `json:"JE"` // 商品指导零售价乘以销售数量
|
||||||
}
|
}
|
||||||
|
|
||||||
// Contains 判断id是否在list中
|
// Contains 判断id是否在list中
|
||||||
|
@ -1949,12 +1949,12 @@ func ErpOrderPay(req *ErpOrderPayReq, c *gin.Context) (*ErpOrderPayResp, error)
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新库存订单表
|
//// 更新库存订单表
|
||||||
err = updateErpStockCommodity(begin, req.BillSn)
|
//err = updateErpStockCommodity(begin, req.BillSn)
|
||||||
if err != nil {
|
//if err != nil {
|
||||||
logger.Error("ErpOrderPay updateErpStockCommodity err:", logger.Field("err", err))
|
// logger.Error("ErpOrderPay updateErpStockCommodity err:", logger.Field("err", err))
|
||||||
return resp, err
|
// return resp, err
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = begin.Commit().Error
|
err = begin.Commit().Error
|
||||||
|
@ -2040,12 +2040,12 @@ func QueryErpOrderPayStatus(billSn string) (*ErpOrderPayResp, error) {
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新库存订单表
|
//// 更新库存订单表
|
||||||
err = updateErpStockCommodity(begin, billSn)
|
//err = updateErpStockCommodity(begin, billSn)
|
||||||
if err != nil {
|
//if err != nil {
|
||||||
logger.Error("ErpOrderPay updateErpStockCommodity err:", logger.Field("err", err))
|
// logger.Error("ErpOrderPay updateErpStockCommodity err:", logger.Field("err", err))
|
||||||
return resp, err
|
// return resp, err
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = begin.Commit().Error
|
err = begin.Commit().Error
|
||||||
|
@ -2573,13 +2573,13 @@ func QueryRetailMargin(req *ErpOrderRetailMarginReq, c *gin.Context) (*ErpOrderR
|
||||||
salesAmount = -item.RejectedAmount // 退货订单要以实际退货金额为准
|
salesAmount = -item.RejectedAmount // 退货订单要以实际退货金额为准
|
||||||
salesCost = -item.WholesalePrice * float64(item.Count)
|
salesCost = -item.WholesalePrice * float64(item.Count)
|
||||||
employeeCost = -(item.WholesalePrice + item.StaffCostPrice) * float64(item.Count)
|
employeeCost = -(item.WholesalePrice + item.StaffCostPrice) * float64(item.Count)
|
||||||
salesMargin = -(item.ReceivedAmount - float64(int32(item.WholesalePrice)*item.Count))
|
salesMargin = -(item.ReceivedAmount - item.WholesalePrice*float64(item.Count))
|
||||||
} else {
|
} else {
|
||||||
nCount = int32(item.Count)
|
nCount = int32(item.Count)
|
||||||
salesAmount = item.ReceivedAmount
|
salesAmount = item.ReceivedAmount
|
||||||
salesCost = item.WholesalePrice * float64(item.Count)
|
salesCost = item.WholesalePrice * float64(item.Count)
|
||||||
employeeCost = (item.WholesalePrice + item.StaffCostPrice) * float64(item.Count)
|
employeeCost = (item.WholesalePrice + item.StaffCostPrice) * float64(item.Count)
|
||||||
salesMargin = item.ReceivedAmount - float64(int32(item.WholesalePrice)*item.Count)
|
salesMargin = item.ReceivedAmount - item.WholesalePrice*float64(item.Count)
|
||||||
}
|
}
|
||||||
// 检查是否已经处理过这个组合的数据
|
// 检查是否已经处理过这个组合的数据
|
||||||
if existingData, ok := processedData[key]; ok {
|
if existingData, ok := processedData[key]; ok {
|
||||||
|
@ -2609,12 +2609,12 @@ func QueryRetailMargin(req *ErpOrderRetailMarginReq, c *gin.Context) (*ErpOrderR
|
||||||
SalesAmount: item.ReceivedAmount,
|
SalesAmount: item.ReceivedAmount,
|
||||||
SalesCost: item.WholesalePrice * float64(item.Count),
|
SalesCost: item.WholesalePrice * float64(item.Count),
|
||||||
EmployeeCost: (item.WholesalePrice + item.StaffCostPrice) * float64(item.Count),
|
EmployeeCost: (item.WholesalePrice + item.StaffCostPrice) * float64(item.Count),
|
||||||
SalesMargin: item.ReceivedAmount - float64(int32(item.WholesalePrice)*item.Count),
|
SalesMargin: item.ReceivedAmount - item.WholesalePrice*float64(item.Count),
|
||||||
GrossMargins: "--",
|
GrossMargins: "--",
|
||||||
//GrossMargins: float64ToPercentage((item.ReceivedAmount - float64(int32(item.WholesalePrice)*item.Total)) / item.ReceivedAmount),
|
//GrossMargins: float64ToPercentage((item.ReceivedAmount - float64(int32(item.WholesalePrice)*item.Total)) / item.ReceivedAmount),
|
||||||
}
|
}
|
||||||
if item.ReceivedAmount != 0 {
|
if item.ReceivedAmount != 0 {
|
||||||
data.GrossMargins = float64ToPercentage((item.ReceivedAmount - float64(int32(item.WholesalePrice)*item.Count)) / item.ReceivedAmount)
|
data.GrossMargins = float64ToPercentage((item.ReceivedAmount - item.WholesalePrice*float64(item.Count)) / item.ReceivedAmount)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果是拒绝的销售,进行相应的处理
|
// 如果是拒绝的销售,进行相应的处理
|
||||||
|
@ -4260,8 +4260,8 @@ func QueryReceiptData(req *ErpOrderDeleteReq, c *gin.Context) (*ErpOrderReceiptD
|
||||||
var tableData TableData
|
var tableData TableData
|
||||||
tableData.Name = item.ErpCommodityName
|
tableData.Name = item.ErpCommodityName
|
||||||
tableData.SL = uint32(item.Count)
|
tableData.SL = uint32(item.Count)
|
||||||
tableData.DJ = uint32(item.RetailPrice)
|
tableData.DJ = item.RetailPrice
|
||||||
tableData.JE = uint32(item.Count) * uint32(item.RetailPrice)
|
tableData.JE = float64(item.Count) * item.RetailPrice
|
||||||
|
|
||||||
key := fmt.Sprintf("commodity_%d", i)
|
key := fmt.Sprintf("commodity_%d", i)
|
||||||
commodityMap[key] = tableData
|
commodityMap[key] = tableData
|
||||||
|
@ -4689,11 +4689,11 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) {
|
||||||
|
|
||||||
// 销售毛利:实际退货金额-采购金额(需要先取负值,然后再计算),结果等同于:采购金额-实际退货金额
|
// 销售毛利:实际退货金额-采购金额(需要先取负值,然后再计算),结果等同于:采购金额-实际退货金额
|
||||||
//salesProfit := (-v.RejectedAmount) - (-float64(int32(v.WholesalePrice) * v.Count))
|
//salesProfit := (-v.RejectedAmount) - (-float64(int32(v.WholesalePrice) * v.Count))
|
||||||
salesProfit := req.ErpOrderCommodities[i].RejectedAmount - float64(int32(req.ErpOrderCommodities[i].WholesalePrice)*req.ErpOrderCommodities[i].Count)
|
salesProfit := req.ErpOrderCommodities[i].RejectedAmount - req.ErpOrderCommodities[i].WholesalePrice*float64(req.ErpOrderCommodities[i].Count)
|
||||||
|
|
||||||
// 员工毛利 // todo 待测试核实
|
// 员工毛利 // todo 待测试核实
|
||||||
//StaffProfit := salesProfit - (-float64(int32(v.StaffCostPrice) * v.Count))
|
//StaffProfit := salesProfit - (-float64(int32(v.StaffCostPrice) * v.Count))
|
||||||
StaffProfit := salesProfit - float64(int32(req.ErpOrderCommodities[i].StaffCostPrice)*req.ErpOrderCommodities[i].Count)
|
StaffProfit := salesProfit - req.ErpOrderCommodities[i].StaffCostPrice*float64(req.ErpOrderCommodities[i].Count)
|
||||||
|
|
||||||
req.ErpOrderCommodities[i].SalesProfit = salesProfit // 销售毛利
|
req.ErpOrderCommodities[i].SalesProfit = salesProfit // 销售毛利
|
||||||
req.ErpOrderCommodities[i].StaffProfit = StaffProfit // 员工毛利
|
req.ErpOrderCommodities[i].StaffProfit = StaffProfit // 员工毛利
|
||||||
|
@ -4762,9 +4762,9 @@ func checkOrderData(req *ErpOrderCreateReq, c *gin.Context) (*ErpOrder, error) {
|
||||||
|
|
||||||
// 销售毛利 备注:产品说有亏本销售的情况,不用判断毛利是否<0
|
// 销售毛利 备注:产品说有亏本销售的情况,不用判断毛利是否<0
|
||||||
salesProfit := req.ErpOrderCommodities[i].ReceivedAmount -
|
salesProfit := req.ErpOrderCommodities[i].ReceivedAmount -
|
||||||
float64(int32(req.ErpOrderCommodities[i].WholesalePrice)*req.ErpOrderCommodities[i].Count)
|
req.ErpOrderCommodities[i].WholesalePrice*float64(req.ErpOrderCommodities[i].Count)
|
||||||
// 员工毛利
|
// 员工毛利
|
||||||
StaffProfit := salesProfit - float64(int32(req.ErpOrderCommodities[i].StaffCostPrice)*req.ErpOrderCommodities[i].Count)
|
StaffProfit := salesProfit - req.ErpOrderCommodities[i].StaffCostPrice*float64(req.ErpOrderCommodities[i].Count)
|
||||||
// 单个商品的销售毛利
|
// 单个商品的销售毛利
|
||||||
req.ErpOrderCommodities[i].SalesProfit = salesProfit / float64(req.ErpOrderCommodities[i].Count)
|
req.ErpOrderCommodities[i].SalesProfit = salesProfit / float64(req.ErpOrderCommodities[i].Count)
|
||||||
// 单个商品的员工毛利
|
// 单个商品的员工毛利
|
||||||
|
|
|
@ -524,12 +524,12 @@ func checkStockExcel(sheetCols [][]string) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 采购价、员工成本价必须大于0
|
//// 采购价、员工成本价必须大于0
|
||||||
if i < len(sheetCols[4]) {
|
//if i < len(sheetCols[4]) {
|
||||||
if purchasePrice, err := strconv.ParseFloat(sheetCols[4][i], 64); err != nil || purchasePrice <= 0 {
|
// if purchasePrice, err := strconv.ParseFloat(sheetCols[4][i], 64); err != nil || purchasePrice <= 0 {
|
||||||
return errors.New("第" + strconv.Itoa(i+1) + "行采购价必须是大于0的数字")
|
// return errors.New("第" + strconv.Itoa(i+1) + "行采购价必须是大于0的数字")
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
if i < len(sheetCols[5]) {
|
if i < len(sheetCols[5]) {
|
||||||
if employeeCost, err := strconv.ParseFloat(sheetCols[5][i], 64); err != nil || employeeCost <= 0 {
|
if employeeCost, err := strconv.ParseFloat(sheetCols[5][i], 64); err != nil || employeeCost <= 0 {
|
||||||
|
|
|
@ -1344,8 +1344,8 @@ func WxPayTransactionOrderClose(outTradeNo string) error {
|
||||||
// 密钥APIv3: DeovoMingHuiRengTianTang45675123
|
// 密钥APIv3: DeovoMingHuiRengTianTang45675123
|
||||||
// 证书序列号:7540301D8FD52CCF7D6267DCF7CD2BC0AB467EFF
|
// 证书序列号:7540301D8FD52CCF7D6267DCF7CD2BC0AB467EFF
|
||||||
// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
|
// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
|
||||||
privatePath := "/www/wwwroot/dev.admin.deovo.com/admin_server/go-admin/config/merchant/apiclient_key.pem" // TODO 测试
|
//privatePath := "/www/wwwroot/dev.admin.deovo.com/admin_server/go-admin/config/merchant/apiclient_key.pem" // TODO 测试
|
||||||
//privatePath := "/www/wwwroot/admin.deovo.com/admin_server/go-admin/config/merchant/apiclient_key.pem" // TODO 正式
|
privatePath := "/www/wwwroot/admin.deovo.com/admin_server/go-admin/config/merchant/apiclient_key.pem" // TODO 正式
|
||||||
mchPrivateKey, err := wechatpayutils.LoadPrivateKeyWithPath(privatePath)
|
mchPrivateKey, err := wechatpayutils.LoadPrivateKeyWithPath(privatePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
//log.Fatal("load merchant private key error")
|
//log.Fatal("load merchant private key error")
|
||||||
|
|
|
@ -132,7 +132,7 @@ const QueryTimeFormat = "2006-01-02T15:04:05+08:00"
|
||||||
const StoreDateTimeFormat = "2006.01.02"
|
const StoreDateTimeFormat = "2006.01.02"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ExportUrl = "https://dev.admin.deovo.com/load/export/"
|
ExportUrl = "https://admin.deovo.com/load/export/"
|
||||||
)
|
)
|
||||||
|
|
||||||
type UserInvite struct {
|
type UserInvite struct {
|
||||||
|
@ -2615,9 +2615,10 @@ type UserDepositRefundRecordListReq struct {
|
||||||
Status uint32 `json:"status"`
|
Status uint32 `json:"status"`
|
||||||
}
|
}
|
||||||
type UserDepositRefundRecordListResp struct {
|
type UserDepositRefundRecordListResp struct {
|
||||||
List []DepositRefundRecord `json:"list"`
|
List []DepositRefundRecord `json:"list"`
|
||||||
Count uint32 `json:"count"`
|
Total int `json:"total"` // 总条数
|
||||||
PageNum int `json:"pageIndex"`
|
PageIndex int `json:"pageIndex"` // 页码
|
||||||
|
PageSize int `json:"pageSize"` // 每页展示条数
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *UserDepositRefundRecordListReq) DepositRefundRecordList() (*UserDepositRefundRecordListResp, error) {
|
func (m *UserDepositRefundRecordListReq) DepositRefundRecordList() (*UserDepositRefundRecordListResp, error) {
|
||||||
|
@ -2628,6 +2629,11 @@ func (m *UserDepositRefundRecordListReq) DepositRefundRecordList() (*UserDeposit
|
||||||
if m.Uid != 0 {
|
if m.Uid != 0 {
|
||||||
qs = qs.Where("uid=?", m.Uid)
|
qs = qs.Where("uid=?", m.Uid)
|
||||||
}
|
}
|
||||||
|
resp := &UserDepositRefundRecordListResp{
|
||||||
|
PageIndex: m.PageNum,
|
||||||
|
PageSize: m.PageSize,
|
||||||
|
}
|
||||||
|
|
||||||
page := m.PageNum - 1
|
page := m.PageNum - 1
|
||||||
if page < 0 {
|
if page < 0 {
|
||||||
page = 0
|
page = 0
|
||||||
|
@ -2635,14 +2641,14 @@ func (m *UserDepositRefundRecordListReq) DepositRefundRecordList() (*UserDeposit
|
||||||
if m.PageSize == 0 {
|
if m.PageSize == 0 {
|
||||||
m.PageSize = 10
|
m.PageSize = 10
|
||||||
}
|
}
|
||||||
resp := &UserDepositRefundRecordListResp{PageNum: m.PageNum}
|
|
||||||
var count int64
|
var count int64
|
||||||
err := qs.Count(&count).Error
|
err := qs.Count(&count).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("count err:", logger.Field("err", err))
|
logger.Error("count err:", logger.Field("err", err))
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
resp.Count = uint32(count)
|
resp.Total = int(count)
|
||||||
|
|
||||||
var depositRefunds []DepositRefundRecord
|
var depositRefunds []DepositRefundRecord
|
||||||
err = qs.Order("status ASC").Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&depositRefunds).Error
|
err = qs.Order("status ASC").Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&depositRefunds).Error
|
||||||
|
@ -3674,17 +3680,21 @@ type ExpireMemberSmsSendListReq struct {
|
||||||
//EndTime string `json:"end_time"` // 结束时间
|
//EndTime string `json:"end_time"` // 结束时间
|
||||||
StartTime time.Time `json:"start_time"` // 开始时间
|
StartTime time.Time `json:"start_time"` // 开始时间
|
||||||
EndTime time.Time `json:"end_time"` // 结束时间
|
EndTime time.Time `json:"end_time"` // 结束时间
|
||||||
PageNum int `json:"page_num"`
|
PageIndex int `json:"pageIndex"`
|
||||||
PageSize int `json:"page_size"`
|
PageSize int `json:"pageSize"`
|
||||||
}
|
}
|
||||||
type ExpireMemberSmsSendListResp struct {
|
type ExpireMemberSmsSendListResp struct {
|
||||||
List []ExpireMemberSmsSend `json:"list"`
|
List []ExpireMemberSmsSend `json:"list"`
|
||||||
Count uint32 `json:"count"`
|
Total int `json:"total"` // 总条数
|
||||||
PageNum int `json:"pageIndex"`
|
PageIndex int `json:"pageIndex"` // 页码
|
||||||
|
PageSize int `json:"pageSize"` // 每页展示条数
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *ExpireMemberSmsSendListReq) List() (*ExpireMemberSmsSendListResp, error) {
|
func (m *ExpireMemberSmsSendListReq) List() (*ExpireMemberSmsSendListResp, error) {
|
||||||
resp := &ExpireMemberSmsSendListResp{PageNum: m.PageNum}
|
resp := &ExpireMemberSmsSendListResp{
|
||||||
|
PageIndex: m.PageIndex,
|
||||||
|
PageSize: m.PageSize,
|
||||||
|
}
|
||||||
qs := orm.Eloquent.Table("expire_member_sms_send")
|
qs := orm.Eloquent.Table("expire_member_sms_send")
|
||||||
if m.Status != 0 {
|
if m.Status != 0 {
|
||||||
qs = qs.Where("status=?", m.Status)
|
qs = qs.Where("status=?", m.Status)
|
||||||
|
@ -3716,7 +3726,7 @@ func (m *ExpireMemberSmsSendListReq) List() (*ExpireMemberSmsSendListResp, error
|
||||||
parse := m.EndTime.AddDate(0, 0, 1)
|
parse := m.EndTime.AddDate(0, 0, 1)
|
||||||
qs = qs.Where("send_time < ?", parse)
|
qs = qs.Where("send_time < ?", parse)
|
||||||
}
|
}
|
||||||
page := m.PageNum - 1
|
page := m.PageIndex - 1
|
||||||
if page < 0 {
|
if page < 0 {
|
||||||
page = 0
|
page = 0
|
||||||
}
|
}
|
||||||
|
@ -3730,7 +3740,7 @@ func (m *ExpireMemberSmsSendListReq) List() (*ExpireMemberSmsSendListResp, error
|
||||||
logger.Error("count err:", logger.Field("err", err))
|
logger.Error("count err:", logger.Field("err", err))
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
resp.Count = uint32(count)
|
resp.Total = int(count)
|
||||||
|
|
||||||
var smsSends []ExpireMemberSmsSend
|
var smsSends []ExpireMemberSmsSend
|
||||||
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&smsSends).Error
|
err = qs.Order("id DESC").Offset(page * m.PageSize).Limit(m.PageSize).Find(&smsSends).Error
|
||||||
|
|
|
@ -31,7 +31,7 @@ func registerOrderManageUnAuthRouter(v1 *gin.RouterGroup) {
|
||||||
order.POST("/del", ordermanage.OrderDel) // 订单删除
|
order.POST("/del", ordermanage.OrderDel) // 订单删除
|
||||||
order.POST("/refund", ordermanage.OrderRefund) // 订单退款
|
order.POST("/refund", ordermanage.OrderRefund) // 订单退款
|
||||||
order.POST("/express_no/list", ordermanage.ExpressNoList) // 物流单列表
|
order.POST("/express_no/list", ordermanage.ExpressNoList) // 物流单列表
|
||||||
order.POST("/fund_record/list", ordermanage.FundRecordList) // 物流单列表
|
order.POST("/fund_record/list", ordermanage.FundRecordList) // 财务统计列表
|
||||||
|
|
||||||
//order.POST("/type", goodsmanage.GameCardTypes) // 获取游戏类型
|
//order.POST("/type", goodsmanage.GameCardTypes) // 获取游戏类型
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ func registerUserManageUnAuthRouter(v1 *gin.RouterGroup) {
|
||||||
userInfo.POST("/cancel_members", usermanage.CancelMembers)
|
userInfo.POST("/cancel_members", usermanage.CancelMembers)
|
||||||
|
|
||||||
userInfo.POST("/user_derive", usermanage.ExportDataUserMember)
|
userInfo.POST("/user_derive", usermanage.ExportDataUserMember)
|
||||||
userInfo.POST("/deposit_refund/list", usermanage.UserDepositRefundRecordList)
|
userInfo.POST("/deposit_refund/list", usermanage.UserDepositRefundRecordList) // 保证金审核列表
|
||||||
userInfo.POST("/deposit_refund/notarize", usermanage.NotarizeUserDepositRefund) // 退押金审核
|
userInfo.POST("/deposit_refund/notarize", usermanage.NotarizeUserDepositRefund) // 退押金审核
|
||||||
userInfo.POST("/deposit_refund/refused", usermanage.NotarizeUserDepositRefused)
|
userInfo.POST("/deposit_refund/refused", usermanage.NotarizeUserDepositRefused)
|
||||||
userInfo.POST("/xcx_role_list", usermanage.XcxRoleList)
|
userInfo.POST("/xcx_role_list", usermanage.XcxRoleList)
|
||||||
|
@ -38,7 +38,7 @@ func registerUserManageUnAuthRouter(v1 *gin.RouterGroup) {
|
||||||
userInfo.POST("/member_record_list_export", usermanage.UserMemberRecordListExport)
|
userInfo.POST("/member_record_list_export", usermanage.UserMemberRecordListExport)
|
||||||
userInfo.POST("/member_statistic_list", usermanage.UserMemberStatisticList)
|
userInfo.POST("/member_statistic_list", usermanage.UserMemberStatisticList)
|
||||||
userInfo.POST("/user_invite_record_list", usermanage.UserInviteRecordList)
|
userInfo.POST("/user_invite_record_list", usermanage.UserInviteRecordList)
|
||||||
userInfo.POST("/expire_member_sms_list", usermanage.ExpireMemberSmsSendRecordList)
|
userInfo.POST("/expire_member_sms_list", usermanage.ExpireMemberSmsSendRecordList) // 短信记录列表
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -132,6 +132,7 @@ func run() error {
|
||||||
//if err != nil {
|
//if err != nil {
|
||||||
// fmt.Println("err:", err)
|
// fmt.Println("err:", err)
|
||||||
//}
|
//}
|
||||||
|
|
||||||
// 用户收回卡绑定卡
|
// 用户收回卡绑定卡
|
||||||
err = s.Every(1).Day().At("00:00").Do(models.ShareCardRetrieveCardSetStockCardCron)
|
err = s.Every(1).Day().At("00:00").Do(models.ShareCardRetrieveCardSetStockCardCron)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -30,8 +30,8 @@ settings:
|
||||||
enabledjob: false
|
enabledjob: false
|
||||||
jwt:
|
jwt:
|
||||||
# token 密钥,生产环境时及的修改
|
# token 密钥,生产环境时及的修改
|
||||||
secret: go-admin
|
# secret: go-admin
|
||||||
# secret: adminqYrhCcQRvVNAaEo4h4osoW
|
secret: adminqYrhCcQRvVNAaEo4h4osoW
|
||||||
# token 过期时间 单位:秒
|
# token 过期时间 单位:秒
|
||||||
timeout: 3600
|
timeout: 3600
|
||||||
database:
|
database:
|
||||||
|
@ -39,9 +39,10 @@ settings:
|
||||||
driver: mysql
|
driver: mysql
|
||||||
# 数据库连接字符串 mysql 缺省信息 charset=utf8&parseTime=True&loc=Local&timeout=1000ms
|
# 数据库连接字符串 mysql 缺省信息 charset=utf8&parseTime=True&loc=Local&timeout=1000ms
|
||||||
# source: root:myTest@921@tcp(127.0.0.1:3306)/mh_dev?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
|
# source: root:myTest@921@tcp(127.0.0.1:3306)/mh_dev?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
|
||||||
source: mh_dev:d9qy46ONI0ZTF9eH@tcp(112.33.14.191:3306)/mh_dev?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
|
# source: mh_dev:d9qy46ONI0ZTF9eH@tcp(112.33.14.191:3306)/mh_dev?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
|
||||||
# source: mh_pro:c5JBW3X6EEVQluYM@tcp(39.108.188.218:3306)/mh_pro?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
|
# source: mh_pro:c5JBW3X6EEVQluYM@tcp(39.108.188.218:3306)/mh_pro?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
|
||||||
# source: mh_test:GPLzZ8rMmbJbKtMh@tcp(112.33.14.191:3306)/mh_test?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
|
# source: mh_test:GPLzZ8rMmbJbKtMh@tcp(112.33.14.191:3306)/mh_test?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
|
||||||
|
source: mh_new_pro:YnzexdTfBHMSGZki@tcp(39.108.188.218:3306)/mh_new_pro?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
|
||||||
|
|
||||||
gen:
|
gen:
|
||||||
# 代码生成读取的数据库名称
|
# 代码生成读取的数据库名称
|
||||||
|
|
Loading…
Reference in New Issue
Block a user