Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Q
qk_backend
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
quanku
qk_backend
Commits
e0fbd40a
Commit
e0fbd40a
authored
Mar 06, 2024
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
拍卖生成订单
parent
35084cbe
Changes
20
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
425 additions
and
49 deletions
+425
-49
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/SysSupplierItemServiceImpl.java
...va/com/wwdz/ch/admin/impl/SysSupplierItemServiceImpl.java
+1
-0
ch-admin-api/src/main/java/com/wwdz/ch/admin/job/SynItemToEsJob.java
...i/src/main/java/com/wwdz/ch/admin/job/SynItemToEsJob.java
+1
-1
ch-core/src/main/java/com/wwdz/ch/core/consts/CommConsts.java
...ore/src/main/java/com/wwdz/ch/core/consts/CommConsts.java
+5
-0
ch-core/src/main/resources/application-dev.yml
ch-core/src/main/resources/application-dev.yml
+2
-0
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/AuctionConfigDao.java
...ava/com/wwdz/ch/db/dao/distribution/AuctionConfigDao.java
+16
-0
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/AuctionRecordDao.java
...ava/com/wwdz/ch/db/dao/distribution/AuctionRecordDao.java
+12
-1
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/distribution/AuctionRecordRequestDto.java
.../db/dto/request/distribution/AuctionRecordRequestDto.java
+10
-0
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/AuctionConfigDaoImpl.java
...om/wwdz/ch/db/impl/distribution/AuctionConfigDaoImpl.java
+28
-0
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/AuctionRecordDaoImpl.java
...om/wwdz/ch/db/impl/distribution/AuctionRecordDaoImpl.java
+17
-2
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/DistributionOrderDaoImpl.java
...wdz/ch/db/impl/distribution/DistributionOrderDaoImpl.java
+4
-0
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/SupplierItemDaoImpl.java
...com/wwdz/ch/db/impl/distribution/SupplierItemDaoImpl.java
+0
-1
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/AuctionOfferNoticeMsg.java
...ain/java/com/wwdz/ch/wx/entity/AuctionOfferNoticeMsg.java
+32
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/distribution/AuctionRecordVo.java
...om/wwdz/ch/wx/entity/vo/distribution/AuctionRecordVo.java
+24
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/distribution/DistributionOrderDetailVo.java
.../wx/entity/vo/distribution/DistributionOrderDetailVo.java
+7
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/distribution/DistributionOrderVo.java
...wdz/ch/wx/entity/vo/distribution/DistributionOrderVo.java
+7
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/AuctionRecordServiceImpl.java
...wdz/ch/wx/impl/distribution/AuctionRecordServiceImpl.java
+66
-20
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/DistributionOrderServiceImpl.java
...ch/wx/impl/distribution/DistributionOrderServiceImpl.java
+65
-24
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/SendMsgServiceImpl.java
.../com/wwdz/ch/wx/impl/distribution/SendMsgServiceImpl.java
+6
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/job/AutoCreateAuctionOrderJob.java
...in/java/com/wwdz/ch/wx/job/AutoCreateAuctionOrderJob.java
+114
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/SendMsgService.java
...a/com/wwdz/ch/wx/service/distribution/SendMsgService.java
+8
-0
No files found.
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/SysSupplierItemServiceImpl.java
View file @
e0fbd40a
...
@@ -105,6 +105,7 @@ public class SysSupplierItemServiceImpl implements SysSupplierItemService {
...
@@ -105,6 +105,7 @@ public class SysSupplierItemServiceImpl implements SysSupplierItemService {
public
Result
findList
(
SupplierItemRequestDto
dto
)
{
public
Result
findList
(
SupplierItemRequestDto
dto
)
{
try
{
try
{
List
<
SupplierItemVo
>
supplierItemVos
=
new
ArrayList
<>();
List
<
SupplierItemVo
>
supplierItemVos
=
new
ArrayList
<>();
dto
.
setIsDeleted
(
false
);
List
<
SupplierItem
>
supplierItemList
=
supplierItemDao
.
findList
(
dto
);
List
<
SupplierItem
>
supplierItemList
=
supplierItemDao
.
findList
(
dto
);
PageInfo
<
SupplierItem
>
pageInfo
=
new
PageInfo
(
supplierItemList
);
PageInfo
<
SupplierItem
>
pageInfo
=
new
PageInfo
(
supplierItemList
);
supplierItemList
.
forEach
(
supplierItem
->
{
supplierItemList
.
forEach
(
supplierItem
->
{
...
...
ch-admin-api/src/main/java/com/wwdz/ch/admin/job/SynItemToEsJob.java
View file @
e0fbd40a
...
@@ -67,7 +67,7 @@ public class SynItemToEsJob {
...
@@ -67,7 +67,7 @@ public class SynItemToEsJob {
/**
/**
* 隔2分钟运行一次
* 隔2分钟运行一次
*/
*/
@Scheduled
(
fixedDelay
=
1000
*
60
*
2
)
//
@Scheduled(fixedDelay = 1000 * 60 * 2)
public
void
execute
()
{
public
void
execute
()
{
RLock
lock
=
redissonClient
.
getLock
(
QUANKU_SYN_TO_ES_TASK_KEY
);
RLock
lock
=
redissonClient
.
getLock
(
QUANKU_SYN_TO_ES_TASK_KEY
);
if
(!
lock
.
tryLock
())
{
if
(!
lock
.
tryLock
())
{
...
...
ch-core/src/main/java/com/wwdz/ch/core/consts/CommConsts.java
View file @
e0fbd40a
...
@@ -32,6 +32,11 @@ public interface CommConsts {
...
@@ -32,6 +32,11 @@ public interface CommConsts {
*/
*/
public
static
final
String
UPLOAD_PRE_WXACODE_DIRECTORY
=
"quanku/wxacode/"
;
public
static
final
String
UPLOAD_PRE_WXACODE_DIRECTORY
=
"quanku/wxacode/"
;
/**
* 拍卖出价的锁
*/
public
static
final
String
AUCTION_LOCK_KEY_PRE
=
"AUCTION:OFFER:"
;
}
}
ch-core/src/main/resources/application-dev.yml
View file @
e0fbd40a
...
@@ -21,6 +21,8 @@ dts:
...
@@ -21,6 +21,8 @@ dts:
msg-url
:
pages/consignNodeDetail/index
msg-url
:
pages/consignNodeDetail/index
#分销业务,公众号消息点击后跳转到小程序页面的链接
#分销业务,公众号消息点击后跳转到小程序页面的链接
distribution-msg-url
:
pages/saleOrderDetail/index
distribution-msg-url
:
pages/saleOrderDetail/index
#分销拍卖业务,众号消息点击后跳转到小程序页面的链接
auction-msg-url
:
pages/saleOrderDetail/index
# 商户证书文件路径
# 商户证书文件路径
# 请参考“商户证书”一节 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3
# 请参考“商户证书”一节 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/AuctionConfigDao.java
View file @
e0fbd40a
...
@@ -3,6 +3,7 @@ package com.wwdz.ch.db.dao.distribution;
...
@@ -3,6 +3,7 @@ package com.wwdz.ch.db.dao.distribution;
import
com.wwdz.ch.db.domain.distribution.AuctionConfig
;
import
com.wwdz.ch.db.domain.distribution.AuctionConfig
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
public
interface
AuctionConfigDao
{
public
interface
AuctionConfigDao
{
...
@@ -30,6 +31,21 @@ public interface AuctionConfigDao {
...
@@ -30,6 +31,21 @@ public interface AuctionConfigDao {
*/
*/
AuctionConfig
findByItemId
(
long
itemId
);
AuctionConfig
findByItemId
(
long
itemId
);
/**
* 查询截拍商品记录
* @param
* @return
*/
List
<
AuctionConfig
>
findEndList
();
/**
* 查询超过截拍时间,但状态没有更改为截拍的商品记录
* @param
* @return
*/
List
<
AuctionConfig
>
findTimeOutNotValidList
();
/**
/**
* 更新截拍时间
* 更新截拍时间
* @param itemId
* @param itemId
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dao/distribution/AuctionRecordDao.java
View file @
e0fbd40a
...
@@ -3,6 +3,7 @@ package com.wwdz.ch.db.dao.distribution;
...
@@ -3,6 +3,7 @@ package com.wwdz.ch.db.dao.distribution;
import
com.wwdz.ch.db.domain.distribution.AuctionRecord
;
import
com.wwdz.ch.db.domain.distribution.AuctionRecord
;
import
com.wwdz.ch.db.dto.request.distribution.AuctionRecordRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.AuctionRecordRequestDto
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
public
interface
AuctionRecordDao
{
public
interface
AuctionRecordDao
{
...
@@ -46,6 +47,14 @@ public interface AuctionRecordDao {
...
@@ -46,6 +47,14 @@ public interface AuctionRecordDao {
*/
*/
List
<
AuctionRecord
>
findByPage
(
AuctionRecordRequestDto
dto
);
List
<
AuctionRecord
>
findByPage
(
AuctionRecordRequestDto
dto
);
/**
* 根据商品id查询出价记录
* @param itemId
* @return
*/
List
<
AuctionRecord
>
findByItemId
(
long
itemId
);
/**
/**
* 查询最新的一条出价记录
* 查询最新的一条出价记录
* @param itemId
* @param itemId
...
@@ -63,8 +72,10 @@ public interface AuctionRecordDao {
...
@@ -63,8 +72,10 @@ public interface AuctionRecordDao {
/**
/**
* 查询用户出价过的商品
* 查询用户出价过的商品
* @param userId
* @param userId
* @param startTime
* @param endTime
* @return
* @return
*/
*/
List
<
Long
>
findItemsOfRecord
(
long
userId
);
List
<
AuctionRecord
>
findRecordByUserId
(
long
userId
,
Date
startTime
,
Date
endTime
);
}
}
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/distribution/AuctionRecordRequestDto.java
View file @
e0fbd40a
...
@@ -55,4 +55,14 @@ public class AuctionRecordRequestDto extends BaseRequestDto implements Entity {
...
@@ -55,4 +55,14 @@ public class AuctionRecordRequestDto extends BaseRequestDto implements Entity {
* 分销订单号
* 分销订单号
*/
*/
private
String
distributionOrderId
;
private
String
distributionOrderId
;
/**
* 时间范围查询
*/
private
Date
queryStartTime
;
/**
* 时间范围查询
*/
private
Date
queryEndTime
;
}
}
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/AuctionConfigDaoImpl.java
View file @
e0fbd40a
...
@@ -7,7 +7,12 @@ import com.wwdz.ch.db.domain.distribution.DistributionOrderExample;
...
@@ -7,7 +7,12 @@ import com.wwdz.ch.db.domain.distribution.DistributionOrderExample;
import
com.wwdz.ch.db.mapper.distribution.AuctionConfigMapper
;
import
com.wwdz.ch.db.mapper.distribution.AuctionConfigMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.time.Duration
;
import
java.time.Instant
;
import
java.time.temporal.TemporalAmount
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
@Repository
@Repository
public
class
AuctionConfigDaoImpl
implements
AuctionConfigDao
{
public
class
AuctionConfigDaoImpl
implements
AuctionConfigDao
{
...
@@ -45,6 +50,29 @@ public class AuctionConfigDaoImpl implements AuctionConfigDao {
...
@@ -45,6 +50,29 @@ public class AuctionConfigDaoImpl implements AuctionConfigDao {
return
auctionConfigMapper
.
updateByExampleSelective
(
auctionConfig
,
example
);
return
auctionConfigMapper
.
updateByExampleSelective
(
auctionConfig
,
example
);
}
}
@Override
public
List
<
AuctionConfig
>
findEndList
()
{
AuctionConfigExample
example
=
new
AuctionConfigExample
();
AuctionConfigExample
.
Criteria
criteria
=
example
.
createCriteria
();
Date
now
=
new
Date
();
//查询截单时间一小时内的拍卖
Instant
instant
=
now
.
toInstant
().
minus
(
Duration
.
ofHours
(
1
));
Date
time
=
Date
.
from
(
instant
);
criteria
.
andRealEndTimeGreaterThanOrEqualTo
(
time
);
criteria
.
andIsValidEqualTo
(
false
);
return
auctionConfigMapper
.
selectByExample
(
example
);
}
@Override
public
List
<
AuctionConfig
>
findTimeOutNotValidList
()
{
AuctionConfigExample
example
=
new
AuctionConfigExample
();
AuctionConfigExample
.
Criteria
criteria
=
example
.
createCriteria
();
Date
now
=
new
Date
();
criteria
.
andRealEndTimeLessThanOrEqualTo
(
now
);
criteria
.
andIsValidEqualTo
(
true
);
return
auctionConfigMapper
.
selectByExample
(
example
);
}
@Override
@Override
public
int
setEnd
(
long
itemId
)
{
public
int
setEnd
(
long
itemId
)
{
AuctionConfigExample
example
=
new
AuctionConfigExample
();
AuctionConfigExample
example
=
new
AuctionConfigExample
();
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/AuctionRecordDaoImpl.java
View file @
e0fbd40a
...
@@ -10,6 +10,7 @@ import com.xxdxxs.db.component.JdbcHelper;
...
@@ -10,6 +10,7 @@ import com.xxdxxs.db.component.JdbcHelper;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
@Repository
@Repository
...
@@ -65,6 +66,15 @@ public class AuctionRecordDaoImpl implements AuctionRecordDao {
...
@@ -65,6 +66,15 @@ public class AuctionRecordDaoImpl implements AuctionRecordDao {
}
}
@Override
public
List
<
AuctionRecord
>
findByItemId
(
long
itemId
)
{
AuctionRecordExample
example
=
new
AuctionRecordExample
();
AuctionRecordExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andItemIdEqualTo
(
itemId
);
example
.
setOrderByClause
(
"create_time desc"
);
return
auctionRecordMapper
.
selectByExample
(
example
);
}
@Override
@Override
public
AuctionRecord
findLastedRecord
(
long
itemId
)
{
public
AuctionRecord
findLastedRecord
(
long
itemId
)
{
AuctionRecordExample
example
=
new
AuctionRecordExample
();
AuctionRecordExample
example
=
new
AuctionRecordExample
();
...
@@ -86,7 +96,12 @@ public class AuctionRecordDaoImpl implements AuctionRecordDao {
...
@@ -86,7 +96,12 @@ public class AuctionRecordDaoImpl implements AuctionRecordDao {
@Override
@Override
public
List
<
Long
>
findItemsOfRecord
(
long
userId
)
{
public
List
<
AuctionRecord
>
findRecordByUserId
(
long
userId
,
Date
startTime
,
Date
endTime
)
{
return
auctionRecordMapper
.
findItemsOfRecord
(
userId
);
AuctionRecordExample
example
=
new
AuctionRecordExample
();
AuctionRecordExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andUserIdEqualTo
(
userId
);
criteria
.
andCreateTimeGreaterThanOrEqualTo
(
startTime
);
criteria
.
andCreateTimeLessThanOrEqualTo
(
endTime
);
return
auctionRecordMapper
.
selectByExample
(
example
);
}
}
}
}
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/DistributionOrderDaoImpl.java
View file @
e0fbd40a
...
@@ -134,6 +134,10 @@ public class DistributionOrderDaoImpl implements DistributionOrderDao {
...
@@ -134,6 +134,10 @@ public class DistributionOrderDaoImpl implements DistributionOrderDao {
criteria
.
andDistributionOrderIdEqualTo
(
distributionOrderId
);
criteria
.
andDistributionOrderIdEqualTo
(
distributionOrderId
);
DistributionOrder
distributionOrder
=
new
DistributionOrder
();
DistributionOrder
distributionOrder
=
new
DistributionOrder
();
distributionOrder
.
setState
(
state
);
distributionOrder
.
setState
(
state
);
//确认收货,更新完成时间
if
(
state
==
100
)
{
distributionOrder
.
setFinishTime
(
new
Date
());
}
distributionOrder
.
setUpdateTime
(
new
Date
());
distributionOrder
.
setUpdateTime
(
new
Date
());
return
distributionOrderMapper
.
updateByExampleSelective
(
distributionOrder
,
example
)
>
0
;
return
distributionOrderMapper
.
updateByExampleSelective
(
distributionOrder
,
example
)
>
0
;
}
}
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/distribution/SupplierItemDaoImpl.java
View file @
e0fbd40a
...
@@ -40,7 +40,6 @@ public class SupplierItemDaoImpl implements SupplierItemDao {
...
@@ -40,7 +40,6 @@ public class SupplierItemDaoImpl implements SupplierItemDao {
JdbcHelper
.
ifPresent
(
dto
.
getStock
(),
criteria:
:
andStockGreaterThan
);
JdbcHelper
.
ifPresent
(
dto
.
getStock
(),
criteria:
:
andStockGreaterThan
);
JdbcHelper
.
ifPresent
(
dto
.
getIsOnSale
(),
criteria:
:
andIsOnSaleEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getIsOnSale
(),
criteria:
:
andIsOnSaleEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getIsDeleted
(),
criteria:
:
andIsDeletedEqualTo
);
JdbcHelper
.
ifPresent
(
dto
.
getIsDeleted
(),
criteria:
:
andIsDeletedEqualTo
);
criteria
.
andIsDeletedEqualTo
(
false
);
supplierItemExample
.
setOrderByClause
(
" id desc"
);
supplierItemExample
.
setOrderByClause
(
" id desc"
);
PageHelper
.
startPage
(
dto
.
getPage
(),
dto
.
getLimit
());
PageHelper
.
startPage
(
dto
.
getPage
(),
dto
.
getLimit
());
return
supplierItemMapper
.
selectByExampleWithBLOBs
(
supplierItemExample
);
return
supplierItemMapper
.
selectByExampleWithBLOBs
(
supplierItemExample
);
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/AuctionOfferNoticeMsg.java
0 → 100644
View file @
e0fbd40a
package
com.wwdz.ch.wx.entity
;
import
com.xxdxxs.entity.Entity
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
AuctionOfferNoticeMsg
implements
Entity
{
private
String
templetId
;
/**
* 分销订单号
*/
private
String
distributionOrderId
;
/**
* 商品名称
*/
private
String
itemName
;
/**
* 付款金额
*/
private
String
amount
;
/**
* 签收时间
*/
private
Date
signedTime
;
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/distribution/AuctionRecordVo.java
View file @
e0fbd40a
...
@@ -6,10 +6,31 @@ import lombok.Data;
...
@@ -6,10 +6,31 @@ import lombok.Data;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
@Data
@Data
public
class
AuctionRecordVo
implements
Entity
{
public
class
AuctionRecordVo
implements
Entity
{
/**
* 商品id
*/
private
Long
itemId
;
/**
* 商品名称
*/
private
String
itemName
;
/**
* 商品分享的id
*/
private
String
shareRecordId
;
/**
* 用于列表展示的图片对象
*/
private
Map
<
String
,
Object
>
homePageImage
;
/**
/**
* 当前售价
* 当前售价
*/
*/
...
@@ -58,5 +79,8 @@ public class AuctionRecordVo implements Entity {
...
@@ -58,5 +79,8 @@ public class AuctionRecordVo implements Entity {
*/
*/
private
Integer
totalOfferNum
;
private
Integer
totalOfferNum
;
private
Integer
auctionUserState
;
private
String
auctionUserStateName
;
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/distribution/DistributionOrderDetailVo.java
View file @
e0fbd40a
...
@@ -173,4 +173,11 @@ public class DistributionOrderDetailVo implements Entity {
...
@@ -173,4 +173,11 @@ public class DistributionOrderDetailVo implements Entity {
*/
*/
private
Date
payEndTime
;
private
Date
payEndTime
;
/**
* 商品类型1一口价2竞拍
*/
private
Integer
type
;
private
String
typeName
;
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/entity/vo/distribution/DistributionOrderVo.java
View file @
e0fbd40a
...
@@ -153,4 +153,11 @@ public class DistributionOrderVo implements Entity {
...
@@ -153,4 +153,11 @@ public class DistributionOrderVo implements Entity {
* 支付截止时间
* 支付截止时间
*/
*/
private
Date
payEndTime
;
private
Date
payEndTime
;
/**
* 商品类型1一口价2竞拍
*/
private
Integer
type
;
private
String
typeName
;
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/AuctionRecordServiceImpl.java
View file @
e0fbd40a
package
com.wwdz.ch.wx.impl.distribution
;
package
com.wwdz.ch.wx.impl.distribution
;
import
com.wwdz.ch.core.api.OfficialAccountApi
;
import
com.wwdz.ch.core.api.wxpay.WxPayServiceApi
;
import
com.wwdz.ch.core.api.wxpay.WxPayServiceApi
;
import
com.wwdz.ch.core.consts.CommConsts
;
import
com.wwdz.ch.core.consts.DistributionEnum
;
import
com.wwdz.ch.core.consts.DistributionEnum
;
import
com.wwdz.ch.core.consts.ResultCode
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.MediaUtil
;
import
com.wwdz.ch.core.util.PriceUtil
;
import
com.wwdz.ch.core.util.PriceUtil
;
import
com.wwdz.ch.db.dao.OfficialAccountSubscribeRecordDao
;
import
com.wwdz.ch.db.dao.UserDao
;
import
com.wwdz.ch.db.dao.distribution.*
;
import
com.wwdz.ch.db.dao.distribution.*
;
import
com.wwdz.ch.db.domain.distribution.*
;
import
com.wwdz.ch.db.domain.distribution.*
;
import
com.wwdz.ch.db.dto.request.distribution.AuctionRecordRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.AuctionRecordRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto
;
import
com.wwdz.ch.wx.entity.vo.distribution.AuctionRecordVo
;
import
com.wwdz.ch.wx.entity.vo.distribution.AuctionRecordVo
;
import
com.wwdz.ch.wx.service.distribution.AuctionRecordService
;
import
com.wwdz.ch.wx.service.distribution.AuctionRecordService
;
import
com.wwdz.ch.wx.util.RedisUtil
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.redisson.api.RedissonClient
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -21,20 +23,20 @@ import org.springframework.stereotype.Service;
...
@@ -21,20 +23,20 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.time.Duration
;
import
java.time.Duration
;
import
java.time.Instant
;
import
java.time.Instant
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
@Service
@Service
public
class
AuctionRecordServiceImpl
implements
AuctionRecordService
{
public
class
AuctionRecordServiceImpl
implements
AuctionRecordService
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
AuctionRecordServiceImpl
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
AuctionRecordServiceImpl
.
class
);
private
static
final
String
LOCK_KEY_PRE
=
"AUCTION:OFFER:"
;
@Autowired
@Autowired
AuctionConfigDao
auctionConfigDao
;
AuctionConfigDao
auctionConfigDao
;
...
@@ -57,11 +59,21 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
...
@@ -57,11 +59,21 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
@Autowired
@Autowired
DistributorShareRecordDao
distributorShareRecordDao
;
DistributorShareRecordDao
distributorShareRecordDao
;
@Autowired
OfficialAccountApi
officialAccountApi
;
@Autowired
UserDao
userDao
;
@Autowired
OfficialAccountSubscribeRecordDao
officialAccountSubscribeRecordDao
;
@Override
@Override
@Transactional
@Transactional
public
Result
createAuctionRecord
(
AuctionRecordRequestDto
dto
)
{
public
Result
createAuctionRecord
(
AuctionRecordRequestDto
dto
)
{
long
itemId
=
dto
.
getItemId
();
long
itemId
=
dto
.
getItemId
();
String
itemIdKey
=
LOCK_KEY_PRE
+
itemId
;
String
itemIdKey
=
CommConsts
.
AUCTION_
LOCK_KEY_PRE
+
itemId
;
RLock
lock
=
redissonClient
.
getLock
(
itemIdKey
);
RLock
lock
=
redissonClient
.
getLock
(
itemIdKey
);
try
{
try
{
if
(
lock
.
tryLock
(
5
,
5
,
TimeUnit
.
SECONDS
))
{
if
(
lock
.
tryLock
(
5
,
5
,
TimeUnit
.
SECONDS
))
{
...
@@ -92,6 +104,24 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
...
@@ -92,6 +104,24 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
}
}
//把上次的最高价记录改为落后
//把上次的最高价记录改为落后
auctionRecordDao
.
updateNotLeadById
(
auctionRecord
.
getId
());
auctionRecordDao
.
updateNotLeadById
(
auctionRecord
.
getId
());
//发送模板消息,提示用户出价被超越
/* User user = userDao.queryById(userId);
String unionId = user.getWeixinUnionid();
OfficialAccountSubscribeRecord officialAccountSubscribeRecord = officialAccountSubscribeRecordDao.findOne(unionId);
//没有订阅
if (officialAccountSubscribeRecord == null || officialAccountSubscribeRecord.getEnabled().intValue() == 0) {
logger.info(">>>>>>>>>> 用户 unionId = {} ,尚未订阅公众号,无法推送消息 <<<<<<<<<<<");
//发送短信
} else {
String openId = officialAccountSubscribeRecord.getOpenid();
SupplierItem supplierItem = supplierItemDao.findById(itemId);
String itemName = supplierItem.getName();
String content = "您的出价被超越";
ConsignSaleSubscribeMsg consignSaleSubscribeMsg = ConsignSaleSubscribeMsg.of(itemName.substring(0,10), content, new Date());
consignSaleSubscribeMsg.setPageTitle("拍卖出价被超越");
officialAccountApi.sendModelMsg(openId, consignSaleSubscribeMsg);
}*/
}
}
//插入最新出价记录
//插入最新出价记录
AuctionRecord
addRecord
=
new
AuctionRecord
();
AuctionRecord
addRecord
=
new
AuctionRecord
();
...
@@ -134,32 +164,48 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
...
@@ -134,32 +164,48 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
try
{
try
{
List
<
AuctionRecordVo
>
auctionRecordVos
=
new
ArrayList
<>();
List
<
AuctionRecordVo
>
auctionRecordVos
=
new
ArrayList
<>();
AuctionRecordVo
auctionRecordVo
=
new
AuctionRecordVo
();
AuctionRecordVo
auctionRecordVo
=
new
AuctionRecordVo
();
List
<
Long
>
items
=
auctionRecordDao
.
findItemsOfRecord
(
dto
.
getUserId
());
//查询4天内出价记录
if
(
CollectionUtils
.
isEmpty
(
items
))
{
Date
now
=
new
Date
();
Instant
instant
=
now
.
toInstant
().
minus
(
Duration
.
ofDays
(
4
));
Date
queryStartTime
=
Date
.
from
(
instant
);
List
<
AuctionRecord
>
auctionRecords
=
auctionRecordDao
.
findRecordByUserId
(
dto
.
getUserId
(),
queryStartTime
,
now
);
List
<
Long
>
itemIds
=
auctionRecords
.
stream
().
map
(
AuctionRecord:
:
getItemId
).
distinct
().
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
itemIds
))
{
return
Result
.
success
();
return
Result
.
success
();
}
}
items
.
forEach
(
item
->
{
itemIds
.
forEach
(
itemId
->
{
List
<
AuctionRecord
>
auctionRecordList
=
auctionRecordDao
.
findByPage
(
dto
);
//查询商品信息
SupplierItem
supplierItem
=
supplierItemDao
.
findById
(
itemId
);
auctionRecordVo
.
setItemId
(
itemId
);
auctionRecordVo
.
setItemName
(
supplierItem
.
getName
());
auctionRecordVo
.
setHomePageImage
(
MediaUtil
.
getHomePageImage
(
supplierItem
.
getImages
(),
supplierItem
.
getVideos
()));
List
<
AuctionRecord
>
auctionRecordList
=
auctionRecordDao
.
findByItemId
(
itemId
);
//查询商品竞拍信息
//查询商品竞拍信息
AuctionConfig
auctionConfig
=
auctionConfigDao
.
findByItemId
(
dto
.
getItemId
());
AuctionConfig
auctionConfig
=
auctionConfigDao
.
findByItemId
(
dto
.
getItemId
());
//当前价
//最新出价记录
if
(
CollectionUtils
.
isEmpty
(
auctionRecordList
))
{
AuctionRecord
lastedRecord
=
auctionRecordList
.
get
(
0
);
auctionRecordVo
.
setCurrentPrice
(
PriceUtil
.
convertPriceFenToYuan
(
auctionConfig
.
getStartPrice
()));
}
else
{
AuctionRecord
lastedRecord
=
auctionRecordDao
.
findLastedRecord
(
dto
.
getItemId
());
auctionRecordVo
.
setCurrentPrice
(
PriceUtil
.
convertPriceFenToYuan
(
lastedRecord
.
getPrice
()));
auctionRecordVo
.
setCurrentPrice
(
PriceUtil
.
convertPriceFenToYuan
(
lastedRecord
.
getPrice
()));
if
(
lastedRecord
.
getUserId
().
longValue
()
==
dto
.
getUserId
().
longValue
())
{
auctionRecordVo
.
setIsLead
(
true
);
}
else
{
auctionRecordVo
.
setIsLead
(
false
);
}
}
//商品的总出价次数
auctionRecordVo
.
setTotalOfferNum
(
auctionRecordList
.
size
());
//用户自己的出价次数
long
userOfferNum
=
auctionRecordList
.
stream
().
filter
(
auctionRecord
->
auctionRecord
.
getUserId
().
longValue
()
==
dto
.
getUserId
()).
count
();
auctionRecordVo
.
setOfferNum
((
int
)
userOfferNum
);
AuctionRecord
selfRecord
=
auctionRecordList
.
stream
().
filter
(
auctionRecord
->
auctionRecord
.
getUserId
().
longValue
()
==
dto
.
getUserId
()).
findFirst
().
get
();
auctionRecordVo
.
setShareRecordId
(
selfRecord
.
getShareRecordId
());
auctionRecordVo
.
setAuctionRecordList
(
auctionRecordList
);
auctionRecordVo
.
setAuctionRecordList
(
auctionRecordList
);
auctionRecordVo
.
setStartPrice
(
PriceUtil
.
convertPriceFenToYuan
(
auctionConfig
.
getStartPrice
()));
auctionRecordVo
.
setStartPrice
(
PriceUtil
.
convertPriceFenToYuan
(
auctionConfig
.
getStartPrice
()));
Date
startTime
=
auctionConfig
.
getStartTime
();
Date
startTime
=
auctionConfig
.
getStartTime
();
Date
realEndTime
=
auctionConfig
.
getRealEndTime
();
Date
realEndTime
=
auctionConfig
.
getRealEndTime
();
auctionRecordVo
.
setStartTime
(
startTime
);
auctionRecordVo
.
setStartTime
(
startTime
);
auctionRecordVo
.
setRealEndTime
(
realEndTime
);
auctionRecordVo
.
setRealEndTime
(
realEndTime
);
Date
now
=
new
Date
();
if
(
now
.
after
(
realEndTime
))
{
if
(
now
.
before
(
startTime
))
{
auctionRecordVo
.
setState
(
DistributionEnum
.
AuctionStateEnum
.
NOT_START
.
getCode
());
auctionRecordVo
.
setStateName
(
DistributionEnum
.
AuctionStateEnum
.
NOT_START
.
getDes
());
}
else
if
(
now
.
after
(
realEndTime
))
{
auctionRecordVo
.
setState
(
DistributionEnum
.
AuctionStateEnum
.
END
.
getCode
());
auctionRecordVo
.
setState
(
DistributionEnum
.
AuctionStateEnum
.
END
.
getCode
());
auctionRecordVo
.
setStateName
(
DistributionEnum
.
AuctionStateEnum
.
END
.
getDes
());
auctionRecordVo
.
setStateName
(
DistributionEnum
.
AuctionStateEnum
.
END
.
getDes
());
}
else
{
}
else
{
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/DistributionOrderServiceImpl.java
View file @
e0fbd40a
This diff is collapsed.
Click to expand it.
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/distribution/SendMsgServiceImpl.java
View file @
e0fbd40a
...
@@ -116,6 +116,12 @@ public class SendMsgServiceImpl implements SendMsgService {
...
@@ -116,6 +116,12 @@ public class SendMsgServiceImpl implements SendMsgService {
return
Result
.
success
();
return
Result
.
success
();
}
}
@Override
public
Result
sendAuctionOfferOutMsg
(
String
openId
,
SignedNoticeMsg
signedNoticeMsg
)
{
return
null
;
}
@Override
@Override
public
Result
sendSignedTempletMsg
(
String
openId
,
SignedNoticeMsg
signedNoticeMsg
)
{
public
Result
sendSignedTempletMsg
(
String
openId
,
SignedNoticeMsg
signedNoticeMsg
)
{
String
token
=
officialAccountApi
.
getAccessToken
();
String
token
=
officialAccountApi
.
getAccessToken
();
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/job/AutoCreateAuctionOrderJob.java
0 → 100644
View file @
e0fbd40a
package
com.wwdz.ch.wx.job
;
import
com.github.pagehelper.PageInfo
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.db.dao.ItemDao
;
import
com.wwdz.ch.db.dao.SynDataRecordDao
;
import
com.wwdz.ch.db.dao.distribution.AuctionConfigDao
;
import
com.wwdz.ch.db.dao.distribution.AuctionRecordDao
;
import
com.wwdz.ch.db.dao.distribution.DistributionOrderDao
;
import
com.wwdz.ch.db.domain.Item
;
import
com.wwdz.ch.db.domain.SynDataRecord
;
import
com.wwdz.ch.db.domain.distribution.AuctionConfig
;
import
com.wwdz.ch.db.domain.distribution.AuctionRecord
;
import
com.wwdz.ch.db.domain.distribution.DistributionOrder
;
import
com.wwdz.ch.db.dto.request.CoinRequestDto
;
import
com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto
;
import
com.wwdz.ch.db.es.ItemEsDao
;
import
com.wwdz.ch.wx.service.distribution.DistributionOrderService
;
import
com.xxdxxs.utils.DateUtils
;
import
com.xxdxxs.utils.StringUtils
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.stream.IntStream
;
/**
* 拍卖结束自动创建订单
*/
@Component
public
class
AutoCreateAuctionOrderJob
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
AutoCreateAuctionOrderJob
.
class
);
private
final
static
String
AUTO_CREATE_AUCTION_ORDER_KEY
=
"CREATE_AUCTION_ORDER_KEY"
;
@Autowired
DistributionOrderService
distributionOrderService
;
@Autowired
DistributionOrderDao
distributionOrderDao
;
@Autowired
RedissonClient
redissonClient
;
@Autowired
AuctionConfigDao
auctionConfigDao
;
@Autowired
AuctionRecordDao
auctionRecordDao
;
/**
* 隔2分钟运行一次
*/
@Scheduled
(
fixedDelay
=
1000
*
60
*
5
)
public
void
execute
()
{
RLock
lock
=
redissonClient
.
getLock
(
AUTO_CREATE_AUCTION_ORDER_KEY
);
if
(!
lock
.
tryLock
())
{
logger
.
warn
(
"自动生成拍卖订单任务,当前服务实例获取锁成功: {} 获取锁失败,锁被占用不执行"
,
Thread
.
currentThread
().
getId
());
return
;
}
logger
.
info
(
">>>>>>>>>>>>>>>>>>>>>>> 检测截拍的商品,自动创建订单, 开始执行 <<<<<<<<<<<<<<<<<<<<<"
);
try
{
//查询过期未截拍的商品记录
List
<
AuctionConfig
>
timeOutNotValidList
=
auctionConfigDao
.
findTimeOutNotValidList
();
timeOutNotValidList
.
forEach
(
auctionConfig
->
{
//修改为已截拍
auctionConfigDao
.
setEnd
(
auctionConfig
.
getItemId
());
logger
.
info
(
"============== 拍卖 商品id:{}, 超过截拍时间,系统自动修改为截拍状态 =============="
,
auctionConfig
.
getItemId
());
});
//查询一小时内拍卖截拍的商品
List
<
AuctionConfig
>
auctionConfigList
=
auctionConfigDao
.
findEndList
();
auctionConfigList
.
forEach
(
auctionConfig
->
{
long
itemId
=
auctionConfig
.
getItemId
();
//查询该商品是否有出价记录
AuctionRecord
auctionRecord
=
auctionRecordDao
.
findLastedRecord
(
itemId
);
if
(
auctionRecord
!=
null
&&
auctionRecord
.
getPrice
()
!=
null
)
{
//有出价记录的商品,再去检查有无生成过订单
DistributionOrder
distributionOrder
=
distributionOrderDao
.
findByItemId
(
itemId
);
//如果还没生成过订单,则系统自动生成订单
if
(
distributionOrder
==
null
||
StringUtils
.
isEmpty
(
distributionOrder
.
getDistributionOrderId
()))
{
DistributionOrderRequestDto
distributionOrderRequestDto
=
new
DistributionOrderRequestDto
();
distributionOrderRequestDto
.
setItemId
(
itemId
);
Result
result
=
distributionOrderService
.
createAuctionOrder
(
distributionOrderRequestDto
);
if
(
result
.
getSuccess
())
{
logger
.
info
(
"============== 拍卖 商品id:{}, 自动生成订单成功 =============="
,
itemId
);
}
else
{
logger
.
info
(
"============== ERROR 拍卖 商品id:{}, 自动生成订单失败 ERROR =============="
,
itemId
);
}
}
}
});
}
catch
(
Exception
e
)
{
logger
.
error
(
"同步item增量数据到ES error {}"
,
e
);
}
finally
{
if
(
lock
!=
null
&&
lock
.
isHeldByCurrentThread
())
{
lock
.
unlock
();
logger
.
info
(
"======================== 线程id: {} , 检测截拍的商品,自动创建订单执行结束, 释放锁成功 ========================"
,
Thread
.
currentThread
().
getId
());
}
}
}
}
ch-wx-api/src/main/java/com/wwdz/ch/wx/service/distribution/SendMsgService.java
View file @
e0fbd40a
...
@@ -14,5 +14,13 @@ public interface SendMsgService {
...
@@ -14,5 +14,13 @@ public interface SendMsgService {
Result
sendSignedTempletMsg
(
String
openId
,
SignedNoticeMsg
signedNoticeMsg
);
Result
sendSignedTempletMsg
(
String
openId
,
SignedNoticeMsg
signedNoticeMsg
);
/**
* 出价被超越通知用户
* @param openId
* @param signedNoticeMsg
* @return
*/
Result
sendAuctionOfferOutMsg
(
String
openId
,
SignedNoticeMsg
signedNoticeMsg
);
String
getOpenIdByUserId
(
long
userId
);
String
getOpenIdByUserId
(
long
userId
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment