Browse Source

Merge branch 'mfyx_2.0' of http://8.136.199.33:3000/cxzhang/hongze_mfyx into debug

xingzai 1 year ago
parent
commit
25a5e1c0db

+ 2 - 0
controllers/activity.go

@@ -567,6 +567,8 @@ func (this *ActivityCoAntroller) Detail() {
 				resp.GoodsList = services.GetUserGoodsCardList() //日卡月卡商品信息
 			} else {
 				resp.GoodsList = services.GetGoodsInfoByActivity(activityInfo) //单场活动信息
+				fmt.Println("activityId", activityId)
+				_, resp.PayTimeCountdown = services.GetHaverEquallyOrderByUser10MinByActivty(uid, activityId) //截止支付时间倒计时
 			}
 			for _, v := range resp.GoodsList {
 				resp.PopupPriceMsg += v.PopupPriceMsg //价格弹窗信息

+ 0 - 1
controllers/article.go

@@ -139,7 +139,6 @@ func (this *ArticleController) Detail() {
 		br.ErrMsg = "校验用户权限失败,Err:" + err.Error()
 		return
 	}
-
 	if havePower {
 		hasPermission = 1
 		go services.ArticleHistory(articleId, user)

+ 87 - 9
controllers/order.go

@@ -2,11 +2,13 @@ package controllers
 
 import (
 	"encoding/json"
+	"fmt"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hongze_mfyx/models"
 	"hongze/hongze_mfyx/models/order"
 	"hongze/hongze_mfyx/services"
 	"hongze/hongze_mfyx/utils"
+	"strings"
 	"time"
 )
 
@@ -79,15 +81,16 @@ func (this *OrderController) AddByArticle() {
 	item.CompanyId = user.CompanyId
 	item.CompanyName = user.CompanyName
 	item.RealName = user.RealName
-	item.SellerName = services.GetSellerName(user) // 销售姓名
+	item.SellerName, item.SellerId = services.GetSellerName(user) // 销售姓名
 	item.CreateTime = time.Now()
 	item.ModifyTime = time.Now()
 	item.RegisterPlatform = utils.REGISTER_PLATFORM
-
+	item.OrderType = 1
 	//如果十分钟之内有相同的订单就修改,没有就新增
 	if oldOrderCode == "" {
 		err = order.AddCygxOrder(item)
 	} else {
+		item.OrderCode = oldOrderCode
 		err = order.UpdateCygxOrder(item, oldOrderCode)
 	}
 	if err != nil {
@@ -103,6 +106,7 @@ func (this *OrderController) AddByArticle() {
 	}
 	resp := new(order.WxJsapiApiResp)
 	resp.Detail = JsapiApiResp
+	resp.OrderCode = item.OrderCode
 	br.Data = resp
 	br.Ret = 200
 	br.Success = true
@@ -149,18 +153,37 @@ func (this *OrderController) AddByActivity() {
 		br.ErrMsg = "获取信息失败,Err:" + err.Error()
 		return
 	}
-	var title string
-	oldOrderCode := services.GetHaverEquallyOrderByUser10Min(uid, goodsId) //获取用户十分钟之内是否有相同的订单信息
-	articleDetail, err := models.GetAddActivityInfoById(sourceId)
+	activityDetail, err := models.GetAddActivityInfoById(sourceId)
 	if err != nil {
 		br.Msg = "获取信息失败"
 		br.ErrMsg = "获取信息失败,Err:" + err.Error()
 		return
 	}
-	title = articleDetail.ActivityName
+	var title string
+	var oldOrderCode string
+	//var _ int
 	item := new(order.CygxOrder)
+	if (!activityDetail.IsResearchPoints && activityDetail.IsLimitPeople == 0) || activityDetail.YidongActivityId != "" { //易董的活动 或者(不扣点且不限制人数)走月卡日卡逻辑
+		oldOrderCode = services.GetHaverEquallyOrderByUser10Min(uid, goodsId) //获取用户十分钟之内是否有相同的订单信息
+		item.OrderType = 1
+	} else {
+		oldOrderCode, _ = services.GetHaverEquallyOrderByUser10MinByActivty(uid, sourceId)
+		item.OrderType = 2
+	}
+
+	title = activityDetail.ActivityName
 	item.OrderCode = utils.GetOrdernum()
-	item.GoodsName = goodsDetail.GoodsName
+	if activityDetail.ActivityTypeName == "买方线下交流" {
+		item.GoodsName = "买方交流"
+	}
+	if activityDetail.ActivityTypeName == "专家电话会" || activityDetail.ActivityTypeName == "专家线下沙龙" {
+		item.GoodsName = "专家调研"
+	}
+	if activityDetail.ActivityTypeName == "公司调研电话会" {
+		item.GoodsName = "买方交流"
+	}
+	fmt.Println("item.GoodsName", item.GoodsName)
+	//return
 	item.GoodsId = goodsId
 	item.GoodsMoney = goodsDetail.Price
 	item.OrderMoney = goodsDetail.CurrentPrice
@@ -173,7 +196,7 @@ func (this *OrderController) AddByActivity() {
 	item.CompanyId = user.CompanyId
 	item.CompanyName = user.CompanyName
 	item.RealName = user.RealName
-	item.SellerName = services.GetSellerName(user) // 销售姓名
+	item.SellerName, item.SellerId = services.GetSellerName(user) // 销售姓名
 	item.CreateTime = time.Now()
 	item.ModifyTime = time.Now()
 	item.RegisterPlatform = utils.REGISTER_PLATFORM
@@ -182,14 +205,24 @@ func (this *OrderController) AddByActivity() {
 	if oldOrderCode == "" {
 		err = order.AddCygxOrder(item)
 	} else {
+		item.OrderCode = oldOrderCode
 		err = order.UpdateCygxOrder(item, oldOrderCode)
 	}
-
+	JsapiApiResp, err := services.ExampleJsapiApiServicePrepay(item, user.UnionId)
+	if err != nil {
+		br.Msg = "创建订单信息失败"
+		br.ErrMsg = "创建订单信息失败,ExampleJsapiApiServicePrepayErr:" + err.Error()
+		return
+	}
+	resp := new(order.WxJsapiApiResp)
+	resp.Detail = JsapiApiResp
+	resp.OrderCode = item.OrderCode
 	if err != nil {
 		br.Msg = "创建订单信息失败"
 		br.ErrMsg = "创建订单信息失败,Err:" + err.Error()
 		return
 	}
+	br.Data = resp
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "操作成功"
@@ -291,3 +324,48 @@ func (this *OrderController) UserOrderList() {
 	br.Success = true
 	br.Msg = "获取成功"
 }
+
+// @Title 订单支付详情
+// @Description 订单支付详情接口
+// @Param   OrderCode   query   string  false       "订单号"
+// @Success 200 {object} models.SpecialListResp
+// @router /orderPay/detail [get]
+func (this *OrderController) OrderDetail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	resp := new(order.PayEdOrderDetailResp)
+	orderCode := this.GetString("OrderCode")
+	orderDetail, err := order.GetCygxOrderDetailByOrderCode(orderCode)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败, Err:" + err.Error()
+		return
+	}
+
+	if orderDetail.OrderType == 1 && orderDetail.OrderStatus == 2 {
+		cardDetail, err := order.GetCygxOrderUserCardDetailByOrderCode(orderCode)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败, Err:" + err.Error()
+			return
+		}
+		resp.EndDate = strings.Replace(cardDetail.EndDate.Format(utils.FormatDateTime), "00:00:00", "", -1)
+	}
+	resp.OrderCode = orderDetail.OrderCode
+	resp.OrderType = orderDetail.OrderType
+	resp.OrderStatus = orderDetail.OrderStatus
+	br.Data = resp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+}

+ 13 - 4
controllers/wechat.go

@@ -446,14 +446,23 @@ func (this *WechatController) Getuserphonenumber() {
 // @Success 200 {object} models.WxLoginResp
 // @router /wxpay/notify [post]
 func (this *WechatCommonController) WxpayNotify() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
 	body := this.Ctx.Input.RequestBody
-	utils.FileLog.Info("wechat notify:" + string(body))
+	//utils.FileLog.Info("wechat notify:" + string(body))
 	item := new(models.CygxShanghaiCompanyLog)
 	item.CreateTime = time.Now()
 	//item.Body = jsonCompany
 	item.Result = string(body)
-
-	fmt.Println(item.Result)
-
 	go models.AddCygxShanghaiCompanyLog(item)
+	itemNotify := services.WxDecodeNotify(body)
+	if itemNotify.OutTradeNo != "" {
+		go services.HandleOrderHandle(itemNotify)
+	}
+	br.Data = itemNotify
+	br.Ret = 200
+	br.Success = true
 }

+ 2 - 0
models/db.go

@@ -193,5 +193,7 @@ func initOrder() {
 		new(order.CygxUserBusinessCard), //用户上传名片
 		new(order.CygxOrder),            //订单表
 		new(order.CygxOrderAction),      //订单操表
+		new(order.CygxOrderUserCard),    //用户持卡表
+		new(order.CygxOrderUserCardLog), //用户持卡日志表
 	)
 }

+ 19 - 1
models/order/order.go

@@ -8,7 +8,8 @@ import (
 )
 
 type WxJsapiApiResp struct {
-	Detail PrepayWithRequestPaymentResponse
+	Detail    PrepayWithRequestPaymentResponse
+	OrderCode string `comment:"订单编号"`
 }
 
 // PrepayWithRequestPaymentResponse 预下单ID,并包含了调起支付的请求参数
@@ -54,9 +55,11 @@ type CygxOrder struct {
 	CompanyName      string    `comment:"公司名称"`
 	RealName         string    `comment:"用户实际名称"`
 	SellerName       string    `comment:"所属销售"`
+	SellerId         int       `comment:"所属销售Id"`
 	CreateTime       time.Time `comment:"创建时间"`
 	ModifyTime       time.Time `comment:"修改时间"`
 	RegisterPlatform int       `comment:"来源 1小程序,2:网页"`
+	OrderType        int       `comment:"订单类型,1:畅读卡订单,2:单场付费订单"`
 }
 
 type CygxOrderResp struct {
@@ -129,6 +132,13 @@ type UserOrderListResp struct {
 	List   []*OrderListResp
 }
 
+type PayEdOrderDetailResp struct {
+	OrderCode   string `comment:"订单编号"`
+	OrderType   int    `comment:"订单类型,1:畅读卡订单,2:单场付费订单"`
+	EndDate     string `comment:"结束日期"`
+	OrderStatus int    `comment:"订单状态,0:已取消、1:待支付、2:已支付、3:已退款"`
+}
+
 // 添加
 func AddCygxOrder(item *CygxOrder) (err error) {
 	o, err := orm.NewOrm().Begin()
@@ -204,6 +214,14 @@ func GetCygxOrderList(condition string, pars []interface{}, startSize, pageSize
 	return
 }
 
+// 根据订单编号获取订单详情
+func GetCygxOrderDetailByOrderCode(orderCode string) (item *CygxOrder, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_order WHERE order_code = ? `
+	err = o.Raw(sql, orderCode).QueryRow(&item)
+	return
+}
+
 // 获取数量
 func GetCygxOrderCount(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrm()

+ 153 - 0
models/order/order_user_card.go

@@ -0,0 +1,153 @@
+package order
+
+import (
+	"fmt"
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// 用户持卡表 CygxOrderUserCard 结构体对应 cygx_order_user_card 数据表
+type CygxOrderUserCard struct {
+	UserCardId       int       `orm:"column(user_card_id);pk";comment:"订单id"`
+	OrderCode        string    `comment:"订单编号"`
+	UserId           int       `comment:"用户ID"`
+	Mobile           string    `comment:"手机号"`
+	Email            string    `comment:"邮箱"`
+	CompanyId        int       `comment:"公司ID"`
+	CompanyName      string    `comment:"公司名称"`
+	RealName         string    `comment:"用户实际名称"`
+	SellerName       string    `comment:"所属销售"`
+	CreateTime       time.Time `comment:"创建时间"`
+	ModifyTime       time.Time `comment:"修改时间"`
+	RegisterPlatform int       `comment:"来源"`
+	CardType         string    `comment:"会员卡类型"`
+	StartDate        time.Time `comment:"开始时间"`
+	EndDate          time.Time `comment:"结束时间"`
+	IsSuspend        int       `comment:"是否暂停"`
+}
+
+// 用户持卡日志表 CygxOrderUserCardLog 结构体对应 cygx_order_user_card_log 数据表
+type CygxOrderUserCardLog struct {
+	UserCardId       int       `orm:"column(user_card_log_id);pk";comment:"订单id"`
+	OrderCode        string    `comment:"订单编号"`
+	UserId           int       `comment:"用户ID"`
+	Mobile           string    `comment:"手机号"`
+	Email            string    `comment:"邮箱"`
+	CompanyId        int       `comment:"公司ID"`
+	CompanyName      string    `comment:"公司名称"`
+	RealName         string    `comment:"用户实际名称"`
+	SellerName       string    `comment:"所属销售"`
+	CreateTime       time.Time `comment:"创建时间"`
+	ModifyTime       time.Time `comment:"修改时间"`
+	RegisterPlatform int       `comment:"来源"`
+	CardType         string    `comment:"会员卡类型"`
+	StartDate        time.Time `comment:"开始时间"`
+	EndDate          time.Time `comment:"结束时间"`
+	IsSuspend        int       `comment:"是否暂停"`
+}
+
+// 添加
+func AddCygxOrderUserCard(item *CygxOrderUserCard, itemOrder *CygxOrder) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		fmt.Println(err)
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
+	itemOrderAction := new(CygxOrderAction)
+
+	itemOrderAction.Action = "微信小程序已支付"
+	itemOrderAction.OrderStatus = 2
+	itemOrderAction.OrderStatusText = "已支付"
+	itemOrderAction.OrderCode = item.OrderCode
+	itemOrderAction.UserId = item.UserId
+	itemOrderAction.Mobile = item.Mobile
+	itemOrderAction.Email = item.Email
+	itemOrderAction.CompanyId = item.CompanyId
+	itemOrderAction.CompanyName = item.CompanyName
+	itemOrderAction.RealName = item.RealName
+	itemOrderAction.SellerName = item.SellerName
+	itemOrderAction.CreateTime = time.Now()
+	itemOrderAction.ModifyTime = time.Now()
+	itemOrderAction.RegisterPlatform = item.RegisterPlatform
+
+	updateParams := make(map[string]interface{})
+	updateParams["PayTime"] = itemOrder.PayTime
+	updateParams["PayMoney"] = itemOrder.PayMoney
+	updateParams["OrderStatus"] = itemOrder.OrderStatus
+	updateParams["OutTradeCode"] = itemOrder.OutTradeCode
+	updateParams["ModifyTime"] = item.ModifyTime
+	updateParams["PaymentType"] = 1
+	ptrStructOrTableName := "cygx_order"
+	whereParam := map[string]interface{}{"order_code": itemOrder.OrderCode}
+	qs := o.QueryTable(ptrStructOrTableName)
+	for expr, exprV := range whereParam {
+		qs = qs.Filter(expr, exprV)
+	}
+	_, err = qs.Update(updateParams) // 修改订单状态
+	if err != nil {
+		return
+	}
+
+	_, err = o.Insert(itemOrderAction) // 写入订单操作信息
+	if err != nil {
+		return
+	}
+
+	sql := ` DELETE FROM cygx_order_user_card  WHERE mobile=? ` // 删除原有的持卡信息
+	_, err = o.Raw(sql, item.Mobile).Exec()
+	if err != nil {
+		return
+	}
+
+	itemLog := new(CygxOrderUserCardLog)
+	itemLog.OrderCode = item.OrderCode
+	itemLog.UserId = item.UserId
+	itemLog.Mobile = item.Mobile
+	itemLog.Email = item.Email
+	itemLog.CompanyId = item.CompanyId
+	itemLog.CompanyName = item.CompanyName
+	itemLog.RealName = item.RealName
+	itemLog.SellerName = item.SellerName
+	itemLog.CreateTime = time.Now()
+	itemLog.ModifyTime = time.Now()
+	itemLog.RegisterPlatform = item.RegisterPlatform
+	itemLog.CardType = item.CardType
+	itemLog.StartDate = item.StartDate
+	itemLog.EndDate = item.EndDate
+	itemLog.IsSuspend = item.IsSuspend
+
+	_, err = o.Insert(item) //写入用户持卡表
+	if err != nil {
+		return
+	}
+
+	_, err = o.Insert(itemLog) // 写入用户持卡日志表
+	if err != nil {
+		return
+	}
+	return
+}
+
+// 根据订单编号获取用户持卡详情
+func GetCygxOrderUserCardDetailByOrderCode(orderCode string) (item *CygxOrderUserCard, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_order_user_card WHERE order_code = ? `
+	err = o.Raw(sql, orderCode).QueryRow(&item)
+	return
+}
+
+// 获取数量
+func GetCygxOrderUserCardCount(condition string, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	sqlCount := ` SELECT COUNT(1) AS  count  FROM cygx_order_user_card WHERE   1= 1  ` + condition
+	err = o.Raw(sqlCount, pars).QueryRow(&count)
+	return
+}

+ 1 - 0
models/seller.go

@@ -80,6 +80,7 @@ func GetSelleridWhichGroup(companyId, productId int) (adminId string, err error)
 func GetRaiSellerByCompanyId(companyId int) (item *AdminItem, err error) {
 	o := orm.NewOrmUsingDB("weekly_report")
 	sql := ` SELECT
+     		b.admin_id,
 			b.real_name,
 			b.mobile 
 		FROM

+ 9 - 0
routers/commentsRouter.go

@@ -322,6 +322,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:OrderController"] = append(beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:OrderController"],
+        beego.ControllerComments{
+            Method: "OrderDetail",
+            Router: `/orderPay/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:OrderController"] = append(beego.GlobalControllerRouter["hongze/hongze_mfyx/controllers:OrderController"],
         beego.ControllerComments{
             Method: "UserOrderList",

+ 8 - 0
services/article.go

@@ -581,11 +581,19 @@ func GetArticleDetailUserPower(user *models.WxUserItem, articleInfo *models.Arti
 	companyId := user.CompanyId
 	//判断用户是否开通了个人研选权限
 	mfyxUserPermissionTotal := GetMfyxUserPermissionTotal(userId)
+
 	if mfyxUserPermissionTotal == 1 {
 		havePower = true
 		return
 	}
 
+	//用户是否持有有效卡片
+	userCardTotal := GetCygxOrderUserCardTotal(user.Mobile)
+	if userCardTotal == 1 {
+		havePower = true
+		return
+	}
+
 	//是否是权益客户
 	raiCount, e := models.GetCompanyProductCount(companyId, utils.COMPANY_PRODUCT_RAI_ID)
 	if e != nil {

+ 101 - 1
services/order.go

@@ -77,7 +77,7 @@ func GetHaverEquallyOrderByUser10Min(userId, goodsId int) (orderCode string) {
 	}()
 	var condition string
 	var pars []interface{}
-	endTime := time.Now().Add(-15 * time.Minute)
+	endTime := time.Now().Add(-10 * time.Minute)
 	condition = ` AND  user_id = ? AND  goods_id = ? AND create_time > ?  ORDER BY order_id DESC  `
 	pars = append(pars, userId, goodsId, endTime)
 	orderList, e := order.GetCygxOrderList(condition, pars, 0, 1)
@@ -94,3 +94,103 @@ func GetHaverEquallyOrderByUser10Min(userId, goodsId int) (orderCode string) {
 	}
 	return
 }
+
+// 获取用户十分钟之内是否有相同的订单信息
+func GetHaverEquallyOrderByUser10MinByActivty(userId, sourceId int) (orderCode string, seconds int) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("获取用户十分钟之内是否有相同的订单信息失败 GetHaverEquallyOrderByUser10Min, err:", err.Error()), 2)
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	endTime := time.Now().Add(-10 * time.Minute)
+	condition = ` AND source = 'activity' AND  user_id = ? AND  source_id = ? AND create_time > ?  ORDER BY order_id DESC  `
+	pars = append(pars, userId, sourceId, endTime)
+	orderList, e := order.GetCygxOrderList(condition, pars, 0, 1)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxOrderList, Err: " + e.Error())
+		return
+	}
+	if len(orderList) == 0 {
+		return
+	} else {
+		for _, v := range orderList {
+			orderCode = v.OrderCode
+			duration := time.Now().Sub(v.CreateTime)
+			// 将时间差转换为秒数
+			seconds = 600 - int(duration.Seconds())
+		}
+	}
+	return
+}
+
+// 处理订单回调
+func HandleOrderHandle(itemCallback *WechatPayCallback) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("处理订单回调信息失败 HandleOrderHandle, err:", err.Error()), 2)
+		}
+	}()
+	outTradeNo := itemCallback.OutTradeNo
+	orderDetail, e := order.GetCygxOrderDetailByOrderCode(outTradeNo)
+	if e != nil {
+		err = errors.New("GetCygxOrderDetailByOrderCode, Err: " + e.Error())
+		return
+	}
+	//修改过状态的不再二次处理
+	if orderDetail.OrderStatus == 2 {
+		return
+	}
+	itemOrder := new(order.CygxOrder)
+	itemOrder.OrderCode = itemCallback.OutTradeNo
+	itemOrder.PayTime = itemCallback.SuccessTime
+	//fmt.Println(itemCallback.Amount.PayerTotal / 100)
+	itemOrder.PayMoney = float64(float64(itemCallback.Amount.PayerTotal) / 100) // 金额分转换处理
+	itemOrder.OrderStatus = 2
+	itemOrder.OutTradeCode = itemCallback.TransactionID
+	fmt.Println("itemOrder.PayMoney", itemOrder.PayMoney)
+	//文章处理逻辑
+	if orderDetail.Source == utils.CYGX_OBJ_ARTICLE {
+
+		itemUserCard := new(order.CygxOrderUserCard)
+		itemUserCard.OrderCode = orderDetail.OrderCode
+		itemUserCard.UserId = orderDetail.UserId
+		itemUserCard.Mobile = orderDetail.Mobile
+		itemUserCard.Email = orderDetail.Email
+		itemUserCard.CompanyId = orderDetail.CompanyId
+		itemUserCard.CompanyName = orderDetail.CompanyName
+		itemUserCard.RealName = orderDetail.RealName
+		itemUserCard.SellerName = orderDetail.SellerName
+		itemUserCard.CreateTime = time.Now()
+		itemUserCard.ModifyTime = time.Now()
+		itemUserCard.RegisterPlatform = orderDetail.RegisterPlatform
+
+		if orderDetail.GoodsId == 1 {
+			itemUserCard.StartDate = itemOrder.PayTime
+			itemUserCard.EndDate = itemOrder.PayTime.AddDate(0, 0, 1)
+			itemUserCard.CardType = "日卡"
+		} else {
+			now := time.Now()
+			itemUserCard.StartDate = time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, time.Local)
+			itemUserCard.EndDate = itemUserCard.StartDate.AddDate(0, 1, 0)
+			itemUserCard.CardType = "月卡"
+		}
+		e = order.AddCygxOrderUserCard(itemUserCard, itemOrder)
+		if e != nil {
+			err = errors.New("AddCygxOrderUserCard, Err: " + e.Error())
+			return
+		}
+	} else if orderDetail.Source == utils.CYGX_OBJ_ACTIVITY {
+
+	}
+	fmt.Println(orderDetail.Source)
+	//var condition string
+	//var pars []interface{}
+
+	return
+}

+ 2 - 1
services/user_permission.go

@@ -195,7 +195,7 @@ func GetUserDetailPermissionCode(userId, companyId int) (permission int, err err
 }
 
 // 获取权益销售姓名
-func GetSellerName(user *models.WxUserItem) (sellerName string) {
+func GetSellerName(user *models.WxUserItem) (sellerName string, sellerId int) {
 	var err error
 	defer func() {
 		if err != nil {
@@ -224,6 +224,7 @@ func GetSellerName(user *models.WxUserItem) (sellerName string) {
 		return
 	}
 	sellerName = sealldetail.RealName
+	sellerId = sealldetail.AdminId
 	return
 
 }

+ 24 - 1
services/user_yanxuan_permission.go

@@ -4,7 +4,9 @@ import (
 	"errors"
 	"fmt"
 	"hongze/hongze_mfyx/models"
+	"hongze/hongze_mfyx/models/order"
 	"hongze/hongze_mfyx/utils"
+	"time"
 )
 
 // 判断用户是否开通了个人研选权限
@@ -43,7 +45,6 @@ func GetUserRaiPermissionYanXuanInfo(user *models.WxUserItem) (hasPermission int
 		hasPermission = 3
 	}
 
-	return
 	//判断用户是否开通了个人研选权限
 	mfyxUserPermissionTotal := GetMfyxUserPermissionTotal(user.UserId)
 	if mfyxUserPermissionTotal == 1 {
@@ -71,3 +72,25 @@ func GetUserRaiPermissionYanXuanInfo(user *models.WxUserItem) (hasPermission int
 	}
 	return
 }
+
+// 判断用户是否持有阅读卡
+func GetCygxOrderUserCardTotal(mobile string) (total int) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("判断用户是否开通了个人研选权限失败 GetCygxOrderUserCardTotal mobile", mobile, ",err:", err.Error()), 2)
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	condition += ` AND mobile  =   ?  AND is_suspend  = 0  AND  start_date < ? AND  end_date > ? `
+	pars = append(pars, mobile, time.Now(), time.Now())
+
+	total, e := order.GetCygxOrderUserCardCount(condition, pars)
+	if e != nil {
+		err = errors.New("GetCygxUserYanxuanPermissionCountByUserId, Err: " + e.Error())
+		return
+	}
+	return
+}

+ 58 - 6
services/wx_pay.go

@@ -2,6 +2,7 @@ package services
 
 import (
 	"context"
+	"encoding/json"
 	"errors"
 	"fmt"
 	"github.com/wechatpay-apiv3/wechatpay-go/core"
@@ -12,6 +13,7 @@ import (
 	"hongze/hongze_mfyx/models/order"
 	"hongze/hongze_mfyx/utils"
 	"log"
+	"time"
 )
 
 const (
@@ -21,11 +23,7 @@ const (
 	MchAPIv3Key                = "W1tbnzQrzQ7yRRNuQCIHjis8dgdasKVX"
 )
 
-//func init() {
-//	ExampleJsapiApiServicePrepay()
-//}
-
-// 获取加解密处理
+// 微信商户建立连接
 func getWechatClient() (context.Context, *core.Client, error) {
 	// 使用 utils 提供的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
 	mchPrivateKey, err := payUtils.LoadPrivateKeyWithPath(MchPKFileName)
@@ -84,7 +82,6 @@ func ExampleJsapiApiServicePrepay(orderDetail *order.CygxOrder, unionId string)
 			},
 		},
 	)
-
 	JsapiApiResp.PrepayId = *resp.PrepayId
 	JsapiApiResp.Appid = *resp.Appid
 	JsapiApiResp.TimeStamp = *resp.TimeStamp
@@ -94,3 +91,58 @@ func ExampleJsapiApiServicePrepay(orderDetail *order.CygxOrder, unionId string)
 	JsapiApiResp.PaySign = *resp.PaySign
 	return
 }
+
+type WechatPayCallback struct {
+	MchID          string    `json:"mchid"`
+	AppID          string    `json:"appid"`
+	OutTradeNo     string    `json:"out_trade_no"`
+	TransactionID  string    `json:"transaction_id"`
+	TradeType      string    `json:"trade_type"`
+	TradeState     string    `json:"trade_state"`
+	TradeStateDesc string    `json:"trade_state_desc"`
+	BankType       string    `json:"bank_type"`
+	Attach         string    `json:"attach"`
+	SuccessTime    time.Time `json:"success_time"`
+	Payer          struct {
+		OpenID string `json:"openid"`
+	} `json:"payer"`
+	Amount struct {
+		Total         int    `json:"total"`
+		PayerTotal    int    `json:"payer_total"`
+		Currency      string `json:"currency"`
+		PayerCurrency string `json:"payer_currency"`
+	} `json:"amount"`
+}
+
+// 微信支付回调内容解密
+func WxDecodeNotify(body []byte) (wechatPayCallback *WechatPayCallback) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg(fmt.Sprint("微信支付回调内容解密失败 WxDecodeNotify, err:", err.Error()), 2)
+		}
+	}()
+
+	var prepaymap map[string]interface{}
+	_ = json.Unmarshal(body, &prepaymap)
+
+	var prepaymap2 = prepaymap["resource"].(map[string]interface{})
+	nonce := prepaymap2["nonce"].(string)
+	associatedData := prepaymap2["associated_data"].(string)
+	ciphertext := prepaymap2["ciphertext"].(string)
+
+	tx, e := payUtils.DecryptAES256GCM(MchAPIv3Key, associatedData, nonce, ciphertext)
+	if e != nil {
+		log.Println(err)
+		return
+	}
+	if e != nil {
+		err = errors.New("DecryptAES256GCM, Err: " + e.Error())
+		return
+	}
+	var datamap *WechatPayCallback
+	_ = json.Unmarshal([]byte(tx), &datamap)
+	wechatPayCallback = datamap
+	return
+}