劲创营---任务项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

276 lines
9.6 KiB

  1. package hdl
  2. import (
  3. "applet/app/cfg"
  4. "applet/app/comm/db"
  5. "applet/app/comm/db/model"
  6. "applet/app/comm/e"
  7. svcComm "applet/app/comm/svc"
  8. "applet/app/comm/utils"
  9. db3 "applet/app/im/db"
  10. model2 "applet/app/im/db/model"
  11. utils2 "applet/app/im/utils"
  12. "applet/app/task/svc/consume_integral"
  13. "code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git/svc"
  14. db2 "code.fnuoos.com/go_rely_warehouse/zyos_go_o2o_business.git/db"
  15. model4 "code.fnuoos.com/go_rely_warehouse/zyos_go_o2o_business.git/db/model"
  16. "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md"
  17. "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule"
  18. "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles"
  19. "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/service_award_dividend"
  20. md2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/service_award_dividend/md"
  21. "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/utils/cache"
  22. "fmt"
  23. "github.com/gin-gonic/gin"
  24. "strings"
  25. )
  26. func DemoDayLuckDraw(c *gin.Context) {
  27. err := svc.InitForDayLuckDraw(cfg.RedisAddr)
  28. if err != nil {
  29. return
  30. }
  31. svc.GetUserReward(svcComm.MasterDb(c), "123456", false)
  32. }
  33. func DemoIntegral(c *gin.Context) {
  34. //value := c.DefaultQuery("price", "")
  35. //price, _ := decimal.NewFromString(value)
  36. //priceRoundFloor, _ := price.RoundFloor(4).Float64()
  37. //fmt.Println(priceRoundFloor)
  38. //e.OutSuc(c, priceRoundFloor, nil)
  39. //return
  40. //c.Set("mid", "666666")
  41. eg := svcComm.MasterDb(c)
  42. //o2o.SettlementGreen(eg, "69797008", false)
  43. err := rule.InitForIntegralRelease(cfg.RedisAddr)
  44. err = rule.DailySettlementIntegralRelease(eg, "81979875", false)
  45. err = rule.DailySettlementIntegralReleaseForInterposition(eg, "81979875", false)
  46. e.OutSuc(c, err, nil)
  47. return
  48. }
  49. func DemoIntegral1(c *gin.Context) {
  50. //value := c.DefaultQuery("price", "")
  51. //price, _ := decimal.NewFromString(value)
  52. //priceRoundFloor, _ := price.RoundFloor(4).Float64()
  53. //fmt.Println(priceRoundFloor)
  54. //e.OutSuc(c, priceRoundFloor, nil)
  55. //return
  56. //c.Set("mid", "666666")
  57. eg := svcComm.MasterDb(c)
  58. //o2o.SettlementGreen(eg, "69797008", false)
  59. err := rule.InitForNiuBeiRelease(cfg.RedisAddr)
  60. if err != nil {
  61. return
  62. }
  63. rule.DailySettlementNiuBeiRelease(eg, "11536749", false)
  64. e.OutSuc(c, err, nil)
  65. return
  66. }
  67. // Demo 测试
  68. func Demo(c *gin.Context) {
  69. consume_integral.Settlement(svcComm.MasterDb(c), c.GetString("mid"), false)
  70. return
  71. egine := svcComm.MasterDb(c)
  72. addPublicPlatoonRelateCommissionReqList := []*md.AddOneCirclesPublicPlatoonUserRelationCommissionReq{
  73. {
  74. Uid: c.Query("uid"),
  75. RecommendUid: c.Query("r_uid"),
  76. },
  77. }
  78. relationCommission, err := one_circles.AddOneCirclesPublicPlatoonUserRelationCommission(egine, addPublicPlatoonRelateCommissionReqList)
  79. if err != nil {
  80. e.OutErr(c, e.ERR, err.Error())
  81. return
  82. }
  83. e.OutSuc(c, relationCommission, nil)
  84. return
  85. uid1 := utils.StrToInt(c.DefaultQuery("uid", ""))
  86. eg := svcComm.MasterDb(c)
  87. service_award_dividend.JoinServiceAwardDividendRelation(eg, md2.JoinServiceAwardDividendRelationReq{
  88. MasterId: "71353282",
  89. Uid: 38,
  90. ParentUid: 37,
  91. RegionId: 1350,
  92. CreateAt: "",
  93. })
  94. cache.NewRedis(cfg.RedisAddr)
  95. total, level, levelRank, rank, previousRow, diffValue, err := rule.EstimateUserPosition(eg, uid1, c.GetString("mid"))
  96. fmt.Println(total, level, levelRank, rank, previousRow, diffValue)
  97. var imSendRedPackageOrds []*model2.ImSendRedPackageOrd
  98. err = db.DBs["666666"].Where("red_packet_type =? and state = 1", 3).Find(&imSendRedPackageOrds)
  99. if err != nil {
  100. e.OutSuc(c, err, nil)
  101. return
  102. }
  103. for _, imSendRedPackageOrd := range imSendRedPackageOrds {
  104. redPackageReceivedUserAmounts := strings.Split(imSendRedPackageOrd.ReceivedUserAmount, ",")
  105. var totalAmount = 0.00
  106. receivedUserIds := strings.Split(imSendRedPackageOrd.ReceivedUserIds, ",")
  107. for _, v := range redPackageReceivedUserAmounts {
  108. totalAmount += utils.StrToFloat64(v)
  109. }
  110. if totalAmount > utils.StrToFloat64(imSendRedPackageOrd.Amount) {
  111. var blanceAmount = utils.StrToFloat64(imSendRedPackageOrd.Amount)
  112. for k, v := range redPackageReceivedUserAmounts {
  113. gradeAmount := float64(utils2.DoubleAverage(int64(imSendRedPackageOrd.RedPacketNums-k), int64(blanceAmount*100))) / 100
  114. if gradeAmount > utils.StrToFloat64(v) {
  115. blanceAmount -= utils.StrToFloat64(v)
  116. } else {
  117. blanceAmount -= gradeAmount
  118. redPackageReceivedUserAmounts[k] = utils.Float64ToStr(gradeAmount)
  119. dockAmount := utils.StrToFloat64(v) - gradeAmount //需追缴金额
  120. userProfile := new(model4.UserProfile)
  121. _, err = db.DBs["666666"].Where("uid =?", receivedUserIds[k]).Get(userProfile)
  122. finValid := utils.StrToFloat64(userProfile.FinValid)
  123. if finValid-dockAmount < 0 {
  124. //不再追缴
  125. continue
  126. }
  127. userProfile.FinValid = utils.Float64ToStr(utils.StrToFloat64(userProfile.FinValid) - dockAmount)
  128. affect, err := db2.UserProfileUpdate(db.DBs["666666"], receivedUserIds[k], userProfile, "fin_valid") //更改用户余额
  129. if err != nil || affect != 1 {
  130. e.OutSuc(c, err, nil)
  131. return
  132. }
  133. svcComm.FlowInsert(db.DBs[c.GetString("mid")], userProfile.Uid, utils.Float64ToStr(dockAmount), 106, utils.AnyToInt64(imSendRedPackageOrd.Id),
  134. 0, 0, "群红包异常扣款", "im_grab_red_package_chargeback", 1, utils.Float64ToStr(finValid), userProfile.FinValid) //增加流水记录
  135. totalAmount = totalAmount - utils.StrToFloat64(v) + gradeAmount
  136. }
  137. }
  138. //修改红包记录
  139. imSendRedPackageOrd.ReceivedUserAmount = strings.Join(redPackageReceivedUserAmounts, ",")
  140. _, err = db3.ImSendRedPackageOrdUpdate(db.DBs["666666"], imSendRedPackageOrd.Id, imSendRedPackageOrd,
  141. "received_user_amount")
  142. if err != nil {
  143. e.OutSuc(c, err, nil)
  144. return
  145. }
  146. }
  147. }
  148. e.OutSuc(c, err, nil)
  149. return
  150. //svc.Settlement(eg, "69797008")
  151. //rule.Init(cfg.RedisAddr)
  152. //err := rule.DealLotteryDraw(eg.NewSession(), md.DealLotteryDrawReq{Uid: 123456, Amount: "0", Mid: "123456"})
  153. //e.OutSuc(c, err, nil)
  154. //return
  155. uid := c.DefaultQuery("uid", "")
  156. str := "1-2-3-4"
  157. fatherPositions := strings.Split(str, "-")
  158. remainder1 := (utils.StrToInt(uid)) % len(fatherPositions)
  159. var fatherPosition string
  160. if remainder1 == 0 {
  161. fatherPosition = fatherPositions[len(fatherPositions)-1]
  162. } else {
  163. fmt.Println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", len(fatherPositions)-remainder1)
  164. fatherPosition = fatherPositions[remainder1-1]
  165. }
  166. fmt.Println(">>>>>>>>>>>>>>>>>>>>>>>>>>>", fatherPosition)
  167. e.OutSuc(c, fatherPosition, nil)
  168. return
  169. engine := svcComm.MasterDb(c)
  170. fmt.Println(uid)
  171. recommendUid := c.DefaultQuery("recommend_uid", "")
  172. var params []*md.AddPublicPlatoonRelateCommissionReq
  173. var Users []*model.User
  174. if err := engine.Where("uid != 3 AND uid !=0").OrderBy("create_at ASC").Find(&Users); err != nil {
  175. e.OutErr(c, e.ERR_API_RESPONSE, err)
  176. return
  177. }
  178. for _, user := range Users {
  179. params = append(params, &md.AddPublicPlatoonRelateCommissionReq{
  180. Uid: utils.AnyToString(user.Uid),
  181. RecommendUid: recommendUid,
  182. })
  183. }
  184. commission, err := rule.AddPublicPlatoonRelateCommission(engine, params)
  185. if err != nil {
  186. return
  187. }
  188. fmt.Println(">>>>>>>>>>>>>>>>>>", commission)
  189. e.OutSuc(c, commission, nil)
  190. }
  191. func DemoV2(c *gin.Context) {
  192. user, err := rule.FindRandUser(db.DBs["123999"], 1000)
  193. if err != nil {
  194. return
  195. }
  196. //list, err := db.QueryNativeString(, "SELECT uid AS LIST FROM `fin_user_flow` WHERE id > 64627 "+
  197. // "AND ord_title = '聚合充值余额支付' or ord_title = '领取红包' GROUP BY uid")
  198. //if err != nil {
  199. // return
  200. //}
  201. //for _, v := range list {
  202. // var finUserFlows []*model.FinUserFlow
  203. // err1 := db.DBs["666666"].Where("id > 64627 AND uid = ?", v["LIST"]).Asc("id").Find(&finUserFlows)
  204. // if err1 != nil {
  205. // e.OutSuc(c, err1, nil)
  206. // return
  207. // }
  208. // var isFirst = true
  209. // for _, vv := range finUserFlows {
  210. // if isFirst && vv.OrdTitle != "社群红包-余额支付" && vv.OrdTitle != "领取红包" {
  211. // fmt.Println("!!!!!!!!!!", vv.OrdTitle)
  212. // continue
  213. // }
  214. //
  215. // if vv.OrdTitle == "社群红包-余额支付" || vv.OrdTitle == "领取红包" {
  216. // if isFirst {
  217. // //直接修改余额
  218. // isFirst = false
  219. // sqlTpl := "update user_profile set fin_valid = %s where uid = %d"
  220. // sql := fmt.Sprintf(sqlTpl, vv.BeforeAmount, vv.Uid)
  221. // db.ExecuteOriginalSql(db.DBs["666666"].NewSession(), sql)
  222. // }
  223. //
  224. // //删除该流水
  225. // sqlTpl := "DELETE FROM `fin_user_flow` WHERE (id=%d)"
  226. // sql := fmt.Sprintf(sqlTpl, vv.Id)
  227. // db.ExecuteOriginalSql(db.DBs["666666"].NewSession(), sql)
  228. // continue
  229. // }
  230. //
  231. // //增加 / 减少 余额
  232. // userProfile := new(model4.UserProfile)
  233. // _, err = db.DBs["666666"].Where("uid =?", vv.Uid).Get(userProfile)
  234. // finValid := utils.StrToFloat64(userProfile.FinValid)
  235. // if vv.Type == 0 {
  236. // userProfile.FinValid = utils.Float64ToStr(finValid + utils.StrToFloat64(vv.Amount))
  237. // }
  238. // if vv.Type == 1 {
  239. // userProfile.FinValid = utils.Float64ToStr(finValid - utils.StrToFloat64(vv.Amount))
  240. // }
  241. // sqlTpl := "update user_profile set fin_valid = %s where uid = %d"
  242. // sql := fmt.Sprintf(sqlTpl, userProfile.FinValid, vv.Uid)
  243. // _, err2 := db.ExecuteOriginalSql(db.DBs["666666"].NewSession(), sql)
  244. // if err2 != nil {
  245. // fmt.Println("err2:::::", err2)
  246. // return
  247. // }
  248. //
  249. // sqlTpl = "update fin_user_flow set before_amount = %s, after_amount= %s where id = %d"
  250. // sql = fmt.Sprintf(sqlTpl, utils.Float64ToStr(finValid), userProfile.FinValid, vv.Id)
  251. // _, err3 := db.ExecuteOriginalSql(db.DBs["666666"].NewSession(), sql)
  252. // if err3 != nil {
  253. // fmt.Println("err2:::::", err2)
  254. // return
  255. // }
  256. // }
  257. //}
  258. //
  259. e.OutSuc(c, user, nil)
  260. return
  261. }