|
@@ -1,212 +1,212 @@
|
|
|
package service
|
|
|
|
|
|
import (
|
|
|
- "encoding/json"
|
|
|
- "fmt"
|
|
|
- "jy/src/jfw/modules/subscribepay/src/config"
|
|
|
- "jy/src/jfw/modules/subscribepay/src/entity"
|
|
|
- "jy/src/jfw/modules/subscribepay/src/util"
|
|
|
- "log"
|
|
|
- "strings"
|
|
|
- "time"
|
|
|
+ "encoding/json"
|
|
|
+ "fmt"
|
|
|
+ "jy/src/jfw/modules/subscribepay/src/config"
|
|
|
+ "jy/src/jfw/modules/subscribepay/src/entity"
|
|
|
+ "jy/src/jfw/modules/subscribepay/src/util"
|
|
|
+ "log"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
|
|
|
- . "app.yhyue.com/moapp/jybase/api"
|
|
|
- qutil "app.yhyue.com/moapp/jybase/common"
|
|
|
- "app.yhyue.com/moapp/jybase/dchest/captcha"
|
|
|
- "app.yhyue.com/moapp/jybase/go-xweb/xweb"
|
|
|
- "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
|
|
|
+ . "app.yhyue.com/moapp/jybase/api"
|
|
|
+ qutil "app.yhyue.com/moapp/jybase/common"
|
|
|
+ "app.yhyue.com/moapp/jybase/dchest/captcha"
|
|
|
+ "app.yhyue.com/moapp/jybase/go-xweb/xweb"
|
|
|
+ "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
|
|
|
)
|
|
|
|
|
|
type EquityCode struct {
|
|
|
- *xweb.Action
|
|
|
- exchange xweb.Mapper `xweb:"/equityCode/exchange"` //权益码兑换
|
|
|
- list xweb.Mapper `xweb:"/equityCode/list"` //权益码兑换列表
|
|
|
- submit xweb.Mapper `xweb:"/equityCode/submit"` //新的权益码兑换-提交
|
|
|
- captcha xweb.Mapper `xweb:"/equityCode/captcha"` //新的权益码兑换-图形验证码
|
|
|
+ *xweb.Action
|
|
|
+ exchange xweb.Mapper `xweb:"/equityCode/exchange"` //权益码兑换
|
|
|
+ list xweb.Mapper `xweb:"/equityCode/list"` //权益码兑换列表
|
|
|
+ submit xweb.Mapper `xweb:"/equityCode/submit"` //新的权益码兑换-提交
|
|
|
+ captcha xweb.Mapper `xweb:"/equityCode/captcha"` //新的权益码兑换-图形验证码
|
|
|
}
|
|
|
|
|
|
// Exchange 权益码兑换
|
|
|
func (e *EquityCode) Exchange() {
|
|
|
- defer qutil.Catch()
|
|
|
- var userId string
|
|
|
- r := func() *entity.FuncResult {
|
|
|
- userId, _ = e.GetSession("userId").(string)
|
|
|
- phone, _ := e.GetSession("phone").(string)
|
|
|
- nickName, _ := e.GetSession("s_nickname").(string)
|
|
|
- openId := qutil.ObjToString(e.GetSession("s_m_openid"))
|
|
|
- //验证用户是否登录
|
|
|
- if userId == "" {
|
|
|
- return &entity.FuncResult{
|
|
|
- Success: false,
|
|
|
- Err: fmt.Errorf("未登录"),
|
|
|
- Data: nil,
|
|
|
- }
|
|
|
- }
|
|
|
- //验证码
|
|
|
- equityCode := e.GetString("code")
|
|
|
- msg, flag := entity.GetNewEquityCode(equityCode, userId, phone, nickName, openId, e.Request, e.Session()).Exchange()
|
|
|
- return &entity.FuncResult{Success: flag, Err: fmt.Errorf(msg)}
|
|
|
- }()
|
|
|
- if r.Err != nil {
|
|
|
- log.Printf("%s 权益码兑换异常 err:%v\n", userId, r.Err.Error())
|
|
|
- }
|
|
|
- e.ServeJson(r.Format())
|
|
|
+ defer qutil.Catch()
|
|
|
+ var userId string
|
|
|
+ r := func() *entity.FuncResult {
|
|
|
+ userId, _ = e.GetSession("userId").(string)
|
|
|
+ phone, _ := e.GetSession("phone").(string)
|
|
|
+ nickName, _ := e.GetSession("s_nickname").(string)
|
|
|
+ openId := qutil.ObjToString(e.GetSession("s_m_openid"))
|
|
|
+ //验证用户是否登录
|
|
|
+ if userId == "" {
|
|
|
+ return &entity.FuncResult{
|
|
|
+ Success: false,
|
|
|
+ Err: fmt.Errorf("未登录"),
|
|
|
+ Data: nil,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //验证码
|
|
|
+ equityCode := e.GetString("code")
|
|
|
+ msg, flag := entity.GetNewEquityCode(equityCode, userId, phone, nickName, openId, e.Request, e.Session()).Exchange()
|
|
|
+ return &entity.FuncResult{Success: flag, Err: fmt.Errorf(msg)}
|
|
|
+ }()
|
|
|
+ if r.Err != nil {
|
|
|
+ log.Printf("%s 权益码兑换异常 err:%v\n", userId, r.Err.Error())
|
|
|
+ }
|
|
|
+ e.ServeJson(r.Format())
|
|
|
}
|
|
|
|
|
|
// List 权益码兑换
|
|
|
func (e *EquityCode) List() {
|
|
|
- defer qutil.Catch()
|
|
|
- var userId string
|
|
|
- r := func() *entity.FuncResult {
|
|
|
- userId, _ = e.GetSession("userId").(string)
|
|
|
- phone, _ := e.GetSession("phone").(string)
|
|
|
- nickName, _ := e.GetSession("s_nickname").(string)
|
|
|
- openId := qutil.ObjToString(e.GetSession("s_m_openid"))
|
|
|
- //验证用户是否登录
|
|
|
- if userId == "" {
|
|
|
- return &entity.FuncResult{
|
|
|
- Success: false,
|
|
|
- Err: fmt.Errorf("未登录"),
|
|
|
- Data: nil,
|
|
|
- }
|
|
|
- }
|
|
|
- //权益码
|
|
|
- equityCode := e.GetString("code")
|
|
|
- ers, err := entity.GetNewEquityCode(equityCode, userId, phone, nickName, openId, e.Request, e.Session()).ExchangeRecords()
|
|
|
- log.Println(err, "res:", ers)
|
|
|
- res := make(map[string]interface{})
|
|
|
- if err == nil && ers != nil {
|
|
|
- data, _ := json.Marshal(&ers)
|
|
|
- json.Unmarshal(data, &res)
|
|
|
- }
|
|
|
- return &entity.FuncResult{Success: err == nil, Data: res}
|
|
|
- }()
|
|
|
- if r.Err != nil {
|
|
|
- log.Printf("%s 权益码兑换异常 err:%v\n", userId, r.Err.Error())
|
|
|
- }
|
|
|
- e.ServeJson(r.Format())
|
|
|
+ defer qutil.Catch()
|
|
|
+ var userId string
|
|
|
+ r := func() *entity.FuncResult {
|
|
|
+ userId, _ = e.GetSession("userId").(string)
|
|
|
+ phone, _ := e.GetSession("phone").(string)
|
|
|
+ nickName, _ := e.GetSession("s_nickname").(string)
|
|
|
+ openId := qutil.ObjToString(e.GetSession("s_m_openid"))
|
|
|
+ //验证用户是否登录
|
|
|
+ if userId == "" {
|
|
|
+ return &entity.FuncResult{
|
|
|
+ Success: false,
|
|
|
+ Err: fmt.Errorf("未登录"),
|
|
|
+ Data: nil,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //权益码
|
|
|
+ equityCode := e.GetString("code")
|
|
|
+ ers, err := entity.GetNewEquityCode(equityCode, userId, phone, nickName, openId, e.Request, e.Session()).ExchangeRecords()
|
|
|
+ log.Println(err, "res:", ers)
|
|
|
+ res := make(map[string]interface{})
|
|
|
+ if err == nil && ers != nil {
|
|
|
+ data, _ := json.Marshal(&ers)
|
|
|
+ json.Unmarshal(data, &res)
|
|
|
+ }
|
|
|
+ return &entity.FuncResult{Success: err == nil, Data: res}
|
|
|
+ }()
|
|
|
+ if r.Err != nil {
|
|
|
+ log.Printf("%s 权益码兑换异常 err:%v\n", userId, r.Err.Error())
|
|
|
+ }
|
|
|
+ e.ServeJson(r.Format())
|
|
|
}
|
|
|
|
|
|
-//新的权益码兑换接口
|
|
|
+// 新的权益码兑换接口
|
|
|
func (e *EquityCode) Submit() {
|
|
|
- reqType, _ := e.GetInt("reqType")
|
|
|
- result := M{}
|
|
|
- status := func() int {
|
|
|
- if reqType == 1 { //发送登录短信验证码
|
|
|
- phone := e.GetString("phone")
|
|
|
- if !phoneReg.MatchString(phone) {
|
|
|
- return -1 //手机号格式错误
|
|
|
- } else if tmp := e.GetSession("EquityCode_CheckCodeId"); tmp == nil || !captcha.VerifyString(tmp.(string), e.GetString("code")) {
|
|
|
- return -2 //图形验证码错误
|
|
|
- } else if jy.SendPhoneIdentCode(e.Request, util.BaseMysql, config.Config.SmsServiceRpc, phone, e.Session()) {
|
|
|
- return 1 //发送短信成功
|
|
|
- }
|
|
|
- } else if reqType == 2 {
|
|
|
- sessVal := e.Session().GetMultiple()
|
|
|
- phone := qutil.ObjToString(sessVal["identCodeKey"])
|
|
|
- if jy.CheckPhoneIdent(e.Session(), e.GetString("identCode")) == "" { //验证码不正确
|
|
|
- return -1 //短信验证码错误
|
|
|
- }
|
|
|
- equityCode := e.GetString("equityCode")
|
|
|
- datas := util.ActivityMysql.SelectBySql(`SELECT a.id,a.userId,a.equityId,a.startTime,a.endTime,a.state,a.number,a.timeType,b.foreignCode,b.productName,c.province,c.name,e.name as eName FROM jyactivities.equity_record a
|
|
|
+ reqType, _ := e.GetInt("reqType")
|
|
|
+ result := M{}
|
|
|
+ status := func() int {
|
|
|
+ if reqType == 1 { //发送登录短信验证码
|
|
|
+ phone := e.GetString("phone")
|
|
|
+ if !phoneReg.MatchString(phone) {
|
|
|
+ return -1 //手机号格式错误
|
|
|
+ } else if tmp := e.GetSession("EquityCode_CheckCodeId"); tmp == nil || !captcha.VerifyString(tmp.(string), e.GetString("code")) {
|
|
|
+ return -2 //图形验证码错误
|
|
|
+ } else if jy.SendPhoneIdentCode(e.Request, config.Config.SmsServiceRpc, phone, e.Session()) {
|
|
|
+ return 1 //发送短信成功
|
|
|
+ }
|
|
|
+ } else if reqType == 2 {
|
|
|
+ sessVal := e.Session().GetMultiple()
|
|
|
+ phone := qutil.ObjToString(sessVal["identCodeKey"])
|
|
|
+ if jy.CheckPhoneIdent(e.Session(), e.GetString("identCode")) == "" { //验证码不正确
|
|
|
+ return -1 //短信验证码错误
|
|
|
+ }
|
|
|
+ equityCode := e.GetString("equityCode")
|
|
|
+ datas := util.ActivityMysql.SelectBySql(`SELECT a.id,a.userId,a.equityId,a.startTime,a.endTime,a.state,a.number,a.timeType,b.foreignCode,b.productName,c.province,c.name,e.name as eName FROM jyactivities.equity_record a
|
|
|
INNER JOIN jyactivities.product b ON (a.equityCode=? AND a.parentCode=b.productCode)
|
|
|
inner join jyactivities.gift c on (a.giftCode=c.giftCode)
|
|
|
INNER JOIN jyactivities.equity d ON (a.equityId=d.id)
|
|
|
INNER JOIN jyactivities.enterprise e ON (d.entid=e.id)`, equityCode)
|
|
|
- if datas == nil || len(*datas) == 0 {
|
|
|
- log.Println(phone, equityCode, "兑换码不存在")
|
|
|
- return -2 //兑换码不存在
|
|
|
- }
|
|
|
- if qutil.IntAll((*datas)[0]["state"]) != 1 {
|
|
|
- log.Println(phone, equityCode, "兑换码已失效")
|
|
|
- return -3 //兑换码已失效
|
|
|
- } else if qutil.ObjToString((*datas)[0]["userId"]) != "" {
|
|
|
- log.Println(phone, equityCode, "兑换码已被兑换")
|
|
|
- return -4 //兑换码已被兑换
|
|
|
- }
|
|
|
- now := time.Now()
|
|
|
- if startTime := qutil.ObjToString((*datas)[0]["startTime"]); startTime != "" {
|
|
|
- if st, err := time.ParseInLocation("2006-01-02 15:04:05", startTime, time.Local); err == nil {
|
|
|
- //权益码兑换还未开始
|
|
|
- if st.Unix() > now.Unix() {
|
|
|
- log.Println(phone, equityCode, "兑换码兑换还未开始")
|
|
|
- return -5 //兑换码兑换还未开始
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //是否已过期
|
|
|
- if endTime := qutil.ObjToString((*datas)[0]["endTime"]); endTime != "" {
|
|
|
- if et, err := time.ParseInLocation("2006-01-02 15:04:05", endTime, time.Local); err == nil {
|
|
|
- if et.Unix() < now.Unix() {
|
|
|
- log.Println(phone, equityCode, "兑换码已过期")
|
|
|
- return -6 //兑换码已过期
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- foreignCode := qutil.ObjToString((*datas)[0]["foreignCode"])
|
|
|
- if foreignCode == "" {
|
|
|
- log.Println(phone, equityCode, "没有找到对应的小程序code")
|
|
|
- return 0
|
|
|
- }
|
|
|
- foreignCodes := strings.Split(foreignCode, ",")
|
|
|
- giftName := qutil.ObjToString((*datas)[0]["name"])
|
|
|
- wh, args := qutil.WhArgs(foreignCodes)
|
|
|
- mps := util.ActivityMysql.SelectBySql(`select a.name as aName,a.qrcode,b.name as bName,b.code as bCode from debris_product.miniprogram a
|
|
|
+ if datas == nil || len(*datas) == 0 {
|
|
|
+ log.Println(phone, equityCode, "兑换码不存在")
|
|
|
+ return -2 //兑换码不存在
|
|
|
+ }
|
|
|
+ if qutil.IntAll((*datas)[0]["state"]) != 1 {
|
|
|
+ log.Println(phone, equityCode, "兑换码已失效")
|
|
|
+ return -3 //兑换码已失效
|
|
|
+ } else if qutil.ObjToString((*datas)[0]["userId"]) != "" {
|
|
|
+ log.Println(phone, equityCode, "兑换码已被兑换")
|
|
|
+ return -4 //兑换码已被兑换
|
|
|
+ }
|
|
|
+ now := time.Now()
|
|
|
+ if startTime := qutil.ObjToString((*datas)[0]["startTime"]); startTime != "" {
|
|
|
+ if st, err := time.ParseInLocation("2006-01-02 15:04:05", startTime, time.Local); err == nil {
|
|
|
+ //权益码兑换还未开始
|
|
|
+ if st.Unix() > now.Unix() {
|
|
|
+ log.Println(phone, equityCode, "兑换码兑换还未开始")
|
|
|
+ return -5 //兑换码兑换还未开始
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //是否已过期
|
|
|
+ if endTime := qutil.ObjToString((*datas)[0]["endTime"]); endTime != "" {
|
|
|
+ if et, err := time.ParseInLocation("2006-01-02 15:04:05", endTime, time.Local); err == nil {
|
|
|
+ if et.Unix() < now.Unix() {
|
|
|
+ log.Println(phone, equityCode, "兑换码已过期")
|
|
|
+ return -6 //兑换码已过期
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ foreignCode := qutil.ObjToString((*datas)[0]["foreignCode"])
|
|
|
+ if foreignCode == "" {
|
|
|
+ log.Println(phone, equityCode, "没有找到对应的小程序code")
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ foreignCodes := strings.Split(foreignCode, ",")
|
|
|
+ giftName := qutil.ObjToString((*datas)[0]["name"])
|
|
|
+ wh, args := qutil.WhArgs(foreignCodes)
|
|
|
+ mps := util.ActivityMysql.SelectBySql(`select a.name as aName,a.qrcode,b.name as bName,b.code as bCode from debris_product.miniprogram a
|
|
|
inner join debris_product.industry b on (a.code in (`+wh+`) and a.industry_code=b.code)`, args...)
|
|
|
- if mps == nil || len(*mps) == 0 {
|
|
|
- log.Println(phone, equityCode, "没有关联上对应的小程序code", foreignCode)
|
|
|
- return 0
|
|
|
- }
|
|
|
- industryCode := qutil.ObjToString((*mps)[0]["bCode"])
|
|
|
- industry := qutil.ObjToString((*mps)[0]["bName"])
|
|
|
- //
|
|
|
- disChannel := "x045"
|
|
|
- items := util.ActivityMysql.SelectBySql(`select item_code from jianyu.dict_item where parent_code='x04' and item_name=?`, qutil.ObjToString((*datas)[0]["eName"]))
|
|
|
- if items != nil && len(*items) > 0 {
|
|
|
- disChannel = qutil.ObjToString((*items)[0]["item_code"])
|
|
|
- }
|
|
|
- res := entity.GetNewEquityCode(equityCode, "", phone, "", "", e.Request, e.Session()).Submit(foreignCodes, disChannel, qutil.ObjToString((*datas)[0]["productName"]), industryCode, qutil.IntAll((*datas)[0]["province"]), qutil.IntAll((*datas)[0]["number"]), qutil.IntAll((*datas)[0]["timeType"]))
|
|
|
- if res == 1 {
|
|
|
- result["name"] = giftName
|
|
|
- list := []map[string]interface{}{}
|
|
|
- for _, v := range *mps {
|
|
|
- result["industry"] = industry
|
|
|
- list = append(list, map[string]interface{}{
|
|
|
- "qrcode": qutil.ObjToString(v["qrcode"]),
|
|
|
- "name": qutil.ObjToString(v["aName"]),
|
|
|
- })
|
|
|
- }
|
|
|
- result["list"] = list
|
|
|
- }
|
|
|
- return res
|
|
|
- }
|
|
|
- return 0
|
|
|
- }()
|
|
|
- result["status"] = status
|
|
|
- ads, ok := util.MQFW.FindOneByField("ad", map[string]interface{}{"s_code": "mini-app-mine-customer"}, `{"a_son":1}`)
|
|
|
- if ok && ads != nil && len(*ads) > 0 {
|
|
|
- a_sons, _ := (*ads)["a_son"].([]interface{})
|
|
|
- if len(a_sons) > 0 {
|
|
|
- a_son, _ := a_sons[0].(map[string]interface{})
|
|
|
- result["kfcode"] = qutil.ObjToString(a_son["s_pic"])
|
|
|
- }
|
|
|
- }
|
|
|
- e.ServeJson(Result{
|
|
|
- Data: result,
|
|
|
- })
|
|
|
+ if mps == nil || len(*mps) == 0 {
|
|
|
+ log.Println(phone, equityCode, "没有关联上对应的小程序code", foreignCode)
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ industryCode := qutil.ObjToString((*mps)[0]["bCode"])
|
|
|
+ industry := qutil.ObjToString((*mps)[0]["bName"])
|
|
|
+ //
|
|
|
+ disChannel := "x045"
|
|
|
+ items := util.ActivityMysql.SelectBySql(`select item_code from jianyu.dict_item where parent_code='x04' and item_name=?`, qutil.ObjToString((*datas)[0]["eName"]))
|
|
|
+ if items != nil && len(*items) > 0 {
|
|
|
+ disChannel = qutil.ObjToString((*items)[0]["item_code"])
|
|
|
+ }
|
|
|
+ res := entity.GetNewEquityCode(equityCode, "", phone, "", "", e.Request, e.Session()).Submit(foreignCodes, disChannel, qutil.ObjToString((*datas)[0]["productName"]), industryCode, qutil.IntAll((*datas)[0]["province"]), qutil.IntAll((*datas)[0]["number"]), qutil.IntAll((*datas)[0]["timeType"]))
|
|
|
+ if res == 1 {
|
|
|
+ result["name"] = giftName
|
|
|
+ list := []map[string]interface{}{}
|
|
|
+ for _, v := range *mps {
|
|
|
+ result["industry"] = industry
|
|
|
+ list = append(list, map[string]interface{}{
|
|
|
+ "qrcode": qutil.ObjToString(v["qrcode"]),
|
|
|
+ "name": qutil.ObjToString(v["aName"]),
|
|
|
+ })
|
|
|
+ }
|
|
|
+ result["list"] = list
|
|
|
+ }
|
|
|
+ return res
|
|
|
+ }
|
|
|
+ return 0
|
|
|
+ }()
|
|
|
+ result["status"] = status
|
|
|
+ ads, ok := util.MQFW.FindOneByField("ad", map[string]interface{}{"s_code": "mini-app-mine-customer"}, `{"a_son":1}`)
|
|
|
+ if ok && ads != nil && len(*ads) > 0 {
|
|
|
+ a_sons, _ := (*ads)["a_son"].([]interface{})
|
|
|
+ if len(a_sons) > 0 {
|
|
|
+ a_son, _ := a_sons[0].(map[string]interface{})
|
|
|
+ result["kfcode"] = qutil.ObjToString(a_son["s_pic"])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ e.ServeJson(Result{
|
|
|
+ Data: result,
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
// 图片验证码
|
|
|
func (e *EquityCode) Captcha() error {
|
|
|
- id := captcha.NewLen(4) //此id为生成验证码的ID,并不是实际显示的数字,在提交校验时,需要根据此ID进行查询。
|
|
|
- e.SetSession("EquityCode_CheckCodeId", id)
|
|
|
- //校验时调用以下代码
|
|
|
- //ccid,_:=c.GetSession("CheckCodeId").(string)
|
|
|
- //captcha.VerifyString(ccid,"用户输入的校验码")//返回bool
|
|
|
- w := e.ResponseWriter
|
|
|
- w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
|
|
|
- w.Header().Set("Pragma", "no-cache")
|
|
|
- w.Header().Set("Expires", "0")
|
|
|
- w.Header().Set("Content-Type", "image/png")
|
|
|
- return captcha.WriteImage(w, id, 90, 30)
|
|
|
+ id := captcha.NewLen(4) //此id为生成验证码的ID,并不是实际显示的数字,在提交校验时,需要根据此ID进行查询。
|
|
|
+ e.SetSession("EquityCode_CheckCodeId", id)
|
|
|
+ //校验时调用以下代码
|
|
|
+ //ccid,_:=c.GetSession("CheckCodeId").(string)
|
|
|
+ //captcha.VerifyString(ccid,"用户输入的校验码")//返回bool
|
|
|
+ w := e.ResponseWriter
|
|
|
+ w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
|
|
|
+ w.Header().Set("Pragma", "no-cache")
|
|
|
+ w.Header().Set("Expires", "0")
|
|
|
+ w.Header().Set("Content-Type", "image/png")
|
|
|
+ return captcha.WriteImage(w, id, 90, 30)
|
|
|
}
|