广告平台(站长下代理使用)
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

645 lines
20 KiB

  1. package svc
  2. import (
  3. "applet/app/e"
  4. "applet/app/enum"
  5. "applet/app/md"
  6. "applet/app/utils"
  7. db "code.fnuoos.com/zhimeng/model.git/src"
  8. "code.fnuoos.com/zhimeng/model.git/src/implement"
  9. model2 "code.fnuoos.com/zhimeng/model.git/src/model"
  10. "fmt"
  11. "github.com/gin-gonic/gin"
  12. "github.com/jinzhu/copier"
  13. "strings"
  14. )
  15. func DataCenterRecordTotal(c *gin.Context, req md.DataCenterTableReq) md.DataCenterTotalData {
  16. appId := GetAppletId(c, req.AppId, req.Platform)
  17. sql := `
  18. SELECT
  19. SUM(exposure_count) as exposure_count,
  20. SUM(click_count) as click_count,
  21. SUM(click_count)/SUM(exposure_count)*100 as click_rate,
  22. SUM(ecpm) as ecpm,
  23. SUM(media_revenue) as media_revenue
  24. FROM generate_wx_ad_data
  25. where %s
  26. `
  27. mediumId := GetAgentMediumId(c)
  28. where := "is_generate_report=1 and uuid=" + c.GetString("mid") + " and medium_id in(" + mediumId + ")"
  29. if req.AppId != "" || req.Platform != "" {
  30. where += " and app_id in(" + appId + ")"
  31. }
  32. if req.AdType != "" {
  33. where += " and ad_slot='" + req.AdType + "'"
  34. }
  35. if req.StartDate != "" {
  36. where += " and date>='" + req.StartDate + "'"
  37. }
  38. if req.EndDate != "" {
  39. where += " and date<='" + req.EndDate + "'"
  40. }
  41. sql = fmt.Sprintf(sql, where)
  42. nativeString, _ := db.QueryNativeString(db.Db, sql)
  43. res := md.DataCenterTotalData{}
  44. for _, v := range nativeString {
  45. res = md.DataCenterTotalData{
  46. Date: "-",
  47. AppName: "-",
  48. PlatformName: "-",
  49. AdvName: "-",
  50. ExposureCount: v["exposure_count"],
  51. MediaRevenue: utils.Float64ToStr(utils.StrToFloat64(v["media_revenue"]) / 100),
  52. Ecpm: utils.Float64ToStr(utils.StrToFloat64(v["ecpm"]) / 100),
  53. ClickRate: utils.GetPrec(v["click_rate"], "2") + "%",
  54. ClickCount: v["click_count"],
  55. }
  56. }
  57. return res
  58. }
  59. func DataCenterRecordList(c *gin.Context, req md.DataCenterRecordReq) md.DataCenterRecordRes {
  60. nativeString, total := comm(c, 1, req)
  61. list := make([]md.DataCenterTotalData, 0)
  62. for _, v := range nativeString {
  63. NewAppletApplicationDb := implement.NewAppletApplicationDb(MasterDb(c))
  64. app, _ := NewAppletApplicationDb.GetAppletApplicationListByAppid(v["app_id"])
  65. platform := ""
  66. name := ""
  67. if app != nil {
  68. name = app.Name
  69. platform = app.Platform
  70. }
  71. NewAppletApplicationAdSpaceListDb := implement.NewAppletApplicationAdSpaceListDb(MasterDb(c))
  72. adData, _ := NewAppletApplicationAdSpaceListDb.GetAppletApplicationAdSpaceListByAdId(v["slot_id"])
  73. adName := enum.AdunitType(v["ad_slot"]).String()
  74. if adData != nil {
  75. adName = adData.Name
  76. }
  77. tmp := md.DataCenterTotalData{
  78. Date: v["date"],
  79. AppName: name,
  80. PlatformName: md.AppletPlatformMap[platform],
  81. AdvName: adName,
  82. ExposureCount: v["exposure_count"],
  83. MediaRevenue: utils.Float64ToStr(utils.StrToFloat64(v["media_revenue"]) / 100),
  84. Ecpm: utils.Float64ToStr(utils.StrToFloat64(v["ecpm"]) / 100),
  85. ClickRate: v["click_rate"] + "%",
  86. ClickCount: v["click_count"],
  87. }
  88. list = append(list, tmp)
  89. }
  90. res := md.DataCenterRecordRes{
  91. List: list,
  92. Total: total,
  93. }
  94. return res
  95. }
  96. func DataCenterRecordOutPut(c *gin.Context, req md.DataCenterRecordOutPutReq) {
  97. var req1 md.DataCenterRecordReq
  98. copier.Copy(&req1, &req)
  99. req.Limit = "10000"
  100. nativeString, _ := comm(c, 0, req1)
  101. appId := make([]string, 0)
  102. adId := make([]string, 0)
  103. for _, v := range nativeString {
  104. appId = append(appId, v["app_id"])
  105. adId = append(adId, v["slot_id"])
  106. }
  107. var app []model2.AppletApplication
  108. appMap := make(map[string]model2.AppletApplication)
  109. MasterDb(c).In("app_id=?", appId).Find(&app)
  110. for _, v := range app {
  111. appMap[v.AppId] = v
  112. }
  113. var ad []model2.AppletApplicationAdSpaceList
  114. adMap := make(map[string]model2.AppletApplicationAdSpaceList)
  115. MasterDb(c).In("ad_id=?", adId).Find(&adMap)
  116. for _, v := range ad {
  117. adMap[v.AdId] = v
  118. }
  119. name := req.StartDate + "~" + req.EndDate + "(第" + req.Page + "页 " + utils.IntToStr(len(nativeString)) + "条)"
  120. // 写入数据
  121. data := map[string]string{
  122. "A1": "日期",
  123. "B1": "应用名称",
  124. "C1": "平台类型",
  125. "D1": "广告位",
  126. "E1": "曝光量",
  127. "F1": "点击量",
  128. "G1": "ECPM",
  129. "H1": "预估收益",
  130. }
  131. for k, v := range nativeString {
  132. i := utils.IntToStr(k + 2)
  133. data["A"+i] = v["date"]
  134. data["B"+i] = appMap[v["app_id"]].Name
  135. data["C"+i] = md.AppletPlatformMap[appMap[v["app_id"]].Platform]
  136. data["D"+i] = adMap[v["slot_id"]].Name
  137. data["E"+i] = v["exposure_count"]
  138. data["F"+i] = v["click_count"]
  139. data["G"+i] = utils.Float64ToStr(utils.StrToFloat64(v["ecpm"]) / 100)
  140. data["H"+i] = utils.Float64ToStr(utils.StrToFloat64(v["media_revenue"]) / 100)
  141. }
  142. file := utils.Output(c, name, data)
  143. filename := name + ".xlsx"
  144. r := map[string]string{
  145. "file": file,
  146. "filename": filename,
  147. }
  148. e.OutSuc(c, r, nil)
  149. return
  150. }
  151. func DataCenterCommissionRecordTotal(c *gin.Context, req md.DataCenterTableReq) md.DataCenterCommissionTotalData {
  152. appId := GetAppletId(c, req.AppId, req.Platform)
  153. sql := `
  154. SELECT
  155. SUM(exposure_count) as exposure_count,
  156. SUM(click_count) as click_count,
  157. SUM(click_count)/SUM(exposure_count)*100 as click_rate,
  158. SUM(ecpm) as ecpm,
  159. SUM(media_revenue) as media_revenue
  160. FROM generate_wx_ad_data
  161. where %s
  162. `
  163. mediumId := GetAgentMediumId(c)
  164. where := "is_generate_report=1 and uuid=" + c.GetString("mid")
  165. if req.AppId != "" || req.Platform != "" {
  166. where += " and app_id in(" + appId + ")"
  167. }
  168. if req.AdType != "" {
  169. where += " and ad_slot='" + req.AdType + "'"
  170. }
  171. if req.StartDate != "" {
  172. where += " and date>='" + req.StartDate + "'"
  173. }
  174. if req.EndDate != "" {
  175. where += " and date<='" + req.EndDate + "'"
  176. }
  177. whereMedium := where + " and medium_id in(" + mediumId + ")"
  178. sql = fmt.Sprintf(sql, whereMedium)
  179. nativeString, _ := db.QueryNativeString(db.Db, sql)
  180. res := md.DataCenterCommissionTotalData{}
  181. for _, v := range nativeString {
  182. res = md.DataCenterCommissionTotalData{
  183. Date: "-",
  184. AppName: "-",
  185. PlatformName: "-",
  186. AdvName: "-",
  187. ExposureCount: v["exposure_count"],
  188. Ecpm: utils.Float64ToStr(utils.StrToFloat64(v["ecpm"]) / 100),
  189. ClickRate: utils.GetPrec(v["click_rate"], "2") + "%",
  190. ClickCount: v["click_count"],
  191. AllCommission: "0",
  192. OtherCommission: "0",
  193. Commission: "0",
  194. }
  195. }
  196. sqlAgent := `
  197. SELECT
  198. SUM(agent_revenue) as agent_revenue,
  199. SUM(extra_revenue) as extra_revenue
  200. FROM generate_wx_ad_data_with_agent_flow
  201. where %s
  202. `
  203. user := GetUser(c)
  204. whereAgent := where + " and agent_id=" + utils.IntToStr(user.AgentId)
  205. sqlAgent = fmt.Sprintf(sqlAgent, whereAgent)
  206. nativeStringAgent, _ := db.QueryNativeString(db.Db, sqlAgent)
  207. for _, v := range nativeStringAgent {
  208. res.Commission = utils.Float64ToStr(utils.StrToFloat64(v["agent_revenue"]) / 100)
  209. res.OtherCommission = utils.Float64ToStr(utils.StrToFloat64(v["extra_revenue"]) / 100)
  210. res.AllCommission = utils.Float64ToStr(utils.StrToFloat64(res.Commission) + utils.StrToFloat64(res.OtherCommission))
  211. }
  212. return res
  213. }
  214. func DataCenterCommissionRecordList(c *gin.Context, req md.DataCenterRecordReq) md.DataCenterCommissionRecordRes {
  215. nativeString, total := commAgent(c, 1, req)
  216. list := make([]md.DataCenterCommissionTotalData, 0)
  217. for _, v := range nativeString {
  218. NewAppletApplicationDb := implement.NewAppletApplicationDb(MasterDb(c))
  219. app, _ := NewAppletApplicationDb.GetAppletApplicationListByAppid(v["app_id"])
  220. platform := ""
  221. name := ""
  222. if app != nil {
  223. name = app.Name
  224. platform = app.Platform
  225. }
  226. NewAppletApplicationAdSpaceListDb := implement.NewAppletApplicationAdSpaceListDb(MasterDb(c))
  227. adData, _ := NewAppletApplicationAdSpaceListDb.GetAppletApplicationAdSpaceListByAdId(v["slot_id"])
  228. adName := enum.AdunitType(v["ad_slot"]).String()
  229. if adData != nil {
  230. adName = adData.Name
  231. }
  232. tmp := md.DataCenterCommissionTotalData{
  233. Date: v["date"],
  234. AppName: name,
  235. PlatformName: md.AppletPlatformMap[platform],
  236. AdvName: adName,
  237. ExposureCount: v["exposure_count"],
  238. Ecpm: utils.Float64ToStr(utils.StrToFloat64(v["ecpm"]) / 100),
  239. ClickRate: v["click_rate"] + "%",
  240. ClickCount: v["click_count"],
  241. AllCommission: v["all_commission"],
  242. OtherCommission: v["other_commission"],
  243. Commission: v["commission"],
  244. }
  245. list = append(list, tmp)
  246. }
  247. res := md.DataCenterCommissionRecordRes{
  248. List: list,
  249. Total: total,
  250. }
  251. return res
  252. }
  253. func DataCenterCommissionRecordOutPut(c *gin.Context, req md.DataCenterRecordOutPutReq) {
  254. var req1 md.DataCenterRecordReq
  255. copier.Copy(&req1, &req)
  256. req.Limit = "10000"
  257. nativeString, _ := commAgent(c, 0, req1)
  258. appId := make([]string, 0)
  259. adId := make([]string, 0)
  260. for _, v := range nativeString {
  261. appId = append(appId, v["app_id"])
  262. adId = append(adId, v["slot_id"])
  263. }
  264. var app []model2.AppletApplication
  265. appMap := make(map[string]model2.AppletApplication)
  266. MasterDb(c).In("app_id=?", appId).Find(&app)
  267. for _, v := range app {
  268. appMap[v.AppId] = v
  269. }
  270. var ad []model2.AppletApplicationAdSpaceList
  271. adMap := make(map[string]model2.AppletApplicationAdSpaceList)
  272. MasterDb(c).In("ad_id=?", adId).Find(&adMap)
  273. for _, v := range ad {
  274. adMap[v.AdId] = v
  275. }
  276. name := req.StartDate + "~" + req.EndDate + "(第" + req.Page + "页 " + utils.IntToStr(len(nativeString)) + "条)"
  277. // 写入数据
  278. data := map[string]string{
  279. "A1": "日期",
  280. "B1": "应用名称",
  281. "C1": "平台类型",
  282. "D1": "广告位",
  283. "E1": "曝光量",
  284. "F1": "点击量",
  285. "G1": "ECPM",
  286. "H1": "预估佣金",
  287. "I1": "额外奖励",
  288. "J1": "预估总收益",
  289. }
  290. for k, v := range nativeString {
  291. i := utils.IntToStr(k + 2)
  292. data["A"+i] = v["date"]
  293. data["B"+i] = appMap[v["app_id"]].Name
  294. data["C"+i] = md.AppletPlatformMap[appMap[v["app_id"]].Platform]
  295. data["D"+i] = adMap[v["slot_id"]].Name
  296. data["E"+i] = v["exposure_count"]
  297. data["F"+i] = v["click_count"]
  298. data["G"+i] = utils.Float64ToStr(utils.StrToFloat64(v["ecpm"]) / 100)
  299. data["H"+i] = v["commission"]
  300. data["I"+i] = v["other_commission"]
  301. data["J"+i] = v["all_commission"]
  302. }
  303. file := utils.Output(c, name, data)
  304. filename := name + ".xlsx"
  305. r := map[string]string{
  306. "file": file,
  307. "filename": filename,
  308. }
  309. e.OutSuc(c, r, nil)
  310. return
  311. }
  312. func DataCenterProfitRecordOutPut(c *gin.Context, req md.DataCenterProfitRecordOutPutReq) {
  313. var req1 md.DataCenterProfitRecordReq
  314. copier.Copy(&req1, &req)
  315. req.Limit = "10000"
  316. nativeString, _ := commAgentProfit(c, 0, req1)
  317. appId := make([]string, 0)
  318. for _, v := range nativeString {
  319. appId = append(appId, v["app_id"])
  320. }
  321. var app []model2.AppletApplication
  322. appMap := make(map[string]model2.AppletApplication)
  323. MasterDb(c).In("app_id=?", appId).Find(&app)
  324. for _, v := range app {
  325. appMap[v.AppId] = v
  326. }
  327. name := req.StartDate + "~" + req.EndDate + "(第" + req.Page + "页 " + utils.IntToStr(len(nativeString)) + "条)"
  328. // 写入数据
  329. data := map[string]string{
  330. "A1": "日期",
  331. "B1": "应用名称",
  332. "C1": "平台类型",
  333. "D1": "预估佣金",
  334. "E1": "额外奖励",
  335. "F1": "预估总收益",
  336. }
  337. for k, v := range nativeString {
  338. i := utils.IntToStr(k + 2)
  339. data["A"+i] = v["date"]
  340. data["B"+i] = appMap[v["app_id"]].Name
  341. data["C"+i] = md.AppletPlatformMap[appMap[v["app_id"]].Platform]
  342. data["D"+i] = v["commission"]
  343. data["E"+i] = v["other_commission"]
  344. data["F"+i] = v["all_commission"]
  345. }
  346. file := utils.Output(c, name, data)
  347. filename := name + ".xlsx"
  348. r := map[string]string{
  349. "file": file,
  350. "filename": filename,
  351. }
  352. e.OutSuc(c, r, nil)
  353. return
  354. }
  355. func DataCenterProfitRecordList(c *gin.Context, req md.DataCenterProfitRecordReq) md.DataCenterProfitRecordRes {
  356. data, total := commAgentProfit(c, 1, req)
  357. list := make([]md.DataCenterProfitRecordData, 0)
  358. for _, v := range data {
  359. NewAppletApplicationDb := implement.NewAppletApplicationDb(MasterDb(c))
  360. app, _ := NewAppletApplicationDb.GetAppletApplicationListByAppid(v["app_id"])
  361. platform := ""
  362. name := ""
  363. if app != nil {
  364. name = app.Name
  365. platform = app.Platform
  366. if platform == "wx_applet" {
  367. platform = "微信小程序"
  368. }
  369. }
  370. tmp := md.DataCenterProfitRecordData{
  371. Date: v["date"],
  372. AppName: name,
  373. PlatformName: platform,
  374. Commission: utils.Float64ToStr(utils.StrToFloat64(v["agent_revenue"]) / 100),
  375. OtherCommission: utils.Float64ToStr(utils.StrToFloat64(v["extra_revenue"]) / 100),
  376. }
  377. tmp.AllCommission = utils.Float64ToStr(utils.StrToFloat64(tmp.Commission) + utils.StrToFloat64(tmp.OtherCommission))
  378. list = append(list, tmp)
  379. }
  380. res := md.DataCenterProfitRecordRes{
  381. List: list,
  382. Total: total,
  383. }
  384. return res
  385. }
  386. func comm(c *gin.Context, isTotal int, req md.DataCenterRecordReq) ([]map[string]string, int64) {
  387. appId := GetAppletId(c, req.AppId, req.Platform)
  388. sql := `
  389. SELECT
  390. %s
  391. FROM generate_wx_ad_data
  392. where %s %s
  393. `
  394. mediumId := GetAgentMediumId(c)
  395. where := "is_generate_report=1 and uuid=" + c.GetString("mid") + " and medium_id in(" + mediumId + ")"
  396. if req.AppId != "" || req.Platform != "" {
  397. where += " and app_id in(" + appId + ")"
  398. }
  399. if req.AdType != "" {
  400. where += " and ad_slot='" + req.AdType + "'"
  401. }
  402. if req.StartDate != "" {
  403. where += " and date>='" + req.StartDate + "'"
  404. }
  405. if req.EndDate != "" {
  406. where += " and date<='" + req.EndDate + "'"
  407. }
  408. field := `*`
  409. start := (utils.StrToInt(req.Page) - 1) * utils.StrToInt(req.Limit)
  410. groupBy := " order by date desc,id desc"
  411. if req.Page != "" {
  412. groupBy += " limit " + utils.IntToStr(start) + "," + req.Limit
  413. } else {
  414. groupBy = " order by date asc,id asc"
  415. }
  416. sql1 := fmt.Sprintf(sql, field, where, groupBy)
  417. nativeString, _ := db.QueryNativeString(db.Db, sql1)
  418. var total int64 = 0
  419. if isTotal == 1 {
  420. sqlTotal := fmt.Sprintf(sql, "COUNT(*) as count ", where, "")
  421. nativeStringTotal, _ := db.QueryNativeString(db.Db, sqlTotal)
  422. for _, v := range nativeStringTotal {
  423. total = utils.StrToInt64(v["count"])
  424. }
  425. }
  426. return nativeString, total
  427. }
  428. func commAgentProfit(c *gin.Context, isTotal int, req md.DataCenterProfitRecordReq) ([]map[string]string, int64) {
  429. appId := GetAppletId(c, req.AppId, req.Platform)
  430. sql := `
  431. SELECT
  432. %s
  433. FROM generate_wx_ad_data_with_agent_flow as gf
  434. LEFT JOIN generate_wx_ad_data AS g
  435. ON gf.generate_data_id = g.id
  436. where %s %s
  437. `
  438. user := GetUser(c)
  439. where := "g.is_generate_report=1 and gf.uuid=" + c.GetString("mid") + " and gf.agent_id =" + utils.IntToStr(user.AgentId)
  440. if req.AppId != "" || req.Platform != "" {
  441. where += " and gf.app_id in(" + appId + ")"
  442. }
  443. if req.StartDate != "" {
  444. where += " and gf.date >= '" + req.StartDate + "'"
  445. }
  446. if req.EndDate != "" {
  447. where += " and gf.date<= '" + req.EndDate + "'"
  448. }
  449. field := `%s,gf.app_id,SUM(gf.agent_revenue) as agent_revenue,SUM(gf.extra_revenue) as extra_revenue`
  450. start := (utils.StrToInt(req.Page) - 1) * utils.StrToInt(req.Limit)
  451. groupBy := " group by %s,gf.app_id order by gf.date desc,gf.id desc"
  452. if req.Page != "" {
  453. groupBy += " limit " + utils.IntToStr(start) + "," + req.Limit
  454. } else {
  455. groupBy = " group by %s,app_id order by date asc,id asc"
  456. }
  457. timeStr := "gf.date"
  458. if req.Type == "1" {
  459. timeStr = "DATE_FORMAT(date, '%Y-%m')"
  460. }
  461. if req.Type == "2" {
  462. timeStr = "DATE_FORMAT(date, '%Y')"
  463. }
  464. field = fmt.Sprintf(field, timeStr+" as date")
  465. groupBy = fmt.Sprintf(groupBy, timeStr)
  466. sql1 := fmt.Sprintf(sql, field, where, groupBy)
  467. nativeString, _ := db.QueryNativeString(db.Db, sql1)
  468. var total int64 = 0
  469. if isTotal == 1 {
  470. sqlTotal := fmt.Sprintf(sql, "1", where, "")
  471. sqlTotal1 := `select COUNT(*) as count from (%s) as tmp`
  472. sqlTotal1 = fmt.Sprintf(sqlTotal1, sqlTotal)
  473. nativeStringTotal, _ := db.QueryNativeString(db.Db, sqlTotal1)
  474. for _, v := range nativeStringTotal {
  475. total = utils.StrToInt64(v["count"])
  476. }
  477. }
  478. return nativeString, total
  479. }
  480. func commAgent(c *gin.Context, isTotal int, req md.DataCenterRecordReq) ([]map[string]string, int64) {
  481. appId := GetAppletId(c, req.AppId, req.Platform)
  482. sql := `
  483. SELECT
  484. %s
  485. FROM generate_wx_ad_data
  486. where %s %s
  487. `
  488. mediumId := GetAgentMediumId(c)
  489. where := "is_generate_report=1 and uuid=" + c.GetString("mid") + " and medium_id in(" + mediumId + ")"
  490. if req.AppId != "" || req.Platform != "" {
  491. where += " and app_id in(" + appId + ")"
  492. }
  493. if req.AdType != "" {
  494. where += " and ad_slot='" + req.AdType + "'"
  495. }
  496. if req.StartDate != "" {
  497. where += " and date>='" + req.StartDate + "'"
  498. }
  499. if req.EndDate != "" {
  500. where += " and date<='" + req.EndDate + "'"
  501. }
  502. field := `*`
  503. start := (utils.StrToInt(req.Page) - 1) * utils.StrToInt(req.Limit)
  504. groupBy := " order by date desc,id desc"
  505. if req.Page != "" {
  506. groupBy += " limit " + utils.IntToStr(start) + "," + req.Limit
  507. } else {
  508. groupBy = " order by date asc,id asc"
  509. }
  510. sql1 := fmt.Sprintf(sql, field, where, groupBy)
  511. nativeString, _ := db.QueryNativeString(db.Db, sql1)
  512. var total int64 = 0
  513. if isTotal == 1 {
  514. sqlTotal := fmt.Sprintf(sql, "COUNT(*) as count ", where, "")
  515. nativeStringTotal, _ := db.QueryNativeString(db.Db, sqlTotal)
  516. for _, v := range nativeStringTotal {
  517. total = utils.StrToInt64(v["count"])
  518. }
  519. }
  520. var ids []string
  521. for _, v := range nativeString {
  522. ids = append(ids, v["id"])
  523. }
  524. if len(ids) > 0 {
  525. sqlAgent := `
  526. SELECT
  527. SUM(agent_revenue) as agent_revenue,
  528. SUM(extra_revenue) as extra_revenue
  529. FROM generate_wx_ad_data_with_agent_flow
  530. where %s
  531. `
  532. user := GetUser(c)
  533. whereAgent := "is_generate_report=1 and original_data_id in(" + strings.Join(ids, ",") + ") and agent_id=" + utils.IntToStr(user.AgentId)
  534. sqlAgent = fmt.Sprintf(sqlAgent, whereAgent)
  535. nativeStringAgent, _ := db.QueryNativeString(db.Db, sqlAgent)
  536. agentMap := make(map[string]map[string]string)
  537. for _, v := range nativeStringAgent {
  538. _, ok := agentMap[v["uid"]]
  539. if ok == false {
  540. agentMap[v["uid"]] = make(map[string]string)
  541. }
  542. agentMap[v["uid"]] = v
  543. }
  544. for k, v := range nativeString {
  545. _, ok := agentMap[v["uid"]]
  546. if ok {
  547. nativeString[k]["commission"] = utils.Float64ToStr(utils.StrToFloat64(v["agent_revenue"]) / 100)
  548. nativeString[k]["other_commission"] = utils.Float64ToStr(utils.StrToFloat64(v["extra_revenue"]) / 100)
  549. nativeString[k]["all_commission"] = utils.Float64ToStr(utils.StrToFloat64(nativeString[k]["commission"]) + utils.StrToFloat64(nativeString[k]["other_commission"]))
  550. } else {
  551. nativeString[k]["commission"] = "0"
  552. nativeString[k]["other_commission"] = "0"
  553. nativeString[k]["all_commission"] = "0"
  554. }
  555. }
  556. }
  557. return nativeString, total
  558. }
  559. func DataCenterSelectData(c *gin.Context) {
  560. NewAppletApplicationDb := implement.NewAppletApplicationDb(MasterDb(c))
  561. appList, _ := NewAppletApplicationDb.FindAllAppletApplicationList()
  562. appMap := make(map[string][]map[string]interface{})
  563. mediumId := GetAgentMediumId(c)
  564. for _, v := range appList {
  565. if strings.Contains(","+mediumId+",", ","+utils.IntToStr(v.MediumId)+",") == false {
  566. continue
  567. }
  568. _, ok := appMap[v.Platform]
  569. if ok == false {
  570. appMap[v.Platform] = make([]map[string]interface{}, 0)
  571. }
  572. tmp := map[string]interface{}{
  573. "name": v.Name,
  574. "app_id": v.AppId,
  575. "ad_type": enum.AdTypeList,
  576. }
  577. appMap[v.Platform] = append(appMap[v.Platform], tmp)
  578. }
  579. platform := []map[string]interface{}{
  580. {
  581. "name": "微信小程序",
  582. "platform": "wx_applet",
  583. "app_list": appMap["wx_applet"],
  584. },
  585. }
  586. e.OutSuc(c, platform, nil)
  587. return
  588. }
  589. // 应用
  590. func GetAppletId(c *gin.Context, appId, platform string) string {
  591. mediumId := ""
  592. sess := MasterDb(c).Where("1=1")
  593. var ids = make([]string, 0)
  594. if appId != "" || platform != "" {
  595. ids = append(ids, "-1")
  596. }
  597. if platform != "" {
  598. var tmp []model2.AppletApplication
  599. if platform != "" {
  600. sess.And("platform = ? ", platform)
  601. }
  602. sess.Find(&tmp)
  603. for _, v := range tmp {
  604. ids = append(ids, utils.IntToStr(v.MediumId))
  605. }
  606. }
  607. if appId != "" {
  608. ids = []string{appId}
  609. }
  610. if appId != "" || platform != "" {
  611. mediumId = strings.Join(ids, ",")
  612. }
  613. return mediumId
  614. }
  615. func GetAppletInfo(c *gin.Context, id string) map[string]string {
  616. var res = map[string]string{
  617. "platform": "",
  618. "name": "",
  619. "logo": "",
  620. }
  621. NewAppletApplicationDb := implement.NewAppletApplicationDb(MasterDb(c))
  622. data, _ := NewAppletApplicationDb.GetAppletApplicationListByAppid(id)
  623. if data != nil {
  624. res["platform"] = data.Platform
  625. res["name"] = data.Name
  626. res["logo"] = data.Logo
  627. }
  628. return res
  629. }