Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ufo
/
yohoufo-fore
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Plain Diff
Browse Files
Authored by
chenchao
6 years ago
Commit
2c724588da96db143df7c1bd90c71e1771b3ada0
2 parents
542c3854
aa6acc21
Merge branch 'test6.8.3' into dev6.8.3_order
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
343 additions
and
36 deletions
dal/src/main/java/com/yohoufo/dal/product/SearchWordMapper.java
dal/src/main/resources/META-INF/mybatis/product/SearchWordMapper.xml
order/src/main/java/com/yohoufo/order/controller/BuyerOrderController.java
order/src/main/java/com/yohoufo/order/controller/ExpressInfoController.java
order/src/main/java/com/yohoufo/order/service/IBuyerOrderMetaService.java
order/src/main/java/com/yohoufo/order/service/IBuyerOrderService.java
order/src/main/java/com/yohoufo/order/service/IExpressInfoService.java
order/src/main/java/com/yohoufo/order/service/impl/AppraiseService.java
order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderMetaServiceImpl.java
order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderServiceImpl.java
order/src/main/java/com/yohoufo/order/service/impl/ExpressInfoServiceImpl.java
pom.xml
product/src/main/java/com/yohoufo/product/controller/HotSearchWordController.java
product/src/main/java/com/yohoufo/product/controller/ProductSearchController.java
product/src/main/java/com/yohoufo/product/helper/SearchParam.java
product/src/main/java/com/yohoufo/product/service/impl/HotSearchWordService.java
dal/src/main/java/com/yohoufo/dal/product/SearchWordMapper.java
View file @
2c72458
package
com
.
yohoufo
.
dal
.
product
;
import
com.yohoufo.dal.product.model.SearchWord
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
...
...
@@ -8,5 +9,5 @@ import java.util.List;
* Created by li.ma on 2018/9/27.
*/
public
interface
SearchWordMapper
{
List
<
SearchWord
>
selectAll
();
List
<
SearchWord
>
selectAll
(
@Param
(
"clientType"
)
Integer
clientType
,
@Param
(
"wordType"
)
Integer
wordType
);
}
...
...
dal/src/main/resources/META-INF/mybatis/product/SearchWordMapper.xml
View file @
2c72458
...
...
@@ -10,6 +10,14 @@
</resultMap>
<select
id=
"selectAll"
resultMap=
"BaseResultMap"
>
select id, search_word, order_by, create_time, update_time from hot_search_word order by order_by DESC
select id, search_word, order_by, create_time, update_time from search_word
where 1 = 1
<if
test=
"clientType != null"
>
AND (client_type = #{clientType, jdbcType=INTEGER} or client_type = 2)
</if>
<if
test=
"wordType != null"
>
AND word_type = #{wordType, jdbcType=INTEGER}
</if>
order by order_by DESC LIMIT 20
</select>
</mapper>
\ No newline at end of file
...
...
order/src/main/java/com/yohoufo/order/controller/BuyerOrderController.java
View file @
2c72458
...
...
@@ -9,6 +9,7 @@ import com.yohobuy.ufo.model.order.resp.PageResp;
import
com.yohoufo.common.ApiResponse
;
import
com.yohoufo.common.annotation.IgnoreSession
;
import
com.yohoufo.common.annotation.IgnoreSignature
;
import
com.yohoufo.order.model.AddressInfo
;
import
com.yohoufo.order.model.request.OrderListRequest
;
import
com.yohoufo.order.model.request.OrderRequest
;
import
com.yohoufo.order.model.response.OrderDetailInfo
;
...
...
@@ -119,6 +120,24 @@ public class BuyerOrderController {
}
/**
* 买家修改收货地址
* @return
*/
@RequestMapping
(
params
=
"method=ufo.buyer.modifyAddress"
)
public
ApiResponse
buyerModifyAddress
(
@RequestParam
(
"orderCode"
)
long
orderCode
,
@RequestParam
(
"tabType"
)
String
tabType
,
AddressInfo
addressInfo
){
if
(!
TabType
.
BUY
.
getValue
().
equals
(
tabType
)){
return
new
ApiResponse
.
ApiResponseBuilder
().
code
(
400
).
message
(
"非法的tab"
).
build
();
}
LOG
.
info
(
"in ufo.order.buyerModifyAddress, uid {},orderCode {} request addressInfo {} "
,
addressInfo
.
getUid
(),
orderCode
,
addressInfo
);
buyerOrderService
.
buyerModifyAddress
(
addressInfo
.
getUid
(),
orderCode
,
addressInfo
);
return
new
ApiResponse
.
ApiResponseBuilder
().
code
(
200
).
message
(
"修改收货地址成功"
).
build
();
}
/**
* 取消订单
*/
...
...
order/src/main/java/com/yohoufo/order/controller/ExpressInfoController.java
View file @
2c72458
...
...
@@ -2,12 +2,13 @@ package com.yohoufo.order.controller;
import
com.yoho.error.ServiceError
;
import
com.yoho.error.exception.ServiceException
;
import
com.yohobuy.ufo.model.order.common.TabType
;
import
com.yohobuy.ufo.model.order.resp.ExpressInfoRespBo
;
import
com.yohoufo.common.ApiResponse
;
import
com.yohoufo.common.cache.Cachable
;
import
com.yohoufo.order.model.response.AppraiseAddressResp
;
import
com.yohoufo.order.service.IExpressInfoService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -44,12 +45,19 @@ public class ExpressInfoController {
/**
* 查询快递详情
*
* tabType 为后加的属性,为兼容老版本,故设置为非必须,但是新版本要求必须传。。 20181207
*
* @param orderCode
* @return
*/
@RequestMapping
(
params
=
"method=ufo.order.expressDetailInfo"
)
public
ApiResponse
queryExpressDetailInfo
(
@RequestParam
(
"uid"
)
Integer
uid
,
@RequestParam
(
"orderCode"
)
Long
orderCode
)
{
ExpressInfoRespBo
expressInfoRespBo
=
expressInfoService
.
queryExpressDetailInfo
(
uid
,
orderCode
);
public
ApiResponse
queryExpressDetailInfo
(
@RequestParam
(
"uid"
)
Integer
uid
,
@RequestParam
(
"orderCode"
)
Long
orderCode
,
@RequestParam
(
value
=
"tabType"
,
required
=
false
)
String
tabType
)
{
TabType
actor
=
null
;
if
(
StringUtils
.
isNotBlank
(
tabType
)){
actor
=
TabType
.
getTabType
(
tabType
);
}
ExpressInfoRespBo
expressInfoRespBo
=
expressInfoService
.
queryExpressDetailInfo
(
uid
,
orderCode
,
actor
);
return
new
ApiResponse
.
ApiResponseBuilder
().
code
(
200
).
data
(
expressInfoRespBo
).
build
();
}
...
...
order/src/main/java/com/yohoufo/order/service/IBuyerOrderMetaService.java
View file @
2c72458
...
...
@@ -9,4 +9,6 @@ public interface IBuyerOrderMetaService {
AddressInfo
getAddressInfo
(
int
uid
,
long
orderCode
);
AddressInfo
getHiddenAddressInfo
(
int
uid
,
long
orderCode
);
}
...
...
order/src/main/java/com/yohoufo/order/service/IBuyerOrderService.java
View file @
2c72458
...
...
@@ -2,6 +2,7 @@ package com.yohoufo.order.service;
import
com.yohobuy.ufo.model.order.common.OrderListType
;
import
com.yohobuy.ufo.model.order.resp.OrderCntResp
;
import
com.yohoufo.order.model.AddressInfo
;
import
com.yohoufo.order.model.request.OrderRequest
;
import
com.yohoufo.order.model.response.OrderSummaryResp
;
...
...
@@ -25,6 +26,13 @@ public interface IBuyerOrderService extends IOrderListService, IOrderDetailServi
*/
void
confirm
(
OrderRequest
orderRequest
);
/**
* 买家修改收货地址
*/
void
buyerModifyAddress
(
int
uid
,
long
orderCode
,
AddressInfo
changedAddress
);
/**
* 根据uid查询购买的订单数目
* @param uid
...
...
order/src/main/java/com/yohoufo/order/service/IExpressInfoService.java
View file @
2c72458
package
com
.
yohoufo
.
order
.
service
;
import
com.yohobuy.ufo.model.order.common.TabType
;
import
com.yohobuy.ufo.model.order.resp.ExpressInfoRespBo
;
import
com.yohoufo.order.model.response.AppraiseAddressResp
;
...
...
@@ -53,7 +54,7 @@ public interface IExpressInfoService {
* @param orderCode
* @return
*/
ExpressInfoRespBo
queryExpressDetailInfo
(
Integer
uid
,
Long
orderCode
);
ExpressInfoRespBo
queryExpressDetailInfo
(
Integer
uid
,
Long
orderCode
,
TabType
actor
);
/**
* 根据用户默认地址的省份定位到鉴定中心的地址返回
...
...
order/src/main/java/com/yohoufo/order/service/impl/AppraiseService.java
View file @
2c72458
...
...
@@ -37,7 +37,6 @@ import org.springframework.stereotype.Service;
import
java.math.BigDecimal
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.concurrent.ArrayBlockingQueue
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.ThreadPoolExecutor
;
...
...
@@ -88,7 +87,7 @@ public class AppraiseService {
public
ApiResponse
appraiseSuccess
(
Integer
expressCompanyId
,
Long
orderCode
,
String
wayBillCode
,
Integer
depotNum
){
ApiResponse
apiResponse
=
new
ApiResponse
();
BuyerOrder
buyerOrder
=
buyerOrderMapper
.
selectByOrderCode
(
orderCode
);
BuyerOrder
buyerOrder
=
buyerOrderMapper
.
select
Only
ByOrderCode
(
orderCode
);
if
(
buyerOrder
==
null
){
LOGGER
.
warn
(
"appraiseSuccess getOrderInfo order not exist, orderCode is {}"
,
orderCode
);
...
...
@@ -224,13 +223,12 @@ public class AppraiseService {
*/
public
ApiResponse
returnBack
(
Integer
expressCompanyId
,
Long
orderCode
,
String
wayBillCode
,
Integer
depotNum
){
ApiResponse
apiResponse
=
new
ApiResponse
();
List
<
BuyerOrder
>
buyerOrderList
=
buyerOrderMapper
.
selectByOrderCodes
(
Arrays
.
asList
(
orderCode
),
null
);
BuyerOrder
buyerOrder
=
buyerOrderMapper
.
selectOnlyByOrderCode
(
orderCode
);
if
(
buyerOrder
List
==
null
||
buyerOrderList
.
size
()<=
0
){
if
(
buyerOrder
==
null
){
LOGGER
.
warn
(
"returnBack getOrderInfo order not exist, orderCode {}"
,
orderCode
);
throw
new
ServiceException
(
ServiceError
.
ORDER_NULL
);
}
BuyerOrder
buyerOrder
=
buyerOrderList
.
get
(
0
);
OrderStatus
expectStatus
=
OrderStatus
.
BUYER_CANCEL_BEFORE_DEPOT_RECEIVE
;
if
(
buyerOrder
.
getStatus
()
!=
expectStatus
.
getCode
()){
...
...
@@ -259,7 +257,7 @@ public class AppraiseService {
*/
public
ApiResponse
appraiseFail
(
Integer
expressCompanyId
,
Long
orderCode
,
String
wayBillCode
,
Integer
depotNum
){
ApiResponse
apiResponse
=
new
ApiResponse
();
BuyerOrder
buyerOrder
=
buyerOrderMapper
.
selectByOrderCode
(
orderCode
);
BuyerOrder
buyerOrder
=
buyerOrderMapper
.
select
Only
ByOrderCode
(
orderCode
);
if
(
buyerOrder
==
null
){
LOGGER
.
warn
(
"appraiseFail getOrderInfo order not exist, orderCode {}"
,
orderCode
);
...
...
order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderMetaServiceImpl.java
View file @
2c72458
...
...
@@ -108,4 +108,16 @@ public class BuyerOrderMetaServiceImpl implements IBuyerOrderMetaService {
return
userAddress
;
}
@Override
public
AddressInfo
getHiddenAddressInfo
(
int
uid
,
long
orderCode
){
BuyerOrderMeta
buyerOrderMeta
=
getBuyerOrderMeta
(
uid
,
orderCode
,
MetaKey
.
BUYER_DELIVERY_HIDDEN_ADDRESS
);
AddressInfo
userAddress
=
null
;
if
(
null
!=
buyerOrderMeta
&&
StringUtils
.
isNotBlank
(
buyerOrderMeta
.
getMetaValue
())){
userAddress
=
JSONObject
.
parseObject
(
buyerOrderMeta
.
getMetaValue
(),
AddressInfo
.
class
);
}
return
userAddress
;
}
}
...
...
order/src/main/java/com/yohoufo/order/service/impl/BuyerOrderServiceImpl.java
View file @
2c72458
package
com
.
yohoufo
.
order
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yoho.error.ServiceError
;
import
com.yoho.error.exception.ServiceException
;
import
com.yohobuy.ufo.model.order.common.OrderListType
;
import
com.yohobuy.ufo.model.order.common.OrderStatus
;
import
com.yohobuy.ufo.model.order.common.SkupStatus
;
import
com.yohobuy.ufo.model.order.common.TabType
;
import
com.yohobuy.ufo.model.order.req.BuyerOrderMetaUpdateReq
;
import
com.yohobuy.ufo.model.order.resp.OrderCntResp
;
import
com.yohobuy.ufo.model.order.resp.OrderListInfo
;
import
com.yohobuy.ufo.model.order.resp.PageResp
;
import
com.yohobuy.ufo.model.order.vo.OrderListVo
;
import
com.yohoufo.common.exception.UfoServiceException
;
import
com.yohoufo.common.utils.DateUtil
;
import
com.yohoufo.dal.order.BuyerOrderGoodsMapper
;
import
com.yohoufo.dal.order.BuyerOrderMapper
;
...
...
@@ -21,16 +25,19 @@ import com.yohoufo.order.common.ActionStatusHold;
import
com.yohoufo.order.common.DelStatus
;
import
com.yohoufo.order.event.BeforeDepotReceiveEvent
;
import
com.yohoufo.order.event.BeforeSellerDeliverEvent
;
import
com.yohoufo.order.model.AddressInfo
;
import
com.yohoufo.order.model.request.OrderListRequest
;
import
com.yohoufo.order.model.request.OrderRequest
;
import
com.yohoufo.order.model.response.OrderDetailInfo
;
import
com.yohoufo.order.model.response.OrderSummaryResp
;
import
com.yohoufo.order.service.IBuyerOrderMetaService
;
import
com.yohoufo.order.service.IBuyerOrderService
;
import
com.yohoufo.order.service.cache.CacheCleaner
;
import
com.yohoufo.order.service.cache.CacheKeyBuilder
;
import
com.yohoufo.order.service.cache.OrderCacheService
;
import
com.yohoufo.order.service.proxy.InBoxFacade
;
import
com.yohoufo.order.service.proxy.ProductProxyService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -76,6 +83,9 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService {
@Autowired
private
BuyerOrderCancelService
buyerOrderCancelService
;
@Autowired
private
IBuyerOrderMetaService
buyerOrderMetaService
;
/**
* 提交订单
* @param orderRequest
...
...
@@ -107,6 +117,142 @@ public class BuyerOrderServiceImpl implements IBuyerOrderService {
}
/**
* 买家修改收货地址:
* 鉴定中心确定收货之前,都可以修改地址
*/
@Override
public
void
buyerModifyAddress
(
int
uid
,
long
orderCode
,
AddressInfo
changedAddress
){
//入参
if
(
uid
<=
0
){
throw
new
UfoServiceException
(
400
,
"参数错误:uid错误"
);
}
if
(
orderCode
<=
0
){
throw
new
UfoServiceException
(
400
,
"参数错误:订单号错误"
);
}
///// 检查隐藏的内容是否有变化,带*
if
(
StringUtils
.
isBlank
(
changedAddress
.
getAddress
())||
StringUtils
.
isBlank
(
changedAddress
.
getConsignee
())
||
StringUtils
.
isBlank
(
changedAddress
.
getMobile
())
||
StringUtils
.
isBlank
(
changedAddress
.
getArea
())
||
StringUtils
.
isBlank
(
changedAddress
.
getAreaCode
())){
throw
new
UfoServiceException
(
400
,
"地址信息填写错误"
);
}
AddressInfo
dbAddressInfo
=
buyerOrderMetaService
.
getAddressInfo
(
uid
,
orderCode
);
if
(
dbAddressInfo
==
null
){
logger
.
warn
(
"dbAddressInfo is null ,uid {} ,orderCode {}"
,
uid
,
orderCode
);
throw
new
UfoServiceException
(
400
,
"找不到地址信息"
);
}
AddressInfo
dbAddressInfo_hidden
=
buyerOrderMetaService
.
getHiddenAddressInfo
(
uid
,
orderCode
);
if
(
dbAddressInfo_hidden
==
null
){
logger
.
warn
(
"dbAddressInfo_hidden is null ,uid {} ,orderCode {}"
,
uid
,
orderCode
);
throw
new
UfoServiceException
(
400
,
"找不到地址信息"
);
}
//详细地址没有变化
if
(
StringUtils
.
equals
(
dbAddressInfo_hidden
.
getAddress
(),
changedAddress
.
getAddress
())){
changedAddress
.
setAddress
(
dbAddressInfo
.
getAddress
());
}
//收货人没有变化
if
(
StringUtils
.
equals
(
dbAddressInfo_hidden
.
getConsignee
(),
changedAddress
.
getConsignee
())){
changedAddress
.
setConsignee
(
dbAddressInfo
.
getConsignee
());
}
//手机号没有变化
if
(
StringUtils
.
equals
(
dbAddressInfo_hidden
.
getMobile
(),
changedAddress
.
getMobile
())){
changedAddress
.
setMobile
(
dbAddressInfo
.
getMobile
());
}
boolean
changed
=
convertAddressInfoFrontRequest
(
dbAddressInfo
,
changedAddress
);
//至少有一个要更新,否则直接返回
if
(!
changed
){
throw
new
UfoServiceException
(
400
,
"地址信息无变化"
);
//return ;
}
//检查订单
BuyerOrder
buyerOrder
=
buyerOrderMapper
.
selectByOrderCodeUid
(
orderCode
,
uid
);
if
(
buyerOrder
==
null
){
logger
.
warn
(
"buyerModifyAddress check orderCode exist, uid is {}, orderCode is {}"
,
uid
,
orderCode
);
throw
new
ServiceException
(
ServiceError
.
ORDER_NULL
);
}
if
(
buyerOrder
.
getStatus
()==
null
){
logger
.
warn
(
"buyerModifyAddress check orderCode status is null, uid is {}, orderCode is {} ,status is {}"
,
uid
,
orderCode
,
buyerOrder
.
getStatus
()
);
throw
new
ServiceException
(
ServiceError
.
ORDER_STATUS_INVALIDATE
);
}
//买家已付款,卖家已发货,只有这两种状态的情况下,才允许改地址
boolean
allowChange
=
buyerOrder
.
getStatus
().
intValue
()
==
OrderStatus
.
HAS_PAYED
.
getCode
()
||
buyerOrder
.
getStatus
().
intValue
()
==
OrderStatus
.
SELLER_SEND_OUT
.
getCode
()
;
if
(!
allowChange
){
logger
.
warn
(
"buyerModifyAddress check orderCode status not invalid, uid is {}, orderCode is {} ,status is {}"
,
uid
,
orderCode
,
buyerOrder
.
getStatus
()
);
throw
new
ServiceException
(
ServiceError
.
ORDER_STATUS_INVALIDATE
);
}
//更新收货地址:明文地址 . 隐藏地址
JSONObject
jo_address
=
(
JSONObject
)
JSON
.
toJSON
(
dbAddressInfo
);
jo_address
.
remove
(
"uid"
);
String
jo_address_string
=
jo_address
.
toJSONString
();
BuyerOrderMetaUpdateReq
updateInfo
=
new
BuyerOrderMetaUpdateReq
();
updateInfo
.
setUid
(
uid
);
updateInfo
.
setOrderCode
(
orderCode
);
updateInfo
.
setAddress
(
jo_address_string
);
logger
.
info
(
"buyerModifyAddress begin update address , uid is {}, orderCode is {},update address info {}"
,
uid
,
orderCode
,
jo_address_string
);
buyerOrderMetaService
.
updateDeliveryAddress
(
updateInfo
);
}
/**
* 把变的信息项更新
*/
private
boolean
convertAddressInfoFrontRequest
(
AddressInfo
dbAddressInfo
,
AddressInfo
req
){
boolean
changed
=
false
;
if
(!
StringUtils
.
equals
(
req
.
getConsignee
(),
dbAddressInfo
.
getConsignee
())){
changed
=
true
;
dbAddressInfo
.
setConsignee
(
req
.
getConsignee
());
}
if
(!
StringUtils
.
equals
(
req
.
getAddress
(),
dbAddressInfo
.
getAddress
())){
changed
=
true
;
dbAddressInfo
.
setAddress
(
req
.
getAddress
());
}
if
(!
StringUtils
.
equals
(
req
.
getAreaCode
(),
dbAddressInfo
.
getAreaCode
())){
changed
=
true
;
dbAddressInfo
.
setAreaCode
(
req
.
getAreaCode
());
}
if
(!
StringUtils
.
equals
(
req
.
getArea
(),
dbAddressInfo
.
getArea
())){
changed
=
true
;
dbAddressInfo
.
setArea
(
req
.
getArea
());
}
if
(!
StringUtils
.
equals
(
req
.
getMobile
(),
dbAddressInfo
.
getMobile
())){
changed
=
true
;
dbAddressInfo
.
setMobile
(
req
.
getMobile
());
}
//address_id 比较特殊,地址id根本不存在,所以如果前台不传,则把原来的置0
if
(
req
.
getAddress_id
()!=
null
&&
req
.
getAddress_id
()>
0
){
//changed = true; //此项目不作为信息更改判断根据
dbAddressInfo
.
setAddress_id
(
req
.
getAddress_id
());
}
else
{
dbAddressInfo
.
setAddress_id
(
0
);
}
if
(
StringUtils
.
isNotBlank
(
req
.
getIsUpdate
())){
//changed = true; //此项目不作为信息更改判断根据
dbAddressInfo
.
setIsUpdate
(
req
.
getIsUpdate
());
}
return
changed
;
}
/**
* 取消订单
* @param orderRequest
...
...
order/src/main/java/com/yohoufo/order/service/impl/ExpressInfoServiceImpl.java
View file @
2c72458
...
...
@@ -2,19 +2,21 @@ package com.yohoufo.order.service.impl;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.collect.Lists
;
import
com.yoho.core.rabbitmq.YhProducer
;
import
com.yoho.error.ServiceError
;
import
com.yoho.error.exception.ServiceException
;
import
com.yohobuy.ufo.model.order.common.OrderStatus
;
import
com.yohobuy.ufo.model.order.common.TabType
;
import
com.yohobuy.ufo.model.order.resp.ExpressInfoDetail
;
import
com.yohobuy.ufo.model.order.resp.ExpressInfoRespBo
;
import
com.yohoufo.common.constant.EnumExpressSender
;
import
com.yohoufo.common.constant.ExpressInfoConstant
;
import
com.yohoufo.common.exception.UfoServiceException
;
import
com.yohoufo.common.utils.DateUtil
;
import
com.yohoufo.dal.order.*
;
import
com.yohoufo.dal.order.model.*
;
import
com.yohoufo.order.common.ExpressForMqSend
;
import
com.yohobuy.ufo.model.order.common.OrderStatus
;
import
com.yohoufo.order.constants.MetaKey
;
import
com.yohoufo.order.model.AddressInfo
;
import
com.yohoufo.order.model.response.AppraiseAddressResp
;
...
...
@@ -34,6 +36,7 @@ import javax.annotation.Resource;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @author kun.wang
...
...
@@ -242,19 +245,53 @@ public class ExpressInfoServiceImpl implements IExpressInfoService {
* @return
*/
@Override
public
ExpressInfoRespBo
queryExpressDetailInfo
(
Integer
uid
,
Long
orderCode
)
{
LOGGER
.
info
(
"queryExpressDetailInfo uid={}, orderCode = {}"
,
uid
,
orderCode
);
public
ExpressInfoRespBo
queryExpressDetailInfo
(
Integer
uid
,
Long
orderCode
,
TabType
actor
)
{
LOGGER
.
info
(
"queryExpressDetailInfo uid={}, orderCode = {},actor = {} "
,
uid
,
orderCode
,
actor
);
BuyerOrder
buyerOrder
=
buyerOrderMapper
.
selectOnlyByOrderCode
(
orderCode
);
if
(
buyerOrder
==
null
){
LOGGER
.
warn
(
"getOrderInfo order not exist, orderCode is {}"
,
orderCode
);
LOGGER
.
warn
(
"
queryExpressDetailInfo
getOrderInfo order not exist, orderCode is {}"
,
orderCode
);
throw
new
ServiceException
(
ServiceError
.
ORDER_NULL
);
}
//验证订单和tabType匹配
if
(
actor
!=
null
){
switch
(
actor
){
case
BUY:
if
(!
uid
.
equals
(
buyerOrder
.
getUid
())){
//验证是买家
LOGGER
.
warn
(
"queryExpressDetailInfo check order not match buyer , uid = {} ,order is {} "
,
orderCode
,
JSON
.
toJSONString
(
buyerOrder
)
);
throw
new
UfoServiceException
(
400
,
"订单物流不允许买家用户查询"
);
}
case
SELL:
if
(!
uid
.
equals
(
buyerOrder
.
getSellerUid
())){
//验证是卖家
LOGGER
.
warn
(
"queryExpressDetailInfo check order not match seller , uid = {} ,order is {} "
,
orderCode
,
JSON
.
toJSONString
(
buyerOrder
)
);
throw
new
UfoServiceException
(
400
,
"订单物流不允许卖家用户查询"
);
}
}
}
ExpressInfoRespBo
expressInfoRespBo
=
new
ExpressInfoRespBo
();
Integer
expressType
=
getExpressType
(
buyerOrder
);
Integer
expressType
=
getExpressType
(
buyerOrder
,
actor
);
LOGGER
.
info
(
"getExpressType result = {}"
,
expressType
);
List
<
ExpressInfo
>
expressInfoList
=
expressInfoMapper
.
selectAllExpressInfo
(
uid
,
orderCode
,
expressType
);
processExpressInfo
(
expressInfoList
,
expressInfoRespBo
);
//获取上一阶段的辅助物流信息
List
<
ExpressInfoDetail
>
supplementExpressInfoDetailList
=
Lists
.
newArrayList
();
expressInfoRespBo
.
setSupplementExpressInfoDetailList
(
supplementExpressInfoDetailList
);
if
(
expressType
.
intValue
()!=
0
&&
ExpressInfoConstant
.
EXPRESS_TYPE_1
.
intValue
()!=
expressType
.
intValue
()){
if
(
ExpressInfoConstant
.
EXPRESS_TYPE_2
.
intValue
()==
expressType
.
intValue
()){
//买家这个时候需要看买家的物流
List
<
ExpressInfo
>
previousExpressInfoList
=
expressInfoMapper
.
selectAllExpressInfo
(
buyerOrder
.
getSellerUid
(),
orderCode
,
ExpressInfoConstant
.
EXPRESS_TYPE_1
);
constructExpressInfo
(
previousExpressInfoList
,
supplementExpressInfoDetailList
);
}
else
if
(
ExpressInfoConstant
.
EXPRESS_TYPE_3
.
intValue
()==
expressType
.
intValue
()
||
ExpressInfoConstant
.
EXPRESS_TYPE_REBACK
.
intValue
()==
expressType
.
intValue
()){
//卖家这个时候看自己上一阶段的物流
List
<
ExpressInfo
>
previousExpressInfoList
=
expressInfoMapper
.
selectAllExpressInfo
(
uid
,
orderCode
,
ExpressInfoConstant
.
EXPRESS_TYPE_1
);
constructExpressInfo
(
previousExpressInfoList
,
supplementExpressInfoDetailList
);
}
}
LOGGER
.
info
(
"queryExpressDetailInfo result = {}"
,
JSON
.
toJSONString
(
expressInfoRespBo
));
return
expressInfoRespBo
;
}
...
...
@@ -305,24 +342,69 @@ public class ExpressInfoServiceImpl implements IExpressInfoService {
}
}
private
void
constructExpressInfo
(
List
<
ExpressInfo
>
expressInfoList
,
List
<
ExpressInfoDetail
>
supplementExpressInfoDetailList
)
{
if
(
CollectionUtils
.
isNotEmpty
(
expressInfoList
))
{
for
(
ExpressInfo
expressInfo
:
expressInfoList
)
{
ExpressInfoDetail
expressInfoDetail
=
new
ExpressInfoDetail
();
// 运单接收地
expressInfoDetail
.
setAcceptAddress
(
expressInfo
.
getAcceptAddress
());
// 运单信息
expressInfoDetail
.
setAcceptRemark
(
expressInfo
.
getAcceptRemark
());
expressInfoDetail
.
setCreateTimeStr
(
DateUtil
.
formatDate
(
expressInfo
.
getCreateTime
(),
DateUtil
.
yyyy_MM_dd_HH_mm_SS
));
supplementExpressInfoDetailList
.
add
(
expressInfoDetail
);
}
}
}
/**
* orderCode 一定是买家订单号
* @return
*/
private
Integer
getExpressType
(
BuyerOrder
buyerOrder
)
{
if
(
OrderStatus
.
SELLER_SEND_OUT
.
getCode
()==
buyerOrder
.
getStatus
()||
OrderStatus
.
PLATFORM_CHECKING
.
getCode
()==
buyerOrder
.
getStatus
()){
return
ExpressInfoConstant
.
EXPRESS_TYPE_1
;
}
else
if
(
OrderStatus
.
CHECKING_FAKE
.
getCode
()==
buyerOrder
.
getStatus
()){
return
ExpressInfoConstant
.
EXPRESS_TYPE_3
;
}
else
if
(
OrderStatus
.
WAITING_RECEIVE
.
getCode
()==
buyerOrder
.
getStatus
()||
OrderStatus
.
DONE
.
getCode
()==
buyerOrder
.
getStatus
()){
return
ExpressInfoConstant
.
EXPRESS_TYPE_2
;
}
else
if
(
OrderStatus
.
BUYER_CANCEL_BEFORE_DEPOT_RECEIVE
.
getCode
()==
buyerOrder
.
getStatus
()){
return
ExpressInfoConstant
.
EXPRESS_TYPE_REBACK
;
private
Integer
getExpressType
(
BuyerOrder
buyerOrder
,
TabType
actor
)
{
if
(
null
==
actor
){
if
(
OrderStatus
.
SELLER_SEND_OUT
.
getCode
()==
buyerOrder
.
getStatus
()||
OrderStatus
.
PLATFORM_CHECKING
.
getCode
()==
buyerOrder
.
getStatus
()){
return
ExpressInfoConstant
.
EXPRESS_TYPE_1
;
}
else
if
(
OrderStatus
.
WAITING_RECEIVE
.
getCode
()==
buyerOrder
.
getStatus
()||
OrderStatus
.
DONE
.
getCode
()==
buyerOrder
.
getStatus
()){
//4 和 5 状态有问题 ,买家查看物流是没问题的,卖家查看物流有问题啊.
return
ExpressInfoConstant
.
EXPRESS_TYPE_2
;
}
else
if
(
OrderStatus
.
CHECKING_FAKE
.
getCode
()==
buyerOrder
.
getStatus
()){
return
ExpressInfoConstant
.
EXPRESS_TYPE_3
;
}
else
if
(
OrderStatus
.
BUYER_CANCEL_BEFORE_DEPOT_RECEIVE
.
getCode
()==
buyerOrder
.
getStatus
()){
return
ExpressInfoConstant
.
EXPRESS_TYPE_REBACK
;
}
}
else
{
switch
(
actor
){
case
BUY:
return
getExpressTypeBuyer
(
buyerOrder
);
case
SELL:
return
getExpressTypeSeller
(
buyerOrder
);
default
:
return
0
;
}
}
return
0
;
}
private
Integer
getExpressTypeSeller
(
BuyerOrder
buyerOrder
){
Integer
status
=
buyerOrder
.
getStatus
();
Integer
type
;
if
(
Objects
.
equals
(
OrderStatus
.
CHECKING_FAKE
.
getCode
(),
status
)){
type
=
ExpressInfoConstant
.
EXPRESS_TYPE_3
;
}
else
if
(
Objects
.
equals
(
OrderStatus
.
BUYER_CANCEL_BEFORE_DEPOT_RECEIVE
.
getCode
(),
status
)){
type
=
ExpressInfoConstant
.
EXPRESS_TYPE_REBACK
;
}
else
{
type
=
ExpressInfoConstant
.
EXPRESS_TYPE_1
;
}
return
type
;
}
private
Integer
getExpressTypeBuyer
(
BuyerOrder
buyerOrder
){
return
ExpressInfoConstant
.
EXPRESS_TYPE_2
;
}
/**
* 根据用户默认地址的省份定位到鉴定中心的地址返回
*
...
...
pom.xml
View file @
2c72458
...
...
@@ -18,7 +18,7 @@
<properties>
<qiniu.version>
7.0.5
</qiniu.version>
<project-name>
yohoufo-fore
</project-name>
<model.version>
2
.0-SNAPSHOT
</model.version>
<model.version>
3
.0-SNAPSHOT
</model.version>
</properties>
<dependencyManagement>
...
...
product/src/main/java/com/yohoufo/product/controller/HotSearchWordController.java
View file @
2c72458
...
...
@@ -11,6 +11,7 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
...
...
@@ -23,6 +24,11 @@ public class HotSearchWordController {
private
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
HotSearchWordController
.
class
);
private
final
Integer
CLIENT_TYPE_APP
=
0
;
// APP端
private
final
Integer
CLIENT_TYPE_MINIAPP
=
1
;
// 小程序端
private
final
Integer
WORD_TYPE_HOT
=
0
;
// 热搜词
@Autowired
private
HotSearchWordService
hotSearchWordService
;
...
...
@@ -31,9 +37,23 @@ public class HotSearchWordController {
@IgnoreSession
@RequestMapping
(
params
=
"method=ufo.product.searchWord"
)
@Cachable
(
expire
=
180
)
public
ApiResponse
querySearchWord
()
{
LOG
.
info
(
"in method=ufo.product.searchWord"
);
List
<
SearchWordResp
>
resp
=
hotSearchWordService
.
querySearchWord
();
public
ApiResponse
querySearchWord
(
@RequestParam
(
value
=
"client_type"
,
required
=
false
)
String
clientType
,
@RequestParam
(
value
=
"word_type"
,
required
=
false
)
Integer
wordType
)
{
LOG
.
info
(
"in method=ufo.product.searchWord clientType is {}, wordType is {}"
,
clientType
,
wordType
);
Integer
dalClientType
;
if
(
null
==
clientType
)
{
dalClientType
=
CLIENT_TYPE_APP
;
}
else
if
(
"iphone"
.
equals
(
clientType
)
||
"android"
.
equals
(
clientType
))
{
dalClientType
=
CLIENT_TYPE_APP
;
}
else
{
dalClientType
=
CLIENT_TYPE_MINIAPP
;
}
if
(
null
==
wordType
)
{
wordType
=
WORD_TYPE_HOT
;
}
List
<
SearchWordResp
>
resp
=
hotSearchWordService
.
querySearchWord
(
dalClientType
,
wordType
);
return
new
ApiResponse
.
ApiResponseBuilder
().
data
(
resp
).
code
(
200
).
message
(
"热搜词列表"
).
build
();
}
}
...
...
product/src/main/java/com/yohoufo/product/controller/ProductSearchController.java
View file @
2c72458
...
...
@@ -60,13 +60,13 @@ public class ProductSearchController {
if
(
type
==
0
)
{
productPool
=
String
.
valueOf
(
poolConfig
.
get
(
2
));
order
=
"pools.order_by:desc"
;
}
if
(
type
==
1
)
{
}
else
if
(
type
==
1
)
{
productPool
=
String
.
valueOf
(
poolConfig
.
get
(
4
));
order
=
"pools.order_by:desc"
;
}
if
(
type
==
2
)
{
}
else
if
(
type
==
2
)
{
isSoonSale
=
"Y"
;
}
else
{
}
}
SortIdLevel
sortIdLevel
=
productSearchService
.
getSortLevelById
(
sort
);
...
...
product/src/main/java/com/yohoufo/product/helper/SearchParam.java
View file @
2c72458
...
...
@@ -34,6 +34,8 @@ public class SearchParam {
orderMap
.
put
(
"p_asc"
,
"price:asc"
);
orderMap
.
put
(
"pools_id_asc"
,
"pools.order_by:asc"
);
orderMap
.
put
(
"pools_id_desc"
,
"pools.order_by:desc"
);
orderMap
.
put
(
"sale_asc"
,
"salesNum:asc"
);
orderMap
.
put
(
"sale_desc"
,
"salesNum:desc"
);
}
/**
...
...
product/src/main/java/com/yohoufo/product/service/impl/HotSearchWordService.java
View file @
2c72458
...
...
@@ -17,8 +17,8 @@ public class HotSearchWordService {
@Autowired
private
SearchWordMapper
searchWordMapper
;
public
List
<
SearchWordResp
>
querySearchWord
()
{
List
<
SearchWord
>
searchWords
=
searchWordMapper
.
selectAll
();
public
List
<
SearchWordResp
>
querySearchWord
(
Integer
clientType
,
Integer
wordType
)
{
List
<
SearchWord
>
searchWords
=
searchWordMapper
.
selectAll
(
clientType
,
wordType
);
List
<
SearchWordResp
>
result
=
new
ArrayList
<>();
...
...
Please
register
or
login
to post a comment