Browse Source

no message

xingzai 11 months ago
parent
commit
efae101e3a
5 changed files with 323 additions and 1 deletions
  1. 200 0
      controllers/cygx/order.go
  2. 45 1
      models/cygx/orde.go
  3. 58 0
      models/cygx/order_refund.go
  4. 2 0
      models/db.go
  5. 18 0
      routers/commentsRouter.go

+ 200 - 0
controllers/cygx/order.go

@@ -1,6 +1,7 @@
 package cygx
 
 import (
+	"encoding/json"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"hongze/hz_crm_api/controllers"
 	"hongze/hz_crm_api/models"
@@ -150,3 +151,202 @@ func (this *OrderController) OrderList() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 退款
+// @Description 退款接口
+// @Param	request	body cygx.UserRemarAddReq true "type json string"
+// @Success 200 操作成功
+// @router /order/refund [post]
+func (this *UserController) OrderRefund() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req cygx.CygxOrderRefundReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	orderCode := req.OrderCode
+	remark := req.Remark
+
+	if remark == "" {
+		br.Msg = "请填写退款原因"
+		return
+	}
+	orderDetail, err := cygx.GetCygxOrderDetailByOrderCode(orderCode)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败, Err:" + err.Error()
+		return
+	}
+	if orderDetail.OrderStatus != 2 {
+		br.Msg = "订单状态异常!"
+		br.ErrMsg = "订单状态异常,orderCode:" + orderCode
+		return
+	}
+	item := new(cygx.CygxOrderRefund)
+	item.OrderCode = orderCode
+	item.RefundMoney = orderDetail.OrderMoney
+	item.RefundWay = 1
+	item.Remark = remark
+	item.CreateTime = time.Now()
+	item.RefundTime = time.Now()
+	item.AdminId = sysUser.AdminId
+	item.AdminName = sysUser.RealName
+	err = cygx.AddCygxOrderRefund(item)
+	if err != nil {
+		br.Msg = "新增失败."
+		br.ErrMsg = "新增失败,Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "新增成功"
+}
+
+// @Title 退款记录列表
+// @Description 退款记录列表接口
+// @Param   PageSize   query   int  true       "每页数据条数"
+// @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
+// @Param   StartDate   query   string  false       "开始时间 ,列如2021-03-06 "
+// @Param   EndDate   query   string  false       "结束时间,列如2021-03-06 "
+// @Param   AdminId   query   string  false       "销售ID "
+// @Param   OrderType   query   int  false       "订单类型 1:畅读卡订单,2:单场付费订单"
+// @Param   PaymentProject   query   string  false       "付款项目"
+// @Param   OrderCode   query   string  false       "订单编号"
+// @Param   KeyWord   query   string  false       "搜索关键词"
+// @Success Ret=200 {object} cygx.GetCygxTacticsTimeLineResp
+// @router /order/refund/list [get]
+func (this *OrderController) OrderRefundList() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	resp := new(cygx.UserOrderListResp)
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	orderType, _ := this.GetInt("OrderType", 1)
+	startDate := this.GetString("StartDate")
+	endDate := this.GetString("EndDate")
+	adminId := this.GetString("AdminId")
+	orderCode := this.GetString("OrderCode")
+	keyWord := this.GetString("KeyWord")
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = utils.StartIndex(currentIndex, pageSize)
+	var condition string
+	var pars []interface{}
+	condition += `  AND order_status =   3 `
+	if orderType > 0 { //订单类型 1:畅读卡订单,2:单场付费订单
+		condition += `  AND order_type =   ? `
+		pars = append(pars, orderType)
+	}
+
+	if startDate != "" && endDate != "" { //时间范围
+		condition += ` 	AND create_time  BETWEEN ?   AND  ? `
+		pars = append(pars, startDate, endDate)
+	}
+
+	if adminId != "" { //所属销售筛选
+		condition += ` 	AND seller_id IN (` + adminId + `) `
+	}
+
+	if orderCode != "" { //订单编号
+		orderCode = "%" + orderCode + "%"
+		condition += ` 	AND order_code LIKE ? `
+		pars = append(pars, orderCode)
+	}
+
+	if keyWord != "" { //用户姓名,手机号
+		keyWord = "%" + keyWord + "%"
+		condition += ` 	AND (mobile LIKE ?  OR  real_name LIKE ? ) `
+		pars = append(pars, keyWord, keyWord)
+	}
+
+	total, err := cygx.GetCygxOrderCount(condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	condition += "	ORDER BY order_id  DESC "
+	list, err := cygx.GetCygxOrderList(condition, pars, startSize, pageSize)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+
+	for _, v := range list {
+		item := new(cygx.OrderListResp)
+		item.OrderCode = v.OrderCode
+		item.OrderMoney = v.OrderMoney
+		item.SourceId = v.SourceId
+		item.Source = v.Source
+		item.SourceTitle = v.SourceTitle
+		switch v.Source {
+		case "article": //文章详情
+			item.HttpUrl = utils.CYGX_WEB_URL + "/material/info/" + strconv.Itoa(v.SourceId)
+		case "activity": //活动详情
+			item.HttpUrl = utils.CYGX_WEB_URL + "/activity/detail/" + strconv.Itoa(v.SourceId)
+		}
+		item.OrderStatus = v.OrderStatus
+		if v.OrderStatus == 3 {
+			item.OrderStatusText = "退款成功"
+		} else {
+			item.OrderStatusText = "退款异常"
+		}
+		item.UserId = v.UserId
+		item.RealName = v.RealName
+		item.Mobile = v.Mobile
+		item.Email = v.Email
+		item.CompanyId = v.CompanyId
+		item.CompanyName = v.CompanyName
+		item.SellerName = v.SellerName
+		item.InviteName = "推荐人"
+		item.PaymentProject = v.GoodsName
+		item.RefundTime = v.RefundTime.Format(utils.FormatDateTime)
+		item.RefundRemark = v.RefundRemark
+
+		if v.OrderStatus == 2 {
+			item.PayTime = v.PayTime.Format(utils.FormatDateTime)
+		}
+		if orderType == 1 {
+			item.StartDate = time.Now().Format(utils.FormatDateTime)
+			item.EndDate = time.Now().AddDate(0, 0, 3).Format(utils.FormatDateTime)
+		}
+		item.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
+		resp.List = append(resp.List, item)
+	}
+
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp.Paging = page
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 45 - 1
models/cygx/orde.go

@@ -6,6 +6,39 @@ import (
 	"time"
 )
 
+type CygxOrder struct {
+	OrderId          int       `orm:"column(order_id);pk";comment:"订单id"`
+	OrderCode        string    `comment:"订单编号"`
+	OutTradeCode     string    `comment:"外部交易号"`
+	PaymentType      int       `comment:"支付类型。取值范围:1微信支付,2支付宝支付。"`
+	GoodsName        string    `comment:"商品名称"`
+	GoodsId          int       `comment:"商品ID"`
+	BuyerInvoice     string    `comment:"买家发票信息"`
+	GoodsMoney       float64   `comment:"商品总价"`
+	OrderMoney       float64   `comment:"订单总价"`
+	Point            int       `comment:"订单消耗积分"`
+	PointMoney       float64   `comment:"订单消耗积分抵多少钱"`
+	PayMoney         float64   `comment:"订单实付金额"`
+	RefundMoney      float64   `comment:"订单退款金额"`
+	RefundTime       time.Time `description:"退款时间"`
+	RefundRemark     string    `description:"退款原因说明"`
+	OrderStatus      int       `comment:"订单状态,0:已取消、1:待支付、2:已支付、3:已退款"`
+	PayTime          time.Time `comment:"订单付款时间"`
+	SourceId         int       `comment:"来源ID"`
+	Source           string    `comment:"来源\n报告 :article\n活动 :activity"`
+	SourceTitle      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:"来源 1小程序,2:网页"`
+}
+
 type CygxOrderResp struct {
 	OrderId          int       `orm:"column(order_id);pk";comment:"订单id"`
 	OrderCode        string    `comment:"订单编号"`
@@ -20,6 +53,8 @@ type CygxOrderResp struct {
 	PointMoney       float64   `comment:"订单消耗积分抵多少钱"`
 	PayMoney         float64   `comment:"订单实付金额"`
 	RefundMoney      float64   `comment:"订单退款金额"`
+	RefundTime       time.Time `description:"退款时间"`
+	RefundRemark     string    `description:"退款原因说明"`
 	OrderStatus      int       `comment:"订单状态,0:已取消、1:待支付、2:已支付、3:已退款"`
 	PayTime          time.Time `comment:"订单付款时间"`
 	SourceId         int       `comment:"来源ID"`
@@ -56,6 +91,14 @@ func GetCygxOrderCount(condition string, pars []interface{}) (count int, err err
 	return
 }
 
+// 根据订单编号获取订单详情
+func GetCygxOrderDetailByOrderCode(orderCode string) (item *CygxOrderResp, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_order WHERE order_code = ? `
+	err = o.Raw(sql, orderCode).QueryRow(&item)
+	return
+}
+
 type OrderListResp struct {
 	OrderCode       string  `comment:"订单编号"`
 	UserId          int     `comment:"用户ID"`
@@ -76,7 +119,8 @@ type OrderListResp struct {
 	EndDate         string  `comment:"结束日期"`
 	InviteName      string  `description:"邀请人"`
 	PayTime         string  `comment:"订单付款时间"`
-	RefundTime      string  `comment:"订单付款时间"`
+	RefundTime      string  `comment:"订单退款时间"`
+	RefundRemark    string  `description:"退款原因说明"`
 	PaymentProject  string  `comment:"付款项目"`
 	HttpUrl         string  `description:"跳转地址"`
 }

+ 58 - 0
models/cygx/order_refund.go

@@ -0,0 +1,58 @@
+package cygx
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxOrderRefund struct {
+	//OrderRefundID   uint64    `description:"主键id"`
+	OrderRefundId   int       `orm:"column(order_refund_id);pk";comment:"主键id"`
+	OrderCode       string    `description:"订单编号"`
+	RefundTradeCode string    `description:"退款交易号"`
+	RefundMoney     float64   `description:"退款金额"`
+	RefundWay       int       `description:"退款方式(1:微信商户,2:支付宝商户,3:线下)"`
+	RefundTime      time.Time `description:"退款时间"`
+	Remark          string    `description:"备注"`
+	CreateTime      time.Time `description:"创建时间"`
+	AdminId         int       `description:"管理员ID"`
+	AdminName       string    `description:"管理员姓名"`
+}
+
+type CygxOrderRefundReq struct {
+	OrderCode string `description:"订单编号"`
+	Remark    string `description:"备注"`
+}
+
+// 添加CygxOrderRefund
+func AddCygxOrderRefund(item *CygxOrderRefund) (err error) {
+	to := orm.NewOrmUsingDB("hz_cygx")
+	o, err := to.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+		} else {
+			_ = o.Commit()
+		}
+	}()
+	updateParams := make(map[string]interface{})
+	updateParams["OrderStatus"] = 3
+	updateParams["RefundMoney"] = item.RefundMoney
+	updateParams["RefundRemark"] = item.Remark
+	updateParams["RefundTime"] = time.Now()
+	ptrStructOrTableName := "cygx_order"
+	whereParam := map[string]interface{}{"order_code": item.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(item)
+	return
+}

+ 2 - 0
models/db.go

@@ -472,6 +472,8 @@ func initCygx() {
 		new(cygx.CygxActivitySpecialPermissionPoints),
 		new(cygx.CygxUserYanxuanPermission),
 		new(cygx.CygxUserYanxuanPermissionLog),
+		new(cygx.CygxOrderRefund),
+		new(cygx.CygxOrder),
 	)
 }
 

+ 18 - 0
routers/commentsRouter.go

@@ -2104,6 +2104,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:OrderController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:OrderController"],
+        beego.ControllerComments{
+            Method: "OrderRefundList",
+            Router: `/order/refund/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:ProductInteriorController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:ProductInteriorController"],
         beego.ControllerComments{
             Method: "PvExport",
@@ -2887,6 +2896,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:UserController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:UserController"],
+        beego.ControllerComments{
+            Method: "OrderRefund",
+            Router: `/order/refund`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:UserController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:UserController"],
         beego.ControllerComments{
             Method: "Add",