劲创营---任务项目
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 

494 satır
19 KiB

  1. package svc
  2. import (
  3. "applet/app/comm/md"
  4. "applet/app/comm/utils"
  5. "applet/app/comm/utils/logx"
  6. "applet/app/lib/plan"
  7. "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db"
  8. model2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db/model"
  9. "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/lib/comm_plan"
  10. zhios_order_relate_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils"
  11. zhios_order_relate_logx "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/logx"
  12. "encoding/json"
  13. "fmt"
  14. "github.com/jinzhu/copier"
  15. "strings"
  16. "xorm.io/xorm"
  17. )
  18. var pvdCfgList = map[string]struct {
  19. AK string
  20. SK string
  21. Sid string
  22. }{
  23. md.PVD_TB: {"third_taobao_svc_ak", "third_taobao_svc_sk", "third_taobao_web_sid"},
  24. md.PVD_KL: {md.KEY_CFG_KL_AK, md.KEY_CFG_KL_SK, ""},
  25. md.PVD_SN: {md.KEY_CFG_SN_AK, md.KEY_CFG_SN_SK, ""},
  26. md.PVD_JD: {md.KEY_CFG_ZM_AK, md.KEY_CFG_ZM_SK, md.KEY_CFG_ZM_WEB_ID},
  27. md.PVD_PDD: {md.KEY_CFG_ZM_AK, md.KEY_CFG_ZM_SK, md.KEY_CFG_ZM_WEB_ID},
  28. md.PVD_VIP: {md.KEY_CFG_ZM_AK, md.KEY_CFG_ZM_SK, md.KEY_CFG_ZM_WEB_ID},
  29. }
  30. func GetPlanCfg(eg *xorm.Engine, pvd, masterId string) (*plan.PlanOpt, error) {
  31. opt := &plan.PlanOpt{}
  32. //cacheKey := fmt.Sprintf(md.PlanRewardCfgCacheKey, masterId, pvd)
  33. //fmt.Println("分佣缓存key:", cacheKey)
  34. //err := cache.GetJson(cacheKey, &opt)
  35. //fmt.Println("分佣")
  36. //if err != nil || opt == nil {
  37. // 根据供应商
  38. rewardOpt, err := db.DbsPlanRewardByPvd(eg, pvd)
  39. if err != nil {
  40. return nil, err
  41. }
  42. if rewardOpt == nil {
  43. return nil, logx.Warn("找不到方案记录")
  44. }
  45. if rewardOpt.State == 0 {
  46. return nil, logx.Warn("抽成方案未开启")
  47. }
  48. if rewardOpt.PlanCommissionId == 0 {
  49. return nil, logx.Warn("抽成方案未设置佣金方案id")
  50. }
  51. fmt.Println("抽成设置:", utils.SerializeStr(rewardOpt))
  52. fmt.Println("commission id:", rewardOpt.PlanCommissionId)
  53. commissionOpt, err := db.DbsPlanCommissionById(eg, rewardOpt.PlanCommissionId)
  54. if err != nil || commissionOpt == nil || commissionOpt.Id == 0 {
  55. return nil, err
  56. }
  57. if _, ok := comm_plan.Fn[commissionOpt.Mode]; !ok && zhios_order_relate_utils.InArr(commissionOpt.Mode, []string{"public_platoon", "extend_price", "lv_integral_release"}) == false {
  58. return nil, logx.Warn("分佣模式不存在")
  59. }
  60. opt.Pvd = pvd
  61. opt.Mode = commissionOpt.Mode
  62. opt.IntegralOpen = rewardOpt.IntegralOpen
  63. opt.SysRate = float64(int64(rewardOpt.SysRate*1e4)) / 1e4
  64. opt.PvdRate = float64(int64(rewardOpt.PvdRate*1e4)) / 1e4
  65. opt.RegionRate = float64(int64(rewardOpt.RegionRate*1e4)) / 1e4
  66. opt.GlobalRate = float64(int64(rewardOpt.GlobalRate*1e4)) / 1e4
  67. opt.PushHandRate = float64(int64(rewardOpt.PushHandRate*1e4)) / 1e4
  68. opt.MerchantRate = float64(int64(rewardOpt.MerchantRate*1e4)) / 1e4
  69. opt.PlanCommissionId = rewardOpt.PlanCommissionId
  70. if commissionOpt.Mode == "public_platoon" { //公排
  71. var subsidyTmp1 map[int]*plan.PublicReward
  72. var subsidyTmp map[int]*plan.LvGrade
  73. if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmp1); err != nil {
  74. if masterId == "68823769" {
  75. fmt.Println("===========================分佣方案数据设置错误", commissionOpt)
  76. fmt.Println("===========================分佣方案数据设置错误", err)
  77. }
  78. fmt.Println(err)
  79. return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId))
  80. }
  81. copier.Copy(&subsidyTmp, &subsidyTmp1)
  82. var subsidyTmp2 = make(map[int]*plan.LvGrade)
  83. for _, v := range subsidyTmp {
  84. if subsidyTmp2[v.Lv] == nil {
  85. subsidyTmp2[v.Lv] = &plan.LvGrade{}
  86. }
  87. subsidyTmp2[v.Lv] = v
  88. }
  89. opt.UserRate = subsidyTmp2
  90. return opt, nil
  91. }
  92. // 兑换现金比例
  93. virtualCoinMoneyRate, err := GetVirtualCoinMoneyRateList(eg, masterId)
  94. if err != nil || virtualCoinMoneyRate == nil {
  95. opt.VirtualCoinMoneyRatioList = nil
  96. } else {
  97. opt.VirtualCoinMoneyRatioList = virtualCoinMoneyRate
  98. }
  99. if opt.SysRate >= 1 || opt.PvdRate >= 1 || opt.RegionRate >= 1 || opt.GlobalRate >= 1 || opt.PvdRate+opt.SysRate+opt.RegionRate+opt.GlobalRate >= 1 {
  100. return nil, logx.Warn("分佣方案数据设置总额不能大于1")
  101. }
  102. var subsidyTmp map[int]*plan.LvGrade
  103. var subsidyTmpDs map[int]*comm_plan.LvGradeDs
  104. var subsidyTmpPricePublic map[int]*comm_plan.LvGradePricePublic
  105. var subsidyTmpWineryAdv map[int]*comm_plan.LvGradeWineryAdv
  106. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"bili\":0", "\"bili\":\"0\"")
  107. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"buy_deliver_list\":[]", "\"buy_deliver_list\":{}")
  108. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"new_team_list\":[]", "\"new_team_list\":{}")
  109. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"new_extend_list\":[]", "\"new_extend_list\":{}")
  110. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"second_extend_list\":[]", "\"second_extend_list\":{}")
  111. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"to_extend_list\":[]", "\"to_extend_list\":{}")
  112. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"to_team_list\":[]", "\"to_team_list\":{}")
  113. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"same_extend\":[[]]", "\"same_extend\":[]")
  114. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"common_wealth_system\":[]", "\"common_wealth_system\":{}")
  115. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"common_wealth_system\":[\"0\"]", "\"common_wealth_system\":{}")
  116. if strings.Contains(commissionOpt.Data, "\"subsidy_mode_list\":[") { //兼容旧的方案
  117. tmp := strings.Split(commissionOpt.Data, "\"subsidy_mode_list\":[")
  118. if len(tmp) > 0 {
  119. tmp1 := strings.Split(tmp[1], "]")
  120. if len(tmp1) > 0 {
  121. str := "\"subsidy_mode_list\":[" + tmp1[0] + "]"
  122. ex := strings.Split(tmp1[0], ",")
  123. bili := "bili"
  124. if len(ex) > 0 {
  125. bili = strings.ReplaceAll(ex[0], "\"", "")
  126. }
  127. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, str, "\"subsidy_mode_list\":{\"0\":\""+bili+"\"}")
  128. }
  129. }
  130. }
  131. if strings.Contains(commissionOpt.Data, "\"buy_deliver_list\":[") { //
  132. tmp := strings.Split(commissionOpt.Data, "\"buy_deliver_list\":[")
  133. if len(tmp) > 0 {
  134. tmp1 := strings.Split(tmp[1], "]")
  135. if len(tmp1) > 0 {
  136. str := "\"buy_deliver_list\":[" + tmp1[0] + "]"
  137. str1 := "\"buy_deliver_list\":{" + tmp1[0] + "}"
  138. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, str, str1)
  139. }
  140. }
  141. }
  142. if zhios_order_relate_utils.InArr(commissionOpt.Mode, []string{"lv_ds_check"}) {
  143. if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmpDs); err != nil {
  144. if masterId == "68823769" {
  145. fmt.Println("===========================分佣方案数据设置错误", commissionOpt)
  146. fmt.Println("===========================分佣方案数据设置错误", err)
  147. }
  148. fmt.Println(err)
  149. return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId))
  150. }
  151. copier.Copy(&subsidyTmp, &subsidyTmpDs)
  152. opt.UserRate = subsidyTmp
  153. return opt, nil
  154. }
  155. if zhios_order_relate_utils.InArr(commissionOpt.Mode, []string{"lv_winery_adv"}) {
  156. if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmpWineryAdv); err != nil {
  157. if masterId == "68823769" {
  158. fmt.Println("===========================分佣方案数据设置错误", commissionOpt)
  159. fmt.Println("===========================分佣方案数据设置错误", err)
  160. }
  161. return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId))
  162. }
  163. copier.Copy(&subsidyTmp, &subsidyTmpWineryAdv)
  164. opt.UserRate = subsidyTmp
  165. return opt, nil
  166. }
  167. if zhios_order_relate_utils.InArr(commissionOpt.Mode, []string{"lv_price_public_platoon"}) {
  168. if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmpPricePublic); err != nil {
  169. return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId))
  170. }
  171. copier.Copy(&subsidyTmp, &subsidyTmpPricePublic)
  172. opt.UserRate = subsidyTmp
  173. return opt, nil
  174. }
  175. if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmp); err != nil {
  176. if masterId == "68823769" {
  177. fmt.Println("===========================分佣方案数据设置错误", commissionOpt)
  178. fmt.Println("===========================分佣方案数据设置错误", err)
  179. }
  180. return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId))
  181. }
  182. opt.UserRate = subsidyTmp
  183. return opt, nil
  184. }
  185. func GetPlanCfgService(eg *xorm.Engine, pvd, masterId string) (*plan.PlanOpt, error) {
  186. opt := &plan.PlanOpt{}
  187. //cacheKey := fmt.Sprintf(md.PlanRewardCfgCacheKey, masterId, pvd)
  188. //fmt.Println("分佣缓存key:", cacheKey)
  189. //err := cache.GetJson(cacheKey, &opt)
  190. //fmt.Println("分佣")
  191. //if err != nil || opt == nil {
  192. // 根据供应商
  193. rewardOpt, err := db.DbsPlanRewardByPvd(eg, pvd)
  194. if err != nil {
  195. return nil, err
  196. }
  197. if rewardOpt == nil {
  198. return nil, logx.Warn("找不到方案记录")
  199. }
  200. if rewardOpt.State == 0 {
  201. return nil, logx.Warn("抽成方案未开启")
  202. }
  203. if rewardOpt.SecondPlanCommissionId == 0 {
  204. return nil, logx.Warn("抽成方案未设置佣金方案id")
  205. }
  206. fmt.Println("抽成设置:", utils.SerializeStr(rewardOpt))
  207. fmt.Println("commission id:", rewardOpt.SecondPlanCommissionId)
  208. commissionOpt, err := db.DbsPlanCommissionById(eg, rewardOpt.SecondPlanCommissionId)
  209. if err != nil || commissionOpt == nil || commissionOpt.Id == 0 {
  210. return nil, err
  211. }
  212. if _, ok := comm_plan.Fn[commissionOpt.Mode]; !ok && zhios_order_relate_utils.InArr(commissionOpt.Mode, []string{"public_platoon", "extend_price", "lv_integral_release"}) == false {
  213. return nil, logx.Warn("分佣模式不存在")
  214. }
  215. opt.Pvd = pvd
  216. opt.Mode = commissionOpt.Mode
  217. opt.IntegralOpen = rewardOpt.IntegralOpen
  218. opt.SysRate = float64(int64(rewardOpt.SysRate*1e4)) / 1e4
  219. opt.PvdRate = float64(int64(rewardOpt.PvdRate*1e4)) / 1e4
  220. opt.RegionRate = float64(int64(rewardOpt.RegionRate*1e4)) / 1e4
  221. opt.GlobalRate = float64(int64(rewardOpt.GlobalRate*1e4)) / 1e4
  222. opt.PushHandRate = float64(int64(rewardOpt.PushHandRate*1e4)) / 1e4
  223. opt.MerchantRate = float64(int64(rewardOpt.MerchantRate*1e4)) / 1e4
  224. opt.PlanCommissionId = rewardOpt.SecondPlanCommissionId
  225. if commissionOpt.Mode == "public_platoon" { //公排
  226. var subsidyTmp1 map[int]*plan.PublicReward
  227. var subsidyTmp map[int]*plan.LvGrade
  228. if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmp1); err != nil {
  229. if masterId == "68823769" {
  230. fmt.Println("===========================分佣方案数据设置错误", commissionOpt)
  231. fmt.Println("===========================分佣方案数据设置错误", err)
  232. }
  233. fmt.Println(err)
  234. return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId))
  235. }
  236. copier.Copy(&subsidyTmp, &subsidyTmp1)
  237. var subsidyTmp2 = make(map[int]*plan.LvGrade)
  238. for _, v := range subsidyTmp {
  239. if subsidyTmp2[v.Lv] == nil {
  240. subsidyTmp2[v.Lv] = &plan.LvGrade{}
  241. }
  242. subsidyTmp2[v.Lv] = v
  243. }
  244. opt.UserRate = subsidyTmp2
  245. return opt, nil
  246. }
  247. // 兑换现金比例
  248. virtualCoinMoneyRate, err := GetVirtualCoinMoneyRateList(eg, masterId)
  249. if err != nil || virtualCoinMoneyRate == nil {
  250. opt.VirtualCoinMoneyRatioList = nil
  251. } else {
  252. opt.VirtualCoinMoneyRatioList = virtualCoinMoneyRate
  253. }
  254. if opt.SysRate >= 1 || opt.PvdRate >= 1 || opt.RegionRate >= 1 || opt.GlobalRate >= 1 || opt.PvdRate+opt.SysRate+opt.RegionRate+opt.GlobalRate >= 1 {
  255. return nil, logx.Warn("分佣方案数据设置总额不能大于1")
  256. }
  257. var subsidyTmp map[int]*plan.LvGrade
  258. var subsidyTmpDs map[int]*comm_plan.LvGradeDs
  259. var subsidyTmpPricePublic map[int]*comm_plan.LvGradePricePublic
  260. var subsidyTmpWineryAdv map[int]*comm_plan.LvGradeWineryAdv
  261. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"bili\":0", "\"bili\":\"0\"")
  262. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"buy_deliver_list\":[]", "\"buy_deliver_list\":{}")
  263. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"new_team_list\":[]", "\"new_team_list\":{}")
  264. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"new_extend_list\":[]", "\"new_extend_list\":{}")
  265. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"second_extend_list\":[]", "\"second_extend_list\":{}")
  266. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"to_extend_list\":[]", "\"to_extend_list\":{}")
  267. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"to_team_list\":[]", "\"to_team_list\":{}")
  268. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"same_extend\":[[]]", "\"same_extend\":[]")
  269. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"common_wealth_system\":[]", "\"common_wealth_system\":{}")
  270. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, "\"common_wealth_system\":[\"0\"]", "\"common_wealth_system\":{}")
  271. if strings.Contains(commissionOpt.Data, "\"subsidy_mode_list\":[") { //兼容旧的方案
  272. tmp := strings.Split(commissionOpt.Data, "\"subsidy_mode_list\":[")
  273. if len(tmp) > 0 {
  274. tmp1 := strings.Split(tmp[1], "]")
  275. if len(tmp1) > 0 {
  276. str := "\"subsidy_mode_list\":[" + tmp1[0] + "]"
  277. ex := strings.Split(tmp1[0], ",")
  278. bili := "bili"
  279. if len(ex) > 0 {
  280. bili = strings.ReplaceAll(ex[0], "\"", "")
  281. }
  282. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, str, "\"subsidy_mode_list\":{\"0\":\""+bili+"\"}")
  283. }
  284. }
  285. }
  286. if strings.Contains(commissionOpt.Data, "\"buy_deliver_list\":[") { //
  287. tmp := strings.Split(commissionOpt.Data, "\"buy_deliver_list\":[")
  288. if len(tmp) > 0 {
  289. tmp1 := strings.Split(tmp[1], "]")
  290. if len(tmp1) > 0 {
  291. str := "\"buy_deliver_list\":[" + tmp1[0] + "]"
  292. str1 := "\"buy_deliver_list\":{" + tmp1[0] + "}"
  293. commissionOpt.Data = strings.ReplaceAll(commissionOpt.Data, str, str1)
  294. }
  295. }
  296. }
  297. if zhios_order_relate_utils.InArr(commissionOpt.Mode, []string{"lv_ds_check"}) {
  298. if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmpDs); err != nil {
  299. if masterId == "68823769" {
  300. fmt.Println("===========================分佣方案数据设置错误", commissionOpt)
  301. fmt.Println("===========================分佣方案数据设置错误", err)
  302. }
  303. fmt.Println(err)
  304. return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId))
  305. }
  306. copier.Copy(&subsidyTmp, &subsidyTmpDs)
  307. opt.UserRate = subsidyTmp
  308. return opt, nil
  309. }
  310. if zhios_order_relate_utils.InArr(commissionOpt.Mode, []string{"lv_winery_adv"}) {
  311. if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmpWineryAdv); err != nil {
  312. if masterId == "68823769" {
  313. fmt.Println("===========================分佣方案数据设置错误", commissionOpt)
  314. fmt.Println("===========================分佣方案数据设置错误", err)
  315. }
  316. return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId))
  317. }
  318. copier.Copy(&subsidyTmp, &subsidyTmpWineryAdv)
  319. opt.UserRate = subsidyTmp
  320. return opt, nil
  321. }
  322. if zhios_order_relate_utils.InArr(commissionOpt.Mode, []string{"lv_price_public_platoon"}) {
  323. if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmpPricePublic); err != nil {
  324. return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId))
  325. }
  326. copier.Copy(&subsidyTmp, &subsidyTmpPricePublic)
  327. opt.UserRate = subsidyTmp
  328. return opt, nil
  329. }
  330. if err := json.Unmarshal([]byte(commissionOpt.Data), &subsidyTmp); err != nil {
  331. if masterId == "68823769" {
  332. fmt.Println("===========================分佣方案数据设置错误", commissionOpt)
  333. fmt.Println("===========================分佣方案数据设置错误", err)
  334. }
  335. return nil, zhios_order_relate_logx.Warn(fmt.Sprintf("%s:分佣方案数据设置错误", masterId))
  336. }
  337. opt.UserRate = subsidyTmp
  338. return opt, nil
  339. }
  340. // 获取所有供应商对应的分佣方案, 包括免单,一元购
  341. func PlanOpts(eg *xorm.Engine) map[string]*plan.PlanOpt {
  342. // 获取所有佣金方案
  343. allCommissionPlan := db.DbsPlanCommissionByIds(eg)
  344. if allCommissionPlan == nil {
  345. return nil
  346. }
  347. commissionPlans := map[int]*model2.PlanCommission{}
  348. for _, v := range allCommissionPlan {
  349. v.Data = strings.ReplaceAll(v.Data, "\"bili\":0", "\"bili\":\"0\"")
  350. commissionPlans[v.Id] = v
  351. }
  352. // 获取所有抽成方案的计划
  353. allRewardPlan, err := db.DbsPlanRewardByPvds(eg)
  354. if err != nil || allRewardPlan == nil {
  355. return nil
  356. }
  357. opts := map[string]*plan.PlanOpt{}
  358. for _, v := range allRewardPlan {
  359. if _, ok := commissionPlans[v.PlanCommissionId]; ok && v.State == 1 && v.PlanCommissionId > 0 {
  360. var subsidyTmp map[int]*plan.LvGrade
  361. if err := json.Unmarshal([]byte(commissionPlans[v.PlanCommissionId].Data), &subsidyTmp); err != nil {
  362. logx.Warn("分佣方案数据设置错误 :", commissionPlans[v.PlanCommissionId])
  363. continue
  364. }
  365. opts[v.Pvd] = &plan.PlanOpt{
  366. Pvd: v.Pvd,
  367. PlanCommissionId: v.PlanCommissionId,
  368. Mode: commissionPlans[v.PlanCommissionId].Mode,
  369. CommissionMode: commissionPlans[v.PlanCommissionId].CommissionMode,
  370. SysRate: float64(v.SysRate),
  371. PvdRate: float64(v.PvdRate),
  372. RegionRate: float64(v.RegionRate),
  373. GlobalRate: float64(v.GlobalRate),
  374. UserRate: subsidyTmp,
  375. }
  376. }
  377. }
  378. fmt.Println(opts)
  379. if len(opts) == 0 {
  380. return nil
  381. }
  382. return opts
  383. }
  384. func PlanOpts1(eg *xorm.Engine) map[string]*plan.PlanOpt {
  385. // 获取所有佣金方案
  386. allCommissionPlan := db.DbsPlanCommissionByIds(eg)
  387. if allCommissionPlan == nil {
  388. return nil
  389. }
  390. commissionPlans := map[int]*model2.PlanCommission{}
  391. for _, v := range allCommissionPlan {
  392. v.Data = strings.ReplaceAll(v.Data, "\"bili\":0", "\"bili\":\"0\"")
  393. commissionPlans[v.Id] = v
  394. }
  395. // 获取所有抽成方案的计划
  396. allRewardPlan, err := db.DbsPlanRewardByPvds(eg)
  397. if err != nil || allRewardPlan == nil {
  398. return nil
  399. }
  400. opts := map[string]*plan.PlanOpt{}
  401. for _, v := range allRewardPlan {
  402. if _, ok := commissionPlans[v.PlanCommissionId]; ok && v.State == 1 && v.PlanCommissionId > 0 {
  403. opts[v.Pvd] = &plan.PlanOpt{
  404. Pvd: v.Pvd,
  405. PlanCommissionId: v.PlanCommissionId,
  406. Mode: commissionPlans[v.PlanCommissionId].Mode,
  407. CommissionMode: commissionPlans[v.PlanCommissionId].CommissionMode,
  408. SysRate: float64(v.SysRate),
  409. PvdRate: float64(v.PvdRate),
  410. RegionRate: float64(v.RegionRate),
  411. GlobalRate: float64(v.GlobalRate),
  412. }
  413. }
  414. }
  415. fmt.Println(opts)
  416. if len(opts) == 0 {
  417. return nil
  418. }
  419. return opts
  420. }
  421. func GetCreditCardRate(user *md.User, opts map[string]*plan.PlanOpt) string {
  422. opt, ok := opts[md.PVD_CREDIT_CARD]
  423. if opts == nil || !ok {
  424. // 方案为空写定45
  425. return "45"
  426. }
  427. userRate, ok1 := opt.UserRate[user.Info.Level]
  428. if !ok1 {
  429. return "35"
  430. }
  431. return utils.AnyToString(((1 - opt.SysRate - opt.PvdRate) * userRate.SelfRate) * 100)
  432. }
  433. func GetVirtualCoinMoneyRateList(eg *xorm.Engine, masterId string) (map[int]string, error) {
  434. m, err := db.VirtualCoinListInUse(eg, masterId)
  435. if err != nil {
  436. _ = logx.Error(err)
  437. return nil, err
  438. }
  439. if len(m) == 0 {
  440. return nil, nil
  441. }
  442. result := make(map[int]string, 0)
  443. result[0] = "1" // 把现金也添加进去 比例1:1
  444. for _, coin := range m {
  445. result[coin.Id] = coin.ExchangeRatio
  446. }
  447. return result, nil
  448. }
  449. func ConvertList2Map(a []*comm_plan.VirtualCoinCommission) (b map[string]float64) {
  450. b = make(map[string]float64)
  451. for _, i := range a {
  452. b[i.Cid] = i.Val
  453. }
  454. return b
  455. }