Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gxpt_ht
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
pseer
gxpt_ht
Commits
bb0d8d54
Commit
bb0d8d54
authored
Jul 02, 2024
by
吕明尚
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加会员进度日志,增加充值回调
parent
4faf9dd2
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
998 additions
and
102 deletions
+998
-102
MemberProgressLogController.java
...re/web/controller/system/MemberProgressLogController.java
+91
-0
MemberTypeEnum.java
...mmon/src/main/java/share/common/enums/MemberTypeEnum.java
+38
-0
YesNoEnum.java
share-common/src/main/java/share/common/enums/YesNoEnum.java
+2
-2
RechargeController.java
.../java/share/web/controller/system/RechargeController.java
+23
-0
MemberProgressLog.java
.../src/main/java/share/system/domain/MemberProgressLog.java
+89
-0
RechargeConf.java
...ystem/src/main/java/share/system/domain/RechargeConf.java
+6
-0
MemberProgressLogMapper.java
...ain/java/share/system/mapper/MemberProgressLogMapper.java
+62
-0
RechargeMapper.java
...tem/src/main/java/share/system/mapper/RechargeMapper.java
+2
-0
CreateRechargeRequest.java
...main/java/share/system/request/CreateRechargeRequest.java
+23
-0
RechargePayResultResponse.java
...java/share/system/response/RechargePayResultResponse.java
+31
-0
ConsumerWalletService.java
...main/java/share/system/service/ConsumerWalletService.java
+2
-0
MemberProgressLogService.java
...n/java/share/system/service/MemberProgressLogService.java
+62
-0
OrderPayService.java
...m/src/main/java/share/system/service/OrderPayService.java
+3
-1
RechargeService.java
...m/src/main/java/share/system/service/RechargeService.java
+8
-0
CallbackServiceImpl.java
...n/java/share/system/service/impl/CallbackServiceImpl.java
+79
-0
ConsumerWalletServiceImpl.java
.../share/system/service/impl/ConsumerWalletServiceImpl.java
+38
-4
MemberProgressLogServiceImpl.java
...are/system/service/impl/MemberProgressLogServiceImpl.java
+91
-0
OrderPayServiceImpl.java
...n/java/share/system/service/impl/OrderPayServiceImpl.java
+93
-88
QPServiceImpl.java
...rc/main/java/share/system/service/impl/QPServiceImpl.java
+12
-4
RechargeServiceImpl.java
...n/java/share/system/service/impl/RechargeServiceImpl.java
+101
-2
TiktokServiceImpl.java
...ain/java/share/system/service/impl/TiktokServiceImpl.java
+10
-1
MemberProgressLogMapper.xml
.../main/resources/mapper/system/MemberProgressLogMapper.xml
+116
-0
RechargeConfMapper.xml
...m/src/main/resources/mapper/system/RechargeConfMapper.xml
+12
-0
RechargeMapper.xml
...ystem/src/main/resources/mapper/system/RechargeMapper.xml
+4
-0
No files found.
share-admin/src/main/java/share/web/controller/system/MemberProgressLogController.java
0 → 100644
View file @
bb0d8d54
package
share
.
web
.
controller
.
system
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.*
;
import
share.common.annotation.Log
;
import
share.common.core.controller.BaseController
;
import
share.common.core.domain.AjaxResult
;
import
share.common.core.page.TableDataInfo
;
import
share.common.enums.BusinessType
;
import
share.common.utils.poi.ExcelUtil
;
import
share.system.domain.MemberProgressLog
;
import
share.system.service.MemberProgressLogService
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
/**
* 会员进度日志Controller
*
* @author wuwenlong
* @date 2024-07-02
*/
@RestController
@RequestMapping
(
"/system/memberProgressLog"
)
public
class
MemberProgressLogController
extends
BaseController
{
@Autowired
private
MemberProgressLogService
memberProgressLogService
;
/**
* 查询会员进度日志列表
*/
@PreAuthorize
(
"@ss.hasPermi('system:memberProgressLog:list')"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
MemberProgressLog
memberProgressLog
)
{
startPage
();
List
<
MemberProgressLog
>
list
=
memberProgressLogService
.
selectMemberProgressLogList
(
memberProgressLog
);
return
getDataTable
(
list
);
}
/**
* 导出会员进度日志列表
*/
@PreAuthorize
(
"@ss.hasPermi('system:memberProgressLog:export')"
)
@Log
(
title
=
"会员进度日志"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"/export"
)
public
void
export
(
HttpServletResponse
response
,
MemberProgressLog
memberProgressLog
)
{
List
<
MemberProgressLog
>
list
=
memberProgressLogService
.
selectMemberProgressLogList
(
memberProgressLog
);
ExcelUtil
<
MemberProgressLog
>
util
=
new
ExcelUtil
<
MemberProgressLog
>(
MemberProgressLog
.
class
);
util
.
exportExcel
(
response
,
list
,
"会员进度日志数据"
);
}
/**
* 获取会员进度日志详细信息
*/
@PreAuthorize
(
"@ss.hasPermi('system:memberProgressLog:query')"
)
@GetMapping
(
value
=
"/{id}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
{
return
success
(
memberProgressLogService
.
selectMemberProgressLogById
(
id
));
}
/**
* 新增会员进度日志
*/
@PreAuthorize
(
"@ss.hasPermi('system:memberProgressLog:add')"
)
@Log
(
title
=
"会员进度日志"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
public
AjaxResult
add
(
@RequestBody
MemberProgressLog
memberProgressLog
)
{
return
toAjax
(
memberProgressLogService
.
insertMemberProgressLog
(
memberProgressLog
));
}
/**
* 修改会员进度日志
*/
@PreAuthorize
(
"@ss.hasPermi('system:memberProgressLog:edit')"
)
@Log
(
title
=
"会员进度日志"
,
businessType
=
BusinessType
.
UPDATE
)
@PutMapping
public
AjaxResult
edit
(
@RequestBody
MemberProgressLog
memberProgressLog
)
{
return
toAjax
(
memberProgressLogService
.
updateMemberProgressLog
(
memberProgressLog
));
}
/**
* 删除会员进度日志
*/
@PreAuthorize
(
"@ss.hasPermi('system:memberProgressLog:remove')"
)
@Log
(
title
=
"会员进度日志"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{ids}"
)
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
{
return
toAjax
(
memberProgressLogService
.
deleteMemberProgressLogByIds
(
ids
));
}
}
share-common/src/main/java/share/common/enums/MemberTypeEnum.java
0 → 100644
View file @
bb0d8d54
package
share
.
common
.
enums
;
public
enum
MemberTypeEnum
{
//普通会员
NORMAL
(
0L
,
"普通会员"
),
//充值会员
RECHARGE
(
1L
,
"充值会员"
),
//权益会员
RIGHTS
(
2L
,
"权益会员"
),
;
private
Long
index
;
private
String
name
;
MemberTypeEnum
()
{
}
MemberTypeEnum
(
Long
index
,
String
name
)
{
this
.
index
=
index
;
this
.
name
=
name
;
}
public
Long
getIndex
()
{
return
index
;
}
public
void
setIndex
(
Long
index
)
{
this
.
index
=
index
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
}
share-common/src/main/java/share/common/enums/YesNoEnum.java
View file @
bb0d8d54
...
...
@@ -8,8 +8,8 @@ import com.alibaba.fastjson.JSONArray;
import
com.alibaba.fastjson.JSONObject
;
public
enum
YesNoEnum
{
yes
(
1
,
true
,
"是"
,
"激活"
,
"正常"
,
"Y"
,
"续费"
,
""
,
""
,
""
,
""
),
no
(
0
,
false
,
"否"
,
"冻结"
,
"异常"
,
"N"
,
"预定"
,
""
,
""
,
""
,
""
);
yes
(
1
,
true
,
"是"
,
"激活"
,
"正常"
,
"Y"
,
"续费"
,
"
增加
"
,
""
,
""
,
""
),
no
(
0
,
false
,
"否"
,
"冻结"
,
"异常"
,
"N"
,
"预定"
,
"
减少
"
,
""
,
""
,
""
);
private
Integer
index
;
...
...
share-front/src/main/java/share/web/controller/system/RechargeController.java
View file @
bb0d8d54
package
share
.
web
.
controller
.
system
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
share.common.annotation.Log
;
import
share.common.core.controller.BaseController
;
import
share.common.core.domain.AjaxResult
;
import
share.common.core.domain.R
;
import
share.common.core.page.TableDataInfo
;
import
share.common.core.redis.RedisUtil
;
import
share.common.enums.BusinessType
;
import
share.common.utils.JsonConvertUtil
;
import
share.common.utils.poi.ExcelUtil
;
import
share.system.domain.Recharge
;
import
share.system.request.CreateRechargeRequest
;
import
share.system.response.RechargePayResultResponse
;
import
share.system.service.RechargeService
;
import
javax.servlet.http.HttpServletResponse
;
...
...
@@ -20,11 +27,14 @@ import java.util.List;
* @author wuwenlong
* @date 2024-06-24
*/
@Slf4j
@RestController
@RequestMapping
(
"/recharge"
)
public
class
RechargeController
extends
BaseController
{
@Autowired
private
RechargeService
rechargeService
;
@Autowired
private
RedisUtil
redisUtil
;
/**
* 查询充值记录列表
...
...
@@ -81,4 +91,17 @@ public class RechargeController extends BaseController {
public
AjaxResult
remove
(
@PathVariable
Long
[]
ids
)
{
return
toAjax
(
rechargeService
.
deleteRechargeByIds
(
ids
));
}
//
@PostMapping
(
"/recharge"
)
public
R
<
RechargePayResultResponse
>
createOrder
(
@RequestBody
@Validated
CreateRechargeRequest
request
)
{
if
(
"1"
.
equals
(
redisUtil
.
frontInOutLogSwitch
()))
{
log
.
info
(
"SOrderController method preOrder 入参 {}"
,
JsonConvertUtil
.
write2JsonStr
(
request
));
}
RechargePayResultResponse
response
=
rechargeService
.
createRecharge
(
request
);
if
(
"1"
.
equals
(
redisUtil
.
frontInOutLogSwitch
()))
{
log
.
info
(
"SOrderController method preOrder 出参 {}"
,
JsonConvertUtil
.
write2JsonStr
(
response
));
}
return
R
.
ok
(
response
);
}
}
share-system/src/main/java/share/system/domain/MemberProgressLog.java
0 → 100644
View file @
bb0d8d54
package
share
.
system
.
domain
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableLogic
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
share.common.annotation.Excel
;
import
share.common.core.domain.BaseEntity
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* 会员进度日志对象 s_member_progress_log
*
* @author wuwenlong
* @date 2024-07-02
*/
@Data
@TableName
(
value
=
"s_member_progress_log"
)
public
class
MemberProgressLog
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* ID
*/
private
Long
id
;
/**
* 用户id
*/
@Excel
(
name
=
"用户id"
)
private
Long
consumerId
;
/**
* 变动进度
*/
@Excel
(
name
=
"变动进度"
)
private
BigDecimal
variableProgress
;
/**
* 当前进度
*/
@Excel
(
name
=
"当前进度"
)
private
BigDecimal
currentProgress
;
/**
* 操作类型
*/
@Excel
(
name
=
"操作类型"
)
private
Integer
operationType
;
/**
* 操作时间
*/
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"操作时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd"
)
private
Date
operationTime
;
/**
* 是否删除
*/
//逻辑删除注解(0 未删除 1 已删除)
@TableLogic
@TableField
(
select
=
false
)
private
Long
isDelete
;
@Override
public
String
toString
()
{
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
.
append
(
"id"
,
getId
())
.
append
(
"consumerId"
,
getConsumerId
())
.
append
(
"variableProgress"
,
getVariableProgress
())
.
append
(
"currentProgress"
,
getCurrentProgress
())
.
append
(
"operationType"
,
getOperationType
())
.
append
(
"operationTime"
,
getOperationTime
())
.
append
(
"isDelete"
,
getIsDelete
())
.
append
(
"createBy"
,
getCreateBy
())
.
append
(
"createTime"
,
getCreateTime
())
.
append
(
"updateBy"
,
getUpdateBy
())
.
append
(
"updateTime"
,
getUpdateTime
())
.
append
(
"remark"
,
getRemark
())
.
toString
();
}
}
share-system/src/main/java/share/system/domain/RechargeConf.java
View file @
bb0d8d54
...
...
@@ -49,6 +49,12 @@ public class RechargeConf extends BaseEntity {
@Excel
(
name
=
"充值满送金额"
)
private
BigDecimal
giveAmount
;
@Excel
(
name
=
"积分赠送比例"
)
private
BigDecimal
giveRatio
;
@Excel
(
name
=
"充值赠送时长"
)
private
BigDecimal
giveDuration
;
/**
* 启用禁用:1-启用,0-禁用
*/
...
...
share-system/src/main/java/share/system/mapper/MemberProgressLogMapper.java
0 → 100644
View file @
bb0d8d54
package
share
.
system
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
share.system.domain.MemberProgressLog
;
import
java.util.List
;
/**
* 会员进度日志Mapper接口
*
* @author wuwenlong
* @date 2024-07-02
*/
public
interface
MemberProgressLogMapper
extends
BaseMapper
<
MemberProgressLog
>
{
/**
* 查询会员进度日志
*
* @param id 会员进度日志主键
* @return 会员进度日志
*/
public
MemberProgressLog
selectMemberProgressLogById
(
Long
id
);
/**
* 查询会员进度日志列表
*
* @param memberProgressLog 会员进度日志
* @return 会员进度日志集合
*/
public
List
<
MemberProgressLog
>
selectMemberProgressLogList
(
MemberProgressLog
memberProgressLog
);
/**
* 新增会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
public
int
insertMemberProgressLog
(
MemberProgressLog
memberProgressLog
);
/**
* 修改会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
public
int
updateMemberProgressLog
(
MemberProgressLog
memberProgressLog
);
/**
* 删除会员进度日志
*
* @param id 会员进度日志主键
* @return 结果
*/
public
int
deleteMemberProgressLogById
(
Long
id
);
/**
* 批量删除会员进度日志
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public
int
deleteMemberProgressLogByIds
(
Long
[]
ids
);
}
share-system/src/main/java/share/system/mapper/RechargeMapper.java
View file @
bb0d8d54
...
...
@@ -59,4 +59,6 @@ public interface RechargeMapper extends BaseMapper<Recharge> {
* @return 结果
*/
public
int
deleteRechargeByIds
(
Long
[]
ids
);
Recharge
getInfoByEntity
(
Recharge
rechargeParam
);
}
share-system/src/main/java/share/system/request/CreateRechargeRequest.java
0 → 100644
View file @
bb0d8d54
package
share
.
system
.
request
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"CreateRechargeRequest对象"
,
description
=
"下单请求对象"
)
public
class
CreateRechargeRequest
{
@ApiModelProperty
(
value
=
"支付类型(1:微信,2:支付宝)"
,
required
=
true
)
@NotNull
(
message
=
"支付类型不能为空"
)
private
Integer
payType
;
@ApiModelProperty
(
value
=
"充值配置表id"
)
@NotNull
(
message
=
"充值配置表id"
)
private
Long
rechargeConfId
;
}
share-system/src/main/java/share/system/response/RechargePayResultResponse.java
0 → 100644
View file @
bb0d8d54
package
share
.
system
.
response
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
share.system.domain.vo.WxPayJsResultVo
;
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"RechargePayResultResponse对象"
,
description
=
"订单支付结果响应对象"
)
public
class
RechargePayResultResponse
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"支付状态"
)
private
Boolean
status
;
@ApiModelProperty
(
value
=
"微信调起支付参数对象"
)
private
WxPayJsResultVo
jsConfig
;
@ApiModelProperty
(
value
=
"支付类型"
)
private
String
payType
;
@ApiModelProperty
(
value
=
"订单编号"
)
private
String
rechargeNo
;
@ApiModelProperty
(
value
=
"微信支付回调的url"
)
private
String
notifyUrl
;
}
share-system/src/main/java/share/system/service/ConsumerWalletService.java
View file @
bb0d8d54
...
...
@@ -62,4 +62,6 @@ public interface ConsumerWalletService extends IService<ConsumerWallet> {
public
int
deleteConsumerWalletById
(
Long
id
);
ConsumerWalletVo
selectByConsumerId
();
boolean
addConsumerWallet
(
ConsumerWallet
consumerWallet
);
}
share-system/src/main/java/share/system/service/MemberProgressLogService.java
0 → 100644
View file @
bb0d8d54
package
share
.
system
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
share.system.domain.MemberProgressLog
;
import
java.util.List
;
/**
* 会员进度日志Service接口
*
* @author wuwenlong
* @date 2024-07-02
*/
public
interface
MemberProgressLogService
extends
IService
<
MemberProgressLog
>
{
/**
* 查询会员进度日志
*
* @param id 会员进度日志主键
* @return 会员进度日志
*/
public
MemberProgressLog
selectMemberProgressLogById
(
Long
id
);
/**
* 查询会员进度日志列表
*
* @param memberProgressLog 会员进度日志
* @return 会员进度日志集合
*/
public
List
<
MemberProgressLog
>
selectMemberProgressLogList
(
MemberProgressLog
memberProgressLog
);
/**
* 新增会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
public
int
insertMemberProgressLog
(
MemberProgressLog
memberProgressLog
);
/**
* 修改会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
public
int
updateMemberProgressLog
(
MemberProgressLog
memberProgressLog
);
/**
* 批量删除会员进度日志
*
* @param ids 需要删除的会员进度日志主键集合
* @return 结果
*/
public
int
deleteMemberProgressLogByIds
(
Long
[]
ids
);
/**
* 删除会员进度日志信息
*
* @param id 会员进度日志主键
* @return 结果
*/
public
int
deleteMemberProgressLogById
(
Long
id
);
}
share-system/src/main/java/share/system/service/OrderPayService.java
View file @
bb0d8d54
package
share
.
system
.
service
;
import
share.system.domain.Recharge
;
import
share.system.domain.SOrder
;
import
share.system.response.OrderPayResultResponse
;
import
share.system.response.RechargePayResultResponse
;
/**
* @Author wwl
...
...
@@ -28,6 +30,6 @@ public interface OrderPayService {
* @param recharge 支付参数
* @return OrderPayResultResponse
*/
//
RechargePayResultResponse saobeiRechargePayment(Recharge recharge);
RechargePayResultResponse
saobeiRechargePayment
(
Recharge
recharge
);
}
share-system/src/main/java/share/system/service/RechargeService.java
View file @
bb0d8d54
...
...
@@ -2,6 +2,8 @@ package share.system.service;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
share.system.domain.Recharge
;
import
share.system.request.CreateRechargeRequest
;
import
share.system.response.RechargePayResultResponse
;
import
java.util.List
;
...
...
@@ -59,4 +61,10 @@ public interface RechargeService extends IService<Recharge> {
* @return 结果
*/
public
int
deleteRechargeById
(
Long
id
);
RechargePayResultResponse
createRecharge
(
CreateRechargeRequest
request
);
Recharge
getInfoByEntity
(
Recharge
rechargeParam
);
void
paymentSuccessful
(
Recharge
recharge
);
}
share-system/src/main/java/share/system/service/impl/CallbackServiceImpl.java
View file @
bb0d8d54
...
...
@@ -63,9 +63,13 @@ public class CallbackServiceImpl implements CallbackService {
@Autowired
private
ISConsumptionRecordsService
sConsumptionRecordsService
;
@Autowired
private
SaobeiApiLogService
saobeiApiLogService
;
@Autowired
private
RechargeService
rechargeService
;
/**
* 微信支付回调
*/
...
...
@@ -374,6 +378,81 @@ public class CallbackServiceImpl implements CallbackService {
}
break
;
case
RECHARGE:
Recharge
rechargeParam
=
new
Recharge
();
rechargeParam
.
setOutTradeNo
(
param
.
getTerminal_trace
());
rechargeParam
.
setConsumerId
(
attachVo
.
getUserId
());
Recharge
recharge
=
rechargeService
.
getInfoByEntity
(
rechargeParam
);
if
(
ObjectUtil
.
isNull
(
recharge
))
{
logger
.
error
(
"saobei wechat pay error : 订单信息不存在==》"
+
param
.
getTerminal_trace
());
responseVo
.
setReturn_code
(
SaobeiStatusEnum
.
FAIL
.
getCode
());
responseVo
.
setReturn_msg
(
"订单信息不存在!"
);
// 保存api日志
saobeiApiLog
.
setResponseParams
(
JSONUtil
.
toJsonStr
(
responseVo
));
saobeiApiLog
.
setResult
(
responseVo
.
getReturn_code
());
saobeiApiLog
.
setResultMsg
(
responseVo
.
getReturn_msg
());
saobeiApiLog
.
setOutTradeNo
(
param
.
getOut_trade_no
());
saobeiApiLogService
.
insertSaobeiApiLog
(
saobeiApiLog
);
return
responseVo
;
}
if
(
YesNoEnum
.
yes
.
getIndex
().
equals
(
recharge
.
getStatus
()))
{
logger
.
error
(
"saobei wechat pay error : 订单已处理==》"
+
param
.
getTerminal_trace
());
responseVo
.
setReturn_code
(
SaobeiStatusEnum
.
SUCCESS
.
getCode
());
responseVo
.
setReturn_msg
(
"success"
);
// 保存api日志
saobeiApiLog
.
setResponseParams
(
JSONUtil
.
toJsonStr
(
responseVo
));
saobeiApiLog
.
setResult
(
responseVo
.
getReturn_code
());
saobeiApiLog
.
setResultMsg
(
responseVo
.
getReturn_msg
());
saobeiApiLog
.
setOutTradeNo
(
param
.
getOut_trade_no
());
saobeiApiLogService
.
insertSaobeiApiLog
(
saobeiApiLog
);
return
responseVo
;
}
WechatPayInfo
wechatInfo
=
wechatPayInfoService
.
getByNo
(
recharge
.
getOutTradeNo
());
if
(
ObjectUtil
.
isNull
(
wechatInfo
))
{
logger
.
error
(
"saobei wechat pay error : 微信订单信息不存在==》"
+
param
.
getTerminal_trace
());
responseVo
.
setReturn_code
(
SaobeiStatusEnum
.
FAIL
.
getCode
());
responseVo
.
setReturn_msg
(
"微信订单信息不存在!"
);
// 保存api日志
saobeiApiLog
.
setResponseParams
(
JSONUtil
.
toJsonStr
(
responseVo
));
saobeiApiLog
.
setResult
(
responseVo
.
getReturn_code
());
saobeiApiLog
.
setResultMsg
(
responseVo
.
getReturn_msg
());
saobeiApiLog
.
setOutTradeNo
(
param
.
getOut_trade_no
());
saobeiApiLogService
.
insertSaobeiApiLog
(
saobeiApiLog
);
return
responseVo
;
}
// wechatPayInfo.setIsSubscribe(param.getIsSubscribe());
wechatInfo
.
setBankType
(
param
.
getBank_type
());
wechatInfo
.
setCashFee
(
Integer
.
valueOf
(
param
.
getTotal_fee
()));
// wechatPayInfo.setTransactionId(param.getOut_trade_no());
wechatInfo
.
setTimeEnd
(
param
.
getEnd_time
());
wechatInfo
.
setTimeExpire
(
param
.
getEnd_time
());
Boolean
aFalse
=
Boolean
.
FALSE
;
try
{
recharge
.
setStatus
(
YesNoEnum
.
yes
.
getIndex
());
recharge
.
setPayTime
(
DateUtils
.
getNowDate
());
rechargeService
.
paymentSuccessful
(
recharge
);
wechatInfo
.
setTradeState
(
"1"
);
wechatInfo
.
setTradeStateDesc
(
"支付成功"
);
wechatPayInfoService
.
updateById
(
wechatInfo
);
aFalse
=
Boolean
.
TRUE
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"微信支付回调出错"
);
logger
.
error
(
e
.
toString
());
}
if
(!
aFalse
)
{
logger
.
error
(
"saobei wechat pay error : 订单更新失败==》"
+
param
.
getTerminal_trace
());
responseVo
.
setReturn_code
(
SaobeiStatusEnum
.
FAIL
.
getCode
());
responseVo
.
setReturn_msg
(
"订单更新失败!"
);
// 保存api日志
saobeiApiLog
.
setResponseParams
(
JSONUtil
.
toJsonStr
(
responseVo
));
saobeiApiLog
.
setResult
(
responseVo
.
getReturn_code
());
saobeiApiLog
.
setResultMsg
(
responseVo
.
getReturn_msg
());
saobeiApiLog
.
setOutTradeNo
(
param
.
getOut_trade_no
());
saobeiApiLogService
.
insertSaobeiApiLog
(
saobeiApiLog
);
return
responseVo
;
}
break
;
default
:
logger
.
error
(
"wechat pay err : 未知的支付类型==》"
+
param
.
getTerminal_trace
());
...
...
share-system/src/main/java/share/system/service/impl/ConsumerWalletServiceImpl.java
View file @
bb0d8d54
...
...
@@ -3,14 +3,15 @@ package share.system.service.impl;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
share.common.enums.YesNoEnum
;
import
share.common.utils.DateUtils
;
import
share.system.domain.ConsumerWallet
;
import
share.system.domain.SConsumer
;
import
share.system.domain.*
;
import
share.system.domain.vo.ConsumerWalletVo
;
import
share.system.mapper.ConsumerWalletMapper
;
import
share.system.service.ConsumerWalletService
;
import
share.system.service.SConsumerService
;
import
share.system.service.*
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -26,6 +27,12 @@ public class ConsumerWalletServiceImpl extends ServiceImpl<ConsumerWalletMapper,
@Autowired
private
SConsumerService
sConsumerService
;
@Autowired
private
BalanceLogService
balanceLogService
;
@Autowired
private
DurationLogService
durationLogService
;
@Autowired
private
IntegralLogService
integralLogService
;
/**
* 查询会员钱包
...
...
@@ -102,4 +109,31 @@ public class ConsumerWalletServiceImpl extends ServiceImpl<ConsumerWalletMapper,
consumerWallet
.
setConsumerId
(
info
.
getId
());
return
consumerWalletMapper
.
selectByConsumerId
(
consumerWallet
);
}
@Override
public
boolean
addConsumerWallet
(
ConsumerWallet
consumerWallet
)
{
int
i
=
consumerWalletMapper
.
insertConsumerWallet
(
consumerWallet
);
BalanceLog
balanceLog
=
new
BalanceLog
();
balanceLog
.
setConsumerId
(
consumerWallet
.
getConsumerId
());
balanceLog
.
setCurrentBalance
(
new
BigDecimal
(
0
));
balanceLog
.
setVariableAmount
(
consumerWallet
.
getBalance
());
balanceLog
.
setOperationType
(
YesNoEnum
.
yes
.
getIndex
());
balanceLog
.
setOperationTime
(
new
Date
());
balanceLogService
.
save
(
balanceLog
);
DurationLog
durationLog
=
new
DurationLog
();
durationLog
.
setConsumerId
(
consumerWallet
.
getConsumerId
());
durationLog
.
setCurrentDuration
(
new
BigDecimal
(
0
));
durationLog
.
setVariableDuration
(
consumerWallet
.
getRemainingDuration
());
durationLog
.
setOperationTime
(
new
Date
());
durationLog
.
setOperationType
(
YesNoEnum
.
yes
.
getIndex
());
durationLogService
.
save
(
durationLog
);
IntegralLog
integralLog
=
new
IntegralLog
();
integralLog
.
setConsumerId
(
consumerWallet
.
getConsumerId
());
integralLog
.
setCurrentIntegral
(
new
BigDecimal
(
0
));
integralLog
.
setVariableIntegral
(
consumerWallet
.
getRemainingIntegral
());
integralLog
.
setOperationTime
(
new
Date
());
integralLog
.
setOperationType
(
YesNoEnum
.
yes
.
getIndex
());
integralLogService
.
save
(
integralLog
);
return
i
==
1
;
}
}
share-system/src/main/java/share/system/service/impl/MemberProgressLogServiceImpl.java
0 → 100644
View file @
bb0d8d54
package
share
.
system
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
share.common.utils.DateUtils
;
import
share.system.domain.MemberProgressLog
;
import
share.system.mapper.MemberProgressLogMapper
;
import
share.system.service.MemberProgressLogService
;
import
java.util.List
;
/**
* 会员进度日志Service业务层处理
*
* @author wuwenlong
* @date 2024-07-02
*/
@Service
public
class
MemberProgressLogServiceImpl
extends
ServiceImpl
<
MemberProgressLogMapper
,
MemberProgressLog
>
implements
MemberProgressLogService
{
@Autowired
private
MemberProgressLogMapper
memberProgressLogMapper
;
/**
* 查询会员进度日志
*
* @param id 会员进度日志主键
* @return 会员进度日志
*/
@Override
public
MemberProgressLog
selectMemberProgressLogById
(
Long
id
)
{
return
memberProgressLogMapper
.
selectMemberProgressLogById
(
id
);
}
/**
* 查询会员进度日志列表
*
* @param memberProgressLog 会员进度日志
* @return 会员进度日志
*/
@Override
public
List
<
MemberProgressLog
>
selectMemberProgressLogList
(
MemberProgressLog
memberProgressLog
)
{
return
memberProgressLogMapper
.
selectMemberProgressLogList
(
memberProgressLog
);
}
/**
* 新增会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
@Override
public
int
insertMemberProgressLog
(
MemberProgressLog
memberProgressLog
)
{
memberProgressLog
.
setCreateTime
(
DateUtils
.
getNowDate
());
return
memberProgressLogMapper
.
insertMemberProgressLog
(
memberProgressLog
);
}
/**
* 修改会员进度日志
*
* @param memberProgressLog 会员进度日志
* @return 结果
*/
@Override
public
int
updateMemberProgressLog
(
MemberProgressLog
memberProgressLog
)
{
memberProgressLog
.
setUpdateTime
(
DateUtils
.
getNowDate
());
return
memberProgressLogMapper
.
updateMemberProgressLog
(
memberProgressLog
);
}
/**
* 批量删除会员进度日志
*
* @param ids 需要删除的会员进度日志主键
* @return 结果
*/
@Override
public
int
deleteMemberProgressLogByIds
(
Long
[]
ids
)
{
return
memberProgressLogMapper
.
deleteMemberProgressLogByIds
(
ids
);
}
/**
* 删除会员进度日志信息
*
* @param id 会员进度日志主键
* @return 结果
*/
@Override
public
int
deleteMemberProgressLogById
(
Long
id
)
{
return
memberProgressLogMapper
.
deleteMemberProgressLogById
(
id
);
}
}
share-system/src/main/java/share/system/service/impl/OrderPayServiceImpl.java
View file @
bb0d8d54
...
...
@@ -20,10 +20,12 @@ import share.common.exception.base.BaseException;
import
share.common.utils.BaseUtil
;
import
share.common.utils.DateUtil
;
import
share.common.utils.JsonConvertUtil
;
import
share.system.domain.Recharge
;
import
share.system.domain.SConsumerToken
;
import
share.system.domain.SOrder
;
import
share.system.domain.vo.*
;
import
share.system.response.OrderPayResultResponse
;
import
share.system.response.RechargePayResultResponse
;
import
share.system.service.*
;
import
share.system.util.WxPayUtil
;
...
...
@@ -54,8 +56,8 @@ public class OrderPayServiceImpl implements OrderPayService {
@Autowired
private
SaobeiService
saobeiService
;
//
@Autowired
//
private RechargeService rechargeService;
@Autowired
private
RechargeService
rechargeService
;
/**
* 获取域名
...
...
@@ -231,92 +233,95 @@ public class OrderPayServiceImpl implements OrderPayService {
return
vo
;
}
// /**
// * 充值支付(扫呗-微信支付)
// * @param recharge 支付参数
// * @return
// */
// @Override
// public RechargePayResultResponse saobeiRechargePayment(Recharge recharge) {
// RechargePayResultResponse response = new RechargePayResultResponse();
// response.setRechargeNo(recharge.getRechargeNo());
// response.setPayType(PayTypeEnum.getEnumByCode(recharge.getPayType()).getValue());
// response.setStatus(YesNoEnum.no.getFlag());
// // 扫呗支付
// ConcurrentHashMap<String, String> unifiedorder = saobeiUnifiedRecharge(recharge);
// WxPayJsResultVo vo = new WxPayJsResultVo();
// vo.setAppId(unifiedorder.get("appId"));
// vo.setNonceStr(unifiedorder.get("nonceStr"));
// vo.setPackages(unifiedorder.get("package"));
// vo.setSignType(unifiedorder.get("signType"));
// vo.setTimeStamp(unifiedorder.get("timeStamp"));
// vo.setPaySign(unifiedorder.get("paySign"));
// // 更新商户订单号
// recharge.setOutTradeNo(unifiedorder.get("outTradeNo"));
// recharge.setTerminalTrace(unifiedorder.get("terminalTrace"));
// rechargeService.updateById(recharge);
// response.setJsConfig(vo);
// return response;
// }
/**
* 充值支付(扫呗-微信支付)
*
* @param recharge 支付参数
* @return
*/
@Override
public
RechargePayResultResponse
saobeiRechargePayment
(
Recharge
recharge
)
{
RechargePayResultResponse
response
=
new
RechargePayResultResponse
();
response
.
setRechargeNo
(
recharge
.
getRechargeNo
());
response
.
setPayType
(
PayTypeEnum
.
getEnumByCode
(
recharge
.
getPayType
()).
getValue
());
response
.
setStatus
(
YesNoEnum
.
no
.
getFlag
());
// 扫呗支付
ConcurrentHashMap
<
String
,
String
>
unifiedorder
=
saobeiUnifiedRecharge
(
recharge
);
WxPayJsResultVo
vo
=
new
WxPayJsResultVo
();
vo
.
setAppId
(
unifiedorder
.
get
(
"appId"
));
vo
.
setNonceStr
(
unifiedorder
.
get
(
"nonceStr"
));
vo
.
setPackages
(
unifiedorder
.
get
(
"package"
));
vo
.
setSignType
(
unifiedorder
.
get
(
"signType"
));
vo
.
setTimeStamp
(
unifiedorder
.
get
(
"timeStamp"
));
vo
.
setPaySign
(
unifiedorder
.
get
(
"paySign"
));
// 更新商户订单号
recharge
.
setOutTradeNo
(
unifiedorder
.
get
(
"outTradeNo"
));
recharge
.
setTerminalTrace
(
unifiedorder
.
get
(
"terminalTrace"
));
rechargeService
.
updateById
(
recharge
);
response
.
setJsConfig
(
vo
);
return
response
;
}
// /**
// * 预下单 (扫呗-微信)
// * @param recharge 充值对象
// * @return 预下单返回对象
// */
// private ConcurrentHashMap<String, String> saobeiUnifiedRecharge(Recharge recharge) {
// // 获取用户openId
// SConsumerToken userToken = consumerTokenService.getTokenByUserId(recharge.getConsumerId());
// if (ObjectUtil.isNull(userToken)) {
// throw new BaseException("该用户没有openId");
// }
// // 获取appid、mch_id
// // 微信签名key
// String appId = weChatConfig.getAppId();
// String mchId = weChatConfig.getMchId();
// String signKey = weChatConfig.getSignKey();
// // 获取扫呗微信预下单对象
// SaobeiMiniPayRequestVo unifiedorderVo = getSaobeiUnifiedRechargeVo(recharge, userToken.getToken(), appId, mchId, signKey);
// // 预下单(统一下单)
// SaobeiMiniPayResponse response = saobeiService.wechatMinipay(unifiedorderVo);
// logger.info("SaobeiMiniPayResponse :", JsonConvertUtil.write2JsonStr(response));
// // 组装前端预下单参数
// ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
// map.put("appId", response.getAppId());
// map.put("nonceStr", response.getNonceStr());
// map.put("package", response.getPackage_str());
// map.put("signType", response.getSignType());
// map.put("timeStamp", response.getTimeStamp());
// map.put("paySign", response.getPaySign());
// map.put("prepayTime", DateUtil.nowDateTimeStr());
// map.put("outTradeNo", response.getOut_trade_no());
// map.put("terminalTrace", unifiedorderVo.getTerminal_trace());
// return map;
// }
//
// /**
// * 获取预下单对象 (扫呗-微信)
// * 充值
// * @return 预下单对象
// */
// private SaobeiMiniPayRequestVo getSaobeiUnifiedRechargeVo(Recharge recharge, String openid, String appId, String mchId, String signKey) {
// AttachVo attachVo = new AttachVo(OrderTypeEnum.RECHARGE.getValue(), recharge.getConsumerId());
//
// SaobeiMiniPayRequestVo vo = new SaobeiMiniPayRequestVo();
// vo.setSub_appid(appId);
// vo.setMerchant_no(saobeiConfig.getMerchantNo());
// vo.setTerminal_id(saobeiConfig.getTerminalId());
// vo.setAttach(JSONObject.toJSONString(attachVo));
// vo.setTerminal_trace(BaseUtil.getOrderNo("WXNO"));
// vo.setTerminal_time(DateUtil.nowDate(Constants.DATE_TIME_FORMAT_NUM));
// vo.setOrder_body(StrUtil.concat(true,recharge.getRechargeAmount().toString(),"元充值!"));
// // 订单中使用的是BigDecimal,这里要转为Integer类型
// vo.setTotal_fee(String.valueOf(recharge.getRechargeAmount().multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue()));
// vo.setNotify_url(apiDomain + PayConstants.SAOBEI_PAY_NOTIFY_API_URI);
// vo.setTrade_type(PayConstants.WX_PAY_TRADE_TYPE_JS);
// vo.setOpen_id(openid);
// vo.setDevice_no("WEB");
// return vo;
// }
/**
* 预下单 (扫呗-微信)
*
* @param recharge 充值对象
* @return 预下单返回对象
*/
private
ConcurrentHashMap
<
String
,
String
>
saobeiUnifiedRecharge
(
Recharge
recharge
)
{
// 获取用户openId
SConsumerToken
userToken
=
consumerTokenService
.
getTokenByUserId
(
recharge
.
getConsumerId
());
if
(
ObjectUtil
.
isNull
(
userToken
))
{
throw
new
BaseException
(
"该用户没有openId"
);
}
// 获取appid、mch_id
// 微信签名key
String
appId
=
weChatConfig
.
getAppId
();
String
mchId
=
weChatConfig
.
getMchId
();
String
signKey
=
weChatConfig
.
getSignKey
();
// 获取扫呗微信预下单对象
SaobeiMiniPayRequestVo
unifiedorderVo
=
getSaobeiUnifiedRechargeVo
(
recharge
,
userToken
.
getToken
(),
appId
,
mchId
,
signKey
);
// 预下单(统一下单)
SaobeiMiniPayResponse
response
=
saobeiService
.
wechatMinipay
(
unifiedorderVo
);
logger
.
info
(
"SaobeiMiniPayResponse :"
,
JsonConvertUtil
.
write2JsonStr
(
response
));
// 组装前端预下单参数
ConcurrentHashMap
<
String
,
String
>
map
=
new
ConcurrentHashMap
<>();
map
.
put
(
"appId"
,
response
.
getAppId
());
map
.
put
(
"nonceStr"
,
response
.
getNonceStr
());
map
.
put
(
"package"
,
response
.
getPackage_str
());
map
.
put
(
"signType"
,
response
.
getSignType
());
map
.
put
(
"timeStamp"
,
response
.
getTimeStamp
());
map
.
put
(
"paySign"
,
response
.
getPaySign
());
map
.
put
(
"prepayTime"
,
DateUtil
.
nowDateTimeStr
());
map
.
put
(
"outTradeNo"
,
response
.
getOut_trade_no
());
map
.
put
(
"terminalTrace"
,
unifiedorderVo
.
getTerminal_trace
());
return
map
;
}
/**
* 获取预下单对象 (扫呗-微信)
* 充值
*
* @return 预下单对象
*/
private
SaobeiMiniPayRequestVo
getSaobeiUnifiedRechargeVo
(
Recharge
recharge
,
String
openid
,
String
appId
,
String
mchId
,
String
signKey
)
{
AttachVo
attachVo
=
new
AttachVo
(
OrderTypeEnum
.
RECHARGE
.
getValue
(),
recharge
.
getConsumerId
());
SaobeiMiniPayRequestVo
vo
=
new
SaobeiMiniPayRequestVo
();
vo
.
setSub_appid
(
appId
);
vo
.
setMerchant_no
(
saobeiConfig
.
getMerchantNo
());
vo
.
setTerminal_id
(
saobeiConfig
.
getTerminalId
());
vo
.
setAttach
(
JSONObject
.
toJSONString
(
attachVo
));
vo
.
setTerminal_trace
(
BaseUtil
.
getOrderNo
(
"WXNO"
));
vo
.
setTerminal_time
(
DateUtil
.
nowDate
(
Constants
.
DATE_TIME_FORMAT_NUM
));
vo
.
setOrder_body
(
StrUtil
.
concat
(
true
,
recharge
.
getRechargeAmount
().
toString
(),
"元充值!"
));
// 订单中使用的是BigDecimal,这里要转为Integer类型
vo
.
setTotal_fee
(
String
.
valueOf
(
recharge
.
getRechargeAmount
().
multiply
(
BigDecimal
.
TEN
).
multiply
(
BigDecimal
.
TEN
).
intValue
()));
vo
.
setNotify_url
(
apiDomain
+
PayConstants
.
SAOBEI_PAY_NOTIFY_API_URI
);
vo
.
setTrade_type
(
PayConstants
.
WX_PAY_TRADE_TYPE_JS
);
vo
.
setOpen_id
(
openid
);
vo
.
setDevice_no
(
"WEB"
);
return
vo
;
}
}
share-system/src/main/java/share/system/service/impl/QPServiceImpl.java
View file @
bb0d8d54
...
...
@@ -3,6 +3,7 @@ package share.system.service.impl;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.json.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.dianping.openapi.sdk.api.customerauth.session.CustomerKeyShopScopeQuery
;
...
...
@@ -29,6 +30,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.util.CollectionUtils
;
import
share.common.core.redis.RedisUtil
;
import
share.common.enums.*
;
import
share.common.exception.base.BaseException
;
import
share.common.utils.DateUtils
;
import
share.system.domain.SConsumer
;
import
share.system.domain.SConsumerCoupon
;
...
...
@@ -98,6 +100,11 @@ public class QPServiceImpl implements QPService {
*/
@Override
public
String
consumeByUser
(
String
code
,
String
storeId
,
String
status
)
throws
Exception
{
//获取用户信息
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
if
(
ObjectUtil
.
isNull
(
user
))
{
throw
new
BaseException
(
"您的登录已过期,请先登录"
);
}
LambdaQueryWrapper
<
SStore
>
sStoreLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
sStoreLambdaQueryWrapper
.
eq
(
SStore:
:
getId
,
storeId
);
SStore
sStore
=
storeService
.
getOne
(
sStoreLambdaQueryWrapper
);
...
...
@@ -109,8 +116,6 @@ public class QPServiceImpl implements QPService {
}
//验券准备
TuangouReceiptPrepareResponseEntity
prepare
=
prepare
(
code
.
trim
(),
sStore
.
getOpenShopUuid
(),
status
);
//获取用户信息
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
//查询领取记录表
LambdaQueryWrapper
<
SConsumerCoupon
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
SConsumerCoupon:
:
getCouponCode
,
code
);
...
...
@@ -428,6 +433,11 @@ public class QPServiceImpl implements QPService {
@Override
public
List
<
SStoreVo
>
queryshop
(
SStoreDto
dto
)
throws
Exception
{
//获取用户信息
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
if
(
ObjectUtil
.
isNull
(
user
))
{
throw
new
BaseException
(
"您的登录已过期,请先登录"
);
}
String
code
=
dto
.
getCode
();
if
(
StringUtils
.
isEmpty
(
dto
.
getLatitude
())
||
StringUtils
.
isEmpty
(
dto
.
getLongitude
()))
{
throw
new
Exception
(
"经纬度不能为空"
);
...
...
@@ -441,8 +451,6 @@ public class QPServiceImpl implements QPService {
}
//验券准备
TuangouReceiptPrepareResponseEntity
prepare
=
prepare
(
code
.
trim
(),
sStore
.
getOpenShopUuid
(),
""
);
//获取用户信息
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
//查询领取记录表
LambdaQueryWrapper
<
SConsumerCoupon
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
SConsumerCoupon:
:
getCouponCode
,
code
);
...
...
share-system/src/main/java/share/system/service/impl/RechargeServiceImpl.java
View file @
bb0d8d54
package
share
.
system
.
service
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
share.common.enums.MemberTypeEnum
;
import
share.common.enums.YesNoEnum
;
import
share.common.exception.base.BaseException
;
import
share.common.utils.BaseUtil
;
import
share.common.utils.DateUtils
;
import
share.system.domain.Recharge
;
import
share.common.utils.bean.BeanUtils
;
import
share.system.domain.*
;
import
share.system.domain.vo.FrontTokenComponent
;
import
share.system.mapper.RechargeMapper
;
import
share.system.service.RechargeService
;
import
share.system.request.CreateRechargeRequest
;
import
share.system.response.RechargePayResultResponse
;
import
share.system.service.*
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -20,6 +34,18 @@ import java.util.List;
public
class
RechargeServiceImpl
extends
ServiceImpl
<
RechargeMapper
,
Recharge
>
implements
RechargeService
{
@Autowired
private
RechargeMapper
rechargeMapper
;
@Autowired
private
SConsumerService
sConsumerService
;
@Autowired
private
RechargeConfService
rechargeConfService
;
@Autowired
private
OrderPayService
orderPayService
;
@Autowired
private
ConsumerMemberService
consumerMemberService
;
@Autowired
private
ConsumerWalletService
consumerWalletService
;
@Autowired
private
MemberConfigService
memberConfigService
;
/**
* 查询充值记录
...
...
@@ -88,4 +114,77 @@ public class RechargeServiceImpl extends ServiceImpl<RechargeMapper, Recharge> i
public
int
deleteRechargeById
(
Long
id
)
{
return
rechargeMapper
.
deleteRechargeById
(
id
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
RechargePayResultResponse
createRecharge
(
CreateRechargeRequest
request
)
{
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
if
(
ObjectUtil
.
isNull
(
user
))
{
throw
new
BaseException
(
"您的登录已过期,请先登录"
);
}
if
(
StringUtils
.
isEmpty
(
user
.
getPhone
()))
{
user
=
sConsumerService
.
getById
(
user
.
getId
());
if
(
StringUtils
.
isEmpty
(
user
.
getPhone
()))
{
throw
new
BaseException
(
"请绑定手机号"
);
}
}
Recharge
recharge
=
generatRecharge
(
request
,
user
);
save
(
recharge
);
RechargePayResultResponse
response
=
orderPayService
.
saobeiRechargePayment
(
recharge
);
return
response
;
}
@Override
public
Recharge
getInfoByEntity
(
Recharge
rechargeParam
)
{
return
baseMapper
.
getInfoByEntity
(
rechargeParam
);
}
@Override
public
void
paymentSuccessful
(
Recharge
recharge
)
{
ConsumerMember
one
=
consumerMemberService
.
getOne
(
new
LambdaQueryWrapper
<
ConsumerMember
>().
eq
(
ConsumerMember:
:
getConsumerId
,
recharge
.
getConsumerId
()));
if
(
ObjectUtil
.
isEmpty
(
one
))
{
//新增会员
ConsumerMember
consumerMember
=
new
ConsumerMember
();
consumerMember
.
setConsumerId
(
recharge
.
getConsumerId
());
consumerMember
.
setMembershipLevel
(
1L
);
consumerMember
.
setMemberType
(
MemberTypeEnum
.
RECHARGE
.
getIndex
());
MemberConfig
memberConfig
=
memberConfigService
.
getOne
(
new
LambdaQueryWrapper
<
MemberConfig
>()
.
eq
(
MemberConfig:
:
getMembershipLevel
,
1L
)
.
eq
(
MemberConfig:
:
getMemberType
,
MemberTypeEnum
.
RECHARGE
.
getIndex
()));
consumerMember
.
setMemberConfigId
(
memberConfig
.
getId
());
consumerMember
.
setMembershipProgress
(
recharge
.
getRechargeAmount
().
longValue
());
consumerMember
.
setExpirationDate
(
DateUtils
.
addDays
(
new
Date
(),
memberConfig
.
getValidityPeriod
().
intValue
()));
consumerMemberService
.
save
(
consumerMember
);
RechargeConf
rechargeConf
=
rechargeConfService
.
selectRechargeConfById
(
recharge
.
getRechargeConfId
());
//新增会员钱包
ConsumerWallet
consumerWallet
=
new
ConsumerWallet
();
consumerWallet
.
setConsumerId
(
recharge
.
getConsumerId
());
BigDecimal
balance
=
recharge
.
getRechargeAmount
().
add
(
rechargeConf
.
getGiveAmount
());
consumerWallet
.
setBalance
(
balance
);
consumerWallet
.
setRemainingDuration
(
rechargeConf
.
getGiveDuration
());
BigDecimal
Integral
=
recharge
.
getRechargeAmount
().
multiply
(
rechargeConf
.
getGiveRatio
());
consumerWallet
.
setRemainingIntegral
(
Integral
);
consumerWalletService
.
addConsumerWallet
(
consumerWallet
);
}
else
{
}
}
private
Recharge
generatRecharge
(
CreateRechargeRequest
request
,
SConsumer
user
)
{
Recharge
recharge
=
new
Recharge
();
BeanUtils
.
copyProperties
(
request
,
recharge
);
recharge
.
setRechargeNo
(
BaseUtil
.
getOrderNo
(
"CZ"
));
RechargeConf
byId
=
rechargeConfService
.
getById
(
request
.
getRechargeConfId
());
if
(
ObjectUtil
.
isEmpty
(
byId
))
{
throw
new
BaseException
(
"充值模板异常"
);
}
recharge
.
setRechargeAmount
(
byId
.
getRechargeAmount
());
recharge
.
setGiveAmount
(
byId
.
getGiveAmount
());
recharge
.
setGiveType
(
byId
.
getGiveType
());
recharge
.
setStatus
(
YesNoEnum
.
no
.
getIndex
());
recharge
.
setConsumerId
(
user
.
getId
());
recharge
.
setPhone
(
user
.
getPhone
());
recharge
.
setRechargeDate
(
new
Date
());
return
recharge
;
}
}
share-system/src/main/java/share/system/service/impl/TiktokServiceImpl.java
View file @
bb0d8d54
...
...
@@ -2,6 +2,7 @@ package share.system.service.impl;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.http.HttpGlobalConfig
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.json.JSONArray
;
...
...
@@ -351,6 +352,10 @@ public class TiktokServiceImpl implements TiktokService {
@Override
public
String
consumeByUser
(
String
code
,
String
storeId
)
throws
Exception
{
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
if
(
ObjectUtil
.
isNull
(
user
))
{
throw
new
BaseException
(
"您的登录已过期,请先登录"
);
}
LambdaQueryWrapper
<
SStore
>
sStoreLambdaQueryWrapper
=
new
LambdaQueryWrapper
<>();
sStoreLambdaQueryWrapper
.
eq
(
SStore:
:
getId
,
storeId
);
SStore
sStore
=
storeService
.
getOne
(
sStoreLambdaQueryWrapper
);
...
...
@@ -378,7 +383,6 @@ public class TiktokServiceImpl implements TiktokService {
JSONObject
entries
=
new
JSONObject
(
o
);
JSONObject
sku
=
entries
.
getJSONObject
(
"sku"
);
JSONObject
amount
=
entries
.
getJSONObject
(
"amount"
);
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
// //查询领取记录表
// LambdaQueryWrapper<SConsumerCoupon> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.eq(SConsumerCoupon::getCouponCode, entries.getStr("encrypted_code"));
...
...
@@ -499,6 +503,11 @@ public class TiktokServiceImpl implements TiktokService {
@Override
public
List
<
SStoreVo
>
queryshop
(
SStoreDto
dto
)
throws
Exception
{
//获取用户信息
SConsumer
user
=
FrontTokenComponent
.
getWxSConsumerEntry
();
if
(
ObjectUtil
.
isNull
(
user
))
{
throw
new
BaseException
(
"您的登录已过期,请先登录"
);
}
String
code
=
dto
.
getCode
();
if
(
StringUtils
.
isEmpty
(
dto
.
getLatitude
())
||
StringUtils
.
isEmpty
(
dto
.
getLongitude
()))
{
throw
new
Exception
(
"经纬度不能为空"
);
...
...
share-system/src/main/resources/mapper/system/MemberProgressLogMapper.xml
0 → 100644
View file @
bb0d8d54
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"share.system.mapper.MemberProgressLogMapper"
>
<resultMap
type=
"MemberProgressLog"
id=
"MemberProgressLogResult"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"consumerId"
column=
"consumer_id"
/>
<result
property=
"variableProgress"
column=
"variable_progress"
/>
<result
property=
"currentProgress"
column=
"current_progress"
/>
<result
property=
"operationType"
column=
"operation_type"
/>
<result
property=
"operationTime"
column=
"operation_time"
/>
<result
property=
"isDelete"
column=
"is_delete"
/>
<result
property=
"createBy"
column=
"create_by"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateBy"
column=
"update_by"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"remark"
column=
"remark"
/>
</resultMap>
<sql
id=
"selectMemberProgressLogVo"
>
select id,
consumer_id,
variable_progress,
current_progress,
operation_type,
operation_time,
is_delete,
create_by,
create_time,
update_by,
update_time,
remark
from s_member_progress_log
</sql>
<select
id=
"selectMemberProgressLogList"
parameterType=
"MemberProgressLog"
resultMap=
"MemberProgressLogResult"
>
<include
refid=
"selectMemberProgressLogVo"
/>
<where>
<if
test=
"consumerId != null "
>
and consumer_id = #{consumerId}
</if>
<if
test=
"variableProgress != null "
>
and variable_progress = #{variableProgress}
</if>
<if
test=
"currentProgress != null "
>
and current_progress = #{currentProgress}
</if>
<if
test=
"operationType != null "
>
and operation_type = #{operationType}
</if>
<if
test=
"operationTime != null "
>
and operation_time = #{operationTime}
</if>
<if
test=
"isDelete != null "
>
and is_delete = #{isDelete}
</if>
</where>
</select>
<select
id=
"selectMemberProgressLogById"
parameterType=
"Long"
resultMap=
"MemberProgressLogResult"
>
<include
refid=
"selectMemberProgressLogVo"
/>
where id = #{id}
</select>
<insert
id=
"insertMemberProgressLog"
parameterType=
"MemberProgressLog"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into s_member_progress_log
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"consumerId != null"
>
consumer_id,
</if>
<if
test=
"variableProgress != null"
>
variable_progress,
</if>
<if
test=
"currentProgress != null"
>
current_progress,
</if>
<if
test=
"operationType != null"
>
operation_type,
</if>
<if
test=
"operationTime != null"
>
operation_time,
</if>
<if
test=
"isDelete != null"
>
is_delete,
</if>
<if
test=
"createBy != null"
>
create_by,
</if>
<if
test=
"createTime != null"
>
create_time,
</if>
<if
test=
"updateBy != null"
>
update_by,
</if>
<if
test=
"updateTime != null"
>
update_time,
</if>
<if
test=
"remark != null"
>
remark,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"consumerId != null"
>
#{consumerId},
</if>
<if
test=
"variableProgress != null"
>
#{variableProgress},
</if>
<if
test=
"currentProgress != null"
>
#{currentProgress},
</if>
<if
test=
"operationType != null"
>
#{operationType},
</if>
<if
test=
"operationTime != null"
>
#{operationTime},
</if>
<if
test=
"isDelete != null"
>
#{isDelete},
</if>
<if
test=
"createBy != null"
>
#{createBy},
</if>
<if
test=
"createTime != null"
>
#{createTime},
</if>
<if
test=
"updateBy != null"
>
#{updateBy},
</if>
<if
test=
"updateTime != null"
>
#{updateTime},
</if>
<if
test=
"remark != null"
>
#{remark},
</if>
</trim>
</insert>
<update
id=
"updateMemberProgressLog"
parameterType=
"MemberProgressLog"
>
update s_member_progress_log
<trim
prefix=
"SET"
suffixOverrides=
","
>
<if
test=
"consumerId != null"
>
consumer_id = #{consumerId},
</if>
<if
test=
"variableProgress != null"
>
variable_progress = #{variableProgress},
</if>
<if
test=
"currentProgress != null"
>
current_progress = #{currentProgress},
</if>
<if
test=
"operationType != null"
>
operation_type = #{operationType},
</if>
<if
test=
"operationTime != null"
>
operation_time = #{operationTime},
</if>
<if
test=
"isDelete != null"
>
is_delete = #{isDelete},
</if>
<if
test=
"createBy != null"
>
create_by = #{createBy},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime},
</if>
<if
test=
"updateBy != null"
>
update_by = #{updateBy},
</if>
<if
test=
"updateTime != null"
>
update_time = #{updateTime},
</if>
<if
test=
"remark != null"
>
remark = #{remark},
</if>
</trim>
where id = #{id}
</update>
<delete
id=
"deleteMemberProgressLogById"
parameterType=
"Long"
>
delete
from s_member_progress_log
where id = #{id}
</delete>
<delete
id=
"deleteMemberProgressLogByIds"
parameterType=
"String"
>
delete from s_member_progress_log where id in
<foreach
item=
"id"
collection=
"array"
open=
"("
separator=
","
close=
")"
>
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
share-system/src/main/resources/mapper/system/RechargeConfMapper.xml
View file @
bb0d8d54
...
...
@@ -9,6 +9,8 @@
<result
property=
"name"
column=
"name"
/>
<result
property=
"rechargeAmount"
column=
"recharge_amount"
/>
<result
property=
"giveType"
column=
"give_type"
/>
<result
property=
"giveRatio"
column=
"give_ratio"
/>
<result
property=
"giveDuration"
column=
"give_duration"
/>
<result
property=
"giveAmount"
column=
"give_amount"
/>
<result
property=
"enable"
column=
"enable"
/>
<result
property=
"suitType"
column=
"suit_type"
/>
...
...
@@ -26,6 +28,8 @@
name,
recharge_amount,
give_type,
give_ratio,
give_duration,
give_amount,
enable,
suit_type,
...
...
@@ -45,6 +49,8 @@
<if
test=
"name != null and name != ''"
>
and name like concat('%', #{name}, '%')
</if>
<if
test=
"rechargeAmount != null "
>
and recharge_amount = #{rechargeAmount}
</if>
<if
test=
"giveType != null and giveType != ''"
>
and give_type = #{giveType}
</if>
<if
test=
"giveRatio != null "
>
and give_ratio = #{giveRatio}
</if>
<if
test=
"giveDuration != null "
>
and give_duration = #{giveDuration}
</if>
<if
test=
"giveAmount != null "
>
and give_amount = #{giveAmount}
</if>
<if
test=
"enable != null and enable != ''"
>
and enable = #{enable}
</if>
<if
test=
"suitType != null and suitType != ''"
>
and suit_type = #{suitType}
</if>
...
...
@@ -63,6 +69,8 @@
<if
test=
"name != null"
>
name,
</if>
<if
test=
"rechargeAmount != null"
>
recharge_amount,
</if>
<if
test=
"giveType != null and giveType != ''"
>
give_type,
</if>
<if
test=
"giveRatio != null"
>
give_ratio,
</if>
<if
test=
"giveDuration != null"
>
give_duration,
</if>
<if
test=
"giveAmount != null"
>
give_amount,
</if>
<if
test=
"enable != null and enable != ''"
>
enable,
</if>
<if
test=
"suitType != null and suitType != ''"
>
suit_type,
</if>
...
...
@@ -78,6 +86,8 @@
<if
test=
"name != null"
>
#{name},
</if>
<if
test=
"rechargeAmount != null"
>
#{rechargeAmount},
</if>
<if
test=
"giveType != null and giveType != ''"
>
#{giveType},
</if>
<if
test=
"giveRatio != null"
>
#{giveRatio},
</if>
<if
test=
"giveDuration != null"
>
#{giveDuration},
</if>
<if
test=
"giveAmount != null"
>
#{giveAmount},
</if>
<if
test=
"enable != null and enable != ''"
>
#{enable},
</if>
<if
test=
"suitType != null and suitType != ''"
>
#{suitType},
</if>
...
...
@@ -97,6 +107,8 @@
<if
test=
"name != null"
>
name = #{name},
</if>
<if
test=
"rechargeAmount != null"
>
recharge_amount = #{rechargeAmount},
</if>
<if
test=
"giveType != null and giveType != ''"
>
give_type = #{giveType},
</if>
<if
test=
"giveRatio != null"
>
give_ratio = #{giveRatio},
</if>
<if
test=
"giveDuration != null"
>
give_duration = #{giveDuration},
</if>
<if
test=
"giveAmount != null"
>
give_amount = #{giveAmount},
</if>
<if
test=
"enable != null and enable != ''"
>
enable = #{enable},
</if>
<if
test=
"suitType != null and suitType != ''"
>
suit_type = #{suitType},
</if>
...
...
share-system/src/main/resources/mapper/system/RechargeMapper.xml
View file @
bb0d8d54
...
...
@@ -80,6 +80,10 @@
<include
refid=
"selectRechargeVo"
/>
where id = #{id}
</select>
<select
id=
"getInfoByEntity"
resultType=
"share.system.domain.Recharge"
>
<include
refid=
"selectRechargeVo"
/>
where out_trade_no=#{outTradeNo} and consumer_id=#{consumerId}
</select>
<insert
id=
"insertRecharge"
parameterType=
"Recharge"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into s_recharge
...
...
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