李哲 4 years ago
parent
commit
ee04b642b0

+ 66 - 20
api/integral.api

@@ -1,17 +1,34 @@
 syntax = "v1"
-
-type request {
+//查询当月积分明细入参
+type DetailedReq {
 	// TODO: add members here and delete this comment
+	UserId   string `form:"userId"`
+	AppId    int64  `form:"appId"`
+	EndDate  string `form:"endDate"`
+	Page     int64  `form:"page"`
+	PageSize int64  `form:"pageSize"`
+}
+
+//查询当月积分明细
+type RespList {
+	Code    int64    `form:"code"`
+	Message string   `form:"message"`
+	Count   int64    `form:"count"`
+	Data    []*Point `form:"data"`
+}
+
+type Point {
+	Id             int64  `form:"id"`
 	UserId         string `form:"userId"`
-	AppId          int64  `form:"appId"`
 	PointType      int64  `form:"pointType"`
 	BusinessTypeId int64  `form:"businessTypeId"`
 	BusinessType   string `form:"businessType"`
 	Point          int64  `form:"point"`
+	CreateTime     string `form:"createTime"`
 	EndDate        string `form:"endDate"`
-	Page           int64  `form:"page"`
-	PageSize       int64  `form:"pageSize"`
-	OperationType  bool   `form:"operationType"`
+	AppId          int64  `form:"appId"`
+	Sort           int64  `form:"sort"`
+	Name           string `form:"name"`
 }
 
 type response {
@@ -32,30 +49,59 @@ type expireReq {
 	EndDate string `form:"endDate"`
 }
 
-type consumeReq {
-	UserId         string `form:"userId"`
-	AppId          int64  `form:"appId"`
-	PointType      int64  `form:"pointType"`
-	BusinessTypeId int64  `form:"businessTypeId"`
-	BusinessType   string `form:"businessType"`
-	Point          int64  `form:"point"`
-	EndDate        string `form:"endDate"`
-}
+type (
+	addReq {
+		UserId         string `form:"userId"`
+		AppId          int64  `form:"appId"`
+		PointType      int64  `form:"pointType"`
+		BusinessTypeId int64  `form:"businessTypeId"`
+		BusinessType   string `form:"businessType"`
+		Point          int64  `form:"point"`
+		EndDate        string `form:"endDate"`
+		OperationType  bool   `form:"operationType"`
+	}
 
+	addResp {
+		Code    int64  `form:"code"`
+		Message string `form:"message"`
+	}
+)
+type (
+	ConsumeReq {
+		UserId         string `form:"userId"`
+		AppId          int64  `form:"appId"`
+		PointType      int64  `form:"pointType"`
+		BusinessTypeId int64  `form:"businessTypeId"`
+		BusinessType   string `form:"businessType"`
+		Point          int64  `form:"point"`
+		EndDate        string `form:"endDate"`
+	}
+
+	ConsumeResp {
+		Code    int64  `form:"code"`
+		Message string `form:"message"`
+	}
+)
 type guardReq {
 	EndDate string `form:"endDate"`
 }
-
 service integral-api {
+	//积分余额查询
 	@handler IntegralBalanceCheckHandler // TODO: set handler name and delete this comment
 	get /integralBalanceCheck (checkReq) returns(response)
-	
+	//到期积分查询
 	@handler IntegralExpireCheckHandler // TODO: set handler name and delete this comment
 	get /integralExpireCheck (expireReq) returns(response)
+	//新增积分
+	@handler IntegralHarvestHandler // TODO: set handler name and delete this comment
+	post /integralHarvest (addReq) returns(addResp)
 	//消耗积分
 	@handler IntegralConsumeHandler // TODO: set handler name and delete this comment
-	post /integralConsume (consumeReq) returns(response)
+	post /integralConsume (ConsumeReq) returns(ConsumeResp)
+	//查询某月积分明细
+	@handler IntegralDetailedCheckHandler // TODO: set handler name and delete this comment
+	get /integralDetailedCheck (DetailedReq) returns(RespList)
 	//积分守护
-	@handler IntegralGuardHandler // TODO: set handler name and delete this comment
-	post /integralGuard (guardReq) returns(response)
+    @handler IntegralGuardHandler // TODO: set handler name and delete this comment
+    post /integralGuard (guardReq) returns(response)
 }

+ 29 - 0
api/internal/handler/integraldetailedcheckhandler.go

@@ -0,0 +1,29 @@
+package handler
+
+import (
+	"net/http"
+
+	"points_service/api/internal/logic"
+	"points_service/api/internal/svc"
+	"points_service/api/internal/types"
+
+	"github.com/tal-tech/go-zero/rest/httpx"
+)
+
+func IntegralDetailedCheckHandler(ctx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		var req types.DetailedReq
+		if err := httpx.Parse(r, &req); err != nil {
+			httpx.Error(w, err)
+			return
+		}
+
+		l := logic.NewIntegralDetailedCheckLogic(r.Context(), ctx)
+		resp, err := l.IntegralDetailedCheck(req)
+		if err != nil {
+			httpx.Error(w, err)
+		} else {
+			httpx.OkJson(w, resp)
+		}
+	}
+}

+ 29 - 0
api/internal/handler/integralharvesthandler.go

@@ -0,0 +1,29 @@
+package handler
+
+import (
+	"net/http"
+
+	"points_service/api/internal/logic"
+	"points_service/api/internal/svc"
+	"points_service/api/internal/types"
+
+	"github.com/tal-tech/go-zero/rest/httpx"
+)
+
+func IntegralHarvestHandler(ctx *svc.ServiceContext) http.HandlerFunc {
+	return func(w http.ResponseWriter, r *http.Request) {
+		var req types.AddReq
+		if err := httpx.Parse(r, &req); err != nil {
+			httpx.Error(w, err)
+			return
+		}
+
+		l := logic.NewIntegralHarvestLogic(r.Context(), ctx)
+		resp, err := l.IntegralHarvest(req)
+		if err != nil {
+			httpx.Error(w, err)
+		} else {
+			httpx.OkJson(w, resp)
+		}
+	}
+}

+ 10 - 0
api/internal/handler/routes.go

@@ -22,11 +22,21 @@ func RegisterHandlers(engine *rest.Server, serverCtx *svc.ServiceContext) {
 				Path:    "/integralExpireCheck",
 				Handler: IntegralExpireCheckHandler(serverCtx),
 			},
+			{
+				Method:  http.MethodPost,
+				Path:    "/integralHarvest",
+				Handler: IntegralHarvestHandler(serverCtx),
+			},
 			{
 				Method:  http.MethodPost,
 				Path:    "/integralConsume",
 				Handler: IntegralConsumeHandler(serverCtx),
 			},
+			{
+				Method:  http.MethodGet,
+				Path:    "/integralDetailedCheck",
+				Handler: IntegralDetailedCheckHandler(serverCtx),
+			},
 			{
 				Method:  http.MethodPost,
 				Path:    "/integralGuard",

+ 1 - 1
api/internal/logic/integralbalancechecklogic.go

@@ -23,7 +23,7 @@ func NewIntegralBalanceCheckLogic(ctx context.Context, svcCtx *svc.ServiceContex
 		svcCtx: svcCtx,
 	}
 }
-
+//查询积分余额
 func (l *IntegralBalanceCheckLogic) IntegralBalanceCheck(req types.CheckReq) (*types.Response, error) {
 	// todo: add your logic here and delete this line
 	result := &types.Response{}

+ 7 - 5
api/internal/logic/integralconsumelogic.go

@@ -24,18 +24,20 @@ func NewIntegralConsumeLogic(ctx context.Context, svcCtx *svc.ServiceContext) In
 	}
 }
 
-func (l *IntegralConsumeLogic) IntegralConsume(req types.ConsumeReq) (*types.Response, error) {
+
+//积分消耗
+func (l *IntegralConsumeLogic) IntegralConsume(req types.ConsumeReq) (*types.ConsumeResp, error) {
 	// todo: add your logic here and delete this line
-	result := &types.Response{}
+	result := &types.ConsumeResp{}
 	lsi := l.svcCtx.Integral
 	resp, err := lsi.IntegralConsume(l.ctx, &integral.Req{
 		UserId:         req.UserId,
 		AppId:          req.AppId,
-		PointType:      req.PointType,
-		BusinessTypeId: req.BusinessTypeId,
+		EndDate:        req.EndDate,
 		BusinessType:   req.BusinessType,
+		BusinessTypeId: req.BusinessTypeId,
+		PointType:      req.PointType,
 		Point:          req.Point,
-		EndDate:        req.EndDate,
 	})
 	if err != nil {
 		return nil, err

+ 60 - 0
api/internal/logic/integraldetailedchecklogic.go

@@ -0,0 +1,60 @@
+package logic
+
+import (
+	"context"
+	"points_service/rpc/integral"
+
+	"points_service/api/internal/svc"
+	"points_service/api/internal/types"
+
+	"github.com/tal-tech/go-zero/core/logx"
+)
+
+type IntegralDetailedCheckLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+func NewIntegralDetailedCheckLogic(ctx context.Context, svcCtx *svc.ServiceContext) IntegralDetailedCheckLogic {
+	return IntegralDetailedCheckLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+	}
+}
+
+//当月积分明细
+func (l *IntegralDetailedCheckLogic) IntegralDetailedCheck(req types.DetailedReq) (*types.RespList, error) {
+	// todo: add your logic here and delete this line
+	result := &types.RespList{}
+	lsi := l.svcCtx.Integral
+	resp, err := lsi.IntegralDetailedCheck(l.ctx, &integral.Req{
+		UserId:   req.UserId,
+		AppId:    req.AppId,
+		PageSize: req.PageSize,
+		Page:     req.Page,
+		EndDate:  req.EndDate,
+	})
+	if err != nil {
+		return nil, err
+	}
+	result.Count=resp.Count
+	for _, value := range resp.Data {
+		point:=types.Point{}
+		point.EndDate=value.EndDate
+		point.Sort=value.Sort
+		point.Point= value.Point
+		point.CreateTime=value.CreateTime
+		point.PointType=value.PointType
+		point.BusinessTypeId=value.BusinessTypeId
+		point.BusinessType=value.BusinessType
+		point.Name=value.Name
+		point.UserId=value.UserId
+		point.AppId=value.AppId
+		result.Data=append(result.Data,&point )
+	}
+	result.Code = resp.Code
+	result.Message = resp.Message
+	return result, nil
+}

+ 48 - 0
api/internal/logic/integralharvestlogic.go

@@ -0,0 +1,48 @@
+package logic
+
+import (
+	"context"
+	"points_service/rpc/integral"
+
+	"points_service/api/internal/svc"
+	"points_service/api/internal/types"
+
+	"github.com/tal-tech/go-zero/core/logx"
+)
+
+type IntegralHarvestLogic struct {
+	logx.Logger
+	ctx    context.Context
+	svcCtx *svc.ServiceContext
+}
+
+func NewIntegralHarvestLogic(ctx context.Context, svcCtx *svc.ServiceContext) IntegralHarvestLogic {
+	return IntegralHarvestLogic{
+		Logger: logx.WithContext(ctx),
+		ctx:    ctx,
+		svcCtx: svcCtx,
+	}
+}
+
+//新增积分
+func (l *IntegralHarvestLogic) IntegralHarvest(req types.AddReq) (*types.AddResp, error) {
+	// todo: add your logic here and delete this line
+	result := &types.AddResp{}
+	lsi := l.svcCtx.Integral
+	resp, err := lsi.IntegralHarvest(l.ctx, &integral.Req{
+		UserId:         req.UserId,
+		AppId:          req.AppId,
+		EndDate:        req.EndDate,
+		BusinessType:   req.BusinessType,
+		BusinessTypeId: req.BusinessTypeId,
+		Point:          req.Point,
+		PointType:      req.PointType,
+		OperationType:  req.OperationType,
+	})
+	if err != nil {
+		return nil, err
+	}
+	result.Code = resp.Code
+	result.Message = resp.Message
+	return result, nil
+}

+ 40 - 7
api/internal/types/types.go

@@ -1,17 +1,33 @@
 // Code generated by goctl. DO NOT EDIT.
 package types
 
-type Request struct {
+type DetailedReq struct {
+	UserId   string `form:"userId"`
+	AppId    int64  `form:"appId"`
+	EndDate  string `form:"endDate"`
+	Page     int64  `form:"page"`
+	PageSize int64  `form:"pageSize"`
+}
+
+type RespList struct {
+	Code    int64    `form:"code"`
+	Message string   `form:"message"`
+	Count   int64    `form:"count"`
+	Data    []*Point `form:"data"`
+}
+
+type Point struct {
+	Id             int64  `form:"id"`
 	UserId         string `form:"userId"`
-	AppId          int64  `form:"appId"`
 	PointType      int64  `form:"pointType"`
 	BusinessTypeId int64  `form:"businessTypeId"`
 	BusinessType   string `form:"businessType"`
 	Point          int64  `form:"point"`
+	CreateTime     string `form:"createTime"`
 	EndDate        string `form:"endDate"`
-	Page           int64  `form:"page"`
-	PageSize       int64  `form:"pageSize"`
-	OperationType  bool   `form:"operationType"`
+	AppId          int64  `form:"appId"`
+	Sort           int64  `form:"sort"`
+	Name           string `form:"name"`
 }
 
 type Response struct {
@@ -31,6 +47,21 @@ type ExpireReq struct {
 	EndDate string `form:"endDate"`
 }
 
+type AddReq struct {
+	UserId         string `form:"userId"`
+	AppId          int64  `form:"appId"`
+	PointType      int64  `form:"pointType"`
+	BusinessTypeId int64  `form:"businessTypeId"`
+	BusinessType   string `form:"businessType"`
+	Point          int64  `form:"point"`
+	EndDate        string `form:"endDate"`
+	OperationType  bool   `form:"operationType"`
+}
+
+type AddResp struct {
+	Code    int64  `form:"code"`
+	Message string `form:"message"`
+}
 type ConsumeReq struct {
 	UserId         string `form:"userId"`
 	AppId          int64  `form:"appId"`
@@ -41,6 +72,8 @@ type ConsumeReq struct {
 	EndDate        string `form:"endDate"`
 }
 
-type GuardReq struct {
-	EndDate string `form:"endDate"`
+
+type ConsumeResp struct {
+	Code    int64  `form:"code"`
+	Message string `form:"message"`
 }

+ 25 - 24
service/integralService.go

@@ -20,21 +20,19 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
 	flow.PointType = data.PointType
 	flow.Point = data.Point
 	flow.CreateTime = time.Now().Format("2006-01-02 15:04:05")
-	flow.EndDate = data.EndDate
 	flow.AppId = data.AppId
 	flow.Sort = entity.AddCode
 	var err error
 	var numb = int64(0)
 	numb, err = orm.Table("integral_flow").Insert(flow)
 	if err != nil && numb == 0 {
-		log.Print("新增流水失败")
+		log.Print("新增流水失败:", err)
 		return entity.ErrorCode, "新增流水失败"
 	}
 	//结存修改
 	solde := entity.Solde{}
 	solde.AppId = data.AppId
 	solde.UserId = data.UserId
-	solde.EndDate = data.EndDate
 	if data.OperationType {
 		//永久积分
 		//先查看是否有EndDate的积分
@@ -44,7 +42,7 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
 			soldelist[0].PerManEntPoints += data.Point
 			numb, err = orm.Table("integral_solde").ID(soldelist[0].Id).Cols("perManEntPoints").Update(soldelist[0])
 			if err != nil && numb == 0 {
-				log.Print("修改时效积分失败")
+				log.Print("修改时效积分失败:", err)
 				return entity.ErrorCode, "修改时效积分失败"
 			}
 		} else {
@@ -57,6 +55,7 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
 		}
 
 	} else {
+		solde.EndDate = data.EndDate
 		//先查看是否有EndDate的积分
 		soldelist := []entity.Solde{}
 		err = orm.Table("integral_solde").Where("appId=? and  userId=? and endDate=? and ( perManEntPoints = 0 AND timePoints != 0) or (perManEntPoints = 0 AND timePoints = 0 ) ", data.AppId, data.UserId, data.EndDate).Find(&soldelist)
@@ -64,14 +63,14 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
 			soldelist[0].TimePoints += data.Point
 			numb, err = orm.Table("integral_solde").ID(soldelist[0].Id).Cols("timePoints").Update(soldelist[0])
 			if err != nil && numb == 0 {
-				log.Print("修改时效积分失败")
+				log.Print("修改时效积分失败:", err)
 				return entity.ErrorCode, "修改时效积分失败"
 			}
 		} else {
 			solde.TimePoints = data.Point
 			numb, err = orm.Table("integral_solde").Insert(&solde)
 			if err != nil && numb == 0 {
-				log.Print("新增时效积分失败")
+				log.Print("新增时效积分失败:", err)
 				return entity.ErrorCode, "新增时效积分失败"
 			}
 		}
@@ -87,7 +86,7 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
 		balance.CountPoints = data.Point
 		numb, err = entity.Engine.Table("integral_balance").Insert(&balance)
 		if err != nil && numb == 0 {
-			log.Print("新增余额失败")
+			log.Print("新增余额失败:", err)
 			return entity.ErrorCode, "新增余额失败"
 		}
 	} else {
@@ -95,7 +94,7 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
 		balanceList[0].CountPoints = balanceList[0].CountPoints + data.Point
 		numb, err = entity.Engine.Table("integral_balance").ID(balanceList[0].Id).Cols("countPoints").Update(balanceList[0])
 		if err != nil && numb == 0 {
-			log.Print("余额新增失败")
+			log.Print("余额新增失败:", err)
 			return entity.ErrorCode, "余额新增失败"
 		}
 	}
@@ -147,7 +146,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
 					Cols("perManEntPoints").
 					Update(solde)
 				if err != nil && af == 0 {
-					log.Print("消耗永久积分失败")
+					log.Print("消耗永久积分失败:", err)
 					orm.Rollback()
 					return entity.ErrorCode, "消耗永久积分失败"
 				}
@@ -163,7 +162,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
 					Cols("timePoints").
 					Update(solde)
 				if err != nil && af == 0 {
-					log.Print("消耗时效积分失败")
+					log.Print("消耗时效积分失败:", err)
 					orm.Rollback()
 					return entity.ErrorCode, "消耗时效积分失败"
 				}
@@ -177,7 +176,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
 				Cols("timePoints").
 				Update(solde)
 			if err != nil && af == 0 {
-				log.Print("消耗时效积分失败")
+				log.Print("消耗时效积分失败:", err)
 				orm.Rollback()
 				return entity.ErrorCode, "消耗时效积分失败"
 			}
@@ -192,7 +191,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
 		Cols("countPoints").
 		Update(balance)
 	if err != nil && af == 0 {
-		log.Print("余额扣除失败")
+		log.Print("余额扣除失败:", err)
 		orm.Rollback()
 		return entity.ErrorCode, "余额扣除失败"
 	}
@@ -466,26 +465,28 @@ func (service *IntegralService) IntegralBalanceCheckService(userId string, appId
 func (service *IntegralService) IntegralDetailedCheck(data entity.FlowJSON) ([]*integral.Point, int64) {
 	orm := entity.Engine
 
-	var  flowList []*entity.FlowReq
+	var flowList []*entity.FlowReq
 	numb, err := orm.Table("integral_flow").Alias("flow").
 		Select("flow.*,pt.name").
 		Join("left", "point_type pt", "flow.pointType=pt.code").
 		Where("flow.userId = ? AND flow.appId = ? AND DATE_FORMAT(flow.createTime,'%Y-%m')=? ", data.UserId, data.AppId, data.EndDate).
 		Desc("flow.createTime").
-		Limit(int(data.PageSize), (int(data.Page - 1))*int(data.PageSize)).
+		Limit(int(data.PageSize), (int(data.Page-1))*int(data.PageSize)).
 		FindAndCount(&flowList)
 	var flowReq []*integral.Point
 	for _, value := range flowList {
-		point:=integral.Point{}
-		point.EndDate=value.EndDate
-		point.Sort=value.Sort
-		point.Point= value.Point
-		point.CreateTime=value.CreateTime
-		point.PointType=value.PointType
-		point.BusinessTypeId=value.BusinessTypeId
-		point.BusinessType=value.BusinessType
-		point.Name=value.Name
-		flowReq=append(flowReq,&point )
+		point := integral.Point{}
+		point.EndDate = value.EndDate
+		point.Sort = value.Sort
+		point.Point = value.Point
+		point.CreateTime = value.CreateTime
+		point.PointType = value.PointType
+		point.BusinessTypeId = value.BusinessTypeId
+		point.BusinessType = value.BusinessType
+		point.Name = value.Name
+		point.UserId = value.UserId
+		point.AppId = value.AppId
+		flowReq = append(flowReq, &point)
 	}
 	fmt.Println(flowList)
 	if err != nil {