123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- package english_company
- import (
- "github.com/beego/beego/v2/client/orm"
- "github.com/rdlucklib/rdluck_tools/paging"
- "time"
- )
- // EnglishCompany 英文客户
- type EnglishCompany struct {
- CompanyId int `orm:"column(company_id);pk" description:"英文客户ID"`
- CompanyName string `description:"客户名称"`
- CountryCode string `description:"国家Code"`
- Country string `description:"国家"`
- SellerId int `description:"销售ID"`
- SellerName string `description:"销售姓名"`
- ViewTotal int `description:"累计点击量/阅读量"`
- IsDeleted int `description:"删除状态:0-正常;1-已删除"`
- CreateTime time.Time `description:"创建时间"`
- ModifyTime time.Time `description:"更新时间"`
- }
- type EnglishCompanyListItem struct {
- EnglishCompany
- TodoStatusStr string
- TodoEndTime time.Time
- TodoSellerId int
- }
- func (item *EnglishCompany) TableName() string {
- return "english_company"
- }
- func (item *EnglishCompany) Create() (err error) {
- o := orm.NewOrmUsingDB("rddp")
- id, err := o.Insert(item)
- if err != nil {
- return
- }
- item.CompanyId = int(id)
- return
- }
- // EnglishCompanySaveReq 英文客户-保存请求体
- type EnglishCompanySaveReq struct {
- CompanyId int `description:"客户ID"`
- CompanyName string `description:"客户名称"`
- CountryCode string `description:"国家代码"`
- Country string `description:"国家"`
- SellerId int `description:"销售ID"`
- }
- func (item *EnglishCompany) Update(cols []string) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- _, err = o.Update(item, cols...)
- return
- }
- // GetEnglishCompanyById 主键获取客户
- func GetEnglishCompanyById(id int) (item *EnglishCompany, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT * FROM english_company WHERE is_deleted = 0 AND company_id = ? LIMIT 1`
- err = o.Raw(sql, id).QueryRow(&item)
- return
- }
- // GetEnglishCompanyByName 名称获取客户
- func GetEnglishCompanyByName(companyName string) (item *EnglishCompany, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT * FROM english_company WHERE is_deleted = 0 AND company_name = ? LIMIT 1`
- err = o.Raw(sql, companyName).QueryRow(&item)
- return
- }
- // EnglishCompanyDelReq 英文客户-删除请求体
- type EnglishCompanyDelReq struct {
- CompanyId int `description:"客户ID"`
- }
- // DeleteEnglishCompanyAndEmails 删除英文客户及联系人
- func DeleteEnglishCompanyAndEmails(companyId int) (err error) {
- o := orm.NewOrmUsingDB("rddp")
- tx, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- _ = tx.Rollback()
- } else {
- _ = tx.Commit()
- }
- }()
- // 删除客户
- sql := `UPDATE english_company SET is_deleted = 1,modify_time = NOW() WHERE company_id = ? LIMIT 1`
- _, err = tx.Raw(sql, companyId).Exec()
- if err != nil {
- return
- }
- // 删除联系人
- sql = `UPDATE english_report_email SET is_deleted = 1,modify_time = NOW() WHERE company_id = ?`
- _, err = tx.Raw(sql, companyId).Exec()
- return
- }
- // EnglishCompanyPageListResp 英文客户-分页列表响应体
- type EnglishCompanyPageListResp struct {
- List []*EnglishCompanyResp
- Paging *paging.PagingItem `description:"分页数据"`
- }
- // EnglishCompanyResp 英文客户-列表响应体
- type EnglishCompanyResp struct {
- CompanyId int `description:"客户ID"`
- CompanyName string `description:"客户名称"`
- CountryCode string `description:"国家代码"`
- Country string `description:"国家"`
- SellerId int `description:"销售ID"`
- SellerName string `description:"销售姓名"`
- ViewTotal int `description:"累计点击量"`
- CreateTime string `description:"创建时间"`
- TodoInfo *EnglishCompanyListTodo `description:"TODO任务信息"`
- }
- // EnglishCompanyListTodo 英文客户列表-TODO任务信息
- type EnglishCompanyListTodo struct {
- Deadline string `description:"未完成的todo任务的截止日期,截止目前还剩余的天数"`
- TodoEndTimeStr string `description:"未完成的todo任务的截止日期拼接格式"`
- //TodoEndTime time.Time `description:"未完成的todo任务的截止日期"`
- TodoStatus bool `description:"是否存在进行中任务"`
- CanConfirm bool `description:"是否允许完成任务"`
- HiddenConfirm bool `description:"是否隐藏完成任务按钮"`
- HiddenCreate bool `description:"是否隐藏新增/编辑按钮"`
- TodoButtonColor string `description:"任务按钮颜色: red; green; gray"`
- }
- // GetEnglishCompanyPageList 获取客户列表-分页
- func GetEnglishCompanyPageList(condition string, pars []interface{}, order string, startSize, pageSize int) (total int, list []*EnglishCompanyListItem, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT
- c.*,
- IF
- ( ct.status IS NULL, "无任务", ct.status ) AS todo_status_str,
- ct.seller_id as todo_seller_id,
- IF
- ( ct.end_time IS NULL or ct.status !="进行中", "9999-01-01", ct.end_time) AS todo_end_time
- FROM
- english_company AS c
- LEFT JOIN (
- SELECT
- b.*
- FROM
- (
- SELECT
- company_id,
- MAX( create_time ) AS ct
- FROM
- english_company_todo
- WHERE
- is_delete = 0
- AND STATUS != "已作废"
- GROUP BY
- company_id
- ) AS a
- LEFT JOIN english_company_todo AS b ON b.company_id = a.company_id
- AND b.create_time = a.ct
- ) AS ct ON c.company_id = ct.company_id
- WHERE
- c.is_deleted = 0`
- sql += condition
- if order != "" {
- sql += order
- } else {
- sql += ` ORDER BY c.create_time DESC`
- }
- totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
- if err = o.Raw(totalSQl, pars).QueryRow(&total); err != nil {
- return
- }
- sql += ` LIMIT ?,?`
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
- return
- }
- // GetEnglishCompanyViewPageListResp 英文客户-点击量分页列表响应体
- type GetEnglishCompanyViewPageListResp struct {
- List []*EnglishCompanyViewResp
- Paging *paging.PagingItem `description:"分页数据"`
- }
- // EnglishCompanyViewResp 英文客户-点击量响应体
- type EnglishCompanyViewResp struct {
- EmailId int `description:"联系人ID"`
- UserName string `description:"联系人姓名"`
- Email string `description:"邮箱地址"`
- ViewTotal int `description:"累计点击量"`
- LastViewTime string `description:"创建时间"`
- }
- // GetEnglishCompanyList 获取英文客户列表
- func GetEnglishCompanyList(condition string, pars []interface{}, order string) (list []*EnglishCompany, err error) {
- o := orm.NewOrmUsingDB("rddp")
- sql := `SELECT * FROM english_company WHERE is_deleted = 0 `
- sql += condition
- if order != "" {
- sql += order
- } else {
- sql += ` ORDER BY create_time DESC`
- }
- _, err = o.Raw(sql, pars).QueryRows(&list)
- return
- }
|