k.zhang 3 years ago
parent
commit
5b00589713

+ 8 - 0
.idea/duoduo-lhf.iml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 6 - 0
.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/duoduo-lhf.iml" filepath="$PROJECT_DIR$/.idea/duoduo-lhf.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 53 - 0
.idea/watcherTasks.xml

@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectTasksOptions">
+    <TaskOptions isEnabled="true">
+      <option name="arguments" value="fmt $FilePath$" />
+      <option name="checkSyntaxErrors" value="true" />
+      <option name="description" />
+      <option name="exitCodeBehavior" value="ERROR" />
+      <option name="fileExtension" value="go" />
+      <option name="immediateSync" value="false" />
+      <option name="name" value="go fmt" />
+      <option name="output" value="$FilePath$" />
+      <option name="outputFilters">
+        <array />
+      </option>
+      <option name="outputFromStdout" value="false" />
+      <option name="program" value="$GoExecPath$" />
+      <option name="runOnExternalChanges" value="false" />
+      <option name="scopeName" value="Project Files" />
+      <option name="trackOnlyRoot" value="true" />
+      <option name="workingDir" value="$ProjectFileDir$" />
+      <envs>
+        <env name="GOROOT" value="$GOROOT$" />
+        <env name="GOPATH" value="$GOPATH$" />
+        <env name="PATH" value="$GoBinDirs$" />
+      </envs>
+    </TaskOptions>
+    <TaskOptions isEnabled="true">
+      <option name="arguments" value="-w $FilePath$" />
+      <option name="checkSyntaxErrors" value="true" />
+      <option name="description" />
+      <option name="exitCodeBehavior" value="ERROR" />
+      <option name="fileExtension" value="go" />
+      <option name="immediateSync" value="false" />
+      <option name="name" value="goimports" />
+      <option name="output" value="$FilePath$" />
+      <option name="outputFilters">
+        <array />
+      </option>
+      <option name="outputFromStdout" value="false" />
+      <option name="program" value="goimports.exe" />
+      <option name="runOnExternalChanges" value="false" />
+      <option name="scopeName" value="Project Files" />
+      <option name="trackOnlyRoot" value="true" />
+      <option name="workingDir" value="$ProjectFileDir$" />
+      <envs>
+        <env name="GOROOT" value="$GOROOT$" />
+        <env name="GOPATH" value="$GOPATH$" />
+        <env name="PATH" value="$GoBinDirs$" />
+      </envs>
+    </TaskOptions>
+  </component>
+</project>

+ 54 - 0
apis/user/admin.order.amount.go

@@ -0,0 +1,54 @@
+package user
+
+import (
+	"duoduo/models/mysql"
+	"duoduo/models/user"
+	"duoduo/tools/app"
+
+	"github.com/shopspring/decimal"
+
+	"github.com/gin-gonic/gin"
+)
+
+func AdminOrderAmount(c *gin.Context) {
+	var inData user.AdminOrderAmountRequest
+	var outData user.AdminOrderAmountResponse
+	var user mysql.User
+	var order mysql.Order
+	err := c.ShouldBindJSON(&inData)
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	userNum, err := user.GetTotal()
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+	orderNum, err := order.GetTotal()
+	if err != nil {
+		app.Error(c, 400, err, err.Error())
+		return
+	}
+
+	amount, err := order.GetAdminAmount()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+
+	outData.PlatformAmount, err = order.GetPlatform()
+	if err != nil {
+		app.Error(c, 500, err, err.Error())
+		return
+	}
+	outData.AdminAmount = decimal.NewFromInt(amount)
+	outData.AdminAmount = outData.AdminAmount.Mul(decimal.NewFromFloat(0.0015)).Round(2)
+
+	outData.OrderNum = orderNum
+	outData.UserNum = userNum
+
+	app.OK(c, outData, app.Success)
+
+}

+ 1 - 0
apis/user/base.go

@@ -12,5 +12,6 @@ func InitUserRouter(engine *gin.RouterGroup) {
 		v1.POST("/user/open.id/get", OpenIdGet)  //根据openId获取信息
 		v1.POST("/user/update/name", UpdateName) //更新名字
 		v1.POST("/user/list", UserList)          //用户列表
+		v1.POST("/admin/data", AdminOrderAmount)
 	}
 }

+ 11 - 0
apis/user/user.order.get.go

@@ -5,7 +5,9 @@ import (
 	"duoduo/models/user"
 	"duoduo/tools/app"
 	"fmt"
+
 	"github.com/gin-gonic/gin"
+	"github.com/shopspring/decimal"
 )
 
 func OrderGet(c *gin.Context) {
@@ -47,6 +49,15 @@ func OrderGet(c *gin.Context) {
 			orderInfo.Amount = orderVal[i].Amount1
 		} else if inData.UserStatus == 2 {
 			orderInfo.Amount = orderVal[i].Amount2
+		} else if inData.UserStatus == 3 {
+			orderInfo.Amount = decimal.NewFromInt(orderVal[i].PromotionAmount).Mul(decimal.NewFromFloat(0.0015)).Round(2)
+			if orderVal[i].OpenId == inData.OpenId { //管理员价格 一级代理
+				orderInfo.Amount = orderInfo.Order.Amount.Add(orderInfo.Amount)
+			} else if orderVal[i].OpenId1 == inData.OpenId {
+				orderInfo.Amount = orderInfo.Order.Amount1.Add(orderInfo.Amount)
+			} else if orderVal[i].OpenId2 == inData.OpenId {
+				orderInfo.Amount = orderInfo.Order.Amount2.Add(orderInfo.Amount)
+			}
 		} else {
 			app.Error(c, 500, err, "UserStatus error")
 			return

+ 12 - 12
go.mod

@@ -3,27 +3,27 @@ module duoduo
 go 1.14
 
 require (
-	github.com/Unknwon/goconfig v0.0.0-20200908083735-df7de6a44db8 // indirect
-	github.com/asmcos/requests v0.0.0-20210319030608-c839e8ae4946 // indirect
-	github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
-	github.com/gin-gonic/gin v1.7.1 // indirect
+	github.com/Unknwon/goconfig v0.0.0-20200908083735-df7de6a44db8
+	github.com/asmcos/requests v0.0.0-20210319030608-c839e8ae4946
+	github.com/dgrijalva/jwt-go v3.2.0+incompatible
+	github.com/gin-gonic/gin v1.7.1
 	github.com/go-playground/validator/v10 v10.5.0 // indirect
-	github.com/go-sql-driver/mysql v1.6.0 // indirect
+	github.com/go-sql-driver/mysql v1.6.0
 	github.com/golang/protobuf v1.5.2 // indirect
-	github.com/jinzhu/gorm v1.9.16 // indirect
+	github.com/jinzhu/gorm v1.9.16
 	github.com/json-iterator/go v1.1.11 // indirect
 	github.com/leodido/go-urn v1.2.1 // indirect
 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 	github.com/modern-go/reflect2 v1.0.1 // indirect
-	github.com/olivere/elastic/v7 v7.0.4 // indirect
-	github.com/robfig/cron v1.2.0 // indirect
-	github.com/shopspring/decimal v1.2.0 // indirect
-	github.com/sirupsen/logrus v1.4.2 // indirect
+	github.com/olivere/elastic/v7 v7.0.4
+	github.com/robfig/cron v1.2.0
+	github.com/shopspring/decimal v1.2.0
+	github.com/sirupsen/logrus v1.4.2
 	github.com/ugorji/go v1.2.5 // indirect
-	github.com/unrolled/secure v1.0.9 // indirect
+	github.com/unrolled/secure v1.0.9
 	golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b // indirect
 	golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 // indirect
 	golang.org/x/text v0.3.6 // indirect
-	gopkg.in/sohlich/elogrus.v7 v7.0.0 // indirect
+	gopkg.in/sohlich/elogrus.v7 v7.0.0
 	gopkg.in/yaml.v2 v2.4.0 // indirect
 )

+ 48 - 1
models/mysql/order.go

@@ -3,6 +3,7 @@ package mysql
 import (
 	orm "duoduo/database"
 	"errors"
+
 	"github.com/shopspring/decimal"
 )
 
@@ -70,6 +71,50 @@ func (o *Order) GetNum() int {
 	return count
 }
 
+func (o *Order) GetTotal() (int, error) {
+	var count int
+	tableCount := orm.Eloquent.Table(o.TableName())
+	tableCount.Count(&count)
+	return count, nil
+}
+
+func (o *Order) GetAdminAmount() (int64, error) {
+	var doc Order
+	//var amount int64
+	err := orm.Eloquent.Select("SUM(promotion_amount) as promotion_amount").Where("order_status in (0,1,2,3,5) ").Table(o.TableName()).First(&doc).Error
+
+	if err != nil {
+		return doc.PromotionAmount, err
+	}
+
+	return doc.PromotionAmount, nil
+}
+
+func (o *Order) GetPlatform() (decimal.Decimal, error) {
+	var order Order
+	var order1 Order
+	var order2 Order
+	err := orm.Eloquent.Select("SUM(amount) as amount").Where("order_status in (0,1,2,3,5) ").Table(o.TableName()).First(&order).Error
+
+	if err != nil {
+		return order.Amount, err
+	}
+
+	err = orm.Eloquent.Select("SUM(amount_1) as amount_1").Where("order_status in (0,1,2,3,5) and open_id_1 != '' ").Table(o.TableName()).First(&order1).Error
+
+	if err != nil {
+		return order1.Amount1, err
+	}
+
+	err = orm.Eloquent.Select("SUM(amount_2) as amount_2").Where("order_status in (0,1,2,3,5) and open_id_2 != '' ").Table(o.TableName()).First(&order2).Error
+
+	if err != nil {
+		return order2.Amount2, err
+	}
+
+	return order.Amount.Add(order1.Amount1.Add(order2.Amount2)), nil
+}
+
 func (o *Order) GetAmount() (Wallet, error) {
 	var wallet Wallet
 
@@ -259,6 +304,8 @@ func (o *Order) GetOrderOpenIdList(pageSize int, pageIndex int, status int) ([]O
 		table = table.Where("open_id_1 = ?  ", o.OpenId)
 	} else if status == 2 {
 		table = table.Where("open_id_2 = ?  ", o.OpenId)
+	} else if status == 3 {
+
 	} else {
 		return nil, 0, errors.New("status err")
 	}
@@ -266,7 +313,7 @@ func (o *Order) GetOrderOpenIdList(pageSize int, pageIndex int, status int) ([]O
 	//table = table.Where("open_id = ?  ", o.OpenId)
 
 	var count int
-	if err := table.Select("order_id,promotion_amount,p_id,order_status,order_status_desc,goods_name," +
+	if err := table.Select("open_id,open_id_1,open_id_2,order_id,promotion_amount,p_id,order_status,order_status_desc,goods_name," +
 		"goods_thumbnail_url,order_group_success_time,amount,amount_1,amount_2,order_sn," +
 		"DATE_FORMAT(order_create_time,'%Y-%m-%d %H:%i:%s') as order_create_time,order_amount").Order("id desc").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Error; err != nil {
 		return nil, 0, err

+ 9 - 1
models/mysql/user.go

@@ -46,9 +46,17 @@ func (u *User) GetNum() int {
 
 }
 
+func (u *User) GetTotal() (int, error) {
+	var count int
+	tableCount := orm.Eloquent.Table(u.TableName())
+	tableCount.Count(&count)
+	return count, nil
+
+}
+
 func (u *User) Get() (UserName, error) {
 	var doc UserName
-	err := orm.Eloquent.Select("id,pid,nick_name,avatar_url,open_id_1,open_id_2").Where("open_id = ? ", u.OpenID).Table(u.TableName()).First(&doc).Error
+	err := orm.Eloquent.Select("id,pid,nick_name,avatar_url,open_id_1,open_id_2,admin").Where("open_id = ? ", u.OpenID).Table(u.TableName()).First(&doc).Error
 	if err != nil {
 		return doc, err
 	}

+ 16 - 0
models/user/admin.order.amount.go

@@ -0,0 +1,16 @@
+package user
+
+import "github.com/shopspring/decimal"
+
+type AdminOrderAmountRequest struct {
+	OpenId string `json:"openId"`
+}
+
+type AdminOrderAmountResponse struct {
+	UserNum           int             `json:"userNum"`
+	OrderNum          int             `json:"orderNum"`
+	AdminAmount       decimal.Decimal `json:"adminAmount"`
+	PlatformAmount    decimal.Decimal `json:"platformAmount"`
+	AdminAmountSel    decimal.Decimal `json:"adminAmountSel"`
+	PlatformAmountSel decimal.Decimal `json:"platformAmountSel"`
+}

+ 1 - 1
models/user/user.order.get.go

@@ -7,7 +7,7 @@ import (
 
 type OrderGetRequest struct {
 	OpenId     string `json:"openId"`
-	UserStatus int    `json:"userStatus"` //0 -本人订单 1-下级订单 2-下下级订单
+	UserStatus int    `json:"userStatus"` //0 -本人订单 1-下级订单 2-下下级订单 3-管理员查看全部订单
 	PageSize   int    `json:"pageSize"`
 	PageIndex  int    `json:"pageIndex"`
 }