abiao пре 5 година
родитељ
комит
1020f0e981
88 измењених фајлова са 9 додато и 12721 уклоњено
  1. 0 118
      go/gopath/src/fohow.com/apps/controllers/cf_controller/cf_controller.go
  2. 0 513
      go/gopath/src/fohow.com/apps/controllers/chunjie_controller/chunjie_controller.go
  3. 0 23
      go/gopath/src/fohow.com/apps/controllers/chunjie_controller/init.go
  4. 0 44
      go/gopath/src/fohow.com/apps/controllers/click_controller/click_controller.go
  5. 0 185
      go/gopath/src/fohow.com/apps/controllers/consume_czc_order_controller/consume_czc_order_controller.go
  6. 0 147
      go/gopath/src/fohow.com/apps/controllers/copartner_controller/copartner_controller.go
  7. 0 22
      go/gopath/src/fohow.com/apps/controllers/copartner_controller/init.go
  8. 0 431
      go/gopath/src/fohow.com/apps/controllers/course_controller/course_controller.go
  9. 0 24
      go/gopath/src/fohow.com/apps/controllers/course_controller/init.go
  10. 0 56
      go/gopath/src/fohow.com/apps/controllers/cron_controller/copartner.go
  11. 0 80
      go/gopath/src/fohow.com/apps/controllers/cron_controller/dollar_win_notice.go
  12. 0 54
      go/gopath/src/fohow.com/apps/controllers/cron_controller/dollar_win_rank.go
  13. 0 135
      go/gopath/src/fohow.com/apps/controllers/cron_controller/granary.go
  14. 0 2
      go/gopath/src/fohow.com/apps/controllers/cron_controller/init.go
  15. 0 175
      go/gopath/src/fohow.com/apps/controllers/cron_controller/invite.go
  16. 1 67
      go/gopath/src/fohow.com/apps/controllers/cron_controller/sync_balance.go
  17. 0 105
      go/gopath/src/fohow.com/apps/controllers/cron_controller/update_invite_benefit_order.go
  18. 0 19
      go/gopath/src/fohow.com/apps/controllers/cron_controller/update_user_is_regist_d5c.go
  19. 2 82
      go/gopath/src/fohow.com/apps/controllers/cron_controller/user_complete_info.go
  20. 0 308
      go/gopath/src/fohow.com/apps/controllers/dollar_win_controller/dollar_win_controller.go
  21. 0 136
      go/gopath/src/fohow.com/apps/controllers/exchange_controller/callback_exchange_controller.go
  22. 0 383
      go/gopath/src/fohow.com/apps/controllers/exchange_controller/exchange_controller.go
  23. 0 103
      go/gopath/src/fohow.com/apps/controllers/exchange_controller/exchange_test.go
  24. 0 31
      go/gopath/src/fohow.com/apps/controllers/exchange_controller/init.go
  25. 0 528
      go/gopath/src/fohow.com/apps/controllers/granary_controller/granary_controller.go
  26. 0 31
      go/gopath/src/fohow.com/apps/controllers/granary_controller/init.go
  27. 0 22
      go/gopath/src/fohow.com/apps/controllers/invite_sale_controller/init.go
  28. 0 166
      go/gopath/src/fohow.com/apps/controllers/invite_sale_controller/invite_sale_controller.go
  29. 0 48
      go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_cashcz_controller.go
  30. 0 150
      go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_course_controller.go
  31. 0 184
      go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_dollar_win_controller.go
  32. 0 333
      go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_exchange_controller.go
  33. 0 233
      go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_invest_controller.go
  34. 0 63
      go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_reserve_controller.go
  35. 0 22
      go/gopath/src/fohow.com/apps/controllers/project_controller/init.go
  36. 0 195
      go/gopath/src/fohow.com/apps/controllers/project_controller/invest_controller.go
  37. 0 85
      go/gopath/src/fohow.com/apps/controllers/project_controller/invest_way_controller.go
  38. 0 215
      go/gopath/src/fohow.com/apps/controllers/project_controller/project_controller.go
  39. 0 131
      go/gopath/src/fohow.com/apps/controllers/project_controller/project_join_controller.go
  40. 0 237
      go/gopath/src/fohow.com/apps/controllers/rabbit_prize_draw_act_controller/rabbit_prize_draw_act_controller.go
  41. 0 202
      go/gopath/src/fohow.com/apps/controllers/railsadmin_controller/dollar_win_controller.go
  42. 0 151
      go/gopath/src/fohow.com/apps/controllers/refund_controller/refund_controller.go
  43. 0 298
      go/gopath/src/fohow.com/apps/controllers/reserve_act_controller/reserve_act_controller.go
  44. 0 22
      go/gopath/src/fohow.com/apps/controllers/subject_controller/init.go
  45. 0 206
      go/gopath/src/fohow.com/apps/controllers/subject_controller/product_sale_subject_controller.go
  46. 0 61
      go/gopath/src/fohow.com/apps/controllers/subject_controller/subject_sale_code_controller.go
  47. 0 176
      go/gopath/src/fohow.com/apps/models/cf_model/cf.go
  48. 0 10
      go/gopath/src/fohow.com/apps/models/cf_model/init.go
  49. 0 410
      go/gopath/src/fohow.com/apps/models/chunjie_model/chunjie.go
  50. 0 11
      go/gopath/src/fohow.com/apps/models/chunjie_model/init.go
  51. 0 61
      go/gopath/src/fohow.com/apps/models/click_model/click_model.go
  52. 0 7
      go/gopath/src/fohow.com/apps/models/click_model/init.go
  53. 0 313
      go/gopath/src/fohow.com/apps/models/copartner_model/copartner_model.go
  54. 0 13
      go/gopath/src/fohow.com/apps/models/copartner_model/init.go
  55. 0 311
      go/gopath/src/fohow.com/apps/models/course_model/balance.go
  56. 0 365
      go/gopath/src/fohow.com/apps/models/course_model/course.go
  57. 0 13
      go/gopath/src/fohow.com/apps/models/course_model/init.go
  58. 0 23
      go/gopath/src/fohow.com/apps/models/cow_order_model/init.go
  59. 0 77
      go/gopath/src/fohow.com/apps/models/cow_order_model/order.go
  60. 0 49
      go/gopath/src/fohow.com/apps/models/d5c_project/d5c_project.go
  61. 0 7
      go/gopath/src/fohow.com/apps/models/d5c_project/init.go
  62. 0 635
      go/gopath/src/fohow.com/apps/models/dollar_win_model/dollar_win.go
  63. 0 7
      go/gopath/src/fohow.com/apps/models/dollar_win_model/init.go
  64. 0 24
      go/gopath/src/fohow.com/apps/models/exchange_model/init.go
  65. 0 153
      go/gopath/src/fohow.com/apps/models/exchange_model/order.go
  66. 0 135
      go/gopath/src/fohow.com/apps/models/exchange_model/platform.go
  67. 0 25
      go/gopath/src/fohow.com/apps/models/granary_model/balance.go
  68. 0 29
      go/gopath/src/fohow.com/apps/models/granary_model/buyback.go
  69. 0 217
      go/gopath/src/fohow.com/apps/models/granary_model/granary.go
  70. 0 19
      go/gopath/src/fohow.com/apps/models/granary_model/init.go
  71. 0 306
      go/gopath/src/fohow.com/apps/models/granary_model/sale_order.go
  72. 0 7
      go/gopath/src/fohow.com/apps/models/invite_sale_model/init.go
  73. 0 332
      go/gopath/src/fohow.com/apps/models/invite_sale_model/invite_sale_reward_config.go
  74. 0 40
      go/gopath/src/fohow.com/apps/models/project_model/init.go
  75. 0 199
      go/gopath/src/fohow.com/apps/models/project_model/project.go
  76. 0 79
      go/gopath/src/fohow.com/apps/models/project_model/project_bonus.go
  77. 0 226
      go/gopath/src/fohow.com/apps/models/project_model/project_invest_way.go
  78. 0 554
      go/gopath/src/fohow.com/apps/models/project_model/project_join.go
  79. 0 75
      go/gopath/src/fohow.com/apps/models/project_model/project_picture.go
  80. 0 7
      go/gopath/src/fohow.com/apps/models/reserve_act_model/init.go
  81. 0 266
      go/gopath/src/fohow.com/apps/models/reserve_act_model/reserve_act.go
  82. 0 7
      go/gopath/src/fohow.com/apps/models/subject_model/init.go
  83. 0 193
      go/gopath/src/fohow.com/apps/models/subject_model/product_sale_subject.go
  84. 0 217
      go/gopath/src/fohow.com/apps/models/subject_model/sale_draw_code.go
  85. 0 9
      go/gopath/src/fohow.com/conf/app.conf
  86. 0 29
      go/gopath/src/fohow.com/libs/regist/one_click_binding_d5c.go
  87. 0 67
      go/gopath/src/fohow.com/libs/regist/regist_d5c.go
  88. 6 192
      go/gopath/src/fohow.com/routers/routes.go

+ 0 - 118
go/gopath/src/fohow.com/apps/controllers/cf_controller/cf_controller.go

@@ -1,118 +0,0 @@
-package cf_controller
-
-import (
-	"fmt"
-	// "net/url"
-	"strconv"
-	"strings"
-	"time"
-
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/context"
-
-	"fohow.com/apps"
-	// "api.com/apps/controllers/user_controller"
-	// "api.com/apps/models/daoku_model"
-	// "api.com/apps/models/duobao_model"
-	"fohow.com/apps/helpers"
-	"fohow.com/apps/models/cf_model"
-	// "api.com/apps/models/user_model"
-	// "api.com/apps/models/vas_model"
-	// "api.com/libs/wx_mp"
-	// "api.com/cache"
-	"fohow.com/apps/models/user_model"
-)
-
-var (
-	//需要校验用户登录的Action
-	exceptCheckUserLoginAction   = []string{"Click", "ClickIP"}
-	exceptCheckWxUserLoginAction = []string{""}
-)
-
-type CfController struct {
-	apps.BaseController
-}
-
-func (self *CfController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}
-
-func (self *CfController) Click() {
-	id, _ := strconv.ParseInt(self.Ctx.Input.Param(":id"), 10, 64)
-	useCache, _ := self.GetBool("cache", false)
-	cfc := cf_model.GetCfc(id, useCache)
-
-	var uri string
-	uri = fmt.Sprintf("%s/?cfc=wrong", beego.AppConfig.String("MHost"))
-	if cfc == nil {
-		self.Redirect(uri, 302)
-		return
-	}
-
-	wxUserId := self.GetCurrentWxUserId()
-	if wxUserId > 0 && cfc.InviterId > 0 {
-		go helpers.SetInviter(wxUserId, cfc.InviterId)
-	}
-
-	// 配置了注册渠道的
-	if cfc.SignUpChannelId > 0 {
-
-		//注册使用此cookie
-		age := 3600 * 24 * 7
-		self.Ctx.SetCookie("sign_up_channel", fmt.Sprintf("%d", cfc.SignUpChannelId), age, "/",
-			beego.AppConfig.String("CookieDomain"), nil, true)
-
-		if wxUserId > 0 {
-			wxUser := user_model.GetWxUserById(wxUserId, true)
-			if wxUser != nil && wxUser.ChannelQrcodeId == 0 && time.Now().Unix()-wxUser.CreatedAt.Unix() < 60 {
-				wxUser.ChannelQrcodeId = cfc.SignUpChannelId
-				wxUser.Save()
-			}
-		}
-	}
-
-	uri = cfc.Url
-
-	ip := self.Ctx.Input.IP()
-	uId := self.GetCurrentUserId()
-	wxUId := self.GetCurrentWxUserId()
-	cfc.ClickTimes = cfc.ClickTimes + 1
-	go cfc.Save()
-	cfuId := doClick(cfc.Id, uId, wxUId, ip)
-	if cfuId > 0 {
-		key := beego.AppConfig.String("CFName")
-		value := ""
-		c := self.Ctx.GetCookie(key)
-		if c == "" || !strings.Contains(c, fmt.Sprintf(",%d,", cfuId)) {
-			if c == "" {
-				value = fmt.Sprintf(",%d,", cfuId)
-			} else {
-				value = fmt.Sprintf("%s%d,", c, cfuId)
-			}
-			age := 3600 * 24
-			self.Ctx.SetCookie(key, value, age, "/",
-				beego.AppConfig.String("CookieDomain"), nil, true)
-		}
-	}
-	self.Redirect(uri, 302)
-}
-
-func doClick(cfcId, uId, wxUId int64, ip string) int64 {
-	cfu := cf_model.GetCfcUserByWxUId(cfcId, wxUId)
-	if cfu == nil {
-		cfu = new(cf_model.ClickFromUser).Create(cfcId, uId, wxUId, ip)
-	}
-	if cfu != nil {
-		cfu.ClickTimes = cfu.ClickTimes + 1
-		cfu.ClickLastTime = time.Now()
-		go cfu.Save()
-		return cfu.Id
-	}
-	return 0
-}
-
-func (self *CfController) ClickIP() {
-	self.Click()
-}

+ 0 - 513
go/gopath/src/fohow.com/apps/controllers/chunjie_controller/chunjie_controller.go

@@ -1,513 +0,0 @@
-package chunjie_controller
-
-import (
-	"strconv"
-	"time"
-
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"fohow.com/apps"
-	"fohow.com/apps/helpers"
-	"fohow.com/apps/models/chunjie_model"
-	"fohow.com/apps/models/user_model"
-	"fohow.com/cache"
-	"fohow.com/libs/tool"
-)
-
-const (
-	BIG_MONEY_TYPE             = int64(1)
-	SMALL_MONEY_TYPE           = int64(0)
-	SELF_OPEN_MONEY_SOURCE     = "SELF_OPEN"
-	INVITE_REWARD_MONEY_SOURCE = "INVITE_REWARD"
-	ACTIVITY_STATE_ON          = int64(1)
-	PARTICIPANT_IS_NEW         = int64(1)
-)
-
-//获取活动信息
-func (self *ChunjieController) GetConfigInfo() {
-	_configId := self.Ctx.Input.Param(":config_id")
-	configId, _ := strconv.ParseInt(_configId, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-	config := chunjie_model.GetConfigById(configId, useCache)
-	inviteId, _ := self.GetInt64("invite_id", 0)
-
-	//self.ReturnError(403, apps.ActivityIsEnd, "", nil)
-
-	if config == nil {
-		beego.BeeLogger.Error("-------------------活动不存在----------")
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	wxUser := self.GetCurrentWxUser(true)
-	//wxUser := user_model.GetByOpenid("o8HkVwAB4bNNuonBIozyZ_TcG99o", useCache)
-	if wxUser == nil {
-		beego.BeeLogger.Error("-------------------微信用户不存在----------")
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	participant := chunjie_model.GetParticipantByCIdAndWUId(config.Id, wxUser.Id, useCache)
-	// 若活动还在进行中,则初始化参加记录
-	now := time.Now().Unix()
-	if now > config.StartTime.Unix() && now < config.StopTime.Unix() && config.State == ACTIVITY_STATE_ON {
-
-		if participant == nil {
-			//判断是否是新人
-			isNew := int64(1)
-			if wxUser.IsRegisterInD5C() {
-				isNew = int64(0)
-			}
-			//记录IP
-			ip := self.Ctx.Input.IP()
-			if inviteId != 0 {
-				//校验inviteId一定要存在活动参与表里面,不能随便写
-				inviteParticipant := chunjie_model.GetParticipantByCIdAndWUId(config.Id, inviteId, useCache)
-				if inviteParticipant == nil {
-					beego.BeeLogger.Warn("-------------------邀请用户不存在----------")
-					inviteId = int64(0)
-				}
-			}
-			participant = new(chunjie_model.ChunjieParticipant).Create(config.Id, wxUser.Id, inviteId, isNew, ip)
-		}
-
-	}
-	type Ret struct {
-		Config      *chunjie_model.ChunjieConfig      `json:"act"`         //本次活动信息
-		Participant *chunjie_model.ChunjieParticipant `json:"participant"` //活动参与记录
-	}
-	self.Data["json"] = &Ret{Config: config, Participant: participant}
-	self.ServeJSON()
-}
-
-//生成红包记录
-func (self *ChunjieController) RobLuckyMoney() {
-	_configId := self.Ctx.Input.Param(":config_id")
-	configId, _ := strconv.ParseInt(_configId, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-	config := chunjie_model.GetConfigById(configId, useCache)
-
-	//活动是否存在
-	if config == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	//活动是否开始和结束
-	now := time.Now().Unix()
-	if now < config.StartTime.Unix() {
-		self.ReturnError(403, apps.ActivityNotStart, "", nil)
-	}
-	if now > config.StopTime.Unix() {
-		self.ReturnError(403, apps.ActivityIsEnd, "", nil)
-	}
-	if config.State != ACTIVITY_STATE_ON {
-		self.ReturnError(403, apps.ActivityIsEnd, "", nil)
-	}
-	wxUser := self.GetCurrentWxUser(true)
-	//wxUser := user_model.GetByOpenid("o8HkVwAB4bNNuonBIozyZ_TcG99o", useCache)
-	if wxUser == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	//没有参加记录,非法
-	participant := chunjie_model.GetParticipantByCIdAndWUId(config.Id, wxUser.Id, useCache)
-	if participant == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	//是否已经领取
-	isJoinBefore := chunjie_model.IsJoinBefore(config.Id, wxUser.Id, useCache)
-	if isJoinBefore {
-		self.ReturnError(403, apps.HasGotLuckyMoney, "", nil)
-	}
-	//拿红包
-	//根据红包领取规则获取红包类型和金额
-	selfGetLuckyMoney := CreateRandSelfOpenLuckyMoney(participant, config, SELF_OPEN_MONEY_SOURCE)
-
-	//红包类型是大红包
-	relateLuckyMoney := int64(0)
-	if selfGetLuckyMoney.MoneyType == BIG_MONEY_TYPE {
-		//是否有邀请者(不是0和当前微信用户主键)
-		if participant.InviteWxUId != 0 && participant.InviteWxUId != participant.WxUId {
-			inviteWxUser := user_model.GetWxUserById(participant.InviteWxUId, useCache)
-
-			if inviteWxUser == nil {
-				self.ReturnError(403, apps.Error, "", nil)
-			}
-			//为邀请者生成红包记录
-			inviteGetLuckyMoney := CreateInviteRewardRandLuckyMoney(selfGetLuckyMoney, participant, config, INVITE_REWARD_MONEY_SOURCE, useCache)
-			//给邀请者发一个红包
-			inviteRewardLuckyMoney := new(chunjie_model.ChunjieLuckyMoney).Create(config.Id, inviteWxUser.Id, inviteGetLuckyMoney.MoneyType, inviteGetLuckyMoney.ReceiveBonus, int64(0), inviteGetLuckyMoney.MoneySource)
-			if inviteRewardLuckyMoney == nil {
-			}
-			//添加一条推送通知
-			helpers.UserBalanceChangedNotify(*inviteWxUser, tool.Int64ToFloat64ToString(inviteRewardLuckyMoney.ReceiveBonus, 100)+"元", "新春红包", "哇!你的好友拿了一个大红包,你也得到了一个大红包!", "pages/start/start?url=pages/activity/redpacket/redpacket&rid=1")
-			cache.Cache.Delete(fmt.Sprintf("chunjie_model.GetSelfReceiveBonus[%d,%d]", configId, inviteWxUser.Id))
-			//用户自己打开的大红包记录,要记住给邀请者奖励的红包金额
-			relateLuckyMoney = inviteGetLuckyMoney.ReceiveBonus
-
-		}
-	}
-
-	//给自己发一个红包
-	selfOpenLuckyMoney := new(chunjie_model.ChunjieLuckyMoney).Create(config.Id, wxUser.Id, selfGetLuckyMoney.MoneyType, selfGetLuckyMoney.ReceiveBonus, relateLuckyMoney, selfGetLuckyMoney.MoneySource)
-	if selfOpenLuckyMoney == nil {
-		return
-	}
-
-	//推送一条通知
-	helpers.UserBalanceChangedNotify(*wxUser, tool.Int64ToFloat64ToString(selfOpenLuckyMoney.ReceiveBonus, 100)+"元", "新春红包", "找好友一起拿大红包!好友拿了大红包,你一定少不了!", "pages/start/start?url=pages/activity/redpacket/redpacket&rid=1")
-
-	//清除自己的红包记录缓存
-	cache.Cache.Delete(fmt.Sprintf("chunjie_model.GetLuckyMoneyItemByCIdAndWxUId[%d,%d]", config.Id, wxUser.Id))
-	cache.Cache.Delete(fmt.Sprintf("chunjie_model.GetSelfReceiveBonus[%d,%d]", configId, wxUser.Id))
-
-	//返回红包记录
-	type Ret struct {
-		SelfOpenLuckyMoney *chunjie_model.ChunjieLuckyMoney `json:"self_open_lucky_money"`
-	}
-
-	self.Data["json"] = &Ret{SelfOpenLuckyMoney: selfOpenLuckyMoney}
-	self.ServeJSON()
-}
-
-//获取自己领取的红包类型和金额
-func CreateRandSelfOpenLuckyMoney(participant *chunjie_model.ChunjieParticipant, config *chunjie_model.ChunjieConfig, moneySource string) *chunjie_model.ChunjieLuckyMoney {
-	if participant == nil || config == nil {
-		return nil
-	}
-
-	//SELF_OPEN
-	suffix := strconv.FormatInt(participant.Id%10, 10)
-	isSatisfyNumbers := tool.JudgeEndInCharacter(suffix, config.LuckyNumbers)
-	isNew := participant.IsNew == PARTICIPANT_IS_NEW
-	moneyType := SMALL_MONEY_TYPE
-	receiveBonus := int64(0)
-	if moneySource == SELF_OPEN_MONEY_SOURCE {
-
-		if isSatisfyNumbers {
-			moneyType = BIG_MONEY_TYPE
-			if isNew {
-				receiveBonus = tool.RandInt64(config.BigNewBonusMin, config.BigNewBonusMax)
-			} else {
-				receiveBonus = tool.RandInt64(config.BigOldBonusMin, config.BigOldBonusMax)
-			}
-		} else {
-			moneyType = SMALL_MONEY_TYPE
-			if isNew {
-				receiveBonus = tool.RandInt64(config.SmallNewBonusMin, config.SmallNewBonusMax)
-			} else {
-				receiveBonus = tool.RandInt64(config.SmallOldBonusMin, config.SmallOldBonusMax)
-			}
-
-		}
-
-	}
-	chunjieLuckyMoney := new(chunjie_model.ChunjieLuckyMoney)
-	chunjieLuckyMoney.MoneyType = moneyType
-	chunjieLuckyMoney.MoneySource = moneySource
-	chunjieLuckyMoney.ReceiveBonus = receiveBonus
-	return chunjieLuckyMoney
-}
-
-//获取给邀请人奖励的红包金额:受邀者获取的大红包的一个随机比例,比例可以配置
-func CreateInviteRewardRandLuckyMoney(selfOpenLuckyMoney *chunjie_model.ChunjieLuckyMoney, participant *chunjie_model.ChunjieParticipant, config *chunjie_model.ChunjieConfig, moneySource string, useCache bool) *chunjie_model.ChunjieLuckyMoney {
-
-	if selfOpenLuckyMoney == nil || config == nil || participant == nil {
-		return nil
-	}
-
-	//INVITE_REWARD_MONEY_SOURCE
-	moneyType := int64(-1) //奖励红包不分大小红包
-	receiveBonus := int64(0)
-	inviterAllReceiveBonus := chunjie_model.GetAllReceiveBonus(config.Id, participant.InviteWxUId, useCache)
-	isOverLimit := inviterAllReceiveBonus > config.BonusLimit
-	if moneySource == INVITE_REWARD_MONEY_SOURCE {
-		if isOverLimit {
-			receiveBonus = int64(1)
-		} else {
-			rewardProportion := tool.RandInt64(config.RewardProportionMin, config.RewardProportionMax)
-			receiveBonus = selfOpenLuckyMoney.ReceiveBonus * rewardProportion / 100
-		}
-	}
-	chunjieLuckyMoney := new(chunjie_model.ChunjieLuckyMoney)
-	chunjieLuckyMoney.MoneyType = moneyType
-	chunjieLuckyMoney.MoneySource = moneySource
-	chunjieLuckyMoney.ReceiveBonus = receiveBonus
-	return chunjieLuckyMoney
-
-}
-
-//获取个人总金额(自己领取的+邀请奖励的)
-func (self *ChunjieController) GetTotalLuckyMoney() {
-	_configId := self.Ctx.Input.Param(":config_id")
-	configId, _ := strconv.ParseInt(_configId, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-
-	config := chunjie_model.GetConfigById(configId, useCache)
-	if config == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	type Ret struct {
-		AllReceiveBonus   int64 `json:"self_receive_bonus"`
-		InviteRewardBonus int64 `json:"invite_reward_bonus"`
-	}
-
-	wxUser := self.GetCurrentWxUser(true)
-	//wxUser := user_model.GetByOpenid("omtkY0SeyOmvAzgLcq84LtwbhwJs", useCache)
-	if wxUser == nil {
-		self.Data["json"] = &Ret{AllReceiveBonus: 0, InviteRewardBonus: 0}
-	} else {
-		allReceiveBonus := chunjie_model.GetAllReceiveBonus(config.Id, wxUser.Id, useCache)
-		self.Data["json"] = &Ret{AllReceiveBonus: allReceiveBonus, InviteRewardBonus: 0}
-	}
-	self.ServeJSON()
-}
-
-//获取最新当前序号
-func (self *ChunjieController) GetCurrentSequenceNumber() {
-	_configId := self.Ctx.Input.Param(":config_id")
-	configId, _ := strconv.ParseInt(_configId, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-
-	config := chunjie_model.GetConfigById(configId, useCache)
-	if config == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	lastInsertId := chunjie_model.GetLastInsertId(config.Id)
-
-	type Ret struct {
-		Participant int64 `json:"newest_participant"` //最新参与记录
-	}
-	self.Data["json"] = &Ret{Participant: lastInsertId}
-	self.ServeJSON()
-}
-
-//邀请者列表
-func (self *ChunjieController) GetMeAndFriendLuckyMoneyList() {
-
-	_configId := self.Ctx.Input.Param(":config_id")
-	configId, _ := strconv.ParseInt(_configId, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 20)
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-
-	config := chunjie_model.GetConfigById(configId, useCache)
-	if config == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	type Item struct {
-		Rank          int64                         `json:"rank"`
-		WxUser        *user_model.WxUser            `json:"wx_user"`
-		LuckMoneyItem *chunjie_model.LuckyMoneyItem `json:"lucky_money"`
-		IsMe          int64                         `json:"is_me"`
-	}
-
-	var itemList []*Item = []*Item{}
-	itemListCount := int64(0)
-
-	var luckyMoneyList []*chunjie_model.LuckyMoneyItem
-	//用户不存在
-	wxUser := self.GetCurrentWxUser(true)
-	//wxUser := user_model.GetByOpenid("omtkY0SeyOmvAzgLcq84LtwbhwJs", useCache)
-	if wxUser == nil {
-		itemListCount = 0
-	} else {
-		//我与好友的红包记录
-		luckyMoneyList = chunjie_model.GetInviteLuckyMoneyList(config.Id, wxUser.Id, page, perPage, useCache)
-		itemListCount = chunjie_model.GetInviteLuckyMoneyListCount(config.Id, wxUser.Id, useCache)
-		if luckyMoneyList != nil {
-			for _, each := range luckyMoneyList {
-				item := new(Item)
-				item.Rank = each.Rank //(page-1)*perPage + (int64(i) + 1)
-
-				each.InviteRewardBonus = each.RelateId
-				item.LuckMoneyItem = each
-
-				wxUserEach := user_model.GetWxUserById(each.WxUId, useCache)
-				if wxUserEach != nil {
-					wxUserEach.Head = user_model.GetFullImgUrl(wxUserEach.Head)
-				}
-				item.WxUser = wxUserEach
-				//标志自己的红包
-				if each.WxUId == wxUser.Id {
-					item.IsMe = int64(1)
-				} else {
-					item.IsMe = int64(0)
-				}
-				itemList = append(itemList, item)
-			}
-		}
-	}
-	type Ret struct {
-		ItemList      []*Item `json:"list"`
-		ItemListCount int64   `json:"list_count"`
-	}
-	self.Data["json"] = &Ret{ItemList: itemList, ItemListCount: itemListCount}
-	self.ServeJSON()
-}
-
-//领取红包列表
-func (self *ChunjieController) GetOpenLuckyMoneyList() {
-	_configId := self.Ctx.Input.Param(":config_id")
-	configId, _ := strconv.ParseInt(_configId, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 20)
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-
-	config := chunjie_model.GetConfigById(configId, useCache)
-	if config == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	type Item struct {
-		Rank          int64                         `json:"rank"`
-		WxUser        *user_model.WxUser            `json:"wx_user"`
-		LuckMoneyItem *chunjie_model.LuckyMoneyItem `json:"lucky_money"`
-		IsMe          int64                         `json:"is_me"`
-	}
-
-	var itemList []*Item = []*Item{}
-	itemListCount := int64(0)
-	var luckyMoneyList []*chunjie_model.LuckyMoneyItem
-
-	//所有领取人红包记录
-	luckyMoneyList = chunjie_model.GetReceiveLuckyMoneyList(config.Id, page, perPage, useCache)
-	itemListCount = chunjie_model.GetReceiveLuckyMoneyListCount(config.Id, useCache)
-
-	if luckyMoneyList != nil {
-		for _, each := range luckyMoneyList {
-			item := new(Item)
-			item.Rank = each.Rank
-			item.LuckMoneyItem = each
-			wxUser := user_model.GetWxUserById(each.WxUId, useCache)
-			if wxUser != nil {
-				wxUser.Head = user_model.GetFullImgUrl(wxUser.Head)
-			}
-			item.WxUser = wxUser
-			itemList = append(itemList, item)
-		}
-	}
-
-	type Ret struct {
-		ItemList      []*Item `json:"list"`
-		ItemListCount int64   `json:"list_count"`
-	}
-
-	self.Data["json"] = &Ret{ItemList: itemList, ItemListCount: itemListCount}
-	self.ServeJSON()
-}
-
-//发放总金额
-func (self *ChunjieController) GetGiveOutMoney() {
-	_configId := self.Ctx.Input.Param(":config_id")
-	configId, _ := strconv.ParseInt(_configId, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-	config := chunjie_model.GetConfigById(configId, useCache)
-	if config == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	type Ret struct {
-		GiveOutTotalMoney int64 `json:"give_out_total_money"`
-	}
-	giveOutTotalMoney := chunjie_model.GetTotalGiveOutMoneyByConfigId(config.Id, useCache)
-	self.Data["json"] = &Ret{GiveOutTotalMoney: giveOutTotalMoney}
-	self.ServeJSON()
-}
-
-func (self *ChunjieController) Stat() {
-	configId, _ := strconv.ParseInt(self.Ctx.Input.Param(":config_id"), 10, 64)
-	config := chunjie_model.GetConfigById(configId, true)
-
-	type StatInfo struct {
-		StartTimestamp          int64 `json:"start_timestamp"`            // 活动开始时间
-		EndTimestamp            int64 `json:"end_timestamp"`              // 活动结束时间
-		ParticipantsCount       int64 `json:"participantsCount"`          // 总参加人数
-		ParticipantsNewCount    int64 `json:"participants_new_count"`     // 参加新人数
-		IsInvitedCount          int64 `json:"is_invited_count"`           // 被邀请参加人数
-		HongbaoCount            int64 `json:"hongbao_count"`              // 红包个数
-		HongbaoMoneyTotal       int64 `json:"hongbao_money_total"`        // 已发放红包总额
-		HongbaoBigCount         int64 `json:"hongbao_big_count"`          // "大"红包个数数量
-		HongbaoBigMoneyTotal    int64 `json:"hongbao_big_money_total"`    // "大"红包已发放总额
-		HongbaoCommonCount      int64 `json:"hongbao_common_count"`       // "普通"红包个数数量
-		HongbaoCommonMoneyTotal int64 `json:"hongbao_common_money_total"` // "普通"红包已发放总额
-		HongbaoNotOpenCount     int64 `json:"hongbao_not_open_count"`     // 红包未拆总数
-	}
-	statInfo := StatInfo{}
-	self.Data["json"] = &statInfo
-	statInfo.StartTimestamp = config.StartTime.Unix()
-	statInfo.EndTimestamp = config.StopTime.Unix()
-	statInfo.ParticipantsCount = chunjie_model.GetLastInsertId(configId)
-	statInfo.HongbaoMoneyTotal = chunjie_model.GetTotalGiveOutMoneyByConfigId(configId, false)
-
-	type TmpValue struct {
-		Value int64
-	}
-	tmpValue := &TmpValue{}
-	//sql := fmt.Sprintf(" select sum(receive_bonus) as total from %s where config_id = ? ", "chunjie_lucky_moneys")
-	o := orm.NewOrm()
-
-	sql := fmt.Sprintf(" select count(*) as value from chunjie_participants where config_id = ? AND invite_wx_uid>0")
-	o.Raw(sql, configId).QueryRow(tmpValue)
-	statInfo.IsInvitedCount = tmpValue.Value
-
-	sql = fmt.Sprintf(" select sum(receive_bonus) as value from chunjie_lucky_moneys where config_id = ?  AND money_type=?")
-	o.Raw(sql, configId, BIG_MONEY_TYPE).QueryRow(tmpValue)
-	statInfo.HongbaoBigMoneyTotal = tmpValue.Value
-	statInfo.HongbaoCommonMoneyTotal = statInfo.HongbaoMoneyTotal - statInfo.HongbaoBigMoneyTotal
-
-	sql = fmt.Sprintf(" select count(*) as value from chunjie_lucky_moneys where config_id = ?")
-	o.Raw(sql, configId).QueryRow(tmpValue)
-	statInfo.HongbaoCount = tmpValue.Value
-
-	sql = fmt.Sprintf(" select count(*) as value from chunjie_lucky_moneys where config_id = ?  AND money_type=?")
-	o.Raw(sql, configId, BIG_MONEY_TYPE).QueryRow(tmpValue)
-	statInfo.HongbaoBigCount = tmpValue.Value
-	statInfo.HongbaoCommonCount = statInfo.HongbaoCount - statInfo.HongbaoBigCount
-	statInfo.HongbaoNotOpenCount = statInfo.ParticipantsCount - statInfo.HongbaoCount
-
-	sql = fmt.Sprintf(" select count(*) as value from chunjie_participants where config_id = ? AND is_new=1")
-	o.Raw(sql, configId).QueryRow(tmpValue)
-	statInfo.ParticipantsNewCount = tmpValue.Value
-
-	self.ServeJSON()
-}
-
-func (self *ChunjieController) ReportTest() {
-	var _list []*chunjie_model.LuckyMoneyItem
-	startIndex, perPage := 0, 10000
-	sql := fmt.Sprintf(" SELECT cp.wx_uid,clm.money_source,clm.money_type,clm.receive_bonus,clm.relate_id FROM `chunjie_participants` cp LEFT JOIN `chunjie_lucky_moneys` clm on clm.wx_uid = cp.wx_uid WHERE cp.config_id = 1 AND clm.money_type = '1' AND clm.`money_source`='SELF_OPEN' limit %d,%d", startIndex, perPage)
-	o := orm.NewOrm()
-	_, err := o.Raw(sql).QueryRows(&_list)
-	if err != nil {
-	}
-
-	for _, each := range _list {
-		bonus := each.RelateId // 这个是给予邀请这的奖励金额
-		participant := chunjie_model.GetParticipantByCIdAndWUId(int64(1), each.WxUId, false)
-
-		inviteWxUId := participant.InviteWxUId
-		// 查找邀请者,是否有相应红包记录,
-		lm := new(chunjie_model.ChunjieLuckyMoney)
-		count, _ := orm.NewOrm().QueryTable(lm).Filter("config_id", 1).Filter("money_source", chunjie_model.INVITE_REWARD_MONEY_SOURCE).Filter("wx_uid", inviteWxUId).Filter("receive_bonus", bonus).Count()
-
-		recordId := int64(0)
-		if count > 0 {
-			beego.BeeLogger.Info("(((((has record)))))")
-		} else {
-			beego.BeeLogger.Info("(((((no record)))))")
-			// 增加红包记录
-			item := new(chunjie_model.ChunjieLuckyMoney).Create(int64(1), inviteWxUId, -1, bonus, int64(0), chunjie_model.INVITE_REWARD_MONEY_SOURCE)
-			if item != nil {
-				recordId = item.Id
-			}
-		}
-		beego.BeeLogger.Error("MoneyType[%d]--WxUId=[%d]--bonus=[%d]--inveiteWxUserId[%d]--recordId=[%d]", each.MoneyType, each.WxUId, bonus, inviteWxUId, recordId)
-	}
-	self.ServeJSON()
-
-}

+ 0 - 23
go/gopath/src/fohow.com/apps/controllers/chunjie_controller/init.go

@@ -1,23 +0,0 @@
-package chunjie_controller
-
-import (
-	"github.com/astaxie/beego/context"
-
-	"fohow.com/apps"
-)
-
-var (
-	//以下Action无需登录校验,exceptCheckUserLoginAction = []string{"*"} *代表全部不需要
-	exceptCheckUserLoginAction   = []string{"ReportTest", "GetConfigInfo", "GetTotalLuckyMoney", "GetCurrentSequenceNumber", "GetOpenLuckyMoneyList", "GetMeAndFriendLuckyMoneyList", "GetGiveOutMoney", "RobLuckyMoney", "Stat"}
-	exceptCheckWxUserLoginAction = []string{"ReportTest", "Stat", "GetGiveOutMoney", "GetOpenLuckyMoneyList"} //GetConfigInfo", "GetTotalLuckyMoney", "GetCurrentSequenceNumber", "GetOpenLuckyMoneyList", "GetMeAndFriendLuckyMoneyList", "GetGiveOutMoney", "RobLuckyMoney
-)
-
-type ChunjieController struct {
-	apps.BaseController
-}
-
-func (self *ChunjieController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}

+ 0 - 44
go/gopath/src/fohow.com/apps/controllers/click_controller/click_controller.go

@@ -1,44 +0,0 @@
-package click_controller
-
-import (
-	"github.com/astaxie/beego/context"
-	"fohow.com/apps"
-	"fohow.com/apps/models/click_model"
-)
-
-var (
-	//以下Action无需登录校验,exceptCheckUserLoginAction = []string{"*"} *代表全部不需要
-	exceptCheckUserLoginAction   = []string{"DoClick"}
-	exceptCheckWxUserLoginAction = []string{"DoClick"}
-)
-
-type ClickController struct {
-	apps.BaseController
-}
-
-func (self *ClickController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}
-
-func (self *ClickController) DoClick() {
-
-	cc := self.GetString("cc")
-	ri := self.GetString("ri")
-	rp := self.GetString("rp")
-
-	uId := self.GetCurrentWxUserId()
-
-	click := click_model.GetClickInfoByWxUIdAndRelateCodeAndRelateId(cc, ri, rp, uId)
-
-	if click == nil {
-		new(click_model.ClickInfo).Insert(cc, ri, rp, uId)
-	} else {
-		click.ClickTimes = click.ClickTimes + 1
-		click.Save()
-	}
-
-	self.Data["json"] = click
-	self.ServeJSON()
-}

+ 0 - 185
go/gopath/src/fohow.com/apps/controllers/consume_czc_order_controller/consume_czc_order_controller.go

@@ -1,185 +0,0 @@
-package consume_czc_order_controller
-
-import (
-	"crypto/aes"
-	"crypto/cipher"
-	"encoding/base64"
-	"fmt"
-	"fohow.com/apps"
-	"fohow.com/apps/models/order_model"
-	"fohow.com/apps/models/pay_model"
-	"fohow.com/apps/models/product_model"
-	"fohow.com/apps/models/user_model"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/context"
-	"regexp"
-	"strconv"
-	"time"
-)
-
-var (
-	//需要校验用户登录的Action
-	exceptCheckUserLoginAction   = []string{"OrderLabiProduct"}
-	exceptCheckWxUserLoginAction = []string{"OrderLabiProduct"}
-)
-
-type ConsumeCzcOrderController struct {
-	apps.BaseController
-}
-
-func (self *ConsumeCzcOrderController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}
-
-//第五创奶油平台筹中筹,支付时(个人购买/团购众筹)收货地址时在FOHOW玖玖商城下单。
-func (self *ConsumeCzcOrderController) OrderLabiProduct() {
-	key := beego.AppConfig.String("CzcOrderProductKey")
-	// key := []byte("1234567890123456")
-	params := self.GetString("params")
-	ciphertext, _ := base64.StdEncoding.DecodeString(params)
-	block, err := aes.NewCipher([]byte(key))
-	if err != nil {
-		beego.BeeLogger.Error("aes newcipher err:%s", err)
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-
-	// The IV needs to be unique, but not secure. Therefore it's common to
-	// include it at the beginning of the ciphertext.
-	if len(ciphertext) < aes.BlockSize {
-		beego.BeeLogger.Error("ciphertext too short")
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-	iv := ciphertext[:aes.BlockSize]
-	ciphertext = ciphertext[aes.BlockSize:]
-
-	stream := cipher.NewCFBDecrypter(block, iv)
-
-	// XORKeyStream can work in-place if the two arguments are the same.
-	stream.XORKeyStream(ciphertext, ciphertext)
-	// beego.BeeLogger.Warn("plain params:%s", ciphertext)
-	type LabiOrderProductReturn struct {
-		RetCode string `json:"ret_code"`
-		RetMsg  string `json:"ret_msg"`
-		OrderId string `json:"order_id"`
-	}
-
-	regTel := regexp.MustCompile(`tel=([0-9]+)`)
-	matchTel := regTel.FindSubmatch([]byte(ciphertext))
-
-	regOId := regexp.MustCompile(`orderid=([A-Za-z0-9]+)`)
-	matchcOId := regOId.FindSubmatch([]byte(ciphertext))
-
-	regAddr := regexp.MustCompile(`address=([a-z0-9A-Z\p{Han}]+((,|,|-|_| |(|)|\)|\()[a-z0-9A-Z\p{Han}]+)*)`)
-	matchAddr := regAddr.FindSubmatch([]byte(ciphertext))
-
-	regContact := regexp.MustCompile(`contact=([a-z0-9A-Z\p{Han}]+((,|,|-|_| |(|)|\)|\()[a-z0-9A-Z\p{Han}]+)*)`)
-	matchContact := regContact.FindSubmatch([]byte(ciphertext))
-
-	regCount := regexp.MustCompile(`count=([0-9]+)`)
-	matchcCount := regCount.FindSubmatch([]byte(ciphertext))
-
-	regUserId := regexp.MustCompile(`userid=([0-9]+)`)
-	matchcUserId := regUserId.FindSubmatch([]byte(ciphertext))
-
-	if len(matchTel) < 2 || len(matchcOId) < 2 || len(matchAddr) < 2 || len(matchContact) < 2 || len(matchcCount) < 2 || len(matchcUserId) < 2 {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0001",
-			RetMsg:  "参数错误",
-			OrderId: "",
-		}, true, true)
-		self.StopRun()
-	}
-
-	_count := fmt.Sprintf("%s", matchcCount[1])
-	count, _ := strconv.ParseInt(_count, 10, 64)
-	_userId := fmt.Sprintf("%s", matchcUserId[1])
-	userId, _ := strconv.ParseInt(_userId, 10, 64)
-	orderId := fmt.Sprintf("%s", matchcOId[1])
-	tel := fmt.Sprintf("%s", matchTel[1])
-	address := fmt.Sprintf("%s", matchAddr[1])
-	contact := fmt.Sprintf("%s", matchContact[1])
-
-	if count == 0 || userId == 0 {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0001",
-			RetMsg:  "参数错误",
-			OrderId: orderId,
-		}, true, true)
-		self.StopRun()
-	}
-
-	remark := fmt.Sprintf("czc_%s_%d", orderId, userId)
-	existOrder := order_model.GetOrderByOrderRemark(remark, true)
-	if existOrder != nil {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0002",
-			RetMsg:  "不能重复下单",
-			OrderId: orderId,
-		}, true, true)
-		self.StopRun()
-	}
-
-	//写死产品id和下单员id
-	productId := int64(60)
-	orderUserId := int64(603363)
-	beego.BeeLogger.Warn("---OrderProductInRabbit---runmode:%s", beego.BConfig.RunMode)
-	if beego.BConfig.RunMode == beego.DEV {
-		productId = int64(24)
-		orderUserId = int64(600116)
-	}
-	labiProduct := product_model.GetProductById(productId, true)
-
-	beego.BeeLogger.Warn("-----%v", labiProduct)
-
-	wxUserId := int64(0)
-	wxUser := user_model.GetWxUserByUserId(orderUserId, true)
-	if wxUser != nil {
-		wxUserId = wxUser.Id
-	}
-
-	order := new(order_model.Order).Create(wxUserId, orderUserId, labiProduct.Id, count,
-		labiProduct.RoboBalancePrice*count, labiProduct.BuyPrice*count, labiProduct.Price, labiProduct.RoboBalancePrice, order_model.SOURCE_D5C_SYS)
-
-	if order == nil {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0003",
-			RetMsg:  "下单失败",
-			OrderId: orderId,
-		}, true, true)
-		self.StopRun()
-	}
-
-	order.Status = order_model.STATUS_PROCESSING
-	order.PaiedAt = time.Now().Unix()
-	order.PaiedPrice = order.TotalPrice
-	order.PayWay = pay_model.PAYWAY_BALANCE
-	order.OrderRemark = remark
-	order.Address = address
-	order.Contact = contact
-	order.Tel = tel
-
-	if !order.Save() {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0003",
-			RetMsg:  "下单失败",
-			OrderId: orderId,
-		}, true, true)
-		self.StopRun()
-	}
-
-	ok := &LabiOrderProductReturn{
-		RetCode: "0000",
-		RetMsg:  "下单成功",
-		OrderId: order.OrderId,
-	}
-	self.Ctx.Output.SetStatus(200)
-	self.Ctx.Output.JSON(ok, true, true)
-	self.StopRun()
-}

+ 0 - 147
go/gopath/src/fohow.com/apps/controllers/copartner_controller/copartner_controller.go

@@ -1,147 +0,0 @@
-package copartner_controller
-
-import (
-	"fohow.com/apps"
-	"fohow.com/apps/models/copartner_model"
-	"fohow.com/apps/models/project_model"
-	"fohow.com/apps/models/user_model"
-	"sync"
-	"time"
-)
-
-func (self *CopartnerController) Get() {
-	useCache, _ := self.GetBool("cache", true)
-
-	config := copartner_model.GetLastCopartnerRecruitConfig(useCache)
-	if config == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	config.StartAt = config.StartTime.Unix()
-	config.StopAt = config.StopTime.Unix()
-	config.ShareImg = self.GetFullImgUrl(config.ShareImg)
-
-	wxUser := self.GetCurrentWxUser(useCache)
-
-	type Ret struct {
-		CopartnerState int64                                   `json:"copartner_state"`
-		Config         *copartner_model.CopartnerRecruitConfig `json:"config"`
-	}
-
-	self.Data["json"] = &Ret{CopartnerState: wxUser.CopartnerState, Config: config}
-	self.ServeJSON()
-}
-
-//扫合伙人招募令按钮的api
-var beCopartnerLock sync.Mutex
-
-func (self *CopartnerController) GetText() {
-
-	useCache, _ := self.GetBool("cache", true)
-
-	config := copartner_model.GetLastCopartnerRecruitConfig(false)
-
-	now := time.Now().Unix()
-	if config == nil || config.StopTime.Unix() < now || now < config.StartTime.Unix() {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	user := self.GetCurrentUser(useCache)
-	wxUser := self.GetCurrentWxUser(useCache)
-	//判断成为合伙人逻辑
-	defer beCopartnerLock.Unlock()
-	beCopartnerLock.Lock()
-
-	var articleUrl string
-
-	if user != nil {
-		if wxUser.CopartnerState == user_model.COPARTNER_STATE_NO {
-			investAmount := project_model.GetUserHadSuccessInvest(user.Id, useCache)
-			if investAmount > 0 {
-				partnerCount := user_model.GetCountByWxUserCopartnerState(user_model.COPARTNER_STATE_YES, false)
-				if partnerCount < config.CopartnerCount { //未超过人数
-					wxUser.CopartnerState = user_model.COPARTNER_STATE_YES
-					wxUser.BeCopartnerTime = time.Now()
-					wxUser.SecondProductBenefitRate = config.SecondProductBenefitRate
-					wxUser.Save()
-					articleUrl = config.GuideEngroupArticle
-				} else {
-					//合伙人超过人数
-					articleUrl = config.OverCountArticle
-				}
-			} else {
-				articleUrl = config.GuideGrbuyArticle
-			}
-		} else if wxUser.CopartnerState == user_model.COPARTNER_STATE_YES {
-			articleUrl = config.GuideEngroupArticle
-		} else {
-			articleUrl = config.GuideRecoverArticle
-		}
-	} else {
-		articleUrl = config.GuideJoinArticle
-	}
-
-	//self.Redirect(articleUrl, 302)
-	type Ret struct {
-		CopartnerState int64  `json:"copartner_state"`
-		ArticleUrl     string `json:"article_url"`
-	}
-
-	self.Data["json"] = &Ret{CopartnerState: wxUser.CopartnerState, ArticleUrl: articleUrl}
-	self.ServeJSON()
-}
-
-//贡献值总数据
-func (self *CopartnerController) GetContributionTotal() {
-
-	cache, _ := self.GetBool("cache", false)
-	type Ret struct {
-		SelfContribute int64 `json:"self_contribute"`
-		PlatContribute int64 `json:"plat_contribute"`
-		PlatfromPcount int64 `json:"platfrom_pcount"`
-	}
-	wxUser := self.GetCurrentWxUser(cache)
-
-	selfContribute, _ := copartner_model.GetCopartnerContributionSumByBenefitWxUId(wxUser.Id)
-
-	platContribute := copartner_model.GetCopartnerContributionSum(cache)
-
-	//platformPcount := copartner_model.GetCopartnerContributionPCount(cache)
-	platformPcount := user_model.GetCountByWxUserCopartnerState(user_model.COPARTNER_STATE_YES, cache)
-
-	self.Data["json"] = &Ret{SelfContribute: selfContribute, PlatContribute: platContribute, PlatfromPcount: platformPcount}
-
-	self.ServeJSON()
-
-}
-
-func (self *CopartnerController) GetContributions() {
-
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 20)
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-	cache, _ := self.GetBool("cache", false)
-
-	wxUser := self.GetCurrentWxUser(cache)
-
-	list := copartner_model.GetContributionListByBenefitWxUId(page, perPage, wxUser.Id, cache)
-
-	for _, item := range list {
-		item.CTime = item.CreatedAt.Unix()
-	}
-	if list == nil {
-		list = make([]*copartner_model.CopartnerContribution, 0, 0)
-	}
-
-	listCount := copartner_model.GetContributionListCountByBenefitWxUId(wxUser.Id, cache)
-
-	type Ret struct {
-		List      []*copartner_model.CopartnerContribution `json:"list"`
-		ListCount int64                                    `json:"list_count"`
-	}
-
-	self.Data["json"] = &Ret{ListCount: listCount, List: list}
-	self.ServeJSON()
-}

+ 0 - 22
go/gopath/src/fohow.com/apps/controllers/copartner_controller/init.go

@@ -1,22 +0,0 @@
-package copartner_controller
-
-import (
-	"github.com/astaxie/beego/context"
-	"fohow.com/apps"
-)
-
-var (
-	//以下Action无需登录校验,exceptCheckUserLoginAction = []string{"*"} *代表全部不需要
-	exceptCheckUserLoginAction   = []string{"*"}
-	exceptCheckWxUserLoginAction = []string{""}
-)
-
-type CopartnerController struct {
-	apps.BaseController
-}
-
-func (self *CopartnerController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}

+ 0 - 431
go/gopath/src/fohow.com/apps/controllers/course_controller/course_controller.go

@@ -1,431 +0,0 @@
-package course_controller
-
-import (
-	"fmt"
-	// "math/rand"
-	"encoding/json"
-	"strconv"
-	// "strings"
-	"time"
-
-	"sync"
-	// "github.com/alidayu"
-	"github.com/astaxie/beego"
-	// "github.com/astaxie/beego/context"
-	// "github.com/astaxie/beego/httplib"
-
-	"fohow.com/apps"
-	// "fohow.com/apps/controllers/user_controller"
-	"fohow.com/apps/models/course_model"
-	"fohow.com/apps/models/user_model"
-	// "fohow.com/cache"
-	"fohow.com/libs/tool"
-	"fohow.com/libs/wx_mp"
-)
-
-func (self *CourseController) LatestCourse() {
-	cache, _ := self.GetBool("cache", true)
-	code := self.GetString("invite_code")
-	course := course_model.GetLatestCourse(cache)
-	url := "https://m.d5ct.com"
-	if course != nil {
-		url = fmt.Sprintf("%s/invest/lesson/%d", beego.AppConfig.String("WxHost"), course.Id)
-		if code != "" {
-			url += "?invite_code=" + code
-		}
-	}
-	self.Redirect(url, 302)
-}
-
-func (self *CourseController) CourseCheckJoin() {
-	unionId := self.Ctx.Input.Param(":unionid")
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-	course := course_model.GetCourseById(id, useCache)
-	returnCode := "200"
-	returnMsg := "成功"
-	hasJoin := int64(0)
-	if course == nil {
-		returnCode = "403"
-		returnMsg = "课程不存在"
-	} else {
-		wxUser := user_model.GetWxUserByUnionid(unionId, useCache)
-		if wxUser == nil {
-			returnCode = "403"
-			returnMsg = "微信用户不存在"
-		} else {
-			courseOrder := course_model.GetOrderByWxUIdAndCIdAndState(wxUser.Id, course.Id, course_model.ORDER_STATE_PAIED)
-			if courseOrder != nil {
-				hasJoin = 1
-			}
-		}
-	}
-
-	type Ret struct {
-		ReturnCode string `json:"return_code"` //返回代码,200正常
-		ReturnMsg  string `json:"return_msg"`  //返回信息
-		HasJoin    int64  `json:"has_join"`    //参与状态
-	}
-	self.Data["json"] = &Ret{ReturnCode: returnCode, ReturnMsg: returnMsg, HasJoin: hasJoin}
-	self.ServeJSON()
-}
-
-//课程基本信息
-func (self *CourseController) CourseInfo() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-	course := course_model.GetCourseById(id, useCache)
-	if course == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	course.Img = self.GetFullImgUrl(course.Img)
-	course.ServiceQrcode = self.GetFullImgUrl(course.ServiceQrcode)
-	course.Deadline = course.StopTime.Unix()
-	course.ShareImg = self.GetFullImgUrl(course.ShareImg)
-	type Ret struct {
-		Course    *course_model.Course `json:"course"`     //课程信息
-		HasJoin   int64                `json:"has_join"`   //参与状态
-		JoinCount int64                `json:"join_count"` //认购人数
-		Heads     []string             `json:"heads"`      //参与状态
-		KfCode    string               `json:"kf_code"`    //专属客服二维码
-	}
-	wxUId := self.GetCurrentWxUserId()
-	wxUser := self.GetCurrentWxUser(true)
-	courseOrder := course_model.GetOrderByWxUIdAndCIdAndState(wxUId, course.Id, course_model.ORDER_STATE_PAIED)
-	hasJoin := int64(0)
-	if courseOrder != nil {
-		hasJoin = 1
-	}
-	kf := ""
-	if wxUser != nil {
-		kf = getKfCode(wxUser.Unionid)
-	}
-
-	count := course_model.GetOrdersCountByCIdAndState(course.Id, course_model.ORDER_STATE_PAIED)
-	lastOrders := course_model.GetLastOrdersByCId(course.Id, 8, useCache)
-	var heads []string
-	for _, item := range lastOrders {
-		wxUser := user_model.GetWxUserById(item.WxUId, true)
-		if wxUser != nil {
-			heads = append(heads, self.GetFullImgUrl(wxUser.Head))
-		}
-	}
-	self.Data["json"] = &Ret{Course: course, HasJoin: hasJoin, JoinCount: count, Heads: heads, KfCode: kf}
-	self.ServeJSON()
-}
-
-//创建订单
-func (self *CourseController) CourseOrderCreate() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-	course := course_model.GetCourseById(id, useCache)
-	if course == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	if course.StopTime.Unix() < time.Now().Unix() {
-		self.ReturnError(403, apps.HasOver, "", nil)
-	}
-	inviteWxUId, _ := self.GetInt64("iv_wx_id", 0)
-	wxUser := self.GetCurrentWxUser(true)
-	//检查是否注册过,老用户,不能购买训练营课程
-	if checkBinding(wxUser.Unionid) == 1 {
-		self.ReturnError(403, apps.WxUserHasBindingTelOnD5c, "", nil)
-	}
-	wxUId := wxUser.Id
-	// wxUId := int64(1)
-	code := self.GetString("code")
-	var order *course_model.Order
-	if code != "" {
-		coupon := course_model.GetCouponByCode(code)
-		if coupon == nil {
-			self.ReturnError(403, apps.CourseCodeNoExist, "", nil)
-		}
-		if coupon.State == course_model.COUPON_STATE_USED {
-			self.ReturnError(403, apps.CourseCodeHasUsed, "", nil)
-		}
-		now := time.Now().Unix()
-		//已过期
-		if coupon.Deadline <= now {
-			coupon.State = course_model.COUPON_STATE_EXPIRED
-			coupon.Save()
-			self.ReturnError(403, apps.CourseCodeHasExpired, "", nil)
-		} else { //有效
-			order = new(course_model.Order).Create(course.Id, wxUId, 0)
-			order.State = course_model.ORDER_STATE_PAIED
-			order.PaiedAt = now
-			order.Save()
-
-			coupon.State = course_model.COUPON_STATE_USED
-			coupon.RelateId = order.OrderId
-			coupon.Save()
-		}
-	} else {
-		order = new(course_model.Order).Create(course.Id, wxUId, course.Price)
-		if inviteWxUId != 0 && inviteWxUId != wxUser.Id {
-			order.InviteWxUId = inviteWxUId
-			order.Save()
-		}
-	}
-
-	self.Data["json"] = order
-	self.ServeJSON()
-}
-
-//生成毕业优惠码
-func (self *CourseController) CourseCouponsGenerate() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	// useCache, _ := self.GetBool("cache", true)
-	course := course_model.GetCourseById(id, true)
-	if course == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	deadline, _ := self.GetInt64("dl", 0)
-	if deadline == 0 {
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-
-	orders := course_model.GetOrdersByCIdAndState(course.Id, course_model.ORDER_STATE_PAIED, false)
-	for _, order := range orders {
-		coupons := course_model.GetCouponsByCIdAndWxUId(order.CourseId, order.WxUId, false)
-		length := len(coupons)
-		if length >= course_model.COUPON_LIMIT {
-			continue
-		}
-		//生成优惠码
-		for i := 0; i < course_model.COUPON_LIMIT-length; i++ {
-			new(course_model.Coupon).Create(order.CourseId, order.WxUId, deadline)
-		}
-
-	}
-	self.ServeJSON()
-}
-
-//取用户优惠码的使用情况
-func (self *CourseController) UserCourseCoupons() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	// useCache, _ := self.GetBool("cache", true)
-	course := course_model.GetCourseById(id, true)
-	if course == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	unionId := self.GetString("unionid")
-	if unionId == "" {
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-	wxUser := user_model.GetWxUserByUnionid(unionId, true)
-	if wxUser == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	deadline, _ := self.GetInt64("dl", 0)
-	if deadline == 0 {
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-
-	order := course_model.GetOrderByWxUIdAndCIdAndState(wxUser.Id, course.Id, course_model.ORDER_STATE_PAIED)
-	if order == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	coupons := course_model.GetCouponsByCIdAndWxUId(course.Id, wxUser.Id, false)
-	length := len(coupons)
-	if length < course_model.COUPON_LIMIT {
-		//生成优惠码
-		for i := 0; i < course_model.COUPON_LIMIT-length; i++ {
-			new(course_model.Coupon).Create(order.CourseId, order.WxUId, deadline)
-		}
-		coupons = course_model.GetCouponsByCIdAndWxUId(course.Id, wxUser.Id, false)
-	}
-
-	for _, coupon := range coupons {
-		if coupon.State == course_model.COUPON_STATE_USED {
-			order := course_model.GetOrderByOId(coupon.RelateId)
-			if order != nil {
-				wxUser := user_model.GetWxUserById(order.WxUId, true)
-				if wxUser != nil {
-					coupon.Head = self.GetFullImgUrl(wxUser.Head)
-				}
-			}
-		}
-	}
-	type Ret struct {
-		Coupons []*course_model.Coupon `json:"coupons"` //优惠券
-	}
-
-	self.Data["json"] = &Ret{Coupons: coupons}
-	self.ServeJSON()
-}
-
-var takeCashLock sync.Mutex
-
-// 提现
-func (self *CourseController) TakeCash() {
-
-	wxUser := self.GetCurrentWxUser(true)
-	count := course_model.GetTakeCashTimesByWxUIdAndTime(wxUser.Id, time.Now())
-	if count > course_model.TAKE_CASH_LIMIT {
-		msg := fmt.Sprintf("每天最多提现%d次", course_model.TAKE_CASH_LIMIT)
-		self.ReturnError(403, []string{"takecashTimesOverLimit", msg}, "", nil)
-	}
-
-	canExtract := course_model.GetTotalBalance(wxUser.Id)
-	if canExtract < 100 {
-		self.ReturnError(403, []string{"takecashAmountNotEnough", "余额不足1元,无法提现"}, "", nil)
-	}
-
-	takeCashLock.Lock()
-	defer takeCashLock.Unlock()
-
-	o := new(course_model.TakeCashOrder).Create(wxUser.Id, canExtract)
-	if o != nil {
-		new(course_model.Balance).Create(wxUser.Id, -canExtract, course_model.CASH_SOURCE_TAKE_CASH,
-			o.OrderId, course_model.CASH_SOURCE_TAKE_CASH_NAME)
-		wxUserGzh := user_model.GetWxUserGzhByWxUIdAndAppId(wxUser.Id, beego.AppConfig.String("WxMPAppId"), true)
-		if wxUserGzh != nil {
-			ret := wx_mp.WxTransfers(wxUserGzh.GzhOpenId, o.Count, o.OrderId, wx_mp.PAY_NO_CHECK, "", "推广奖励")
-			if ret["result_code"] == wx_mp.PAY_SUCCESS {
-				o.AuditState = 1
-				o.State = 1
-				o.TradeNo = ret["payment_no"]
-				o.Remark = "奖励已打款"
-				o.PaiedAt = time.Now().Unix()
-				o.Save()
-			} else {
-				o.State = 2
-				o.Remark = ret["err_code_des"]
-				o.Save()
-			}
-		}
-	}
-
-	self.Data["json"] = o
-	self.ServeJSON()
-}
-
-//提现流列表
-func (self *CourseController) GetTakeCashOrders() {
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 20)
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-	cache, _ := self.GetBool("cache", false)
-
-	//user := self.GetCurrentUser(cache)
-	wxUId := self.GetCurrentWxUserId()
-
-	list := course_model.GetTakeCashOrderListByWxUId(wxUId, page, perPage, cache)
-	listCount := course_model.GetTakeCashOrderCountByWxUId(wxUId, cache)
-
-	type Order struct {
-		Id      int64  ` json:"id"`    // int(11)
-		Count   int64  ` json:"count"` // bigint(20)
-		StateCN string ` json:"state_cn"`
-		CTime   int64  ` json:"ctime"` // datetime
-	}
-
-	retList := make([]*Order, 0, 0)
-
-	for _, item := range list {
-		order := new(Order)
-		order.Id = item.Id
-		order.Count = item.Count
-		order.StateCN = item.GetStateCn()
-		order.CTime = item.CreatedAt.Unix()
-		retList = append(retList, order)
-	}
-
-	type Ret struct {
-		List      []*Order `json:"list"`
-		ListCount int64    `json:"list_count"`
-	}
-
-	self.Data["json"] = &Ret{ListCount: listCount, List: retList}
-	self.ServeJSON()
-}
-
-//佣金列表
-func (self *CourseController) GetBenefits() {
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 20)
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-	cache, _ := self.GetBool("cache", false)
-
-	//user := self.GetCurrentUser(cache)
-	wxUId := self.GetCurrentWxUserId()
-
-	list := course_model.GetBenefitListByWxUId(wxUId, page, perPage, cache)
-	listCount := course_model.GetBenefitCountByWxUId(wxUId)
-	for _, item := range list {
-		wxUser := user_model.GetWxUserById(item.WxUId, true)
-		item.Nickname = wxUser.Nickname
-		item.Head = self.GetFullImgUrl(wxUser.Head)
-		item.CTime = item.CreatedAt.Unix()
-	}
-	type Ret struct {
-		List      []*course_model.Benefit `json:"list"`
-		ListCount int64                   `json:"list_count"`
-	}
-	self.Data["json"] = &Ret{List: list, ListCount: listCount}
-	self.ServeJSON()
-}
-
-//课程佣金余额
-func (self *CourseController) CourseBalanceInfo() {
-	type Ret struct {
-		Total    int64  `json:"total"`    //收益总额
-		Valid    int64  `json:"valid"`    //可提现余额
-		Count    int64  `json:"count"`    //可提现次数
-		Head     string `json:"head"`     //头像
-		Nickname string `json:"nickname"` //昵称
-	}
-	wxUser := self.GetCurrentWxUser(true)
-	amount := course_model.GetTotalBalance(wxUser.Id)
-	count := course_model.GetTakeCashTimesByWxUIdAndTime(wxUser.Id, time.Now())
-	total := course_model.GetEnterBalance(wxUser.Id)
-	leftCount := course_model.TAKE_CASH_LIMIT - count
-	head := self.GetFullImgUrl(wxUser.Head)
-	self.Data["json"] = &Ret{Total: total, Valid: amount, Count: leftCount, Head: head, Nickname: wxUser.Nickname}
-	self.ServeJSON()
-}
-
-//检查是否在第五创投资过真实项目
-func checkBinding(unionId string) int64 {
-	url := fmt.Sprintf("%s/v1/wxuser/%s/binding/check", beego.AppConfig.String("D5CApiHost"), unionId)
-	resp := tool.HttpCall(url, "GET", nil, nil)
-	type Ret struct {
-		ReturnCode string `json:"return_code"` //返回代码,200正常
-		ReturnMsg  string `json:"return_msg"`  //返回信息
-		HasBinding int64  `json:"has_binding"` //是否已绑定手机
-	}
-	var ret Ret
-	json.Unmarshal([]byte(resp), &ret)
-	if ret.ReturnCode != "200" {
-		beego.BeeLogger.Error("CheckJoin Error, ret:%v", ret)
-	}
-	return ret.HasBinding
-}
-
-func getKfCode(unionId string) string {
-	url := fmt.Sprintf("%s/v1/user/kf_qrcode?unionid=%s", beego.AppConfig.String("D5CApiHost"), unionId)
-	resp := tool.HttpCall(url, "GET", nil, nil)
-	type Ret struct {
-		CheckCode string `json:"check_code"` //返回代码,200正常
-		ImgPath   string `json:"img_path"`   //返回信息
-	}
-	var ret Ret
-	json.Unmarshal([]byte(resp), &ret)
-	if ret.CheckCode != "0000" {
-		beego.BeeLogger.Error("CheckJoin Error, ret:%v", ret)
-		return ""
-	}
-	return ret.ImgPath
-	// http: //api.d5ct.com/v1/user/kf_qrcode?unionid=o8HkVwH3Qyvb0Sd5bz9rQ-iDcUVo
-}

+ 0 - 24
go/gopath/src/fohow.com/apps/controllers/course_controller/init.go

@@ -1,24 +0,0 @@
-package course_controller
-
-import (
-	"github.com/astaxie/beego/context"
-
-	"fohow.com/apps"
-)
-
-var (
-	//以下Action无需登录校验,exceptCheckUserLoginAction = []string{"*"} *代表全部不需要
-	exceptCheckUserLoginAction = []string{"CourseOrderCreate", "CourseInfo", "CourseCheckJoin", "CourseCouponsGenerate", "UserCourseCoupons",
-		"CourseBalanceInfo", "GetBenefits", "TakeCash", "GetTakeCashOrders", "LatestCourse"}
-	exceptCheckWxUserLoginAction = []string{"CourseCheckJoin", "CourseCouponsGenerate", "UserCourseCoupons", "LatestCourse"}
-)
-
-type CourseController struct {
-	apps.BaseController
-}
-
-func (self *CourseController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}

+ 0 - 56
go/gopath/src/fohow.com/apps/controllers/cron_controller/copartner.go

@@ -1,56 +0,0 @@
-package cron_controller
-
-import (
-	"fmt"
-	"fohow.com/apps/models/copartner_model"
-	"fohow.com/apps/models/user_model"
-	"time"
-)
-
-//没有佣金记录或者最近佣金记录距离目前超过100天则取消合伙人资格
-func checkCopartnerState() {
-
-	config := copartner_model.GetLastCopartnerRecruitConfig(false)
-	if config == nil || config.CancelDays <= 0 {
-		return
-	}
-
-	termSeconds := int64(config.CancelDays * 24 * 60 * 60)
-	wxUserList := user_model.GetWxUserListByCopartnerState(user_model.COPARTNER_STATE_YES, false)
-	for _, item := range wxUserList {
-
-		remark := fmt.Sprintf("超过%d天无佣金产生,贡献值清零", config.CancelDays)
-		now := time.Now()
-		if now.Unix()-item.BeCopartnerTime.Unix() < termSeconds { //成为合伙人满100天后
-			continue
-		}
-
-		lastInviteOrder := user_model.GetLastInviteOrderByBeWxUIdAndSource(item.Id, user_model.SOURCE_PRODUCT_BENEFIT)
-
-		if lastInviteOrder != nil {
-
-			if now.Unix()-lastInviteOrder.CreatedAt.Unix() > termSeconds { //最新佣金的创建时间距离当前时间超过100天则取消佣金
-				item.CopartnerState = user_model.COPARTNER_STATE_ONCE
-				item.CancelTime = now
-				item.Save()
-				contributionSum, contributionAmount := copartner_model.GetCopartnerContributionSumByBenefitWxUId(item.Id)
-				if contributionSum > 0 {
-					rId := fmt.Sprintf("%s_%s", copartner_model.CONTRIBTION_SOURCE_RESET_PREFIX, now.Format("2006-01-02_15:04"))
-					new(copartner_model.CopartnerContribution).Create(item.Id, item.Id, item.Id, -contributionSum, 0, contributionAmount, copartner_model.CONTRIBTION_SOURCE_RESET, rId, remark)
-				}
-			}
-
-		} else {
-			item.CopartnerState = user_model.COPARTNER_STATE_ONCE
-			item.CancelTime = now
-			item.Save()
-			contributionSum, contributionAmount := copartner_model.GetCopartnerContributionSumByBenefitWxUId(item.Id)
-			if contributionSum > 0 {
-				rId := fmt.Sprintf("%s_%s", copartner_model.CONTRIBTION_SOURCE_RESET_PREFIX, now.Format("2006-01-02_15:04"))
-				new(copartner_model.CopartnerContribution).Create(item.Id, item.Id, item.Id, -contributionSum, 0, contributionAmount, copartner_model.CONTRIBTION_SOURCE_RESET, rId, remark)
-			}
-		}
-
-	}
-
-}

+ 0 - 80
go/gopath/src/fohow.com/apps/controllers/cron_controller/dollar_win_notice.go

@@ -1,80 +0,0 @@
-package cron_controller
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"fohow.com/apps/models/dollar_win_model"
-	"fohow.com/apps/models/user_model"
-	"fohow.com/libs/wx_mp"
-	"time"
-)
-
-//给已经支付成功的邀请人进行模板消息通知,一小时一次
-func DollarWinNotice() {
-	configs := dollar_win_model.GetDollarWinZtConfigList(false)
-	endTime := time.Now().Unix()
-	startTime := time.Now().Add(-time.Hour * 1).Unix()
-	beego.BeeLogger.Warn("DollarWinNotice, startTime=[%d] endTime=[%d]", startTime, endTime)
-	for _, config := range configs {
-		beego.BeeLogger.Warn("DollarWinNotice, startTime2=[%d] endTime2=[%d]", startTime, endTime)
-		if time.Now().Unix()-config.StopTime.Unix() > 300 { //活动结束5分钟则不再进行通知
-			continue
-		}
-		beego.BeeLogger.Warn("DollarWinNotice, config.IsTemp=[%v]", config.IsTemp)
-		if !config.IsTemp { //未开启临时邀请机制,则无需通知邀请者
-			continue
-		}
-		newest := dollar_win_model.GetInviteJoinPaiedListByZtConfigIdAndPaiedAt(config.Id, startTime, endTime, false)
-		for i := 0; i < len(newest); i++ {
-			new := newest[i]
-			//获取推荐人id
-			uId := new.TempInviteId
-
-			inviteDollar := dollar_win_model.GetDollarWinZtJoinByTempInviteId(config.Id, uId, false)
-			if inviteDollar == nil { //若邀请人未参与,则不推送通知
-				continue
-			}
-			inviteTime := inviteDollar.PaiedAt
-
-			//被邀请者需要在邀请者参与之后才推送通知
-			if inviteTime > endTime {
-				continue
-			} else if inviteTime > startTime && inviteTime < endTime {
-				startTime = inviteTime
-			}
-
-			//获取推荐人支付之后最后一条支付记录
-			newInvite := dollar_win_model.GetInviteJoinPaiedListByZtConfigIdUidAndPaiedAt(config.Id, uId, startTime, endTime, false)
-
-			if newInvite == nil {
-				continue
-			}
-			tm := time.Unix(newInvite.PaiedAt, 0)
-			beego.BeeLogger.Warn("DollarWinNotice, tm=[%d]", tm)
-
-			//获取 最后一条支付人的会员帐号
-			newUser := user_model.GetWxUserByUserId(newInvite.UserId, false)
-
-			user := user_model.GetWxUserByUserId(uId, false)
-			if user != nil {
-				wxUserGzh := user_model.GetWxUserGzhByWxUIdAndAppId(user.Id, beego.AppConfig.String("WxMPAppId"), false)
-				if wxUserGzh != nil && wxUserGzh.GzhOpenId != "" {
-					var url string
-					if beego.BConfig.RunMode == beego.DEV {
-						url = fmt.Sprintf("http://testm.labitumall.com/activity/newoneinvest/%d", config.Id)
-					} else {
-						url = fmt.Sprintf("https://m.labitumall.com/activity/newoneinvest/%d", config.Id)
-					}
-					beego.BeeLogger.Warn("DollarWinNotice, url=[%s]", url)
-					first := "您邀请的好友已成功参加活动"
-					kw1 := newUser.Nickname
-					kw2 := config.Title
-					kw3 := tm.Format("2006-01-02 15:04:05")
-					kw4 := fmt.Sprintf("Ta的排名号%d", newInvite.RankNumber)
-					remark := "点击查看"
-					go wx_mp.TmplmsgEventDollarAddNotifyHandle(wxUserGzh.GzhOpenId, url, first, kw1, kw2, kw3, kw4, remark)
-				}
-			}
-		}
-	}
-}

+ 0 - 54
go/gopath/src/fohow.com/apps/controllers/cron_controller/dollar_win_rank.go

@@ -1,54 +0,0 @@
-package cron_controller
-
-import (
-	"fohow.com/apps/models/dollar_win_model"
-	"sync"
-	"time"
-)
-
-var rankLock sync.Mutex
-
-//给已经支付成功的人进行名次排位,5分钟一次
-func DollarWinRank() {
-	defer rankLock.Unlock()
-	rankLock.Lock()
-
-	configs := dollar_win_model.GetDollarWinZtConfigList(false)
-
-	for _, config := range configs {
-
-		if time.Now().Unix()-config.StopTime.Unix() > 600 { //活动结束10分钟则不再进行名次更新
-			continue
-		}
-
-		first := dollar_win_model.GetFirstJoinPaiedByZtConfigId(config.Id, false)
-		if first == nil {
-			continue
-		}
-
-		paiedAt, rankInit := int64(0), int64(0)
-		if first.RankNumber > 0 {
-			newest := dollar_win_model.GetLatestRankJoinPaiedByZtConfigId(config.Id, false)
-			if newest == nil {
-				continue
-			}
-			paiedAt = newest.PaiedAt
-			rankInit = newest.RankNumber
-		} else {
-			first.RankNumber = 1
-			first.Save()
-			paiedAt = first.PaiedAt
-			rankInit = first.RankNumber
-		}
-
-		if rankInit <= 0 {
-			continue
-		}
-		needRankList := dollar_win_model.GetoinPaiedListByZtConfigIdAndPaiedAt(config.Id, paiedAt, false)
-		for i := 0; i < len(needRankList); i++ {
-			needRankOrder := needRankList[i]
-			needRankOrder.RankNumber = rankInit + int64(i+1)
-			needRankOrder.Save()
-		}
-	}
-}

+ 0 - 135
go/gopath/src/fohow.com/apps/controllers/cron_controller/granary.go

@@ -1,135 +0,0 @@
-package cron_controller
-
-import (
-	// "time"
-
-	"github.com/astaxie/beego"
-
-	"fmt"
-	"fohow.com/apps/helpers"
-	"fohow.com/apps/models/granary_model"
-	"fohow.com/apps/models/order_model"
-	"fohow.com/apps/models/product_model"
-	"fohow.com/apps/models/user_model"
-	"strings"
-	"time"
-)
-
-//更新代销价格
-func updateSalePrice() {
-	list := order_model.GetUserSaleOrders()
-	beego.BeeLogger.Warn("cron time task:---updateSalePrice---length: %d", len(list))
-	for _, item := range list {
-		p := product_model.GetProductById(item.ProductId, true)
-		if p != nil {
-			item.UnitUserSalePrice = p.UserSalePrice
-			item.Save()
-			beego.BeeLogger.Warn("oId: %s, price:%d", item.OrderId, item.UnitUserSalePrice)
-		}
-	}
-}
-
-//自动审核下架代销订单-5分钟执行一次
-func AutoOfflineSaleOrder() {
-	list := granary_model.GetOfflineSaleOrders()
-	beego.BeeLogger.Warn("cron time task:---AutoAuditOfflineSaleOrder---length: %d", len(list))
-
-	for _, item := range list {
-		item.State = granary_model.ORDER_STATE_OFFLINE
-		item.OperateState = granary_model.OPERATE_STATE_NOTHING
-		item.Save()
-	}
-}
-
-//自用数量为0,第2天和第7天通知
-func AutoSelfUseNotice() {
-
-	//查询自用数量为0的用户粮仓,加一个字段作最新通知自用时间
-	list := granary_model.GetZeroSelfUseGranaries()
-
-	now := time.Now()
-	warmTips := fmt.Sprintf("为防止商品过季影响口感,请赶紧到【个人中心】-【我的粮仓】进行下单自用吧")
-	service := fmt.Sprintf("可爱的小兔和小拉")
-	page := fmt.Sprintf("pages/start/start?url=packageUser/pages/user/granary/granary")
-	for _, item := range list {
-		if item.SelfUseMin <= 0 {
-			continue
-		}
-		timeDefer := now.Unix() - item.CreatedAt.Unix()
-		if timeDefer >= 1*24*60*60 && timeDefer < 6*24*60*60 {
-			if item.LastNoticeTime == 0 {
-				//发自用通知
-				wxUser := user_model.GetWxUserByUserId(item.UserId, false)
-				if wxUser == nil {
-					continue
-				}
-				product := product_model.GetProductById(item.ProductId, false)
-				if product == nil {
-					continue
-				}
-				isNotify := helpers.GranaryProductDealNotify(*wxUser, product.Name, fmt.Sprintf("自用%d份起", item.SelfUseMin), warmTips, service, "keyword1.DATA", page)
-				if isNotify {
-					item.LastNoticeTime = now.Unix()
-					item.NoticeCount = item.NoticeCount + 1
-					item.Save()
-				}
-			}
-		}
-
-		if timeDefer >= 6*24*60*60 {
-			if item.LastNoticeTime == 0 {
-				//发自用通知
-				wxUser := user_model.GetWxUserByUserId(item.UserId, false)
-				if wxUser == nil {
-					continue
-				}
-				product := product_model.GetProductById(item.ProductId, false)
-				if product == nil {
-					continue
-				}
-				isNotify := helpers.GranaryProductDealNotify(*wxUser, product.Name, fmt.Sprintf("自用%d份起", item.SelfUseMin), warmTips, service, "keyword1.DATA", page)
-				if isNotify {
-					item.LastNoticeTime = now.Unix()
-					item.NoticeCount = item.NoticeCount + 1
-					item.Save()
-				}
-			} else {
-				if item.NoticeCount < 2 && strings.Compare(time.Unix(item.LastNoticeTime, 0).Format("2006-01-02"), now.Format("2006-01-02")) < 0 {
-					//发自用通知
-					wxUser := user_model.GetWxUserByUserId(item.UserId, false)
-					if wxUser == nil {
-						continue
-					}
-					product := product_model.GetProductById(item.ProductId, false)
-					if product == nil {
-						continue
-					}
-					isNotify := helpers.GranaryProductDealNotify(*wxUser, product.Name, fmt.Sprintf("自用%d份起", item.SelfUseMin), warmTips, service, "keyword1.DATA", page)
-					if isNotify {
-						item.LastNoticeTime = now.Unix()
-						item.NoticeCount = item.NoticeCount + 1
-						item.Save()
-					}
-				}
-			}
-		}
-
-	}
-}
-
-//一次性处理已经收货的订单,代销金还没帐
-func dealTypeSaleFinishedOrders() {
-
-	orders := order_model.GetTypeSaleFinishedOrders()
-
-	beego.BeeLogger.Warn("cron time task:---dealTypeSaleFinishedOrders---len(orders):%d.", len(orders))
-
-	for _, item := range orders {
-
-		if item.OrderType == order_model.ORDER_TYPE_SALE {
-			helpers.SendBalanceWhileSaleOrderCompleteHandler(item)
-		}
-
-		beego.BeeLogger.Warn("cron time task:---dealTypeSaleFinishedOrders---item_id: %d, finished.", item.Id)
-	}
-}

+ 0 - 2
go/gopath/src/fohow.com/apps/controllers/cron_controller/init.go

@@ -74,8 +74,6 @@ func exec(name string) {
 		sendTopSaleListMonthlyReward()
 	case "comb_user_relation": //梳理内部推荐关系
 		combUserRelation()
-	case "test_inser_three": //测试三位关系
-		insertThreeWxusers()
 	case "comb_three_user": //梳理三位关系
 		threebUserRelation()
 	case "register_wxuser": //修复数据--注册会员

+ 0 - 175
go/gopath/src/fohow.com/apps/controllers/cron_controller/invite.go

@@ -1,175 +0,0 @@
-package cron_controller
-
-import (
-	// "fmt"
-	"time"
-
-	"github.com/astaxie/beego"
-
-	"fmt"
-	"fohow.com/apps/models/balance_model"
-	"fohow.com/apps/models/invite_sale_model"
-	"fohow.com/apps/models/order_model"
-	"fohow.com/apps/models/product_model"
-	"fohow.com/apps/models/use_limit"
-	"fohow.com/apps/models/user_model"
-	"strings"
-)
-
-//同步产品佣金,发放到资金账户
-func syncProductBenefit() {
-	now := time.Now()
-	//yesterday := now.Add(-48 * time.Hour)
-	yesterday := now.Add(-10 * 24 * time.Hour)
-
-	today, _ := time.Parse("20060102", now.Format("20060102"))
-	from, _ := time.Parse("20060102", yesterday.Format("20060102"))
-	//昨天已收货的订单
-	orders := order_model.GetFinishedOrdersByRTime(from.Add(-8*time.Hour), today.Add(-8*time.Hour))
-	beego.BeeLogger.Warn("cron time task:---SyncProductBenefit---orders_num: %d, from_time : %s", len(orders), from.Format("2006-01-02 15:04:05"))
-
-	if len(orders) >= 1000 {
-		yesterday = now.Add(-48 * time.Hour)
-		from, _ = time.Parse("20060102", yesterday.Format("20060102"))
-		orders = order_model.GetFinishedOrdersByRTime(from.Add(-8*time.Hour), today.Add(-8*time.Hour))
-		beego.BeeLogger.Warn("cron time task:---SyncProductBenefit---orders_num: %d, from_time : %s", len(orders), from.Format("2006-01-02 15:04:05"))
-	}
-	for _, order := range orders {
-		//部分退款,不发放佣金
-		if order.IsPartRefund == 1 {
-			continue
-		}
-		wxUser := user_model.GetWxUserById(order.WxUserId, true)
-		if wxUser != nil && wxUser.InviteId != 0 {
-			inviter := user_model.GetWxUserById(wxUser.InviteId, true)
-			if inviter != nil {
-				benefitOrder := user_model.GetInviteOrderByWxUIdAndSourceAndRId(wxUser.Id, user_model.SOURCE_PRODUCT_BENEFIT, order.OrderId)
-				if benefitOrder == nil {
-					continue
-				}
-				s := balance_model.CASH_SOURCE_PRODUCT_BENEFIT
-				product := product_model.GetProductById(order.ProductId, true)
-				// remark := fmt.Sprintf("%s>", product.Name)
-				//发放现金佣金
-				b := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(inviter.Id, order.OrderId, s)
-				if b == nil {
-					b = new(balance_model.CashBalance).Create(inviter.Id, benefitOrder.Count, s, order.OrderId, product.Name)
-					if b != nil {
-						//标志进账
-						benefitOrder.IsEnterBalance = true
-						benefitOrder.EnterTime = b.CreatedAt
-						benefitOrder.Save()
-					}
-				}
-				//处理二级佣金进账
-				go dealSecondProductBenefit(wxUser, order, product, s)
-
-			}
-
-		}
-
-	}
-}
-
-//处理二级产品佣金进账
-func dealSecondProductBenefit(wxUser *user_model.WxUser, order *order_model.Order, product *product_model.Product, source string) {
-
-	if wxUser == nil || order == nil || product == nil {
-		return
-	}
-
-	rId := fmt.Sprintf("%s%s", user_model.SECOND_RELATE_ID_PREFIT, order.OrderId)
-	secondBenefitOrder := user_model.GetInviteOrderByRId(rId)
-	if secondBenefitOrder == nil {
-		return
-	}
-
-	sbenefit := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(secondBenefitOrder.BenefitWxUId, rId, source)
-	if sbenefit == nil {
-		sbenefit = new(balance_model.CashBalance).Create(secondBenefitOrder.BenefitWxUId, secondBenefitOrder.Count, source, rId, product.Name)
-		if sbenefit != nil {
-			secondBenefitOrder.IsEnterBalance = true
-			secondBenefitOrder.EnterTime = sbenefit.CreatedAt
-			secondBenefitOrder.Save()
-		}
-	}
-}
-
-//发放上一个月的销售奖励,每月十号02:00发放
-func sendTopSaleListMonthlyReward() {
-
-	now := time.Now()
-	ym := now.AddDate(0, -1, 0)
-
-	lastMonthConfigList := invite_sale_model.GetNotSendRewardConfigsByTime(ym)
-
-	if lastMonthConfigList == nil || len(lastMonthConfigList) == 0 {
-		return
-	}
-
-	first := lastMonthConfigList[0]
-	max := first.Rank
-
-	//beego.BeeLogger.Warn("sendTopSaleListMonthlyReward_max: %d", max)
-
-	useLimits := use_limit.GetEffectAndLimitUpSaleList()
-	var limitWxUids []string
-	for _, useLimit := range useLimits {
-		wxUid := fmt.Sprintf("%d", useLimit.WxUid)
-		limitWxUids = append(limitWxUids, wxUid)
-	}
-
-	list := invite_sale_model.GetInviterSaleListByLimitWxUidsAndTime(1, max, strings.Join(limitWxUids, ","), ym, false)
-
-	if list == nil || len(list) == 0 {
-		return
-	}
-
-	for _, config := range lastMonthConfigList {
-
-		if config.IsSend == 1 {
-			continue
-		}
-
-		rank := config.Rank
-
-		var saleItem *invite_sale_model.InviterSale
-		for i := int64(1); i <= int64(len(list)); i++ {
-			if i == rank {
-				saleItem = list[i-1]
-				break
-			}
-		}
-
-		if saleItem == nil {
-			continue
-		}
-
-		beego.BeeLogger.Warn("sendTopSaleListMonthlyReward.saleItem: %v", saleItem)
-		s := balance_model.CASH_SOURCE_SALE_REWARD
-		rId := fmt.Sprintf("%s_%s", s, ym.Format("200601"))
-		wxUid := saleItem.BenefitWxUid
-
-		cashBalance := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(wxUid, rId, s)
-		if cashBalance != nil {
-			continue
-		}
-		remark := fmt.Sprintf("%s%s", ym.Format("2006年01月"), balance_model.CASH_SOURCE_SALE_REWARD_NAME)
-
-		sendCount := config.RewardAmount
-		if config.RewardType == invite_sale_model.REWARD_TYPE_RATIO_ENUM {
-			sendCount = saleItem.Count * config.RewardAmount / 100
-		}
-
-		//现金记录
-		balance := new(balance_model.CashBalance).Create(wxUid, sendCount, s, rId, remark)
-		if balance != nil {
-			//发放记录
-			new(invite_sale_model.InviteSaleRewardRecord).Create(wxUid, saleItem.Count, sendCount, config.Rank, config.ConfigTime)
-		}
-
-		config.IsSend = 1
-		config.Save()
-	}
-
-}

+ 1 - 67
go/gopath/src/fohow.com/apps/controllers/cron_controller/sync_balance.go

@@ -1,80 +1,14 @@
 package cron_controller
 
 import (
-	"crypto/md5"
-	"fmt"
-	"io"
-	"net/http"
-	"net/url"
-	"strconv"
 	"time"
 
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-
 	"fohow.com/apps/models/balance_model"
 	"fohow.com/apps/models/user_model"
 	"fohow.com/libs/wx_mp"
+	"github.com/astaxie/beego"
 )
 
-type SyncData struct {
-	RecordID  int64     `orm:"column(id)"`
-	UnionId   string    `orm:"column(unionid)"`
-	Amount    int64     `orm:"column(receive_bonus)"`
-	CreatedAt time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)"`
-}
-
-func (self *SyncData) Sign() string {
-	h := md5.New()
-	s := fmt.Sprintf("%s,%s,%d,!iGUESS", self.UnionId, self.Amount, self.CreatedAt.Unix())
-	io.WriteString(h, s)
-	return fmt.Sprintf("%x", h.Sum(nil))
-}
-
-// 定期同步红包数据到第五创主数据库
-func syncBalance() {
-	beego.BeeLogger.Warn("********** Cron task - handle syncBalance start at: %s********", time.Now())
-	// 找出50条未同步的记录
-	// 逐条同步,并标记成功记录
-	o := orm.NewOrm()
-
-	var rs []SyncData
-
-	sql := "SELECT `chunjie_lucky_moneys`.`id` AS id,  `wx_uid`, `receive_bonus`, `chunjie_lucky_moneys`.`created_at`, `unionid` FROM `chunjie_lucky_moneys` inner join `wx_users` on `chunjie_lucky_moneys`.`wx_uid`=`wx_users`.`id` WHERE `is_sync25`<>1 AND `wx_users`.`unionid`<>'' order by `is_sync25` ASC LIMIT 300 ;"
-	num, err := o.Raw(sql).QueryRows(&rs)
-	if err == nil {
-		fmt.Println("user nums: ", num)
-	}
-	for _, syncData := range rs {
-		beego.BeeLogger.Info("********** Cron task - handle syncBalance RecordID=[%d] ********", syncData)
-		if result := syncOne(syncData); result {
-			// update chunjie_lucky_moneys set is_sync25=1
-			o.Raw("UPDATE `chunjie_lucky_moneys` SET `is_sync25` = 1 WHERE id=?", syncData.RecordID).Exec()
-			beego.BeeLogger.Info("********** Cron task - handle syncBalance Success: ********", syncData)
-		} else {
-			o.Raw("UPDATE `chunjie_lucky_moneys` SET `is_sync25` = 2 WHERE id=?", syncData.RecordID).Exec()
-			beego.BeeLogger.Error("********** Cron task - handle syncBalance Fail: ********", syncData)
-		}
-	}
-	beego.BeeLogger.Warn("********** Cron task - handle syncBalance end   at: %s********", time.Now())
-}
-
-func syncOne(syncData SyncData) bool {
-	form := url.Values{}
-	form.Add("unionId", syncData.UnionId)
-	form.Add("amount", strconv.FormatInt(syncData.Amount, 10))
-	form.Add("timestamp", strconv.FormatInt(syncData.CreatedAt.Unix(), 10))
-	form.Add("signature", syncData.Sign())
-	apiUrl := beego.AppConfig.String("D5CApiHost") + "/v1/labi/cjhd/sync_balance"
-	resp, err := http.PostForm(apiUrl, form)
-	if err != nil {
-		beego.BeeLogger.Error("********** Cron task - handle syncBalance Http Error %s:  ********", err)
-	}
-	defer resp.Body.Close()
-	beego.BeeLogger.Debug("********** Cron task - handle syncBalance end   at:  ********", resp)
-	return resp.StatusCode == 201
-}
-
 //提现打款的定时任务
 func takeCash() {
 	//选择出已审批通过的提现中订单

+ 0 - 105
go/gopath/src/fohow.com/apps/controllers/cron_controller/update_invite_benefit_order.go

@@ -1,105 +0,0 @@
-package cron_controller
-
-import (
-	"github.com/astaxie/beego"
-	"fohow.com/apps/models/order_model"
-	"fohow.com/apps/models/subject_model"
-	"fohow.com/apps/models/user_model"
-	"fohow.com/libs/tool"
-	"sync"
-)
-
-//修复数据-只执行一次
-func addInviteBenefitOrder() {
-
-	//专题3产生的订单
-	orders := order_model.GetPrizeSubjectOrdersBySbjId(3)
-	beego.BeeLogger.Warn("addInviteBenefitOrder-len(orders): %d", len(orders))
-	for i, order := range orders {
-		beego.BeeLogger.Warn("addInviteBenefitOrder-wxUser i: %d, wxuid:%d", i, order.WxUserId)
-		//购买者
-		wxUser := user_model.GetWxUserById(order.WxUserId, false)
-
-		if wxUser == nil || wxUser.InviteId <= 0 {
-			continue
-		}
-		beego.BeeLogger.Warn("addInviteBenefitOrder-wxUser: %d", wxUser.Id)
-
-		//购买者的邀请人
-		inviteWxUser := user_model.GetWxUserById(wxUser.InviteId, false)
-
-		if inviteWxUser == nil {
-			continue
-		}
-		if inviteWxUser.ShowInviteMode != 1 {
-			if inviteWxUser.ProductBenefitRate == 0 {
-				inviteWxUser.ProductBenefitRate = 5
-			}
-			if inviteWxUser.ProjectBenefitRate == 0 {
-				inviteWxUser.ProjectBenefitRate = 1
-			}
-			inviteWxUser.ShowInviteMode = int64(1)
-			inviteWxUser.Save()
-		}
-
-		beego.BeeLogger.Warn("addInviteBenefitOrder-inviteWxUser: %d", inviteWxUser.Id)
-
-		inviteBenefitOrder := user_model.GetInviteOrderByRId(order.OrderId)
-		beego.BeeLogger.Warn("addInviteBenefitOrder-inviteBenefitOrder: %v", inviteBenefitOrder)
-
-		if inviteBenefitOrder == nil {
-
-			count := int64(tool.RoundFloat64(float64(order.UnitPrice*order.Count)*float64(inviteWxUser.ProductBenefitRate)/100, 0))
-			if count == 0 {
-				count = 1
-			}
-			inviteOrder := new(user_model.InviteOrder).Create(inviteWxUser.Id, wxUser.Id, wxUser.Id, count, order.UnitPrice*order.Count,
-				user_model.SOURCE_PRODUCT_BENEFIT, order.OrderId)
-
-			beego.BeeLogger.Warn("addInviteBenefitOrder-inviteOrder-id: %d", inviteOrder.Id)
-		}
-
-	}
-}
-
-func addSubjectDrawCode() {
-
-	orders := order_model.GetValidAndNotJoinPrizeOrdersByPIdAndPaiedTime(127, 1536293489)
-
-	beego.BeeLogger.Warn("addSubjectDrawCode-len(orders): %d", len(orders))
-
-	if len(orders) == 41 {
-		for _, order := range orders {
-
-			beego.BeeLogger.Warn("addSubjectDrawCode-order: %s, count: %d", order.OrderId, order.Count)
-			order.IsJoinSubjectPrize = true
-			order.ProductSaleSubjectId = 3
-			CreateDrawCode(order)
-			order.Save()
-
-		}
-	}
-
-}
-
-var createDrawCode sync.Mutex
-
-func CreateDrawCode(order *order_model.Order) {
-
-	createDrawCode.Lock()
-	defer createDrawCode.Unlock()
-
-	subject := subject_model.GetProductSaleSubjectById(order.ProductSaleSubjectId, true)
-	if subject == nil {
-		return
-	}
-	for i := int64(1); i <= order.Count; i++ {
-		drawCode := subject_model.GetLastSaleDrawCodeBySubjectId(order.ProductSaleSubjectId)
-		if drawCode == nil {
-			drawCode = new(subject_model.SaleDrawCode).Create(int64(1), order.WxUserId, order.ProductSaleSubjectId, order.OrderId)
-		} else {
-			drawCode = new(subject_model.SaleDrawCode).Create(drawCode.Code+1, order.WxUserId, order.ProductSaleSubjectId, order.OrderId)
-		}
-		beego.BeeLogger.Warn("addSubjectDrawCode-CreateDrawCode success code: %d", drawCode.Code)
-	}
-}

+ 0 - 19
go/gopath/src/fohow.com/apps/controllers/cron_controller/update_user_is_regist_d5c.go

@@ -1,19 +0,0 @@
-package cron_controller
-
-import (
-	"github.com/astaxie/beego"
-	"fohow.com/apps/models/user_model"
-)
-
-func updateUserTelIsRegistD5c() {
-
-	users := user_model.GetUserByIsRegistAndIsRegistBefore()
-	for _, item := range users {
-		beego.BeeLogger.Warn("updateUserTelIsRegistD5c-tel:%s", item.Tel)
-		CheckAndUpdate(item)
-	}
-}
-
-func CheckAndUpdate(user *user_model.User) {
-	user_model.UpdateIsRegistD5c(user)
-}

+ 2 - 82
go/gopath/src/fohow.com/apps/controllers/cron_controller/user_complete_info.go

@@ -1,11 +1,11 @@
 package cron_controller
 
 import (
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
 	"fohow.com/apps/models/project_model"
 	"fohow.com/apps/models/share_model"
 	"fohow.com/apps/models/user_model"
+	"github.com/astaxie/beego"
+	"github.com/astaxie/beego/orm"
 )
 
 /*
@@ -73,83 +73,3 @@ func updateUserNicknameAndHead() {
 	}
 
 }
-
-/*
-团购有支付成功的投资记录
-邀请佣金管理有记录的
-分享情况管理,有分享记录的
-给他们开通微信推广模块
-*/
-func updateWxUserShowInviteMode() {
-
-	//查找真实投资人
-	var list1 []*project_model.ProjectJoin
-	sql1 := `
-		select *
-		  FROM project_joins
-		 where state= 1
-		   and is_deleted= 0
-		   and is_refunded= 0
-		 GROUP BY user_id ;
-	`
-
-	_, err1 := orm.NewOrm().Raw(sql1).QueryRows(&list1)
-
-	if err1 != nil {
-		beego.Debug("GetProjectUsers err=[%s]", err1)
-	}
-
-	for _, item := range list1 {
-
-		wxUser := user_model.GetWxUserByUserId(item.UserId, true)
-		if wxUser != nil && wxUser.ShowInviteMode != 1 {
-			wxUser.ShowInviteMode = int64(1)
-			wxUser.Save()
-		}
-	}
-
-	//邀请佣金管理有记录的
-	var list2 []*user_model.InviteOrder
-	sql2 := `
-		select *
-		  from invite_benefit_orders
-		 where source!= 'binding'
-		 GROUP BY benefit_wx_uid ;
-	`
-	_, err2 := orm.NewOrm().Raw(sql2).QueryRows(&list2)
-	if err2 != nil {
-		beego.Debug("GetInviteOrderUsers err=[%s]", err2)
-	}
-
-	for _, item := range list2 {
-
-		wxUser := user_model.GetWxUserById(item.BenefitWxUId, true)
-
-		if wxUser != nil && wxUser.ShowInviteMode != 1 {
-			wxUser.ShowInviteMode = int64(1)
-			wxUser.Save()
-		}
-	}
-
-	//分享情况
-	var list3 []*share_model.ShareInfo
-	sql3 := `
-		select *
-		  from share_infos
-		 GROUP BY wx_user_id ;
-	`
-	_, err3 := orm.NewOrm().Raw(sql3).QueryRows(&list3)
-	if err3 != nil {
-		beego.Debug("GetInviteOrderUsers err=[%s]", err3)
-	}
-
-	for _, item := range list3 {
-
-		wxUser := user_model.GetWxUserById(item.WxUserId, true)
-		if wxUser != nil && wxUser.ShowInviteMode != 1 {
-			wxUser.ShowInviteMode = int64(1)
-			wxUser.Save()
-		}
-	}
-
-}

+ 0 - 308
go/gopath/src/fohow.com/apps/controllers/dollar_win_controller/dollar_win_controller.go

@@ -1,308 +0,0 @@
-package dollar_win_controller
-
-import (
-	"github.com/astaxie/beego/context"
-	"fohow.com/apps"
-	"fohow.com/apps/controllers/cron_controller"
-	"fohow.com/apps/models/dollar_win_model"
-	"fohow.com/apps/models/user_model"
-	"fohow.com/libs/kefu"
-	"fohow.com/libs/regist"
-	"strconv"
-	"sync"
-	"time"
-)
-
-var (
-	//需要校验用户登录的Action
-	exceptCheckUserLoginAction   = []string{"GetConfig", "GetJoinStateList", "DollarWinNotice"}
-	exceptCheckWxUserLoginAction = []string{""}
-)
-
-type DollarWinController struct {
-	apps.BaseController
-}
-
-func (self *DollarWinController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}
-
-func (self *DollarWinController) GetConfig() {
-
-	if !self.IsWxClient() {
-		self.ReturnError(403, apps.NotWeixinClient, "", nil)
-	}
-
-	_id := self.Ctx.Input.Param(":id")
-	cId, _ := strconv.ParseInt(_id, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-
-	ztConfig := dollar_win_model.GetDollarWinZtConfigById(cId, useCache)
-	wxUser := self.GetCurrentWxUser(useCache)
-
-	userJoinCount := int64(0)
-	if ztConfig != nil {
-		ztConfig.StartAt = ztConfig.StartTime.Unix()
-		ztConfig.StopAt = ztConfig.StopTime.Unix()
-		ztConfig.ChannelId = int64(19) //写死注册用的渠道id
-		ztConfig.BgPicUrl = self.GetFullImgUrl(ztConfig.BgPicUrl)
-		ztConfig.WfPicUrl = self.GetFullImgUrl(ztConfig.WfPicUrl)
-		ztConfig.ShareImg = self.GetFullImgUrl(ztConfig.ShareImg)
-		ztConfig.UserNickName = wxUser.Nickname
-		ztConfig.IsTemp = ztConfig.IsTemp
-
-		ztConfig.CurTimes = dollar_win_model.GetJoinPaiedListCountByZtConfigId(cId, useCache)
-		userJoinList := dollar_win_model.GetJoinPaiedWinListByZtConfigIdAndUId(ztConfig.Id, wxUser.UserId, useCache)
-		userJoinCount = int64(len(userJoinList))
-
-		if wxUser != nil {
-			result := kefu.GetKfQrcodeImgFromD5c(wxUser.Unionid)
-			if result != nil && result.CheckCode == "0000" {
-				ztConfig.QrcodeImg = result.ImgPath
-			}
-		}
-		/*
-			gzhQrcode := channel_gzh_qrcode_model.GetById(ztConfig.AfterPaied)
-			if gzhQrcode != nil{
-						ztConfig.QrcodeImg = gzhQrcode.QrcodeImg
-				}*/
-	}
-
-	type ApiRet struct {
-		DollarWinConfg  *dollar_win_model.DollarWinZtConfig `json:"dollar_win_confg"`
-		UserJoinedCount int64                               `json:"user_joined_count"`
-	}
-
-	self.Data["json"] = &ApiRet{DollarWinConfg: ztConfig, UserJoinedCount: userJoinCount}
-	self.ServeJSON()
-
-}
-
-func (self *DollarWinController) GetJoinStateList() {
-
-	_id := self.Ctx.Input.Param(":id")
-	cId, _ := strconv.ParseInt(_id, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 20)
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-
-	ztConfig := dollar_win_model.GetDollarWinZtConfigById(cId, useCache)
-	if ztConfig == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	var currenWxUser *user_model.WxUser
-	var joinWinList []*dollar_win_model.DollarWinZtJoin
-	var userJoinList []*dollar_win_model.DollarWinZtJoin
-	var list []*dollar_win_model.DollarWinZtJoin
-	listCount := int64(0)
-	frendCount := int64(0)
-
-	type ApiRet struct {
-		JoinWinList    []*dollar_win_model.DollarWinZtJoin `json:"join_win_list"`
-		UserJoinList   []*dollar_win_model.DollarWinZtJoin `json:"user_join_list"`
-		List           []*dollar_win_model.DollarWinZtJoin `json:"list"`
-		ListCount      int64                               `json:"list_count"`
-		FrendListCount int64                               `json:"frend_list_count"`
-	}
-
-	currenWxUser = self.GetCurrentWxUser(useCache)
-	joinWinList = dollar_win_model.GetJoinPaiedWinListByZtConfigId(ztConfig.Id, useCache)
-	userJoinList = dollar_win_model.GetJoinPaiedWinListByZtConfigIdAndUId(ztConfig.Id, currenWxUser.UserId, useCache)
-	list = dollar_win_model.GetJoinPaiedListByZtConfigId(ztConfig.Id, page, perPage, useCache)
-	listCount = dollar_win_model.GetJoinPaiedListCountByZtConfigId(ztConfig.Id, useCache)
-	frendCount = dollar_win_model.GetFrendJoinPaiedListCountByZtConfigId(ztConfig.Id, currenWxUser.UserId, useCache)
-
-	for _, item := range joinWinList {
-		wxUser := user_model.GetWxUserByUserId(item.UserId, useCache)
-		if wxUser != nil {
-			item.WxUserHead = self.GetFullImgUrl(wxUser.Head)
-			item.WxUserName = wxUser.Nickname
-		}
-	}
-	for _, item := range userJoinList {
-		wxUser := user_model.GetWxUserByUserId(item.UserId, useCache)
-		if wxUser != nil {
-			item.WxUserHead = self.GetFullImgUrl(wxUser.Head)
-			item.WxUserName = wxUser.Nickname
-		}
-	}
-	for _, item := range list {
-		wxUser := user_model.GetWxUserByUserId(item.UserId, useCache)
-		if wxUser != nil {
-			item.WxUserHead = self.GetFullImgUrl(wxUser.Head)
-			item.WxUserName = wxUser.Nickname
-			item.IsInvite = false
-			if item.TempInviteId > 0 && item.TempInviteId != 607148 {
-				//找出邀请人的参与记录,并比较,如果被邀请人在邀请人之后支付,则显示邀请人头像
-				inviteDollar := dollar_win_model.GetDollarWinZtJoinByTempInviteId(ztConfig.Id, item.TempInviteId, useCache)
-				if inviteDollar != nil {
-					inviter := user_model.GetWxUserByUserId(item.TempInviteId, false)
-					if inviter != nil {
-						if item.PaiedAt > inviteDollar.PaiedAt {
-							item.IsInvite = true
-							item.InviteUserHead = self.GetFullImgUrl(inviter.Head)
-						}
-					}
-				}
-			}
-		}
-	}
-
-	if joinWinList == nil {
-		joinWinList = make([]*dollar_win_model.DollarWinZtJoin, 0, 0)
-	}
-	if userJoinList == nil {
-		userJoinList = make([]*dollar_win_model.DollarWinZtJoin, 0, 0)
-	}
-	if list == nil {
-		list = make([]*dollar_win_model.DollarWinZtJoin, 0, 0)
-	}
-
-	self.Data["json"] = &ApiRet{JoinWinList: joinWinList, UserJoinList: userJoinList, List: list, ListCount: listCount, FrendListCount: frendCount}
-	self.ServeJSON()
-}
-
-func (self *DollarWinController) GetFrendJoinStateList() {
-
-	_id := self.Ctx.Input.Param(":id")
-	cId, _ := strconv.ParseInt(_id, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 20)
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-
-	ztConfig := dollar_win_model.GetDollarWinZtConfigById(cId, useCache)
-	if ztConfig == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	var currenWxUser *user_model.WxUser
-
-	var frendJoinList []*dollar_win_model.DollarWinZtJoin
-	frendCount := int64(0)
-	type ApiRet struct {
-		FrendWinList   []*dollar_win_model.DollarWinZtJoin `json:"frend_list"`
-		FrendListCount int64                               `json:"frend_list_count"`
-	}
-
-	//找出会员自己的参与记录,如果自己的参与记录在好友之前,则在好友头像列表中加入会员自己的头像
-	currenWxUser = self.GetCurrentWxUser(useCache)
-	myDollar := dollar_win_model.GetDollarWinZtJoinByTempInviteId(ztConfig.Id, currenWxUser.UserId, useCache)
-	if myDollar == nil {
-		frendJoinList = make([]*dollar_win_model.DollarWinZtJoin, 0, 0)
-		frendCount = 0
-	} else {
-		paiedAt := myDollar.PaiedAt
-		frendJoinList = dollar_win_model.GetJoinFrendPaiedWinListByZtConfigIdAndUId(ztConfig.Id, currenWxUser.UserId, paiedAt, page, perPage, useCache)
-		frendCount = dollar_win_model.GetFrendJoinPaiedListCountByZtConfigId(ztConfig.Id, currenWxUser.UserId, useCache)
-	}
-
-	for _, item := range frendJoinList {
-		wxUser := user_model.GetWxUserByUserId(item.UserId, useCache)
-		if wxUser != nil {
-			item.WxUserHead = self.GetFullImgUrl(wxUser.Head)
-			item.WxUserName = wxUser.Nickname
-			if myDollar != nil {
-				if item.PaiedAt > myDollar.PaiedAt {
-					item.IsInvite = true
-					item.InviteUserHead = self.GetFullImgUrl(currenWxUser.Head)
-				} else {
-					item.IsInvite = false
-				}
-			}
-		}
-	}
-
-	if frendJoinList == nil {
-		frendJoinList = make([]*dollar_win_model.DollarWinZtJoin, 0, 0)
-	}
-	self.Data["json"] = &ApiRet{FrendWinList: frendJoinList, FrendListCount: frendCount}
-	self.ServeJSON()
-}
-
-var orderLock sync.Mutex
-
-func (self *DollarWinController) DollarWinOrder() {
-
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	temp_invite_id, _ := self.GetInt64("temp_invite_id")
-	useCache, _ := self.GetBool("cache", false)
-
-	wxUser := self.GetCurrentWxUser(false)
-	if wxUser == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	user := user_model.GetUserById(wxUser.UserId, false)
-	if user == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	act := dollar_win_model.GetDollarWinZtConfigById(id, useCache)
-	if act == nil {
-		self.ReturnError(403, []string{"actNotExist", "活动不存在"}, "", nil)
-	}
-
-	//注册第五创
-	if user.IsRegistD5c == 0 {
-		go regist.RegistD5c(user.Tel)
-	}
-
-	orderLock.Lock()
-	defer orderLock.Unlock()
-
-	if act.StartTime.Unix() > time.Now().Unix() {
-		self.ReturnError(403, []string{"actNotStart", "活动尚未开始"}, "", nil)
-	}
-	if act.StopTime.Unix() < time.Now().Unix() {
-		self.ReturnError(403, []string{"actNotStart", "活动已经结束"}, "", nil)
-	}
-
-	joinOrderList := dollar_win_model.GetJoinPaiedWinListByZtConfigIdAndUId(id, user.Id, false)
-	if int64(len(joinOrderList)) >= act.JoinTimesLimit {
-		self.ReturnError(403, []string{"joinedTimesLimit", "您的参与次数已达到上限"}, "", nil)
-	}
-	//若开启临时邀请机制,则应记录临时邀请人
-	var tempInviteId int64
-	if act.IsTemp == true {
-		inviteWxUser := user_model.GetWxUserById(temp_invite_id, false)
-		if inviteWxUser != nil {
-			tempInviteId = inviteWxUser.UserId
-		}
-	}
-	//如果邀请人为本人,则不记录
-	if user.Id == tempInviteId {
-		tempInviteId = int64(0)
-	}
-
-	joinOrder := new(dollar_win_model.DollarWinZtJoin).Create(user.Id, id, act.JoinCostAmount, tempInviteId)
-	if joinOrder == nil {
-		self.ReturnError(403, []string{"orderFailed", "下单失败,请稍后重试"}, "", nil)
-	}
-
-	type Ret struct {
-		OrderId string `json:"order_id"`
-	}
-
-	self.Data["json"] = &Ret{OrderId: joinOrder.OrderId}
-	self.ServeJSON()
-}
-
-func (self *DollarWinController) DollarWinRank() {
-	cron_controller.DollarWinRank()
-	type Ret struct {
-		State string `json:"state"`
-	}
-	self.Data["json"] = &Ret{State: "ok"}
-	self.ServeJSON()
-}

+ 0 - 136
go/gopath/src/fohow.com/apps/controllers/exchange_controller/callback_exchange_controller.go

@@ -1,136 +0,0 @@
-package exchange_controller
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"fohow.com/apps"
-	"fohow.com/apps/models/balance_model"
-	"fohow.com/apps/models/exchange_model"
-	"fohow.com/apps/models/user_model"
-	"fohow.com/libs/yidui"
-	"strings"
-	"time"
-)
-
-type YiZhiFuRet struct {
-	IsOk      bool   `json:"is_ok"`
-	ResultStr string `json:"result_str"`
-}
-
-//电信翼支付
-func (self *ExchangeController) PagePay() {
-	platform := self.Ctx.Input.Param(":platform")
-
-	user := self.GetCurrentUser(true)
-	wxUId := self.GetCurrentWxUserId()
-
-	count, _ := self.GetInt64("count") //兑换数量
-	if count <= 0 {
-		self.ReturnError(403, apps.ParamsRequired, "", nil)
-	}
-
-	if beego.BConfig.RunMode == beego.DEV {
-
-		user = user_model.GetUserById(600116, true)
-		user.Tel = "18024285081"
-	}
-
-	var ret *YiZhiFuRet
-	switch platform {
-	case "yizhifu":
-		ret = yiZhiFuPay(count, user.Tel, user.Id, wxUId)
-		//
-	}
-
-	self.Data["json"] = ret
-	self.ServeJSON()
-}
-
-//回调地址
-func (self *ExchangeController) CallbackAfterPagePay() {
-
-	_platform := self.Ctx.Input.Param(":platform") //平台
-	platform := exchange_model.GetPlatformByTag(_platform, false)
-	if platform == nil || platform.State != exchange_model.PLATFORM_STATE_ONLINE {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	beego.BeeLogger.Warn("CallbackAfterPagePay callback.....state:%s\n msg:%s\n orderseq:%s\n money:%s\n sign:%s\n", self.GetString("state"), self.GetString("msg"), self.GetString("ORDERSEQ"), self.GetString("money"), self.GetString("sign"))
-
-	state := self.GetString("state")
-	msg := self.GetString("msg")
-	orderSeq := self.GetString("ORDERSEQ")
-	money := self.GetString("money")
-	sign := self.GetString("sign")
-
-	beego.BeeLogger.Warn("CallbackAfterPagePay page jump pay: state(%s),msg(%s),orderSeq(%s),money(%s),sign:(%s)", state, msg, orderSeq, money, sign)
-	if state != "1" {
-		self.ReturnError(403, apps.PayFail, "", nil)
-	}
-
-	var verifySign bool
-	waitingSign := fmt.Sprintf("%s%s%s%s%s", state, msg, orderSeq, money, yidui.YIZHIFU_SIGN)
-	verifySign = yidui.VerifySignature(waitingSign, sign)
-	if !verifySign {
-		beego.BeeLogger.Error("CallbackAfterPagePay tradeNo=%s sign=%s not verify.", orderSeq, sign)
-		self.ReturnError(403, apps.PayFail, "", nil)
-	}
-
-	order := exchange_model.GetExchangeOrderByTradeNo(orderSeq, false)
-	if order == nil {
-		beego.BeeLogger.Error("CallbackAfterPagePay tradeNo=%s not exist.", orderSeq)
-		self.ReturnError(403, apps.PayFail, "", nil)
-	}
-
-	if order.State == 1 {
-		beego.BeeLogger.Error("CallbackAfterPagePay tradeNo=%s has pay", orderSeq)
-		self.ReturnError(403, apps.PayFail, "", nil)
-	}
-
-	order.State = 1
-	order.PaiedAt = time.Now().Unix()
-	if !order.Save() {
-		beego.BeeLogger.Error("CallbackAfterPagePay return. save tradeNo=%s fail", orderSeq)
-	}
-
-	s := balance_model.BALANCE_SOURCE_PLATFORM_EXCHANGE
-	remark := platform.Name
-	new(balance_model.Balance).Create(order.WxUserId, order.UserId, order.PaiedCount, s, order.OrderId, remark)
-
-	self.Data["json"] = order
-	self.ServeJSON()
-}
-
-func yiZhiFuPay(count int64, tel string, userId, wxUId int64) *YiZhiFuRet {
-
-	yizhifuPlatform := exchange_model.GetPlatformByTag("yizhifu", false)
-	if yizhifuPlatform == nil || yizhifuPlatform.State != exchange_model.PLATFORM_STATE_ONLINE {
-		return &YiZhiFuRet{false, apps.NoExist[1]}
-	}
-
-	//起兑代金券个数
-	labiStartCount := yizhifuPlatform.PStartCount * yizhifuPlatform.LabiCount / yizhifuPlatform.PCount
-
-	beego.BeeLogger.Warn("yizhifu_pay: labiStartCount(%d), count(%d), Pcount(%d), LabiCount(%d) , consumeJifen(%d)", labiStartCount, count, yizhifuPlatform.PCount, yizhifuPlatform.LabiCount, count*yizhifuPlatform.PCount/yizhifuPlatform.LabiCount)
-	//实际兑换个数不能小于起兑个数,且必须满足兑换比例,换算成商家代金券必须为整数
-	if count < labiStartCount || count*yizhifuPlatform.PCount%yizhifuPlatform.LabiCount != 0 {
-		return &YiZhiFuRet{false, apps.PlatformExchangeCountError[1]}
-	}
-
-	//商户平台扣除代金券数量
-	payAmount := count * yizhifuPlatform.PCount / yizhifuPlatform.LabiCount
-
-	tradeNo := exchange_model.CreateOrderId("YDEX")
-	//创建未兑换成功的订单
-	new(exchange_model.Order).BeforePayCreate(wxUId, userId, yizhifuPlatform.Id, payAmount, count, exchange_model.SOURCE_PLATFORM_EXCHANGE, tradeNo)
-
-	returnString := yidui.YiZhiFuPay(payAmount, tel, fmt.Sprintf("%s%s", beego.AppConfig.String("ApiHost"), "/v1/pf/yizhifu/page/callback"), "http://m.d5ct.com/user", tradeNo)
-
-	isOk := false
-
-	if strings.Contains(returnString, "https://") {
-		isOk = true
-	}
-
-	return &YiZhiFuRet{isOk, returnString}
-}

+ 0 - 383
go/gopath/src/fohow.com/apps/controllers/exchange_controller/exchange_controller.go

@@ -1,383 +0,0 @@
-package exchange_controller
-
-import (
-	"fmt"
-	"fohow.com/apps"
-	"fohow.com/apps/helpers"
-	"fohow.com/apps/models/balance_model"
-	"fohow.com/apps/models/exchange_model"
-	"fohow.com/apps/models/order_model"
-	"fohow.com/cache"
-	"fohow.com/libs/yidui"
-	"github.com/astaxie/beego"
-	"strconv"
-	"time"
-)
-
-const (
-	ZHINENGYUN_YIDONG_GET_CODE = "yidong_code"
-	ZHINENGYUN_YIDONG_ACCEPTID = "yidong_acceptid"
-
-	ZHINENGYUN_YIDONG_EXCHANGE_BASE = 100 //广西智能云移动84代金券等于100分钱即1元。
-	// 作为FOHOW玖玖兑换基础。(用户兑换160代金券/系统设定80基数)*100分钱 = 移动消耗的金钱即100*2分钱 = 移动消耗的代金券84*2代金券。
-
-	YIDONG_PAY_NOTIFY_URL = "none" //兑换借口回调地址
-)
-
-type CheckResult struct {
-	RetCode string `json:"ret_code"`
-	RetMsg  string `json:"ret_msg"`
-	Balance int64  `json:"balance"`
-}
-
-type ExchangeResult struct {
-	RetCode string `json:"ret_code"`
-	RetMsg  string `json:"ret_msg"`
-	TradeNo string `json:"trade_no"`
-}
-
-//查询对接商户的代金券余额
-func (self *ExchangeController) Check() {
-	_id := self.Ctx.Input.Param(":id")
-	pId, _ := strconv.ParseInt(_id, 10, 64)
-	platform := exchange_model.GetPlatformById(pId, false)
-	if platform == nil || platform.State != exchange_model.PLATFORM_STATE_ONLINE {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	user := self.GetCurrentUser(false)
-
-	result := helpers.GetCheckPlatformMallBalance(platform.Secret, user.Tel, platform.CheckUrl)
-
-	if result == nil || result.RetCode != exchange_model.PL_RET_CODE_SUCCESS {
-		beego.BeeLogger.Error("Platform check failed, platform id:%d, retMsg:%s", platform.Id, result)
-		self.ReturnError(403, apps.PlatformCheckFailed, "", nil)
-	}
-	type Ret struct {
-		TotalBalance int64 `json:"total"`
-	}
-	self.Data["json"] = &Ret{TotalBalance: result.Balance}
-	self.ServeJSON()
-}
-
-//通兑接口
-func (self *ExchangeController) Exchange() {
-	_id := self.Ctx.Input.Param(":id")
-	pId, _ := strconv.ParseInt(_id, 10, 64)
-	platform := exchange_model.GetPlatformById(pId, false)
-	if platform == nil || platform.State != exchange_model.PLATFORM_STATE_ONLINE {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	if len(platform.Secret) < 16 {
-		self.ReturnError(403, apps.ExchangeSecretError, "", nil)
-	}
-	count, _ := self.GetInt64("count")
-	if count <= 0 {
-		self.ReturnError(403, apps.ParamsRequired, "", nil)
-	}
-	user := self.GetCurrentUser(false)
-	wxUserId := self.GetCurrentWxUserId()
-	// user := user_model.GetUserById(1, true)
-	// tel := "13570643147"
-	platformCount := count * platform.PCount / platform.LabiCount //商户平台扣除代金券数量
-	result := helpers.ExchangePlatformMallBalance(platformCount, platform.Secret, user.Tel, platform.ExchangeUrl, helpers.EXTYPE_TONGDUI)
-	if result == nil || result.RetCode != exchange_model.PL_RET_CODE_SUCCESS {
-		beego.BeeLogger.Error("Platform exchange failed, platform id:%d, retMsg:%s", platform.Id, result.RetMsg)
-		self.ReturnError(403, apps.PlatformExchangeFailed, "", nil)
-	}
-
-	//创建订单
-	order := new(exchange_model.Order).Create(wxUserId, user.Id, platform.Id, platformCount, count,
-		exchange_model.SOURCE_PLATFORM_EXCHANGE, result.TradeNo)
-	if order != nil {
-		s := balance_model.BALANCE_SOURCE_PLATFORM_EXCHANGE
-		remark := platform.Name
-		new(balance_model.Balance).Create(wxUserId, user.Id, count, s, order.OrderId, remark)
-	}
-	self.Data["json"] = order
-	self.ServeJSON()
-}
-
-//商户列表
-func (self *ExchangeController) List() {
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 20)
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-	cache, _ := self.GetBool("cache", true)
-	list := exchange_model.GetPlatforms(page, perPage, cache)
-	count := exchange_model.GetPlatformsCount(cache)
-	type Ret struct {
-		List      []*exchange_model.Platform `orm:"-"         json:"list"`
-		ListCount int64                      `orm:"-"         json:"list_count"`
-	}
-	self.Data["json"] = &Ret{ListCount: count, List: list}
-	self.ServeJSON()
-}
-
-//特殊平台查询余额,对接他们的规则
-func (self *ExchangeController) SpecialCheck() {
-	platform := self.Ctx.Input.Param(":platform")
-	// tel := self.GetString("tel")
-	user := self.GetCurrentUser(true)
-	//余额(分)
-	balance := int64(0)
-	switch platform {
-	case "liantong":
-		balance = yidui.LianTongCheckBalance(user.Tel)
-	case "yidong":
-
-		/**
-		测试号码15007831001
-		*/
-		if beego.BConfig.RunMode == beego.DEV {
-			user.Tel = "15007831001"
-			if user.Id == 600123 || user.Id == 600126 {
-				balance = 3064
-				break
-			}
-		}
-
-		code := self.GetString("code")
-		k := fmt.Sprintf("%s_%s", ZHINENGYUN_YIDONG_ACCEPTID, user.Tel)
-		acceptId, ok := cache.Cache.Get(k).(string)
-		if !ok {
-			//验证码过期
-			self.ReturnError(403, apps.TelCodesExpired, "", nil)
-		}
-		beego.BeeLogger.Warn("yidongcheck: tel(%s),acceptid(%s),code(%s)", user.Tel, acceptId, code)
-		jifen, isOk := yidui.YiDongCheckBalance(user.Tel, code, acceptId)
-		balance = jifen
-		//若查询成功,则使流水号过期。
-		if isOk {
-			cache.Cache.Delete(k)
-		}
-	}
-
-	type Ret struct {
-		TotalBalance int64 `json:"total"` //单位分
-	}
-	self.Data["json"] = &Ret{TotalBalance: balance}
-	self.ServeJSON()
-}
-
-//特殊平台支付,对接他们的规则
-func (self *ExchangeController) SpecialExchange() {
-	platform := self.Ctx.Input.Param(":platform") //平台
-	count, _ := self.GetInt64("count")            //兑换数量
-	if count <= 0 {
-		self.ReturnError(403, apps.ParamsRequired, "", nil)
-	}
-
-	switch platform {
-	case "liantong":
-		self.liantongPay(count)
-	case "yidong":
-		self.yidongPay(count)
-	}
-}
-
-func (self *ExchangeController) liantongPay(count int64) {
-	user := self.GetCurrentUser(true)
-	wxUserId := self.GetCurrentWxUserId()
-	pwd := self.GetString("pwd") //支付密码
-	balance := yidui.LianTongCheckBalance(user.Tel)
-	if balance < count {
-		self.ReturnError(403, apps.BalanceNotEnough, "", nil)
-	}
-
-	platform := exchange_model.GetPlatformByTag("liantong", false)
-	if platform == nil || platform.State != exchange_model.PLATFORM_STATE_ONLINE {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	//起兑代金券个数
-	labiStartCount := platform.PStartCount * platform.LabiCount / platform.PCount
-	//实际兑换个数不能小于起兑个数,且必须满足兑换比例,换算为整数的商家代金券
-	if count < labiStartCount || count*platform.PCount%platform.LabiCount != 0 {
-		self.ReturnError(403, apps.PlatformExchangeCountError, "", nil)
-	}
-	//商户平台扣除代金券数量
-	platformCount := count * platform.PCount / platform.LabiCount
-	tradeNo := exchange_model.CreateOrderId("LTEX")
-	result := yidui.LianTongPay(platformCount, user.Tel, pwd, tradeNo)
-	if result == nil || result.Data != "success" {
-		self.ReturnError(403, apps.PlatformExchangeFailed, "", nil)
-	}
-	//创建订单
-	order := new(exchange_model.Order).Create(wxUserId, user.Id, platform.Id, platformCount, count,
-		exchange_model.SOURCE_PLATFORM_EXCHANGE, tradeNo)
-	if order != nil {
-		s := balance_model.BALANCE_SOURCE_PLATFORM_EXCHANGE
-		remark := platform.Name
-		new(balance_model.Balance).Create(wxUserId, user.Id, count, s, order.OrderId, remark)
-	}
-	self.Data["json"] = order
-	self.ServeJSON()
-}
-
-/**
-测试号码15007831001
-广西区移动号码查询代金券和兑换代金券,均需要短信验证码以及acceptid流水号。
-此接口需要调用移动接口发送短信,同时存储返回的acceptid流水号。
-需要ip防刷, 需要防止短信频繁发送。
-*/
-func (self *ExchangeController) SendYiDongCode() {
-	// tel := self.GetString("tel")
-	user := self.GetCurrentUser(true)
-	tel := user.Tel
-
-	type Ret struct {
-		IsOk bool   `json:"is_ok"`
-		Msg  string `json:"msg"`
-	}
-
-	if beego.BConfig.RunMode == beego.DEV {
-		tel = "15007831001"
-
-		if user.Id == 600123 || user.Id == 600126 {
-			self.Data["json"] = &Ret{IsOk: true, Msg: ""}
-			self.ServeJSON()
-		}
-	}
-
-	platform := exchange_model.GetPlatformByTag("yidong", false)
-	if platform == nil || platform.State != exchange_model.PLATFORM_STATE_ONLINE {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	//防刷,IP
-	ip := self.Ctx.Input.IP()
-	ipKey := fmt.Sprintf("SMS_Send_IP_%s_msgType_%s", ip, ZHINENGYUN_YIDONG_GET_CODE)
-	if ipTimes, ok := cache.Cache.Get(ipKey).(int64); ok {
-		ipTimes = ipTimes + 1
-		cache.Cache.Put(ipKey, ipTimes, 1*time.Minute)
-		if ipTimes > 10 {
-			// beego.BeeLogger.Error("sms send too often!!! IP: %s, tel:%s, msg_type: %s, times: %d", ip, tel, msg_type, ipTimes)
-			self.ReturnError(403, apps.CodesSendTooOften, "", nil)
-		}
-	} else {
-		ipTimes = 1
-		cache.Cache.Put(ipKey, ipTimes, 1*time.Minute)
-	}
-
-	//防刷,发送太频繁
-	sendTimesKey := fmt.Sprintf("SMS_Send_Times_%s", tel)
-	if sendTimes, ok := cache.Cache.Get(sendTimesKey).(int64); ok {
-		sendTimes = sendTimes + 1
-		cache.Cache.Put(sendTimesKey, sendTimes, 1*time.Minute)
-		if sendTimes > 10 {
-			self.ReturnError(403, apps.CodesSendTooOften, "", nil)
-		}
-	} else {
-		sendTimes = 1
-		cache.Cache.Put(sendTimesKey, sendTimes, 1*time.Minute)
-	}
-
-	k := fmt.Sprintf("%s_%s", ZHINENGYUN_YIDONG_ACCEPTID, tel)
-
-	result := yidui.GetYiDongCode(tel)
-
-	if result == nil {
-		self.ReturnError(403, apps.DataUnMarsha1Error, "", nil)
-	}
-
-	if !result.IsOK {
-		if result.Msg == "发送短信出错" {
-			result.Msg = "对不起,您的手机所在地暂未支持"
-		}
-		self.ReturnError(403, []string{"error", result.Msg}, "", nil)
-	}
-
-	cache.Cache.Put(k, result.Data.AcceptId, 3*time.Minute) //此时间根据短信验证码时间来决定
-	beego.BeeLogger.Warn("yidong_sendcode: tel(%s) ,acceptid(%s)", user.Tel, result.Data.AcceptId)
-
-	self.Data["json"] = &Ret{IsOk: result.IsOK, Msg: result.Msg}
-	self.ServeJSON()
-}
-
-/**
-测试手机号15007831001
-根据手机号、流水号、短信验证码兑换代金券
-*/
-func (self *ExchangeController) yidongPay(count int64) {
-	user := self.GetCurrentUser(true)
-	wxUserId := self.GetCurrentWxUserId()
-	if beego.BConfig.RunMode == beego.DEV {
-		user.Tel = "15007831001"
-	}
-
-	platform := exchange_model.GetPlatformByTag("yidong", false)
-	if platform == nil || platform.State != exchange_model.PLATFORM_STATE_ONLINE {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	//起兑代金券个数
-	labiStartCount := platform.PStartCount * platform.LabiCount / platform.PCount
-
-	beego.BeeLogger.Warn("yidongpay: labiStartCount(%d), count(%d), Pcount(%d), LabiCount(%d) , consumeJifen(%d)", labiStartCount, count, platform.PCount, platform.LabiCount, count*platform.PCount/platform.LabiCount)
-	//实际兑换个数不能小于起兑个数,且必须满足兑换比例,换算成商家代金券必须为整数
-	if count < labiStartCount || count*platform.PCount%platform.LabiCount != 0 {
-		self.ReturnError(403, apps.PlatformExchangeCountError, "", nil)
-	}
-	//需要消耗的移动代金券, 为p_start_count的倍数
-	//consumeJifen := count*platform.PCount/platform.LabiCount
-	consumeJifen := count * platform.PStartCount / platform.LabiRange
-	if consumeJifen%platform.PStartCount != 0 {
-		self.ReturnError(403, apps.PlatformExchangeCountError, "", nil)
-	}
-
-	//传给接口的分钱
-	//fenMoney := (count / platform.LabiCount ) * ZHINENGYUN_YIDONG_EXCHANGE_BASE
-	fenMoney := (count / platform.LabiRange) * ZHINENGYUN_YIDONG_EXCHANGE_BASE
-
-	beego.BeeLogger.Warn("yidongpay: tel(%s), count(%d), labiRange(%d), fenMoney(%d)", user.Tel, count, platform.LabiRange, fenMoney)
-
-	if beego.BConfig.RunMode == beego.DEV {
-		if user.Id == 600123 || user.Id == 600126 {
-			order := new(order_model.Order)
-			self.Data["json"] = order
-			self.ServeJSON()
-		}
-	}
-
-	code := self.GetString("code")
-	k := fmt.Sprintf("%s_%s", ZHINENGYUN_YIDONG_ACCEPTID, user.Tel)
-	acceptId, ok := cache.Cache.Get(k).(string)
-	if !ok {
-		//验证码过期
-		self.ReturnError(403, apps.TelCodesExpired, "", nil)
-	}
-
-	balance, isOk := yidui.YiDongCheckBalance(user.Tel, code, acceptId)
-	beego.BeeLogger.Warn("yidongpay: balance(%d), isOk(%v)", balance, isOk)
-	if balance < consumeJifen {
-		self.ReturnError(403, apps.BalanceNotEnough, "", nil)
-	}
-
-	orderNum := exchange_model.CreateOrderId("YDEX")
-
-	beego.BeeLogger.Warn("yidongpay: tel(%s),code(%s),acceptid(%s), count(%d), labiRange(%d), fenMoney(%d)", user.Tel, code, acceptId, count, platform.LabiRange, fenMoney)
-
-	result := yidui.YiDongPay(fenMoney, user.Tel, code, acceptId, orderNum, YIDONG_PAY_NOTIFY_URL)
-	if result == nil || !result.IsOK {
-		self.ReturnError(403, apps.PlatformExchangeFailed, "", nil)
-	}
-
-	//创建订单
-	order := new(exchange_model.Order).Create(wxUserId, user.Id, platform.Id, consumeJifen, count,
-		exchange_model.SOURCE_PLATFORM_EXCHANGE, orderNum)
-	if order != nil {
-		s := balance_model.BALANCE_SOURCE_PLATFORM_EXCHANGE
-		remark := platform.Name
-		new(balance_model.Balance).Create(wxUserId, user.Id, count, s, order.OrderId, remark)
-	}
-
-	//若查询成功,则使流水号过期。
-	if result.IsOK {
-		cache.Cache.Delete(k)
-	}
-
-	self.Data["json"] = order
-	self.ServeJSON()
-}

+ 0 - 103
go/gopath/src/fohow.com/apps/controllers/exchange_controller/exchange_test.go

@@ -1,103 +0,0 @@
-package exchange_controller
-
-import (
-	"crypto/aes"
-	"crypto/cipher"
-	// "crypto/rand"
-	"encoding/base64"
-	// "encoding/hex"
-	"fmt"
-	// "io"
-	"testing"
-	// "os"
-)
-
-func TestMain(t *testing.T) {
-	demo2()
-	// demo1()
-}
-
-func demo2() {
-	// key := []byte("example key 1234")
-	// plaintext := []byte("some plaintext")
-
-	// block, err := aes.NewCipher(key)
-	// if err != nil {
-	// 	panic(err)
-	// }
-
-	// // The IV needs to be unique, but not secure. Therefore it's common to
-	// // include it at the beginning of the ciphertext.
-	// ciphertext := make([]byte, aes.BlockSize+len(plaintext))
-	// iv := ciphertext[:aes.BlockSize]
-	// if _, err := io.ReadFull(rand.Reader, iv); err != nil {
-	// 	panic(err)
-	// }
-
-	// stream := cipher.NewCFBEncrypter(block, iv)
-	// stream.XORKeyStream(ciphertext[aes.BlockSize:], plaintext)
-	// base64Str := base64.StdEncoding.EncodeToString(ciphertext)
-	// hexStr := hex.EncodeToString(ciphertext)
-	// a := fmt.Sprintf("%s=>%v, %v", plaintext, base64Str, hexStr)
-	// fmt.Println(a)
-	// It's important to remember that ciphertexts must be authenticated
-	// (i.e. by using crypto/hmac) as well as being encrypted in order to
-	// be secure.
-
-	key := []byte("example key 1234")
-	ciphertext, _ := base64.StdEncoding.DecodeString("gMok0OuLNJSX91zIdaVPnWXMTYEqSA24mxnrgzfo")
-	fmt.Printf("11: %v \n", ciphertext)
-	// ciphertext, _ := hex.DecodeString("22277966616d9bc47177bd02603d08c9a67d5380d0fe8cf3b44438dff7b9")
-	block, err := aes.NewCipher(key)
-	if err != nil {
-		panic(err)
-	}
-
-	// The IV needs to be unique, but not secure. Therefore it's common to
-	// include it at the beginning of the ciphertext.
-	if len(ciphertext) < aes.BlockSize {
-		panic("ciphertext too short")
-	}
-	iv := ciphertext[:aes.BlockSize]
-	fmt.Println(iv)
-	ciphertext = ciphertext[aes.BlockSize:]
-	fmt.Println(ciphertext)
-
-	stream := cipher.NewCFBDecrypter(block, iv)
-
-	// XORKeyStream can work in-place if the two arguments are the same.
-	stream.XORKeyStream(ciphertext, ciphertext)
-	fmt.Printf("%s", ciphertext)
-
-}
-
-func demo1() {
-
-	var commonIV = []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}
-	//需要去加密的字符串
-	plaintext := []byte("My name is Astaxie")
-	//aes的加密字符串
-	key_text := "astaxie12798akljzmknm.ahkjkljl;k"
-
-	fmt.Println(len(key_text))
-
-	// 创建加密算法aes
-	c, err := aes.NewCipher([]byte(key_text))
-	if err != nil {
-		fmt.Printf("Error: NewCipher(%d bytes) = %s", len(key_text), err)
-	}
-
-	//加密字符串
-	cfb := cipher.NewCFBEncrypter(c, commonIV)
-	ciphertext := make([]byte, len(plaintext))
-	fmt.Printf("before: %v \n", ciphertext)
-	cfb.XORKeyStream(ciphertext, plaintext)
-	fmt.Printf("after: %x\n", ciphertext)
-	fmt.Printf("%s=>%x\n", plaintext, ciphertext)
-
-	// 解密字符串
-	cfbdec := cipher.NewCFBDecrypter(c, commonIV)
-	plaintextCopy := make([]byte, len(plaintext))
-	cfbdec.XORKeyStream(plaintextCopy, ciphertext)
-	fmt.Printf("%x=>%s\n", ciphertext, plaintextCopy)
-}

+ 0 - 31
go/gopath/src/fohow.com/apps/controllers/exchange_controller/init.go

@@ -1,31 +0,0 @@
-package exchange_controller
-
-import (
-	// "fmt"
-	// "os"
-	// "net/url"
-	// "strings"
-
-	// "github.com/astaxie/beego"
-	"github.com/astaxie/beego/context"
-	// "github.com/go-wkhtmltoimage"
-	// "github.com/skip2/go-qrcode"
-
-	"fohow.com/apps"
-)
-
-var (
-	//需要校验用户登录的Action
-	exceptCheckUserLoginAction   = []string{"GetYesterdayTotalPaiedCount", "List", "CallbackAfterPagePay"}
-	exceptCheckWxUserLoginAction = []string{"GetYesterdayTotalPaiedCount", "List", "CallbackAfterPagePay"}
-)
-
-type ExchangeController struct {
-	apps.BaseController
-}
-
-func (self *ExchangeController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}

+ 0 - 528
go/gopath/src/fohow.com/apps/controllers/granary_controller/granary_controller.go

@@ -1,528 +0,0 @@
-package granary_controller
-
-import (
-	"fmt"
-	"strconv"
-	// "strings"
-	// "sync"
-	"time"
-	// // "time"
-	// // "d"
-	// "github.com/astaxie/beego"
-	// // "github.com/astaxie/beego/context"
-	"fohow.com/apps"
-	// // "fohow.com/apps/controllers/user_controller"
-	// // "fohow.com/apps/models/activity_model"
-	"fohow.com/apps/models/address_model"
-	"fohow.com/apps/models/order_model"
-	"fohow.com/apps/models/product_model"
-	"fohow.com/apps/models/project_model"
-	// // "fohow.com/libs/wx_mp"
-	// "fmt"
-	// "fohow.com/apps/helpers"
-	"fohow.com/apps/models/granary_model"
-	"fohow.com/apps/models/user_model"
-	// "fohow.com/libs/tool"
-	"github.com/astaxie/beego"
-	"fohow.com/apps/models/balance_model"
-)
-
-//开仓放粮
-func (self *GranaryController) DistributeBonus() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	bonus := project_model.GetProjectBonusById(id, false)
-	if bonus == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	investWay := project_model.GetProjectInvestWayById(bonus.ProjectInvestWayId, false)
-	if investWay == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	pjs := project_model.GetInvestListByPIdAndWId(bonus.ProjectId, bonus.ProjectInvestWayId, false)
-	for _, pj := range pjs {
-		granary := granary_model.GetGranaryByBonusIdAndUId(bonus.Id, pj.UserId, false)
-		count := pj.InvestCount / investWay.GapLimit * bonus.Count
-		selfUseMin := pj.InvestCount / investWay.GapLimit * bonus.SelfUseMinCount
-		buybackMax := pj.InvestCount / investWay.GapLimit * bonus.BuyBackMaxCount
-		buybackMin := pj.InvestCount / investWay.GapLimit * bonus.BuyBackMinCount
-		if granary == nil {
-			granary = new(granary_model.Granary).Create(bonus.Id, pj.UserId, bonus.ProductId, count, selfUseMin, buybackMax, buybackMin)
-		} else {
-			granary.TotalCount = count
-			granary.SelfUseMin = selfUseMin
-			granary.BuybackMax = buybackMax
-			granary.BuybackMin = buybackMin
-			granary.Save()
-		}
-	}
-	self.ServeJSON()
-}
-
-//针对某个收成的粮仓-回购-回款
-func (self *GranaryController) SendBuybackAmount() {
-
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	bonus := project_model.GetProjectBonusById(id, false)
-	now := time.Now().Unix()
-	beego.BeeLogger.Warn("bonus: %s", bonus)
-
-	if bonus == nil || now <= bonus.BuyBackStopAt.Unix() || bonus.BuyBackMaxCount <= int64(0) || bonus.BuyBackPrice <= int64(0) {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	project := project_model.GetProjectById(bonus.ProjectId, false)
-	if project == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	granarys := granary_model.GetGranaryByBonusId(bonus.Id, false)
-	for _, granary := range granarys {
-		if granary.BuybackCount <= 0 {
-			continue
-		}
-
-		receiveWxUser := user_model.GetWxUserByUserId(granary.UserId, false)
-		if receiveWxUser == nil {
-			continue
-		}
-
-		receiveBuybackAmount := bonus.BuyBackPrice * granary.BuybackCount
-
-		rId := fmt.Sprintf("buybackOrderId-%d", granary.Id)
-		source := balance_model.CASH_SOURCE_RECEIVE_BUYBACK
-		remark := fmt.Sprintf("%s", project.Title)
-		//查询有没相关资金记录
-		cashBalance := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(receiveWxUser.Id, rId, source)
-		//有就不发
-		if cashBalance == nil {
-			//没有就发
-			reCashBalance := new(balance_model.CashBalance).Create(receiveWxUser.Id, receiveBuybackAmount, source, rId, remark)
-			if reCashBalance != nil {
-				granary.ReBuybackAmount = receiveBuybackAmount
-				granary.Save()
-			}
-		}
-	}
-	self.ServeJSON()
-}
-
-//粮仓列表
-func (self *GranaryController) List() {
-	cache, _ := self.GetBool("cache", false)
-	user := self.GetCurrentUser(cache)
-	// user = user_model.GetUserById(600105, cache)
-	page, _ := self.GetInt64("page")
-	perPage, _ := self.GetInt64("per_page")
-	if page <= 0 {
-		page = 1
-	}
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-	type Ret struct {
-		List      []*granary_model.Granary `json:"list"`
-		ListCount int64                    `json:"list_count"`
-	}
-	list := granary_model.GetGranariesByUId(user.Id, page, perPage, cache)
-	listCount := granary_model.GetGranariesCountByUId(user.Id)
-	for _, granary := range list {
-		p := product_model.GetProductById(granary.ProductId, true)
-		if p == nil {
-			self.ReturnError(403, apps.NoExist, "", nil)
-		}
-		//剩余份数
-		//granary.LeftCount = granary.TotalCount - granary.SoldCount - granary.SelfUseCount - granary.BuybackCount
-		////剩余份数,回购完成才减去回购份数
-		granary.LeftCount = granary.TotalCount - granary.SelfUseCount - granary.SoldCount
-		if granary.BuybackCount > 0 && granary.ReBuybackAmount > 0 {
-			granary.LeftCount = granary.LeftCount - granary.BuybackCount
-		}
-		granary.Product = p
-		granary.CTime = granary.CreatedAt.Unix()
-		bonus := project_model.GetProjectBonusById(granary.ProjectBonusId, true)
-		if bonus == nil {
-			self.ReturnError(403, apps.NoExist, "", nil)
-		}
-		//回购单价
-		granary.BuybackPrice = bonus.BuyBackPrice
-		//可回购金额
-		granary.BuybackAmount = bonus.BuyBackPrice * granary.BuybackCount
-		//回购开始时间
-		granary.BuybackStartAt = bonus.BuyBackStartAt.Unix()
-		//回购结束时间
-		granary.BuybackStopAt = bonus.BuyBackStopAt.Unix()
-	}
-	self.Data["json"] = &Ret{List: list, ListCount: listCount}
-	self.ServeJSON()
-}
-
-//收成详情
-func (self *GranaryController) Info() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	cache, _ := self.GetBool("cache", false)
-	granary := granary_model.GetGranaryById(id, cache)
-	user := self.GetCurrentUser(true)
-	// user = user_model.GetUserById(600105, cache)
-	if granary == nil || user.Id != granary.UserId {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	p := product_model.GetProductById(granary.ProductId, true)
-	if p == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	granary.Product = p
-
-	bonus := project_model.GetProjectBonusById(granary.ProjectBonusId, true)
-	if bonus == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	//粮仓剩余可操作份数
-	validCount := granary.TotalCount - granary.SelfUseCount - granary.BuybackCount
-	// beego.BeeLogger.Error("------ 1 validCount:%d", validCount)
-	saleOrder := granary_model.GetSaleOrderByGId(id, false)
-	//如果有代销订单,减除代销订单的数量
-	if saleOrder != nil {
-		if saleOrder.State == granary_model.ORDER_STATE_ONLINE ||
-			saleOrder.State == granary_model.ORDER_STATE_SELL_UP {
-			validCount = validCount - saleOrder.TotalCount
-		} else {
-			validCount = validCount - granary.SoldCount
-		}
-		//售罄了
-		if validCount == 0 && saleOrder.TotalCount == saleOrder.SoldCount {
-			saleOrder.State = granary_model.ORDER_STATE_SELL_UP
-			saleOrder.Save()
-		}
-	}
-	granary.ValidCount = validCount
-
-	//剩余份数,回购完成才减去回购份数
-	granary.LeftCount = granary.TotalCount - granary.SelfUseCount - granary.SoldCount
-	if granary.BuybackCount > 0 && granary.ReBuybackAmount > 0 {
-		granary.LeftCount = granary.LeftCount - granary.BuybackCount
-	}
-
-	//回购单价
-	granary.BuybackPrice = bonus.BuyBackPrice
-	//可回购金额
-	granary.BuybackAmount = bonus.BuyBackPrice * granary.BuybackCount
-	//回购开始时间
-	granary.BuybackStartAt = bonus.BuyBackStartAt.Unix()
-	//回购结束时间
-	granary.BuybackStopAt = bonus.BuyBackStopAt.Unix()
-	granary.CTime = granary.CreatedAt.Unix()
-	self.Data["json"] = granary
-	self.ServeJSON()
-}
-
-//自用
-func (self *GranaryController) SelfUse() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	count, _ := self.GetInt64("count")
-	addressId, _ := self.GetInt64("address_id")
-	if count <= 0 {
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-	wxUser := self.GetCurrentWxUser(true)
-	// wxUser = user_model.GetWxUserById(2, true)
-	address := address_model.GetAddressByWxUIdAndId(wxUser.Id, addressId)
-	if address == nil {
-		self.ReturnError(403, apps.AddressNotExist, "", nil)
-	}
-
-	//粮仓剩余可操作份数
-	granary := granary_model.GetGranaryById(id, false)
-	if granary == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	validCount := granary.TotalCount - granary.SelfUseCount - granary.BuybackCount
-
-	saleOrder := granary_model.GetSaleOrderByPIdAndUIdAndGId(granary.ProductId, wxUser.UserId, granary.Id)
-
-	if saleOrder != nil && (saleOrder.State == granary_model.ORDER_STATE_ONLINE ||
-		saleOrder.State == granary_model.ORDER_STATE_SELL_UP) {
-		validCount = validCount - saleOrder.TotalCount
-	} else {
-		validCount = validCount - granary.SoldCount
-	}
-
-	if count > validCount {
-		self.ReturnError(403, apps.CountError, "", nil)
-	}
-	if granary == nil || wxUser.UserId != granary.UserId {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	p := product_model.GetProductById(granary.ProductId, true)
-	if p == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	totalPrice := p.RoboBalancePrice * count
-	buyPrice := p.BuyPrice * count
-
-	order := new(order_model.Order).Create(wxUser.Id, wxUser.UserId, p.Id, count, totalPrice, buyPrice, p.Price, p.RoboBalancePrice, order_model.SOURCE_XCX)
-	if order != nil {
-		order.Contact = address.Contact
-		order.Tel = address.Tel
-		order.Address = address.Province + address.City + address.District + address.Address
-		order.OrderType = order_model.ORDER_TYPE_SELF
-		order.Status = order_model.STATUS_PROCESSING
-		order.PaiedAt = time.Now().Unix() //支付时间存储秒级别
-		order.PaiedPrice = order.TotalPrice
-		order.GranaryId = id
-		if order.Save() {
-			granary.SelfUseCount += count
-			granary.Save()
-		}
-	}
-	self.Data["json"] = order
-	self.ServeJSON()
-}
-
-//自用订单历史
-func (self *GranaryController) GetSelfUseOrders() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	wxUser := self.GetCurrentWxUser(true)
-	// wxUser = user_model.GetWxUserById(2, true)
-	granary := granary_model.GetGranaryById(id, true)
-	if granary == nil || granary.UserId != wxUser.UserId {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	page, _ := self.GetInt64("page")
-	perPage, _ := self.GetInt64("per_page")
-	if page <= 0 {
-		page = 1
-	}
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-	type Ret struct {
-		List      []*order_model.Order `json:"list"`
-		ListCount int64                `json:"list_count"`
-	}
-	list := order_model.GetOrdersByOTypeAndWxUId(id, order_model.ORDER_TYPE_SELF, wxUser.Id, page, perPage)
-	listCount := order_model.GetOrdersCountByOTypeAndWxUId(id, order_model.ORDER_TYPE_SELF, wxUser.Id)
-	self.Data["json"] = &Ret{List: list, ListCount: listCount}
-	self.ServeJSON()
-}
-
-//获取代销订单
-func (self *GranaryController) GetSaleOrder() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	cache, _ := self.GetBool("cache", false)
-	granary := granary_model.GetGranaryById(id, cache)
-	user := self.GetCurrentUser(true)
-	// user = user_model.GetUserById(600105, true)
-	if granary == nil || user.Id != granary.UserId {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	p := product_model.GetProductById(granary.ProductId, true)
-	if p == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	saleOrder := granary_model.GetSaleOrderByGId(id, false)
-	type Ret struct {
-		SaleOrder *granary_model.SaleOrder           `json:"sale_order"`
-		Orders    []*granary_model.RelateOrderDetail `json:"orders"`
-	}
-	ret := new(Ret)
-	if saleOrder != nil {
-		saleOrder.Product = p
-		orders := granary_model.GetSaleRelateOrdersBySOId(saleOrder.OrderId)
-		for _, order := range orders {
-			wxUser := user_model.GetWxUserById(order.WxUid, true)
-			if wxUser != nil {
-				order.WxUserHead = self.GetFullImgUrl(wxUser.Head)
-				if !order.ReceiveTime.IsZero() {
-					order.ReceiveAt = order.ReceiveTime.Unix()
-				}
-				order.StatusCn = order_model.STATUS_CN_TEXT[order.Status]
-			}
-		}
-		ret.Orders = orders
-		ret.SaleOrder = saleOrder
-	}
-	self.Data["json"] = ret
-	self.ServeJSON()
-}
-
-//代销订单操作,上架、下架
-func (self *GranaryController) OperateSaleOrder() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	// cache, _ := self.GetBool("cache", false)
-	user := self.GetCurrentUser(true)
-	// user = user_model.GetUserById(600105, true)
-	granary := granary_model.GetGranaryById(id, false)
-	if granary == nil || user.Id != granary.UserId {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	p := product_model.GetProductById(granary.ProductId, true)
-	if p == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	saleOrder := granary_model.GetSaleOrderByGId(id, false)
-	operate := self.GetString("opt")
-	count, _ := self.GetInt64("count", 0) //可以销售的份数
-
-	leftCount := granary.TotalCount - granary.SoldCount - granary.BuybackCount
-	//如果自用份数没达到最小自用份数
-	if granary.SelfUseCount < granary.SelfUseMin && count > leftCount-granary.SelfUseMin {
-		msg := fmt.Sprintf("最少自用%d份", granary.SelfUseMin)
-		self.ReturnError(403, []string{"countError", msg}, "", nil)
-	}
-
-	granary.LeftCount = granary.TotalCount - granary.SoldCount - granary.SelfUseCount - granary.BuybackCount
-	if count <= 0 || count > granary.LeftCount {
-		self.ReturnError(403, apps.CountError, "", nil)
-	}
-
-	if operate == "on" {
-		if saleOrder == nil {
-			firstInvestTime := project_model.GetFirstInvestTimeByUIdAndPId(user.Id, p.Id)
-			if firstInvestTime == 0 {
-				self.ReturnError(403, apps.NoExist, "", nil)
-			}
-			saleOrder = new(granary_model.SaleOrder).Create(user.Id, granary.Id, p.Id, count, firstInvestTime)
-		} else {
-			saleOrder.TotalCount = count + saleOrder.SoldCount
-			saleOrder.State = granary_model.ORDER_STATE_ONLINE
-			saleOrder.OperateState = granary_model.OPERATE_STATE_NOTHING
-			saleOrder.Save()
-		}
-	} else if operate == "off" {
-		if saleOrder == nil {
-			self.ReturnError(403, apps.OrderNotExist, "", nil)
-		}
-		saleOrder.OperateState = granary_model.OPERATE_STATE_APPLY_OFF
-		saleOrder.Save()
-	} else {
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-	self.Data["json"] = saleOrder
-	self.ServeJSON()
-}
-
-//卖家换一换
-func (self *GranaryController) RefreshSaleOrder() {
-	oId := self.GetString("oid")
-	_pId := self.Ctx.Input.Param(":product_id")
-	pId, _ := strconv.ParseInt(_pId, 10, 64)
-	product := product_model.GetProductById(pId, true)
-	if product == nil || product.Ptype != product_model.TYPE_USER_SALE {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	order := granary_model.GetSaleOrderByOId(oId)
-	if order == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	saleOrder := granary_model.GetNextSaleOrderByPId(pId, oId)
-	if saleOrder == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	saler := user_model.GetUserById(saleOrder.SaleUserId, true)
-	if saler != nil {
-		saleOrder.SaleUserHead = self.GetFullImgUrl(saler.Head)
-		saleOrder.SaleUserName = saler.Nickname
-	}
-	self.Data["json"] = saleOrder
-	self.ServeJSON()
-}
-
-//回购
-func (self *GranaryController) BuyBack() {
-
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	count, _ := self.GetInt64("count")
-	beego.BeeLogger.Warn("count %d", count)
-	if count < 0 {
-		self.ReturnError(403, apps.FillCorrectBuybackCount, "", nil)
-	}
-	wxUser := self.GetCurrentWxUser(true)
-	//粮仓
-	granary := granary_model.GetGranaryById(id, false)
-	if granary == nil || granary.UserId != wxUser.UserId {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	if granary.BuybackMax <= 0 {
-		self.ReturnError(403, apps.NotSupportBuyback, "", nil)
-	}
-
-	//回购数量是否有限制
-	beego.BeeLogger.Warn("count: %s", count)
-	beego.BeeLogger.Warn("granary.BuybackMax: %s", granary.BuybackMax)
-	if count > granary.BuybackMax {
-		self.ReturnError(403, apps.BuybackCountLimit, "", nil)
-	}
-
-	//收成
-	bonus := project_model.GetProjectBonusById(granary.ProjectBonusId, true)
-	if bonus == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	//是否在回购期内
-	now := time.Now()
-	if now.Unix() < bonus.BuyBackStartAt.Unix() || now.Unix() > bonus.BuyBackStopAt.Unix() {
-		self.ReturnError(403, apps.NoUnderBuybackPeriod, "", nil)
-	}
-
-	//剩余份数是否足够
-	validCount := granary.TotalCount - granary.SelfUseCount
-
-	saleOrder := granary_model.GetSaleOrderByPIdAndUIdAndGId(granary.ProductId, wxUser.UserId, granary.Id)
-
-	if saleOrder != nil && (saleOrder.State == granary_model.ORDER_STATE_ONLINE ||
-		saleOrder.State == granary_model.ORDER_STATE_SELL_UP) {
-		validCount = validCount - saleOrder.TotalCount
-	} else {
-		validCount = validCount - granary.SoldCount
-	}
-
-	if count > validCount {
-		self.ReturnError(403, []string{"overValidCountLimit", fmt.Sprintf("最多可设置%d份", validCount)}, "", nil)
-	}
-
-	granary.BuybackCount = count
-	granary.Save()
-
-	type Ret struct {
-		BuybackStartAt int64 `json:"buyback_start_at"`
-		BuybackEndAt   int64 `json:"buyback_end_at"`
-		ReceiveAmount  int64 `json:"receive_amount"`
-	}
-
-	startAt := bonus.BuyBackStartAt.Unix()
-	endAt := bonus.BuyBackStopAt.Unix()
-	receiveAmount := granary.ReBuybackAmount
-
-	self.Data["json"] = &Ret{BuybackStartAt: startAt, BuybackEndAt: endAt, ReceiveAmount: receiveAmount}
-	self.ServeJSON()
-}
-
-//根据回报方式返回粮仓
-func (self *GranaryController) GetGranaryRepo() {
-
-	type Ret struct {
-		IsHarvest bool `json:"is_harvest"`
-	}
-
-	isHarvest := false
-	wId, _ := self.GetInt64("invest_way_id")
-	uId := self.GetCurrentUserId()
-	userGranary := granary_model.GetProjectGranaryByWayIdAndUId(wId, uId, false)
-	if userGranary != nil {
-		isHarvest = true
-	}
-
-	self.Data["json"] = &Ret{IsHarvest: isHarvest}
-	self.ServeJSON()
-}

+ 0 - 31
go/gopath/src/fohow.com/apps/controllers/granary_controller/init.go

@@ -1,31 +0,0 @@
-package granary_controller
-
-import (
-	// "fmt"
-	// "os"
-	// "net/url"
-	// "strings"
-
-	// "github.com/astaxie/beego"
-	"github.com/astaxie/beego/context"
-	// "github.com/go-wkhtmltoimage"
-	// "github.com/skip2/go-qrcode"
-
-	"fohow.com/apps"
-)
-
-var (
-	//需要校验用户登录的Action
-	exceptCheckUserLoginAction   = []string{"DistributeBonus", "SendBuybackAmount", "GetGranaryRepo"}
-	exceptCheckWxUserLoginAction = []string{"DistributeBonus", "SendBuybackAmount"}
-)
-
-type GranaryController struct {
-	apps.BaseController
-}
-
-func (self *GranaryController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}

+ 0 - 22
go/gopath/src/fohow.com/apps/controllers/invite_sale_controller/init.go

@@ -1,22 +0,0 @@
-package invite_sale_controller
-
-import (
-	"github.com/astaxie/beego/context"
-	"fohow.com/apps"
-)
-
-var (
-	//需要校验用户登录的Action
-	exceptCheckUserLoginAction   = []string{"Get", "GetCurConfig"}
-	exceptCheckWxUserLoginAction = []string{"Get", "GetCurConfig"}
-)
-
-type InviteSaleController struct {
-	apps.BaseController
-}
-
-func (self *InviteSaleController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}

+ 0 - 166
go/gopath/src/fohow.com/apps/controllers/invite_sale_controller/invite_sale_controller.go

@@ -1,166 +0,0 @@
-package invite_sale_controller
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"fohow.com/apps"
-	"fohow.com/apps/models/invite_sale_model"
-	"fohow.com/apps/models/use_limit"
-	"fohow.com/apps/models/user_model"
-	"strings"
-	"time"
-)
-
-func (self *InviteSaleController) Get() {
-
-	timeStr := self.GetString("choose_time")
-	if strings.TrimSpace(timeStr) == "" {
-		timeStr = time.Now().Format("2006-01-02")
-	}
-
-	page, _ := self.GetInt64("page", 1)
-
-	perPage, _ := self.GetInt64("per_page", 10)
-
-	useCache, _ := self.GetBool("cache", true)
-
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-
-	timeArray := strings.Split(timeStr, "-")
-	if len(timeArray) != 3 {
-		timeStr = time.Now().Format("2006-01-02")
-	}
-
-	timeParse, _ := time.ParseInLocation("2006-01-02", timeStr, time.Local)
-
-	type Ret struct {
-		RewardConfigList []*invite_sale_model.InviteSaleRewardConfig `json:"reward_config_list"`
-
-		List []*invite_sale_model.InviterSale `json:"list"`
-
-		ListCount int64 `json:"list_count"`
-
-		SelfSale int64 `json:"self_sale"`
-
-		RewardWxUser *invite_sale_model.InviteSaleRewardRecord `json:"reward_wx_user"`
-	}
-
-	beego.BeeLogger.Warn("timeStr : %s,  timeParseGet : %v", timeStr, timeParse)
-	configList := invite_sale_model.GetRewardConfigsByTime(timeParse, useCache)
-
-	if configList == nil {
-		configList = make([]*invite_sale_model.InviteSaleRewardConfig, 0, 0)
-	}
-	for _, item := range configList {
-		if item == nil {
-			continue
-		}
-		item.ConfigTimeSt = item.ConfigTime.Unix()
-		if item.ConfigTimeSt < 0 {
-			item.ConfigTimeSt = 0
-		}
-		item.SImg = self.GetFullImgUrl(item.SImg)
-	}
-
-	useLimits := use_limit.GetEffectAndLimitUpSaleList()
-	var limitWxUids []string
-	for _, useLimit := range useLimits {
-		wxUid := fmt.Sprintf("%d", useLimit.WxUid)
-		limitWxUids = append(limitWxUids, wxUid)
-	}
-
-	list := invite_sale_model.GetInviterSaleListByLimitWxUidsAndTime(page, perPage, strings.Join(limitWxUids, ","), timeParse, useCache)
-	if list == nil {
-		list = make([]*invite_sale_model.InviterSale, 0, 0)
-	}
-	for _, item := range list {
-		if item == nil {
-			continue
-		}
-		item.WxHead = self.GetFullImgUrl(item.WxHead)
-	}
-
-	for i := int64(0); i < int64(len(configList)); i++ {
-
-		if configList[i] == nil {
-			continue
-		}
-		if configList[i].RewardType == invite_sale_model.REWARD_TYPE_RATIO_ENUM {
-
-			count := int64(0)
-			if list != nil && len(list) > 0 && list[i] != nil {
-				count = list[i].Count
-			}
-			if count > 0 {
-				configList[i].RewardAmount = count * configList[i].RewardAmount / 100 // 69000分 * 1%  == 690
-			} else {
-				configList[i].RewardAmount = 0
-			}
-		}
-
-	}
-
-	listCount := invite_sale_model.GetInviterSaleListCountByLimitWxUidsAndTime(strings.Join(limitWxUids, ","), timeParse, useCache)
-
-	wxUId := self.GetCurrentWxUserId()
-	selfSaleAmount := int64(0)
-	selfSale := invite_sale_model.GetInviterSaleByInviteIdAndTime(wxUId, timeParse)
-	if selfSale != nil {
-		selfSaleAmount = selfSale.Count
-	}
-
-	rewardWxUser := invite_sale_model.GetInviteSaleRewardRecordByTime(timeParse)
-	if rewardWxUser != nil {
-		wxUser := user_model.GetWxUserById(rewardWxUser.WxUid, true)
-		if wxUser != nil {
-			rewardWxUser.WxNickname = wxUser.Nickname
-			rewardWxUser.WxHead = self.GetFullImgUrl(wxUser.Head)
-		}
-	}
-
-	self.Data["json"] = &Ret{RewardConfigList: configList, List: list, ListCount: listCount, SelfSale: selfSaleAmount, RewardWxUser: rewardWxUser}
-	self.ServeJSON()
-
-}
-
-func (self *InviteSaleController) GetCurConfig() {
-	timeStr := self.GetString("choose_time")
-	if strings.TrimSpace(timeStr) == "" {
-		timeStr = time.Now().Format("2006-01-02")
-	}
-
-	useCache, _ := self.GetBool("cache", true)
-
-	timeArray := strings.Split(timeStr, "-")
-	if len(timeArray) != 3 {
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-
-	timeParse, _ := time.ParseInLocation("2006-01-02", timeStr, time.Local)
-
-	type Ret struct {
-		RewardConfigList []*invite_sale_model.InviteSaleRewardConfig `json:"reward_config_list"`
-	}
-
-	beego.BeeLogger.Warn("timeStr : %s,  timeParseGet : %v", timeStr, timeParse)
-	configList := invite_sale_model.GetRewardConfigsByTime(timeParse, useCache)
-
-	if configList == nil {
-		configList = make([]*invite_sale_model.InviteSaleRewardConfig, 0, 0)
-	}
-	for _, item := range configList {
-		if item == nil {
-			continue
-		}
-		item.ConfigTimeSt = item.ConfigTime.Unix()
-		if item.ConfigTimeSt < 0 {
-			item.ConfigTimeSt = 0
-		}
-	}
-
-	self.Data["json"] = &Ret{RewardConfigList: configList}
-	self.ServeJSON()
-
-}

+ 0 - 48
go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_cashcz_controller.go

@@ -1,48 +0,0 @@
-package pay_controller
-
-import (
-	"fmt"
-	"fohow.com/apps"
-	"fohow.com/apps/models/balance_model"
-	"fohow.com/libs/wx_mp"
-	"github.com/astaxie/beego"
-)
-
-//余额充值-微信支付
-func (self *PayController) wxPayCashcz(orderId string) {
-	//user := self.GetCurrentUser(true)
-	//if user == nil{
-	//	self.ReturnError(403, apps.NoExist, "", nil)
-	//}
-	wxUser := self.GetCurrentWxUser(true)
-	if wxUser == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	//查询充值订单信息
-	reCashOrder := balance_model.GetRechargeCashOrderByOId(orderId, false)
-
-	if reCashOrder == nil {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-	//不属于当前用户
-	if reCashOrder.WxUserId != wxUser.Id {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-	//无法支付,该订单已支付或者已过期
-	if reCashOrder.State == 1 {
-		self.ReturnError(403, apps.NotUnPay, "", nil)
-
-	}
-	//获取预支付信息/v1/pay/:target:string/async/:payway:string
-	notifyUrl := fmt.Sprintf("%s/v1/pay/%s/async/%s", beego.AppConfig.String("ApiHost"), CASH_TARGET, balance_model.PAY_WAY_TYPE_RECHARGE_WXPAY) // rechargeCashOrder "recharge_wxpay"
-	body := "FOHOW玖玖-余额充值"
-	payData := wx_mp.GetPayDataLimitPay(wxUser.Openid, reCashOrder.OrderId, reCashOrder.TotalPrice, body, notifyUrl, self.Ctx.Input.IP())
-
-	//返回数据
-	type PayData struct {
-		PayData map[string]string `json:"pay_data"`
-	}
-	self.Data["json"] = &PayData{PayData: payData}
-	self.ServeJSON()
-}

+ 0 - 150
go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_course_controller.go

@@ -1,150 +0,0 @@
-package pay_controller
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"strconv"
-	"strings"
-
-	"fohow.com/apps"
-	// "fohow.com/apps/models/balance_model"
-	"fohow.com/apps/models/course_model"
-	"fohow.com/apps/models/pay_model"
-	"fohow.com/apps/models/user_model"
-	"fohow.com/libs/wx_mp"
-	"time"
-)
-
-//微信支付-付费课程
-func (self *PayController) wxPayCourse(orderId string) {
-	wxUser := self.GetCurrentWxUser(true)
-	if wxUser == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	order := course_model.GetOrderByOId(orderId)
-	if order == nil || order.WxUId != wxUser.Id {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-
-	//无法支付,该订单已经支付或者已经删除或者已经退款
-	if order.State == course_model.ORDER_STATE_PAIED {
-		self.ReturnError(403, apps.HasPaied, "", nil)
-	}
-
-	//获取预支付信息
-	notifyUrl := fmt.Sprintf("%s/v1/pay/%s/async/%s", beego.AppConfig.String("ApiHost"), COURSE_TARGET, pay_model.PAYWAY_WEIXINPAY)
-	body := fmt.Sprintf("购买课程券")
-	wxUserGzh := user_model.GetWxUserGzhByWxUIdAndAppId(wxUser.Id, beego.AppConfig.String("WxMPAppId"), true)
-	if wxUserGzh == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	payData := wx_mp.GetWxPayData(wxUserGzh.GzhOpenId, order.OrderId, order.TotalPrice, body, notifyUrl, self.Ctx.Input.IP())
-
-	//返回数据
-	type PayData struct {
-		PayData map[string]string `json:"pay_data"`
-	}
-	self.Data["json"] = &PayData{PayData: payData}
-	self.ServeJSON()
-}
-
-//付费课程-回调
-func (self *PayController) wxPayCourseAsync() {
-	var notifyResponse = map[string]string{
-		"return_code": wx_mp.PAY_FAIL,
-		"return_msg":  "",
-	}
-	body := self.Ctx.Input.CopyBody(102400)
-	params, err := wx_mp.ParsePayResult(body)
-	beego.BeeLogger.Warn("wxPayCourseAsync(%v)", params)
-
-	if err != nil {
-		beego.BeeLogger.Error("parsePayResult=[%s] err=[%s]", string(body), err)
-		self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-		return
-	}
-
-	// 签名校验参数
-	if !wx_mp.VerifyWxPayResult(params) {
-		beego.BeeLogger.Error("VerifyPayResult not pass")
-		self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-		return
-	}
-
-	orderId := strings.Split(params.OutTradeNO, "_")[0]
-	order := course_model.GetOrderByOId(orderId)
-	totalFee, _ := strconv.ParseInt(params.TotalFee, 10, 64)
-	// settlementTotalFee, _ := strconv.ParseInt(params.SettlementTotalFee, 10, 64)
-	// beego.BeeLogger.Warn("after_pay_controller.wxPayInvestAsync.settlementTotalFee(%d)", settlementTotalFee)
-	if order == nil || order.TotalPrice != totalFee {
-		beego.BeeLogger.Error("wxPayCourseAsync err: %v", order)
-		self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-		return
-	}
-
-	//重复回调通知时,判断订单状态是否处理过了
-	// beego.BeeLogger.Warn("小程序项目集助微信支付回调通知,订单编号=%s", order.OrderId)
-	if order.State == course_model.ORDER_STATE_PAIED {
-		notifyResponse["return_code"] = wx_mp.PAY_SUCCESS
-		self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-		return
-	}
-
-	order.State = 1
-	order.TradeNo = params.TransactionId
-	// order.PayWay = pay_model.PAYWAY_WEIXINPAY
-	order.PaiedPrice = totalFee
-	order.PaiedAt = time.Now().Unix()
-	if !order.Save() {
-		beego.BeeLogger.Error("weixinpay async return. save oId=%s fail", order.OrderId)
-		self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-		return
-	}
-	if order.InviteWxUId != 0 && order.InviteWxUId != order.WxUId {
-		wxInviter := user_model.GetWxUserById(order.InviteWxUId, true)
-		if wxInviter != nil {
-			go sendInviteBenefit(order, wxInviter)
-		}
-	}
-
-	notifyResponse["return_code"] = wx_mp.PAY_SUCCESS
-	// beego.BeeLogger.Warn("小程序项目集助微信支付回调通知,订单编号=%s  订单状态=%d", order.OrderId, order.State)
-	self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-	return
-}
-
-func sendInviteBenefit(order *course_model.Order, wxInviter *user_model.WxUser) {
-	if order == nil || wxInviter == nil {
-		return
-	}
-	course := course_model.GetCourseById(order.CourseId, true)
-	if course == nil || course.BenefitPrice == 0 {
-		return
-	}
-	// wxUserGzh := user_model.GetWxUserGzhByWxUIdAndAppId(wxInviter.Id, beego.AppConfig.String("WxMPAppId"), true)
-	// if wxUserGzh == nil {
-	// 	return
-	// }
-	//创建课程佣金记录
-	benefit := new(course_model.Benefit).Create(order.CourseId, wxInviter.Id, order.WxUId, order.TotalPrice, course.BenefitPrice)
-	//增加余额
-	if benefit != nil {
-		s := course_model.CASH_SOURCE_COURSE_BENEFIT
-		remark := course_model.CASH_SOURCE_COURSE_BENEFIT_NAME
-		new(course_model.Balance).Create(wxInviter.Id, benefit.BenefitPrice, s, benefit.OrderId, remark)
-	}
-
-	// ret := wx_mp.WxTransfers(wxUserGzh.GzhOpenId, benefit.BenefitPrice, benefit.OrderId, wx_mp.PAY_NO_CHECK, "", "推广奖励")
-	// if ret["result_code"] == wx_mp.PAY_SUCCESS {
-	// 	benefit.State = 1
-	// 	benefit.TradeNo = ret["payment_no"]
-	// 	// paiedAt, _ := time.Parse("2006-01-02 15:04:05", ret["payment_time"])
-	// 	benefit.Remark = "佣金已打款"
-	// 	benefit.PaiedAt = time.Now().Unix()
-	// 	benefit.Save()
-	// } else {
-	// 	benefit.State = 2
-	// 	benefit.Remark = ret["err_code_des"]
-	// 	benefit.Save()
-	// }
-}

+ 0 - 184
go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_dollar_win_controller.go

@@ -1,184 +0,0 @@
-package pay_controller
-
-import (
-	"github.com/astaxie/beego"
-
-	"fmt"
-	"fohow.com/apps"
-	"fohow.com/apps/models/balance_model"
-	"fohow.com/apps/models/dollar_win_model"
-	"fohow.com/apps/models/user_model"
-	"fohow.com/libs/wx_mp"
-	"strconv"
-	"strings"
-	"sync"
-	"time"
-)
-
-//微信支付
-func (self *PayController) wxPayDollarWinAct(orderId string) {
-
-	user := self.GetCurrentUser(true)
-	if user == nil {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-	wxUser := self.GetCurrentWxUser(true)
-	if wxUser == nil {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-	order := dollar_win_model.GetDollarWinZtJoinByOrderId(orderId, false)
-	if order == nil || order.UserId != user.Id {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-	//无法支付,该订单已经支付
-	if order.IsPaied {
-		self.ReturnError(403, apps.HasPaied, "", nil)
-	}
-	act := dollar_win_model.GetDollarWinZtConfigById(order.ZtConfigId, false)
-	now := time.Now()
-	if act == nil || act.StartTime.Unix() > now.Unix() || act.StopTime.Unix() < now.Unix() {
-		self.ReturnError(403, []string{"actNotExist", "活动不存在"}, "", nil)
-	}
-
-	////获取预支付信息
-	notifyUrl := fmt.Sprintf("%s/v1/pay/%s/async/%s", beego.AppConfig.String("ApiHost"), DOLLAR_WIN_TARGET, dollar_win_model.PAY_WAY_TYPE_DOLLAR_WIN_WX)
-	body := fmt.Sprintf("第五创活动报名")
-	wxUserGzh := user_model.GetWxUserGzhByWxUIdAndAppId(wxUser.Id, beego.AppConfig.String("WxMPAppId"), true)
-	if wxUserGzh == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	payData := wx_mp.GetWxPayData(wxUserGzh.GzhOpenId, order.OrderId, order.TotalAmount, body, notifyUrl, self.Ctx.Input.IP())
-
-	//返回数据
-	type PayData struct {
-		PayData map[string]string `json:"pay_data"`
-	}
-	self.Data["json"] = &PayData{PayData: payData}
-	self.ServeJSON()
-}
-
-//回调
-func (self *PayController) wxPayDollarWinAsync() {
-	var notifyResponse = map[string]string{
-		"return_code": wx_mp.PAY_FAIL,
-		"return_msg":  "",
-	}
-	body := self.Ctx.Input.CopyBody(102400)
-	params, err := wx_mp.ParsePayResult(body)
-	beego.BeeLogger.Warn("wxPayDollarWinAsync(%v)", params)
-
-	if err != nil {
-		beego.BeeLogger.Error("wxPayDollarWinAsync.parsePayResult=[%s] err=[%s]", string(body), err)
-		self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-		return
-	}
-
-	// 签名校验参数
-	if !wx_mp.VerifyWxPayResult(params) {
-		beego.BeeLogger.Error("wxPayDollarWinAsync.VerifyPayResult not pass")
-		self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-		return
-	}
-
-	orderId := strings.Split(params.OutTradeNO, "_")[0]
-	order := dollar_win_model.GetDollarWinZtJoinByOrderId(orderId, false)
-	totalFee, _ := strconv.ParseInt(params.TotalFee, 10, 64)
-
-	if order == nil || order.TotalAmount != totalFee {
-		beego.BeeLogger.Error("wxPayDollarWinAsync err: %v", order)
-		self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-		return
-	}
-
-	//重复回调通知时,判断订单状态是否处理过了
-	if order.IsPaied {
-		notifyResponse["return_code"] = wx_mp.PAY_SUCCESS
-		self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-		return
-	}
-
-	order.IsPaied = true
-	order.TradeNo = params.TransactionId
-	order.PayWay = dollar_win_model.PAY_WAY_TYPE_DOLLAR_WIN_WX
-	order.PaiedAmount = totalFee
-	now := time.Now()
-	order.PaiedAt = now.Unix()
-	paiedAtStr := now.Format("20060102150405")
-	paiedAtNum, _ := strconv.ParseInt(paiedAtStr, 10, 64)
-	order.CalulatePaiedAt = paiedAtNum
-	if !order.Save() {
-		beego.BeeLogger.Error("wxPayDollarWinAsync.weixinpay async return. save oId=%s fail", order.OrderId)
-		self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-		return
-	}
-
-	notifyResponse["return_code"] = wx_mp.PAY_SUCCESS
-	self.Ctx.WriteString(wx_mp.MapToXmlString(notifyResponse))
-	return
-}
-
-var cashBalancePayDollarWinActLock sync.Mutex
-
-//余额支付
-func (self *PayController) cashBalancePayDollarWinAct(orderId string) {
-	user := self.GetCurrentUser(true)
-	if user == nil {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-	wxUser := self.GetCurrentWxUser(true)
-	if wxUser == nil {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-
-	defer cashBalancePayDollarWinActLock.Unlock()
-	cashBalancePayDollarWinActLock.Lock()
-	order := dollar_win_model.GetDollarWinZtJoinByOrderId(orderId, false)
-	if order == nil || order.UserId != user.Id {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-	//无法支付,该订单已经支付
-	if order.IsPaied {
-		self.ReturnError(403, apps.HasPaied, "", nil)
-	}
-	act := dollar_win_model.GetDollarWinZtConfigById(order.ZtConfigId, false)
-	now := time.Now()
-	if act == nil || act.StartTime.Unix() > now.Unix() || act.StopTime.Unix() < now.Unix() {
-		self.ReturnError(403, []string{"actNotExist", "活动不存在"}, "", nil)
-	}
-
-	//判断余额是否足够
-	available := balance_model.GetCashTotalBalance(wxUser.Id)
-
-	if available < order.TotalAmount {
-		self.ReturnError(403, apps.BalanceNotEnough, "", nil)
-	}
-
-	if order.TotalAmount > 0 {
-		source := balance_model.CASH_SOURCE_DOLLAR_WIN
-		relateId := order.OrderId
-		remark := fmt.Sprintf("%s", act.Title)
-		//扣除余额
-		new(balance_model.CashBalance).Create(wxUser.Id, -order.TotalAmount, source, relateId, remark)
-	} else {
-		self.ReturnError(403, apps.Error, "", nil)
-	}
-
-	//订单完成支付,更新支付状态和支付时间和支付方式
-	order.IsPaied = true
-	nowTime := time.Now()
-	order.PaiedAt = nowTime.Unix()
-	paiedAtStr := nowTime.Format("20060102150405")
-	paiedAtNum, _ := strconv.ParseInt(paiedAtStr, 10, 64)
-	order.CalulatePaiedAt = paiedAtNum
-	order.PaiedAmount = order.TotalAmount
-	order.PayWay = dollar_win_model.PAY_WAY_TYPE_DOLLAR_WIN_CASH_BALANCE
-	if !order.Save() {
-		beego.BeeLogger.Error("cash_balance_pay dollar_win. save oId=%s fail", order.OrderId)
-		self.ReturnError(403, apps.Error, "", nil)
-	}
-
-	//返回数据
-	result := PayUrl{PayUrl: "", PayData: nil, OrderId: order.OrderId}
-	self.Data["json"] = self.FormatResult([]interface{}{result})
-	self.ServeJSON()
-}

+ 0 - 333
go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_exchange_controller.go

@@ -1,333 +0,0 @@
-package pay_controller
-
-import (
-	"fmt"
-	// "net/url"
-	// "strings"
-	"time"
-
-	"github.com/astaxie/beego"
-	// "github.com/astaxie/beego/context"
-
-	"fohow.com/apps"
-	"fohow.com/apps/helpers"
-	"fohow.com/apps/models/address_model"
-	"fohow.com/apps/models/balance_model"
-	"fohow.com/apps/models/merchant_model"
-	"fohow.com/apps/models/order_model"
-	"fohow.com/apps/models/pay_model"
-	"fohow.com/apps/models/product_model"
-	"fohow.com/apps/models/user_model"
-	"fohow.com/libs/tool"
-	"fohow.com/libs/wx_mp"
-	"strings"
-	// "fohow.com/apps/models/wx_gongzhonghao_model"
-	"fohow.com/apps/models/exchange_model"
-	"fohow.com/apps/models/subject_model"
-	"sync"
-)
-
-var createDrawCode sync.Mutex
-
-//支付兑换订单
-func (self *PayController) payExchange(oId, payWay, tradPwd, returnUrl, source string) {
-	var payUrl string
-	var payData map[string]string
-	wxUId := self.GetCurrentWxUserId()
-	uId := self.GetCurrentUserId()
-
-	//地址
-	addressId, _ := self.GetInt64("address_id")
-	address := address_model.GetUserAddressById(addressId)
-	if address == nil || address.WxUserId != wxUId {
-		self.ReturnError(403, apps.AddressNotMatch, "", nil)
-	}
-
-	if source != order_model.SOURCE_XCX && source != order_model.SOURCE_GZH {
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-
-	//订单状态
-	order := order_model.GetOrderById(oId)
-	if order == nil || order.WxUserId != wxUId {
-		self.ReturnError(404, apps.OrderNotExist, "", nil)
-	}
-	if order.Status != order_model.STATUS_UNPAY {
-		self.ReturnError(403, apps.NotUnPay, "", nil)
-	}
-	//获取购物车产品
-	buy_price_total := int64(0)
-	total_price := int64(0)
-	list := order_model.GetAllDetailsOrderId(order.OrderId)
-	for _, item := range list {
-		//商品状态
-		product := product_model.GetProductById(item.ProductId, false)
-		if product == nil {
-			self.ReturnError(403, []string{apps.ProductNotExist[0], fmt.Sprintf("%s产品不存在", product.Name)}, "", nil)
-		}
-		//商品下架
-		if product.Status == product_model.PRODUCT_STATUS_DOWN {
-			self.ReturnError(403, []string{apps.ProductOffSale[0], fmt.Sprintf("%s产品已经下架", product.Name)}, "", nil)
-		}
-
-		//加入限购逻辑
-		if product.PurchaseLimitCount > 0 {
-			beego.BeeLogger.Warn("product.PurchaseLimitCount: %d", product.PurchaseLimitCount)
-			if product.PurchaseLimitCount < item.Count {
-				self.ReturnError(403, []string{apps.OverLimitCount[0], fmt.Sprintf("%s超过限购数量", product.Name)}, "", nil)
-			} else {
-				purchaseTotalCount := order_model.GetOrderCountByPIdAndWxUId(product.Id, wxUId)
-				//历史已经买够到限购数量了
-				if product.PurchaseLimitCount <= purchaseTotalCount {
-					self.ReturnError(403, []string{apps.PurchasedReachLimit[0], fmt.Sprintf("%s已购买总数已达到限购数量", product.Name)}, "", nil)
-				}
-				//历史没买够数量,但是(历史总数+想购买的数量)>限购数量
-				if product.PurchaseLimitCount < (purchaseTotalCount + order.Count) {
-					canBuyCount := product.PurchaseLimitCount - purchaseTotalCount
-					self.ReturnError(403, []string{apps.PurchasedReachLimit[0], fmt.Sprintf("%s您还可以购买%d件", product.Name, canBuyCount)}, "", nil)
-				}
-			}
-		}
-		//秒杀逻辑: 判断是否处于秒杀时间段内
-		if product.SeckilShowPrice > 0 {
-			now := time.Now()
-			if now.Unix() < product.SeckillStart.Unix() {
-				self.ReturnError(403, []string{apps.SeckillNotStart[0], fmt.Sprintf("%s秒杀活动尚未开始", product.Name)}, "", nil)
-			} else if now.Unix() > product.SeckillEnd.Unix() {
-				self.ReturnError(403, []string{apps.SeckillIsEnd[0], fmt.Sprintf("%s秒杀活动已经结束", product.Name)}, "", nil)
-			}
-		}
-		//限新逻辑: 微信支付完成购买过商品的用户
-		if product.IsOnlyNew {
-			paiedOrder := order_model.GetPaiedOrderByWxUIdAndPayWayLimitOne(wxUId, order_model.PAY_WAY_WEIXIN, false)
-			if paiedOrder != nil {
-				self.ReturnError(403, []string{apps.OnlyNew[0], fmt.Sprintf("%s仅限新人购买", product.Name)}, "", nil)
-			}
-		}
-		//判断库存
-		leftCount := int64(0)
-		//普通订单
-		soldCount := order_model.GetSoldCountByPId(product.Id, false)
-		leftCount = product.Count - soldCount
-		//商品已经卖完
-		if leftCount < order.Count {
-			self.ReturnError(403, []string{apps.ProductStockNotEnough[0], fmt.Sprintf("%s商品库存不足", product.Name)}, "", nil)
-		}
-		buy_price_total += product.BuyPrice * item.Count
-		if payWay == order_model.PAY_WAY_WEIXIN { //微信支付总价
-			total_price += product.Price * item.Count
-		} else if payWay == order_model.PAY_WAY_BALANCE { //代金券支付总价
-			total_price += product.Price * item.Count
-		}
-	}
-	order.PayWay = payWay
-	order.Contact = address.Contact
-	order.Tel = address.Tel
-	order.Address = fmt.Sprintf("%s%s%s%s", address.Province, address.City, address.District, address.Address)
-	order.BuyPrice = buy_price_total
-	order.TotalPrice = total_price
-
-	switch payWay { // 1.代金券购买 2.微信支付
-	case pay_model.PAYWAY_BALANCE: // 代金券购买
-
-		/*		platform := exchange_model.GetPlatformByTag(exchange_model.DEFAULT_PLATFORM_TAG, false)
-				if platform == nil {
-					self.ReturnError(403, apps.PlatformNoExist, "", nil)
-				}*/
-		curWxUser := user_model.GetWxUserById(wxUId, false)
-		if curWxUser == nil {
-			self.ReturnError(403, apps.UserNeedLogin, "", nil)
-		}
-		//黑名单用户
-		curUser := user_model.GetUserById(curWxUser.UserId, false)
-		if curUser != nil && curUser.IsBlackUser == 1 {
-			self.ReturnError(403, apps.NetworkBusy, "", nil)
-		}
-		//防刷判断
-		/*		isContinue := AnalyseMallBalance(curUser, platform, order)
-				if !isContinue {
-					self.ReturnError(403, apps.NetworkBusy, "", nil)
-				}*/
-
-		userLeftBalanceCount := balance_model.GetUserTotalBalance(wxUId)
-		tp := order.TotalPrice
-		freight := order_model.FREIGHT
-		if tp >= order_model.FREIGHT_LIMIT {
-			freight = int64(0)
-		}
-		tp += freight
-		if userLeftBalanceCount < tp {
-			self.ReturnError(403, apps.BalanceNotEnough, "", nil)
-		}
-
-		if tp > 0 {
-			source := balance_model.BALANCE_SOURCE_EXCHANGE_PRODUCT
-			remark := fmt.Sprintf("代金券兑换商品")
-			new(balance_model.Balance).Create(wxUId, uId, -tp, source, oId, remark)
-		}
-
-		//更新订单状态
-		order.Status = order_model.STATUS_PROCESSING
-		order.PaiedAt = time.Now().Unix()
-		order.PaiedPrice = order.TotalPrice
-		order.PayWay = pay_model.PAYWAY_BALANCE
-		order.Source = source
-		order.Save()
-
-		// go updateCache(project.Id)
-		//go CreateOrderNotify(order, product)
-		//wxUser := user_model.GetWxUserById(order.WxUserId, true)
-		//go sendInviterBenefit(wxUser, order.OrderId, user_model.SOURCE_PRODUCT_BENEFIT)
-		payUrl, payData = fmt.Sprintf("%s?order_id=%s", returnUrl, order.OrderId), nil
-		result := PayUrl{PayUrl: payUrl, PayData: payData, OrderId: order.OrderId}
-		self.Data["json"] = self.FormatResult([]interface{}{result})
-	case pay_model.PAYWAY_WEIXINPAY: // 微信支付
-
-		wxUser := self.GetCurrentWxUser(false)
-
-		order.Contact = address.Contact
-		order.Tel = address.Tel
-		order.Address = fmt.Sprintf("%s%s%s%s", address.Province, address.City, address.District, address.Address)
-		order.Source = source
-		order.Save()
-
-		if order.Source == order_model.SOURCE_XCX { //小程序微信支付
-			freight := order_model.FREIGHT
-			if order.TotalPrice >= order_model.FREIGHT_LIMIT {
-				freight = int64(0)
-			}
-			order.TotalPrice += freight
-			notifyUrl := fmt.Sprintf("%s/v1/pay/%s/async/%s", beego.AppConfig.String("ApiHost"), EXCHANGE_TARGET, pay_model.PAYWAY_WEIXINPAY)
-			body := fmt.Sprintf("FOHOW玖玖-购买商品")
-			payData := wx_mp.GetPayData(wxUser.Openid, order.OrderId, order.TotalPrice, body, notifyUrl, self.Ctx.Input.IP())
-
-			//返回数据
-			type PayData struct {
-				PayData map[string]string `json:"pay_data"`
-			}
-			self.Data["json"] = &PayData{PayData: payData}
-
-		} else { //公众号微信支付
-
-			notifyUrl := fmt.Sprintf("%s/v1/pay/%s/async/%s", beego.AppConfig.String("ApiHost"), EXCHANGE_TARGET, pay_model.PAYWAY_WEIXINPAY)
-			body := fmt.Sprintf("FOHOW玖玖-购买商品")
-			wxGzh := user_model.GetWxUserGzhByWxUIdAndAppId(wxUser.Id, beego.AppConfig.String("WxMPAppId"), false)
-			if wxGzh == nil {
-				self.ReturnError(403, apps.NoExist, "", nil)
-			}
-			//payData := wx_mp.GetPayData(wxGzh.GzhOpenId, order.OrderId , order.TotalPrice, body,notifyUrl, self.Ctx.Input.IP())
-			payData := wx_mp.GetGzhPayData(wxGzh.GzhOpenId, order.OrderId, order.TotalPrice, body, notifyUrl, self.Ctx.Input.IP())
-
-			//返回数据
-			type PayData struct {
-				PayData map[string]string `json:"pay_data"`
-			}
-			self.Data["json"] = &PayData{PayData: payData}
-		}
-	default:
-		beego.BeeLogger.Error("pay way not match, payway:%s", payWay)
-	}
-	self.ServeJSON()
-}
-
-//用户支付成功,后给卖家所有管理员发下单通知
-func CreateOrderNotify(order *order_model.Order, product *product_model.Product) {
-	merchantUserList := merchant_model.GetMerchantUserRelationListByMerchantId(product.MerchantId, true)
-	for _, item := range merchantUserList {
-		if item == nil {
-			continue
-		}
-		isManageTheProduct, _ := tool.Contain(fmt.Sprintf("%d", product.Id), strings.Split(item.ManageProductIds, ","))
-		if item.ManageProductIds == "0" || isManageTheProduct {
-			sellerWxUser := user_model.GetWxUserByUserId(item.UserId, true)
-			if sellerWxUser != nil {
-				helpers.OrderCreateNotify(*sellerWxUser, order.CreatedAt, product.Name, order.OrderId, "您有新的商品订单,请及时处理发货。", order_model.STATUS_CN_TEXT[order.Status], order.Count, fmt.Sprintf("pages/start/start?url=packageMerchant/pages/merchant/orders/orders&id=%d", item.MerchantId))
-			}
-		}
-	}
-}
-
-func (self *PayController) CheckBalanceBeforePayExchange() {
-	oId := self.GetString("order_id")
-
-	//user := self.GetCurrentUser(false)
-	//if user == nil {
-	//	self.ReturnError(403, apps.UserNeedLogin, "", nil)
-	//}
-	wxUser := self.GetCurrentWxUser(false)
-	if wxUser == nil {
-		self.ReturnError(403, apps.UserNeedLogin, "", nil)
-	}
-
-	order := order_model.GetOrderById(oId)
-	if order == nil || order.WxUserId != wxUser.Id {
-		self.ReturnError(404, apps.OrderNotExist, "", nil)
-	}
-	if order.Status != order_model.STATUS_UNPAY {
-		self.ReturnError(403, apps.NotUnPay, "", nil)
-	}
-
-	type Ret struct {
-		LackLuoboCount int64 `json:"lack_luobo_count"`
-		RechargeMoney  int64 `json:"need_recharge_money"`
-	}
-
-	userLeftBalanceCount := balance_model.GetUserTotalBalance(wxUser.Id)
-	tp := order.UnitRoboBalancePrice * order.Count
-	lackCount := tp - userLeftBalanceCount //(订单金额-用户剩余代金券1000-500=500,1000-2000=-1000,1000-1000=0)
-	if lackCount < 0 {
-		lackCount = 0
-	}
-
-	self.Data["json"] = &Ret{LackLuoboCount: lackCount, RechargeMoney: lackCount}
-	self.ServeJSON()
-}
-
-//处理生成抽奖码
-func CreateDrawCode(order *order_model.Order) {
-
-	createDrawCode.Lock()
-	defer createDrawCode.Unlock()
-
-	subject := subject_model.GetProductSaleSubjectById(order.ProductSaleSubjectId, true)
-	if subject == nil {
-		return
-	}
-	for i := int64(1); i <= order.Count; i++ {
-		drawCode := subject_model.GetLastSaleDrawCodeBySubjectId(order.ProductSaleSubjectId)
-		if drawCode == nil {
-			new(subject_model.SaleDrawCode).Create(int64(1), order.WxUserId, order.ProductSaleSubjectId, order.OrderId)
-		} else {
-			new(subject_model.SaleDrawCode).Create(drawCode.Code+1, order.WxUserId, order.ProductSaleSubjectId, order.OrderId)
-		}
-	}
-	go TmplMsgNotice(order)
-}
-
-func AnalyseMallBalance(user *user_model.User, platform *exchange_model.Platform, order *order_model.Order) bool {
-
-	if user != nil {
-		//查询是否在通用白名单上
-		if user.IsUnlimitPayProduct {
-			return true
-		}
-		//第五创查询
-		resultAnalyse := helpers.AnalysePlatformMallBalance(platform.Secret, user.Tel, helpers.ANALYSE_URL)
-		beego.BeeLogger.Warn("pay_controller.AnalyseMallBalance().Platform analyse retMsg:%v", resultAnalyse)
-		//查询错误,则提示用户错误请稍后重试
-		if resultAnalyse == nil || resultAnalyse.Normal == helpers.UNNORMAL {
-			return false
-		} else if resultAnalyse.Normal == helpers.UNNORMAL_POINT_TASK {
-			//非正常的代金券任务刷子,不能继续支付,关闭订单,且更新为黑名单用户
-			order.Status = order_model.STATUS_CLOSED
-			order.Save()
-			user.IsBlackUser = 1
-			user.Save()
-			return false
-		} else if resultAnalyse.Normal == helpers.NORMAL {
-			user.IsUnlimitPayProduct = true
-			user.Save()
-		}
-	}
-	return true
-}

+ 0 - 233
go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_invest_controller.go

@@ -1,233 +0,0 @@
-package pay_controller
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"sync"
-
-	"fohow.com/apps"
-	"fohow.com/apps/models/balance_model"
-	"fohow.com/apps/models/project_model"
-	"fohow.com/libs/tool"
-	"fohow.com/libs/wx_mp"
-	"time"
-)
-
-//投资助农项目时,微信、余额支付
-var payInvest sync.Mutex
-var cashPayInvest sync.Mutex
-
-//助农项目-微信支付
-func (self *PayController) wxPayInvest(orderId string) {
-	user := self.GetCurrentUser(true)
-	if user == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	wxUser := self.GetCurrentWxUser(true)
-	if wxUser == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	defer payInvest.Unlock()
-	payInvest.Lock()
-
-	//查询项目投资订单
-	join := project_model.GetInvestByOrderId(orderId)
-
-	if join == nil {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-
-	//属于当前用户
-	if join.UserId != user.Id {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-
-	//无法支付,该订单已经支付或者已经删除或者已经退款
-	if join.IsDeleted == int64(1) || join.IsRefunded == int64(1) || join.State == int64(1) {
-		self.ReturnError(403, apps.ProjectJoinNotUnPay, "", nil)
-	}
-
-	project := project_model.GetProjectById(join.ProjectId, false)
-	if project == nil {
-		self.ReturnError(403, apps.ProjectNoExist, "", nil)
-	}
-
-	if project.State == project_model.STATE_SUCCESS {
-		self.ReturnError(403, apps.ProjectSuccess, "", nil)
-	}
-
-	if project.State != project_model.STATE_UNDERWAY {
-		self.ReturnError(403, apps.ProjectNotUnderWay, "", nil)
-	}
-
-	investWay := project_model.GetProjectInvestWayById(join.ProjectInvestWayId, false)
-	if investWay == nil || investWay.State == 0 {
-		self.ReturnError(403, apps.ProjectInvestWayNoExist, "", nil)
-	}
-
-	if investWay.ProjectId != project.Id {
-		self.ReturnError(403, apps.ProjectInvestWayNotMatch, "", nil)
-	}
-
-	if investWay.OnlyNew == int64(1) {
-		/*userInvestments := project_model.GetInvestmentsByUId(1,1, user.Id, true)
-		if userInvestments != nil && len(userInvestments) != 0{
-			self.ReturnError(403, apps.ProjectInvestOnlyNew, "", nil)
-		}*/
-		specialProjectId := int64(7) //沙田柚项目
-		if beego.BConfig.RunMode == beego.DEV {
-			specialProjectId = int64(58) //内网某项目测试使用
-		}
-		specialProjectInvestments := project_model.GetInvestmentsByUIdExcludePId(1, 1, user.Id, specialProjectId, false)
-		if len(specialProjectInvestments) > 0 {
-			self.ReturnError(403, apps.ProjectInvestOnlyNew, "", nil)
-		}
-	}
-
-	//份数是否足够
-	userHasInvestCount := project_model.GetInvestSuccessCountByPIdAndWIdAndUId(project.Id, investWay.Id, user.Id, false)
-	investWayLeftCount := project_model.GetLeftCountByInvestWayId(investWay.Id)
-	if (investWayLeftCount < join.Count) ||
-		(investWay.MaxLimit < join.Count+userHasInvestCount) ||
-		(join.Count < investWay.MinLimit && investWay.MinLimit <= investWayLeftCount && userHasInvestCount == 0) ||
-		(join.Count < investWayLeftCount && investWayLeftCount < investWay.MinLimit && userHasInvestCount == 0) {
-		self.ReturnError(403, apps.CountLimit, "", nil)
-	}
-
-	//获取预支付信息
-	notifyUrl := fmt.Sprintf("%s/v1/pay/%s/async/%s", beego.AppConfig.String("ApiHost"), INVEST_TARGET, project_model.PAY_WAY_TYPE_PROJECT_JOIN)
-	body := fmt.Sprintf("FOHOW玖玖-我要助农")
-	payData := wx_mp.GetPayData(wxUser.Openid, join.OrderId, join.TotalPrice, body, notifyUrl, self.Ctx.Input.IP())
-
-	//返回数据
-	type PayData struct {
-		PayData map[string]string `json:"pay_data"`
-	}
-	self.Data["json"] = &PayData{PayData: payData}
-	self.ServeJSON()
-}
-
-//助农项目-余额支付
-func (self *PayController) cashBalancePayInvest(orderId string) {
-
-	user := self.GetCurrentUser(true)
-	if user == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	wxUser := self.GetCurrentWxUser(true)
-	if wxUser == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	defer cashPayInvest.Unlock()
-	cashPayInvest.Lock()
-
-	//查询项目投资订单
-	join := project_model.GetInvestByOrderId(orderId)
-
-	if join == nil {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-
-	//属于当前用户
-	if join.UserId != user.Id {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-
-	//无法支付,该订单已经支付或者已经删除或者已经退款
-	if join.IsDeleted == int64(1) || join.IsRefunded == int64(1) || join.State == int64(1) {
-		self.ReturnError(403, apps.ProjectJoinNotUnPay, "", nil)
-	}
-
-	project := project_model.GetProjectById(join.ProjectId, false)
-	if project == nil {
-		self.ReturnError(403, apps.ProjectNoExist, "", nil)
-	}
-
-	if project.State == project_model.STATE_SUCCESS {
-		self.ReturnError(403, apps.ProjectSuccess, "", nil)
-	}
-
-	if project.State != project_model.STATE_UNDERWAY {
-		self.ReturnError(403, apps.ProjectNotUnderWay, "", nil)
-	}
-
-	investWay := project_model.GetProjectInvestWayById(join.ProjectInvestWayId, false)
-	if investWay == nil || investWay.State == 0 {
-		self.ReturnError(403, apps.ProjectInvestWayNoExist, "", nil)
-	}
-
-	if investWay.ProjectId != project.Id {
-		self.ReturnError(403, apps.ProjectInvestWayNotMatch, "", nil)
-	}
-
-	if investWay.OnlyNew == int64(1) {
-		/*userInvestments := project_model.GetInvestmentsByUId(1,1, user.Id, true)
-		if userInvestments != nil && len(userInvestments) != 0{
-			self.ReturnError(403, apps.ProjectInvestOnlyNew, "", nil)
-		}*/
-		specialProjectId := int64(7) //沙田柚项目
-		if beego.BConfig.RunMode == beego.DEV {
-			specialProjectId = int64(58) //内网某项目测试使用
-		}
-		specialProjectInvestments := project_model.GetInvestmentsByUIdExcludePId(1, 1, user.Id, specialProjectId, false)
-		if len(specialProjectInvestments) > 0 {
-			self.ReturnError(403, apps.ProjectInvestOnlyNew, "", nil)
-		}
-	}
-
-	//份数是否足够
-	userHasInvestCount := project_model.GetInvestSuccessCountByPIdAndWIdAndUId(project.Id, investWay.Id, user.Id, false)
-	investWayLeftCount := project_model.GetLeftCountByInvestWayId(investWay.Id)
-	if (investWayLeftCount < join.Count) ||
-		(investWay.MaxLimit < join.Count+userHasInvestCount) ||
-		(join.Count < investWay.MinLimit && investWay.MinLimit <= investWayLeftCount && userHasInvestCount == 0) ||
-		(join.Count < investWayLeftCount && investWayLeftCount < investWay.MinLimit && userHasInvestCount == 0) {
-		self.ReturnError(403, apps.CountLimit, "", nil)
-	}
-
-	//判断余额是否足够
-	available := balance_model.GetCashTotalBalance(wxUser.Id)
-	tp := join.TotalPrice
-
-	if available < tp {
-		self.ReturnError(403, apps.BalanceNotEnough, "", nil)
-	}
-
-	if tp > 0 {
-		source := balance_model.CASH_SOURCE_PROJECT_INVEST
-		relateId := join.OrderId
-		remark := fmt.Sprintf("%s_%s", balance_model.CASH_SOURCE_PROJECT_INVEST_NAME, project.Title)
-		//扣除余额
-		new(balance_model.CashBalance).Create(wxUser.Id, -tp, source, relateId, remark)
-	}
-
-	//订单完成支付,更新支付状态和支付时间和支付方式
-	join.State = 1
-	join.PayWay = project_model.PAY_WAY_TYPE_PROJECT_JOIN_CASH_BALANCE
-	join.PaiedAt = time.Now().UnixNano() //支付时间存储纳秒级别
-	if err := join.Save(); err != nil {
-		beego.BeeLogger.Error("cash_balance_pay invest. save oId=%s fail", join.OrderId)
-		self.ReturnError(403, apps.UpdateProjectJoinOrderError, "", nil)
-	}
-	go projectStateCheck(join)
-	go self.DistributeBonusAsync(project.Id, investWay.Id)
-	//返回数据
-	result := PayUrl{PayUrl: "", PayData: nil, OrderId: join.OrderId}
-	self.Data["json"] = self.FormatResult([]interface{}{result})
-	self.ServeJSON()
-
-}
-
-//满足条件则异步开仓放粮
-func (self *PayController) DistributeBonusAsync(pId, wayId int64) {
-
-	projectBonus := project_model.GetProjectBonusByPIdAndWId(pId, wayId, false)
-	if projectBonus != nil && projectBonus.IsDistributeBonus {
-		url := fmt.Sprintf("%s%s%d", beego.AppConfig.String("ApiHost"), "/v1/granary/distribute/bonus/", projectBonus.Id)
-		resp := tool.HttpCall(url, "GET", nil, nil)
-		beego.BeeLogger.Warn("pay_invest_controller.DistributeBonusAsync resp, resp:%s", resp)
-	}
-
-}

+ 0 - 63
go/gopath/src/fohow.com/apps/controllers/pay_controller/pay_reserve_controller.go

@@ -1,63 +0,0 @@
-package pay_controller
-
-import (
-	"fmt"
-	"fohow.com/apps"
-	"fohow.com/apps/models/reserve_act_model"
-	"fohow.com/libs/wx_mp"
-	"github.com/astaxie/beego"
-	"sync"
-)
-
-var payReserve sync.Mutex
-
-//预定优惠专题支付
-func (self *PayController) payReserve(oId, payWay, tradPwd, returnUrl string) {
-
-	wxUId := self.GetCurrentWxUserId()
-	uId := self.GetCurrentUserId()
-	wxUser := self.GetCurrentWxUser(false)
-	user := self.GetCurrentUser(false)
-
-	payReserve.Lock()
-	defer payReserve.Unlock()
-
-	if wxUser == nil || user == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	//订单是否存在//订单是否属于当前用户
-	order := reserve_act_model.GetOrderById(oId)
-	if order == nil || order.UserId != uId || order.WxUserId != wxUId {
-		self.ReturnError(404, apps.OrderNotExist, "", nil)
-	}
-
-	//订单是否不可支付
-	if order.State == 1 {
-		self.ReturnError(403, apps.NotUnPay, "", nil)
-	}
-
-	//活动是否存在
-	act := reserve_act_model.GetReserveActById(order.ActId, false)
-	//活动不是进行中
-	if act == nil || act.State != reserve_act_model.STATE_UNDERWAY {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	switch payWay {
-	case reserve_act_model.ORDER_PAY_WAY_WEIXINPAY:
-
-		notifyUrl := fmt.Sprintf("%s/v1/pay/%s/async/%s", beego.AppConfig.String("ApiHost"), RESERVE_TARGET, reserve_act_model.ORDER_PAY_WAY_WEIXINPAY)
-		body := fmt.Sprintf("FOHOW玖玖-预定优惠")
-		payData := wx_mp.GetPayData(wxUser.Openid, order.OrderId, order.TotalPrice, body, notifyUrl, self.Ctx.Input.IP())
-		//返回数据
-		type PayData struct {
-			PayData map[string]string `json:"pay_data"`
-		}
-		self.Data["json"] = &PayData{PayData: payData}
-	default:
-		beego.BeeLogger.Error("pay way not match, payway:%s", payWay)
-	}
-	self.ServeJSON()
-
-}

+ 0 - 22
go/gopath/src/fohow.com/apps/controllers/project_controller/init.go

@@ -1,22 +0,0 @@
-package project_controller
-
-import (
-	"github.com/astaxie/beego/context"
-	"fohow.com/apps"
-)
-
-var (
-	//不需要校验用户登录的Action
-	exceptCheckUserLoginAction   = []string{"ProjectList", "ProjectDetail", "GetInvestorList", "GetInvestWayList"}
-	exceptCheckWxUserLoginAction = []string{"ProjectList", "ProjectDetail", "GetInvestorList", "GetInvestWayList"}
-)
-
-type ProjectController struct {
-	apps.BaseController
-}
-
-func (self *ProjectController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}

+ 0 - 195
go/gopath/src/fohow.com/apps/controllers/project_controller/invest_controller.go

@@ -1,195 +0,0 @@
-package project_controller
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"fohow.com/apps"
-	"fohow.com/apps/models/project_model"
-	"strconv"
-)
-
-//查询用户是否有未支付的订单
-func (self *ProjectController) CheckUnpayOrder() {
-
-	_projectId := self.Ctx.Input.Param(":project_id")
-	projectId, _ := strconv.ParseInt(_projectId, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-	investWayId, _ := self.GetInt64("invest_way_id", 0)
-
-	project := project_model.GetProjectById(projectId, useCache)
-
-	if project == nil {
-		self.ReturnError(403, apps.ProjectNoExist, "", nil)
-	}
-
-	investWay := project_model.GetProjectInvestWayById(investWayId, useCache)
-
-	if investWay == nil || investWay.State == 0 {
-		self.ReturnError(403, apps.ProjectInvestWayNoExist, "", nil)
-	}
-
-	if investWay.ProjectId != project.Id {
-		self.ReturnError(403, apps.ProjectInvestWayNotMatch, "", nil)
-	}
-
-	type Ret struct {
-		Order *project_model.ProjectJoin `json:"order"`
-	}
-
-	user := self.GetCurrentUser(useCache)
-	unpayOrder := project_model.GetUnPayOrderByPIdAndWIdAndUId(project.Id, investWay.Id, user.Id, false)
-	type InvestOrder struct {
-		OrderId string `json:"order_id"`
-	}
-	investOrder := new(InvestOrder)
-	investOrder.OrderId = unpayOrder.OrderId
-	self.Data["json"] = investOrder
-	self.ServeJSON()
-
-}
-
-//生成投资记录
-func (self *ProjectController) GenerateOrder() {
-	//回报方式ID,默认为0
-	investWayId, _ := self.GetInt64("invest_way_id", 0)
-	// 项目Id
-	_id := self.Ctx.Input.Param(":project_id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	// 认购份数
-	_c := self.Ctx.Input.Param(":count")
-	c, _ := strconv.ParseInt(_c, 10, 64)
-	if c <= 0 {
-		self.ReturnError(403, apps.CountLimit, "", nil)
-	}
-
-	project := project_model.GetProjectById(id, false)
-	if project == nil {
-		self.ReturnError(403, apps.ProjectNoExist, "", nil)
-	}
-
-	investWay := project_model.GetProjectInvestWayById(investWayId, false)
-
-	if investWay == nil || investWay.State == 0 {
-		self.ReturnError(403, apps.ProjectInvestWayNoExist, "", nil)
-	}
-
-	if investWay.ProjectId != project.Id {
-		self.ReturnError(403, apps.ProjectInvestWayNotMatch, "", nil)
-	}
-
-	if project.State == project_model.STATE_SUCCESS {
-		self.ReturnError(403, apps.ProjectSuccess, "", nil)
-	}
-
-	if project.State != project_model.STATE_UNDERWAY {
-		self.ReturnError(403, apps.ProjectNotUnderWay, "", nil)
-	}
-
-	user := self.GetCurrentUser(true)
-
-	if investWay.OnlyNew == int64(1) {
-		/*userInvestments := project_model.GetInvestmentsByUId(1,1, user.Id, false)
-		if userInvestments != nil && len(userInvestments) != 0{
-			self.ReturnError(403, apps.ProjectInvestOnlyNew, "", nil)
-		}*/
-		specialProjectId := int64(7) //沙田柚项目
-		if beego.BConfig.RunMode == beego.DEV {
-			specialProjectId = int64(58) //内网某项目测试使用
-		}
-		specialProjectInvestments := project_model.GetInvestmentsByUIdExcludePId(1, 1, user.Id, specialProjectId, false)
-		if len(specialProjectInvestments) > 0 {
-			self.ReturnError(403, apps.ProjectInvestOnlyNew, "", nil)
-		}
-	}
-
-	userHasInvestCount := project_model.GetInvestSuccessCountByPIdAndWIdAndUId(project.Id, investWay.Id, user.Id, false)
-
-	investWayLeftCount := project_model.GetLeftCountByInvestWayId(investWay.Id)
-
-	//超过剩余份数
-	if investWayLeftCount < c {
-		self.ReturnError(403, apps.CountNotEnough, "", nil)
-	}
-
-	//超过最大限购份数
-	if investWay.MaxLimit < (c + userHasInvestCount) {
-		self.ReturnError(403, apps.CountLimit, "", nil)
-	}
-
-	if (c+userHasInvestCount-investWay.MinLimit)%investWay.GapLimit != 0 && (investWayLeftCount%investWay.MinLimit)%investWay.GapLimit == 0 {
-		self.ReturnError(403, []string{apps.CountLimit[0], fmt.Sprintf("%d份起购,请确认您增加购买的数量是%d的倍数", investWay.MinLimit, investWay.GapLimit)}, "", nil)
-	}
-
-	//买过的用户支持兜底
-	//if (c + userHasInvestCount - investWay.MinLimit) % investWay.GapLimit != 0 && investWayLeftCount < investWay.MinLimit && userHasInvestCount > 0 && c!= investWayLeftCount{
-	//	self.ReturnError(403, []string{apps.CountLimit[0], fmt.Sprintf("剩余%d份, 您需要全部购买(支持手动输入)", investWayLeftCount)}, "", nil)
-	//}
-	if (c < investWay.MinLimit && investWay.MinLimit <= investWayLeftCount && userHasInvestCount > 0) ||
-		(c < investWayLeftCount && investWayLeftCount < investWay.MinLimit && userHasInvestCount > 0) {
-		if investWay.MinLimit <= investWayLeftCount {
-			self.ReturnError(403, []string{apps.CountLimit[0], fmt.Sprintf("%d份起购", investWay.MinLimit)}, "", nil)
-		} else {
-			self.ReturnError(403, []string{apps.CountLimit[0], fmt.Sprintf("剩余%d份, 您需要全部购买(支持手动输入)", investWayLeftCount)}, "", nil)
-		}
-	}
-
-	//没买过的用户支持兜底。
-	if (c < investWay.MinLimit && investWay.MinLimit <= investWayLeftCount && userHasInvestCount == 0) ||
-		(c < investWayLeftCount && investWayLeftCount < investWay.MinLimit && userHasInvestCount == 0) {
-		if investWay.MinLimit <= investWayLeftCount {
-			self.ReturnError(403, []string{apps.CountLimit[0], fmt.Sprintf("%d份起购", investWay.MinLimit)}, "", nil)
-		} else {
-			self.ReturnError(403, []string{apps.CountLimit[0], fmt.Sprintf("剩余%d份, 您需要全部购买(支持手动输入)", investWayLeftCount)}, "", nil)
-		}
-	}
-
-	projectJoin := new(project_model.ProjectJoin).Create(user.Id, project.Id, c, investWay.Price, investWay.Id)
-	if projectJoin == nil {
-		self.ReturnError(403, apps.CreateOrderFail, "", nil)
-	}
-
-	type InvestOrder struct {
-		OrderId string `json:"order_id"`
-	}
-	beego.BeeLogger.Warn("order_id:%s", projectJoin.OrderId)
-
-	//测试环境只需支付1分钱
-	/*if beego.BConfig.RunMode == beego.DEV {
-		projectJoin.TotalPrice = 1
-		projectJoin.PaiedPrice = 1
-		projectJoin.Save()
-	}*/
-
-	self.Data["json"] = &InvestOrder{OrderId: projectJoin.OrderId}
-	self.ServeJSON()
-}
-
-//查询投资记录
-func (self *ProjectController) OrderInfo() {
-	orderId := self.Ctx.Input.Param(":order_id")
-
-	join := project_model.GetInvestByOrderId(orderId)
-
-	user := self.GetCurrentUser(true)
-	if join != nil {
-		if join.UserId != user.Id {
-			self.ReturnError(403, apps.NoExist, "", nil)
-		}
-		join.CTime = join.CreatedAt.Unix()
-		if join.CTime < 0 {
-			join.CTime = 0
-		}
-		useCache, _ := self.GetBool("cache", true)
-		project := project_model.GetProjectById(join.ProjectId, useCache)
-		if project != nil {
-			join.ProjectName = project.Title
-			join.ProjectType = project_model.PTYPE_CN_TEXT[project.Ptype]
-			join.ProjectState = project_model.STATE_CN_TEXT[project.State]
-			join.ProjectThumbImg = project_model.GetFullImgUrl(project.ImgThumb)
-			join.ProjectDetailImg = project_model.GetFullImgUrl(project.ImgDetail)
-		}
-	}
-
-	self.Data["json"] = join
-	self.ServeJSON()
-}

+ 0 - 85
go/gopath/src/fohow.com/apps/controllers/project_controller/invest_way_controller.go

@@ -1,85 +0,0 @@
-package project_controller
-
-import (
-	"strconv"
-
-	"fohow.com/apps"
-	"fohow.com/apps/models/product_model"
-	"fohow.com/apps/models/project_model"
-)
-
-func (self *ProjectController) GetInvestWayList() {
-	// 获取项目ID
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-
-	project := project_model.GetProjectById(id, true)
-	if project == nil {
-		self.ReturnError(403, apps.ProjectNoExist, "", nil)
-	}
-
-	uId := self.GetCurrentUserId()
-
-	list := project_model.GetInvestWaysByProjectId(id)
-	type Ret struct {
-		ProjectId          int64                             `json:"project_id"`
-		InvestWay          []*project_model.ProjectInvestWay `json:"invest_way"`
-		TotalLeftCopiesMin int64                             `json:"total_left_copies_min"`
-		TotalLeftCopiesMax int64                             `json:"total_left_copies_max"`
-
-		//旧使用
-		TotalLeftCopies int64 `json:"total_left_copies"`
-	}
-
-	var investWayList []*project_model.ProjectInvestWay
-	for _, way := range list {
-
-		if way.State == 1 {
-
-			way.LeftCopies = project_model.GetLeftCountByInvestWayId(way.Id)
-			if way.LeftCopies < 0 {
-				way.LeftCopies = 0
-			}
-			//总份数重新计算 2018-08-25 by zhouxiaoling
-			//totalLeft = totalLeft + way.LeftCopies
-			userHasInvestCount := project_model.GetInvestSuccessCountByPIdAndWIdAndUId(id, way.Id, uId, false)
-			way.OwnedCopies = userHasInvestCount
-			way.Product = product_model.GetProductById(way.ProductId, true)
-
-			investWayList = append(investWayList, way)
-		}
-
-	}
-
-	totalCopiesMin, totalCopiesMax := int64(0), int64(0)
-	if project.MinFunding < project.MaxFunding {
-		totalCopiesMin = int64(float64(project.MinFunding) / float64(project.UnitPrice))
-		totalCopiesMax = int64(float64(project.MaxFunding) / float64(project.UnitPrice))
-	} else {
-		totalCopiesMin = int64(float64(project.MinFunding) / float64(project.UnitPrice))
-		totalCopiesMax = int64(float64(project.MinFunding) / float64(project.UnitPrice))
-	}
-
-	//如果是有超募的,预热和团购中时,显示剩余份数范围
-	joinCopies := project_model.GetInvestSuccessCountByPId(project.Id, false)
-	totalLeftMin := totalCopiesMin - joinCopies
-	totalLeftMax := totalCopiesMax - joinCopies
-	if totalLeftMin < 0 {
-		totalLeftMin = 0
-	}
-	if totalLeftMax < 0 {
-		totalLeftMax = 0
-	}
-
-	if len(investWayList) <= 0 {
-		investWayList = make([]*project_model.ProjectInvestWay, 0, 0)
-	}
-
-	ret := new(Ret)
-	ret.ProjectId = id
-	ret.InvestWay = investWayList
-	ret.TotalLeftCopiesMin = totalLeftMin
-	ret.TotalLeftCopiesMax = totalLeftMax
-	self.Data["json"] = ret
-	self.ServeJSON()
-}

+ 0 - 215
go/gopath/src/fohow.com/apps/controllers/project_controller/project_controller.go

@@ -1,215 +0,0 @@
-package project_controller
-
-import (
-	"fohow.com/apps/helpers"
-	"fohow.com/apps/models/project_model"
-	"strconv"
-	"strings"
-	"time"
-)
-
-//项目列表:项目名,参与人数,起投金额,助农进度,列表图
-func (self *ProjectController) ProjectList() {
-	state := self.GetString("state")
-	pType := self.GetString("ptype")
-	pName := self.GetString("title")
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 20)
-	useCache, _ := self.GetBool("cache", true)
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-	//beego.BeeLogger.Warn("state: %v", state)
-	states := []int64{1, 2} //进行中,已成功
-	if strings.TrimSpace(state) != "" {
-		statesTmp := strings.Split(state, ",")
-		if len(statesTmp) > 0 {
-			states = nil
-			for _, each := range statesTmp {
-				n, _ := strconv.ParseInt(each, 10, 64)
-				states = append(states, n)
-			}
-		}
-	}
-	//beego.BeeLogger.Warn("states: %v", states)
-	list := project_model.GetProjectListByCondition(pName, pType, states, page, perPage, false)
-
-	count := project_model.GetProjectListCountByCondition(pName, pType, states, false)
-
-	for _, each := range list {
-
-		each.StartTime = each.StartAt.Unix()
-		if each.StartTime < 0 {
-			each.StartTime = 0
-		}
-		each.StopTime = each.StopAt.Unix()
-		if each.StopTime < 0 {
-			each.StopTime = 0
-		}
-		if each.SuccessTime < 0 {
-			each.SuccessTime = 0
-		}
-		each.ThumbImg = project_model.GetFullImgUrl(each.ImgThumb)
-
-		each.CurrentInvestUser = project_model.GetValidTotalCountByPId(each.Id, false)
-		each.CurrentInvestment = project_model.GetValidTotalFundingByPId(each.Id, false)
-		each.MinProjectWayPrice = project_model.GetMinProjeceWayPriceByPId(each.Id, useCache)
-
-		nowTime := time.Now().Unix()
-		if nowTime >= each.StartTime && nowTime < each.StopTime {
-			if each.State == project_model.STATE_PREHEAT {
-				each.State = project_model.STATE_UNDERWAY
-				each.Save()
-			}
-		}
-		if nowTime > each.StopTime {
-			if each.CurrentInvestment >= each.MinFunding && each.State != project_model.STATE_SUCCESS {
-				each.State = project_model.STATE_SUCCESS
-				each.Save()
-				if each.IsSendBenefit {
-					helpers.SendProjectBenefit(each)
-				}
-
-			}
-			if each.CurrentInvestment < each.MinFunding && each.State != project_model.STATE_FAILED {
-				each.State = project_model.STATE_FAILED
-				each.Save()
-			}
-		}
-
-		each.StateCn = project_model.STATE_CN_TEXT[each.State]
-
-		if each.MinFunding == each.MaxFunding {
-			if each.CurrentInvestment > each.MinFunding {
-				each.CurrentInvestment = each.MinFunding
-			}
-		}
-
-		//totalCopies := project_model.GetInvestWayCopiesByProjectId(each.Id)
-		totalCopiesMin, totalCopiesMax := int64(0), int64(0)
-		if each.MinFunding < each.MaxFunding {
-			totalCopiesMin = int64(float64(each.MinFunding) / float64(each.UnitPrice))
-			totalCopiesMax = int64(float64(each.MaxFunding) / float64(each.UnitPrice))
-		} else {
-			totalCopiesMin = int64(float64(each.MinFunding) / float64(each.UnitPrice))
-			totalCopiesMax = int64(float64(each.MinFunding) / float64(each.UnitPrice))
-		}
-
-		//如果是有超募的,预热和团购中时,显示剩余份数范围
-		joinCopies := project_model.GetInvestSuccessCountByPId(each.Id, false)
-		each.LeftCopiesMin = totalCopiesMin - joinCopies
-		each.LeftCopiesMax = totalCopiesMax - joinCopies
-		if each.LeftCopiesMin < 0 {
-			each.LeftCopiesMin = 0
-		}
-		if each.LeftCopiesMax < 0 {
-			each.LeftCopiesMax = 0
-		}
-
-		if each.IsDetailPics {
-			each.Detail = ""
-		}
-	}
-
-	if list == nil || len(list) == 0 {
-		list = make([]*project_model.Project, 0, 0)
-	}
-
-	type Ret struct {
-		List  []*project_model.Project `json:"list"`
-		Count int64                    `json:"count"`
-	}
-
-	self.Data["json"] = &Ret{List: list, Count: count}
-	self.ServeJSON()
-
-}
-
-//项目详情
-func (self *ProjectController) ProjectDetail() {
-
-	_id := self.Ctx.Input.Param(":project_id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-
-	project := project_model.GetProjectById(id, useCache)
-
-	if project != nil {
-
-		project.StartTime = project.StartAt.Unix()
-		if project.StartTime < 0 {
-			project.StartTime = 0
-		}
-		project.StopTime = project.StopAt.Unix()
-		if project.StopTime < 0 {
-			project.StopTime = 0
-		}
-		if project.SuccessTime < 0 {
-			project.SuccessTime = 0
-		}
-		project.ThumbImg = project_model.GetFullImgUrl(project.ImgThumb)
-		project.DetailImg = project_model.GetFullImgUrl(project.ImgDetail)
-
-		project.CurrentInvestUser = project_model.GetValidTotalCountByPId(project.Id, false)
-		project.CurrentInvestment = project_model.GetValidTotalFundingByPId(project.Id, false)
-		project.MinProjectWayPrice = project_model.GetMinProjeceWayPriceByPId(project.Id, useCache)
-		project.Album = project_model.GetProjectPicturesByPIdAndPType(project.Id, project_model.PIC_TYPE_CYCLE, useCache)
-
-		nowTime := time.Now().Unix()
-		if nowTime >= project.StartTime && nowTime < project.StopTime {
-			if project.State == project_model.STATE_PREPARING {
-				project.State = project_model.STATE_UNDERWAY
-				project.Save()
-			}
-		}
-		if nowTime > project.StopTime {
-			if project.CurrentInvestment >= project.MinFunding && project.State != project_model.STATE_SUCCESS {
-				project.State = project_model.STATE_SUCCESS
-				project.Save()
-				if project.IsSendBenefit {
-					helpers.SendProjectBenefit(project)
-				}
-			}
-			if project.CurrentInvestment < project.MinFunding && project.State != project_model.STATE_FAILED {
-				project.State = project_model.STATE_FAILED
-				project.Save()
-			}
-		}
-
-		project.StateCn = project_model.STATE_CN_TEXT[project.State]
-
-		if project.MinFunding == project.MaxFunding {
-			if project.CurrentInvestment > project.MinFunding {
-				project.CurrentInvestment = project.MinFunding
-			}
-		}
-
-		totalCopiesMin, totalCopiesMax := int64(0), int64(0)
-		if project.MinFunding < project.MaxFunding {
-			totalCopiesMin = int64(float64(project.MinFunding) / float64(project.UnitPrice))
-			totalCopiesMax = int64(float64(project.MaxFunding) / float64(project.UnitPrice))
-		} else {
-			totalCopiesMin = int64(float64(project.MinFunding) / float64(project.UnitPrice))
-			totalCopiesMax = int64(float64(project.MinFunding) / float64(project.UnitPrice))
-		}
-
-		//如果是有超募的,预热和团购中时,显示剩余份数范围
-		joinCopies := project_model.GetInvestSuccessCountByPId(project.Id, false)
-		project.LeftCopiesMin = totalCopiesMin - joinCopies
-		project.LeftCopiesMax = totalCopiesMax - joinCopies
-		if project.LeftCopiesMin < 0 {
-			project.LeftCopiesMin = 0
-		}
-		if project.LeftCopiesMax < 0 {
-			project.LeftCopiesMax = 0
-		}
-
-		if project.IsDetailPics {
-			project.IntroduceAlbum = project_model.GetAscProjectPicturesByPIdAndPType(project.Id, project_model.PIC_TYPE_PROJECT_INTODUCE, useCache, false)
-			project.Detail = ""
-		}
-	}
-
-	self.Data["json"] = project
-	self.ServeJSON()
-}

+ 0 - 131
go/gopath/src/fohow.com/apps/controllers/project_controller/project_join_controller.go

@@ -1,131 +0,0 @@
-package project_controller
-
-import (
-	"github.com/astaxie/beego"
-	"fohow.com/apps"
-	"fohow.com/apps/models/project_model"
-	"fohow.com/apps/models/user_model"
-	"strconv"
-	//"fohow.com/apps/models/product_model"
-	"fohow.com/apps/models/granary_model"
-)
-
-//项目投资人列表
-func (self *ProjectController) GetInvestorList() {
-	_id := self.Ctx.Input.Param(":project_id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	useCache, _ := self.GetBool("cache", true)
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 20)
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-	type ListWithCnt struct {
-		List      []*project_model.Investor `json:"investor_list"`
-		ListCount int64                     `json:"list_count"`
-	}
-	project := project_model.GetProjectById(id, useCache)
-	if project == nil {
-		self.ReturnError(403, apps.ProjectNoExist, "", nil)
-	}
-	useCache = project.State == project_model.STATE_SUCCESS
-
-	investList := project_model.GetInvestListByPId(id, page, perPage, useCache)
-	for _, item := range investList {
-		usr := user_model.GetUserById(item.UserId, useCache)
-		if usr != nil {
-			if usr.Nickname == "" || usr.Head == "" {
-				wxUsr := user_model.GetWxUserByUserId(item.UserId, useCache)
-				if wxUsr != nil {
-					item.UserName = wxUsr.GetNickNameWithStar()
-					item.Head = user_model.GetFullImgUrl(wxUsr.Head)
-				}
-			} else {
-				item.UserName = usr.GetNickNameWithStar()
-				item.Head = user_model.GetFullImgUrl(usr.Head)
-			}
-		} else {
-			item.Head = user_model.GetFullImgUrl("")
-		}
-	}
-
-	list := new(ListWithCnt)
-	list.List = investList
-	list.ListCount = project_model.GetInvestorCountByPId(id, useCache)
-	// list.InvestorCount = project_join_model.GetInvestorsCountByPId(id, useCache)
-	self.Data["json"] = list
-	self.ServeJSON()
-}
-
-//我的农场/我的投资记录
-func (self *ProjectController) GetInvestmentList() {
-	useCache, _ := self.GetBool("cache", true)
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 20)
-	if perPage <= 0 || perPage > 100 {
-		perPage = 20
-	}
-	userId := self.GetCurrentUserId()
-
-	list := project_model.GetInvestmentsByUId(page, perPage, userId, useCache)
-
-	for _, item := range list {
-		beego.BeeLogger.Debug("JoinItemPerProjectPerWay: %v", item)
-		project := project_model.GetProjectById(item.ProjectId, useCache)
-		if project != nil {
-			item.ProjectName = project.Title
-			item.ProjectThumbImg = self.GetFullImgUrl(project.ImgThumb)
-		}
-		investWay := project_model.GetProjectInvestWayById(item.ProjectInvestWayId, useCache)
-		beego.BeeLogger.Debug("invest-way: %v", investWay)
-		if investWay != nil {
-			item.InvestWayName = investWay.Title
-		}
-		projectBonus := project_model.GetProjectBonusByPIdAndWId(item.ProjectId, item.ProjectInvestWayId, useCache)
-		if projectBonus != nil {
-			//这里不是项目收成的回购结束时间,而是粮仓的创建时间
-			//item.ValidHarvestTime = projectBonus.BuyBackStopAt.Unix()
-			granary := granary_model.GetGranaryByBonusIdAndUId(projectBonus.Id, userId, useCache)
-			if granary != nil {
-				item.IsHarvest = true
-				item.ValidHarvestTime = granary.CreatedAt.Unix()
-				if item.ValidHarvestTime < 0 {
-					item.ValidHarvestTime = 0
-				}
-				item.GranaryId = granary.Id
-			} else {
-				if investWay != nil {
-					item.GuessHarvestTime = investWay.HarvestTime.Unix()
-					if item.GuessHarvestTime < 0 {
-						item.GuessHarvestTime = 0
-					}
-					item.GuessHarvestPrice = investWay.HarvestAmount*(item.SumCount-investWay.SelfUseMin) + investWay.SelfUseMin*investWay.Price
-				}
-			}
-
-		} else {
-			if investWay != nil {
-				item.GuessHarvestTime = investWay.HarvestTime.Unix()
-				if item.GuessHarvestTime < 0 {
-					item.GuessHarvestTime = 0
-				}
-				item.GuessHarvestPrice = investWay.HarvestAmount*(item.SumCount-investWay.SelfUseMin) + investWay.SelfUseMin*investWay.Price
-			}
-		}
-	}
-
-	count := project_model.GetInvestmentsCountByUId(userId, useCache)
-	type Ret struct {
-		List           []*project_model.JoinItemPerProjectPerWay `json:"list"`
-		Count          int64                                     `json:"count"`
-		HelpInvestment int64                                     `json:"help_investment"`
-	}
-
-	if list == nil || len(list) == 0 {
-		list = make([]*project_model.JoinItemPerProjectPerWay, 0, 0)
-	}
-
-	helpInvestment := project_model.GetUserHadSuccessInvest(userId, useCache)
-	self.Data["json"] = &Ret{List: list, Count: count, HelpInvestment: helpInvestment}
-	self.ServeJSON()
-}

+ 0 - 237
go/gopath/src/fohow.com/apps/controllers/rabbit_prize_draw_act_controller/rabbit_prize_draw_act_controller.go

@@ -1,237 +0,0 @@
-package rabbit_prize_draw_act_controller
-
-import (
-	"crypto/aes"
-	"crypto/cipher"
-	"encoding/base64"
-	"fmt"
-	"fohow.com/apps"
-	"fohow.com/apps/helpers"
-	"fohow.com/apps/models/granary_model"
-	"fohow.com/apps/models/order_model"
-	"fohow.com/apps/models/pay_model"
-	"fohow.com/apps/models/product_model"
-	"fohow.com/apps/models/user_model"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/context"
-	"regexp"
-	"strconv"
-	"time"
-)
-
-var (
-	//需要校验用户登录的Action
-	exceptCheckUserLoginAction   = []string{"OrderLabiProduct"}
-	exceptCheckWxUserLoginAction = []string{"OrderLabiProduct"}
-)
-
-type RabbitPrizeDrawActController struct {
-	apps.BaseController
-}
-
-func (self *RabbitPrizeDrawActController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}
-
-//五五节中奖。填写收货地址时在FOHOW玖玖商城下单。
-func (self *RabbitPrizeDrawActController) OrderLabiProduct() {
-	key := beego.AppConfig.String("RabbitOrderProductKey")
-	// key := []byte("1234567890123456")
-	params := self.GetString("params")
-	ciphertext, _ := base64.StdEncoding.DecodeString(params)
-	block, err := aes.NewCipher([]byte(key))
-	if err != nil {
-		beego.BeeLogger.Error("aes newcipher err:%s", err)
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-
-	// The IV needs to be unique, but not secure. Therefore it's common to
-	// include it at the beginning of the ciphertext.
-	if len(ciphertext) < aes.BlockSize {
-		beego.BeeLogger.Error("ciphertext too short")
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-	iv := ciphertext[:aes.BlockSize]
-	ciphertext = ciphertext[aes.BlockSize:]
-
-	stream := cipher.NewCFBDecrypter(block, iv)
-
-	// XORKeyStream can work in-place if the two arguments are the same.
-	stream.XORKeyStream(ciphertext, ciphertext)
-	// beego.BeeLogger.Warn("plain params:%s", ciphertext)
-	type LabiOrderProductReturn struct {
-		RetCode string `json:"ret_code"`
-		RetMsg  string `json:"ret_msg"`
-		OrderId string `json:"order_id"`
-	}
-
-	regTel := regexp.MustCompile(`tel=([0-9]+)`)
-	matchTel := regTel.FindSubmatch([]byte(ciphertext))
-
-	regRpId := regexp.MustCompile(`rpid=([0-9]+)`)
-	matchcRpId := regRpId.FindSubmatch([]byte(ciphertext))
-
-	regOuId := regexp.MustCompile(`ouid=([0-9]+)`)
-	matchOuId := regOuId.FindSubmatch([]byte(ciphertext))
-
-	regWxuid := regexp.MustCompile(`wxuid=([0-9]+)`)
-	matchWxuid := regWxuid.FindSubmatch([]byte(ciphertext))
-
-	regActid := regexp.MustCompile(`actid=([0-9]+)`)
-	matchActid := regActid.FindSubmatch([]byte(ciphertext))
-
-	regAddr := regexp.MustCompile(`address=([a-z0-9A-Z\p{Han}]+((,|,|-|_| |(|)|\)|\()[a-z0-9A-Z\p{Han}]+)*)`)
-	matchAddr := regAddr.FindSubmatch([]byte(ciphertext))
-
-	regContact := regexp.MustCompile(`contact=([a-z0-9A-Z\p{Han}]+((,|,|-|_| |(|)|\)|\()[a-z0-9A-Z\p{Han}]+)*)`)
-	matchContact := regContact.FindSubmatch([]byte(ciphertext))
-
-	if len(matchTel) < 2 || len(matchcRpId) < 2 || len(matchOuId) < 2 || len(matchAddr) < 2 || len(matchContact) < 2 || len(matchWxuid) < 2 || len(matchActid) < 2 {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0001",
-			RetMsg:  "参数错误",
-			OrderId: "",
-		}, true, true)
-		self.StopRun()
-	}
-	_rpId := fmt.Sprintf("%s", matchcRpId[1])
-	rpId, _ := strconv.ParseInt(_rpId, 10, 64)
-	_ouId := fmt.Sprintf("%s", matchOuId[1])
-	ouId, _ := strconv.ParseInt(_ouId, 10, 64)
-	_wxuid := fmt.Sprintf("%s", matchWxuid[1])
-	wxuid, _ := strconv.ParseInt(_wxuid, 10, 64)
-	_actid := fmt.Sprintf("%s", matchActid[1])
-	actid, _ := strconv.ParseInt(_actid, 10, 64)
-	tel := fmt.Sprintf("%s", matchTel[1])
-	address := fmt.Sprintf("%s", matchAddr[1])
-	contact := fmt.Sprintf("%s", matchContact[1])
-
-	if rpId == 0 || ouId == 0 || wxuid == 0 || actid == 0 {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0001",
-			RetMsg:  "参数错误",
-			OrderId: "",
-		}, true, true)
-		self.StopRun()
-	}
-	beego.BeeLogger.Warn("prize_draw_act===rpId:%d, ouId:%d,wxuid:%d,actid:%d", rpId, ouId, wxuid, actid)
-	orderUser := user_model.GetUserById(ouId, true)
-	if orderUser == nil {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0002",
-			RetMsg:  "下单用户不存在",
-			OrderId: "",
-		}, true, true)
-		self.StopRun()
-	}
-	beego.BeeLogger.Warn("prize_draw_act===orderUser:%d", orderUser.Id)
-
-	labiProduct := product_model.GetProductById(rpId, true)
-	if labiProduct == nil {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0002",
-			RetMsg:  "商品不存在",
-			OrderId: "",
-		}, true, true)
-		self.StopRun()
-	}
-	beego.BeeLogger.Warn("prize_draw_act===labiProduct:%d", labiProduct.Id)
-
-	remark := fmt.Sprintf("wuwu_draw_%d_%d", actid, wxuid)
-	existOrder := order_model.GetOrderByOrderRemark(remark, true)
-	if existOrder != nil {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0002",
-			RetMsg:  "不能重复下单",
-			OrderId: "",
-		}, true, true)
-		self.StopRun()
-	}
-
-	wxUserId := int64(0)
-	wxUser := user_model.GetWxUserByUserId(orderUser.Id, true)
-	if wxUser != nil {
-		wxUserId = wxUser.Id
-	}
-
-	order := new(order_model.Order).Create(wxUserId, orderUser.Id, labiProduct.Id, 1,
-		labiProduct.RoboBalancePrice*1, labiProduct.BuyPrice*1, labiProduct.Price, labiProduct.RoboBalancePrice, order_model.SOURCE_D5C_SYS)
-
-	beego.BeeLogger.Warn("prize_draw_act===order:%d", order.Id)
-
-	if order == nil {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0003",
-			RetMsg:  "下单失败",
-			OrderId: "",
-		}, true, true)
-		self.StopRun()
-	}
-
-	if labiProduct.Ptype == product_model.TYPE_USER_SALE {
-		order.OrderType = order_model.ORDER_TYPE_SALE
-	}
-
-	//判断库存
-	leftCount := int64(0)
-	//普通订单
-	if order.OrderType == order_model.ORDER_TYPE_NORMAL {
-		soldCount := order_model.GetSoldCountByPId(labiProduct.Id, false)
-		leftCount = labiProduct.Count - soldCount
-	} else {
-		leftCount = granary_model.GetSaleOrderLeftCountByPId(labiProduct.Id)
-	}
-	//商品已经卖完
-	if leftCount < order.Count {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0003",
-			RetMsg:  "下单失败",
-			OrderId: "",
-		}, true, true)
-		self.StopRun()
-	}
-
-	order.Status = order_model.STATUS_PROCESSING
-	order.PaiedAt = time.Now().Unix()
-	order.PaiedPrice = order.TotalPrice
-	order.PayWay = pay_model.PAYWAY_BALANCE
-	order.OrderRemark = remark
-	order.Address = address
-	order.Contact = contact
-	order.Tel = tel
-
-	if !order.Save() {
-		self.Ctx.Output.SetStatus(403)
-		self.Ctx.Output.JSON(&LabiOrderProductReturn{
-			RetCode: "0003",
-			RetMsg:  "下单失败",
-			OrderId: "",
-		}, true, true)
-		self.StopRun()
-	}
-	beego.BeeLogger.Warn("prize_draw_act===order_type:%d", order.OrderType)
-
-	//TODO: 暂不考虑代销商品的库存量
-	//代销订单,处理代销逻辑
-	if order.OrderType == order_model.ORDER_TYPE_SALE {
-		helpers.SaleOrderHandler(order)
-	}
-
-	ok := &LabiOrderProductReturn{
-		RetCode: "0000",
-		RetMsg:  "下单成功",
-		OrderId: order.OrderId,
-	}
-	self.Ctx.Output.SetStatus(200)
-	self.Ctx.Output.JSON(ok, true, true)
-	self.StopRun()
-}

+ 0 - 202
go/gopath/src/fohow.com/apps/controllers/railsadmin_controller/dollar_win_controller.go

@@ -1,202 +0,0 @@
-package railsadmin_controller
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"fohow.com/apps"
-	"fohow.com/apps/models/balance_model"
-	"fohow.com/apps/models/dollar_win_model"
-	"fohow.com/apps/models/user_model"
-	"fohow.com/libs/wx_mp"
-	"strconv"
-	"time"
-	//"fohow.com/apps/models/d5c_project"
-)
-
-//一元夺宝没中奖的退款,退款余额账户里面
-func (self *RailsadminController) DollarWinRefund() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	perPage, _ := self.GetInt64("per_page", 50)
-
-	act := dollar_win_model.GetDollarWinZtConfigById(id, false)
-	if act == nil {
-		self.ReturnError(403, []string{"actNotExist", "活动不存在"}, "", nil)
-	}
-	if act.StartTime.Unix() < time.Now().Unix() && time.Now().Unix() < act.StopTime.Unix() {
-		self.ReturnError(403, []string{"actIsGoing", "活动仍在进行中"}, "", nil)
-	}
-
-	joinCount := dollar_win_model.GetJoinPaiedListCountByZtConfigId(act.Id, false)
-	pageIndex := int64(1)
-
-	page := (joinCount / perPage) + 1
-
-	/*	beego.BeeLogger.Warn("railsadmin_controller.DollarWinRefund().perPage(%d)", perPage)
-		beego.BeeLogger.Warn("railsadmin_controller.DollarWinRefund().joinCount(%d)", joinCount)*/
-
-	for i := int64(0); i < page; i++ {
-		beego.BeeLogger.Warn("railsadmin_controller.DollarWinRefund().i(%d)", i)
-		list := dollar_win_model.GetJoinPaiedListByZtConfigId(act.Id, (pageIndex + i), perPage, false)
-		for _, item := range list {
-			if !item.IsWin && !item.IsRefund {
-				//	非中奖者将退款到账户余额
-				refundCash := balance_model.GetCashBalanceBySourceAndRId(balance_model.CASH_SOURCE_DOLLAR_WIN_RETURN, item.OrderId)
-				if refundCash == nil {
-					remark := fmt.Sprintf("%s", act.Title)
-					wxUser := user_model.GetWxUserByUserId(item.UserId, false)
-					if wxUser == nil {
-						continue
-					}
-					refundCash = new(balance_model.CashBalance).Create(wxUser.Id, item.TotalAmount,
-						balance_model.CASH_SOURCE_DOLLAR_WIN_RETURN, item.OrderId, remark)
-				}
-				if refundCash != nil {
-					item.IsRefund = true
-					item.Save()
-					go self.DollarRefundUserNotice(item.UserId, act.Id, act.JoinCostAmount, act.Title, act.Prize)
-				}
-			}
-		}
-	}
-	self.ServeJSON()
-}
-
-//一元夺宝开奖 购买时间20060102150405之和除以人次,取余数 + 1
-func (self *RailsadminController) DollarWinOpen() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-
-	act := dollar_win_model.GetDollarWinZtConfigById(id, false)
-	if act == nil {
-		self.ReturnError(403, []string{"actNotExist", "活动不存在"}, "", nil)
-	}
-	if act.StartTime.Unix() < time.Now().Unix() && time.Now().Unix() < act.StopTime.Unix() {
-		self.ReturnError(403, []string{"actIsGoing", "活动仍在进行中"}, "", nil)
-	}
-
-	joinCount := dollar_win_model.GetJoinPaiedListCountByZtConfigId(act.Id, false)
-	beego.BeeLogger.Warn("joinCount, joinCount=[%d]", joinCount)
-	if joinCount == 0 {
-		self.ReturnError(403, apps.Error, "", nil)
-	}
-
-	if joinCount < act.TotalTimesMinLimit {
-		self.ReturnError(403, []string{"lessThanJoinTimesLimit", "活动参与人次不到开奖最低参与人次"}, "", nil)
-	}
-	//若项目未融资成功,则提示项目未成功,开奖失败
-
-	/*	D5cProjectInfo := d5c_project_model.GetD5cProjectById(act.ProjectId)
-		if D5cProjectInfo==nil{
-			//self.ReturnError(403, []string{"projectIsNull","该活动没有关联参与项目"}, "", nil)
-		}
-		if D5cProjectInfo.State != d5c_project_model.SUCESS_STATE{
-			//self.ReturnError(403, []string{"projectIsNotSucess","该活动关联项目没有融资成功"}, "", nil)
-		}*/
-	z := dollar_win_model.GetJoinPaiedZSumByZtConfigId(act.Id, false)
-	winRank := (z % joinCount) + 1
-	beego.BeeLogger.Warn("winRank, winRank=[%d]", winRank)
-	joinOrder := dollar_win_model.GetJoinPaiedByZtConfigIdAndRankNum(act.Id, winRank, false)
-	if joinOrder == nil {
-		self.ReturnError(403, apps.Error, "", nil)
-	}
-	joinOrder.IsWin = true
-	joinOrder.AwardRank = int64(1)
-	joinOrder.Save()
-	//若中奖,则自动推送中奖信息
-	self.DollarWinUserNotice(joinOrder.UserId, joinOrder.AwardRank, act.Id, time.Now().Unix(), act.Title, act.Prize)
-	//计算二等奖获得者,并通知
-	second := self.GetOtherWinNumber(winRank, joinCount, int64(5))
-	secondJoinOrder := dollar_win_model.GetJoinPaiedByZtConfigIdAndRankNum(act.Id, second, false)
-	if secondJoinOrder != nil {
-		secondJoinOrder.IsWin = true
-		secondJoinOrder.AwardRank = int64(2)
-		secondJoinOrder.Save()
-		go self.DollarWinUserNotice(secondJoinOrder.UserId, secondJoinOrder.AwardRank, act.Id, time.Now().Unix(), act.Title, act.Prize)
-	}
-
-	third := self.GetOtherWinNumber(winRank, joinCount, int64(10))
-	thirdJoinOrder := dollar_win_model.GetJoinPaiedByZtConfigIdAndRankNum(act.Id, third, false)
-	if thirdJoinOrder != nil {
-		thirdJoinOrder.IsWin = true
-		thirdJoinOrder.AwardRank = int64(3)
-		thirdJoinOrder.Save()
-		self.DollarWinUserNotice(thirdJoinOrder.UserId, thirdJoinOrder.AwardRank, act.Id, time.Now().Unix(), act.Title, act.Prize)
-	}
-	act.ResultText = fmt.Sprintf("%d%s%d 取余数 + 1 = %d", z, "/", joinCount, winRank)
-	act.Save()
-	self.ServeJSON()
-}
-
-//一元夺宝开奖通知
-func (self *RailsadminController) DollarWinUserNotice(uId, awardRank, ztConfigId, winTime int64, ztConfigTitle, ztConfigPrize string) {
-	user := user_model.GetWxUserByUserId(uId, false)
-	beego.BeeLogger.Warn("DollarWinNoticeTemplate, act.Prize=[%s]uId=[%d]", ztConfigPrize, uId)
-	if user != nil {
-		wxUserGzh := user_model.GetWxUserGzhByWxUIdAndAppId(user.Id, beego.AppConfig.String("WxMPAppId"), false)
-		if wxUserGzh != nil && wxUserGzh.GzhOpenId != "" {
-			var url string
-			if beego.BConfig.RunMode == beego.DEV {
-				url = fmt.Sprintf("http://testm.labitumall.com/activity/oneinvest/%d", ztConfigId)
-			} else {
-				url = fmt.Sprintf("https://m.labitumall.com/activity/oneinvest/%d", ztConfigId)
-			}
-			var str string
-			if awardRank == int64(1) {
-				str = "喜报,恭喜您活动获得一等奖"
-			} else if awardRank == int64(2) {
-				str = "喜报,恭喜您活动获得二等奖"
-			} else {
-				str = "喜报,恭喜您活动获得三等奖"
-			}
-			beego.BeeLogger.Warn("DollarWinNotice, url=[%s]", url)
-			first := str
-			kw1 := ztConfigTitle
-			kw2 := ztConfigPrize
-			kw3 := time.Unix(winTime, 0).Format("2006-01-02 15:04:05")
-			remark := "您已幸运获得本次奖励,点击查看"
-			go wx_mp.TmplmsgEventDollarWinNotifyHandle(wxUserGzh.GzhOpenId, url, first, kw1, kw2, kw3, remark)
-		}
-	}
-}
-
-//一元夺宝开奖通知
-func (self *RailsadminController) GetOtherWinNumber(winNumber, count, calcNums int64) int64 {
-
-	var winner int64 = 0
-	//计算其它得奖人数
-	if winNumber+calcNums <= count {
-		winner = winNumber + calcNums
-	} else {
-		if calcNums > count {
-			winner = winNumber + calcNums%count - count
-		} else {
-			winner = winNumber + calcNums - count
-		}
-	}
-	return winner
-}
-
-//一元活动开奖退款通知
-func (self *RailsadminController) DollarRefundUserNotice(uId, ztConfigId, ztConfigCost int64, ztConfigTitle, ztConfigPrize string) {
-	user := user_model.GetWxUserByUserId(uId, false)
-	beego.BeeLogger.Warn("DollarRefundUserNotice, act.Prize=[%s]uId=[%d]", ztConfigPrize, uId)
-	if user != nil {
-		wxUserGzh := user_model.GetWxUserGzhByWxUIdAndAppId(user.Id, beego.AppConfig.String("WxMPAppId"), false)
-		if wxUserGzh != nil && wxUserGzh.GzhOpenId != "" {
-			var url string
-			if beego.BConfig.RunMode == beego.DEV {
-				url = fmt.Sprintf("http://testm.labitumall.com/activity/oneinvest/%d", ztConfigId)
-			} else {
-				url = fmt.Sprintf("https://m.labitumall.com/activity/oneinvest/%d", ztConfigId)
-			}
-			beego.BeeLogger.Warn("DollarRefundUserNotice, url=[%s]", url)
-			first := "很遗憾,您参与的活动未中奖"
-			kw1 := fmt.Sprintf("<<%s>>退款", ztConfigTitle)
-			kw2 := fmt.Sprintf("%d元", int64(ztConfigCost/100))
-			remark := "点击参加最新一期"
-			beego.BeeLogger.Warn("DollarRefundUserNotice, remark=[%s]", remark)
-			go wx_mp.TmplmsgEventDollarRefundNotifyHandle(wxUserGzh.GzhOpenId, url, first, kw1, kw2, remark)
-		}
-	}
-}

+ 0 - 151
go/gopath/src/fohow.com/apps/controllers/refund_controller/refund_controller.go

@@ -1,151 +0,0 @@
-package refund_controller
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"fohow.com/apps"
-	"fohow.com/apps/helpers"
-	"fohow.com/apps/models/balance_model"
-	"fohow.com/apps/models/exchange_model"
-	"fohow.com/apps/models/merchant_model"
-	"fohow.com/apps/models/order_model"
-	"fohow.com/apps/models/product_model"
-	"fohow.com/apps/models/user_model"
-	"sync"
-)
-
-type RefundController struct {
-	apps.BaseController
-}
-
-var refundMutex sync.Mutex
-
-//商家退款
-func (self *RefundController) Refund() {
-
-	oId := self.Ctx.Input.Param(":order_id")
-	useCache, _ := self.GetBool("cache", false)
-	//校验商家:是不是商家?是不是订单的商品的商家?
-	user := self.GetCurrentUser(useCache)
-	if user == nil {
-		self.ReturnError(403, apps.UserNeedLogin, "", nil)
-	}
-	merchantUser := merchant_model.GetMerchantUserRelationByUserId(user.Id, useCache)
-	if merchantUser == nil {
-		self.ReturnError(403, apps.OrderNotBelongToCurrentUser, "", nil)
-	}
-
-	//商家超级管理员
-	if !merchantUser.IsSuperAdmin {
-		self.ReturnError(403, apps.CurrentMerIsNotSuperAdminMerchant, "", nil)
-	}
-
-	defer refundMutex.Unlock()
-	refundMutex.Lock()
-
-	order := order_model.GetOrderById(oId)
-	if order == nil {
-		self.ReturnError(403, apps.OrderNotExist, "", nil)
-	}
-
-	product := product_model.GetProductById(order.ProductId, useCache)
-	if product == nil {
-		self.ReturnError(403, apps.ProductNotExist, "", nil)
-	}
-
-	if product.Ptype == product_model.TYPE_USER_SALE {
-		self.ReturnError(403, apps.UserSaleProductNotSupportRefund, "", nil)
-	}
-
-	if product.MerchantId != merchantUser.MerchantId {
-		self.ReturnError(403, apps.OrderNotBelongToCurrentUser, "", nil)
-	}
-
-	//是否重复退款?
-	if order.Status == order_model.STATUS_REFUNDED {
-		self.ReturnError(403, apps.OrderAlreadyRefund, "", nil)
-	}
-
-	//只允许给处理中、已发货的订单退款
-	if order.Status != order_model.STATUS_DISPATCH && order.Status != order_model.STATUS_PROCESSING {
-		self.ReturnError(403, apps.OrderStatusNotSuit, "", nil)
-	}
-
-	//抽奖或者筹中筹的订单不能给商家操作数据
-	if order.Source == order_model.SOURCE_D5C_SYS {
-		self.ReturnError(403, []string{"SysOrderNoSupportRefund", "系统下单不支持退款,请联系客服"}, "", nil)
-	}
-
-	//  退款-支持退回代金券和退回余额和退回代金券
-	switch order.PayWay {
-	case order_model.PAY_WAY_BALANCE:
-		//代金券支付需要有代金券支付记录
-		buyBalance := balance_model.GetBuyBalanceByRelateId(oId, useCache)
-		if buyBalance == nil {
-			self.ReturnError(403, apps.BalanceNotExist, "", nil)
-		}
-
-		//订单是否已经退款
-		refundBalance := balance_model.GetRefundBalanceByRelateId(oId, useCache)
-		if refundBalance != nil {
-			self.ReturnError(403, apps.OrderAlreadyRefund, "", nil)
-		}
-
-		refundBalance = new(balance_model.Balance).Create(order.WxUserId, order.UserId, order.TotalPrice,
-			balance_model.BALANCE_SOURCE_ALL_REFUNDED, order.OrderId, fmt.Sprintf("商品退款《%s》", product.Name))
-
-		if refundBalance == nil {
-			self.ReturnError(403, apps.OrderRefundFaild, "", nil)
-		}
-		//  更换订单状态
-		order.Status = order_model.STATUS_REFUNDED
-		order.Save()
-
-	case order_model.PAY_WAY_WEIXIN:
-
-		refundCashBalance := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(order.WxUserId, order.OrderId, balance_model.CASH_SOURCE_PRODUCT_REFUND)
-		if refundCashBalance != nil {
-			self.ReturnError(403, apps.OrderAlreadyRefund, "", nil)
-		}
-
-		refundCashBalance = new(balance_model.CashBalance).Create(order.WxUserId, order.TotalPrice,
-			balance_model.CASH_SOURCE_PRODUCT_REFUND, order.OrderId, fmt.Sprintf("商品退款《%s》", product.Name))
-
-		if refundCashBalance == nil {
-			self.ReturnError(403, apps.OrderRefundFaild, "", nil)
-		}
-		order.Status = order_model.STATUS_REFUNDED
-		order.Save()
-
-	case order_model.PAY_WAY_INTEGRAl:
-
-		platform := exchange_model.GetPlatformByTag(exchange_model.DEFAULT_PLATFORM_TAG, false)
-		if platform == nil {
-			self.ReturnError(403, apps.Error, "", nil)
-		}
-
-		buyerUser := user_model.GetUserById(order.UserId, false)
-		if buyerUser == nil {
-			self.ReturnError(403, apps.Error, "", nil)
-		}
-		resultReturn := helpers.ReturnPlatformMallBalance(platform.Secret, order.TradeNo, helpers.RETURN_URL, buyerUser.Tel, order.TotalPrice)
-
-		if resultReturn == nil || resultReturn.RetCode != exchange_model.PL_RET_CODE_SUCCESS {
-			beego.BeeLogger.Error("refund_contoller.ReturnPlatformMallBalance().Platform return failed, platform id:%d, retMsg:%s", platform.Id, resultReturn.RetMsg)
-			self.ReturnError(403, apps.PlatformReturnFailed, "", nil)
-		}
-
-		order.Status = order_model.STATUS_REFUNDED
-		order.Save()
-
-	default:
-		self.ReturnError(403, apps.Error, "", nil)
-	}
-
-	type Ret struct {
-		OrderId string `json:"order_id"`
-	}
-	self.Data["json"] = &Ret{OrderId: order.OrderId}
-	self.ServeJSON()
-
-}

+ 0 - 298
go/gopath/src/fohow.com/apps/controllers/reserve_act_controller/reserve_act_controller.go

@@ -1,298 +0,0 @@
-package reserve_act_controller
-
-import (
-	"fmt"
-	"github.com/astaxie/beego/context"
-	"fohow.com/apps"
-	"fohow.com/apps/models/balance_model"
-	"fohow.com/apps/models/reserve_act_model"
-	"fohow.com/apps/models/user_model"
-	"fohow.com/libs/tool"
-	"strconv"
-	"strings"
-	"sync"
-	"time"
-)
-
-var (
-	//以下Action无需登录校验,exceptCheckUserLoginAction = []string{"*"} *代表全部不需要
-	exceptCheckUserLoginAction   = []string{"GetAct", "GetJoiners", "GetCur", "ReturnAmount"}
-	exceptCheckWxUserLoginAction = []string{"GetAct", "GetJoiners", "GetCur", "ReturnAmount"}
-)
-
-type ReserveActController struct {
-	apps.BaseController
-}
-
-var orderLock sync.Mutex
-
-func (self *ReserveActController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}
-
-//获取活动信息
-func (self *ReserveActController) GetAct() {
-
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-
-	cache, _ := self.GetBool("cache")
-
-	uId := self.GetCurrentUserId()
-
-	act := reserve_act_model.GetReserveActById(id, cache)
-
-	var reserveOrder *reserve_act_model.ReserveActOrder
-	if act != nil {
-
-		now := time.Now()
-		//自动开始
-		if act.StartAt.Before(now) && act.StopAt.After(now) {
-			if act.State != reserve_act_model.STATE_UNDERWAY {
-				act.State = reserve_act_model.STATE_UNDERWAY
-				act.Save()
-			}
-		}
-
-		//自动结束
-		if act.StopAt.Before(now) {
-			if act.State != reserve_act_model.STATE_FINISHED {
-				act.State = reserve_act_model.STATE_FINISHED
-				act.Save()
-			}
-		}
-
-		act.StartTime = act.StartAt.Unix()
-		act.StopTime = act.StopAt.Unix()
-		act.ShareImg = self.GetFullImgUrl(act.ShareImg)
-		act.GuideImg = self.GetFullImgUrl(act.GuideImg)
-		act.StateCn = reserve_act_model.STATE_CN_TEXT[act.State]
-		reserveOrder = reserve_act_model.GetValidReserveActOrderByUIdAndAId(uId, act.Id, cache)
-	}
-
-	if reserveOrder != nil && act != nil {
-		act.IsJoined = true
-	}
-
-	type Ret struct {
-		Act *reserve_act_model.ReserveAct `json:"act"`
-	}
-
-	self.Data["json"] = &Ret{Act: act}
-	self.ServeJSON()
-}
-
-//下单
-func (self *ReserveActController) Order() {
-
-	//TODO:手机号码和验证码校验
-
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-
-	cache, _ := self.GetBool("cache")
-
-	orderLock.Lock()
-	defer orderLock.Unlock()
-
-	wxUser := self.GetCurrentWxUser(false)
-	if wxUser == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	wxUId := wxUser.Id
-	user := user_model.GetUserById(wxUser.UserId, false)
-	if user == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-	uId := user.Id
-
-	act := reserve_act_model.GetReserveActById(id, cache)
-	if act == nil {
-		self.ReturnError(403, []string{"actNotExist", "活动不存在"}, "", nil)
-	}
-
-	if act.State != reserve_act_model.STATE_UNDERWAY {
-		self.ReturnError(403, []string{"actNotExist", "活动已结束"}, "", nil)
-	}
-
-	reserveOrder := reserve_act_model.GetValidReserveActOrderByUIdAndAId(uId, act.Id, false)
-
-	if reserveOrder != nil {
-		self.ReturnError(403, []string{"alreadyJoined", "已经参加了"}, "", nil)
-	}
-
-	totalprice := act.JoinAmount
-	paiedPrice := act.JoinAmount
-	var remark string
-	order := new(reserve_act_model.ReserveActOrder).Create(act.Id, totalprice, paiedPrice, uId, wxUId, remark)
-
-	if order == nil {
-		self.ReturnError(403, []string{"orderFailed", "下单失败"}, "", nil)
-	}
-
-	type Ret struct {
-		OrderId string `json:"order_id"`
-	}
-
-	self.Data["json"] = &Ret{OrderId: order.OrderId}
-	self.ServeJSON()
-}
-
-//查看前*名参与者
-func (self *ReserveActController) GetJoiners() {
-
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-
-	page, _ := self.GetInt64("page", 1)
-	perPage, _ := self.GetInt64("per_page", 100)
-	if page <= 0 {
-		page = 1
-	}
-	if perPage <= 0 || perPage > 150 {
-		perPage = 100
-	}
-	cache, _ := self.GetBool("cache", true)
-
-	act := reserve_act_model.GetReserveActById(id, cache)
-	if act == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	if act.State != reserve_act_model.STATE_FINISHED {
-		self.ReturnError(403, []string{"actIsUnderway", "活动尚未结束"}, "", nil)
-	}
-
-	orders := reserve_act_model.GetList(act.Id, page, perPage, cache)
-	count := reserve_act_model.GetListCount(act.Id, cache)
-
-	for i := int64(0); i < int64(len(orders)); i++ {
-
-		//orders[i].PaiedAt = int64(orders[i].PaiedAt / 1e9)
-
-		wxUser := user_model.GetWxUserById(orders[i].WxUserId, true)
-
-		if wxUser != nil {
-			orders[i].WxNickname = wxUser.Nickname
-			orders[i].WxHead = self.GetFullImgUrl(wxUser.Head)
-		}
-		orders[i].Rank = tool.GetAssignLengthStr(((page-1)*perPage + i + 1), 3)
-		orders[i].OrderId = ""
-	}
-
-	type Ret struct {
-		List      []*reserve_act_model.ReserveActOrder `json:"list"`
-		ListCount int64                                `json:"list_count"`
-	}
-
-	self.Data["json"] = &Ret{List: orders, ListCount: count}
-	self.ServeJSON()
-}
-
-//查看当前用户的参与记录
-func (self *ReserveActController) GetCur() {
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	cache, _ := self.GetBool("cache", true)
-
-	act := reserve_act_model.GetReserveActById(id, cache)
-	if act == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	if act.State != reserve_act_model.STATE_FINISHED {
-		self.ReturnError(403, []string{"", "活动尚未结束"}, "", nil)
-	}
-
-	uId := self.GetCurrentUserId()
-
-	order := reserve_act_model.GetValidReserveActOrderByUIdAndAId(uId, act.Id, cache)
-
-	if order != nil {
-
-		//order.PaiedAt = int64(order.PaiedAt / 1e9)
-
-		wxUser := user_model.GetWxUserById(order.WxUserId, true)
-
-		if wxUser != nil {
-			order.WxNickname = wxUser.Nickname
-			order.WxHead = self.GetFullImgUrl(wxUser.Head)
-		}
-
-		orders := reserve_act_model.GetList(act.Id, 1, act.ReturnCount, cache)
-
-		for i := int64(0); i < int64(len(orders)); i++ {
-			if orders[i].UserId == order.UserId {
-				order.Rank = tool.GetAssignLengthStr((i + 1), 3)
-			}
-		}
-
-		if strings.TrimSpace(order.Rank) == "" {
-			order.Rank = "未入围"
-		}
-
-		order.OrderId = ""
-	}
-	type Ret struct {
-		SelfOrder *reserve_act_model.ReserveActOrder `json:"self_order"`
-	}
-
-	self.Data["json"] = &Ret{SelfOrder: order}
-	self.ServeJSON()
-}
-
-//返还差额
-func (self *ReserveActController) ReturnAmount() {
-
-	id, _ := self.GetInt64("id")
-	cache, _ := self.GetBool("cache", false)
-
-	act := reserve_act_model.GetReserveActById(id, cache)
-	if act == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	if act.State != reserve_act_model.STATE_FINISHED {
-		self.ReturnError(403, []string{"", "活动尚未结束"}, "", nil)
-	}
-
-	if act.IsReturned {
-		self.ReturnError(403, []string{"", "活动已经返还差额"}, "", nil)
-	}
-
-	count := reserve_act_model.GetListCount(act.Id, false)
-	orders := reserve_act_model.GetList(act.Id, 1, count, false)
-
-	for i := int64(0); i < int64(len(orders)); i++ {
-
-		rank := i + 1
-		returnAmount := orders[i].TotalPrice
-		if rank <= act.ReturnCount {
-			returnAmount = orders[i].TotalPrice - rank*100
-		}
-
-		if returnAmount < 0 {
-			returnAmount = 1
-		}
-
-		cashBalance := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(orders[i].WxUserId, orders[i].OrderId, balance_model.CASH_SOURCE_RESERVE_ACT_RETURN)
-
-		if cashBalance != nil {
-			continue
-		}
-
-		remark := fmt.Sprintf("%s", act.Title)
-		balance := new(balance_model.CashBalance).Create(orders[i].WxUserId, returnAmount, balance_model.CASH_SOURCE_RESERVE_ACT_RETURN, orders[i].OrderId, remark)
-
-		if balance != nil {
-			orders[i].ReturnedAmount = returnAmount
-			orders[i].Save()
-		}
-
-	}
-	act.IsReturned = true
-	act.Save()
-	self.ServeJSON()
-}

+ 0 - 22
go/gopath/src/fohow.com/apps/controllers/subject_controller/init.go

@@ -1,22 +0,0 @@
-package subject_controller
-
-import (
-	"github.com/astaxie/beego/context"
-	"fohow.com/apps"
-)
-
-var (
-	//以下Action无需登录校验,exceptCheckUserLoginAction = []string{"*"} *代表全部不需要
-	exceptCheckUserLoginAction   = []string{"GetProductSaleSubjectById", "GetList", "Create", "GetMyCodeList"}
-	exceptCheckWxUserLoginAction = []string{"GetList"}
-)
-
-type SubjectController struct {
-	apps.BaseController
-}
-
-func (self *SubjectController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
-	self.BaseController.Init(ctx, controllerName, actionName, app)
-	self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
-	self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
-}

+ 0 - 206
go/gopath/src/fohow.com/apps/controllers/subject_controller/product_sale_subject_controller.go

@@ -1,206 +0,0 @@
-package subject_controller
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"fohow.com/apps"
-	"fohow.com/apps/helpers"
-	"fohow.com/apps/models/order_model"
-	"fohow.com/apps/models/product_model"
-	"fohow.com/apps/models/subject_model"
-	"strconv"
-	"strings"
-	//"time"
-	"fohow.com/apps/models/granary_model"
-	"time"
-)
-
-func (self *SubjectController) GetProductSaleSubjectById() {
-
-	_id := self.Ctx.Input.Param(":id")
-	id, _ := strconv.ParseInt(_id, 10, 64)
-	cache, _ := self.GetBool("useCache")
-
-	if !self.IsWxClient() {
-		url := fmt.Sprintf("%s/notwx", beego.AppConfig.String("MHost"))
-		self.Redirect(url, 302)
-		return
-	}
-
-	//根据id查询专题信息
-	product_sale_subject := subject_model.GetProductSaleSubjectById(id, cache)
-
-	if product_sale_subject == nil {
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	product_sale_subject.BackgroundImg = self.GetFullImgUrl(product_sale_subject.BackgroundImg)
-	product_sale_subject.QrcodeImg = self.GetFullImgUrl(product_sale_subject.QrcodeImg)
-	product_sale_subject.ShareImg = self.GetFullImgUrl(product_sale_subject.ShareImg)
-
-	products := make([]*product_model.Product, 0)
-	if strings.TrimSpace(product_sale_subject.ProductIds) != "" {
-		productIdArray := strings.Split(product_sale_subject.ProductIds, ",")
-		for _, productId := range productIdArray {
-			pId, _ := strconv.ParseInt(productId, 10, 64)
-			product := product_model.GetProductById(pId, cache)
-			if product != nil {
-				product.Cover = product_model.GetCoverByPId(pId, cache)
-				if product_sale_subject.IsPrizeAct {
-					product.SoldCount = order_model.GetSoldCountByPIdAndSId(pId, product_sale_subject.Id, cache)
-				} else {
-					product.SoldCount = order_model.GetSoldCountByPId(pId, cache)
-				}
-				product.SoldCount = product.SoldCount + product.VirtualSoldCount
-
-				//判断剩余数量
-				if product.Ptype == product_model.TYPE_USER_SALE { //代销下单
-					product.LeftCount = granary_model.GetSaleOrderLeftCountByPId(product.Id)
-				} else { //普通下单
-					product.LeftCount = product.Count - product.SoldCount
-				}
-				if product.LeftCount < 0 {
-					product.LeftCount = 0
-				}
-				products = append(products, product)
-			}
-		}
-	}
-	product_sale_subject.Products = products
-
-	//处理绑定关系
-	self.SetWxUserInviter()
-
-	//处理访问明细
-	go product_sale_subject.AddClick()
-	ip := self.Ctx.Input.IP()
-	uId := self.GetCurrentUserId()
-	wxUId := self.GetCurrentWxUserId()
-	doClick(product_sale_subject.Id, uId, wxUId, ip)
-
-	type Ret struct {
-		Subject *subject_model.ProductSaleSubject `json:"subject"`
-	}
-
-	self.Data["json"] = &Ret{Subject: product_sale_subject}
-
-	self.ServeJSON()
-}
-
-// 设置微信用户的邀请人,邀请人记录的也是微信用户ID
-func (self *SubjectController) SetWxUserInviter() {
-
-	ivId, _ := self.GetInt64("wx")
-	currectWxUId := self.GetCurrentWxUserId()
-
-	if currectWxUId != 0 && ivId != 0 {
-		go helpers.SetInviter(currectWxUId, ivId)
-	}
-}
-
-//商品销售专题下单
-func (self *SubjectController) Create() {
-	/*_pid := self.Ctx.Input.Param(":id")
-	pId, _ := strconv.ParseInt(_pid, 10, 64)
-	_subjectId := self.Ctx.Input.Param(":subject_id")
-	subjectId, _ := strconv.ParseInt(_subjectId, 10, 64)
-	count, _ := self.GetInt64("count")
-
-	if count <= 0 {
-		self.ReturnError(403, apps.ParamsError, "", nil)
-	}
-
-	saleSubject := subject_model.GetProductSaleSubjectById(subjectId, false)
-	if saleSubject == nil{
-		self.ReturnError(403, apps.NoExist, "", nil)
-	}
-
-	//若是抽奖性质的,查看是否过了开奖时间
-	if saleSubject.IsPrizeAct && saleSubject.OpenPrizeTime.Unix() <= time.Now().Unix(){
-		self.ReturnError(403, apps.OverOpenTime, "", nil)
-	}
-
-	isContain := false
-	productIds := strings.Split(saleSubject.ProductIds, ",")
-	for _, id := range productIds{
-		_id,_ := strconv.ParseInt(id, 10, 64)
-		if _id == pId{
-			isContain = true
-			break
-		}
-	}
-
-	if !isContain{
-		self.ReturnError(403, apps.ProductIdNotSuit, "", nil)
-	}
-
-	product := product_model.GetProductById(pId, false)
-	if product == nil {
-		self.ReturnError(403, apps.ProductNotExist, "", nil)
-	}
-
-	//user := self.GetCurrentUser(true)
-	uId := self.GetCurrentUserId()
-	wxUId := self.GetCurrentWxUserId()
-	//加入限购逻辑
-	if product.PurchaseLimitCount > 0 {
-		if product.PurchaseLimitCount < count {
-			self.ReturnError(403, []string{apps.OverLimitCount[0], fmt.Sprintf("该商品限购%d件", product.PurchaseLimitCount)}, "", nil)
-		} else {
-			purchaseTotalCount := order_model.GetOrderCountByPIdAndWxUId(pId, wxUId)
-			//历史已经买够到限购数量了
-			if product.PurchaseLimitCount <= purchaseTotalCount {
-				self.ReturnError(403, []string{apps.PurchasedReachLimit[0], fmt.Sprintf("该商品限购%d件", product.PurchaseLimitCount)}, "", nil)
-			}
-			//历史没买够数量,但是历史总数+想购买的数量 超过限购数量
-			if product.PurchaseLimitCount < (purchaseTotalCount + count) {
-				canBuyCount := product.PurchaseLimitCount - purchaseTotalCount
-				self.ReturnError(403, []string{apps.PurchasedReachLimit[0], fmt.Sprintf("您还可以购买%d件", canBuyCount)}, "", nil)
-			}
-		}
-	}
-
-	product.SoldCount = order_model.GetSoldCountByPId(product.Id, false)
-	beego.BeeLogger.Warn("check if product stock not enough,product_count:%d,sold_count:%d,order_count:%d", product.Count, product.SoldCount, count)
-	if product.Count-product.SoldCount < count {
-		self.ReturnError(403, apps.ProductStockNotEnough, "", nil)
-	}
-
-	totalPrice := product.Price * count
-	if wxUId == 12 {
-		totalPrice = 1
-	}
-	order := new(order_model.Order).Create(wxUId, uId, product.Id, count,
-		totalPrice, product.BuyPrice*count)
-
-	if order != nil {
-		//是否参与专题抽奖
-		if saleSubject.IsPrizeAct{
-			order.IsJoinSubjectPrize = true
-		}
-		//记录专题id
-		order.ProductSaleSubjectId = subjectId
-		order.Save()
-	}
-
-	type Order struct {
-		OrderId string `json:"order_id"`
-	}
-
-	self.Data["json"] = &Order{OrderId: order.OrderId}*/
-	self.ServeJSON()
-}
-
-func doClick(sId, uId, wxUId int64, ip string) int64 {
-	scfu := subject_model.GetCfUserByWxUIdAndSubjectId(sId, wxUId)
-	if scfu == nil {
-		scfu = new(subject_model.SubjectClickFromUser).Create(sId, uId, wxUId, ip)
-	}
-	if scfu != nil {
-		scfu.ClickTimes = scfu.ClickTimes + 1
-		scfu.ClickLastTime = time.Now()
-		go scfu.Save()
-		return scfu.Id
-	}
-	return 0
-}

+ 0 - 61
go/gopath/src/fohow.com/apps/controllers/subject_controller/subject_sale_code_controller.go

@@ -1,61 +0,0 @@
-package subject_controller
-
-import (
-	"fohow.com/apps/models/subject_model"
-
-	"fohow.com/apps/models/user_model"
-	"fohow.com/libs/tool"
-	"strconv"
-)
-
-func (self *SubjectController) GetList() {
-
-	_subjectId := self.Ctx.Input.Param(":id")
-	subjectId, _ := strconv.ParseInt(_subjectId, 10, 64)
-	page, _ := self.GetInt64("page")
-	perpage, _ := self.GetInt64("per_page")
-	cache, _ := self.GetBool("useCache", true)
-
-	type Ret struct {
-		JoinPrizeNumber  []*subject_model.SaleDrawCode `json:"list"`
-		PrizeNumberCount int64                         `json:"list_count"`
-	}
-
-	joinList := subject_model.GetSaleDrawCodeListBySubjectId(subjectId, page, perpage, cache)
-	for _, item := range joinList {
-		wxUser := user_model.GetWxUserById(item.WxUserId, false)
-		if wxUser != nil {
-			item.WxUserNickname = wxUser.Nickname
-			item.WxUserHead = self.GetFullImgUrl(wxUser.Head)
-		}
-		item.CodeFormat = tool.GetAssignLengthStr(item.Code, 6)
-	}
-
-	list_count := subject_model.GetSaleDrawCodeListCount(subjectId, cache)
-
-	self.Data["json"] = &Ret{JoinPrizeNumber: joinList, PrizeNumberCount: list_count}
-	self.ServeJSON()
-
-}
-
-func (self *SubjectController) GetMyCodeList() {
-
-	_subjectId := self.Ctx.Input.Param(":id")
-	subjectId, _ := strconv.ParseInt(_subjectId, 10, 64)
-
-	type Ret struct {
-		CurPrizeNumbers []string `json:"my_numbers"`
-	}
-
-	wxUId := self.GetCurrentWxUserId()
-
-	var curPrizeNumbers []string
-	curList := subject_model.GetSaleDrawCodesBySubjectIdAndWxUid(subjectId, wxUId, false)
-	for _, item := range curList {
-		curPrizeNumbers = append(curPrizeNumbers, tool.GetAssignLengthStr(item.Code, 6))
-	}
-
-	self.Data["json"] = &Ret{CurPrizeNumbers: curPrizeNumbers}
-	self.ServeJSON()
-
-}

+ 0 - 176
go/gopath/src/fohow.com/apps/models/cf_model/cf.go

@@ -1,176 +0,0 @@
-package cf_model
-
-import (
-	"fmt"
-	// "strings"
-	"time"
-
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	// "fohow.com/apps/shop"
-	// "fohow.com/cache"
-	// "fohow.com/apps/models/user_model"
-	// "fohow.com/apps/models/vas_model"
-	// "fohow.com/cache"
-	// "fohow.com/libs/wx_mp"
-	"fohow.com/cache"
-)
-
-const (
-	click_from_channels_tablename = "click_from_channels"
-	click_from_users_tablename    = "click_from_users"
-)
-
-type ClickFromChannel struct {
-	Id         int64  `orm:"column(id);pk"                                  json:"id,omitempty"`          // int(11)
-	Url        string `orm:"column(url)"                                    json:"url,omitempty"`         // text
-	Channel    string `orm:"column(channel)"                                json:"channel,omitempty"`     // varchar(255)
-	ClickTimes int64  `orm:"column(click_times)"                            json:"click_times,omitempty"` // int(11)
-	InviterId  int64  `orm:"column(inviter_id)"                             json:"inviter_id"`            // int(11)
-	//belongs_to :parent_signup_channel,:foreign_key => :sign_up_channel_id
-	SignUpChannelId int64 `orm:"column(sign_up_channel_id)"                             json:"sign_up_channel_id"` // int(11)
-	//belongs_to :channel_qrcode,:foreign_key => :channel_qrcode_id
-	ChannelQrcodeId int64     `orm:"column(channel_qrcode_id)"                             json:"channel_qrcode_id"` // int(11)
-	CreatedAt       time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"created_at,omitempty"`     // datetime
-	UpdatedAt       time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"updated_at,omitempty"`     // datetime
-}
-
-func (self *ClickFromChannel) TableName() string {
-	return click_from_channels_tablename
-}
-
-type ClickFromUser struct {
-	Id                 int64     `orm:"column(id);pk"                                       json:"id,omitempty"`                    // int(11)
-	UserId             int64     `orm:"column(user_id);null"                                json:"user_id,omitempty"`               // int(11)
-	WxUserId           int64     `orm:"column(wx_user_id);null"                                json:"wx_user_id,omitempty"`         // int(11)
-	Ip                 string    `orm:"column(ip);null"                                     json:"ip,omitempty"`                    // varchar(255)
-	ClickTimes         int64     `orm:"column(click_times);null"                            json:"click_times,omitempty"`           // int(11)
-	ClickLastTime      time.Time `orm:"column(click_last_time);null;type(datetime)"         json:"click_last_time,omitempty"`       // datetime
-	ClickFromChannelId int64     `orm:"column(click_from_channel_id)"                       json:"click_from_channel_id,omitempty"` // int(11)
-	CreatedAt          time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"created_at,omitempty"`            // datetime
-	UpdatedAt          time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"updated_at,omitempty"`            // datetime}
-}
-
-func (self *ClickFromUser) TableName() string {
-	return click_from_users_tablename
-}
-
-func (self *ClickFromUser) Create(cfcId, uId, wxUId int64, ip string) (item *ClickFromUser) {
-	item = &ClickFromUser{
-		UserId:             uId,
-		WxUserId:           wxUId,
-		Ip:                 ip,
-		ClickFromChannelId: cfcId}
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		beego.BeeLogger.Error("Insert ClickFromUser err=[%s]", err)
-		return nil
-	}
-	item.Id = id
-	return item
-}
-func GetCfcUserById(id int64) *ClickFromUser {
-	if id == 0 {
-		return nil
-	}
-	item := new(ClickFromUser)
-	qs := orm.NewOrm().QueryTable(item)
-	qs = qs.Filter("id", id)
-	if err := qs.Limit(1).One(item); err != nil {
-		// beego.BeeLogger.Error("get ClickFromUser by user_id=[%d] err=[%s]", uId, err)
-		return nil
-	}
-	return item
-}
-
-func GetCfcUserByUId(cfcId, uId int64) *ClickFromUser {
-	if uId == 0 {
-		return nil
-	}
-	item := new(ClickFromUser)
-	qs := orm.NewOrm().QueryTable(item)
-	qs = qs.Filter("click_from_channel_id", cfcId).Filter("user_id", uId)
-	if err := qs.Limit(1).One(item); err != nil {
-		// beego.BeeLogger.Error("get ClickFromUser by user_id=[%d] err=[%s]", uId, err)
-		return nil
-	}
-	return item
-}
-
-func GetCfcUserByWxUId(cfcId, wxUId int64) *ClickFromUser {
-	if wxUId == 0 {
-		return nil
-	}
-	item := new(ClickFromUser)
-	qs := orm.NewOrm().QueryTable(item)
-	qs = qs.Filter("click_from_channel_id", cfcId).Filter("wx_user_id", wxUId)
-	if err := qs.Limit(1).One(item); err != nil {
-		// beego.BeeLogger.Error("get ClickFromUser by user_id=[%d] err=[%s]", uId, err)
-		return nil
-	}
-	return item
-}
-
-func GetFirstCfcUserByWxUId(wxUId int64) *ClickFromUser {
-	if wxUId == 0 {
-		return nil
-	}
-	item := new(ClickFromUser)
-	qs := orm.NewOrm().QueryTable(item)
-	qs = qs.Filter("wx_user_id", wxUId)
-	if err := qs.OrderBy("id").Limit(1).One(item); err != nil {
-		// beego.BeeLogger.Error("get ClickFromUser by user_id=[%d] err=[%s]", uId, err)
-		return nil
-	}
-	return item
-}
-
-func GetCfcByIP(cfcId int64, ip string) *ClickFromUser {
-	if ip == "" {
-		return nil
-	}
-	item := new(ClickFromUser)
-	qs := orm.NewOrm().QueryTable(item)
-	qs = qs.Filter("click_from_channel_id", cfcId).Filter("ip", ip)
-	if err := qs.Limit(1).One(item); err != nil {
-		// beego.BeeLogger.Error("get ClickFromUser by user_id=[%d] err=[%s]", uId, err)
-		return nil
-	}
-	return item
-}
-
-func (self *ClickFromUser) Save() bool {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save ClickFromUser id=[%d] .err=[%s]", self.Id, err)
-		return false
-	}
-	return true
-}
-
-func (self *ClickFromChannel) Save() bool {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save ClickFromChannel id=[%d] .err=[%s]", self.Id, err)
-		return false
-	}
-	return true
-}
-
-func GetCfc(id int64, useCache bool) *ClickFromChannel {
-	k := fmt.Sprintf("cf_model.GetCfc(%d)", id)
-	if useCache {
-		if v, ok := cache.Cache.Get(k).(*ClickFromChannel); ok {
-			return v
-		}
-	}
-
-	item := new(ClickFromChannel)
-	if err := orm.NewOrm().QueryTable(item).Filter("id", id).Limit(1).One(item); err != nil {
-		beego.BeeLogger.Error("get ClickFromChannel  by id=[%d] err=[%s]", id, err)
-		return nil
-	} else {
-		if useCache {
-			cache.Cache.Put(k, item, 60*time.Minute)
-		}
-	}
-	return item
-}

+ 0 - 10
go/gopath/src/fohow.com/apps/models/cf_model/init.go

@@ -1,10 +0,0 @@
-//渠道统计
-package cf_model
-
-import (
-	"github.com/astaxie/beego/orm"
-)
-
-func init() {
-	orm.RegisterModel(new(ClickFromChannel), new(ClickFromUser))
-}

+ 0 - 410
go/gopath/src/fohow.com/apps/models/chunjie_model/chunjie.go

@@ -1,410 +0,0 @@
-package chunjie_model
-
-import (
-	"fmt"
-	"time"
-
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"fohow.com/cache"
-	"strconv"
-)
-
-const (
-	chunjie_config_tablename      = "chunjie_configs"
-	chunjie_participant_tablename = "chunjie_participants"
-	chunjie_lucky_money_tablename = "chunjie_lucky_moneys"
-	SELF_OPEN_MONEY_SOURCE        = "SELF_OPEN"
-	INVITE_REWARD_MONEY_SOURCE    = "INVITE_REWARD"
-	KEY_CJHB_LAST_INSERT_ID       = "KEY_CJHB_LAST_INSERT_ID"
-)
-
-type ChunjieConfig struct {
-	Id             int64     `orm:"column(id);pk"                                       json:"id"`    // int(11)
-	Title          string    `orm:"column(title)"                                       json:"title"` // varchar(255)
-	Rule           string    `orm:"column(rule);null"                                   json:"rule"`  // text
-	AdJson         string    `orm:"column(ad_json);null"                                json:"ad_json"`
-	StartTime      time.Time `orm:"column(start_time);type(datetime)"                   json:"start_time"` // datetime
-	StopTime       time.Time `orm:"column(stop_time);type(datetime)"                    json:"stop_time"`  // datetime
-	TotalBonus     int64     `orm:"column(total_bonus);null"                            json:"-"`          // int(11)
-	State          int64     `orm:"column(state);null"                                  json:"-"`          // tinyint(4)
-	LuckyNumbers   string    `orm:"column(lucky_numbers);null"                          json:"-"`          // int(11)
-	BigNewBonusMin int64     `orm:"column(big_new_bonus_min);null"                          json:"-"`      // int(11)
-	BigNewBonusMax int64     `orm:"column(big_new_bonus_max);null"                          json:"-"`      // int(11)
-	BigOldBonusMin int64     `orm:"column(big_old_bonus_min);null"                          json:"-"`      // int(11)
-	BigOldBonusMax int64     `orm:"column(big_old_bonus_max);null"                          json:"-"`      // int(11)
-
-	SmallNewBonusMin int64 `orm:"column(small_new_bonus_min);null"                        json:"-"` // int(11)
-	SmallNewBonusMax int64 `orm:"column(small_new_bonus_max);null"                        json:"-"` // int(11)
-	SmallOldBonusMin int64 `orm:"column(small_old_bonus_min);null"                        json:"-"` // int(11)
-	SmallOldBonusMax int64 `orm:"column(small_old_bonus_max);null"                        json:"-"` // int(11)
-
-	RewardProportionMin int64 `orm:"column(reward_proportion_min);null"                       json:"-"` // int(11)
-	RewardProportionMax int64 `orm:"column(reward_proportion_max);null"                       json:"-"` // int(11)
-	BonusLimit          int64 `orm:"column(bonus_limit);null"                       json:"-"`           // int(11)
-
-	CreatedAt time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"` // datetime
-	UpdatedAt time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"` // datetime
-}
-type ChunjieParticipant struct {
-	Id          int64     `orm:"column(id);pk"                                       json:"id"`            // int(11)
-	ConfigId    int64     `orm:"column(config_id)"                                   json:"config_id"`     //int(11)
-	WxUId       int64     `orm:"column(wx_uid)"                                      json:"wx_uid"`        // int(11)
-	InviteWxUId int64     `orm:"column(invite_wx_uid)"                               json:"invite_wx_uid"` //int(11)
-	Ip          string    `orm:"column(ip)"                                          json:"-"`             //varchar(255)
-	IsNew       int64     `orm:"column(is_new);"                                     json:"-"`             // tinyint(4)
-	CreatedAt   time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`             // datetime
-	UpdatedAt   time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`             // datetime
-}
-type ChunjieLuckyMoney struct {
-	Id                int64     `orm:"column(id);pk"                                       json:"id"`            // int(11)
-	ConfigId          int64     `orm:"column(config_id)"                                   json:"config_id"`     //int(11)
-	WxUId             int64     `orm:"column(wx_uid)"                                      json:"wx_uid"`        // int(11)
-	MoneySource       string    `orm:"column(money_source)"                                json:"-"`             //varchar(255) enum(SELF_OPEN,INVITE_REWARD)
-	MoneyType         int64     `orm:"column(money_type);"                                 json:"money_type"`    // tinyint(4)
-	ReceiveBonus      int64     `orm:"column(receive_bonus)"                               json:"receive_bonus"` //int(11)
-	RelateId          int64     `orm:"column(relate_id)"                                   json:"-"`             //int(11)
-	IsSync25          int64     `orm:"column(is_sync25)"                                   json:"-"`             //int(11)
-	CreatedAt         time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`             // datetime
-	UpdatedAt         time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`             // datetime
-	InviteRewardBonus int64     `orm:"-"                                                   json:"invite_reward_bonus"`
-}
-
-type LuckyMoneyItem struct {
-	WxUId             int64  `orm:"column(wx_uid)"                                      json:"wx_uid"`        // int(11)
-	MoneySource       string `orm:"column(money_source)"                                json:"-"`             //varchar(255) enum(SELF_OPEN,INVITE_REWARD)
-	MoneyType         int64  `orm:"column(money_type);"                                 json:"money_type"`    // tinyint(4)
-	ReceiveBonus      int64  `orm:"column(receive_bonus)"                               json:"receive_bonus"` //int(11)
-	RelateId          int64  `orm:"column(relate_id)"                                   json:"-"`             //int(11) //实际存储的是InviteRewardBonus
-	Rank              int64  `orm:"column(rank)"                                        json:"rank"`          //参与排名
-	InviteRewardBonus int64  `orm:"-"                                                   json:"invite_reward_bonus"`
-}
-
-func (self *ChunjieConfig) TableName() string {
-	return chunjie_config_tablename
-}
-
-func (self *ChunjieParticipant) TableName() string {
-	return chunjie_participant_tablename
-}
-
-func (self *ChunjieLuckyMoney) TableName() string {
-	return chunjie_lucky_money_tablename
-}
-
-func GetChunjieParticipantLastInsertIdCacheKey(configId int64) (cacheKey string) {
-	cacheKey = fmt.Sprintf("%s.%d", KEY_CJHB_LAST_INSERT_ID, configId)
-	return
-}
-
-func (self *ChunjieParticipant) Create(cId, wxUId, inviterWxUId, isNew int64, ip string) *ChunjieParticipant {
-	item := &ChunjieParticipant{
-		ConfigId:    cId,
-		WxUId:       wxUId,
-		InviteWxUId: inviterWxUId,
-		IsNew:       isNew,
-		Ip:          ip,
-	}
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		beego.BeeLogger.Error("insert ChunjieParticipant err=[%s]", err)
-		return nil
-
-	} else {
-		item.Id = id
-		return item
-	}
-
-	//
-	//if _, id, err := orm.NewOrm().ReadOrCreate(&item, "WxUId"); err != nil {
-	//	beego.BeeLogger.Error("insert ChunjieParticipant err=[%s]", err)
-	//	return nil
-	//} else {
-	//	item.Id = id
-	//	return item
-	//}
-
-}
-
-func (self *ChunjieLuckyMoney) Create(cId, wxUId, moneyType, receiveBonus, relateId int64, moneySource string) *ChunjieLuckyMoney {
-	item := &ChunjieLuckyMoney{
-		ConfigId:     cId,
-		WxUId:        wxUId,
-		MoneySource:  moneySource,
-		MoneyType:    moneyType,
-		RelateId:     relateId,
-		ReceiveBonus: receiveBonus,
-	}
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		beego.BeeLogger.Error("insert ChunjieLuckyMoney err=[%s]", err)
-		return nil
-	}
-	item.Id = id
-	// 设置当前最新id的缓存
-	cache.Cache.Put(GetChunjieParticipantLastInsertIdCacheKey(item.ConfigId), item.Id, 10*time.Minute)
-	return item
-}
-
-//根据主键获取活动信息
-func GetConfigById(configId int64, useCache bool) *ChunjieConfig {
-	k := fmt.Sprintf("chunjie_model.GetConfigById[%d]", configId)
-	if useCache {
-		if ret, ok := cache.Cache.Get(k).(*ChunjieConfig); ok {
-			return ret
-		}
-	}
-	config := new(ChunjieConfig)
-	if err := orm.NewOrm().QueryTable(config).Filter("id", configId).Limit(1).One(config); err != nil {
-		beego.BeeLogger.Error("chunjie_model.GetConfigById[%d] err=[%s]", configId, err)
-		return nil
-	}
-	if useCache {
-		cache.Cache.Put(k, config, 5*time.Minute)
-	}
-
-	return config
-}
-
-//根据活动主键和微信用户主键获取活动参与记录
-func GetParticipantByCIdAndWUId(configId, wxUId int64, useCache bool) *ChunjieParticipant {
-	k := fmt.Sprintf("chunjie_model.GetParticipantByCIdAndWUId[%d,%d]", configId, wxUId)
-	if useCache {
-		if ret, ok := cache.Cache.Get(k).(*ChunjieParticipant); ok {
-			return ret
-		}
-	}
-	participant := new(ChunjieParticipant)
-	if err := orm.NewOrm().QueryTable(participant).Filter("config_id", configId).Filter("wx_uid", wxUId).Limit(1).One(participant); err != nil {
-		beego.BeeLogger.Info("chunjie_model.GetParticipantByCIdAndWUId[%d,%d] err=[%s]", configId, wxUId, err)
-		return nil
-	}
-	if useCache && participant != nil && participant.Id != 0 {
-		cache.Cache.Put(k, participant, 5*time.Minute)
-	}
-	return participant
-}
-
-// 在创建ChunjieParticipant记录的时候,把 last_insert_id 写到缓存。直接读取缓存即可
-// 如缓存找不到,再查数据库
-func GetLastInsertId(configId int64) (lastInsertId int64) {
-	cacheKey := GetChunjieParticipantLastInsertIdCacheKey(configId)
-	lastInsertId, ok := cache.Cache.Get(cacheKey).(int64)
-	if !ok || lastInsertId <= 0 {
-		beego.BeeLogger.Error("Get chunjie_participants lastInsertId From Db")
-		// 从数据库获取并缓存
-		var maps []orm.Params
-		orm.NewOrm().Raw("SELECT COUNT(*) AS count FROM chunjie_participants WHERE `config_id`=?;", configId).Values(&maps)
-
-		beego.BeeLogger.Error("Get chunjie_participants lastInsertId From Db", maps[0]["count"])
-		lastInsertId, _ = strconv.ParseInt(maps[0]["count"].(string), 10, 64)
-		cache.Cache.Put(cacheKey, lastInsertId, 10*time.Second)
-	}
-	return lastInsertId
-}
-
-//获取自己红包总金额
-func GetAllReceiveBonus(configId, wxUId int64, useCache bool) int64 {
-	k := fmt.Sprintf("chunjie_model.GetSelfReceiveBonus[%d,%d]", configId, wxUId)
-	if useCache {
-		if ret, ok := cache.Cache.Get(k).(int64); ok {
-			return ret
-		}
-	}
-	type Ret struct {
-		Total int64
-	}
-	ret := &Ret{}
-	sql := fmt.Sprintf(" select sum(receive_bonus) as total from %s where config_id = ? and wx_uid = ? ", chunjie_lucky_money_tablename)
-	o := orm.NewOrm()
-
-	err := o.Raw(sql, configId, wxUId).QueryRow(ret)
-
-	if err != nil {
-		beego.BeeLogger.Error("chunjie_model.GetSelfReceiveBonus[%d,%d] err=[%s]", configId, wxUId, err)
-		return 0
-	}
-
-	if useCache && ret.Total > 0 {
-		if err := cache.Cache.Put(k, ret.Total, 10*time.Minute); err != nil {
-			beego.BeeLogger.Debug("chunjie_model.GetSelfReceiveBonus[%d,%d] err=[%s]", configId, wxUId, err)
-		}
-	}
-	return ret.Total
-}
-
-//是否已经打开领取红包
-func IsJoinBefore(configId, wxUId int64, useCache bool) bool {
-	k := fmt.Sprintf("chunjie_model.IsJoinBefore[%d,%d]", configId, wxUId)
-	if useCache {
-		if ret, ok := cache.Cache.Get(k).(bool); ok {
-			return ret
-		}
-	}
-	luckyMoney := new(ChunjieLuckyMoney)
-	qs := orm.NewOrm().QueryTable(luckyMoney)
-	qs = qs.Filter("config_id", configId).Filter("wx_uid", wxUId).Filter("money_source", SELF_OPEN_MONEY_SOURCE)
-	count, _ := qs.Count()
-	if useCache && count > 0 { // 参与过的才缓存,避免因为程序中断,导致在缓存时间内可以重复领取
-		if err := cache.Cache.Put(k, count > 0, 60*time.Minute); err != nil {
-			beego.BeeLogger.Debug("chunjie_model.IsJoinBefore[%d,%d] err=[%s]", configId, wxUId, err)
-		}
-	}
-	return count > 0
-}
-
-//根据活动id和微信用户id查询排位记录
-func GetLuckyMoneyItemByCIdAndWxUId(configId, wxUId int64, useCache bool) *LuckyMoneyItem {
-	k := fmt.Sprintf("chunjie_model.GetLuckyMoneyItemByCIdAndWxUId[%d,%d]", configId, wxUId)
-	if useCache {
-		if ret, ok := cache.Cache.Get(k).(*LuckyMoneyItem); ok {
-			return ret
-		}
-	}
-	luckyMonyItem := new(LuckyMoneyItem)
-	sql := fmt.Sprintf(" SELECT cp.wx_uid,clm.money_source,clm.money_type,clm.receive_bonus,clm.relate_id,cp.id as rank FROM %s cp LEFT JOIN %s clm on clm.wx_uid = cp.wx_uid WHERE cp.wx_uid = ? AND cp.config_id = ? AND (clm.money_source = 'SELF_OPEN' or clm.money_source is null) LIMIT 1 ", chunjie_participant_tablename, chunjie_lucky_money_tablename)
-	// SELECT cp.wx_uid,clm.money_source,clm.money_type,clm.receive_bonus,clm.relate_id,cp.id as rank FROM chunjie_participants cp LEFT JOIN chunjie_lucky_moneys clm on clm.wx_uid = cp.wx_uid WHERE cp.wx_uid = 24 AND cp.config_id = 1 AND (clm.money_source = 'SELF_OPEN' or clm.money_source is null) LIMIT 1
-
-	o := orm.NewOrm()
-	var list []*LuckyMoneyItem
-	_, err := o.Raw(sql, wxUId, configId).QueryRows(&list)
-	if err != nil {
-		beego.BeeLogger.Error("chunjie_model.GetLuckyMoneyItemByCIdAndWxUId[%d,%d] err=[%s]", configId, wxUId, err)
-		return nil
-	}
-
-	if list != nil && len(list) > 0 {
-		luckyMonyItem = list[0]
-	} else {
-		luckyMonyItem = nil
-	}
-
-	if useCache && luckyMonyItem != nil && luckyMonyItem.ReceiveBonus != 0 {
-		if err := cache.Cache.Put(k, luckyMonyItem, 5*time.Minute); err != nil {
-			beego.BeeLogger.Debug("chunjie_model.GetLuckyMoneyItemByCIdAndWxUId[%d,%d] err=[%s]", configId, wxUId, err)
-		}
-	}
-
-	return luckyMonyItem
-}
-
-//获取邀请者红包排位记录列表  wxInviterId邀请人微信id
-func GetInviteLuckyMoneyList(configId, wxInviterId, page, perPage int64, useCache bool) (list []*LuckyMoneyItem) {
-	startIndex := (page - 1) * perPage
-	if page == 1 {
-		perPage -= 1
-	} else {
-		startIndex -= 1
-	}
-
-	var _list []*LuckyMoneyItem
-	sql := fmt.Sprintf(" SELECT cp.wx_uid,clm.money_source,clm.money_type,clm.receive_bonus,clm.relate_id,cp.id as rank FROM %s cp LEFT JOIN %s clm on clm.wx_uid = cp.wx_uid WHERE cp.invite_wx_uid = ? AND cp.config_id = ? AND (clm.money_source = 'SELF_OPEN' or clm.money_source is null) ORDER BY rank limit %d,%d", chunjie_participant_tablename, chunjie_lucky_money_tablename, startIndex, perPage)
-	// SELECT cp.wx_uid,clm.money_source,clm.money_type,clm.receive_bonus,clm.relate_id,cp.id as rank FROM chunjie_participants cp LEFT JOIN chunjie_lucky_moneys clm on clm.wx_uid = cp.wx_uid WHERE cp.invite_wx_uid = 17 AND cp.config_id = 1 AND (clm.money_source = 'SELF_OPEN' or clm.money_source is null) ORDER BY rank
-
-	o := orm.NewOrm()
-	_, err := o.Raw(sql, wxInviterId, configId).QueryRows(&_list)
-	if err != nil {
-		beego.BeeLogger.Error("chunjie_model.GetInviteLuckyMoneyList[%d,%d,%d,%d] err=[%s]", configId, wxInviterId, page, perPage, err)
-		return nil
-	}
-
-	if page == 1 {
-		selfLuckyMoney := GetLuckyMoneyItemByCIdAndWxUId(configId, wxInviterId, useCache)
-
-		if selfLuckyMoney == nil {
-			list = _list
-		} else {
-			list = append(list, selfLuckyMoney)
-			if _list != nil && len(_list) > 0 {
-				for _, item := range _list {
-					list = append(list, item)
-				}
-			}
-		}
-
-	} else {
-		list = _list
-	}
-	return list
-}
-func GetInviteLuckyMoneyListCount(configId, wxInviterId int64, useCache bool) int64 {
-	count := int64(0)
-	sql := fmt.Sprintf(" select * from %s cp where cp.invite_wx_uid = ? and cp.config_id = ?", chunjie_participant_tablename)
-
-	o := orm.NewOrm()
-	var list []*ChunjieParticipant
-	_, err := o.Raw(sql, wxInviterId, configId).QueryRows(&list)
-	if err != nil {
-		beego.BeeLogger.Error("chunjie_model.GetInviteLuckyMoneyListCount[%d,%d] err=[%s]", configId, wxInviterId, err)
-		return int64(0)
-	}
-	count = int64(len(list))
-
-	selfLuckyMoney := GetLuckyMoneyItemByCIdAndWxUId(configId, wxInviterId, useCache)
-	if selfLuckyMoney == nil {
-		return count
-	}
-	count += int64(1)
-
-	return count
-}
-
-//获取领取者红包记录列表
-func GetReceiveLuckyMoneyList(configId, page, perPage int64, useCache bool) (list []*LuckyMoneyItem) {
-
-	startIndex := (page - 1) * perPage
-
-	sql := fmt.Sprintf(" SELECT cp.wx_uid,clm.money_source,clm.money_type,clm.receive_bonus,clm.relate_id,cp.id as rank FROM %s cp LEFT JOIN %s clm on clm.wx_uid = cp.wx_uid WHERE cp.config_id = ? AND (clm.money_source = 'SELF_OPEN' or clm.money_source is null) ORDER BY rank desc limit %d,%d", chunjie_participant_tablename, chunjie_lucky_money_tablename, startIndex, perPage)
-	// SELECT clm.wx_uid,clm.money_source,clm.money_type,clm.receive_bonus,clm.relate_id,cp.id as rank FROM chunjie_participants cp LEFT JOIN chunjie_lucky_moneys clm on clm.wx_uid = cp.wx_uid WHERE cp.config_id = 1 AND (clm.money_source = 'SELF_OPEN' or clm.money_source is null) ORDER BY rank
-
-	o := orm.NewOrm()
-	_, err := o.Raw(sql, configId).QueryRows(&list)
-	if err != nil {
-		beego.BeeLogger.Error("chunjie_model.GetReceiveLuckyMoneyList[%d,%d,%d] err=[%s]", configId, page, perPage, err)
-		return nil
-	}
-
-	return list
-}
-func GetReceiveLuckyMoneyListCount(configId int64, useCache bool) int64 {
-	participants := new(ChunjieParticipant)
-	qs := orm.NewOrm().QueryTable(participants)
-	qs = qs.Filter("config_id", configId)
-
-	count, err := qs.Count()
-	if err != nil {
-		beego.BeeLogger.Error("chunjie_model.GetReceiveLuckyMoneyList[%d] err=[%s]", configId, err)
-		return 0
-	}
-	return count
-}
-
-func GetTotalGiveOutMoneyByConfigId(configId int64, useCache bool) int64 {
-	k := fmt.Sprintf("chunjie_model.GetTotalGiveOutMoneyByConfigId[%d]", configId)
-	if useCache {
-
-		if ret, ok := cache.Cache.Get(k).(int64); ok {
-			return ret
-		}
-	}
-	type Ret struct {
-		Total int64
-	}
-	ret := &Ret{}
-	sql := fmt.Sprintf(" select sum(receive_bonus) as total from %s where config_id = ? ", chunjie_lucky_money_tablename)
-	o := orm.NewOrm()
-
-	err := o.Raw(sql, configId).QueryRow(ret)
-
-	if err != nil {
-		beego.BeeLogger.Error("chunjie_model.GetTotalGiveOutMoneyByConfigId[%d] err=[%s]", configId, err)
-		return 0
-	}
-
-	if useCache && ret.Total > 0 {
-		if err := cache.Cache.Put(k, ret.Total, 1*time.Minute); err != nil {
-			beego.BeeLogger.Debug("chunjie_model.GetTotalGiveOutMoneyByConfigId[%d] err=[%s]", configId, err)
-		}
-	}
-	return ret.Total
-}

+ 0 - 11
go/gopath/src/fohow.com/apps/models/chunjie_model/init.go

@@ -1,11 +0,0 @@
-package chunjie_model
-
-import (
-	"github.com/astaxie/beego/orm"
-)
-
-func init() {
-	orm.RegisterModel(new(ChunjieConfig),
-		new(ChunjieParticipant),
-		new(ChunjieLuckyMoney))
-}

+ 0 - 61
go/gopath/src/fohow.com/apps/models/click_model/click_model.go

@@ -1,61 +0,0 @@
-package click_model
-
-import (
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"time"
-)
-
-const (
-	click_infos_tablename = "click_infos"
-)
-
-type ClickInfo struct {
-	Id           int64     `orm:"column(id);pk"                                  json:"id"`            // int(11)
-	ClickCode    string    `orm:"column(click_code)"                             json:"click_code"`    // varchar(255)
-	RelateId     string    `orm:"column(relate_id)"                              json:"relate_id"`     // varchar(255)
-	RelateParent string    `orm:"column(relate_parent)"                          json:"relate_parent"` // varchar(255)
-	WxUserId     int64     `orm:"column(wx_user_id);null"                           json:"wx_user_id"` // int(11)
-	ClickTimes   int64     `orm:"column(click_times)"                            json:"click_times"`   // int(11)
-	CreatedAt    time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"-"`             // datetime
-	UpdatedAt    time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"-"`             // datetime
-}
-
-func (self *ClickInfo) TableName() string {
-	return click_infos_tablename
-}
-
-func (self *ClickInfo) Insert(clickCode, relateId, relateParent string, wxUserId int64) *ClickInfo {
-	info := &ClickInfo{
-		ClickCode:    clickCode,
-		RelateId:     relateId,
-		RelateParent: relateParent,
-		WxUserId:     wxUserId,
-		ClickTimes:   1}
-	id, err := orm.NewOrm().Insert(info)
-	if err != nil {
-		beego.BeeLogger.Error("insert share_info err=[%s],cc=%s, ri=%s, rp=%s, uId=%d", err, clickCode, relateId, relateParent, wxUserId)
-		return nil
-	} else {
-		info.Id = id
-	}
-	return info
-}
-
-func (self *ClickInfo) Save() error {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save ClickInfo id=[%d] .err=[%s]", self.Id, err)
-		return err
-	}
-	return nil
-}
-
-func GetClickInfoByWxUIdAndRelateCodeAndRelateId(clickCode, relateId, relateParent string, wxUId int64) *ClickInfo {
-	item := new(ClickInfo)
-	o := orm.NewOrm()
-	err := o.QueryTable(item).Filter("click_code", clickCode).Filter("relate_id", relateId).Filter("relate_parent", relateParent).Filter("wx_user_id", wxUId).Limit(1).One(item)
-	if err != nil {
-		return nil
-	}
-	return item
-}

+ 0 - 7
go/gopath/src/fohow.com/apps/models/click_model/init.go

@@ -1,7 +0,0 @@
-package click_model
-
-import "github.com/astaxie/beego/orm"
-
-func init() {
-	orm.RegisterModel(new(ClickInfo))
-}

+ 0 - 313
go/gopath/src/fohow.com/apps/models/copartner_model/copartner_model.go

@@ -1,313 +0,0 @@
-package copartner_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"fohow.com/cache"
-	"time"
-)
-
-const (
-	copartner_recruit_configs_tablename = "copartner_recruit_configs"
-	copartner_contributions_tablename   = "copartner_contributions"
-
-	CONTRIBTION_SOURCE_RESET        = "reset" //贡献值清零
-	CONTRIBTION_SOURCE_NAME_RESET   = "贡献值清零"
-	CONTRIBTION_SOURCE_RESET_PREFIX = "RESET" //
-
-)
-
-//合伙人配置表
-type CopartnerRecruitConfig struct {
-	Id                  int64  `orm:"column(id);pk"                                       json:"id"` // int(11)
-	CopartnerCount      int64  `orm:"column(copartner_count);null"                        json:"-"`  // varchar(255)
-	GuideGrbuyArticle   string `orm:"column(guide_grbuy_article);null"                    json:"-"`  //varchar(255)
-	GuideEngroupArticle string `orm:"column(guide_engroup_article);null"                  json:"-"`  //varchar(255)
-	GuideRecoverArticle string `orm:"column(guide_recover_article);null"                  json:"-"`  //varchar(255)
-	OverCountArticle    string `orm:"column(over_count_article);null"                  json:"-"`     //varchar(255)
-	GuideJoinArticle    string `orm:"column(guide_join_article);null"                  json:"-"`     //varchar(255)
-
-	StartTime time.Time `orm:"column(start_time);null;type(datetime)" json:"-"` // datetime
-	StopTime  time.Time `orm:"column(stop_time);null;type(datetime)" json:"-"`  // datetime
-	StartAt   int64     `orm:"-"                                     json:"start_at"`
-	StopAt    int64     `orm:"-"                                     json:"stop_at"`
-
-	CancelDays int64 `orm:"cancel_days"                           json:"cancel_days"`
-
-	SecondProductBenefitRate int64 `orm:"column(second_product_benefit_rate);null"   json:"-"` // int(11)
-	//SecondProjectBenefitRate int64     `orm:"column(second_project_benefit_rate);null"   json:"-"` // int(11)
-
-	ShareTitle   string `orm:"column(share_title);null"                                       json:"share_title"`   // varchar(255)
-	ShareContent string `orm:"column(share_content);null"                                     json:"share_content"` //varchar(255)
-	ShareImg     string `orm:"column(share_img);null"                                         json:"share_img"`     // varchar(255)
-
-	CkeditorText1   string `orm:"column(ckeditor_text1)"                                         json:"ckeditor_text1"`
-	CkeditorText2   string `orm:"column(ckeditor_text2)"                                         json:"ckeditor_text2"`
-	ContributeRule  string `orm:"column(contribute_rule)"                                        json:"contribute_rule"`
-	StockProportion int64  `orm:"column(stock_proportion)"                                json:"stock_proportion"`
-	ProjectId       int64  `orm:"column(project_id)"                                           json:"project_id"`
-
-	CreatedAt time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"` // datetime
-	UpdatedAt time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"` // datetime
-}
-
-//合伙人贡献值
-type CopartnerContribution struct {
-	Id              int64     `orm:"column(id);pk"                                       json:"id"`             // int(11)
-	BenefitWxUId    int64     `orm:"column(benefit_wx_uid)"                              json:"benefit_wx_uid"` // int(11)
-	WxUId           int64     `orm:"column(wx_uid)"                                      json:"-"`              // int(11)
-	IndWxUId        int64     `orm:"column(ind_wx_uid)"                                  json:"-"`
-	Count           int64     `orm:"column(count)"                                       json:"count"`         // int(11)
-	AccumulateCount int64     `orm:"column(accumulate_count)"                         json:"accumulate_count"` // int(11)
-	Amount          int64     `orm:"column(amount)"                                      json:"-"`             // int(11)
-	Source          string    `orm:"column(source);null"                                 json:"source"`        // varchar(64)
-	RelateId        string    `orm:"column(relate_id);null"                              json:"-"`             // varchar(255)
-	Remark          string    `orm:"column(remark)"                                      json:"remark"`
-	CTime           int64     `orm:"-"                                                   json:"c_time"`
-	CreatedAt       time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"` // datetime
-	UpdatedAt       time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"` // datetime
-}
-
-func (self *CopartnerRecruitConfig) TableName() string {
-	return copartner_recruit_configs_tablename
-}
-
-func (self *CopartnerContribution) TableName() string {
-	return copartner_contributions_tablename
-}
-
-func (self *CopartnerContribution) Create(bUId, wxUId, indWxUId, count, accumulateCount, amount int64, source, relateId, remark string) *CopartnerContribution {
-	item := &CopartnerContribution{
-		BenefitWxUId:    bUId,
-		WxUId:           wxUId,
-		IndWxUId:        indWxUId,
-		Count:           count,
-		AccumulateCount: accumulateCount,
-		Amount:          amount,
-		Source:          source,
-		RelateId:        relateId,
-		Remark:          remark,
-	}
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		beego.BeeLogger.Error("insert CopartnerContribution err=[%s]", err)
-		return nil
-	}
-	item.Id = id
-	return item
-}
-
-func (self *CopartnerContribution) Save() error {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save CopartnerContribution id=[%d] .err=[%s]", self.Id, err)
-		return err
-	}
-	return nil
-}
-
-func GetCopartnerRecruitConfigById(id int64, useCache bool) *CopartnerRecruitConfig {
-	k := fmt.Sprintf("GetCopartnerRecruitConfigById(%s)", id)
-	if useCache {
-		if usr, ok := cache.Cache.Get(k).(*CopartnerRecruitConfig); ok {
-			return usr
-		}
-	}
-	item := &CopartnerRecruitConfig{}
-	err := orm.NewOrm().QueryTable(item).
-		Filter("id", id).Limit(1).
-		One(item)
-	if err != nil {
-		beego.BeeLogger.Info("GetCopartnerRecruitConfigById(%s), err=%s",
-			id, err)
-		return nil
-	} else {
-		cache.Cache.Put(k, item, 10*time.Minute)
-		return item
-	}
-	return item
-}
-
-func GetLastCopartnerRecruitConfig(useCache bool) *CopartnerRecruitConfig {
-	k := fmt.Sprintf("GetLastCopartnerRecruitConfig()")
-	if useCache {
-		if usr, ok := cache.Cache.Get(k).(*CopartnerRecruitConfig); ok {
-			return usr
-		}
-	}
-	item := &CopartnerRecruitConfig{}
-	err := orm.NewOrm().QueryTable(item).OrderBy("-id").Limit(1).
-		One(item)
-
-	if err != nil {
-		beego.BeeLogger.Info("GetLastCopartnerRecruitConfig(), err=%s", err)
-		return nil
-	} else {
-		cache.Cache.Put(k, item, 10*time.Minute)
-		return item
-	}
-	return item
-}
-
-//个人总贡献值
-func GetCopartnerContributionSumByBenefitWxUId(benefitWxUId int64) (int64, int64) {
-	type Ret struct {
-		Count  int64
-		Amount int64
-	}
-	ret := &Ret{}
-	o := orm.NewOrm()
-	tbn := new(CopartnerContribution).TableName()
-	sql := fmt.Sprintf("SELECT sum(`count`) as count, sum(`amount`) as amount FROM `%s` WHERE benefit_wx_uid=?;", tbn)
-	err := o.Raw(sql, benefitWxUId).QueryRow(ret)
-	if err != nil {
-		beego.BeeLogger.Error("GetCopartnerContributionSumByBenefitWxUId, wxUser:%d err=[%s]", benefitWxUId, err)
-		return 0, 0
-	}
-	if ret.Count < 0 {
-		return 0, 0
-	}
-	return ret.Count, ret.Amount
-}
-
-//平台总贡献值
-func GetCopartnerContributionSum(useCache bool) int64 {
-	k := fmt.Sprintf("copartner_model.GetCopartnerContributionSum()")
-	if useCache {
-		if count, ok := cache.Cache.Get(k).(int64); ok {
-			return count
-		}
-	}
-	type Ret struct {
-		Count int64
-	}
-	ret := &Ret{}
-	o := orm.NewOrm()
-	tbn := new(CopartnerContribution).TableName()
-	sql := fmt.Sprintf("SELECT sum(`count`) as count FROM `%s`;", tbn)
-	err := o.Raw(sql).QueryRow(ret)
-	if err != nil {
-		beego.BeeLogger.Error("GetCopartnerContributionSum err=[%s]", err)
-		return 0
-	}
-	if ret.Count < 0 {
-		return 0
-	}
-	cache.Cache.Put(k, ret.Count, 10*time.Minute)
-	return ret.Count
-}
-
-//平台贡献总人数
-func GetCopartnerContributionPCount(useCache bool) int64 {
-	k := fmt.Sprintf("copartner_model.GetCopartnerContributionPCount()")
-	if useCache {
-		if count, ok := cache.Cache.Get(k).(int64); ok {
-			return count
-		}
-	}
-	type Ret struct {
-		Count int64
-	}
-	ret := &Ret{}
-	o := orm.NewOrm()
-
-	sql := `
-		SELECT
-			count(*) as count
-		FROM
-			(
-				SELECT
-					count(DISTINCT benefit_wx_uid)
-				FROM
-					%s
-				GROUP BY
-					benefit_wx_uid
-				HAVING
-					SUM(count) > 0
-			) AS a;
-	`
-	tbn := new(CopartnerContribution).TableName()
-	sql = fmt.Sprintf(sql, tbn)
-	err := o.Raw(sql).QueryRow(ret)
-	if err != nil {
-		beego.BeeLogger.Error("GetCopartnerContributionPCount err=[%s]", err)
-		return 0
-	}
-	if ret.Count < 0 {
-		return 0
-	}
-	return ret.Count
-}
-
-//个人贡献记录
-func GetContributionListByBenefitWxUId(page, perPage, benefitWxUId int64, usecache bool) (list []*CopartnerContribution) {
-
-	k := fmt.Sprintf("copartner_model.GetContributionListByBenefitWxUId().page(%d).perpage(%d).benefitWxUId(%d)", page, perPage, benefitWxUId)
-	if usecache {
-		if itemList, ok := cache.Cache.Get(k).([]*CopartnerContribution); ok {
-			return itemList
-		}
-	}
-
-	sql := `
-		SELECT
-			id,
-			benefit_wx_uid,
-			remark,
-			created_at,
-			count,
-			accumulate_count
-		FROM
-			copartner_contributions
-		WHERE
-			benefit_wx_uid = ?
-		ORDER BY
-			created_at DESC
-		LIMIT ?,?
-	`
-
-	_, err := orm.NewOrm().Raw(sql, benefitWxUId, (page-1)*perPage, perPage).QueryRows(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("copartner_model.GetContributionListByBenefitWxUId().page(%d).perpage(%d).benefitWxUId(%d) err=[%s]", page, perPage, benefitWxUId, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 10*time.Minute)
-
-	return list
-}
-
-//个人贡献记录数
-func GetContributionListCountByBenefitWxUId(benefitWxUId int64, usecache bool) int64 {
-
-	k := fmt.Sprintf("copartner_model.GetContributionListCountByBenefitWxUId().benefitWxUId(%d)", benefitWxUId)
-	if usecache {
-		if itemList, ok := cache.Cache.Get(k).(int64); ok {
-			return itemList
-		}
-	}
-
-	type Count struct {
-		Count int64 `json:"count"`
-	}
-	sql := `
-		SELECT
-			count(*) as count
-		FROM
-			copartner_contributions
-		WHERE
-			benefit_wx_uid = ?
-	`
-	var ret Count
-	err := orm.NewOrm().Raw(sql, benefitWxUId).QueryRow(&ret)
-
-	if err != nil {
-		beego.BeeLogger.Warn("copartner_model.GetContributionListCountByBenefitWxUId().benefitWxUId(%d) err=[%s]", benefitWxUId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, ret.Count, 10*time.Minute)
-
-	return ret.Count
-}

+ 0 - 13
go/gopath/src/fohow.com/apps/models/copartner_model/init.go

@@ -1,13 +0,0 @@
-package copartner_model
-
-import (
-	// "fmt"
-	// "strings"
-
-	// "github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-)
-
-func init() {
-	orm.RegisterModel(new(CopartnerRecruitConfig), new(CopartnerContribution))
-}

+ 0 - 311
go/gopath/src/fohow.com/apps/models/course_model/balance.go

@@ -1,311 +0,0 @@
-package course_model
-
-import (
-	"fmt"
-	"time"
-
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-
-	"fohow.com/cache"
-)
-
-const (
-	course_balances_tablename         = "course_balances"
-	course_take_cash_orders_tablename = "course_take_cash_orders"
-
-	ORDER_ID_PREFIX_TX = "CTX" //提现
-
-	//状态:提现失败(pay_state:0,audit_state:2), 提现中(pay_state:0,audit_state:0,1), 已完成(pay_state:1, audit_state:1)
-	STATE_CN_REJECTED    = "提现中"
-	STATE_CN_IN_PROGRESS = "提现中"
-	STATE_CN_SUCESS      = "已完成"
-
-	CASH_SOURCE_TAKE_CASH           = "take_cash" //提现
-	CASH_SOURCE_TAKE_CASH_NAME      = "提现"
-	CASH_SOURCE_COURSE_BENEFIT      = "course_benefit" //课程佣金
-	CASH_SOURCE_COURSE_BENEFIT_NAME = "课程推广佣金"
-
-	TAKE_CASH_LIMIT = 10 //每天提现次数限制
-)
-
-func (self *Balance) TableName() string {
-	return course_balances_tablename
-}
-
-func (self *TakeCashOrder) TableName() string {
-	return course_take_cash_orders_tablename
-}
-
-func (self *Balance) Create(wxUId, c int64, s, rId, remark string) (item *Balance) {
-	item = &Balance{
-		Count:    c,
-		WxUId:    wxUId,
-		Source:   s,
-		RelateId: rId,
-		Remark:   remark,
-	}
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		beego.BeeLogger.Error("Create Balance err=[%s]", err)
-		return nil
-	}
-	item.Id = id
-	return item
-}
-
-func (self *TakeCashOrder) Create(wxUId, count int64) (item *TakeCashOrder) {
-	oId := createOrderId(ORDER_ID_PREFIX_TX)
-	item = &TakeCashOrder{
-		Count:   count,
-		WxUId:   wxUId,
-		OrderId: oId,
-	}
-
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		beego.BeeLogger.Error("Create TakeCashOrder err=[%s]", err)
-		return nil
-	}
-	item.Id = id
-	return item
-}
-
-func (self *TakeCashOrder) Save() error {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save take cash order id=[%d] .err=[%s]", self.Id, err)
-		return err
-	}
-	return nil
-}
-
-//课程余额表
-type Balance struct {
-	Id         int64     `orm:"column(id);pk"                                       json:"id"`        // int(11)
-	WxUId      int64     `orm:"column(wx_uid)"                                      json:"wx_uid"`    // int(11)
-	Count      int64     `orm:"column(count)"                                       json:"count"`     // int(11)
-	Source     string    `orm:"column(source);null"                                 json:"source"`    // varchar(64)
-	SourceName string    `orm:"-"                                 json:"source_name"`                 // varchar(64)
-	RelateId   string    `orm:"column(relate_id);null"                              json:"relate_id"` // varchar(255)
-	Remark     string    `orm:"column(remark);null"                                 json:"remark"`    // varchar(255)
-	CTime      int64     `orm:"-"                                       json:"c_time"`                // int(11)
-	CreatedAt  time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`         // datetime
-	UpdatedAt  time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`         // datetime
-}
-
-type TakeCashOrder struct {
-	Id         int64     `orm:"column(id);pk"                                       json:"id"`           // int(11)
-	WxUId      int64     `orm:"column(wx_uid)"                                      json:"wx_uid"`       // int(11)
-	OrderId    string    `orm:"column(order_id)"                                    json:"order_id"`     // varchar(64)
-	TradeNo    string    `orm:"column(trade_no);null"                               json:"trade_no"`     // varchar(64)
-	Count      int64     `orm:"column(count);null"                                  json:"count"`        // bigint(20)
-	State      int64     `orm:"column(pay_state);null"                              json:"pay_state"`    // tinyint(1)
-	StateCn    string    `orm:"-"                              json:"state_cn"`                          // tinyint(1)
-	AuditState int64     `orm:"column(audit_state);null"                            json:"audit_state"`  // tinyint(1)
-	PaiedAt    int64     `orm:"column(paied_at);null"                               json:"paied_at"`     // int(11)
-	Remark     string    `orm:"column(remark);null"                                 json:"remark"`       // varchar(255)
-	ExpcPayAt  time.Time `orm:"column(expc_pay_at);null;auto_now_add;type(datetime)" json:"expc_pay_at"` // datetime
-	CreatedAt  time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`            // datetime
-	UpdatedAt  time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`            // datetime
-}
-
-//状态值中文
-func (self *TakeCashOrder) GetStateCn() string {
-	stateCn := ""
-	switch self.State {
-	case 0:
-		switch self.AuditState {
-		case 0:
-			stateCn = STATE_CN_IN_PROGRESS
-
-		case 1:
-			stateCn = STATE_CN_IN_PROGRESS
-
-		case 2:
-			stateCn = STATE_CN_REJECTED
-		}
-	case 1:
-		switch self.AuditState {
-		case 1:
-			stateCn = STATE_CN_SUCESS
-		}
-	case 2:
-		stateCn = STATE_CN_REJECTED
-	}
-
-	return stateCn
-}
-
-func GetTakeCashOrderByOId(oId string, useCache bool) *TakeCashOrder {
-	k := fmt.Sprintf("course_model.GetTakeCashOrderByOId[%s]", oId)
-	if useCache {
-		if order, ok := cache.Cache.Get(k).(*TakeCashOrder); ok {
-			return order
-		}
-	}
-	order := new(TakeCashOrder)
-	o := orm.NewOrm()
-	err := o.QueryTable(order).Filter("order_id", oId).Limit(1).One(order)
-	if err != nil {
-		beego.Debug("GetOrderByOrderId is not found err=[%s], oId=%s", err, oId)
-		return nil
-	} else {
-		cache.Cache.Put(k, order, 5*time.Minute)
-		return order
-	}
-}
-
-//获取某人的提现流列表
-func GetTakeCashOrderListByWxUId(wxUId, page, perPage int64, useCache bool) (list []*TakeCashOrder) {
-	k := fmt.Sprintf("course_model.GetTakeCashOrderListByWxUId.wxUId(%d).page(%d).perPage(%d)", wxUId, page, perPage)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*TakeCashOrder); ok {
-			return s
-		}
-	}
-
-	order := new(TakeCashOrder)
-	qs := orm.NewOrm().QueryTable(order)
-	qs = qs.Filter("wx_uid", wxUId)
-
-	if _, err := qs.OrderBy("-created_at", "-id").
-		Limit(perPage, (page-1)*perPage).All(&list); err != nil {
-		beego.BeeLogger.Debug("get GetTakeCashOrderListByWxUId with wxUId=%d, err=[%s]", wxUId, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}
-
-//获取某人的提现流列表总条数
-func GetTakeCashOrderCountByWxUId(wxUId int64, useCache bool) int64 {
-
-	k := fmt.Sprintf("course_model.GetTakeCashOrderCountByWxUId.wxUId(%d)", wxUId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-
-	item := new(TakeCashOrder)
-	o := orm.NewOrm()
-	count, _ := o.QueryTable(item).Filter("wx_uid", wxUId).Count()
-
-	if count > 0 {
-		cache.Cache.Put(k, count, 5*time.Minute)
-	}
-	return count
-}
-
-//返回source名称
-func (self *Balance) GetSourceName() string {
-	sourceName := ""
-	switch self.Source {
-	case CASH_SOURCE_COURSE_BENEFIT:
-		sourceName = CASH_SOURCE_COURSE_BENEFIT_NAME
-	case CASH_SOURCE_TAKE_CASH:
-		sourceName = CASH_SOURCE_TAKE_CASH_NAME
-	}
-	return sourceName
-}
-
-//获取某人的现金流列表
-func GetBalanceListByWxUId(wxUId, page, perPage int64, useCache bool) (list []*Balance) {
-	k := fmt.Sprintf("course_model.GetBalanceListByWxUId(%d).page(%d).perPage(%d)", wxUId, page, perPage)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*Balance); ok {
-			return s
-		}
-	}
-
-	balance := new(Balance)
-	qs := orm.NewOrm().QueryTable(balance)
-	qs = qs.Filter("wx_uid", wxUId)
-
-	if _, err := qs.OrderBy("-created_at", "-id").
-		Limit(perPage, (page-1)*perPage).All(&list); err != nil {
-		beego.BeeLogger.Debug("get cash balance with wxUId=%d, err=[%s]", wxUId, err)
-		return nil
-	}
-
-	for _, item := range list {
-		item.SourceName = item.GetSourceName()
-	}
-
-	cache.Cache.Put(k, list, 10*time.Minute)
-	return list
-}
-
-//获取某人的现金流列表总条数
-func GetBalanceCountByWxUId(wxUId int64) int64 {
-	item := new(Balance)
-	o := orm.NewOrm()
-	count, _ := o.QueryTable(item).Filter("wx_uid", wxUId).Count()
-	return count
-}
-
-//账户进账总额
-func GetEnterBalance(wxUId int64) int64 {
-	type Ret struct {
-		Count int64
-	}
-	ret := &Ret{}
-	o := orm.NewOrm()
-	tbn := new(Balance).TableName()
-	sql := fmt.Sprintf("SELECT sum(`count`) as count FROM `%s` WHERE wx_uid=? and count > 0;", tbn)
-	err := o.Raw(sql, wxUId).QueryRow(ret)
-	if err != nil {
-		beego.BeeLogger.Error("GetCashEnterBalance, wxUser:%d err=[%s]", wxUId, err)
-		return 0
-	}
-	if ret.Count < 0 {
-		return 0
-	}
-	return ret.Count
-}
-
-//账户余额
-func GetTotalBalance(wxUId int64) int64 {
-	type Ret struct {
-		Count int64
-	}
-	ret := &Ret{}
-	o := orm.NewOrm()
-	tbn := new(Balance).TableName()
-	sql := fmt.Sprintf("SELECT sum(`count`) as count FROM `%s` WHERE wx_uid=?;", tbn)
-	err := o.Raw(sql, wxUId).QueryRow(ret)
-	if err != nil {
-		beego.BeeLogger.Error("GetCashTotalBalance, wxUser:%d err=[%s]", wxUId, err)
-		return 0
-	}
-	if ret.Count < 0 {
-		return 0
-	}
-	return ret.Count
-}
-
-func GetBalanceByWxUIdAndRIdAndSource(wxUId int64, rId, source string) *Balance {
-	item := &Balance{}
-	if err := orm.NewOrm().QueryTable(item).
-		Filter("wx_uid", wxUId).
-		Filter("source", source).
-		Filter("relate_id", rId).OrderBy("-created_at").Limit(1).
-		One(item); err != nil {
-		beego.BeeLogger.Info("GetBalanceByWxUIdAndRIdAndSource(%d,%s,%s), err=%s",
-			wxUId, rId, source, err)
-		return nil
-	}
-	return item
-}
-
-func GetTakeCashTimesByWxUIdAndTime(wxUId int64, now time.Time) int64 {
-	s, _ := time.Parse("20060102", fmt.Sprintf("%d%02d%02d", now.Year(), now.Month(), now.Day()))
-	e := s.AddDate(0, 0, 1)
-	item := &TakeCashOrder{}
-	count, _ := orm.NewOrm().QueryTable(item).
-		Filter("wx_uid", wxUId).
-		Filter("created_at__gte", s.Add(-8*time.Hour)).
-		Filter("created_at__lt", e.Add(-8*time.Hour)).Count()
-	return count
-}

+ 0 - 365
go/gopath/src/fohow.com/apps/models/course_model/course.go

@@ -1,365 +0,0 @@
-package course_model
-
-import (
-	"fmt"
-	"strings"
-	"time"
-
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"github.com/uuid"
-
-	"fohow.com/cache"
-	"fohow.com/libs/tool"
-)
-
-const (
-	courses_tablename         = "courses"
-	course_orders_tablename   = "course_orders"
-	course_coupons_tablename  = "course_coupons"
-	course_benefits_tablename = "course_benefits"
-
-	ORDER_ID_PREFIX_COURSE  = "CS"
-	ORDER_ID_PREFIX_BENEFIT = "BF"
-
-	//优惠券状态值
-	COUPON_STATE_UNUSED  = 0 //未使用
-	COUPON_STATE_USED    = 1 //已使用
-	COUPON_STATE_EXPIRED = 2 //已过期
-
-	//每期毕业后赠送优惠券数量
-	COUPON_LIMIT = 2
-
-	//订单状态
-	ORDER_STATE_UNPAY = 0 //未支付
-	ORDER_STATE_PAIED = 1 //已支付
-
-)
-
-func (self *Benefit) TableName() string {
-	return course_benefits_tablename
-}
-
-func (self *Order) TableName() string {
-	return course_orders_tablename
-}
-
-func (self *Course) TableName() string {
-	return courses_tablename
-}
-
-func (self *Coupon) TableName() string {
-	return course_coupons_tablename
-}
-
-func (self *Order) Save() bool {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save Course Order order=[%s] .err=[%s]", self.OrderId, err)
-		return false
-	}
-	return true
-}
-
-func (self *Benefit) Save() bool {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save Course Benefit order=[%s] .err=[%s]", self.OrderId, err)
-		return false
-	}
-	return true
-}
-
-func (self *Coupon) Save() bool {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save Course Coupon id=[%d] .err=[%s]", self.Id, err)
-		return false
-	}
-	return true
-}
-
-//生成订单ID
-func createOrderId(prefix string) string {
-	n := time.Now().Format("20060102")
-	u := uuid.NewV4().String()
-	c := strings.Split(u, "-")
-	oId := strings.ToUpper(fmt.Sprintf("%s%s%s", prefix, n, c[0]))
-	beego.BeeLogger.Info("create order_id=%s", oId)
-	return oId
-}
-
-//创建订单
-func (self *Order) Create(cId, wxUId, totalPrice int64) *Order {
-	var oId string
-	oId = createOrderId(ORDER_ID_PREFIX_COURSE)
-	order := &Order{
-		OrderId:    oId,
-		CourseId:   cId,
-		WxUId:      wxUId,
-		TotalPrice: totalPrice,
-	}
-	id, err := orm.NewOrm().Insert(order)
-	if err != nil {
-		beego.BeeLogger.Error("insert course order err=[%s]", err)
-		return nil
-	}
-	order.Id = id
-	return order
-}
-
-//创建佣金记录
-func (self *Benefit) Create(cId, bWxUId, wxUId, orderPrice, benefitPrice int64) *Benefit {
-	var oId string
-	oId = createOrderId(ORDER_ID_PREFIX_BENEFIT)
-	benefit := &Benefit{
-		OrderId:      oId,
-		CourseId:     cId,
-		BenefitWxUId: bWxUId,
-		WxUId:        wxUId,
-		OrderPrice:   orderPrice,
-		BenefitPrice: benefitPrice,
-	}
-	id, err := orm.NewOrm().Insert(benefit)
-	if err != nil {
-		beego.BeeLogger.Error("insert course benefit err=[%s]", err)
-		return nil
-	}
-	benefit.Id = id
-	return benefit
-}
-
-//创建优惠码
-func (self *Coupon) Create(cId, wxUId, deadline int64) *Coupon {
-	code := tool.Get8Uuid()
-	item := &Coupon{
-		CourseId: cId,
-		WxUId:    wxUId,
-		Code:     code,
-		Deadline: deadline,
-	}
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		beego.BeeLogger.Error("insert Coupon err=[%s]", err)
-		return nil
-	}
-	item.Id = id
-	return item
-}
-
-type Coupon struct {
-	Id        int64     `orm:"column(id);pk"                                       json:"id"`        // int(11)
-	CourseId  int64     `orm:"column(course_id);null"                              json:"course_id"` // int(11)
-	WxUId     int64     `orm:"column(wx_uid)"                                      json:"wx_uid"`    // int(11)
-	Head      string    `orm:"-"                                      json:"head"`                   // int(11)
-	Code      string    `orm:"column(code)"                                        json:"code"`      // varchar(8)
-	RelateId  string    `orm:"column(relate_id);null"                              json:"relate_id"` // varchar(255)
-	Deadline  int64     `orm:"column(deadline);null"                               json:"deadline"`  // int(11)
-	State     int64     `orm:"column(state);null"                                  json:"state"`     // tinyint(4)
-	CreatedAt time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`         // datetime
-	UpdatedAt time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`         // datetime
-}
-
-type Order struct {
-	Id          int64     `orm:"column(id);pk"                                       json:"id"`            // int(11)
-	CourseId    int64     `orm:"column(course_id)"                                   json:"course_id"`     // int(11)
-	OrderId     string    `orm:"column(order_id)"                                    json:"order_id"`      // varchar(255)
-	WxUId       int64     `orm:"column(wx_uid)"                                      json:"wx_uid"`        // int(11)
-	InviteWxUId int64     `orm:"column(invite_wx_uid)"                               json:"invite_wx_uid"` // int(11)
-	TotalPrice  int64     `orm:"column(total_price)"                                 json:"total_price"`   // int(11)
-	PaiedPrice  int64     `orm:"column(paied_price);null"                            json:"paied_price"`   // int(11)
-	PaiedAt     int64     `orm:"column(paied_at);null"                               json:"paied_at"`      // int(11)
-	State       int64     `orm:"column(state);null"                                  json:"state"`         // tinyint(4)
-	TradeNo     string    `orm:"column(trade_no);null"                               json:"trade_no"`      // varchar(255)
-	Remark      string    `orm:"column(remark);null"                                 json:"remark"`        // varchar(255)
-	CreatedAt   time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`             // datetime
-	UpdatedAt   time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`             // datetime
-}
-
-type Course struct {
-	Id            int64     `orm:"column(id);pk"                                       json:"id"`             // int(11)
-	Title         string    `orm:"column(title)"                                       json:"title"`          // varchar(255)
-	ShareTitle    string    `orm:"column(share_title)"                                 json:"share_title"`    // varchar(255)
-	ShareContent  string    `orm:"column(share_content)"                               json:"share_content"`  // varchar(255)
-	ShareImg      string    `orm:"column(share_img)"                                   json:"share_img"`      // varchar(255)
-	OrgPrice      int64     `orm:"column(org_price)"                                   json:"org_price"`      // int(11)
-	Price         int64     `orm:"column(price)"                                       json:"price"`          // int(11)
-	BenefitPrice  int64     `orm:"column(benefit_price)"                               json:"benefit_price"`  // int(11)
-	StopTime      time.Time `orm:"column(stop_time);null;type(datetime)"               json:"-"`              // datetime
-	Deadline      int64     `orm:"-"                               json:"deadline"`                           // int(11)
-	Img           string    `orm:"column(img)"                                         json:"img"`            // varchar(255)
-	Detail        string    `orm:"column(detail)"                                      json:"detail"`         // text
-	Rule          string    `orm:"column(rule)"                                      json:"rule"`             // text
-	ServiceQrcode string    `orm:"column(service_qrcode)"                              json:"service_qrcode"` // varchar(255)
-	CreatedAt     time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`              // datetime
-	UpdatedAt     time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`              // datetime
-}
-
-type Benefit struct {
-	Id           int64     `orm:"column(id);pk"                                       json:"id"`             // int(11)
-	OrderId      string    `orm:"column(order_id);null"                               json:"order_id"`       // varchar(255)
-	CourseId     int64     `orm:"column(course_id)"                                   json:"course_id"`      // int(11)
-	BenefitWxUId int64     `orm:"column(benefit_wx_uid)"                              json:"benefit_wx_uid"` // int(11)
-	WxUId        int64     `orm:"column(wx_uid)"                                      json:"wx_uid"`         // int(11)
-	Nickname     string    `orm:"-"                               json:"nickname"`                           // varchar(255)
-	Head         string    `orm:"-"                               json:"head"`                               // varchar(255)
-	CTime        int64     `orm:"-"                                      json:"ctime"`                       // int(11)
-	OrderPrice   int64     `orm:"column(order_price)"                                 json:"order_price"`    // int(11)
-	BenefitPrice int64     `orm:"column(benefit_price)"                               json:"benefit_price"`  // int(11)
-	Remark       string    `orm:"column(remark);null"                                 json:"remark"`         // varchar(255)
-	CreatedAt    time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`              // datetime
-	UpdatedAt    time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`              // datetime
-}
-
-func GetLatestCourse(useCache bool) *Course {
-	k := fmt.Sprintf("course_model.GetLatestCourse")
-
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(*Course); ok {
-			return s
-		}
-	}
-	course := &Course{}
-	if err := orm.NewOrm().QueryTable(course).OrderBy("-id").Limit(1).
-		One(course); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, course, 10*time.Minute)
-	return course
-}
-
-func GetCourseById(id int64, useCache bool) *Course {
-	course := &Course{}
-	if err := orm.NewOrm().QueryTable(course).Filter("id", id).Limit(1).
-		One(course); err != nil {
-		// beego.BeeLogger.Error("get course by id=%d err=%s", id, err)
-		return nil
-	}
-	return course
-}
-
-// 根据OrderId获取订单记录
-func GetOrderByOId(oId string) (order *Order) {
-	order = &Order{}
-	if err := orm.NewOrm().QueryTable(order).Filter("order_id", oId).Limit(1).
-		One(order); err != nil {
-		// beego.BeeLogger.Error("get course order by id=%s err=%s", oId, err)
-		return nil
-	}
-	return order
-}
-
-func GetCouponByCode(code string) (coupon *Coupon) {
-	coupon = &Coupon{}
-	if err := orm.NewOrm().QueryTable(coupon).Filter("code", code).Limit(1).
-		One(coupon); err != nil {
-		// beego.BeeLogger.Error("get course coupon by code=%s err=%s", code, err)
-		return nil
-	}
-	return coupon
-}
-
-func GetCouponsByCIdAndWxUId(cId, wxUId int64, useCache bool) (list []*Coupon) {
-	k := fmt.Sprintf("course_model.GetCouponsByCIdAndWxUId(%d).(%d)", cId, wxUId)
-
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*Coupon); ok {
-			return s
-		}
-	}
-	item := new(Coupon)
-	o := orm.NewOrm()
-	qs := o.QueryTable(item).Filter("course_id", cId).Filter("wx_uid", wxUId)
-	if _, err := qs.All(&list); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, list, 1*time.Minute)
-	return list
-}
-
-func GetOrderByWxUIdAndCIdAndState(wxUId, cId, state int64) *Order {
-	order := &Order{}
-	if err := orm.NewOrm().QueryTable(order).Filter("wx_uid", wxUId).
-		Filter("course_id", cId).Filter("state", state).Limit(1).
-		One(order); err != nil {
-		return nil
-	}
-	return order
-}
-
-func GetOrdersCountByCIdAndState(cId, state int64) int64 {
-	order := &Order{}
-	c, _ := orm.NewOrm().QueryTable(order).
-		Filter("course_id", cId).Filter("state", state).Count()
-	return c
-}
-
-func GetLastOrdersByCId(cId, n int64, useCache bool) (list []*Order) {
-	k := fmt.Sprintf("course_model.GetLastOrdersByCId(%d).n(%d)", cId, n)
-
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*Order); ok {
-			return s
-		}
-	}
-	item := new(Order)
-	o := orm.NewOrm()
-	qs := o.QueryTable(item).Filter("course_id", cId).Filter("state", 1)
-	if _, err := qs.Limit(n).All(&list); err != nil {
-		// beego.BeeLogger.Debug("GetLastOrdersByCId id=[%d] err=[%s]", id, err)
-		return nil
-	}
-	cache.Cache.Put(k, list, 1*time.Minute)
-	return list
-}
-
-func GetOrdersByCIdAndState(cId, state int64, useCache bool) (list []*Order) {
-	k := fmt.Sprintf("course_model.GetOrdersByCIdAndState(%d).state(%d)", cId, state)
-
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*Order); ok {
-			return s
-		}
-	}
-	item := new(Order)
-	o := orm.NewOrm()
-	qs := o.QueryTable(item).Filter("course_id", cId).Filter("state", state)
-	if _, err := qs.All(&list); err != nil {
-		// beego.BeeLogger.Debug("GetLastOrdersByCId id=[%d] err=[%s]", id, err)
-		return nil
-	}
-	cache.Cache.Put(k, list, 1*time.Minute)
-	return list
-}
-
-//获取某人的佣金流列表
-func GetBenefitListByWxUId(wxUId, page, perPage int64, useCache bool) (list []*Benefit) {
-	k := fmt.Sprintf("course_model.GetBenefitListByWxUId(%d).page(%d).perPage(%d)", wxUId, page, perPage)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*Benefit); ok {
-			return s
-		}
-	}
-
-	item := new(Benefit)
-	qs := orm.NewOrm().QueryTable(item)
-	qs = qs.Filter("benefit_wx_uid", wxUId)
-
-	if _, err := qs.OrderBy("-created_at", "-id").
-		Limit(perPage, (page-1)*perPage).All(&list); err != nil {
-		beego.BeeLogger.Debug("GetBenefitListByWxUId wxUId=%d, err=[%s]", wxUId, err)
-		return nil
-	}
-
-	// for _, item := range list {
-
-	// }
-
-	cache.Cache.Put(k, list, 10*time.Minute)
-	return list
-}
-
-//获取某人的佣金列表总条数
-func GetBenefitCountByWxUId(wxUId int64) int64 {
-	item := new(Benefit)
-	o := orm.NewOrm()
-	count, _ := o.QueryTable(item).Filter("benefit_wx_uid", wxUId).Count()
-	return count
-}

+ 0 - 13
go/gopath/src/fohow.com/apps/models/course_model/init.go

@@ -1,13 +0,0 @@
-package course_model
-
-import (
-	// "fmt"
-	// "strings"
-
-	// "github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-)
-
-func init() {
-	orm.RegisterModel(new(Course), new(Coupon), new(Order), new(Benefit), new(Balance), new(TakeCashOrder))
-}

+ 0 - 23
go/gopath/src/fohow.com/apps/models/cow_order_model/init.go

@@ -1,23 +0,0 @@
-package cow_order_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"strings"
-)
-
-func init() {
-	orm.RegisterModel(new(CowOrder))
-}
-
-func GetCdnFullImgUrl(img string) string {
-	if img == "" {
-		return ""
-	}
-	if strings.HasPrefix(img, "http://") || strings.HasPrefix(img, "https://") {
-		return img
-	} else {
-		return fmt.Sprintf("%s/%s", beego.AppConfig.String("AliCDNImgHost"), img)
-	}
-}

+ 0 - 77
go/gopath/src/fohow.com/apps/models/cow_order_model/order.go

@@ -1,77 +0,0 @@
-package cow_order_model
-
-import (
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"time"
-)
-
-const (
-	orders_tablename = "receive_orders"
-)
-
-type CowOrder struct {
-	Id         int64  `orm:"column(id);pk"                                       json:"id"`     // int(11)
-	UserId     int64  `orm:"column(user_id)"                                  json:"user_id"`   // int(11)
-	WxUserId   int64  `orm:"column(wx_user_id)"                                  json:"-"`      // int(11)
-	CowOrderId string `orm:"column(order_id)"                                  json:"order_id"` // int(11)
-
-	ProductId   int64  `orm:"column(product_id)"                                  json:"product_id"`     // int(11)
-	ProductName string `orm:"column(product_name)"                                  json:"product_name"` // string
-	Nums        int64  `orm:"column(nums)"                                  json:"nums"`                 // int(11)
-	BuyPrice    int64  `orm:"column(buy_price)"                                  json:"buy_price"`       // int(11)
-	PaidTotal   int64  `orm:"column(paied_total)"                                  json:"paied_total"`   // int(11)
-	Fee         int64  `orm:"column(fee)"                                  json:"fee"`                   // int(11)
-	IsPaid      bool   `orm:"column(is_paied)"                                  json:"is_paied"`         // int(11)
-	PaiedAt     int64  `orm:"column(paied_time)"                                  json:"paied_at"`       // int(11)
-	TradeNo     string `orm:"column(trade_no)"                                         json:"trade_no"`  // varchar(255)
-	Type        string `orm:"column(style)"                                  json:"style"`               // int(11)
-	CouponId    int64  `orm:"column(coupon_id)"                                  json:"coupon_id"`       // int(11)
-	Cash        int64  `orm:"column(cash)"                                  json:"cash"`                 // int(11)
-
-	CowId      int64     `orm:"column(cow_id)"                                  json:"cow_id"`               // int(11)
-	AwardId    int64     `orm:"column(award_id)"                                  json:"award_id"`           // int(11)
-	AwardTitle string    `orm:"-"                                  json:"award_title"`                       // string(11)
-	AwardImage string    `orm:"-"                                  json:"award_image"`                       // string(11)
-	Prov       string    `orm:"column(prov)"                                  json:"prov"`                   // string(11)
-	City       string    `orm:"column(city)"                                  json:"city"`                   // string(11)
-	Area       string    `orm:"column(area)"                                  json:"area"`                   // string(11)
-	State      int64     `orm:"column(state)"                              json:"state"`                     // int(11)
-	Address    string    `orm:"column(address)"                                  json:"address"`             // string(11)
-	Concat     string    `orm:"column(concat)"                                  json:"concat"`               // string(11)
-	Mobile     string    `orm:"column(mobile)"                                  json:"mobile"`               // string(11)
-	LogisNo    string    `orm:"column(logis_no)"                                  json:"logis_no"`           // string(11)
-	LogisComp  string    `orm:"column(logis_company)"                                  json:"logis_company"` // string(11)
-	ConFlag    int64     `orm:"column(con_flag)"                                  json:"con_flag"`           // int(11)
-	ConDate    int64     `orm:"column(con_date)"                                  json:"con_date"`           // int(11)
-	Remark     string    `orm:"remark"                                  json:"remark"`                       // int(11)
-	CreatedAt  time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"created_at"`       // datetime
-	UpdatedAt  time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`                // datetime
-}
-
-func (self *CowOrder) TableName() string {
-	return orders_tablename
-}
-
-// 根据CowOrderId获取订单记录
-func GetCowOrderByCowOrderId(oId string) (order *CowOrder) {
-	order = &CowOrder{}
-	o := orm.NewOrm()
-	o.Using("cow_data_source")
-	if err := o.QueryTable(order).Filter("order_id", oId).Limit(1).
-		One(order); err != nil {
-		beego.BeeLogger.Error("get order by oid=%s err=%s", oId, err)
-		order = nil
-	}
-	return order
-}
-
-func (self *CowOrder) Save() bool {
-	o := orm.NewOrm()
-	o.Using("cow_data_source")
-	if _, err := o.Update(self); err != nil {
-		beego.BeeLogger.Error("SaveCowOrder order=[%s] .err=[%s]", self.CowOrderId, err)
-		return false
-	}
-	return true
-}

+ 0 - 49
go/gopath/src/fohow.com/apps/models/d5c_project/d5c_project.go

@@ -1,49 +0,0 @@
-package d5c_project_model
-
-import (
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-)
-
-const (
-	d5c_projects_tablename = "d5c_projects"
-	SUCESS_STATE           = "success"
-)
-
-type D5cProject struct {
-	Id    int64  `orm:"column(id);pk"                    json:"id"` // int(11)
-	Title string `orm:"column(title)"                    json:"title"`
-	State string `orm:"column(state)"                   json:"sate"` // int(11)
-}
-
-func (self *D5cProject) TableName() string {
-	return d5c_projects_tablename
-}
-
-//获取第五创项目
-func GetD5cProjectById(id int64) *D5cProject {
-
-	o := orm.NewOrm()
-	o.Using("data_source")
-
-	sql := `
-		SELECT
-			id,
-			title,
-			state
-		FROM
-			d5c_projects p
-		WHERE
-			id = ?;
-	`
-	item := new(D5cProject)
-
-	err := o.Raw(sql, id).QueryRow(&item)
-
-	if err != nil {
-		beego.BeeLogger.Warn("models.GetD5cProjectById(%d),err(%s)", id, err)
-		return nil
-	}
-	beego.BeeLogger.Warn("models.item(%s)", item)
-	return item
-}

+ 0 - 7
go/gopath/src/fohow.com/apps/models/d5c_project/init.go

@@ -1,7 +0,0 @@
-package d5c_project_model
-
-import "github.com/astaxie/beego/orm"
-
-func init() {
-	orm.RegisterModel(new(D5cProject))
-}

+ 0 - 635
go/gopath/src/fohow.com/apps/models/dollar_win_model/dollar_win.go

@@ -1,635 +0,0 @@
-package dollar_win_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"github.com/uuid"
-	"fohow.com/cache"
-	"strings"
-	"time"
-)
-
-const (
-	dollar_win_zt_configs_tablename = "dollar_win_zt_configs"
-	dollar_win_zt_joins_tablename   = "dollar_win_zt_joins"
-	ORDER_ID_PREFIX_DW              = "DW"
-	PAY_WAY_TYPE_DOLLAR_WIN_WX      = "weixinpay" //微信支付夺宝订单
-
-	PAY_WAY_TYPE_DOLLAR_WIN_CASH_BALANCE = "cashbalance" //资金余额支付夺宝
-)
-
-type DollarWinZtConfig struct {
-	Id                 int64     `orm:"column(id);pk"                                       json:"id"`                    // int(11)
-	Title              string    `orm:"column(title);null"                                  json:"title"`                 // varchar(255)
-	StartTime          time.Time `orm:"column(start_time)"                                  json:"-"`                     // int(11)
-	StopTime           time.Time `orm:"column(stop_time)"                                   json:"-"`                     // int(11)
-	StartAt            int64     `orm:"-"                                                   json:"start_at"`              // int(11)
-	StopAt             int64     `orm:"-"                                                   json:"stop_at"`               // int(11)
-	Rule               string    `orm:"column(rule);null"                                   json:"rule"`                  // varchar(64)
-	ProjectUrl         string    `orm:"column(project_url);null"                            json:"project_url"`           // varchar(64)
-	JoinTimesLimit     int64     `orm:"column(join_times_limit)"                            json:"-"`                     // int(11)
-	TotalTimesMinLimit int64     `orm:"column(total_times_min_limit)"                       json:"total_times_min_limit"` // int(11)
-	CurTimes           int64     `orm:"-"                                                   json:"cur_times"`             // int(11)
-	IsLimitNew         bool      `orm:"column(is_limit_new)"                                json:"-"`                     // int(11)
-	JoinCostAmount     int64     `orm:"column(join_cost_amount)"                            json:"join_cost_amount"`      // int(11)
-	BgPicUrl           string    `orm:"column(bg_pic_url);null"                             json:"bg_pic_url"`            // varchar(64)
-	BgPicLink          string    `orm:"column(bg_pic_link);null"                            json:"bg_pic_link"`           // varchar(64)
-	WfPicUrl           string    `orm:"column(wf_pic_url);null"                             json:"wf_pic_url"`            // varchar(64)
-	WfPicLink          string    `orm:"column(wf_pic_link);null"                            json:"wf_pic_link"`           // varchar(64)
-	AfterPaied         int64     `orm:"column(after_paied);null"                            json:"-"`                     // int(11)
-	QrcodeImg          string    `orm:"-"                                                   json:"qrcode_img"`
-	UserNickName       string    `orm:"-"                                                   json:"user_nick_name"`
-	ChannelId          int64     `orm:"-"                                                   json:"channel_id"`
-	ShareLink          string    `orm:"column(share_link);null"                             json:"share_link"`
-	ResultText         string    `orm:"column(result_text);null"                            json:"result_text"`   // varchar(64)
-	ShareTitle         string    `orm:"column(share_title);null"                            json:"share_title"`   // varchar(64)
-	ShareContent       string    `orm:"column(share_content);null"                          json:"share_content"` // varchar(64)
-	ShareImg           string    `orm:"column(share_img);null"                              json:"share_img"`     // varchar(64)
-	IsTemp             bool      `orm:"column(is_temp)"                                      json:"is_temp"`      // int(11)
-	Prize              string    `orm:"column(prize);null"                                  json:"-"`             // varchar(255)
-	ProjectId          int64     `orm:"column(project_id);null"                             json:"project_id"`    // int(11)
-	CreatedAt          time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`             // datetime
-	UpdatedAt          time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`             // datetime
-}
-
-type DollarWinZtJoin struct {
-	Id              int64     `orm:"column(id);pk"                                       json:"id"`      // int(11)
-	ZtConfigId      int64     `orm:"column(zt_config_id)"                                json:"-"`       // int(11)
-	UserId          int64     `orm:"column(user_id)"                                     json:"user_id"` // int(11)
-	WxUserHead      string    `orm:"-"                                                   json:"wx_user_head"`
-	InviteUserHead  string    `orm:"-"                                                   json:"invite_wx_user_head"`
-	IsInvite        bool      `orm:"-"                                                  json:"is_invite"`
-	WxUserName      string    `orm:"-"                                                   json:"wx_user_name"`
-	OrderId         string    `orm:"column(order_id);null"                               json:"order_id"`      // varchar(255)
-	IsPaied         bool      `orm:"column(is_paied);null"                               json:"-"`             // varchar(64)
-	PaiedAt         int64     `orm:"column(paied_at);null"                               json:"paied_at"`      // int(11)
-	CalulatePaiedAt int64     `orm:"column(calulate_paied_at);null"                      json:"c_paied_at"`    // varchar(64)
-	RankNumber      int64     `orm:"column(rank_number)"                                 json:"rank_number"`   // int(11)
-	AwardRank       int64     `orm:"column(award_rank)"                                  json:"award_rank"`    // int(11)
-	TotalAmount     int64     `orm:"column(total_amount)"                                json:"-"`             // int(11)
-	PaiedAmount     int64     `orm:"column(paied_amount)"                                json:"-"`             // int(11)
-	TradeNo         string    `orm:"column(trade_no)"                                    json:"-"`             // varchar(255)
-	PayWay          string    `orm:"column(pay_way)"                                     json:"-"`             // varchar(255)
-	IsRefund        bool      `orm:"column(is_refund);null"                              json:"-"`             // tinyint(4)
-	IsWin           bool      `orm:"column(is_win);null"                                 json:"-"`             // tinyint(4)
-	CreatedAt       time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`             // datetime
-	UpdatedAt       time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`             // datetime
-	TempInviteId    int64     `orm:"column(temp_invite_id)"                             json:"temp_invite_id"` // int(11)
-}
-
-func (self *DollarWinZtConfig) TableName() string {
-	return dollar_win_zt_configs_tablename
-}
-
-func (self *DollarWinZtJoin) TableName() string {
-	return dollar_win_zt_joins_tablename
-}
-
-func (self *DollarWinZtJoin) Create(uId, zcId, totalAmount, tempInviteId int64) *DollarWinZtJoin {
-	var oId string
-	oId = CreateOrderId(ORDER_ID_PREFIX_DW)
-	join := &DollarWinZtJoin{
-		OrderId:         oId,
-		UserId:          uId,
-		ZtConfigId:      zcId,
-		TotalAmount:     totalAmount,
-		TempInviteId:    tempInviteId,
-		PaiedAt:         0,
-		RankNumber:      0,
-		CalulatePaiedAt: 0,
-		PayWay:          PAY_WAY_TYPE_DOLLAR_WIN_WX,
-	}
-	if _, err := orm.NewOrm().Insert(join); err != nil {
-		beego.BeeLogger.Error("insert join err=[%s]", err)
-		return nil
-	}
-	return join
-}
-
-//生成订单ID
-func CreateOrderId(prefix string) string {
-	n := time.Now().Format("20060102")
-	u := uuid.NewV4().String()
-	c := strings.Split(u, "-")
-	oId := strings.ToUpper(fmt.Sprintf("%s%s%s", prefix, n, c[0]))
-	beego.BeeLogger.Info("create order_id=%s", oId)
-	return oId
-}
-
-func GetDollarWinZtConfigList(useCached bool) (list []*DollarWinZtConfig) {
-	k := fmt.Sprintf("dollar_win_model.GetDollarWinZtConfigList")
-	if useCached {
-		if v, ok := cache.Cache.Get(k).([]*DollarWinZtConfig); ok {
-			return v
-		}
-	}
-	item := new(DollarWinZtConfig)
-	o := orm.NewOrm()
-	if _, err := o.QueryTable(item).All(&list); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}
-
-func GetDollarWinZtConfigById(id int64, useCached bool) *DollarWinZtConfig {
-	k := fmt.Sprintf("dollar_win_model.DollarWinZtConfig[%d]", id)
-	if useCached {
-		if v, ok := cache.Cache.Get(k).(*DollarWinZtConfig); ok {
-			return v
-		}
-	}
-	item := new(DollarWinZtConfig)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("id", id).One(item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-func GetDollarWinZtJoinByOrderId(orderId string, useCached bool) *DollarWinZtJoin {
-	k := fmt.Sprintf("dollar_win_model.GetDollarWinZtJoinByOrderId[%s]", orderId)
-	if useCached {
-		if v, ok := cache.Cache.Get(k).(*DollarWinZtJoin); ok {
-			return v
-		}
-	}
-	item := new(DollarWinZtJoin)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("order_id", orderId).One(item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-//获取会员参与记录
-func GetDollarWinZtJoinByTempInviteId(cId, uId int64, useCached bool) *DollarWinZtJoin {
-	k := fmt.Sprintf("dollar_win_model.GetDollarWinZtJoinByTempInviteId().CId(%d).uId(%d)", cId, uId)
-	if useCached {
-		if v, ok := cache.Cache.Get(k).(*DollarWinZtJoin); ok {
-			return v
-		}
-	}
-	item := new(DollarWinZtJoin)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("user_id", uId).Filter("zt_config_id", cId).Filter("is_paied", 1).OrderBy("paied_at").One(item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-//获取某专题参与并中奖记录
-func GetJoinPaiedWinListByZtConfigId(cId int64, useCached bool) (list []*DollarWinZtJoin) {
-
-	k := fmt.Sprintf("dollar_win_model.GetJoinPaiedWinListByZtConfigId().CId(%d)", cId)
-	if useCached {
-		if itemList, ok := cache.Cache.Get(k).([]*DollarWinZtJoin); ok {
-			return itemList
-		}
-	}
-	item := new(DollarWinZtJoin)
-	_, err := orm.NewOrm().QueryTable(item).Filter("zt_config_id", cId).Filter("is_paied", 1).Filter("is_win", 1).OrderBy("award_rank", "-paied_at").All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("dollar_win_model.GetJoinPaiedWinListByZtConfigId().CId(%d) err=[%s]", cId, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 10*time.Minute)
-
-	return list
-
-}
-
-//获取某专题某用户的参与记录
-func GetJoinPaiedWinListByZtConfigIdAndUId(cId, uId int64, useCached bool) (list []*DollarWinZtJoin) {
-
-	k := fmt.Sprintf("dollar_win_model.GetJoinPaiedWinListByZtConfigIdAndUId().CId(%d).UId(%d)", cId, uId)
-	if useCached {
-		if itemList, ok := cache.Cache.Get(k).([]*DollarWinZtJoin); ok {
-			return itemList
-		}
-	}
-
-	item := new(DollarWinZtJoin)
-	_, err := orm.NewOrm().QueryTable(item).Filter("zt_config_id", cId).Filter("user_id", uId).Filter("is_paied", 1).All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("dollar_win_model.GetJoinPaiedWinListByZtConfigIdAndUId()..CId(%d).UId(%d) err=[%s]", cId, uId, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 10*time.Minute)
-
-	return list
-
-}
-
-//获取某专题某用户的所有邀请者的参与记录
-func GetJoinFrendPaiedWinListByZtConfigId(cId, inviteId int64, useCached bool) (list []*DollarWinZtJoin) {
-	k := fmt.Sprintf("dollar_win_model.GetJoinFrendPaiedWinListByZtConfigIdAndUId().CId(%d).inviteId(%d)", cId, inviteId)
-	if useCached {
-		if itemList, ok := cache.Cache.Get(k).([]*DollarWinZtJoin); ok {
-			return itemList
-		}
-	}
-	item := new(DollarWinZtJoin)
-	_, err := orm.NewOrm().QueryTable(item).Filter("zt_config_id", cId).Filter("temp_invite_id", inviteId).Filter("is_paied", 1).OrderBy("-paied_at", "id").All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("dollar_win_model.GetJoinFrendPaiedWinListByZtConfigIdAndUId().CId(%d).inviteId(%d).paiedAt(%d).Page(%d).PerPage(%d) err=[%s]", cId, inviteId, err)
-		return nil
-	}
-	cache.Cache.Put(k, list, 10*time.Minute)
-	return list
-}
-
-//获取某专题某用户的所有邀请者的参与记录
-func GetJoinFrendPaiedWinListByZtConfigIdAndUId(cId, inviteId, paiedAt int64, page, perPage int64, useCached bool) (list []*DollarWinZtJoin) {
-	k := fmt.Sprintf("dollar_win_model.GetJoinFrendPaiedWinListByZtConfigIdAndUId().CId(%d).inviteId(%d).paiedAt(%d).Page(%d).PerPage(%d)", cId, inviteId, paiedAt, page, perPage)
-	if useCached {
-		if itemList, ok := cache.Cache.Get(k).([]*DollarWinZtJoin); ok {
-			return itemList
-		}
-	}
-	item := new(DollarWinZtJoin)
-	_, err := orm.NewOrm().QueryTable(item).Filter("zt_config_id", cId).Filter("temp_invite_id", inviteId).Filter("paied_at__gt", paiedAt).Filter("is_paied", 1).OrderBy("-paied_at", "id").All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("dollar_win_model.GetJoinFrendPaiedWinListByZtConfigIdAndUId().CId(%d).inviteId(%d).paiedAt(%d).Page(%d).PerPage(%d) err=[%s]", cId, inviteId, paiedAt, page, perPage, err)
-		return nil
-	}
-	cache.Cache.Put(k, list, 10*time.Minute)
-	return list
-}
-
-//分页获取某专题的参与记录
-func GetJoinPaiedListByZtConfigId(cId, page, perPage int64, useCached bool) (list []*DollarWinZtJoin) {
-	k := fmt.Sprintf("dollar_win_model.GetJoinPaiedListByZtConfigId().CId(%d).Page(%d).PerPage(%d)", cId, page, perPage)
-	if useCached {
-		if itemList, ok := cache.Cache.Get(k).([]*DollarWinZtJoin); ok {
-			return itemList
-		}
-	}
-
-	item := new(DollarWinZtJoin)
-	_, err := orm.NewOrm().QueryTable(item).Filter("zt_config_id", cId).Filter("is_paied", 1).OrderBy("paied_at", "id").
-		Limit(perPage, (page-1)*perPage).All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("dollar_win_model.GetJoinPaiedListByZtConfigId().CId(%d).Page(%d).PerPage(%d) err=[%s]", cId, page, perPage, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 10*time.Minute)
-
-	return list
-}
-
-//某专题的参与记录总数
-func GetJoinPaiedListCountByZtConfigId(cId int64, useCached bool) int64 {
-	k := fmt.Sprintf("dollar_win_model.GetJoinPaiedListCountByZtConfigId().CId(%d)", cId)
-	if useCached {
-		if itemList, ok := cache.Cache.Get(k).(int64); ok {
-			return itemList
-		}
-	}
-
-	type Count struct {
-		Count int64 `json:"count"`
-	}
-
-	count := &Count{}
-
-	sql := `
-		SELECT
-			count(id) AS count
-		FROM
-			dollar_win_zt_joins
-		WHERE
-			zt_config_id = ?
-		AND is_paied = 1
-	`
-	err := orm.NewOrm().Raw(sql, cId).QueryRow(&count)
-
-	if err != nil {
-		beego.BeeLogger.Warn("dollar_win_model.GetJoinPaiedZSumByZtConfigId().CId(%d) err=[%s]", cId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, count.Count, 10*time.Minute)
-
-	return count.Count
-}
-
-//获取好友某专题的参与记录总数
-func GetFrendJoinPaiedListCountByZtConfigId(cId, uId int64, useCached bool) int64 {
-	k := fmt.Sprintf("dollar_win_model.GetFrendJoinPaiedListCountByZtConfigId().CId(%d)).uId(%d)", cId, uId)
-	if useCached {
-		if itemList, ok := cache.Cache.Get(k).(int64); ok {
-			return itemList
-		}
-	}
-
-	type Count struct {
-		Count int64 `json:"count"`
-	}
-
-	count := &Count{}
-
-	sql := `
-		SELECT
-			count(id) AS count
-		FROM
-			dollar_win_zt_joins
-		WHERE
-			zt_config_id = ?
-		AND
-			temp_invite_id = ?
-		AND is_paied = 1
-	`
-	err := orm.NewOrm().Raw(sql, cId, uId).QueryRow(&count)
-
-	if err != nil {
-		beego.BeeLogger.Warn("dollar_win_model.GetJoinPaiedZSumByZtConfigId().CId(%d).uId(%d) err=[%s]", cId, uId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, count.Count, 10*time.Minute)
-
-	return count.Count
-}
-
-//某专题的参与记录支付时间之和
-func GetJoinPaiedZSumByZtConfigId(cId int64, useCached bool) int64 {
-	k := fmt.Sprintf("dollar_win_model.GetJoinPaiedZSumByZtConfigId().CId(%d)", cId)
-	if useCached {
-		if itemList, ok := cache.Cache.Get(k).(int64); ok {
-			return itemList
-		}
-	}
-
-	type Count struct {
-		Count int64 `json:"count"`
-	}
-
-	count := &Count{}
-
-	sql := `
-		SELECT
-			sum(calulate_paied_at) AS count
-		FROM
-			dollar_win_zt_joins
-		WHERE
-			zt_config_id = ?
-		AND is_paied = 1
-	`
-	err := orm.NewOrm().Raw(sql, cId).QueryRow(&count)
-
-	if err != nil {
-		beego.BeeLogger.Warn("dollar_win_model.GetJoinPaiedZSumByZtConfigId().CId(%d) err=[%s]", cId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, count.Count, 10*time.Minute)
-
-	return count.Count
-}
-
-//某专题的参与人数
-func GetJoinPaiedUserCountByZtConfigId(cId int64, useCached bool) int64 {
-	k := fmt.Sprintf("dollar_win_model.GetJoinPaiedUserCountByZtConfigId().CId(%d)", cId)
-	if useCached {
-		if itemList, ok := cache.Cache.Get(k).(int64); ok {
-			return itemList
-		}
-	}
-
-	type Count struct {
-		Count int64 `json:"count"`
-	}
-
-	count := &Count{}
-
-	sql := `
-		SELECT
-			distinct(user_id) as count
-		FROM
-			dollar_win_zt_joins
-		WHERE
-			zt_config_id = ?
-		AND is_paied = 1
-	`
-	err := orm.NewOrm().Raw(sql, cId).QueryRow(&count)
-
-	if err != nil {
-		beego.BeeLogger.Warn("dollar_win_model.GetJoinPaiedUserCountByZtConfigId().CId(%d) err=[%s]", cId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, count.Count, 10*time.Minute)
-
-	return count.Count
-}
-
-//最新名次的参与支付记录
-func GetLatestRankJoinPaiedByZtConfigId(id int64, useCached bool) *DollarWinZtJoin {
-	k := fmt.Sprintf("dollar_win_model.GetLatestRankJoinPaiedByZtConfigId[%d]", id)
-	if useCached {
-		if v, ok := cache.Cache.Get(k).(*DollarWinZtJoin); ok {
-			return v
-		}
-	}
-	var item *DollarWinZtJoin
-	sql := `
-		SELECT
-			*
-		FROM
-			dollar_win_zt_joins
-		WHERE
-			rank_number > 0
-		AND zt_config_id = ?
-		and is_paied = 1
-		ORDER BY
-			rank_number DESC
-		LIMIT 1
-	`
-	o := orm.NewOrm()
-	if err := o.Raw(sql, id).QueryRow(&item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-//第一条参与支付记录
-func GetFirstJoinPaiedByZtConfigId(id int64, useCached bool) *DollarWinZtJoin {
-	k := fmt.Sprintf("dollar_win_model.GetFirstJoinPaiedByZtConfigId[%d]", id)
-	if useCached {
-		if v, ok := cache.Cache.Get(k).(*DollarWinZtJoin); ok {
-			return v
-		}
-	}
-	var item *DollarWinZtJoin
-	sql := `
-		SELECT
-			*
-		FROM
-			dollar_win_zt_joins
-		WHERE
-			zt_config_id = ?
-		and is_paied = 1
-		ORDER BY
-			paied_at
-		LIMIT 1
-	`
-	o := orm.NewOrm()
-	if err := o.Raw(sql, id).QueryRow(&item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-//好获取最近的邀请者的参与记录
-func GetInviteJoinPaiedListByZtConfigIdUidAndPaiedAt(id, uID, startTime, endTime int64, useCached bool) *DollarWinZtJoin {
-	k := fmt.Sprintf("dollar_win_model.GetInviteJoinPaiedListByZtConfigIdAndPaiedAt[%d]uID[%d]startTime[%d]endTime[%d]", id, uID, startTime, endTime)
-	if useCached {
-		if v, ok := cache.Cache.Get(k).(*DollarWinZtJoin); ok {
-			return v
-		}
-	}
-	var item *DollarWinZtJoin
-	sql := `
-		SELECT
-			*
-		FROM
-			dollar_win_zt_joins
-		WHERE
-			zt_config_id = ?
-		and is_paied = 1
-		and temp_invite_id = ?
-		and paied_at >= ?
-		and paied_at <= ?
-			ORDER BY
-			paied_at
-		LIMIT 1
-	`
-	o := orm.NewOrm()
-	if err := o.Raw(sql, id, uID, startTime, endTime).QueryRow(&item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-//x时间之后支付的记录
-func GetoinPaiedListByZtConfigIdAndPaiedAt(id, paiedAt int64, useCached bool) (list []*DollarWinZtJoin) {
-	k := fmt.Sprintf("dollar_win_model.GetoinPaiedListByZtConfigIdAndPaiedAt[%d,%d]", id, paiedAt)
-	if useCached {
-		if v, ok := cache.Cache.Get(k).([]*DollarWinZtJoin); ok {
-			return v
-		}
-	}
-	sql := `
-		SELECT
-			*
-		FROM
-			dollar_win_zt_joins
-		WHERE
-			zt_config_id = ?
-		and is_paied = 1
-		and paied_at > ?
-		ORDER BY
-			paied_at
-	`
-	o := orm.NewOrm()
-	if _, err := o.Raw(sql, id, paiedAt).QueryRows(&list); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}
-
-//好获取所有的有邀请者的参与记录
-func GetInviteJoinPaiedListByZtConfigIdAndPaiedAt(id, startTime, endTime int64, useCached bool) (list []*DollarWinZtJoin) {
-	k := fmt.Sprintf("dollar_win_model.GetInviteJoinPaiedListByZtConfigIdAndPaiedAt[%d]startTime[%d]endTime[%d]", id, startTime, endTime)
-	if useCached {
-		if v, ok := cache.Cache.Get(k).([]*DollarWinZtJoin); ok {
-			return v
-		}
-	}
-	sql := `
-		SELECT
-			*
-		FROM
-			dollar_win_zt_joins
-		WHERE
-			zt_config_id = ?
-		and is_paied = 1
-		and paied_at >= ?
-		and paied_at <= ?
-		and temp_invite_id > 0
-		group by temp_invite_id
-		ORDER BY
-			paied_at
-	`
-	o := orm.NewOrm()
-	if _, err := o.Raw(sql, id, startTime, endTime).QueryRows(&list); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}
-
-//取某名次的参与支付记录
-func GetJoinPaiedByZtConfigIdAndRankNum(id, rankNum int64, useCached bool) *DollarWinZtJoin {
-	k := fmt.Sprintf("dollar_win_model.GetJoinPaiedByZtConfigIdAndRankNum[%d, %d]", id, rankNum)
-	if useCached {
-		if v, ok := cache.Cache.Get(k).(*DollarWinZtJoin); ok {
-			return v
-		}
-	}
-	var item *DollarWinZtJoin
-	sql := `
-		SELECT
-			*
-		FROM
-			dollar_win_zt_joins
-		WHERE
-			zt_config_id = ?
-		and is_paied = 1
-		and rank_number = ?
-		limit 1
-
-	`
-	o := orm.NewOrm()
-	if err := o.Raw(sql, id, rankNum).QueryRow(&item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-func (self *DollarWinZtJoin) Save() bool {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save DollarWinZtJoin Id=[%s] .err=[%s]", self.OrderId, err)
-		return false
-	}
-	return true
-}
-
-func (self *DollarWinZtConfig) Save() bool {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save DollarWinZtConfig Id=[%d] .err=[%s]", self.Id, err)
-		return false
-	}
-
-	k := fmt.Sprintf("dollar_win_model.DollarWinZtConfig[%d]", self.Id)
-	cache.Cache.Delete(k)
-	return true
-}

+ 0 - 7
go/gopath/src/fohow.com/apps/models/dollar_win_model/init.go

@@ -1,7 +0,0 @@
-package dollar_win_model
-
-import "github.com/astaxie/beego/orm"
-
-func init() {
-	orm.RegisterModel(new(DollarWinZtConfig), new(DollarWinZtJoin))
-}

+ 0 - 24
go/gopath/src/fohow.com/apps/models/exchange_model/init.go

@@ -1,24 +0,0 @@
-package exchange_model
-
-import (
-	"fmt"
-	"strings"
-
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-)
-
-func init() {
-	orm.RegisterModel(new(Order), new(Platform))
-}
-
-func GetFullImgUrl(img string) string {
-	if img == "" {
-		return ""
-	}
-	if strings.HasPrefix(img, "http://") {
-		return img
-	} else {
-		return fmt.Sprintf("%s/%s", beego.AppConfig.String("AliOssImgHost"), img)
-	}
-}

+ 0 - 153
go/gopath/src/fohow.com/apps/models/exchange_model/order.go

@@ -1,153 +0,0 @@
-package exchange_model
-
-import (
-	"fmt"
-	"strings"
-	"time"
-
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"github.com/uuid"
-	"fohow.com/cache"
-)
-
-const (
-	exchange_orders_tablename = "exchange_orders"
-
-	ORDER_PREFIX_PLATFORM_EX = "PEX"
-
-	SOURCE_PLATFORM_EXCHANGE = "platform_exchange"
-
-	PL_RET_CODE_SUCCESS = "0000" //平台兑换成功code标识
-)
-
-type Order struct {
-	Id          int64     `orm:"column(id);pk"                                       json:"id"`           // int(11)
-	UserId      int64     `orm:"column(user_id)"                                     json:"user_id"`      // int(11)
-	WxUserId    int64     `orm:"column(wx_user_id)"                                  json:"wx_user_id"`   // int(11)
-	PlatformId  int64     `orm:"column(platform_id)"                                 json:"platform_id"`  // int(11)
-	OrderId     string    `orm:"column(order_id);null"                               json:"order_id"`     // varchar(255)
-	Source      string    `orm:"column(source);null"                                 json:"source"`       // varchar(64)
-	SourceCount int64     `orm:"column(source_count)"                                json:"source_count"` // int(11)
-	PaiedCount  int64     `orm:"column(paied_count)"                                 json:"paied_count"`  // int(11)
-	TradeNo     string    `orm:"column(trade_no);null"                               json:"trade_no"`     // varchar(64)
-	PaiedAt     int64     `orm:"column(paied_at);null"                               json:"paied_at"`     // int(11)
-	State       int64     `orm:"column(state);null"                                  json:"state"`        // tinyint(4)
-	Remark      string    `orm:"column(remark);null"                                 json:"remark"`       // varchar(255)
-	CreatedAt   time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"created_at"`   // datetime
-	UpdatedAt   time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"updated_at"`   // datetime
-}
-
-func (self *Order) TableName() string {
-	return exchange_orders_tablename
-}
-
-func (self *Order) Create(wxUId, uId, pId, sCount, pCount int64, source, tradeNo string) *Order {
-	var oId string
-	oId = CreateOrderId(ORDER_PREFIX_PLATFORM_EX)
-	order := &Order{
-		OrderId:     oId,
-		PlatformId:  pId,
-		WxUserId:    wxUId,
-		UserId:      uId,
-		Source:      source,
-		SourceCount: sCount,
-		PaiedCount:  pCount,
-		TradeNo:     tradeNo,
-		PaiedAt:     time.Now().Unix(),
-		State:       1,
-	}
-	if _, err := orm.NewOrm().Insert(order); err != nil {
-		beego.BeeLogger.Error("insert order err=[%s]", err)
-		return nil
-	}
-	return order
-}
-
-func (self *Order) BeforePayCreate(wxUId, uId, pId, sCount, pCount int64, source, tradeNo string) *Order {
-	var oId string
-	oId = CreateOrderId(ORDER_PREFIX_PLATFORM_EX)
-	order := &Order{
-		OrderId:     oId,
-		PlatformId:  pId,
-		WxUserId:    wxUId,
-		UserId:      uId,
-		Source:      source,
-		SourceCount: sCount,
-		PaiedCount:  pCount,
-		TradeNo:     tradeNo,
-		PaiedAt:     time.Now().Unix(),
-		State:       0,
-	}
-	if _, err := orm.NewOrm().Insert(order); err != nil {
-		beego.BeeLogger.Error("insert order err=[%s]", err)
-		return nil
-	}
-	return order
-}
-
-func (self *Order) Save() bool {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("SaveOrder order=[%s] .err=[%s]", self.OrderId, err)
-		return false
-	}
-	return true
-}
-
-//生成订单ID
-func CreateOrderId(prefix string) string {
-	n := time.Now().Format("20060102")
-	u := uuid.NewV4().String()
-	c := strings.Split(u, "-")
-	oId := strings.ToUpper(fmt.Sprintf("%s%s%s", prefix, n, c[0]))
-	beego.BeeLogger.Info("create order_id=%s", oId)
-	return oId
-}
-
-//给内部人员调用查询前一天兑换代金券总数
-func GetYesterdayTotalPaiedCount(start, end time.Time, useCache bool) int64 {
-
-	k := fmt.Sprintf("exchange_model.GetYesterdayTotalPaiedCount.start(%d).end(%d)", start.Unix(), end.Unix())
-
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-	type Result struct {
-		Total int64 `json:"total"`
-	}
-
-	var ret Result
-	o := orm.NewOrm()
-	sql := fmt.Sprintf("SELECT sum(paied_count) as total FROM %s "+
-		"where created_at >= ? and created_at < ? and paied_at != 0;", exchange_orders_tablename)
-
-	err := o.Raw(sql, start.Add(-8*time.Hour), end.Add(-8*time.Hour)).QueryRow(&ret)
-
-	if err != nil {
-		beego.BeeLogger.Error("exchange_model.GetYesterdayTotalPaiedCount.start(%d).end(%d):err[%s]", start.Unix(), end.Unix(), err)
-		return 0
-	}
-
-	cache.Cache.Put(k, ret.Total, 2*time.Hour)
-
-	return ret.Total
-
-}
-
-func GetExchangeOrderByTradeNo(tradeNo string, useCache bool) *Order {
-	k := fmt.Sprintf("exchange_model.GetExchangeOrderByTradeNo[%d]", tradeNo)
-	if useCache {
-		if v, ok := cache.Cache.Get(k).(*Order); ok {
-			return v
-		}
-	}
-	item := new(Order)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("trade_no", tradeNo).One(item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}

+ 0 - 135
go/gopath/src/fohow.com/apps/models/exchange_model/platform.go

@@ -1,135 +0,0 @@
-package exchange_model
-
-import (
-	"fmt"
-	"time"
-
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-
-	"fohow.com/cache"
-)
-
-const (
-	exchange_platforms_tablename = "exchange_platforms"
-	PLATFORM_STATE_ONLINE        = 1 //已上线
-	PLATFORM_STATE_OFFLINE       = 0 //未上线
-	PLATFORM_STATE_COMING        = 3 //即将开放
-	PLATFORM_STATE_LIMIT_OPEN    = 2 //限时开放
-
-	DEFAULT_PLATFORM_TAG = "d5c"
-)
-
-type Platform struct {
-	Id          int64     `orm:"column(id);pk"                                       json:"id"`           // int(11)
-	Name        string    `orm:"column(name)"                                        json:"name"`         // varchar(255)
-	Tag         string    `orm:"column(tag)"                                        json:"tag"`           // varchar(255)
-	Ratio       int64     `orm:"column(ratio)"                                       json:"ratio"`        // int(11)
-	PCount      int64     `orm:"column(p_count)"                                 json:"p_count"`          // int(11)
-	LabiCount   int64     `orm:"column(labi_count)"                                 json:"labi_count"`    // int(11)
-	PStartCount int64     `orm:"column(p_start_count)"                              json:"p_start_count"` // int(11)
-	LabiRange   int64     `orm:"column(labi_range)"                                 json:"labi_range"`    // int(11)
-	Logo        string    `orm:"column(logo)"                                        json:"logo"`         // varchar(255)
-	Slogan      string    `orm:"column(slogan)"                                      json:"slogan"`       //varchar(255)
-	Sort        int64     `orm:"column(sort)"                                        json:"-"`            // int(11)
-	State       int64     `orm:"column(state)"                                       json:"state"`        // int(11)
-	StateCn     string    `orm:"-"                                       json:"state_cn"`                 // int(11)
-	Secret      string    `orm:"column(secret)"                                      json:"-"`            // varchar(255)
-	GetText     string    `orm:"column(get_text)"                                    json:"get_text"`     // varchar(255)
-	GetUrl      string    `orm:"column(get_url)"                                     json:"get_url"`      //varchar(255)
-	GetUrlType  string    `orm:"column(get_url_type)"                                json:"get_url_type"` //varchar(255)
-	CheckUrl    string    `orm:"column(check_url)"                                   json:"-"`            // varchar(255)
-	ExchangeUrl string    `orm:"column(exchange_url)"                                json:"-"`            // varchar(255)
-	CreatedAt   time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`            // datetime
-	UpdatedAt   time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`            // datetime
-}
-
-func (self *Platform) TableName() string {
-	return exchange_platforms_tablename
-}
-
-//返回state名称
-func (self *Platform) GetStateCn() string {
-	cn := ""
-	switch self.State {
-	case PLATFORM_STATE_ONLINE:
-		cn = "已上线"
-	case PLATFORM_STATE_COMING:
-		cn = "即将开放"
-	case PLATFORM_STATE_LIMIT_OPEN:
-		cn = "限时开放"
-	}
-	return cn
-}
-
-func GetPlatformById(id int64, useCached bool) *Platform {
-	k := fmt.Sprintf("exchange_model.GetPlatformById[%d]", id)
-	if useCached {
-		if v, ok := cache.Cache.Get(k).(*Platform); ok {
-			return v
-		}
-	}
-	item := new(Platform)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("id", id).One(item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-func GetPlatformByTag(tag string, useCached bool) *Platform {
-	k := fmt.Sprintf("exchange_model.GetPlatformByTag[%s]", tag)
-	if useCached {
-		if v, ok := cache.Cache.Get(k).(*Platform); ok {
-			return v
-		}
-	}
-	item := new(Platform)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("tag", tag).One(item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-func GetPlatforms(page, perPage int64, useCache bool) (list []*Platform) {
-	k := fmt.Sprintf("exchange_model.GetPlatforms.page(%d).perPage(%d)", page, perPage)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*Platform); ok {
-			return s
-		}
-	}
-
-	item := new(Platform)
-	qs := orm.NewOrm().QueryTable(item)
-	qs = qs.Exclude("state", PLATFORM_STATE_OFFLINE)
-
-	if _, err := qs.OrderBy("-sort").
-		Limit(perPage, (page-1)*perPage).All(&list); err != nil {
-		beego.BeeLogger.Warn("GetPlatforms page=%d perPage=%d, err=[%s]", page, perPage, err)
-		return nil
-	}
-	for _, item := range list {
-		item.Logo = GetFullImgUrl(item.Logo)
-		item.StateCn = item.GetStateCn()
-	}
-	cache.Cache.Put(k, list, 10*time.Minute)
-	return list
-}
-
-func GetPlatformsCount(useCache bool) int64 {
-	k := fmt.Sprintf("exchange_model.GetPlatformsCount")
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-	item := new(Platform)
-	o := orm.NewOrm()
-	count, _ := o.QueryTable(item).Exclude("state", PLATFORM_STATE_OFFLINE).Count()
-
-	cache.Cache.Put(k, count, 10*time.Minute)
-	return count
-}

+ 0 - 25
go/gopath/src/fohow.com/apps/models/granary_model/balance.go

@@ -1,25 +0,0 @@
-package granary_model
-
-import (
-	"time"
-	// "github.com/astaxie/beego/orm"
-)
-
-const (
-	user_granary_balances_tablename = "user_granary_balances"
-)
-
-type Balance struct {
-	Id        int64     `orm:"column(id);pk"                                       json:"id"`        // int(11)
-	UserId    int64     `orm:"column(user_id)"                                     json:"user_id"`   // int(11)
-	Count     int64     `orm:"column(count)"                                       json:"count"`     // int(11)
-	Source    string    `orm:"column(source);null"                                 json:"source"`    // varchar(64)
-	RelateId  string    `orm:"column(relate_id);null"                              json:"relate_id"` // varchar(255)
-	Remark    string    `orm:"column(remark);null"                                 json:"remark"`    // varchar(255)
-	CreatedAt time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`         // datetime
-	UpdatedAt time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`         // datetime
-}
-
-func (self *Balance) TableName() string {
-	return user_granary_balances_tablename
-}

+ 0 - 29
go/gopath/src/fohow.com/apps/models/granary_model/buyback.go

@@ -1,29 +0,0 @@
-package granary_model
-
-import (
-	"time"
-	// "github.com/astaxie/beego/orm"
-)
-
-const (
-	user_buybacks_tablename = "user_buybacks"
-)
-
-type Buyback struct {
-	Id         int64     `orm:"column(id);pk"                                       json:"id"`           // int(11)
-	GranaryId  int64     `orm:"column(granary_id)"                                  json:"granary_id"`   // int(11)
-	OrderId    string    `orm:"column(order_id)"                                    json:"order_id"`     // varchar(255)
-	SaleUserId int64     `orm:"column(sale_user_id)"                                json:"sale_user_id"` // int(11)
-	Count      int64     `orm:"column(count)"                                       json:"count"`        // int(11)
-	TotalPrice int64     `orm:"column(total_price)"                                 json:"total_price"`  // int(11)
-	State      int64     `orm:"column(state);null"                                  json:"state"`        // tinyint(4)
-	TradeNo    string    `orm:"column(trade_no);null"                               json:"trade_no"`     // varchar(255)
-	TradeAt    int64     `orm:"column(trade_at);null"                               json:"trade_at"`     // int(11)
-	PayWay     string    `orm:"column(pay_way);null"                                json:"pay_way"`      // varchar(255)
-	CreatedAt  time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`            // datetime
-	UpdatedAt  time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`            // datetime
-}
-
-func (self *Buyback) TableName() string {
-	return user_buybacks_tablename
-}

+ 0 - 217
go/gopath/src/fohow.com/apps/models/granary_model/granary.go

@@ -1,217 +0,0 @@
-package granary_model
-
-import (
-	"fmt"
-	"sync"
-	"time"
-
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-
-	"fohow.com/apps/models/product_model"
-
-	"fohow.com/cache"
-)
-
-const (
-	user_granaries_tablename = "user_granaries"
-)
-
-type Granary struct {
-	sync.Mutex
-	Id              int64                  `orm:"column(id);pk"                                       json:"id"`                     // int(11)
-	ProjectBonusId  int64                  `orm:"column(project_bonus_id)"                            json:"project_bonus_id"`       // int(11)
-	UserId          int64                  `orm:"column(user_id)"                                     json:"user_id"`                // int(11)
-	ProductId       int64                  `orm:"column(product_id)"                                  json:"product_id"`             // int(11)
-	Product         *product_model.Product `orm:"-"                                                   json:"product"`                // int(11)
-	TotalCount      int64                  `orm:"column(total_count)"                                 json:"total_count"`            // int(11)
-	SoldCount       int64                  `orm:"column(sold_count);null"                             json:"sold_count"`             // int(11)
-	BuybackCount    int64                  `orm:"column(buyback_count);null"                          json:"buyback_count"`          // int(11)
-	BuybackAmount   int64                  `orm:"-"                                                   json:"buyback_amount"`         // int(11)
-	ReBuybackAmount int64                  `orm:"column(receive_buyback_amount)"                      json:"receive_buyback_amount"` // int(11)
-	LeftCount       int64                  `orm:"-"                                                   json:"left_count"`             // int(11)
-	ValidCount      int64                  `orm:"-"                                                   json:"valid_count"`            // int(11)
-	SoldAmount      int64                  `orm:"column(sold_amount);null"                            json:"sold_amount"`            // int(11)
-	SelfUseCount    int64                  `orm:"column(self_use_count);null"                         json:"self_use_count"`         // int(11)
-	SelfUseMin      int64                  `orm:"column(self_use_min);null"                           json:"self_use_min"`           // int(11)
-	LastNoticeTime  int64                  `orm:"column(last_notice_time);null"                       json:"last_notice_time"`
-	NoticeCount     int64                  `orm:"column(notice_count);null"                           json:"notice_count"`
-	BuybackMax      int64                  `orm:"column(buyback_max);null"                            json:"buyback_max"` // int(11)
-	BuybackMin      int64                  `orm:"column(buyback_min);null"                            json:"buyback_min"` // int(11)
-	Remark          string                 `orm:"column(remark);null"                                 json:"remark"`      // varchar(255)
-	BuybackPrice    int64                  `orm:"-"                         json:"buyback_price"`                         // int(11)
-	BuybackStartAt  int64                  `orm:"-"                         json:"buyback_start_at"`                      // int(11)
-	BuybackStopAt   int64                  `orm:"-"                         json:"buyback_stop_at"`                       // int(11)
-	CTime           int64                  `orm:"-"                         json:"ctime"`                                 // int(11)
-	CreatedAt       time.Time              `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`           // datetime
-	UpdatedAt       time.Time              `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`           // datetime
-
-	LastGdRemindAt int64 `orm:"column(last_gd_remind_at);null"                      json:"-"`
-	LastZyRemindAt int64 `orm:"column(last_zy_remind_at);null"                      json:"-"`
-}
-
-func (self *Granary) TableName() string {
-	return user_granaries_tablename
-}
-
-func (self *Granary) Create(bId, uId, pId, count, selfMin, buybackMax, buybackMin int64) *Granary {
-	item := &Granary{
-		ProjectBonusId: bId,
-		ProductId:      pId,
-		UserId:         uId,
-		TotalCount:     count,
-		SelfUseMin:     selfMin,
-		BuybackMax:     buybackMax,
-		BuybackMin:     buybackMin,
-	}
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		beego.BeeLogger.Error("insert Granary err=[%s]", err)
-		return nil
-	}
-	item.Id = id
-	return item
-}
-
-func (self *Granary) Save() error {
-	self.Lock()
-	defer self.Unlock()
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save Granary id=[%d] .err=[%s]", self.Id, err)
-		return err
-	}
-	return nil
-}
-
-func GetGranaryByBonusIdAndUId(bId, uId int64, useCache bool) *Granary {
-	k := fmt.Sprintf("granary_model.GetGranaryByBonusIdAndUId[%d,%d]", bId, uId)
-	if useCache {
-		if v, ok := cache.Cache.Get(k).(*Granary); ok {
-			return v
-		}
-	}
-	item := new(Granary)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("project_bonus_id", bId).Filter("user_id", uId).One(item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-func GetGranaryByBonusId(bId int64, useCache bool) (list []*Granary) {
-	k := fmt.Sprintf("granary_model.GetGranaryByBonusId[%d]", bId)
-	if useCache {
-		if v, ok := cache.Cache.Get(k).([]*Granary); ok {
-			return v
-		}
-	}
-	item := new(Granary)
-	o := orm.NewOrm()
-	if _, err := o.QueryTable(item).Filter("project_bonus_id", bId).All(&list); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}
-
-func GetGranaryById(id int64, useCache bool) *Granary {
-	k := fmt.Sprintf("granary_model.GetGranaryById[%d]", id)
-	if useCache {
-		if v, ok := cache.Cache.Get(k).(*Granary); ok {
-			return v
-		}
-	}
-	item := new(Granary)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("id", id).One(item); err != nil {
-		return nil
-	}
-	//item.LeftCount = item.TotalCount - item.BuybackCount - item.SoldCount - item.SelfUseCount
-	// item.Cover = GetCoverByPId(id, useCache)
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-func GetGranariesByUId(uId, page, perPage int64, useCache bool) (list []*Granary) {
-	k := fmt.Sprintf("granary_model.GetGranariesByUId(%d).page(%d).perPage(%d)", uId, page, perPage)
-	if useCache {
-		if ret, ok := cache.Cache.Get(k).([]*Granary); ok {
-			return ret
-		}
-	}
-	o := orm.NewOrm()
-	_, err := o.QueryTable(new(Granary)).Filter("user_id", uId).
-		OrderBy("-created_at").
-		Limit(perPage, (page-1)*perPage).
-		All(&list)
-	if err != nil {
-		beego.BeeLogger.Debug("GetGranariesByUId err=%s", err)
-		return nil
-	}
-	// for _, item := range list {
-	// 	p := product_model.GetProductById(item.ProductId, true)
-	// 	item.Product = p
-	// 	item.CTime = item.CreatedAt.Unix()
-	// }
-	cache.Cache.Put(k, list, 10*time.Minute)
-	return list
-}
-
-func GetGranariesCountByUId(uId int64) int64 {
-	// k := fmt.Sprintf("granary_model.GetGranariesCountByUId(%d)", uID)
-	// if useCache {
-	// 	if ret, ok := cache.Cache.Get(k).(int64); ok {
-	// 		return ret
-	// 	}
-	// }
-	item := new(Granary)
-	o := orm.NewOrm()
-	count, _ := o.QueryTable(item).Filter("user_id", uId).Count()
-
-	// cache.Cache.Put(k, count, 10*time.Minute)
-	return count
-}
-
-func GetZeroSelfUseGranaries() (list []*Granary) {
-
-	_, err := orm.NewOrm().QueryTable(new(Granary)).Filter("self_use_count", 0).All(&list)
-	if err != nil {
-		beego.BeeLogger.Debug("granary_model.GetZeroSelfUseGranaries(), err=[%s]", err)
-		return nil
-	}
-
-	return list
-}
-
-func GetProjectGranaryByWayIdAndUId(wId, uId int64, useCache bool) *Granary {
-
-	k := fmt.Sprintf("granary_model.GetProjectGranaryByWayIdAndUId[%d]", wId)
-	if useCache {
-		if v, ok := cache.Cache.Get(k).(*Granary); ok {
-			return v
-		}
-	}
-
-	sql := `
-
-		SELECT
-			g.*
-		FROM
-			project_bonuses b,
-			user_granaries g
-		WHERE
-			b.id = g.project_bonus_id
-		AND b.project_invest_way_id = ?
-		AND g.user_id = ?
-		LIMIT 1;
-
-`
-	item := new(Granary)
-	o := orm.NewOrm()
-	if err := o.Raw(sql, wId, uId).QueryRow(item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}

+ 0 - 19
go/gopath/src/fohow.com/apps/models/granary_model/init.go

@@ -1,19 +0,0 @@
-package granary_model
-
-import (
-	// "fmt"
-	// "strings"
-
-	// "github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-)
-
-func init() {
-	orm.RegisterModel(new(Granary),
-		// new(ProductAttr), new(ProductAttrKey),new(ProductAttrValue),
-		new(SaleOrder),
-		new(Buyback),
-		new(Balance),
-		new(SaleRelateOrder),
-	)
-}

+ 0 - 306
go/gopath/src/fohow.com/apps/models/granary_model/sale_order.go

@@ -1,306 +0,0 @@
-package granary_model
-
-import (
-	"fmt"
-	"sync"
-	"time"
-
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	// "fohow.com/apps/models/order_model"
-	"fohow.com/apps/models/product_model"
-
-	"fohow.com/cache"
-	"fohow.com/libs/tool"
-)
-
-const (
-	user_sale_orders_tablename        = "user_sale_orders"
-	user_sale_relate_orders_tablename = "user_sale_relate_orders"
-
-	ORDER_ID_PREFIX_SALE = "SALE"
-
-	//订单状态
-	ORDER_STATE_OFFLINE = 0 //下线
-	ORDER_STATE_ONLINE  = 1 //上线
-	ORDER_STATE_SELL_UP = 2 //售罄
-	//操作状态
-	OPERATE_STATE_NOTHING   = 0 //未操作
-	OPERATE_STATE_APPLY_ON  = 1 //申请上线
-	OPERATE_STATE_APPLY_OFF = 2 //申请下线
-)
-
-func (self *SaleRelateOrder) TableName() string {
-	return user_sale_relate_orders_tablename
-}
-
-func (self *SaleOrder) TableName() string {
-	return user_sale_orders_tablename
-}
-
-func (self *SaleOrder) Save() bool {
-	self.Lock()
-	defer self.Unlock()
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save SaleOrder=[%s] .err=[%s]", self.OrderId, err)
-		return false
-	}
-	return true
-}
-
-//创建订单
-func (self *SaleOrder) Create(sUId, gId, pId, count, firstInvestTime int64) *SaleOrder {
-	var oId string
-	oId = tool.CreateOrderId(ORDER_ID_PREFIX_SALE)
-	order := &SaleOrder{
-		OrderId:         oId,
-		ProductId:       pId,
-		SaleUserId:      sUId,
-		GranaryId:       gId,
-		TotalCount:      count,
-		State:           ORDER_STATE_ONLINE,
-		FirstInvestTime: firstInvestTime,
-	}
-	id, err := orm.NewOrm().Insert(order)
-	if err != nil {
-		beego.BeeLogger.Error("insert SaleOrder err=[%s]", err)
-		return nil
-	}
-	order.Id = id
-	return order
-}
-
-//创建关联订单
-func (self *SaleRelateOrder) Create(saleOId, oId string, count, wxUId int64) *SaleRelateOrder {
-	order := &SaleRelateOrder{
-		OrderId:     oId,
-		SaleOrderId: saleOId,
-		Count:       count,
-		WxUId:       wxUId,
-	}
-	id, err := orm.NewOrm().Insert(order)
-	if err != nil {
-		beego.BeeLogger.Error("insert SaleRelateOrder err=[%s]", err)
-		return nil
-	}
-	order.Id = id
-	return order
-}
-
-type SaleRelateOrder struct {
-	Id          int64     `orm:"column(id);pk"                                       json:"id"`            // int(11)
-	OrderId     string    `orm:"column(order_id);null"                               json:"order_id"`      // varchar(255)
-	SaleOrderId string    `orm:"column(sale_order_id);null"                          json:"sale_order_id"` // varchar(255)
-	Count       int64     `orm:"column(count);null"                                  json:"count"`         // int(11)
-	WxUId       int64     `orm:"column(wx_uid);null"                                  json:"wx_uid"`       // int(11)
-	CreatedAt   time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`             // datetime
-	UpdatedAt   time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`             // datetime
-}
-
-type SaleOrder struct {
-	sync.Mutex
-	Id              int64                  `orm:"column(id);pk"                                       json:"id"`                // int(11)
-	GranaryId       int64                  `orm:"column(granary_id)"                                  json:"granary_id"`        // int(11)
-	OrderId         string                 `orm:"column(order_id)"                                    json:"order_id"`          // varchar(255)
-	SaleUserId      int64                  `orm:"column(sale_user_id)"                                json:"sale_user_id"`      // int(11)
-	SaleUserHead    string                 `orm:"-"                                json:"sale_user_head"`                       // int(11)
-	SaleUserName    string                 `orm:"-"                                json:"sale_user_name"`                       // int(11)
-	ProductId       int64                  `orm:"column(product_id)"                                  json:"product_id"`        // int(11)
-	Product         *product_model.Product `orm:"-"                                  json:"product"`                            // int(11)
-	TotalCount      int64                  `orm:"column(total_count)"                                 json:"total_count"`       // int(11)
-	SoldCount       int64                  `orm:"column(sold_count)"                                  json:"sold_count"`        // int(11)
-	State           int64                  `orm:"column(state);null"                                  json:"state"`             // tinyint(4)
-	OperateState    int64                  `orm:"column(operate_state);null"                          json:"operate_state"`     // tinyint(4)
-	LastOperateTime int64                  `orm:"column(last_operate_time);null"                      json:"last_operate_time"` // int(11)
-	FirstInvestTime int64                  `orm:"column(first_invest_time);null"                      json:"first_invest_time"` // int(11)
-	CreatedAt       time.Time              `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`                 // datetime
-	UpdatedAt       time.Time              `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`                 // datetime
-}
-
-type RelateOrderDetail struct {
-	Count       int64     `orm:"-" json:"count"`        // int(11)
-	WxUid       int64     `orm:"-" json:"wx_uid"`       // int(11)
-	WxUserHead  string    `orm:"-" json:"wx_user_head"` // varchar(255)
-	ReceiveTime time.Time `orm:"-" json:"receive_time"` // varchar(255)
-	ReceiveAt   int64     `orm:"-" json:"receive_at"`   // int(11)
-	Status      string    `orm:"-" json:"status"`       // varchar(255)
-	StatusCn    string    `orm:"-" json:"status_cn"`    // varchar(255)
-}
-
-//获取已销售的代销订单
-func GetSaleRelateOrdersBySOId(sOId string) (orders []*RelateOrderDetail) {
-	o := orm.NewOrm()
-	// tbn := new(Order).TableName()
-	// sql := fmt.Sprintf("select sum(count) as count, wx_uid from user_sale_relate_orders where sale_order_id = ? group by wx_uid order by created_at")
-	sql := fmt.Sprintf("select user_sale_relate_orders.wx_uid, user_sale_relate_orders.count,orders.status,orders.receive_time from user_sale_relate_orders left JOIN orders on orders.order_id = user_sale_relate_orders.order_id where user_sale_relate_orders.sale_order_id = ? order by orders.receive_time desc;")
-	_, err := o.Raw(sql, sOId).QueryRows(&orders)
-	if err != nil {
-		return nil
-	}
-	return orders
-}
-
-//根据订单ID找代销订单
-func GetSaleRelateOrdersByOId(oId string) (orders []*SaleRelateOrder) {
-	item := new(SaleRelateOrder)
-	qs := orm.NewOrm().QueryTable(item)
-	qs = qs.Filter("order_id", oId)
-	if _, err := qs.All(&orders); err != nil {
-		return nil
-	}
-	return orders
-}
-
-func (self *SaleOrder) Buy(buyerWxUId int64, count int64, orderId string) bool {
-	if count > self.TotalCount-self.SoldCount {
-		return false
-	}
-	self.Lock()
-	defer self.Unlock()
-	saleOrder := new(SaleRelateOrder).Create(self.OrderId, orderId, count, buyerWxUId)
-	if saleOrder == nil {
-		return false
-	}
-	self.SoldCount += count
-	// if self.TotalCount == self.SoldCount {
-	// 	self.State = ORDER_STATE_SELL_UP
-	// }
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		// beego.BeeLogger.Error("Buy SaleOrder=[%s] .err=[%s]", self.OrderId, err)
-		return false
-	}
-	return true
-}
-
-func GetSaleOrderByGId(gId int64, useCache bool) *SaleOrder {
-	k := fmt.Sprintf("granary_model.GetSaleOrderByGId[%d]", gId)
-	if useCache {
-		if v, ok := cache.Cache.Get(k).(*SaleOrder); ok {
-			return v
-		}
-	}
-	item := new(SaleOrder)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("granary_id", gId).One(item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-func GetSaleOrderByOId(oId string) *SaleOrder {
-	item := new(SaleOrder)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("order_id", oId).One(item); err != nil {
-		return nil
-	}
-	return item
-}
-
-//找出挂单中的商品剩余总库存
-func GetSaleOrderLeftCountByPId(pId int64) int64 {
-	type Ret struct {
-		Count int64
-	}
-	ret := &Ret{}
-	o := orm.NewOrm()
-	tbn := new(SaleOrder).TableName()
-	sql := fmt.Sprintf("SELECT sum(total_count - sold_count) as count FROM `%s` WHERE state = ? and product_id=?;", tbn)
-	err := o.Raw(sql, ORDER_STATE_ONLINE, pId).QueryRow(ret)
-	if err != nil {
-		return 0
-	}
-	return ret.Count
-}
-
-//找出所有代销订单
-func GetSaleOrders() (list []*SaleOrder) {
-	item := new(SaleOrder)
-	qs := orm.NewOrm().QueryTable(item)
-	// qs = qs.Filter("operate_state", OPERATE_STATE_APPLY_OFF)
-	if _, err := qs.All(&list); err != nil {
-		return nil
-	}
-	return list
-}
-
-//找出申请下架的订单
-func GetOfflineSaleOrders() (list []*SaleOrder) {
-	item := new(SaleOrder)
-	qs := orm.NewOrm().QueryTable(item)
-	qs = qs.Filter("operate_state", OPERATE_STATE_APPLY_OFF)
-	if _, err := qs.All(&list); err != nil {
-		return nil
-	}
-	return list
-}
-
-//找出某用户的所有代销订单
-func GetSaleOrderByPIdAndUId(pId, uId int64) *SaleOrder {
-	item := new(SaleOrder)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("product_id", pId).Filter("sale_user_id", uId).One(item); err != nil {
-		return nil
-	}
-	return item
-}
-
-//某用户某粮仓的代销订单
-func GetSaleOrderByPIdAndUIdAndGId(pId, uId, gId int64) *SaleOrder {
-	item := new(SaleOrder)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("product_id", pId).Filter("sale_user_id", uId).Filter("granary_id", gId).One(item); err != nil {
-		return nil
-	}
-	return item
-}
-
-//找出第一个代销订单
-func GetFirstSaleOrderByPId(pId int64) *SaleOrder {
-	ret := &SaleOrder{}
-	o := orm.NewOrm()
-	tbn := new(SaleOrder).TableName()
-	sql := fmt.Sprintf("SELECT * FROM `%s` WHERE state=? and product_id=? order by (total_count - sold_count) desc limit 1;", tbn)
-	err := o.Raw(sql, ORDER_STATE_ONLINE, pId).QueryRow(ret)
-	if err != nil {
-		return nil
-	}
-	return ret
-}
-
-//找出下一个代销订单
-func GetNextSaleOrderByPId(pId int64, oId string) *SaleOrder {
-	list := GetOnlineSaleOrdersByPId(pId, false)
-
-	length := len(list)
-	if length == 0 {
-		return nil
-	}
-	for i := 0; i < length; i++ {
-		if list[i].OrderId == oId {
-			if i+1 <= length-1 {
-				return list[i+1]
-			}
-		}
-	}
-	return list[0]
-}
-
-//根据库存找出所有挂单的代销订单。
-func GetOnlineSaleOrdersByPId(pId int64, useCache bool) (list []*SaleOrder) {
-	k := fmt.Sprintf("granary_model.GetOnlineSaleOrdersByPId.[%d]", pId)
-	if useCache {
-		if v, ok := cache.Cache.Get(k).([]*SaleOrder); ok {
-			return v
-		}
-	}
-	o := orm.NewOrm()
-	tbn := new(SaleOrder).TableName()
-
-	sql := fmt.Sprintf("SELECT * FROM `%s` WHERE state=? and product_id=? order by (total_count - sold_count) desc, first_invest_time asc ", tbn)
-	if _, err := o.Raw(sql, ORDER_STATE_ONLINE, pId).QueryRows(&list); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, list, 30*time.Second)
-	return list
-}

+ 0 - 7
go/gopath/src/fohow.com/apps/models/invite_sale_model/init.go

@@ -1,7 +0,0 @@
-package invite_sale_model
-
-import "github.com/astaxie/beego/orm"
-
-func init() {
-	orm.RegisterModel(new(InviteSaleRewardConfig), new(InviteSaleRewardRecord))
-}

+ 0 - 332
go/gopath/src/fohow.com/apps/models/invite_sale_model/invite_sale_reward_config.go

@@ -1,332 +0,0 @@
-package invite_sale_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"fohow.com/cache"
-	"time"
-)
-
-const (
-	invite_sale_reward_configs_tablename = "invite_sale_reward_configs"
-	invite_sale_reward_records_tablename = "invite_sale_reward_records"
-
-	REWARD_TYPE_FULL_ENUM = "full_reward"
-
-	REWARD_TYPE_RATIO_ENUM = "ratio_reward"
-)
-
-//奖励配置表
-type InviteSaleRewardConfig struct {
-	Id           int64     `orm:"column(id);pk"                                       json:"-"`             // int(11)
-	RewardAmount int64     `orm:"column(reward_amount)"                               json:"reward_amount"` // int(11)
-	Rank         int64     `orm:"column(rank)"                                        json:"rank"`          // int(11)
-	ConfigTime   time.Time `orm:"column(config_time)"                                 json:"-"`             // int(11)
-	RuleDesc     string    `orm:"column(rule_desc)"                                   json:"rule_desc"`
-	RewardType   string    `orm:"column(reward_type)"                                 json:"reward_type"`
-	ConfigTimeSt int64     `orm:"-"                                                   json:"config_time_st"`
-	IsSend       int64     `orm:"column(is_send)"                                     json:"is_send"`
-	Remark       string    `orm:"column(remark)"                                      json:"remark"`
-	GuideUrl     string    `orm:"column(guide_url)"                                   json:"guide_url"`
-	GuideText    string    `orm:"column(guide_text)"                                  json:"guide_text"`
-	UrlType      string    `orm:"column(url_type)"                                    json:"url_type"`
-	SImg         string    `orm:"column(s_img)"                                       json:"s_img"`
-	CreatedAt    time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"` // datetime
-	UpdatedAt    time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"` // datetime
-}
-
-//奖励记录表
-type InviteSaleRewardRecord struct {
-	Id           int64     `orm:"column(id);pk"                                       json:"id"`            // int(11)
-	WxUid        int64     `orm:"column(wx_uid)"                                      json:"wx_uid"`        // int(11)
-	SaleAmount   int64     `orm:"column(sale_amount)"                                 json:"sale_amount"`   // int(11)
-	RewardAmount int64     `orm:"column(reward_amount)"                               json:"reward_amount"` // int(11)
-	Rank         int64     `orm:"column(rank)"                                        json:"rank"`          // int(11)
-	ConfigTime   time.Time `orm:"column(config_time)"                                 json:"-"`             // int(11)
-	CreatedAt    time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`             // datetime
-	UpdatedAt    time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`             // datetime
-
-	WxNickname string `orm:"-"                         json:"wx_nickname"`
-	WxHead     string `orm:"-"                         json:"wx_head"`
-}
-
-func (self *InviteSaleRewardConfig) TableName() string {
-	return invite_sale_reward_configs_tablename
-}
-func (self *InviteSaleRewardRecord) TableName() string {
-	return invite_sale_reward_records_tablename
-}
-
-func (self *InviteSaleRewardConfig) Save() error {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save InviteSaleRewardConfig id=[%d] .err=[%s]", self.Id, err)
-		return err
-	}
-	return nil
-}
-
-func (self *InviteSaleRewardRecord) Create(wxUid, saleAmount, rewardAmount, rank int64, configTime time.Time) (item *InviteSaleRewardRecord) {
-	item = &InviteSaleRewardRecord{
-		WxUid:        wxUid,
-		SaleAmount:   saleAmount,
-		RewardAmount: rewardAmount,
-		Rank:         rank,
-		ConfigTime:   configTime,
-	}
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		beego.BeeLogger.Error("Create InviteSaleRewardRecord err=[%s]", err)
-		return nil
-	}
-	item.Id = id
-	return item
-}
-
-func GetInviteSaleRewardRecordByTime(ym time.Time) *InviteSaleRewardRecord {
-	item := &InviteSaleRewardRecord{}
-	sql :=
-		`
-			SELECT
-				*
-			FROM
-				invite_sale_reward_records
-			WHERE
-				DATE_FORMAT(
-					DATE_ADD(config_time, INTERVAL 8 HOUR),
-					'%Y%m'
-				) = ?
-			ORDER BY
-				rank limit 1;
-		`
-
-	err := orm.NewOrm().Raw(sql, ym.Format("200601")).QueryRow(item)
-	if err != nil {
-		return nil
-	}
-	return item
-}
-
-type InviterSale struct {
-	Count        int64  `orm:"column(count)"             json:"count"`
-	BenefitWxUid int64  `orm:"column(benefit_wx_uid)"    json:"benefit_wx_uid"`
-	CreateDate   string `orm:"column(create_date)"       json:"rank_date"`
-	WxNickname   string `orm:"column(wx_nickname)"       json:"wx_nickname"`
-	WxHead       string `orm:"column(wx_head)"           json:"wx_head"`
-	PaiedAt      int64  `orm:"column(paied_at)"          json:"paied_at"`
-}
-
-//所有邀请者月份销售总额列表
-func GetInviterSaleListByLimitWxUidsAndTime(page, perpage int64, wxUids string, ym time.Time, useCache bool) (list []*InviterSale) {
-
-	k := fmt.Sprintf("user_model.GetInveiteBenefitListByLimitWxUidsAndTime.page(%d).perpage(%d).wxUids(%s).ym(%s)", page, perpage, wxUids, ym.Format("2006-01-02 15:04:05"))
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*InviterSale); ok {
-			return s
-		}
-	}
-
-	sql :=
-		`
-			SELECT
-				SUM(o.amount) AS count,
-				o.benefit_wx_uid,
-				DATE_FORMAT(
-					DATE_ADD(o.enter_time, INTERVAL 8 HOUR),
-					'%s'
-				) as create_date,
-				u.head as wx_head,
-				u.nickname as wx_nickname,
-				UNIX_TIMESTAMP(DATE_ADD(MAX(o.created_at),INTERVAL 8 HOUR)) as paied_at
-			FROM
-				invite_benefit_orders o,
-				wx_users u
-			WHERE
-				o.benefit_wx_uid = u.id
-			AND o.source = 'product_benefit'
-			AND DATE_FORMAT(
-				DATE_ADD(o.enter_time, INTERVAL 8 HOUR),
-				'%s'
-			) = ?
-			and o.is_enter_balance = 1
-			%s
-			GROUP BY
-				o.benefit_wx_uid
-			ORDER BY
-				count DESC, paied_at asc
-			LIMIT %d, %d;
-		`
-	limitWxUidsSql := fmt.Sprintf("and o.benefit_wx_uid not in (%s)", wxUids)
-	if len(wxUids) <= 0 {
-		limitWxUidsSql = ""
-	}
-
-	sql = fmt.Sprintf(sql, "%Y%m", "%Y%m", limitWxUidsSql, (page-1)*perpage, perpage)
-
-	_, err := orm.NewOrm().Raw(sql, ym.Format("200601")).QueryRows(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("user_model.GetInveiteBenefitListByLimitWxUidsAndTime.page(%d).perpage(%d).wxUids(%s).ym(%s) err:%s", page, perpage, wxUids, ym.Format("2006-01-02 15:04:05"), err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 1*time.Minute)
-	return list
-}
-
-func GetInviterSaleListCountByLimitWxUidsAndTime(wxUids string, ym time.Time, useCache bool) int64 {
-
-	k := fmt.Sprintf("user_model.GetInviterSaleListCountByLimitWxUidsAndTime.wxUids(%s).ym(%s)", wxUids, ym.Format("2006-01-02 15:04:05"))
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-	var list []*InviterSale
-	sql :=
-		`
-			SELECT
-				SUM(o.amount) AS count,
-				o.benefit_wx_uid,
-				DATE_FORMAT(
-					DATE_ADD(o.enter_time, INTERVAL 8 HOUR),
-					'%s'
-				) as create_date,
-				u.head as wx_head,
-				u.nickname as wx_nickname,
-				UNIX_TIMESTAMP(MAX(o.created_at)) as paied_at
-			FROM
-				invite_benefit_orders o,
-				wx_users u
-			WHERE
-				o.benefit_wx_uid = u.id
-			AND o.source = 'product_benefit'
-			AND DATE_FORMAT(
-				DATE_ADD(o.enter_time, INTERVAL 8 HOUR),
-				'%s'
-			) = ?
-			and o.is_enter_balance = 1
-			%s
-			GROUP BY
-				o.benefit_wx_uid;
-		`
-	limitWxUidsSql := fmt.Sprintf("and o.benefit_wx_uid not in (%s)", wxUids)
-	if len(wxUids) <= 0 {
-		limitWxUidsSql = ""
-	}
-
-	sql = fmt.Sprintf(sql, "%Y%m", "%Y%m", limitWxUidsSql)
-
-	_, err := orm.NewOrm().Raw(sql, ym.Format("200601")).QueryRows(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("user_model.GetInviterSaleListCountByLimitWxUidsAndTime.wxUids(%s).ym(%s) err:%s", wxUids, ym.Format("2006-01-02 15:04:05"), err)
-		return 0
-	}
-	if list != nil && len(list) > 0 {
-		cache.Cache.Put(k, int64(len(list)), 1*time.Minute)
-	}
-	return int64(len(list))
-}
-
-//个人月份销售总额
-func GetInviterSaleByInviteIdAndTime(inviteId int64, ym time.Time) (item *InviterSale) {
-
-	o := orm.NewOrm()
-
-	sql := `
-
-		SELECT
-			SUM(o.amount) AS count,
-			o.benefit_wx_uid,
-			DATE_FORMAT(
-				DATE_ADD(o.enter_time, INTERVAL 8 HOUR),
-				'%Y%m'
-			) as create_date,
-			u.head as wx_head,
-			u.nickname as wx_nickname
-		FROM
-			invite_benefit_orders o,
-			wx_users u
-		WHERE
-			o.benefit_wx_uid = u.id
-		AND o.source = 'product_benefit'
-		AND DATE_FORMAT(
-			DATE_ADD(o.enter_time, INTERVAL 8 HOUR),
-			'%Y%m'
-		) = ?
-		and o.is_enter_balance = 1
-		and o.benefit_wx_uid = ?
-		GROUP BY
-			o.benefit_wx_uid;
-
-	`
-	err := o.Raw(sql, ym.Format("200601"), inviteId).QueryRow(&item)
-	if err != nil {
-		beego.BeeLogger.Error("GetInviteCountByInviteIdAndTime, id:%d, time:%s err=[%s]", inviteId, ym.Format("200601"), err)
-		return nil
-	}
-
-	return item
-}
-
-//奖励配置
-func GetRewardConfigsByTime(ym time.Time, useCache bool) (list []*InviteSaleRewardConfig) {
-	k := fmt.Sprintf("user_model.GetRewardConfigsByTime.ym(%s)", ym.Format("2006-01-02 15:04:05"))
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*InviteSaleRewardConfig); ok {
-			return s
-		}
-	}
-
-	sql :=
-		`
-		SELECT
-			*
-		FROM
-			invite_sale_reward_configs
-		WHERE
-			DATE_FORMAT(
-				DATE_ADD(config_time, INTERVAL 8 HOUR),
-				'%Y%m'
-			) = ?
-		ORDER BY rank ;
-		`
-
-	_, err := orm.NewOrm().Raw(sql, ym.Format("200601")).QueryRows(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("user_model.GetRewardConfigsByTime.ym(%s), err = %s", ym.Format("2006-01-02 15:04:05"), err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 1*time.Minute)
-	return list
-}
-
-func GetNotSendRewardConfigsByTime(ym time.Time) (list []*InviteSaleRewardConfig) {
-
-	sql :=
-		`
-		SELECT
-			*
-		FROM
-			invite_sale_reward_configs
-		WHERE
-			DATE_FORMAT(
-				DATE_ADD(config_time, INTERVAL 8 HOUR),
-				'%Y%m'
-			) = ?
-		and is_send = 0
-		ORDER BY rank desc;
-		`
-
-	_, err := orm.NewOrm().Raw(sql, ym.Format("200601")).QueryRows(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("user_model.GetNotSendRewardConfigsByTime.ym(%s), err = %s", ym.Format("2006-01-02 15:04:05"), err)
-		return nil
-	}
-
-	return list
-}

+ 0 - 40
go/gopath/src/fohow.com/apps/models/project_model/init.go

@@ -1,40 +0,0 @@
-package project_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"strings"
-)
-
-func init() {
-	orm.RegisterModel(
-		new(Project),
-		new(ProjectInvestWay),
-		new(ProjectJoin),
-		new(ProjectPicture),
-		new(ProjectBonus),
-	)
-}
-
-func GetFullImgUrl(img string) string {
-	if img == "" {
-		return ""
-	}
-	if strings.HasPrefix(img, "http://") {
-		return img
-	} else {
-		return fmt.Sprintf("%s/%s", beego.AppConfig.String("AliOssImgHost"), img)
-	}
-}
-
-func GetCdnFullImgUrl(img string) string {
-	if img == "" {
-		return ""
-	}
-	if strings.HasPrefix(img, "http://") || strings.HasPrefix(img, "https://") {
-		return img
-	} else {
-		return fmt.Sprintf("%s/%s", beego.AppConfig.String("AliCDNImgHost"), img)
-	}
-}

+ 0 - 199
go/gopath/src/fohow.com/apps/models/project_model/project.go

@@ -1,199 +0,0 @@
-package project_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"fohow.com/cache"
-	"time"
-)
-
-const (
-	projects_tablename = "projects"
-
-	TYPE_AGRI_PRODUCT = "agri_product"
-
-	TYPE_TRAIN = "train"
-
-	TYPE_D5C_PROJECT = "d5c_project"
-
-	STATE_PREHEAT = 0 //预热中
-
-	STATE_UNDERWAY = 1 //进行中
-
-	STATE_SUCCESS = 2 //已成功
-
-	STATE_FAILED = 3 //已失败
-
-	STATE_REFUNDED = 4 //已退款
-
-	STATE_PREPARING = 5 //准备中
-)
-
-var STATE_CN_TEXT = map[int64]string{
-	0: "未开团",
-	1: "团购中",
-	2: "已成团",
-	3: "已失败",
-	4: "已退款",
-	5: "准备中",
-}
-
-var PTYPE_CN_TEXT = map[string]string{
-	"agri_product": "助农项目",
-	"train":        "训练营项目",
-	"d5c_project":  "第五创项目",
-}
-
-type Project struct {
-	Id        int64     `orm:"column(id);pk"                                  json:"id"`    // int(11)
-	Title     string    `orm:"column(title)"                                  json:"title"` // varchar(100)
-	Ptype     string    `orm:"column(ptype)"                                  json:"ptype"` // varchar(64)
-	Recommend int64     `orm:"column(recommend);null"                         json:"-"`     // int(11)
-	StartAt   time.Time `orm:"column(start_at);null;type(datetime)"           json:"-"`     // datetime
-	StopAt    time.Time `orm:"column(stop_at);null;type(datetime)"            json:"-"`     // datetime
-
-	Detail       string `orm:"column(detail)"                                 json:"detail"` // text
-	IsDetailPics bool   `orm:"column(is_detail_pics)"                         json:"is_detail_pics"`
-
-	FinancePlan string `orm:"column(finance_plan)"                             json:"finance_plan"` // text
-	ImgThumb    string `orm:"column(img_thumb)"                              json:"-"`              // varchar(20)
-	ImgDetail   string `orm:"column(img_detail)"                             json:"-"`              // varchar(20)
-
-	Launcher int64 `orm:"column(launcher)"                              json:"-"`      // int(11)
-	State    int64 `orm:"column(state)"                                  json:"state"` // enum(0,1,2,3,4)
-
-	MinFunding  int64  `orm:"column(min_funding);null"                       json:"min_funding"` // int(11)
-	MaxFunding  int64  `orm:"column(max_funding);null"                       json:"max_funding"` // int(11)
-	UnitPrice   int64  `orm:"column(unit_price);null"                        json:"unit_price"`
-	SuccessTime int64  `orm:"column(success_time);null"                      json:"success_time"` // int(11)
-	STitle      string `orm:"column(share_title)"                            json:"share_title"`  // text
-	SAbout      string `orm:"column(share_about)"                            json:"share_about"`  // text
-
-	IsSendBenefit      bool `orm:"column(is_send_benefit)"                        json:"-"`
-	IsSbenefitFinished bool `orm:"column(is_sbenefit_finished)"                   json:"-"`
-
-	CreatedAt time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"-"` // datetime
-	UpdatedAt time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"-"` // datetime
-
-	StartTime int64  `orm:"-"                                              json:"start_time"` // int
-	StopTime  int64  `orm:"-"                                              json:"stop_time"`  // int
-	ThumbImg  string `orm:"-"                                              json:"thumb_img"`  // varchar(20)
-	DetailImg string `orm:"-"                                              json:"detail_img"` // varchar(20)
-	StateCn   string `orm:"-"                                              json:"state_cn"`
-	//当前已资助金额总数
-	CurrentInvestment int64 `orm:"-"                               json:"current_funding"`
-	//当前参与用户总数
-	CurrentInvestUser int64 `orm:"-"                               json:"current_user_count"`
-	//最小起投金额
-	MinProjectWayPrice int64 `orm:"-"                               json:"min_project_way_price"`
-	//剩余份数最小
-	LeftCopiesMin int64 `orm:"-"                               json:"left_copies_min"`
-	//剩余份数最大
-	LeftCopiesMax int64 `orm:"-"                               json:"left_copies_max"`
-	//剩余份数---旧使用
-	LeftCopies int64             `orm:"-"                               json:"left_copies"`
-	Album      []*ProjectPicture `orm:"-"                   json:"pics"`
-
-	IntroduceAlbum []*ProjectPicture `orm:"-"                   json:"introduce_pics"`
-}
-
-func (self *Project) TableName() string {
-	return projects_tablename
-}
-
-func (self *Project) Save() error {
-
-	k := cache.GetKey(cache.GetProjectById, self.Id)
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save project id=[%d] .err=[%s]", self.Id, err)
-		return err
-	}
-	cache.Cache.Delete(k)
-	return nil
-}
-
-//根据名称、项目状态来查询所有项目
-func GetProjectListByCondition(pName, ptype string, states []int64, page, perPage int64, useCache bool) (list []*Project) {
-
-	k := fmt.Sprintf("project_model.GetProjectListByCondition(%s, [%v], %d, %d)", pName, states, page, perPage)
-	if useCache {
-		if usr, ok := cache.Cache.Get(k).([]*Project); ok {
-			return usr
-		}
-	}
-
-	o := orm.NewOrm()
-
-	item := new(Project)
-	qs := o.QueryTable(item)
-
-	if len(states) > 0 {
-		qs = qs.Filter("state__in", states)
-	}
-	if pName != "" {
-		qs = qs.Filter("title__icontains", pName)
-	}
-	if ptype != "" {
-		qs = qs.Filter("ptype", ptype)
-	}
-	qs = qs.Exclude("ptype", TYPE_D5C_PROJECT)
-	_, err := qs.Limit(perPage, (page-1)*perPage).OrderBy("-recommend").All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("project_model.GetProjectListByCondition(%s, [%v], %d, %d) %s", pName, states, page, perPage, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}
-
-func GetProjectListCountByCondition(pName, ptype string, states []int64, useCache bool) int64 {
-
-	k := fmt.Sprintf("project_model.GetProjectListCountByCondition(%s, [%v], %d, %d)", pName, states)
-	if useCache {
-		if usr, ok := cache.Cache.Get(k).(int64); ok {
-			return usr
-		}
-	}
-	o := orm.NewOrm()
-
-	qs := o.QueryTable(projects_tablename)
-
-	if len(states) > 0 {
-		qs = qs.Filter("state__in", states)
-	}
-	if pName != "" {
-		qs = qs.Filter("title__icontains", pName)
-	}
-	if ptype != "" {
-		qs = qs.Filter("ptype", ptype)
-	}
-	qs = qs.Exclude("ptype", TYPE_D5C_PROJECT)
-	count, err := qs.Count()
-	if err != nil {
-		beego.BeeLogger.Warn("project_model.GetProjectListCountByCondition(%s, [%v], %d, %d) %s", pName, states, err)
-		return count
-	}
-
-	cache.Cache.Put(k, count, 5*time.Minute)
-	return count
-}
-
-func GetProjectById(id int64, useCache bool) *Project {
-	k := cache.GetKey(cache.GetProjectById, id)
-
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(*Project); ok {
-			return s
-		}
-	}
-	item := new(Project)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("id", id).Limit(1).One(item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}

+ 0 - 79
go/gopath/src/fohow.com/apps/models/project_model/project_bonus.go

@@ -1,79 +0,0 @@
-package project_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"fohow.com/cache"
-	"time"
-)
-
-const (
-	project_bonuses_tablename = "project_bonuses"
-)
-
-type ProjectBonus struct {
-	Id                 int64     `orm:"column(id);pk"                                  json:"id"` // int(11)
-	ProjectId          int64     `orm:"column(project_id)"                             json:"project_id"`
-	ProductId          int64     `orm:"column(product_id)"                             json:"product_id"`
-	ProjectInvestWayId int64     `orm:"column(project_invest_way_id)"                  json:"project_invest_way_id"`
-	Count              int64     `orm:"column(count)"                                  json:"count"`
-	BuyBackStartAt     time.Time `orm:"column(buy_back_start_at);null;type(datetime)"  json:"-"` // datetime
-	BuyBackStartTime   int64     `orm:"-"                                              json:"buy_back_start_time"`
-	BuyBackStopAt      time.Time `orm:"column(buy_back_stop_at);null;type(datetime)"   json:"-"` // datetime
-	BuyBackStopTime    int64     `orm:"-"                                              json:"buy_back_stop_time"`
-	SelfUseStartAt     time.Time `orm:"column(self_use_start_at);null;type(datetime)"  json:"-"` // datetime
-	SelfUseStopAt      time.Time `orm:"column(self_use_stop_at);null;type(datetime)"   json:"-"` // datetime
-	SelfUseMinCount    int64     `orm:"column(self_use_min_count)"                         json:"self_use_min_count"`
-	BuyBackPrice       int64     `orm:"column(buy_back_price)"                         json:"buy_back_price"`
-	BuyBackMaxCount    int64     `orm:"column(buy_back_max_count)"                         json:"buy_back_max_count"`
-	BuyBackMinCount    int64     `orm:"column(buy_back_min_count)"                         json:"buy_back_min_count"`
-	IsDistributeBonus  bool      `orm:"column(is_distribute_bonus)"                        json:"-"`
-	Remark             string    `orm:"column(remark)"                                 json:"remark"`
-	CreatedAt          time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"-"` // datetime
-	UpdatedAt          time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"-"` // datetime
-}
-
-func (self *ProjectBonus) TableName() string {
-	return project_bonuses_tablename
-}
-
-func GetProjectBonusByPIdAndWId(pId, wId int64, useCache bool) *ProjectBonus {
-
-	k := fmt.Sprintf("project_model.GetProjectBonusByPIdAndWId(%d,%d)", pId, wId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(*ProjectBonus); ok {
-			return s
-		}
-	}
-	item := new(ProjectBonus)
-	o := orm.NewOrm()
-	err := o.QueryTable(item).Filter("project_id", pId).
-		Filter("project_invest_way_id", wId).OrderBy("-id").Limit(1).One(item)
-
-	if err != nil {
-		beego.BeeLogger.Warn("project_model.GetProjectBonusByPIdAndWId(%d,%d) err[%s]", pId, wId, err)
-		return nil
-	}
-	item.BuyBackStartTime = item.BuyBackStartAt.Unix()
-	item.BuyBackStopTime = item.BuyBackStopAt.Unix()
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-func GetProjectBonusById(id int64, useCache bool) *ProjectBonus {
-	k := fmt.Sprintf("project_model.GetProjectBonusById[%d]", id)
-	if useCache {
-		if v, ok := cache.Cache.Get(k).(*ProjectBonus); ok {
-			return v
-		}
-	}
-	item := new(ProjectBonus)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("id", id).One(item); err != nil {
-		return nil
-	}
-	// item.Cover = GetCoverByPId(id, useCache)
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}

+ 0 - 226
go/gopath/src/fohow.com/apps/models/project_model/project_invest_way.go

@@ -1,226 +0,0 @@
-package project_model
-
-import (
-	"fmt"
-	"time"
-
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-
-	"fohow.com/apps/models/product_model"
-	"fohow.com/cache"
-)
-
-const (
-	project_invest_ways_tablename = "project_invest_ways"
-)
-
-type ProjectInvestWay struct {
-	Id              int64     `orm:"column(id);pk"                                  json:"id"` // int(11)
-	ProjectId       int64     `orm:"column(project_id)"                             json:"project_id"`
-	ProductId       int64     `orm:"column(product_id)"                             json:"product_id"`
-	Title           string    `orm:"column(title)"                                  json:"title"`
-	Desc            string    `orm:"column(desc)"                                   json:"desc"`
-	Price           int64     `orm:"column(price)"                                  json:"price"`
-	Copies          int64     `orm:"column(copies)"                                 json:"copies"`
-	HarvestTime     time.Time `orm:"column(harvest_time);null;type(datetime)"       json:"-"` // datetime
-	HarvestAmount   int64     `orm:"column(harvest_amount)"                         json:"harvest_amount"`
-	HarvestRate     int64     `orm:"column(harvest_rate)"                           json:"harvest_rate"`
-	BuyBackPrice    int64     `orm:"column(buy_back_price)"                         json:"buy_back_price"`
-	SelfUseMin      int64     `orm:"column(self_use_min)"                           json:"self_use_min"`
-	HTime           int64     `orm:"-"                                              json:"h_time"`
-	MinLimit        int64     `orm:"column(min_limit)"                              json:"min_limit"`
-	MaxLimit        int64     `orm:"column(max_limit)"                              json:"max_limit"`
-	BuyBackMaxLimit int64     `orm:"column(buy_back_max_limit)"                     json:"buy_back_max_limit"`
-	BuyBackMinLimit int64     `orm:"column(buy_back_min_limit)"                     json:"buy_back_min_limit"`
-	GapLimit        int64     `orm:"column(gap_limit)"                              json:"gap_limit"`
-	Sort            int64     `orm:"column(sort)"                                   json:"sort"`
-	State           int64     `orm:"column(state)"                                  json:"state"`
-	OnlyNew         int64     `orm:"column(only_new)"                               json:"-"`
-	CreatedAt       time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"-"` // datetime
-	UpdatedAt       time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"-"` // datetime
-
-	LeftCopies  int64                  `orm:"-"                                              json:"left_copies"`
-	Product     *product_model.Product `orm:"-"                                              json:"product"`
-	OwnedCopies int64                  `orm:"-"                                              json:"owned_copies"`
-}
-
-func (self *ProjectInvestWay) TableName() string {
-	return project_invest_ways_tablename
-}
-
-//根据项目获取最小的单份投资金额
-func GetMinProjeceWayPriceByPId(pId int64, useCache bool) int64 {
-	k := fmt.Sprintf("project_model.GetMinProjeceWayPriceByPId(%d)", pId)
-	if useCache {
-		if usr, ok := cache.Cache.Get(k).(int64); ok {
-			return usr
-		}
-	}
-	type Ret struct {
-		Price int64 `json:"price"`
-	}
-	sql := `
-		SELECT
-			MIN(price) as price
-		FROM
-			project_invest_ways
-		WHERE
-			project_id = ?
-		AND state = 1;
-	`
-	var ret Ret
-	err := orm.NewOrm().Raw(sql, pId).QueryRow(&ret)
-	if err != nil {
-		beego.BeeLogger.Warn("project_model.GetMinProjeceWayPriceByPId(%d) %s", pId, err)
-		return 0
-	}
-	cache.Cache.Put(k, ret.Price, 5*time.Minute)
-	return ret.Price
-}
-
-//根据项目获取所有回报方式
-func GetInvestWaysByProjectId(pId int64) (list []*ProjectInvestWay) {
-	o := orm.NewOrm()
-	sql := fmt.Sprintf("select * from %s where project_id = ? order by sort desc", project_invest_ways_tablename)
-	_, err := o.Raw(sql, pId).QueryRows(&list)
-	if err != nil {
-		beego.BeeLogger.Error("project_model.GetInvestWaysByProjectId error: err=[%s]", err)
-		return nil
-	}
-	for _, item := range list {
-		item.HTime = item.HarvestTime.Unix()
-		if item.HTime < 0 {
-			item.HTime = 0
-		}
-	}
-	return list
-}
-
-//该回报方式剩余份数
-func GetLeftCountByInvestWayId(investWayId int64) int64 {
-	investWay := GetProjectInvestWayById(investWayId, false)
-	if investWay == nil {
-		return int64(0)
-	}
-	successCount := GetInvestSuccessCountByPIdAndWId(investWay.ProjectId, investWayId, false)
-	count := investWay.Copies - successCount
-	return count
-}
-
-func GetProjectInvestWayById(id int64, useCache bool) *ProjectInvestWay {
-	k := fmt.Sprintf("project_model.GetProjectInvestWayById(%d)", id)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(*ProjectInvestWay); ok {
-			return s
-		}
-	}
-	item := new(ProjectInvestWay)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("id", id).Limit(1).One(item); err != nil {
-		return nil
-	}
-
-	item.HTime = item.HarvestTime.Unix()
-	if item.HTime < 0 {
-		item.HTime = 0
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-//该项目该回报方式总共被认购份数
-func GetInvestSuccessCountByPIdAndWId(projectId, investWayId int64, useCache bool) int64 {
-	k := fmt.Sprintf("project_model.GetInvestSuccessCountByPIdAndWId.projectId(%d).investWayId(%d)", projectId, investWayId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-	type Count struct {
-		Count int64
-	}
-	var cnt Count
-	o := orm.NewOrm()
-	err := o.Raw(fmt.Sprintf("select sum(count) as count from %s where project_id = ? and state = ? and is_refunded = ? and is_deleted = ? and project_invest_way_id = ?",
-		project_joins_tablename), projectId, 1, 0, 0, investWayId).QueryRow(&cnt)
-	if err != nil {
-		beego.BeeLogger.Error("GetInvestSuccessCountByPIdAndWId : project_id=[%d],investWayId=%d,err=[%s]", projectId, investWayId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, cnt.Count, 5*time.Minute)
-
-	return cnt.Count
-}
-
-//该用户该项目该回报方式总共被认购份数
-func GetInvestSuccessCountByPIdAndWIdAndUId(projectId, investWayId, uId int64, useCache bool) int64 {
-	k := fmt.Sprintf("project_model.GetInvestSuccessCountByPIdAndWIdAndUId.projectId(%d).investWayId(%d).userId(%d)", projectId, investWayId, uId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-	type Count struct {
-		Count int64
-	}
-	var cnt Count
-	o := orm.NewOrm()
-	err := o.Raw(fmt.Sprintf("select sum(count) as count from %s where project_id = ? and state = ? and is_refunded = ? and is_deleted = ? and project_invest_way_id = ? and user_id = ? ",
-		project_joins_tablename), projectId, 1, 0, 0, investWayId, uId).QueryRow(&cnt)
-	if err != nil {
-		beego.BeeLogger.Error("GetInvestSuccessCountByPIdAndWIdAndUId : project_id=[%d],investWayId=%d,userId=%d, err=[%s]", projectId, investWayId, uId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, cnt.Count, 5*time.Minute)
-
-	return cnt.Count
-}
-
-//根据项目获取所有回报方式总份数
-func GetInvestWayCopiesByProjectId(pId int64) int64 {
-	type Count struct {
-		Count int64
-	}
-	var cnt Count
-	o := orm.NewOrm()
-	sql := fmt.Sprintf("select sum(copies) as count from %s where project_id = ? and state = 1 order by sort desc", project_invest_ways_tablename)
-	err := o.Raw(sql, pId).QueryRow(&cnt)
-	if err != nil {
-		beego.BeeLogger.Error("project_model.GetInvestWayCopiesByProjectId error: err=[%s]", err)
-		return 0
-	}
-	return cnt.Count
-}
-
-//根据项目获取最大的单份投资金额
-func GetMaxProjeceWayPriceByPId(pId int64, useCache bool) int64 {
-	k := fmt.Sprintf("project_model.GetMaxProjeceWayPriceByPId(%d)", pId)
-	if useCache {
-		if usr, ok := cache.Cache.Get(k).(int64); ok {
-			return usr
-		}
-	}
-	type Ret struct {
-		Price int64 `json:"price"`
-	}
-	sql := `
-		SELECT
-			MAX(price) as price
-		FROM
-			project_invest_ways
-		WHERE
-			project_id = ?
-		AND state = 1;
-	`
-	var ret Ret
-	err := orm.NewOrm().Raw(sql, pId).QueryRow(&ret)
-	if err != nil {
-		beego.BeeLogger.Warn("project_model.GetMaxProjeceWayPriceByPId(%d) %s", pId, err)
-		return 0
-	}
-	cache.Cache.Put(k, ret.Price, 5*time.Minute)
-	return ret.Price
-}

+ 0 - 554
go/gopath/src/fohow.com/apps/models/project_model/project_join.go

@@ -1,554 +0,0 @@
-package project_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"github.com/uuid"
-	"fohow.com/cache"
-	"strings"
-	"time"
-)
-
-const (
-	project_joins_tablename = "project_joins"
-
-	ORDER_ID_PREFIX_RG = "RG" //认购项目
-
-	PAY_WAY_TYPE_PROJECT_JOIN = "weixinpay" //微信支付投资订单
-
-	PAY_WAY_TYPE_PROJECT_JOIN_CASH_BALANCE = "cashbalance" //资金余额支付
-)
-
-type ProjectJoin struct {
-	Id                 int64  `orm:"column(id);pk"                                   json:"id"`         // int(11)
-	ProjectId          int64  `orm:"column(project_id)"                              json:"project_id"` // int(11)
-	ProjectInvestWayId int64  `orm:"column(project_invest_way_id);null"              json:"project_invest_way_id"`
-	OrderId            string `orm:"column(order_id)"                                json:"order_id"` // varchar(255)
-	SinglePrice        int64  `orm:"column(single_price);null;" json:"single_price"`                  // decimal(10,2)
-	Count              int64  `orm:"column(count);null"                        json:"count"`          // int(11)
-	TotalPrice         int64  `orm:"column(total_price);null;" json:"total_price"`                    // decimal(10,2)
-	PaiedPrice         int64  `orm:"column(paied_price);null;" json:"paied_price"`                    // decimal(10,2)
-
-	ProjectName      string `orm:"-"                                               json:"project_name"`  // varchar(255)
-	ProjectType      string `orm:"-"                                               json:"project_type"`  // varchar(255)
-	ProjectState     string `orm:"-"                                               json:"project_state"` // varchar(255)
-	ProjectThumbImg  string `orm:"-"                                json:"project_thumb_img"`            // varchar(255)
-	ProjectDetailImg string `orm:"-"                                json:"project_detail_img"`           // varchar(255)
-
-	UserId int64 `orm:"column(user_id)"                                 json:"user_id"` // int(11)
-
-	PayWay     string    `orm:"column(pay_way);null"                            json:"pay_way"`  // varchar(20)
-	TradeNo    string    `orm:"column(trade_no);null"                           json:"-"`        // varchar(64)
-	PaiedAt    int64     `orm:"column(paied_at);null"                           json:"paied_at"` // bigint(20)//支付时间存储纳秒级别
-	State      int64     `orm:"column(state);null"                              json:"state"`    // tinyint(1)
-	IsRefunded int64     `orm:"column(is_refunded);null"                        json:"-"`        // tinyint(1)
-	IsDeleted  int64     `orm:"column(is_deleted);null"                         json:"-"`        // tinyint(1)
-	Remark     string    `orm:"column(remark);null"                             json:"remark"`   // text
-	CreatedAt  time.Time `orm:"column(created_at);auto_now_add;type(datetime)"  json:"-"`        // datetime
-	CTime      int64     `orm:"-"  json:"ctime"`                                                 // datetime
-	UpdatedAt  time.Time `orm:"column(updated_at);auto_now;type(datetime)"      json:"-"`        // datetime
-}
-
-//投资人列表
-type Investor struct {
-	Investment    float64 `orm:"-"  json:"investment"`
-	InvestTime    int64   `orm:"-"  json:"invest_time"`
-	InvestCount   int64   `orm:"-"  json:"invest_count"`
-	UserId        int64   `orm:"-"  json:"user_id"`
-	UserName      string  `orm:"-"  json:"user_name"`
-	Head          string  `orm:"-"  json:"head"`
-	InvestWayId   int64   `orm:"-"  json:"invest_way_id"`
-	InvestWayName string  `orm:"-"  json:"invest_way_name"`
-}
-
-//投资记录
-type JoinItemPerProjectPerWay struct {
-	ProjectId          int64  `orm:"project_id"              json:"project_id"`
-	SumTotalPrice      int64  `orm:"sum_total_price"         json:"sum_total_price"`
-	SumCount           int64  `orm:"sum_count"               json:"sum_count"`
-	ProjectInvestWayId int64  `orm:"project_invest_way_id"   json:"project_invest_way_id"`
-	ProjectName        string `orm:"-"                       json:"project_name"`
-	ProjectThumbImg    string `orm:"-"                       json:"project_thumb_img"`
-	InvestWayName      string `orm:"-"                       json:"project_invest_way_name"`
-	GuessHarvestTime   int64  `orm:"-"                       json:"guess_harvest_time"`
-	GuessHarvestPrice  int64  `orm:"-"                       json:"guess_harvest_price"`
-	ValidHarvestTime   int64  `orm:"-"                       json:"valid_harvest_time"`
-	IsHarvest          bool   `orm:"-"                       json:"is_harvest"`
-	GranaryId          int64  `orm:"-"                       json:"granary_id"`
-}
-
-func (self *ProjectJoin) TableName() string {
-	return project_joins_tablename
-}
-
-func (self *ProjectJoin) Create(uId, pId, count, single, investWayId int64) *ProjectJoin {
-	oId := createOrderId()
-	t := count * single
-	item := &ProjectJoin{
-		ProjectId:          pId,
-		OrderId:            oId,
-		SinglePrice:        single,
-		Count:              count,
-		TotalPrice:         t,
-		PaiedPrice:         t,
-		UserId:             uId,
-		ProjectInvestWayId: investWayId,
-	}
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		return nil
-	}
-	item.Id = id
-	return item
-}
-
-//生成订单ID
-func createOrderId() string {
-	n := time.Now().Format("20060102")
-	u := uuid.NewV4().String()
-	c := strings.Split(u, "-")
-	oId := strings.ToUpper(fmt.Sprintf("%s%s%s", ORDER_ID_PREFIX_RG, n, c[0]))
-	return oId
-}
-
-func (self *ProjectJoin) Save() error {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save ProjectJoin id=[%d] .err=[%s]", self.Id, err)
-		return err
-	}
-	return nil
-}
-
-func (self *ProjectJoin) Delete() error {
-	o := orm.NewOrm()
-	if _, err := o.Delete(&ProjectJoin{Id: self.Id}); err != nil {
-		return err
-	}
-	return nil
-}
-
-//
-func GetFirstInvestTimeByUIdAndPId(uId, productId int64) int64 {
-	type Ret struct {
-		FirstInvestTime int64 `json:"first_invest_time"`
-	}
-	sql := `
-		SELECT
-			min(paied_at) AS first_invest_time
-		FROM
-			project_joins 
-		LEFT JOIN project_invest_ways
-		on project_invest_ways.project_id = project_joins.project_id 
-		WHERE
-			project_joins.is_deleted = 0
-		AND project_joins.is_refunded = 0
-		AND project_joins.state = 1
-		AND project_joins.user_id = ?
-		AND project_invest_ways.product_id = ?;
-	`
-	var ret Ret
-	err := orm.NewOrm().Raw(sql, uId, productId).QueryRow(&ret)
-	if err != nil {
-		beego.BeeLogger.Warn("GetFirstInvestTimeByUIdAndPId(%d, %d) %s", uId, productId, err)
-		return 0
-	}
-	return ret.FirstInvestTime
-}
-
-//单个项目、单个投资方式的投资人列表
-func GetInvestListByPIdAndWId(pId, wId int64, useCache bool) (list []*Investor) {
-	k := fmt.Sprintf("project_model.GetInvestListByPIdAndWId(%d, %d)", pId, wId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*Investor); ok {
-			return s
-		}
-	}
-	sql := `
-		SELECT
-			SUM(count) AS invest_count,
-			user_id			
-		FROM
-			%s
-		WHERE
-			state = ?
-		AND is_refunded = ?
-		AND is_deleted = ?
-		AND project_id = ?
-		AND project_invest_way_id = ?
-		GROUP BY
-			user_id			
-		HAVING
-			invest_count > 0
-		ORDER BY
-			invest_count DESC;
-	`
-	sql = fmt.Sprintf(sql, project_joins_tablename)
-	o := orm.NewOrm()
-	_, err := o.Raw(sql, 1, 0, 0, pId, wId).QueryRows(&list)
-	if err != nil {
-		beego.BeeLogger.Error("project_model.GetInvestListByPIdAndWId(%d,%d), err=[%s]", pId, wId, err)
-		return nil
-	}
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}
-
-//根据项目有效的投资记录,获取参数人数
-func GetValidTotalCountByPId(pId int64, useCache bool) int64 {
-
-	k := fmt.Sprintf("project_model.GetValidTotalCountByPId(%d)", pId)
-	if useCache {
-		if usr, ok := cache.Cache.Get(k).(int64); ok {
-			return usr
-		}
-	}
-
-	type Ret struct {
-		Count int64 `json:"count"`
-	}
-	sql := `
-		SELECT
-			count(DISTINCT user_id) AS count
-		FROM
-			project_joins
-		WHERE
-			is_deleted = 0
-		AND is_refunded = 0
-		AND state = 1
-		AND project_id = ?
-	`
-	var ret Ret
-	err := orm.NewOrm().Raw(sql, pId).QueryRow(&ret)
-	if err != nil {
-		beego.BeeLogger.Warn("project_model.GetValidTotalCountByPId(%d) %s", pId, err)
-		return 0
-	}
-	cache.Cache.Put(k, ret.Count, 5*time.Minute)
-	return ret.Count
-}
-
-//根据项目有效的投资记录,获取融资金额
-func GetValidTotalFundingByPId(pId int64, useCache bool) int64 {
-
-	k := fmt.Sprintf("project_model.GetValidTotalFundingByPId(%d)", pId)
-	if useCache {
-		if usr, ok := cache.Cache.Get(k).(int64); ok {
-			return usr
-		}
-	}
-	type Ret struct {
-		Funding int64 `json:"funding"`
-	}
-	sql := `
-		SELECT
-			sum(total_price) AS funding
-		FROM
-			project_joins
-		WHERE
-			is_deleted = 0
-		AND is_refunded = 0
-		AND state = 1
-		AND project_id = ?;
-	`
-	var ret Ret
-	err := orm.NewOrm().Raw(sql, pId).QueryRow(&ret)
-	if err != nil {
-		beego.BeeLogger.Warn("project_model.GetValidTotalFundingByPId(%d) %s", pId, err)
-		return 0
-	}
-	cache.Cache.Put(k, ret.Funding, 5*time.Minute)
-	return ret.Funding
-}
-
-//单个项目的投资记录列表--分页
-func GetInvestListByPId(pId, page, perPage int64, useCache bool) (list []*Investor) {
-	k := fmt.Sprintf("project_model.GetInvestListByPId(%d, %d ,%d)", pId, page, perPage)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*Investor); ok {
-			return s
-		}
-	}
-	o := orm.NewOrm()
-	sql := fmt.Sprintf("select total_price as investment, user_id, paied_at as invest_time from %s where project_id = ? and state = ? and is_refunded = ? and is_deleted = ? order by invest_time desc, id desc limit %d, %d",
-		project_joins_tablename, (page-1)*perPage, perPage)
-	_, err := o.Raw(sql, pId, 1, 0, 0).QueryRows(&list)
-	for _, item := range list {
-		item.InvestTime = int64(item.InvestTime / 1e9)
-	}
-	if err != nil {
-		beego.BeeLogger.Error("project_model.GetInvestListByPId(%d, %d ,%d) err=[%s]", pId, page, perPage, err)
-		return nil
-	}
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}
-
-//单个项目的投资人总数-不排重
-func GetInvestorCountByPId(pId int64, useCache bool) int64 {
-	k := fmt.Sprintf("project_model.GetInvestorCountByPId(%d)", pId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-	item := new(ProjectJoin)
-	o := orm.NewOrm()
-	count, _ := o.QueryTable(item).Filter("state", 1).
-		Filter("is_refunded", 0).Filter("is_deleted", 0).Filter("project_id", pId).Count()
-
-	cache.Cache.Put(k, count, 5*time.Minute)
-	return count
-}
-
-//根据用户id,回报方式id,项目id,获取用户未支付投资记录
-func GetUnPayOrderByPIdAndWIdAndUId(pId, wId, uId int64, useCache bool) *ProjectJoin {
-	k := fmt.Sprintf("project_model.GetUnPayOrderByPIdAndWIdAndUId(%d, %d, %d)", pId, wId, uId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(*ProjectJoin); ok {
-			return s
-		}
-	}
-	item := new(ProjectJoin)
-	o := orm.NewOrm()
-
-	err := o.QueryTable(item).Filter("project_id", pId).Filter("project_invest_way_id", wId).Filter("user_id", uId).Filter("state", 0).Limit(1).One(item)
-
-	if err != nil {
-		beego.BeeLogger.Error("project_model.GetUnPayOrderByPIdAndWIdAndUId(%d, %d, %d) err[%s]", pId, wId, uId, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-// 根据OrderId获取记录
-func GetInvestByOrderId(oId string) *ProjectJoin {
-	item := new(ProjectJoin)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).
-		Filter("order_id", oId).
-		Limit(1).One(item); err != nil {
-		return nil
-	}
-	return item
-}
-
-//某个用户,所有项目已认购支付成功的认购总额(助农金额)
-func GetUserHadSuccessInvest(userId int64, useCache bool) int64 {
-	k := fmt.Sprintf("project_model.GetUserHadSuccessInvest.userId(%d)", userId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-	type Count struct {
-		Count int64
-	}
-	var cnt Count
-	o := orm.NewOrm()
-	sql := fmt.Sprintf("select sum(total_price) as count from %s where state = ? and is_refunded = ? and is_deleted = ? and user_id = ?",
-		project_joins_tablename)
-
-	err := o.Raw(sql, 1, 0, 0, userId).QueryRow(&cnt)
-	if err != nil {
-		beego.BeeLogger.Error("project_model.GetUserHadSuccessInvest.userId(%d),err=[%s]", userId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, cnt.Count, 10*time.Minute)
-
-	return cnt.Count
-}
-
-//该用户的投资记录(排重,各项目各回报方式)
-func GetInvestmentsByUId(page, perpage, uId int64, useCache bool) (list []*JoinItemPerProjectPerWay) {
-	k := fmt.Sprintf("project_model.GetInvestmentsByUId.page(%d).perpage(%d).userId(%d)", page, perpage, uId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*JoinItemPerProjectPerWay); ok {
-			return s
-		}
-	}
-
-	o := orm.NewOrm()
-
-	sql := `
-		SELECT
-			sum(total_price) AS sum_total_price,
-			SUM(count) AS sum_count,
-			project_id,
-			project_invest_way_id
-		FROM
-			%s
-		WHERE
-			state = ?
-		AND is_refunded = ?
-		AND is_deleted = ?
-		AND user_id = ?
-		GROUP BY
-			project_id,
-			project_invest_way_id
-		HAVING
-			SUM(count) > 0
-		ORDER BY
-			project_id DESC
-		LIMIT %d, %d;
-	`
-	sql = fmt.Sprintf(sql, project_joins_tablename, (page-1)*perpage, perpage)
-	_, err := o.Raw(sql, 1, 0, 0, uId).QueryRows(&list)
-	if err != nil {
-		beego.BeeLogger.Error("project_model.GetInvestmentsByUId.page(%d).perpage(%d).userId(%d), err=[%s]", page, perpage, uId, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}
-
-//该用户的投资记录(排重,各项目各回报方式)
-func GetInvestmentsCountByUId(uId int64, useCache bool) int64 {
-	k := fmt.Sprintf("project_model.GetInvestmentsCountByUId.userId(%d)", uId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-
-	o := orm.NewOrm()
-
-	sql := `
-		SELECT
-			sum(total_price) AS sum_total_price,
-			SUM(count) AS sum_count,
-			project_id,
-			project_invest_way_id
-		FROM
-			%s
-		WHERE
-			state = ?
-		AND is_refunded = ?
-		AND is_deleted = ?
-		AND user_id = ?
-		GROUP BY
-			project_id,
-			project_invest_way_id
-		HAVING
-			SUM(count) > 0
-	`
-	var list []*JoinItemPerProjectPerWay
-	sql = fmt.Sprintf(sql, project_joins_tablename)
-	_, err := o.Raw(sql, 1, 0, 0, uId).QueryRows(&list)
-	if err != nil {
-		beego.BeeLogger.Error("project_model.GetInvestmentsCountByUId.userId(%d), err=[%s]", uId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, int64(len(list)), 5*time.Minute)
-	return int64(len(list))
-}
-
-//该项目总共被认购份数
-func GetInvestSuccessCountByPId(projectId int64, useCache bool) int64 {
-	k := fmt.Sprintf("project_model.GetInvestSuccessCountByPId.projectId(%d)", projectId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-	type Count struct {
-		Count int64
-	}
-	var cnt Count
-	o := orm.NewOrm()
-	err := o.Raw(fmt.Sprintf("select sum(count) as count from %s where project_id = ? and state = ? and is_refunded = ? and is_deleted = ?",
-		project_joins_tablename), projectId, 1, 0, 0).QueryRow(&cnt)
-	if err != nil {
-		beego.BeeLogger.Error("GetInvestSuccessCountByPId : project_id=[%d], err=[%s]", projectId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, cnt.Count, 5*time.Minute)
-
-	return cnt.Count
-}
-
-//该项目的所有有效投资记录
-func GetProjectJoinListByPId(pId int64, useCache bool) (list []*ProjectJoin) {
-
-	k := fmt.Sprintf("project_model.GetProjectJoinListByPId(%d)", pId)
-
-	if useCache {
-		if values, ok := cache.Cache.Get(k).([]*ProjectJoin); ok {
-			return values
-		}
-	}
-
-	sql := `
-			SELECT
-				*
-			FROM
-				project_joins
-			WHERE
-				project_id = ?
-			AND state = 1
-			AND is_refunded = 0
-			AND is_deleted = 0
-
-		`
-
-	_, err := orm.NewOrm().Raw(sql, pId).QueryRows(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("project_model.GetProjectJoinListByPId(%d), err=[%d]", pId, err)
-		return nil
-	}
-
-	return list
-}
-
-/**
-该用户除去某项目以外的投资记录(排重,项目各回报方式)
-*/
-func GetInvestmentsByUIdExcludePId(page, perpage, uId, pId int64, useCache bool) (list []*JoinItemPerProjectPerWay) {
-	k := fmt.Sprintf("project_model.GetInvestmentsByUIdAndPId.page(%d).perpage(%d).userId(%d).projectId(%d)", page, perpage, uId, pId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*JoinItemPerProjectPerWay); ok {
-			return s
-		}
-	}
-
-	o := orm.NewOrm()
-
-	sql := `
-		SELECT
-			sum(total_price) AS sum_total_price,
-			SUM(count) AS sum_count,
-			project_id,
-			project_invest_way_id
-		FROM
-			%s
-		WHERE
-			state = ?
-		AND is_refunded = ?
-		AND is_deleted = ?
-		AND user_id = ?
-		AND project_id != ?
-		GROUP BY
-			project_invest_way_id
-		HAVING
-			SUM(count) > 0
-		ORDER BY
-			project_id DESC
-		LIMIT %d, %d;
-	`
-	sql = fmt.Sprintf(sql, project_joins_tablename, (page-1)*perpage, perpage)
-	_, err := o.Raw(sql, 1, 0, 0, uId, pId).QueryRows(&list)
-	if err != nil {
-		beego.BeeLogger.Error("project_model.GetInvestmentsByUIdAndPId.page(%d).perpage(%d).userId(%d).projectId(%d), err=[%s]", page, perpage, uId, pId, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}

+ 0 - 75
go/gopath/src/fohow.com/apps/models/project_model/project_picture.go

@@ -1,75 +0,0 @@
-package project_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"fohow.com/cache"
-	"time"
-)
-
-const (
-	project_pictures_tablename = "project_pictures"
-	PIC_TYPE_DETAIL            = 1 //详情图
-	PIC_TYPE_CYCLE             = 0 //轮播图
-	PIC_TYPE_PROJECT_INTODUCE  = 2 //农场介绍
-)
-
-type ProjectPicture struct {
-	Id        int64     `orm:"column(id);pk"                                       json:"id"`         // int(11)
-	ProjectId string    `orm:"column(project_id)"                                  json:"project_id"` // varchar(20)
-	Img       string    `orm:"column(img)"                                         json:"img"`        // varchar(255)
-	PicType   int64     `orm:"column(pic_type)"                                    json:"-"`          // int(11)
-	Sort      int64     `orm:"column(sort)"                                        json:"-"`          // int(11)
-	State     int64     `orm:"column(state)"                                        json:"-"`         // int(11)
-	CreatedAt time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"-"`          // datetime
-	UpdatedAt time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"-"`          // datetime
-}
-
-func (self *ProjectPicture) TableName() string {
-	return project_pictures_tablename
-}
-
-func GetProjectPicturesByPIdAndPType(pId, pType int64, useCache bool) (list []*ProjectPicture) {
-	k := fmt.Sprintf("product_model.GetProjectPicturesByPIdAndPType(%d).PType(%d)", pId, pType)
-	if useCache {
-		if ret, ok := cache.Cache.Get(k).([]*ProjectPicture); ok {
-			return ret
-		}
-	}
-	if _, err := orm.NewOrm().QueryTable(new(ProjectPicture)).
-		Filter("project_id", pId).Filter("pic_type", pType).Filter("state", 1).
-		OrderBy("-sort").All(&list); err != nil {
-		beego.BeeLogger.Debug("get GetProjectPicturesByPIdAndPType err=[%s] projectId=[%d]",
-			err, pId)
-	}
-	for _, item := range list {
-		item.Img = GetCdnFullImgUrl(item.Img)
-	}
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}
-
-func GetAscProjectPicturesByPIdAndPType(pId, pType int64, useCache bool, isCdn bool) (list []*ProjectPicture) {
-	k := fmt.Sprintf("product_model.GetAscProjectPicturesByPIdAndPType(%d).PType(%d)", pId, pType)
-	if useCache {
-		if ret, ok := cache.Cache.Get(k).([]*ProjectPicture); ok {
-			return ret
-		}
-	}
-	if _, err := orm.NewOrm().QueryTable(new(ProjectPicture)).
-		Filter("project_id", pId).Filter("pic_type", pType).Filter("state", 1).
-		OrderBy("sort").All(&list); err != nil {
-		beego.BeeLogger.Debug("get GetAscProjectPicturesByPIdAndPType err=[%s] projectId=[%d]",
-			err, pId)
-	}
-	for _, item := range list {
-		if isCdn {
-			item.Img = GetCdnFullImgUrl(item.Img)
-		} else {
-			item.Img = GetFullImgUrl(item.Img)
-		}
-	}
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-}

+ 0 - 7
go/gopath/src/fohow.com/apps/models/reserve_act_model/init.go

@@ -1,7 +0,0 @@
-package reserve_act_model
-
-import "github.com/astaxie/beego/orm"
-
-func init() {
-	orm.RegisterModel(new(ReserveAct), new(ReserveActOrder))
-}

+ 0 - 266
go/gopath/src/fohow.com/apps/models/reserve_act_model/reserve_act.go

@@ -1,266 +0,0 @@
-package reserve_act_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"github.com/uuid"
-	"fohow.com/cache"
-	"strings"
-	"time"
-)
-
-const (
-	reserve_acts_tablename       = "reserve_acts"
-	reserve_act_orders_tablename = "reserve_act_orders"
-
-	ORDER_ID_PREFIX_RAO = "RAO"
-
-	ORDER_PAY_WAY_WEIXINPAY = "weixinpay"
-
-	STATE_UNDERWAY = 1
-	STATE_FINISHED = 2
-)
-
-var STATE_CN_TEXT = map[int64]string{
-	0: "准备中",
-	1: "进行中",
-	2: "已结束",
-}
-
-var URL_TYPE_ENUM = map[string]string{
-	"inner_url": "内部链接",
-	"outer_url": "外部链接",
-}
-
-type ReserveAct struct {
-	Id               int64     `orm:"column(id);pk"                         json:"id"`                // int(11)
-	Title            string    `orm:"column(title)"                         json:"title"`             // varchar(255)
-	StartAt          time.Time `orm:"column(start_at);type(datetime)"       json:"-"`                 // datetime
-	StopAt           time.Time `orm:"column(stop_at);type(datetime)"        json:"-"`                 // datetime
-	BackgroundDetail string    `orm:"column(background_detail)"             json:"background_detail"` // varchar(255)
-	Rule             string    `orm:"column(rule)"             json:"rule"`                           // varchar(255)
-	JoinAmount       int64     `orm:"column(join_amount)"                   json:"join_amount"`       // int(11)
-	Remark           string    `orm:"column(remark)"                        json:"remark"`
-	GuideUrl         string    `orm:"column(guide_url)"                     json:"guide_url"`  // varchar(255)
-	GuideText        string    `orm:"column(guide_text)"                    json:"guide_text"` // varchar(255)
-	GuideImg         string    `orm:"column(guide_img)"                    json:"guide_img"`   // varchar(255)
-	UrlType          string    `orm:"column(url_type)"                      json:"url_type"`   // varchar(255)
-	State            int64     `orm:"column(state)"                         json:"state"`
-	StateCn          string    `orm:"-"                                     json:"state_cn"`
-	ShareTitle       string    `orm:"column(share_title)"                    json:"share_title"` // varchar(255)
-	ShareAbout       string    `orm:"column(share_about)"                    json:"share_about"` // varchar(255)
-	ShareImg         string    `orm:"column(share_img)"                      json:"share_img"`   // varchar(255)
-	IsReturned       bool      `orm:"column(is_returned)"                    json:"-"`
-	ReturnCount      int64     `orm:"column(return_count)"                   json:"-"`
-	CreatedAt        time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"-"` // datetime
-	UpdatedAt        time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"-"` // datetime
-
-	IsJoined bool `orm:"-"                                      json:"is_joined"`
-
-	StartTime int64 `orm:"-"                                      json:"start_time"`
-	StopTime  int64 `orm:"-"                                      json:"stop_time"`
-}
-
-type ReserveActOrder struct {
-	Id             int64     `orm:"column(id);pk"                             json:"id"`          // int(11)
-	ActId          int64     `orm:"column(act_id);"                           json:"act_id"`      // int(11)
-	OrderId        string    `orm:"column(order_id)"                          json:"order_id"`    // varchar(255)
-	TotalPrice     int64     `orm:"column(total_price);"                      json:"total_price"` // int(11)
-	PaiedPrice     int64     `orm:"column(paied_price);"                      json:"paied_price"` // int(11)
-	UserId         int64     `orm:"column(user_id);"                          json:"user_id"`
-	WxUserId       int64     `orm:"column(wx_user_id);"                       json:"wx_user_id"`
-	PayWay         string    `orm:"column(pay_way)"                           json:"pay_way"` // varchar(255)
-	TradeNo        string    `orm:"column(trade_no)"                          json:"-"`       // varchar(255)
-	PaiedAt        int64     `orm:"column(paied_at)"                          json:"-"`       // int(11)
-	PaiedTime      int64     `orm:"-"                                         json:"paied_at"`
-	State          int64     `orm:"column(state)"                             json:"-"`
-	IsRefunded     bool      `orm:"column(is_refunded)"                       json:"-"`
-	IsDeleted      bool      `orm:"column(is_deleted)"                        json:"-"`
-	ReturnedAmount int64     `orm:"column(returned_amount)"                   json:"-"`
-	Remark         string    `orm:"column(remark)"                            json:"-"`
-	CreatedAt      time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"-"` // datetime
-	UpdatedAt      time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"-"` // datetime
-
-	WxNickname string `orm:"-"                                         json:"wx_nickname"`
-	WxHead     string `orm:"-"                                         json:"wx_head"`
-	Rank       string `orm:"-"                                         json:"rank"`
-}
-
-func (self *ReserveAct) TableName() string {
-	return reserve_acts_tablename
-}
-
-func (self *ReserveActOrder) TableName() string {
-	return reserve_act_orders_tablename
-}
-
-func (self *ReserveActOrder) Create(actId, totalPrice, paiedPrice, userId, wxUserId int64, remark string) *ReserveActOrder {
-	orderId := createOrderId()
-
-	info := &ReserveActOrder{
-		ActId:      actId,
-		TotalPrice: totalPrice,
-		PaiedPrice: paiedPrice,
-		UserId:     userId,
-		WxUserId:   wxUserId,
-		OrderId:    orderId,
-		Remark:     remark,
-		PayWay:     ORDER_PAY_WAY_WEIXINPAY,
-	}
-	id, err := orm.NewOrm().Insert(info)
-	if err != nil {
-		beego.BeeLogger.Error("insert ReserveActOrder err=[%s]", err)
-		return nil
-	} else {
-		info.Id = id
-	}
-	return info
-}
-
-//生成订单ID
-func createOrderId() string {
-	n := time.Now().Format("20060102")
-	u := uuid.NewV4().String()
-	c := strings.Split(u, "-")
-	oId := strings.ToUpper(fmt.Sprintf("%s%s%s", ORDER_ID_PREFIX_RAO, n, c[0]))
-	return oId
-}
-
-func (self *ReserveActOrder) Save() error {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save ReserveActOrder id=[%d] .err=[%s]", self.Id, err)
-		return err
-	}
-	return nil
-}
-
-func (self *ReserveAct) Save() error {
-
-	k := fmt.Sprintf("reserve_act_model.ReserveAct.Save.Id(%d)", self.Id)
-
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save ReserveAct id=[%d] .err=[%s]", self.Id, err)
-		return err
-	}
-	cache.Cache.Delete(k)
-	return nil
-}
-
-func GetReserveActById(id int64, useCache bool) *ReserveAct {
-	k := fmt.Sprintf("reserve_act_model.ReserveAct.Save.Id(%d)", id)
-
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(*ReserveAct); ok {
-			return s
-		}
-	}
-	item := new(ReserveAct)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("id", id).Limit(1).One(item); err != nil {
-		return nil
-	}
-	cache.Cache.Put(k, item, 5*time.Minute)
-	return item
-}
-
-func GetValidReserveActOrderByUIdAndAId(uId, aId int64, useCache bool) *ReserveActOrder {
-	k := fmt.Sprintf("reserve_act_model.GetValidReserveActOrderByUIdAndAId.UId(%d).AID(%d)", uId, aId)
-
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(*ReserveActOrder); ok {
-			return s
-		}
-	}
-	item := new(ReserveActOrder)
-	o := orm.NewOrm()
-	if err := o.QueryTable(item).Filter("user_id", uId).Filter("act_id", aId).Filter("state", 1).Filter("is_refunded", 0).Filter("is_deleted", 0).Filter("paied_at__gt", 0).Limit(1).One(item); err != nil {
-		return nil
-	}
-	if item != nil {
-		item.PaiedTime = int64(item.PaiedAt / 1e9)
-		cache.Cache.Put(k, item, 5*time.Minute)
-	}
-	return item
-}
-
-func GetList(aId, page, perPage int64, useCache bool) (orders []*ReserveActOrder) {
-
-	k := fmt.Sprintf("reserve_act_model.GetList.AId(%d,%d,%d)", aId, page, perPage)
-
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*ReserveActOrder); ok {
-			return s
-		}
-	}
-
-	order := new(ReserveActOrder)
-	qs := orm.NewOrm().QueryTable(order)
-	qs = qs.Filter("act_id", aId).Filter("state", 1).Filter("is_refunded", 0).Filter("is_deleted", 0).Filter("paied_at__gt", 0)
-	if _, err := qs.OrderBy("paied_at").
-		Limit(perPage, (page-1)*perPage).All(&orders); err != nil {
-		beego.BeeLogger.Debug("get Rank[%d] order list err=[%s]", aId, err)
-		return nil
-	}
-	for _, item := range orders {
-		item.PaiedTime = int64(item.PaiedAt / 1e9)
-	}
-	if len(orders) > 0 {
-		cache.Cache.Put(k, orders, 5*time.Minute)
-	}
-	return orders
-
-}
-
-func GetListCount(aId int64, useCache bool) int64 {
-
-	k := fmt.Sprintf("reserve_act_model.GetListCount.AId(%d)", aId)
-
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-
-	type Count struct {
-		Count int64 `json:"count"`
-	}
-
-	sql :=
-
-		`
-			SELECT
-				count(DISTINCT(user_id)) as count
-			FROM
-				reserve_act_orders
-			WHERE
-				act_id = ?
-			AND state = 1
-			AND is_refunded = 0
-			AND is_deleted = 0
-			AND paied_at > 0
-			
-		`
-	var count Count
-	err := orm.NewOrm().Raw(sql, aId).QueryRow(&count)
-	if err != nil {
-		beego.BeeLogger.Debug("get Rank[%d] order list err=[%s]", aId, err)
-		return 0
-	}
-
-	if count.Count > 0 {
-		cache.Cache.Put(k, count.Count, 5*time.Minute)
-	}
-	return count.Count
-}
-
-// 根据OrderId获取订单记录
-func GetOrderById(oId string) (order *ReserveActOrder) {
-	order = &ReserveActOrder{}
-	if err := orm.NewOrm().QueryTable(order).Filter("order_id", oId).Limit(1).
-		One(order); err != nil {
-		beego.BeeLogger.Error("get order by id=%s err=%s", oId, err)
-		order = nil
-	}
-	return order
-}

+ 0 - 7
go/gopath/src/fohow.com/apps/models/subject_model/init.go

@@ -1,7 +0,0 @@
-package subject_model
-
-import "github.com/astaxie/beego/orm"
-
-func init() {
-	orm.RegisterModel(new(ProductSaleSubject), new(SaleDrawCode), new(SubjectClickFromUser))
-}

+ 0 - 193
go/gopath/src/fohow.com/apps/models/subject_model/product_sale_subject.go

@@ -1,193 +0,0 @@
-package subject_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"fohow.com/apps/models/product_model"
-	"fohow.com/cache"
-	"time"
-)
-
-const (
-	product_sale_subject_tablename = "product_sale_subjects"
-
-	subject_click_from_user_tableaname = "subject_click_from_users"
-)
-
-type ProductSaleSubject struct {
-	Id            int64     `orm:"column(id);pk"                                  json:"id"`             // int(11)
-	ProductIds    string    `orm:"column(product_ids)"                            json:"product_ids"`    // varchar(255)
-	BackgroundImg string    `orm:"column(background_img)"                         json:"background_img"` // varchar(255)
-	SubjectTitle  string    `orm:"column(subject_title)"                          json:"subject_title"`  // varchar(255)
-	SubjectDesc   string    `orm:"column(subject_desc)"                           json:"subject_desc"`   // varchar(255)
-	QrcodeTips    string    `orm:"column(qrcode_tips)"                            json:"qrcode_tips"`    // varchar(255)
-	QrcodeImg     string    `orm:"column(qrcode_img)"                             json:"qrcode_img"`     // varchar(255)
-	ShareTitle    string    `orm:"column(share_title)"                            json:"share_title"`    // varchar(255)
-	ShareContent  string    `orm:"column(share_content)"                          json:"share_content"`  // varchar(255)
-	ShareImg      string    `orm:"column(share_img)"                              json:"share_img"`      // varchar(255)
-	CreatedAt     time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"-"`              // datetime
-	UpdatedAt     time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"-"`              // datetime
-
-	Products []*product_model.Product `orm:"-"                              json:"products"`
-
-	IsPrizeAct    bool      `orm:"column(is_prize_act)"                           json:"is_prize_act"`
-	Rule          string    `orm:"column(rule)"                                   json:"-"`
-	OpenPrizeTime time.Time `orm:"column(open_prize_time)"                        json:"open_prize_time"`
-	PrizeNumber   string    `orm:"column(prize_number)"                           json:"-"`
-	PrizeName     string    `orm:"column(prize_name)"                             json:"-"`
-	OpenPTime     int64     `orm:"-"                                              json:"open_p_time"`
-
-	Click int64 `orm:"click"                                          json:"-"`
-}
-
-type SubjectClickFromUser struct {
-	Id                 int64     `orm:"column(id);pk"                                       json:"id,omitempty"`                    // int(11)
-	UserId             int64     `orm:"column(user_id);null"                                json:"user_id,omitempty"`               // int(11)
-	WxUserId           int64     `orm:"column(wx_user_id);null"                                json:"wx_user_id,omitempty"`         // int(11)
-	Ip                 string    `orm:"column(ip);null"                                     json:"ip,omitempty"`                    // varchar(255)
-	ClickTimes         int64     `orm:"column(click_times);null"                            json:"click_times,omitempty"`           // int(11)
-	ClickLastTime      time.Time `orm:"column(click_last_time);null;type(datetime)"         json:"click_last_time,omitempty"`       // datetime
-	ClickFromSubjectId int64     `orm:"column(click_from_subject_id)"                       json:"click_from_subject_id,omitempty"` // int(11)
-	CreatedAt          time.Time `orm:"column(created_at);null;auto_now_add;type(datetime)" json:"created_at,omitempty"`            // datetime
-	UpdatedAt          time.Time `orm:"column(updated_at);null;auto_now;type(datetime)"     json:"updated_at,omitempty"`            // datetime}
-}
-
-func (self *ProductSaleSubject) TableName() string {
-	return product_sale_subject_tablename
-}
-
-func (self *SubjectClickFromUser) TableName() string {
-	return subject_click_from_user_tableaname
-}
-
-func GetProductSaleSubjectById(id int64, useCache bool) *ProductSaleSubject {
-	k := fmt.Sprintf("subject_model.GetProductSaleSubjectById.Id(%d)", id)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(*ProductSaleSubject); ok {
-			return s
-		}
-	}
-
-	item := new(ProductSaleSubject)
-
-	err := orm.NewOrm().QueryTable(item).Filter("id", id).Limit(1).One(item)
-
-	if err != nil {
-		beego.BeeLogger.Warn("subject_model.GetProductSaleSubjectById.Id(%d) err=[%d]", id, err)
-		return nil
-	}
-	if item != nil {
-		item.OpenPTime = item.OpenPrizeTime.Unix()
-		if item.OpenPTime < 0 {
-			item.OpenPTime = 0
-		}
-	}
-	cache.Cache.Put(k, item, 2*time.Minute)
-	return item
-}
-
-func GetLastJoinPrizeActProductSaleSubject(useCache bool) *ProductSaleSubject {
-	k := fmt.Sprintf("subject_model.GetLastJoinPrizeActProductSaleSubject.Id()")
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(*ProductSaleSubject); ok {
-			return s
-		}
-	}
-
-	item := new(ProductSaleSubject)
-
-	err := orm.NewOrm().QueryTable(item).Filter("is_prize_act", 1).OrderBy("-id").Limit(1).One(item)
-
-	if err != nil {
-		beego.BeeLogger.Warn("subject_model.GetLastJoinPrizeActProductSaleSubject err=[%d]", err)
-		return nil
-	}
-	cache.Cache.Put(k, item, 2*time.Minute)
-	return item
-}
-
-//专题活动
-func GetPrizeActProductSaleSubjectsByProductId(pId int64, useCache bool) (list []*ProductSaleSubject) {
-
-	k := fmt.Sprintf("subject_model.GetPrizeActProductSaleSubjectsByProductId(%d)", pId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*ProductSaleSubject); ok {
-			return s
-		}
-	}
-
-	sql := `
-		SELECT
-			*
-		FROM
-			product_sale_subjects
-		WHERE
-		  CONCAT(product_ids,',') LIKE CONCAT(?,',');
-	
-	`
-
-	_, err := orm.NewOrm().Raw(sql, pId).QueryRows(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("subject_model.GetPrizeActProductSaleSubjectsByProductId(%d) err=[%d]", pId, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 5*time.Minute)
-	return list
-
-}
-
-func (self *SubjectClickFromUser) Create(subjectId, uId, wxUId int64, ip string) (item *SubjectClickFromUser) {
-	item = &SubjectClickFromUser{
-		UserId:             uId,
-		WxUserId:           wxUId,
-		Ip:                 ip,
-		ClickFromSubjectId: subjectId}
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		beego.BeeLogger.Error("Insert SubjectClickFromUser err=[%s]", err)
-		return nil
-	}
-	item.Id = id
-	return item
-}
-
-func (self *SubjectClickFromUser) Save() bool {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save SubjectClickFromUser id=[%d] .err=[%s]", self.Id, err)
-		return false
-	}
-	return true
-}
-
-func (self *ProductSaleSubject) Save() bool {
-	if _, err := orm.NewOrm().Update(self); err != nil {
-		beego.BeeLogger.Error("Save ProductSaleSubject id=[%d] .err=[%s]", self.Id, err)
-		return false
-	}
-	return true
-}
-
-func GetCfUserByWxUIdAndSubjectId(subjectId, wxUId int64) *SubjectClickFromUser {
-	if wxUId == 0 {
-		return nil
-	}
-	item := new(SubjectClickFromUser)
-	qs := orm.NewOrm().QueryTable(item)
-	qs = qs.Filter("click_from_subject_id", subjectId).Filter("wx_user_id", wxUId)
-	if err := qs.Limit(1).One(item); err != nil {
-		return nil
-	}
-	return item
-}
-
-//增加文章详情页阅读数
-func (self *ProductSaleSubject) AddClick() {
-	item := GetProductSaleSubjectById(self.Id, false)
-	if item != nil {
-		item.Click = item.Click + 1
-		item.Save()
-	}
-}

+ 0 - 217
go/gopath/src/fohow.com/apps/models/subject_model/sale_draw_code.go

@@ -1,217 +0,0 @@
-package subject_model
-
-import (
-	"fmt"
-	"github.com/astaxie/beego"
-	"github.com/astaxie/beego/orm"
-	"fohow.com/apps/models/user_model"
-	"fohow.com/cache"
-	"time"
-)
-
-const (
-	sale_draw_codes_tablename = "subject_draw_codes"
-)
-
-type SaleDrawCode struct {
-	Id            int64     `orm:"column(id);pk"                                  json:"id"`              // int(11)
-	Code          int64     `orm:"column(code)"                                   json:"-"`               // varchar(255)
-	CodeFormat    string    `orm:"-"                                              json:"code"`            // varchar(255)
-	OrderId       string    `orm:"column(order_id)"                               json:"order_id"`        // varchar(255)
-	WxUserId      int64     `orm:"column(wx_user_id)"                             json:"wx_user_id"`      // varchar(255)
-	SaleSubjectId int64     `orm:"column(sale_subject_id)"                        json:"sale_subject_id"` // int(11)
-	IsAwarded     bool      `orm:"column(is_awarded);"                            json:"is_awarded"`      // int(11)
-	CreatedAt     time.Time `orm:"column(created_at);auto_now_add;type(datetime)" json:"-"`               // datetime
-	UpdatedAt     time.Time `orm:"column(updated_at);auto_now;type(datetime)"     json:"-"`               // datetime
-
-	WxUser         *user_model.WxUser `orm:"-"                                     json:"-"`
-	WxUserNickname string             `orm:"-"                                     json:"wx_user_nickname"`
-	WxUserHead     string             `orm:"-"                                     json:"wx_user_head"`
-}
-
-func (self *SaleDrawCode) TableName() string {
-	return sale_draw_codes_tablename
-}
-
-func (self *SaleDrawCode) Create(code, wxUserId, saleSubjectId int64, orderId string) *SaleDrawCode {
-	item := &SaleDrawCode{
-		Code:          code,
-		WxUserId:      wxUserId,
-		SaleSubjectId: saleSubjectId,
-		OrderId:       orderId,
-		IsAwarded:     false,
-	}
-	id, err := orm.NewOrm().Insert(item)
-	if err != nil {
-		beego.BeeLogger.Error("insert SaleDrawCode err=[%s]", err)
-		return nil
-	}
-	item.Id = id
-	return item
-}
-
-func GetLastSaleDrawCodeBySubjectId(subjectId int64) *SaleDrawCode {
-
-	item := new(SaleDrawCode)
-
-	err := orm.NewOrm().QueryTable(item).Filter("sale_subject_id", subjectId).OrderBy("-id").Limit(1).One(item)
-
-	if err != nil {
-		beego.BeeLogger.Warn("subject_model.GetLastSaleDrawCodeBySubjectId.Id(%d) err=[%d]", subjectId, err)
-		return nil
-	}
-	return item
-}
-
-//除去退款和部分退款订单的抽奖码
-func GetSaleDrawCodesBySubjectIdAndWxUid(subjectId, wxUid int64, useCache bool) (list []*SaleDrawCode) {
-	k := fmt.Sprintf("subject_model.GetSaleDrawCodesBySubjectIdAndWxUid.Id(%d,%d)", subjectId, wxUid)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*SaleDrawCode); ok {
-			return s
-		}
-	}
-
-	sql := `
-		select c.*
-		  from subject_draw_codes c,
-			   orders o
-		 where c.order_id= o.order_id
-		   and o.status!= 'refunded'
-           and o.is_part_refund = 0
-		   and c.sale_subject_id= ?
-		   and c.wx_user_id= ?;
-	`
-
-	_, err := orm.NewOrm().Raw(sql, subjectId, wxUid).QueryRows(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("subject_model.GetSaleDrawCodesBySubjectIdAndWxUid.Id(%d,%d) err=[%d]", subjectId, wxUid, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, list, 2*time.Minute)
-	return list
-}
-
-func GetSaleDrawCodesBySubjectIdAndWxUidAndOrderId(subjectId, wxUid int64, orderId string, useCache bool) (list []*SaleDrawCode) {
-	k := fmt.Sprintf("subject_model.GetSaleDrawCodesBySubjectIdAndWxUidAndOrderId.Id(%d,%d,%s)", subjectId, wxUid, orderId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*SaleDrawCode); ok {
-			return s
-		}
-	}
-	item := new(SaleDrawCode)
-
-	_, err := orm.NewOrm().QueryTable(item).Filter("sale_subject_id", subjectId).Filter("order_id", orderId).Filter("wx_user_id", wxUid).All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("subject_model.GetSaleDrawCodesBySubjectIdAndWxUidAndOrderId.Id(%d,%d,%s) err=[%d]", subjectId, wxUid, orderId, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, item, 2*time.Minute)
-	return list
-}
-
-func GetSaleDrawCodeListBySubjectId(subjectId, page, perPage int64, useCache bool) (list []*SaleDrawCode) {
-	k := fmt.Sprintf("subject_model.GetSaleDrawCodeListBySubjectId.Id(%d,%d,%d)", subjectId, page, perPage)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*SaleDrawCode); ok {
-			return s
-		}
-	}
-	item := new(SaleDrawCode)
-
-	_, err := orm.NewOrm().QueryTable(item).Filter("sale_subject_id", subjectId).OrderBy("-code").Limit(perPage, (page-1)*perPage).All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("subject_model.GetSaleDrawCodeListBySubjectId.Id(%d,%d,%d) err=[%d]", subjectId, page, perPage, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, item, 2*time.Minute)
-	return list
-}
-
-func GetSaleDrawCodeListCount(subjectId int64, useCache bool) int64 {
-	k := fmt.Sprintf("subject_model.GetSaleDrawCodeListCount.Id(%d)", subjectId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-	item := new(SaleDrawCode)
-
-	var list []*SaleDrawCode
-	_, err := orm.NewOrm().QueryTable(item).Filter("sale_subject_id", subjectId).All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("subject_model.GetSaleDrawCodeListCount.Id(%d) err=[%d]", subjectId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, item, 2*time.Minute)
-	return int64(len(list))
-}
-
-func GetSaleDrawCodeIsAdwardedCount(subjectId int64, useCache bool) int64 {
-	k := fmt.Sprintf("subject_model.GetSaleDrawCodeIsAdwardedCount.Id(%d)", subjectId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).(int64); ok {
-			return s
-		}
-	}
-	item := new(SaleDrawCode)
-
-	var list []*SaleDrawCode
-	_, err := orm.NewOrm().QueryTable(item).Filter("sale_subject_id", subjectId).Filter("is_awarded", 1).All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("subject_model.GetSaleDrawCodeIsAdwardedCount.Id(%d) err=[%d]", subjectId, err)
-		return 0
-	}
-
-	cache.Cache.Put(k, item, 2*time.Minute)
-	return int64(len(list))
-}
-
-func GetSaleDrawCodeIsAwardedList(subjectId int64, useCache bool) (list []*SaleDrawCode) {
-	k := fmt.Sprintf("subject_model.GetSaleDrawCodeIsAdwardedList.Id(%d)", subjectId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*SaleDrawCode); ok {
-			return s
-		}
-	}
-	item := new(SaleDrawCode)
-
-	_, err := orm.NewOrm().QueryTable(item).Filter("sale_subject_id", subjectId).Filter("is_awarded", 1).GroupBy("wx_user_id").All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("subject_model.GetSaleDrawCodeIsAdwardedList.Id(%d) err=[%d]", subjectId, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, item, 2*time.Minute)
-	return list
-}
-
-func GetSaleDrawCodeAllBySubjectId(subjectId int64, useCache bool) (list []*SaleDrawCode) {
-	k := fmt.Sprintf("subject_model.GetSaleDrawCodeAllBySubjectId.Id(%d)", subjectId)
-	if useCache {
-		if s, ok := cache.Cache.Get(k).([]*SaleDrawCode); ok {
-			return s
-		}
-	}
-	item := new(SaleDrawCode)
-
-	_, err := orm.NewOrm().QueryTable(item).Filter("sale_subject_id", subjectId).GroupBy("wx_user_id").All(&list)
-
-	if err != nil {
-		beego.BeeLogger.Warn("subject_model.GetSaleDrawCodeAllBySubjectId.Id(%d) err=[%d]", subjectId, err)
-		return nil
-	}
-
-	cache.Cache.Put(k, item, 2*time.Minute)
-	return list
-}

+ 0 - 9
go/gopath/src/fohow.com/conf/app.conf

@@ -61,7 +61,6 @@ MysqlMaster = root:fohow123!@#@tcp(127.0.0.1:3306)/fohow_test?charset=utf8&parse
 MysqlDataSource = d5c:D5ctesting@tcp(d5ctestingdb.mysql.rds.aliyuncs.com:3306)/org_db?charset=utf8&parseTime=true
 CowMysqlDataSource = d5c:D5ctesting@tcp(d5ctestingdb.mysql.rds.aliyuncs.com:3306)/cow_test?charset=utf8&parseTime=true
 
-#WkhtmltoimgBinPath = "C:/Program Files/wkhtmltopdf/bin/wkhtmltoimage.exe"
 WkhtmltoimgBinPath = /opt/software/wkhtmltox/bin/wkhtmltoimage
 
 SessionName = "fohow_sid"
@@ -170,14 +169,6 @@ Gzh_MessageTemplateId_OpenPrize= "4qHdrmeippr6u_R5ser5Op_cEJqdDnP0HofD8Y1tl2k"
 Gzh_MessageTemplateId_DealUnpay= "EMWYRXVPtY_jd5EI2ijhWktN3fHoAqMqMNlHQ-hGhpQ"
 Gzh_MessageTemplateId_NewProject= "qafnEW-3Yq9eKPA0FJm_a9auyOJuYWpGAKxzJOjc_TM"
 
-#抽奖中奖到FOHOW玖玖下单秘钥
-RabbitOrderProductKey = "d283aa400af464c7"
-
-#正式项目474、测试项目1054筹中筹项目到FOHOW玖玖下单
-CzcOrderProductKey = "4bfeada662c250ae"
-
-# 到第五创查询号码是否已经注册
-CheckIsRegistD5cKey = "0f9412b6dz7be0cf"
 
 # 一键绑定微信使用的号码
 BindingWxPhoneKey = "fd85930e4941d780"

+ 0 - 29
go/gopath/src/fohow.com/libs/regist/one_click_binding_d5c.go

@@ -1,29 +0,0 @@
-package regist
-
-import (
-	"encoding/json"
-	"fmt"
-	"github.com/astaxie/beego"
-	"fohow.com/libs/tool"
-)
-
-type CheckTelResult struct {
-	CheckCode string `json:"check_code"`
-	D5cTel    string `json:"d5c_tel"`
-}
-
-func GetD5cTelByUnionId(unionId string) *CheckTelResult {
-
-	url := fmt.Sprintf("%s%s%s", beego.AppConfig.String("D5CApiHost"), "/v1/user/regist_tel?unionid=", unionId)
-
-	beego.BeeLogger.Warn("GetD5cTelByUnionId url:%s", url)
-	resp := tool.HttpCall(url, "GET", nil, nil)
-	beego.BeeLogger.Warn("GetD5cTelByUnionId resp, resp:%s", resp)
-
-	beego.BeeLogger.Warn("---GetD5cTelByUnionId resp---: %s", resp)
-
-	var result *CheckTelResult
-	json.Unmarshal([]byte(resp), &result)
-
-	return result
-}

+ 0 - 67
go/gopath/src/fohow.com/libs/regist/regist_d5c.go

@@ -1,67 +0,0 @@
-package regist
-
-import (
-	"crypto/aes"
-	"crypto/cipher"
-	"crypto/rand"
-	"encoding/base64"
-	"encoding/json"
-	"fmt"
-	"github.com/astaxie/beego"
-	"io"
-	"fohow.com/libs/tool"
-	"net/url"
-)
-
-type CheckResult struct {
-	CheckCode  string `json:"check_code"`
-	Tel        string `json:"tel"`
-	IsRegist   bool   `json:"is_regist"`
-	RegistTime string `json:"regist_time"`
-}
-
-func CheckIsRegistInD5c(tel string) *CheckResult {
-	checkIsRegistD5cKey := beego.AppConfig.String("CheckIsRegistD5cKey")
-	key := []byte(checkIsRegistD5cKey) //秘钥
-	params := fmt.Sprintf("tel=%s", tel)
-	signData := []byte(params)
-	block, err := aes.NewCipher(key) //根据秘钥生成新的密码块
-	if err != nil {
-		beego.BeeLogger.Error("Check aes newCipher err:%s", err)
-	}
-	// The IV needs to be unique, but not secure. Therefore it's common to
-	// include it at the beginning of the ciphertext.
-	ciphertext := make([]byte, aes.BlockSize+len(signData)) //存储密码byte数组,长度是密码块长度+加密内容长度
-	iv := ciphertext[:aes.BlockSize]                        //iv数组,长度为密码块长度,是加密的初始化矢量,初始化加密函数的变量,也就是加密动作中的数据操作的偏移量。
-	if _, err := io.ReadFull(rand.Reader, iv); err != nil {
-		beego.BeeLogger.Error("Check read iv err:%s", err)
-	}
-
-	stream := cipher.NewCFBEncrypter(block, iv) //密码块+IV初始化矢量
-	stream.XORKeyStream(ciphertext[aes.BlockSize:], signData)
-	base64Str := base64.StdEncoding.EncodeToString(ciphertext)
-	encodeParams := url.QueryEscape(base64Str)
-
-	url := fmt.Sprintf("%s?params=%s", fmt.Sprintf("%s%s", beego.AppConfig.String("D5CApiHost"), "/v1/user/check_by_tel"), encodeParams)
-	// beego.BeeLogger.Warn("request url: %s", url)
-	resp := tool.HttpCall(url, "GET", nil, nil)
-
-	beego.BeeLogger.Warn("---CheckIsRegistInD5c resp---: %s", resp)
-
-	var result *CheckResult
-	json.Unmarshal([]byte(resp), &result)
-
-	return result
-}
-
-func RegistD5c(tel string) {
-
-	url := fmt.Sprintf("%s%s", beego.AppConfig.String("D5CApiHost"), "/v1/user/labi/regist")
-
-	var params map[string]string = make(map[string]string)
-	params["tel"] = tel
-
-	tool.HttpCall(url, "POST", params, nil)
-
-	return
-}

+ 6 - 192
go/gopath/src/fohow.com/routers/routes.go

@@ -10,35 +10,23 @@ import (
 	"fohow.com/apps/controllers/article_controller"
 	"fohow.com/apps/controllers/balance_controller"
 	"fohow.com/apps/controllers/category_controller"
-	"fohow.com/apps/controllers/cf_controller"
-	"fohow.com/apps/controllers/chunjie_controller"
-	"fohow.com/apps/controllers/click_controller"
-	"fohow.com/apps/controllers/consume_czc_order_controller"
-	"fohow.com/apps/controllers/copartner_controller"
-	"fohow.com/apps/controllers/course_controller"
+
 	"fohow.com/apps/controllers/cron_controller"
 	"fohow.com/apps/controllers/customer_service_controller"
-	"fohow.com/apps/controllers/dollar_win_controller"
-	"fohow.com/apps/controllers/exchange_controller"
+
 	"fohow.com/apps/controllers/form_id_controller"
-	"fohow.com/apps/controllers/granary_controller"
-	"fohow.com/apps/controllers/invite_sale_controller"
 	"fohow.com/apps/controllers/mp_controller"
 	"fohow.com/apps/controllers/order_controller"
 	"fohow.com/apps/controllers/pay_controller"
 	"fohow.com/apps/controllers/permit_controller"
 	"fohow.com/apps/controllers/poster_controller"
 	"fohow.com/apps/controllers/product_controller"
-	"fohow.com/apps/controllers/rabbit_prize_draw_act_controller"
 	"fohow.com/apps/controllers/railsadmin_controller"
-	"fohow.com/apps/controllers/refund_controller"
-	"fohow.com/apps/controllers/reserve_act_controller"
+
 	"fohow.com/apps/controllers/seckill_controller"
 	"fohow.com/apps/controllers/share_controller"
 	"fohow.com/apps/controllers/share_material_controller"
 	"fohow.com/apps/controllers/sms_controller"
-	"fohow.com/apps/controllers/subject_controller"
-	"fohow.com/apps/controllers/test_controller"
 	"fohow.com/apps/controllers/tool_controller"
 	"fohow.com/apps/controllers/user_controller"
 	"fohow.com/apps/controllers/wxku_commodity_controller"
@@ -58,20 +46,13 @@ func init() {
 	beego.Router("/v1/xcx/channel/info/:id([0-9]+)", &xcx_controller.XcxController{}, "get:GetChannelInfo")
 	//统计小程序码对应渠道的扫描次数
 	beego.Router("/v1/xcx/channel/figure/:id([0-9]+)", &xcx_controller.XcxController{}, "post:FigureChannel")
-	// //支付
-	// beego.Router("/", &pay_controller.PayController{}, "get:Home")
+
 	// //注册,图形验证码,短信验证码
 	// beego.Router("/v1/verification", &captcha_controller.CaptchaController{}, "get:GetCaptcha")
 	// beego.Router("/v1/verification", &captcha_controller.CaptchaController{}, "post:VerifyCaptcha")
 	// beego.Router("/v1/code/pic/verification", &sms_controller.SMSController{}, "get:GetCaptcha")
 	beego.Router("/v1/code/send", &sms_controller.SMSController{}, "post:Send")
 	// beego.Router("/v1/signup", &permit_controller.PermitController{}, "post:SignUp")
-	// //重置密码
-	// beego.Router("/v1/pwd/reset", &permit_controller.PermitController{}, "post:ResetPwd")
-	// 渠道统计:该接口需要登录用户才能访问
-	beego.Router("/v1/cfc/:id([0-9]+)", &cf_controller.CfController{}, "get:Click")
-	// 渠道统计:该接口如果没有登录用户,则使用IP进行相关记录
-	beego.Router("/v1/click/:id([0-9]+)", &cf_controller.CfController{}, "get:ClickIP")
 
 	// //登录,登出
 	// 小程序登录
@@ -90,32 +71,9 @@ func init() {
 	beego.Router("/pc/logout", &permit_controller.PermitController{}, "get:Logout")
 
 	//公众号静默授权
-	// beego.Router("/auth/mp/:id([0-9]+)", &permit_controller.PermitController{}, "get:WxMpAuth")
 	beego.Router("/auth/mp/:id([0-9]+)/after", &permit_controller.PermitController{}, "get:AfterWxMpAuth")
-	// beego.Router("/login/tel", &permit_controller.PermitController{}, "post:TelLogin")
-	// beego.Router("/logout", &permit_controller.PermitController{}, "get:Logout")
-	// //wap端自动登录
-	// beego.Router("/login/generate/key", &user_controller.UserController{}, "get:GenerateLoginKey")
-	// beego.Router("/login/:key", &permit_controller.PermitController{}, "post:KeyLogin")
-	//----------- 商户平台兑换 -----------
-	//FOHOW玖玖规则
-	beego.Router("/v1/platform/:id([0-9]+)/exchange", &exchange_controller.ExchangeController{}, "post:Exchange")
-	beego.Router("/v1/platform/:id([0-9]+)/check", &exchange_controller.ExchangeController{}, "get:Check")
-	//特殊平台,对接他们的规则
-	beego.Router("/v1/platform/:platform:string/check", &exchange_controller.ExchangeController{}, "get:SpecialCheck")
-	//特殊平台,兑换规则
-	beego.Router("/v1/platform/:platform:string/exchange", &exchange_controller.ExchangeController{}, "post:SpecialExchange")
-	beego.Router("/v1/platforms", &exchange_controller.ExchangeController{}, "get:List")
-	//特殊平台,提供短信发送接口
-	beego.Router("/v1/platforms/:platform:string/send_code", &exchange_controller.ExchangeController{}, "get:SendYiDongCode")
-	//特殊平台,需要跳转到第三方页面进行操作,提供回调地址
-	beego.Router("/v1/pf/:platform:string/page/exchange", &exchange_controller.ExchangeController{}, "post:PagePay")
-	beego.Router("/v1/pf/:platform:string/page/callback", &exchange_controller.ExchangeController{}, "head,post,get:CallbackAfterPagePay")
-	// 给内部人员调用查询前一天兑换代金券总数
-	beego.Router("/v1/platforms/exchange/paied_count", &balance_controller.BalanceController{}, "get:GetYesterdayTotalPaiedCount")
-	// beego.Router("/v1/platform/:id", &exchange_controller.ExchangeController{}, "get:Detail")
-
-	//----------- 代金券商城相关 -----------
+
+	//-----------商城相关 -----------
 	//首页频道栏目
 	beego.Router("/v1/categories", &category_controller.CategoryController{}, "get:Get")
 	//商品列表-精选推荐
@@ -147,48 +105,7 @@ func init() {
 	//生成充值余额订单
 	beego.Router("/v1/recas_order/generate", &pay_controller.PayController{}, "post:CreateRechargeCashOrder")
 
-	//----------- 粮仓相关 -----------
-	//生成粮仓记录
-	beego.Router("/v1/granary/distribute/bonus/:id([0-9]+)", &granary_controller.GranaryController{}, "get:DistributeBonus")
-	beego.Router("/v1/granary/send/buyback/:id([0-9]+)", &granary_controller.GranaryController{}, "get:SendBuybackAmount")
-	//粮仓列表
-	beego.Router("/v1/user/granaries", &granary_controller.GranaryController{}, "get:List")
-	//收成详情
-	beego.Router("/v1/user/granary/:id", &granary_controller.GranaryController{}, "get:Info")
-	//自用订单创建
-	beego.Router("/v1/user/granary/:id/selfuse/order/create", &granary_controller.GranaryController{}, "post:SelfUse")
-	//回购份数记录
-	beego.Router("/v1/user/granary/:id/buyback/no", &granary_controller.GranaryController{}, "post:BuyBack")
-	//自用订单历史
-	beego.Router("/v1/user/granary/:id/selfuse/orders", &granary_controller.GranaryController{}, "get:GetSelfUseOrders")
-	//查看当前代销订单
-	beego.Router("/v1/user/granary/:id/sale/order/info", &granary_controller.GranaryController{}, "get:GetSaleOrder")
-	//创建代销订单
-	beego.Router("/v1/user/granary/:id/sale/order/operate", &granary_controller.GranaryController{}, "post:OperateSaleOrder")
-	//刷新代销订单
-	beego.Router("/v1/product/:product_id/sale/order/refresh", &granary_controller.GranaryController{}, "get:RefreshSaleOrder")
-	//----------- 文章相关 -----------
-	// //新闻列表
-	// beego.Router("/v1/artcat/:cat_id/articles", &article_controller.ArticleController{}, "get:GetList")
-	// //热门新闻
-	// beego.Router("/v1/article/hotest", &article_controller.ArticleController{}, "get:GetHotest")
-	// //新闻详情
-
 	beego.Router("/v1/article/:article_id([0-9]+)", &article_controller.ArticleController{}, "get:GetDetail")
-	// //通知类文章
-	// beego.Router("/v1/notice/:cat_id([0-9]+)", &article_controller.ArticleController{}, "get:GetNotices")
-	// //文章点击收益
-	// beego.Router("/v1/article/cb/:article_id([0-9]+)/:benefit_wx_uid([0-9]+)/:o_time([0-9]+)", &article_controller.ArticleController{}, "get:ClickBenefit")
-	// //文章分享收益详情
-	// beego.Router("/v1/article/cb/:article_id([0-9]+)/info", &article_controller.ArticleController{}, "get:GetClickBenefitInfo")
-	// //转发有奖文章
-	// beego.Router("/v1/article/share/benefit/:art_cat_id([0-9]+)", &article_controller.ArticleController{}, "get:GetLastestBenefitArticle")
-	// //文章留言列表
-	// beego.Router("/v1/article/:article_id([0-9]+)/comments", &article_controller.ArticleController{}, "get:GetComments")
-	// //发布留言
-	// beego.Router("/v1/article/:article_id([0-9]+)/comment/create", &article_controller.ArticleController{}, "post:CreateComment")
-	// //留言点赞
-	// beego.Router("/v1/article/comment/:comment_id([0-9]+)/like/:c_type", &article_controller.ArticleController{}, "post:ToggleLike")
 
 	//----------- 广告相关 -----------
 	// 广告位接口
@@ -226,15 +143,9 @@ func init() {
 	beego.Router("/v1/user/trade_pwd", &user_controller.UserController{}, "put:UpdateTradePwd")
 	//绑定身份证
 	beego.Router("/v1/user/binding/id_card", &user_controller.UserController{}, "put:BindingIdCard")
-	// 后台rabbit_admin后台信息修改时,需要更新该用户号码是否在d5c注册
-	beego.Router("/v1/user/update_regist", &user_controller.UserController{}, "post:UpdateIsRegistD5cAndIsRegistBeforeD5c")
 
 	beego.Router("/v1/user/check_cert", &user_controller.UserController{}, "get:GetUserCertificationFromD5c")
 
-	// //获取当前用户与微信用户的绑定状态
-	// beego.Router("/v1/user/binding/state", &user_controller.UserController{}, "get:GetCurrentUserBindingState")
-	// //绑定微信用户
-	// beego.Router("/v1/user/binding/wx/:key:string", &user_controller.UserController{}, "get:BindingWxUser")
 	//绑定电话号码
 	beego.Router("/v1/wxuser/binding/tel", &user_controller.UserController{}, "post:BindingTel")
 	beego.Router("/v1/wxuser/info", &user_controller.UserController{}, "put:UpdateWxUserInfo")
@@ -280,38 +191,8 @@ func init() {
 	beego.Router("/v1/address/:id([0-9]+)", &address_controller.AddressController{}, "put:UpdateAddress")
 	beego.Router("/v1/address/:id([0-9]+)", &address_controller.AddressController{}, "delete:DeleteAddress")
 
-	// ------------春节红包相关 --------------
-	beego.Router("/v1/hd/chunjie/:config_id", &chunjie_controller.ChunjieController{}, "get:GetConfigInfo")
-	beego.Router("/v1/hd/chunjie/:config_id/total_mon", &chunjie_controller.ChunjieController{}, "get:GetTotalLuckyMoney")
-	beego.Router("/v1/hd/chunjie/:config_id/current_sequence", &chunjie_controller.ChunjieController{}, "get:GetCurrentSequenceNumber")
-	beego.Router("/v1/hd/chunjie/:config_id/invite/list", &chunjie_controller.ChunjieController{}, "get:GetMeAndFriendLuckyMoneyList")
-	beego.Router("/v1/hd/chunjie/:config_id/open/list", &chunjie_controller.ChunjieController{}, "get:GetOpenLuckyMoneyList")
-	beego.Router("/v1/hd/chunjie/:config_id/lucky_money", &chunjie_controller.ChunjieController{}, "post:RobLuckyMoney")
-	beego.Router("/v1/hd/chunjie/:config_id/give_out_money", &chunjie_controller.ChunjieController{}, "get:GetGiveOutMoney")
-	beego.Router("/v1/hd/chunjie/:config_id([0-9]+)/stat/u7deraxdfaeefaf", &chunjie_controller.ChunjieController{}, "get:Stat")
-	beego.Router("/v1/hd/chunjie/:config_id([0-9]+)/stat/report_test_x8rx", &chunjie_controller.ChunjieController{}, "get:ReportTest")
-
-	// // ----------- 支付相关 -----------
-	// beego.Router("/v1/pay", &pay_controller.PayController{}, "post,get:Pay")
-	// beego.Router("/v1/pay/:target:string/sync/:payway:string", &pay_controller.PayController{}, "get,post:PaySync")
-	// beego.Router("/v1/pay/:target:string/async/:payway:string", &pay_controller.PayController{}, "post:PayAsync")
-	// beego.Router("/v1/llpay/trader/notice", &pay_controller.PayController{}, "post:LLpayTraderNotice")
-
 	//分享统计接口
 	beego.Router("/v1/share/info", &share_controller.ShareController{}, "post:DoShare")
-	//点击统计接口
-	beego.Router("/v1/click/info", &click_controller.ClickController{}, "post:DoClick")
-
-	//----------- 专题相关 -----------
-
-	// beego.InsertFilter("/railsadmin/*", beego.BeforeExec, apps.CheckIsInvokeFromRailsAdmin, true)
-	// beego.Router("/railsadmin/wx_menu", &railsadmin_controller.RailsadminController{}, "post:CreateWxMenu")
-	// beego.Router("/railsadmin/clean_cache/:type:string/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:CleanCache")
-	// beego.Router("/railsadmin/create_qrcode/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:CreateWxQrcode")
-	// beego.Router("/railsadmin/create_qrcode/scene_str/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:CreateWxQrcodeWithSceneString")
-	// beego.Router("/railsadmin/push/template/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:SendTemplate")
-	// beego.Router("/railsadmin/push/custom_msg/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:SendCustomMsg")
-	// beego.Router("/railsadmin/project/img/copy", &railsadmin_controller.RailsadminController{}, "get:CopyProjectImg")
 
 	beego.Router("/v1/formid", &form_id_controller.FromIdController{}, "post:Create")
 	beego.Router("/v1/formid", &form_id_controller.FromIdController{}, "delete:TestSendingTemplatemsg")
@@ -322,36 +203,16 @@ func init() {
 	beego.Router("/v1/merchant/orders/count", &order_controller.OrderController{}, "get:MerchantListCount")
 	beego.Router("/v1/merchant/order/:order_id", &order_controller.OrderController{}, "put:UpdateExpress")
 	beego.Router("/v1/merchant/order/detail/:order_id", &order_controller.OrderController{}, "get:MerchantOrderDetail")
-	//  --------------五五节中奖。填写收货地址时在FOHOW玖玖商城下单。-----
-	beego.Router("/v1/prize_draw_act/order", &rabbit_prize_draw_act_controller.RabbitPrizeDrawActController{}, "post:OrderLabiProduct")
-
-	//  -------------商家结算系统 -----------
-	beego.Router("/v1/merchant/settle/list", &order_controller.SettleOrderController{}, "get:SettleList")
-	beego.Router("/v1/merchant/settle/stat", &order_controller.SettleOrderController{}, "get:SettleStat")
-
-	// --------------商家退款-----------------------------------------
-	beego.Router("/v1/merchant/order/refund/:order_id", &refund_controller.RefundController{}, "put:Refund")
-
-	// --------------奶油苹果消费众筹投资成功,在FOHOW玖玖下单
-	beego.Router("/v1/consume_czc/order", &consume_czc_order_controller.ConsumeCzcOrderController{}, "post:OrderLabiProduct")
-
-	//---------------项目有关--------------------
 
 	//---------------railsadmin后台请求相关----------------
 	beego.InsertFilter("/railsadmin/*", beego.BeforeExec, apps.CheckIsInvokeFromRailsAdmin, true)
 	beego.Router("/railsadmin/clean_cache/:type:string/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:CleanCache")
 	beego.Router("/railsadmin/wx_menu", &railsadmin_controller.RailsadminController{}, "post:CreateWxMenu")
-	beego.Router("/railsadmin/send_open_prize_tmpl/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:SendOpenPrizeTmpl")
 	beego.Router("/railsadmin/push/template/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:SendTemplate")
 	beego.Router("/railsadmin/push/xcx_template/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:SendXcxTemplate")
 	beego.Router("/railsadmin/create_qrcode/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:CreateWxQrcode")
 	beego.Router("/railsadmin/create_qrcode/scene_str/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:CreateWxQrcodeWithSceneString")
-	beego.Router("/railsadmin/send/project_benefit/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "post:SendProjectBenefit")
-	beego.Router("/railsadmin/granary/gd/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:NonAutoNoticeApplyForSaleByGranaryId")
-	beego.Router("/railsadmin/granary/zy/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:NonAutoNoticeSelfUseByGranaryId")
 	beego.Router("/railsadmin/order/dispatch/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:OrderDispatch")
-	beego.Router("/railsadmin/dollar/win/:id([0-9]+)/open", &railsadmin_controller.RailsadminController{}, "post:DollarWinOpen")
-	beego.Router("/railsadmin/dollar/win/:id([0-9]+)/refund", &railsadmin_controller.RailsadminController{}, "post:DollarWinRefund")
 	//设置群主
 	beego.Router("/railsadmin/update/intro/:id([0-9]+)", &railsadmin_controller.RailsadminController{}, "get:UpdateIntroUser")
 	//生成小程序二维码
@@ -365,48 +226,14 @@ func init() {
 	//---------------到第五创查询微信用户二维码-----------------------
 	beego.Router("/v1/customer_service/qrcode", &customer_service_controller.CustomerServiceController{}, "get:GetRabbitKfImgByUnionid")
 
-	//---------------商品购买专题----------------------------------
-	beego.Router("/v1/subject/product_sale/:id([0-9]+)", &subject_controller.SubjectController{}, "get:GetProductSaleSubjectById")
-	beego.Router("/v1/subject/product_sale/joiner_list/:id([0-9]+)", &subject_controller.SubjectController{}, "get:GetList")
-	beego.Router("/v1/subject/product_sale/codes_list/:id([0-9]+)", &subject_controller.SubjectController{}, "get:GetMyCodeList")
-
-	//---------------销售榜单-------------------------------------
-	beego.Router("/v1/user/sale_rank/list", &invite_sale_controller.InviteSaleController{}, "get:Get")
-	beego.Router("/v1/user/sale_rank/config", &invite_sale_controller.InviteSaleController{}, "get:GetCurConfig")
-
-	//---------------酒店优惠预定----------------------------------
-	beego.Router("/v1/reserve/act/:id([0-9]+)", &reserve_act_controller.ReserveActController{}, "get:GetAct")
-	beego.Router("/v1/reserve/act/order/:id([0-9]+)", &reserve_act_controller.ReserveActController{}, "post:Order")
-	beego.Router("/v1/reserve/act/list/:id([0-9]+)", &reserve_act_controller.ReserveActController{}, "get:GetJoiners")
-	beego.Router("/v1/reserve/act/join/:id([0-9]+)", &reserve_act_controller.ReserveActController{}, "get:GetCur")
-	beego.Router("/v1/reserve/act/return", &reserve_act_controller.ReserveActController{}, "post:ReturnAmount")
-
 	//--------------------海报生成
 	beego.Router("/v1/poster/:tid([0-9]+)", &poster_controller.PosterController{}, "get:GetPosterXcxQrcode")
 	beego.Router("/v1/poster/scan", &poster_controller.PosterController{}, "get:ScanPosterXcxQrcode")
 	beego.Router("/v1/poster/test", &poster_controller.PosterController{}, "get:TestGeneratePoster")
 
-	// ---------------付费课程 ------------------
-	beego.Router("/v1/course/latest", &course_controller.CourseController{}, "get:LatestCourse")
-	beego.Router("/v1/course/:id([0-9]+)/info", &course_controller.CourseController{}, "get:CourseInfo")
-	beego.Router("/v1/course/:id([0-9]+)/order/create", &course_controller.CourseController{}, "Post:CourseOrderCreate")
-	beego.Router("/v1/course/:id([0-9]+)/check/:unionid", &course_controller.CourseController{}, "get:CourseCheckJoin")
-	beego.Router("/v1/course/:id([0-9]+)/coupons/generate", &course_controller.CourseController{}, "get:CourseCouponsGenerate")
-	beego.Router("/v1/course/:id([0-9]+)/user/coupons", &course_controller.CourseController{}, "get:UserCourseCoupons")
-	beego.Router("/v1/course/user/balance/info", &course_controller.CourseController{}, "get:CourseBalanceInfo")
-	beego.Router("/v1/course/user/takecash", &course_controller.CourseController{}, "post:TakeCash")
-	beego.Router("/v1/course/user/takecash/orders", &course_controller.CourseController{}, "get:GetTakeCashOrders")
-	beego.Router("/v1/course/user/benefits", &course_controller.CourseController{}, "get:GetBenefits")
-
 	//测试接口
 	beego.Router("/v1/test/wxpay/eppay", &railsadmin_controller.RailsadminController{}, "get:TestEpPay")
 
-	//----------------合伙人 -------------------
-	beego.Router("/v1/copartner/info", &copartner_controller.CopartnerController{}, "get:Get")
-	beego.Router("/v1/copartner/text", &copartner_controller.CopartnerController{}, "get:GetText")
-	beego.Router("/v1/copartner/total", &copartner_controller.CopartnerController{}, "get:GetContributionTotal")
-	beego.Router("/v1/copartner/list", &copartner_controller.CopartnerController{}, "get:GetContributions")
-
 	//----------------微信商品库管理-------------
 	beego.Router("/railsadmin/wxku_commodity/:id([0-9]+)/addOrUpdate", &wxku_commodity_controller.WxkuCommodityController{}, "post:AddOrUpdateWxkuCommodity")
 	beego.Router("/railsadmin/wxku_commodity/:id([0-9]+)/check", &wxku_commodity_controller.WxkuCommodityController{}, "get:CheckWxkuCommodityStatus")
@@ -415,9 +242,6 @@ func init() {
 	//----------------发圈素材
 	beego.Router("/v1/share/material/list", &share_material_controller.ShareMaterialController{}, "get:List")
 
-	//----------------根据回报方式
-	beego.Router("/v1/granary/check/repo", &granary_controller.GranaryController{}, "get:GetGranaryRepo")
-
 	//-----秒杀
 	beego.Router("/v1/seckill/products", &seckill_controller.SeckillController{}, "get:GetSeckillProducts")
 	beego.Router("/v1/seckill/dates", &seckill_controller.SeckillController{}, "get:GetSeckillDates")
@@ -425,16 +249,6 @@ func init() {
 	//-----导航图标
 	beego.Router("/v1/navigate/icons", &category_controller.CategoryController{}, "get:GetNavigateIcons")
 
-	//-----一元夺宝活动
-	beego.Router("/v1/dollar/win/:id([0-9]+)", &dollar_win_controller.DollarWinController{}, "get:GetConfig")
-	beego.Router("/v1/dollar/win/:id([0-9]+)/list", &dollar_win_controller.DollarWinController{}, "get:GetJoinStateList")
-	beego.Router("/v1/dollar/win/:id([0-9]+)/frendList", &dollar_win_controller.DollarWinController{}, "get:GetFrendJoinStateList")
-	beego.Router("/v1/dollar/win/:id([0-9]+)/order", &dollar_win_controller.DollarWinController{}, "post:DollarWinOrder")
-	beego.Router("/v1/dollar/win/rank", &dollar_win_controller.DollarWinController{}, "get:DollarWinRank")
-	//统计推荐参与人数
-	beego.Router("/v1/test/:zt_id([0-9]+)/:temp_user_id([0-9]+)/update", &test_controller.TestController{}, "get:UpdateInviteCount")
-	beego.Router("/v1/test/listen_order", &test_controller.TestController{}, "post:TestOrderListen")
-
 	//----------------购物车 -------------------
 	//加入购物车
 	beego.Router("/v1/cart/:id([0-9]+)/:count", &order_controller.OrderController{}, "post:CreateCart")