Merge remote-tracking branch 'origin/mark' into jdshop

This commit is contained in:
苏尹岚
2021-03-25 18:23:44 +08:00
58 changed files with 2075 additions and 550 deletions

View File

@@ -51,6 +51,7 @@ func GetVendorOrgCode(db *DaoDB, vendorID int, vendorOrgCode, vendorType string)
sql += " AND vendor_type = ?"
sqlParams = append(sqlParams, vendorType)
}
sql += " ORDER BY comment"
err = GetRows(db, &vendorOrgs, sql, sqlParams)
return vendorOrgs, err
}

View File

@@ -1607,3 +1607,40 @@ func GetUserCoupons(db *DaoDB, couponIDs []int, userIDs, mobiles []string, userS
err = GetRows(db, &userCoupons, sql, sqlParams)
return userCoupons, err
}
type QueryOrdersForManageStateResult struct {
VendorOrderID string `orm:"column(vendor_order_id)"`
BindID int `orm:"column(bind_id)"`
}
func QueryOrdersForManageState(db *DaoDB, storeID, vendorID, status int, fromTime, toTime time.Time) (userCoupons []*QueryOrdersForManageStateResult, err error) {
sql := `
SELECT a.vendor_order_id ,b.id bind_id
FROM goods_order a
LEFT JOIN waybill b ON a.vendor_order_id = b.vendor_order_id
WHERE 1 = 1
`
sqlParams := []interface{}{}
if storeID != 0 {
sql += " AND (a.storeID = ? OR a.jx_store_id = ?)"
sqlParams = append(sqlParams, storeID, storeID)
}
if vendorID != -1 {
sql += " AND a.vendor_id = ?"
sqlParams = append(sqlParams, vendorID)
}
if status != 0 {
sql += " AND a.status = ?"
sqlParams = append(sqlParams, status)
}
if !utils.IsTimeZero(fromTime) {
sql += " AND a.order_created_at > ?"
sqlParams = append(sqlParams, fromTime)
}
if !utils.IsTimeZero(toTime) {
sql += " AND a.order_created_at < ?"
sqlParams = append(sqlParams, toTime)
}
err = GetRows(db, &userCoupons, sql, sqlParams)
return userCoupons, err
}

View File

@@ -5,7 +5,7 @@ import (
"git.rosy.net.cn/jx-callback/business/model"
)
func GetMenu(db *DaoDB, name string, level int, userID string) (menus []*model.Menu, err error) {
func GetMenu(db *DaoDB, name string, level, menuType int, userID string) (menus []*model.Menu, err error) {
sqlParams := []interface{}{}
sql := `
SELECT DISTINCT a.*
@@ -29,12 +29,16 @@ func GetMenu(db *DaoDB, name string, level int, userID string) (menus []*model.M
sql += " AND a.level = ?"
sqlParams = append(sqlParams, level)
}
if menuType != 0 {
sql += " AND a.type = ?"
sqlParams = append(sqlParams, menuType)
}
sql += " ORDER BY a.id"
err = GetRows(db, &menus, sql, sqlParams)
return menus, err
}
func GetMenuWithUser(db *DaoDB, name string, level int, userID string) (menus []*model.Menu, err error) {
func GetMenuWithUser(db *DaoDB, name string, level, menuType int, userID string) (menus []*model.Menu, err error) {
sql := `
SELECT DISTINCT b.* FROM (
SELECT a.id,a.parent_id
@@ -43,9 +47,10 @@ func GetMenuWithUser(db *DaoDB, name string, level int, userID string) (menus []
JOIN role_menu c ON c.menu_id = a.id AND c.role_id = b.role_id AND c.deleted_at = ?
WHERE a.deleted_at = ?)a
JOIN menu b ON (b.id = a.id OR b.id = a.parent_id)
WHERE b.type = ?
ORDER BY b.id
`
sqlParams := []interface{}{userID, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue}
sqlParams := []interface{}{userID, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, menuType}
err = GetRows(db, &menus, sql, sqlParams)
return menus, err
}

View File

@@ -50,7 +50,7 @@ type PriceReferSnapshotExt struct {
}
//查询统计订单信息
func GetStatisticsReportForOrders(db *DaoDB, storeIDs []int, fromDate time.Time, toDate time.Time) (statisticsReportForOrdersList []*StatisticsReportForOrdersList, err error) {
func GetStatisticsReportForOrders(db *DaoDB, storeIDs, vendorIDs []int, fromDate time.Time, toDate time.Time) (statisticsReportForOrdersList []*StatisticsReportForOrdersList, err error) {
sql := `
SELECT
c.id store_id,
@@ -68,8 +68,8 @@ func GetStatisticsReportForOrders(db *DaoDB, storeIDs []int, fromDate time.Time,
s.pm_subsidy_money,
s.earning_price,
s.total_gross_profit,
IF(c.jx_brand_fee_factor = 0 AND c.market_add_fee_factor = 0,total_gross_profit,(total_gross_profit*c.jx_brand_fee_factor)/(c.jx_brand_fee_factor+market_add_fee_factor)) com_gross_profit,
IF(c.jx_brand_fee_factor = 0 AND c.market_add_fee_factor = 0,0,(total_gross_profit*c.market_add_fee_factor)/(c.jx_brand_fee_factor+market_add_fee_factor)) city_manager_gross_profit,
IF(c.jx_brand_fee_factor = 0 AND c.market_add_fee_factor = 0,s.total_gross_profit,(s.total_gross_profit*c.jx_brand_fee_factor)/(c.jx_brand_fee_factor+market_add_fee_factor)) com_gross_profit,
IF(c.jx_brand_fee_factor = 0 AND c.market_add_fee_factor = 0,0,(s.total_gross_profit*c.market_add_fee_factor)/(c.jx_brand_fee_factor+market_add_fee_factor)) city_manager_gross_profit,
c.status, c.tel1,
IF(mm.name <> '', mm.name, mm.user_id2) market_man_name,
IF(om.name <> '', om.name, om.user_id2) operator_name,
@@ -82,28 +82,38 @@ func GetStatisticsReportForOrders(db *DaoDB, storeIDs []int, fromDate time.Time,
LEFT JOIN user om ON om.mobile <> '' AND om.mobile = c.operator_phone
LEFT JOIN user om2 ON om2.mobile <> '' AND om2.mobile = c.operator_phone2
LEFT JOIN user om3 ON om3.mobile <> '' AND om3.mobile = c.operator_phone3
LEFT JOIN
JOIN
(
SELECT
IF(a.jx_store_id <> 0,a.jx_store_id,store_id) store_id,
COUNT(*) order_counts,
SUM(sale_price) sale_price,
SUM(actual_pay_price) actual_pay_price,
SUM(shop_price) shop_price,
SUM(discount_money) discount_money,
SUM(desired_fee) desired_fee,
SUM(distance_freight_money) distance_freight_money,
SUM(IF(a.vendor_id = a.waybill_vendor_id,waybill_tip_money,0)) waybill_tip_money,
SUM(total_shop_money) total_shop_money,
SUM(pm_subsidy_money) pm_subsidy_money,
SUM(earning_price) earning_price,
SUM(total_shop_money-earning_price-desired_fee-distance_freight_money-waybill_tip_money-80) total_gross_profit
FROM goods_order a
LEFT JOIN waybill b ON IF(a.waybill_vendor_id = -1,a.vendor_order_id,a.vendor_waybill_id) = b.vendor_waybill_id
WHERE a.status != ?
SELECT ss.*,
ss.earning_price1 - IFNULL(ss.afs_shop_price,0) earning_price,
ss.total_shop_money1 - IFNULL(ss.afs_total_money,0) total_shop_money,
ss.total_gross_profit1 + IFNULL(ss.afs_shop_price,0) - IFNULL(ss.afs_total_money,0) - ss.order_counts*0.8*100 total_gross_profit
FROM (
SELECT
IF(a.jx_store_id <> 0,a.jx_store_id,a.store_id) store_id,
COUNT(*) order_counts,
SUM(a.sale_price) sale_price,
SUM(a.actual_pay_price) actual_pay_price,
SUM(a.shop_price) shop_price,
SUM(a.discount_money) discount_money,
SUM(b.desired_fee) desired_fee,
SUM(a.distance_freight_money) distance_freight_money,
SUM(IF(a.vendor_id = a.waybill_vendor_id,a.waybill_tip_money,0)) waybill_tip_money,
SUM(a.total_shop_money) total_shop_money1,
SUM(a.pm_subsidy_money) pm_subsidy_money,
SUM(IF(a.earning_type = 1, a.earning_price, a.new_earning_price)) earning_price1,
SUM(a.total_shop_money-IF(a.earning_type = 1, a.earning_price, a.new_earning_price)-b.desired_fee) total_gross_profit1,
SUM(d.shop_price) afs_shop_price,
SUM(d.refund_money_by_cal) afs_total_money
FROM goods_order a
LEFT JOIN waybill b ON IF(a.waybill_vendor_id = -1,a.vendor_order_id,a.vendor_waybill_id) = b.vendor_waybill_id
LEFT JOIN afs_order c ON c.vendor_order_id = a.vendor_order_id
LEFT JOIN order_sku_financial d ON d.afs_order_id = c.afs_order_id AND d.is_afs_order = ?
WHERE a.status = ?
`
sqlParams := []interface{}{
model.OrderStatusCanceled, //排除已取消的订单
model.YES,
model.OrderStatusFinished,
}
if !utils.IsTimeZero(fromDate) && !utils.IsTimeZero(toDate) {
sql += ` AND a.order_created_at BETWEEN ? AND ?`
@@ -113,9 +123,13 @@ func GetStatisticsReportForOrders(db *DaoDB, storeIDs []int, fromDate time.Time,
sql += ` AND IF(a.jx_store_id != 0, a.jx_store_id, a.store_id) IN(` + GenQuestionMarks(len(storeIDs)) + `)`
sqlParams = append(sqlParams, storeIDs)
}
if len(vendorIDs) > 0 {
sql += ` AND a.vendor_id IN(` + GenQuestionMarks(len(vendorIDs)) + `)`
sqlParams = append(sqlParams, vendorIDs)
}
sql += `
GROUP BY 1
)s
)ss ) s
ON s.store_id = c.id
`
if len(storeIDs) > 0 {

View File

@@ -1,6 +1,7 @@
package dao
import (
"fmt"
"time"
"git.rosy.net.cn/baseapi/platformapi/aliupcapi"
@@ -96,6 +97,31 @@ func GetCategories(db *DaoDB, parentID, level int, catIDs []int, isExd bool) (ca
return cats, GetRows(db, &cats, sql, params)
}
func GetCategoriesForStore(db *DaoDB, parentID, level int, catIDs []int) (cats []*model.StoreCategoryMap, err error) {
sql := `
SELECT t1.*, t1.seq store_category_seq, t1.id category_id, t1.name store_category_name
FROM sku_category t1
WHERE t1.deleted_at = ?`
params := []interface{}{
utils.DefaultTimeValue,
}
if parentID != -1 {
sql += " AND t1.parent_id = ?"
params = append(params, parentID)
}
if len(catIDs) > 0 {
sql += " AND t1.id IN (" + GenQuestionMarks(len(catIDs)) + ")"
params = append(params, catIDs)
}
if level > 0 {
sql += " AND t1.level = ?"
params = append(params, level)
}
sql += ` AND t1.is_exd_spec = 0
ORDER BY t1.level, t1.seq`
return cats, GetRows(db, &cats, sql, params)
}
func GetSkus(db *DaoDB, skuIDs, nameIDs, statuss, catIDs []int, eclpIDs []string) (skuList []*model.SkuAndName, err error) {
sql := `
SELECT t1.*, t2.name, t2.unit, t2.prefix, t2.is_spu, t2.ex_prefix, t2.ex_prefix_begin, t2.ex_prefix_end, t2.upc
@@ -198,6 +224,7 @@ func GetSkuByCats(db *DaoDB, catIDs []int) (skuList []*model.Sku, err error) {
// 多门店平台使用,当前只有京东
func GetSkuCategoryWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, parentCatID int, catIDs []int, mustDirty bool) (catList []*SkuStoreCatInfo, err error) {
sqlParams := []interface{}{}
sql := `
SELECT
t1m.vendor_id, t1m.vendor_org_code,
@@ -216,15 +243,26 @@ func GetSkuCategoryWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string,
t1pm.sync_status parent_cat_sync_status
FROM sku_category t1
LEFT JOIN thing_map t1m ON t1m.thing_id = t1.id AND t1m.thing_type = ? AND t1m.deleted_at = ?
`
sqlParams = append(sqlParams,
model.ThingTypeCategory,
utils.DefaultTimeValue)
if len(vendorIDs) > 0 {
sql += " AND t1m.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
sqlParams = append(sqlParams, vendorIDs)
}
if len(appOrgCodes) > 0 {
sql += " AND t1m.vendor_org_code IN (" + GenQuestionMarks(len(appOrgCodes)) + ")"
sqlParams = append(sqlParams, appOrgCodes)
}
sql += `
LEFT JOIN vendor_org_code a ON a.vendor_org_code = t1m.vendor_org_code AND a.vendor_id = t1m.vendor_id AND a.deleted_at = ?
LEFT JOIN vendor_category_map b ON b.vendor_org_code = t1m.vendor_org_code AND b.vendor_id = t1m.vendor_id AND b.category_id = t1m.thing_id AND b.deleted_at = ?
`
sqlParams := []interface{}{
model.ThingTypeCategory,
sqlParams = append(sqlParams,
utils.DefaultTimeValue,
utils.DefaultTimeValue,
utils.DefaultTimeValue,
}
)
sql += `
LEFT JOIN sku_category t1p ON t1p.id = t1.parent_id
LEFT JOIN thing_map t1pm ON t1pm.thing_id = t1p.id AND t1pm.thing_type = ? AND t1m.deleted_at = ?
@@ -248,15 +286,9 @@ func GetSkuCategoryWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string,
sql += " AND t1.parent_id = ?"
sqlParams = append(sqlParams, parentCatID)
}
if len(vendorIDs) > 0 {
sql += " AND t1m.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
sqlParams = append(sqlParams, vendorIDs)
}
if len(appOrgCodes) > 0 {
sql += " AND t1m.vendor_org_code IN (" + GenQuestionMarks(len(appOrgCodes)) + ")"
sqlParams = append(sqlParams, appOrgCodes)
}
sql += " ORDER BY t1.seq"
fmt.Println(sql)
fmt.Println(sqlParams)
err = GetRows(db, &catList, sql, sqlParams...)
return catList, err
}

View File

@@ -168,7 +168,7 @@ func getStoreDetail(db *DaoDB, storeID, vendorID int, vendorStoreID, vendorOrgCo
sqlParams = append(sqlParams, vendorOrgCode)
}
if vendorID == model.VendorIDJDShop && vendorOrgCode == "" {
sql += " AND t2.vendor_org_code = 1"
sql += " AND t2.vendor_org_code = 2"
}
if err = GetRow(db, &storeDetail, sql, sqlParams...); err == nil {
storeDetail.PricePercentagePackObj = PricePercentagePack2Obj(storeDetail.PricePercentagePackStr)
@@ -1178,3 +1178,104 @@ func GetStoreAcctExpendLastCreateWayBillFee(db *DaoDB, vendorOrderID string) (la
}
return lastFee, err
}
type GetStoreManageStateResult struct {
StoreName string `json:"storeName"`
VendorStoreID string `orm:"column(vendor_store_id)" json:"vendorStoreID"`
MarketScale int `json:"marketScale"` //市场规模
Comment string `json:"comment"`
model.StoreManageState
}
func GetStoreManageState(db *DaoDB, storeIDs, brandIDs []int, vendorID, sortType, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
var (
requestList []*GetStoreManageStateResult
GetStoreManageStateSortTypeMap = map[int]string{
1: "a.cover_area",
2: "c.market_scale",
3: "a.open_time",
4: "a.sku_count",
5: "a.high_sku_count",
6: "a.act_ample",
7: "a.null_order_count",
8: "a.refuse_order_count",
9: "a.store_score",
}
)
sql := `
SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*, b.name store_name, c.vendor_store_id, c.market_scale, b.comment
FROM store_manage_state a
LEFT JOIN store b ON b.id = a.store_id AND b.deleted_at = ?
LEFT JOIN store_map c ON c.store_id = a.store_id AND c.vendor_id = a.vendor_id AND c.deleted_at = ?
WHERE a.vendor_status <> ?
`
sqlParams := []interface{}{
utils.DefaultTimeValue, utils.DefaultTimeValue,
model.StoreStatusDisabled,
}
if len(storeIDs) > 0 {
sql += " AND a.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs)
}
if len(brandIDs) > 0 {
sql += " AND b.brand_id IN (" + GenQuestionMarks(len(brandIDs)) + ")"
sqlParams = append(sqlParams, brandIDs)
}
if vendorID != -1 {
sql += " AND a.vendor_id = ?"
sqlParams = append(sqlParams, vendorID)
}
if sortType != 0 {
tempSortType := 0
if sortType < 0 {
tempSortType = -sortType
} else {
tempSortType = sortType
}
if GetStoreManageStateSortTypeMap[tempSortType] != "" {
sql += " ORDER BY " + GetStoreManageStateSortTypeMap[tempSortType]
if sortType < 0 {
sql += " DESC"
}
}
}
sql += " LIMIT ? OFFSET ?"
pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, pageSize, offset)
Begin(db)
defer Commit(db)
if err = GetRows(db, &requestList, sql, sqlParams...); err == nil {
return &model.PagedInfo{
TotalCount: GetLastTotalRowCount(db),
Data: requestList,
}, nil
}
return pagedInfo, err
}
func GetStoreManageStateSimple(db *DaoDB, storeIDs, brandIDs []int, vendorID int) (pagedInfo []*model.StoreManageState, err error) {
sql := `
SELECT a.*
FROM store_manage_state a
LEFT JOIN store b ON b.id = a.store_id AND b.deleted_at = ?
WHERE a.vendor_status <> ?
`
sqlParams := []interface{}{
utils.DefaultTimeValue,
model.StoreStatusDisabled,
}
if len(storeIDs) > 0 {
sql += " AND a.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs)
}
if len(brandIDs) > 0 {
sql += " AND b.brand_id IN (" + GenQuestionMarks(len(brandIDs)) + ")"
sqlParams = append(sqlParams, brandIDs)
}
if vendorID != -1 {
sql += " AND a.vendor_id = ?"
sqlParams = append(sqlParams, vendorID)
}
err = GetRows(db, &pagedInfo, sql, sqlParams...)
return pagedInfo, err
}

View File

@@ -109,6 +109,8 @@ type StoreSkuSyncInfo struct {
Img string
Img2 string
Img3 string
Img4 string
Img5 string
DescImg string
ImgWatermark string `json:"imgWatermark"` //图片水印
ImgMix string //合成水印后的图片
@@ -457,6 +459,8 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo
IF(t11.%s <> '', t11.%s, t3.img) img,
IF(t12.%s <> '', t12.%s, t3.img2) img2,
IF(t15.%s <> '', t15.%s, t3.img3) img3,
IF(t20.%s <> '', t20.%s, t3.img4) img4,
IF(t21.%s <> '', t21.%s, t3.img5) img5,
IF(t13.%s <> '', t13.%s, t3.desc_img) desc_img,
t4.%s_category_id vendor_vendor_cat_id,
t4.name category_name,
@@ -470,6 +474,8 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo
GetDataResFieldName(vendorID), GetDataResFieldName(vendorID),
GetDataResFieldName(vendorID), GetDataResFieldName(vendorID),
GetDataResFieldName(vendorID), GetDataResFieldName(vendorID),
GetDataResFieldName(vendorID), GetDataResFieldName(vendorID),
GetDataResFieldName(vendorID), GetDataResFieldName(vendorID),
fieldPrefix,
}
if isSingleStorePF {
@@ -496,6 +502,8 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo
LEFT JOIN data_resource t11 ON t11.main_url = t3.img
LEFT JOIN data_resource t12 ON t12.main_url = t3.img2
LEFT JOIN data_resource t15 ON t15.main_url = t3.img3
LEFT JOIN data_resource t20 ON t20.main_url = t3.img4
LEFT JOIN data_resource t21 ON t21.main_url = t3.img5
LEFT JOIN data_resource t13 ON t13.main_url = t3.desc_img
LEFT JOIN sku_exinfo_map tsu ON tsu.name_id = t3.id AND tsu.deleted_at = ? AND tsu.vendor_id = t14.vendor_id
LEFT JOIN sku_vendor_category_map tsu1 ON tsu1.name_id = t3.id AND tsu1.deleted_at = ? AND tsu1.vendor_id = t14.vendor_id
@@ -1812,3 +1820,32 @@ func GetStoreSkuListWithVendor(db *DaoDB, storeID, vendorID int, vendorOrgCode s
err = GetRows(db, &skuList, sql, sqlParams)
return skuList, err
}
type GetStoresSkusForManageStateResult struct {
SkuID int `orm:"column(sku_id)"`
UnitPrice int
MidUnitPrice int
}
func GetStoresSkusForManageState(db *DaoDB, storeID, status int) (storeSkuList []*GetStoresSkusForManageStateResult, err error) {
sql := `
SELECT t1.sku_id, t1.unit_price, t2.mid_unit_price
FROM store_sku_bind t1
LEFT JOIN price_refer_snapshot t2 ON t1.sku_id = t2.sku_id AND t2.city_code = ? AND t2.snapshot_at = ?
WHERE t1.deleted_at = ?
`
sqlParams := []interface{}{
0, utils.Time2Date(time.Now().AddDate(0, 0, -1)),
utils.DefaultTimeValue,
}
if storeID != 0 {
sql += " AND t1.store_id = ?"
sqlParams = append(sqlParams, storeID)
}
if status != model.StoreSkuBindStatusNA {
sql += " AND t1.status = ? "
sqlParams = append(sqlParams, status)
}
err = GetRows(db, &storeSkuList, sql, sqlParams...)
return storeSkuList, err
}