Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wecloud_im_server
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hewei
wecloud_im_server
Commits
435053c1
Commit
435053c1
authored
Mar 11, 2021
by
giaogiao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vip开通
parent
45b6b497
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
593 additions
and
46 deletions
+593
-46
common/src/main/java/com/sien/common/controller/VipPriceController.java
+102
-0
common/src/main/java/com/sien/common/controller/VipRecordController.java
+7
-6
common/src/main/java/com/sien/common/controller/WxPayController.java
+10
-9
common/src/main/java/com/sien/common/entity/VipPrice.java
+50
-0
common/src/main/java/com/sien/common/entity/VipRecord.java
+3
-4
common/src/main/java/com/sien/common/mapper/VipPriceMapper.java
+40
-0
common/src/main/java/com/sien/common/param/VipPricePageParam.java
+23
-0
common/src/main/java/com/sien/common/param/VipRecordOpenParam.java
+5
-6
common/src/main/java/com/sien/common/service/DonationRecordService.java
+1
-1
common/src/main/java/com/sien/common/service/VipPriceService.java
+62
-0
common/src/main/java/com/sien/common/service/VipRecordService.java
+10
-1
common/src/main/java/com/sien/common/service/impl/DonationRecordServiceImpl.java
+6
-5
common/src/main/java/com/sien/common/service/impl/VipPriceServiceImpl.java
+62
-0
common/src/main/java/com/sien/common/service/impl/VipRecordServiceImpl.java
+143
-13
common/src/main/java/com/sien/common/vo/app/VipPriceQueryVo.java
+44
-0
common/src/main/resources/mapper/VipPriceMapper.xml
+24
-0
common/src/main/resources/mapper/VipRecordMapper.xml
+1
-1
No files found.
common/src/main/java/com/sien/common/controller/VipPriceController.java
0 → 100644
View file @
435053c1
package
com
.
sien
.
common
.
controller
;
import
com.sien.common.entity.VipPrice
;
import
com.sien.common.service.VipPriceService
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.controller.BaseController
;
import
io.geekidea.springbootplus.framework.log.annotation.OperationLog
;
import
io.geekidea.springbootplus.framework.log.enums.OperationLogType
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
/**
* 会员价格表 控制器
*
* @author xxx
* @since 2021-03-11
*/
@Slf4j
@RestController
@RequestMapping
(
"/vipPrice"
)
@Api
(
value
=
"会员价格表API"
,
tags
=
{
"会员价格表"
})
public
class
VipPriceController
extends
BaseController
{
@Autowired
private
VipPriceService
vipPriceService
;
/**
* 会员价格表所有列表
*/
@PostMapping
(
"/getAllList"
)
@OperationLog
(
name
=
"会员价格表所有列表"
,
type
=
OperationLogType
.
PAGE
)
@ApiOperation
(
value
=
"会员价格表所有列表"
)
public
ApiResult
<
List
<
VipPrice
>>
getVipPricePageList
()
throws
Exception
{
return
ApiResult
.
ok
(
vipPriceService
.
list
());
}
// /**
// * 会员价格表分页列表
// */
// @PostMapping("/getPageList")
// @OperationLog(name = "会员价格表分页列表", type = OperationLogType.PAGE)
// @ApiOperation(value = "会员价格表分页列表")
// public ApiResult<Paging<VipPriceQueryVo>> getVipPricePageList(@Validated @RequestBody VipPricePageParam vipPricePageParam) throws Exception {
// Paging<VipPriceQueryVo> paging = vipPriceService.getVipPricePageList(vipPricePageParam);
// return ApiResult.ok(paging);
// }
// /**
// * 添加会员价格表
// */
// @PostMapping("/add")
// @OperationLog(name = "添加会员价格表", type = OperationLogType.ADD)
// @ApiOperation(value = "添加会员价格表")
// public ApiResult<Boolean> addVipPrice(@Validated(Add.class) @RequestBody VipPrice vipPrice) throws Exception {
// boolean flag = vipPriceService.saveVipPrice(vipPrice);
// return ApiResult.result(flag);
// }
//
// /**
// * 修改会员价格表
// */
// @PostMapping("/update")
// @OperationLog(name = "修改会员价格表", type = OperationLogType.UPDATE)
// @ApiOperation(value = "修改会员价格表")
// public ApiResult<Boolean> updateVipPrice(@Validated(Update.class) @RequestBody VipPrice vipPrice) throws Exception {
// boolean flag = vipPriceService.updateVipPrice(vipPrice);
// return ApiResult.result(flag);
// }
//
// /**
// * 删除会员价格表
// */
// @PostMapping("/delete/{id}")
// @OperationLog(name = "删除会员价格表", type = OperationLogType.DELETE)
// @ApiOperation(value = "删除会员价格表")
// public ApiResult<Boolean> deleteVipPrice(@PathVariable("id") Long id) throws Exception {
// boolean flag = vipPriceService.deleteVipPrice(id);
// return ApiResult.result(flag);
// }
//
// /**
// * 获取会员价格表详情
// */
// @GetMapping("/info/{id}")
// @OperationLog(name = "会员价格表详情", type = OperationLogType.INFO)
// @ApiOperation(value = "会员价格表详情")
// public ApiResult<VipPriceQueryVo> getVipPrice(@PathVariable("id") Long id) throws Exception {
// VipPriceQueryVo vipPriceQueryVo = vipPriceService.getVipPriceById(id);
// return ApiResult.ok(vipPriceQueryVo);
// }
}
common/src/main/java/com/sien/common/controller/VipRecordController.java
View file @
435053c1
package
com
.
sien
.
common
.
controller
;
package
com
.
sien
.
common
.
controller
;
import
com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult
;
import
com.sien.common.param.VipRecordOpenParam
;
import
com.sien.common.param.VipRecordOpenParam
;
import
com.sien.common.service.VipRecordService
;
import
com.sien.common.service.VipRecordService
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
...
@@ -26,7 +27,7 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -26,7 +27,7 @@ import org.springframework.web.bind.annotation.RestController;
@Slf4j
@Slf4j
@RestController
@RestController
@RequestMapping
(
"/vipRecord"
)
@RequestMapping
(
"/vipRecord"
)
@Api
(
value
=
"Vip开通
记录API"
,
tags
=
{
"Vip开通记录
"
})
@Api
(
value
=
"Vip开通
API"
,
tags
=
{
"Vip开通
"
})
public
class
VipRecordController
extends
BaseController
{
public
class
VipRecordController
extends
BaseController
{
@Autowired
@Autowired
...
@@ -37,11 +38,11 @@ public class VipRecordController extends BaseController {
...
@@ -37,11 +38,11 @@ public class VipRecordController extends BaseController {
* Vip开通
* Vip开通
*/
*/
@PostMapping
(
"/open"
)
@PostMapping
(
"/open"
)
@OperationLog
(
name
=
"
Vip开通
"
,
type
=
OperationLogType
.
ADD
)
@OperationLog
(
name
=
"
开通Vip
"
,
type
=
OperationLogType
.
ADD
)
@ApiOperation
(
value
=
"
Vip开通
"
)
@ApiOperation
(
value
=
"
开通Vip
"
)
public
ApiResult
<
Boolean
>
addVipRecord
(
@Validated
(
Add
.
class
)
@RequestBody
VipRecordOpenParam
vipRecordOpenParam
)
throws
Exception
{
public
ApiResult
<
WxPayMpOrderResult
>
openVip
(
@Validated
(
Add
.
class
)
@RequestBody
VipRecordOpenParam
vipRecordOpenParam
)
throws
Exception
{
boolean
flag
=
vipRecordService
.
openVip
(
vipRecordOpenParam
);
return
ApiResult
.
result
(
flag
);
return
vipRecordService
.
openVip
(
vipRecordOpenParam
);
}
}
// /**
// /**
...
...
common/src/main/java/com/sien/common/controller/WxPayController.java
View file @
435053c1
package
com
.
sien
.
common
.
controller
;
package
com
.
sien
.
common
.
controller
;
import
com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse
;
import
com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult
;
import
com.github.binarywang.wxpay.exception.WxPayException
;
import
com.github.binarywang.wxpay.exception.WxPayException
;
import
com.github.binarywang.wxpay.service.WxPayService
;
import
com.github.binarywang.wxpay.service.WxPayService
;
import
com.sien.common.service.DonationRecordService
;
import
com.sien.common.service.DonationRecordService
;
import
com.sien.common.service.VipRecordService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
/**
/**
* @author Binary Wang
* @author Binary Wang
*/
*/
//
@Api(value = "微信支付", hidden = true)
@Api
(
value
=
"微信支付"
,
hidden
=
true
)
@RestController
@RestController
@RequestMapping
(
"/pay"
)
@RequestMapping
(
"/pay"
)
@AllArgsConstructor
@AllArgsConstructor
...
@@ -29,18 +29,19 @@ public class WxPayController {
...
@@ -29,18 +29,19 @@ public class WxPayController {
@Autowired
@Autowired
private
DonationRecordService
donationRecordService
;
private
DonationRecordService
donationRecordService
;
@ApiOperation
(
value
=
"捐款支付回调通知处理"
)
@Autowired
private
VipRecordService
vipRecordService
;
@ApiOperation
(
value
=
"捐款支付回调通知处理"
,
hidden
=
true
)
@PostMapping
(
"/notify/donationOrder"
)
@PostMapping
(
"/notify/donationOrder"
)
public
String
parseDonationOrderNotifyResult
(
@RequestBody
String
xmlData
)
throws
WxPayException
{
public
String
parseDonationOrderNotifyResult
(
@RequestBody
String
xmlData
)
throws
WxPayException
{
return
donationRecordService
.
parseD
onationOrderNotifyResult
(
xmlData
);
return
donationRecordService
.
d
onationOrderNotifyResult
(
xmlData
);
}
}
@ApiOperation
(
value
=
"会员充值支付回调通知处理"
)
@ApiOperation
(
value
=
"会员充值支付回调通知处理"
,
hidden
=
true
)
@PostMapping
(
"/notify/vipOrder"
)
@PostMapping
(
"/notify/vipOrder"
)
public
String
parseVipOrderNotifyResult
(
@RequestBody
String
xmlData
)
throws
WxPayException
{
public
String
parseVipOrderNotifyResult
(
@RequestBody
String
xmlData
)
throws
WxPayException
{
final
WxPayOrderNotifyResult
notifyResult
=
this
.
wxService
.
parseOrderNotifyResult
(
xmlData
);
return
vipRecordService
.
vipOrderNotifyResult
(
xmlData
);
// TODO 根据自己业务场景需要构造返回对象
return
WxPayNotifyResponse
.
success
(
"成功"
);
}
}
//
//
// /**
// /**
...
...
common/src/main/java/com/sien/common/entity/VipPrice.java
0 → 100644
View file @
435053c1
package
com
.
sien
.
common
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
io.geekidea.springbootplus.framework.common.entity.BaseEntity
;
import
io.geekidea.springbootplus.framework.core.validator.groups.Update
;
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
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* 会员价格表
*
* @author xxx
* @since 2021-03-11
*/
@Data
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"VipPrice对象"
)
public
class
VipPrice
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
@NotNull
(
message
=
"id不能为空"
,
groups
=
{
Update
.
class
})
@ApiModelProperty
(
"id"
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
@ApiModelProperty
(
"会员价格"
)
private
BigDecimal
price
;
@ApiModelProperty
(
"会员类型(名称)"
)
private
String
memberShips
;
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
@ApiModelProperty
(
"修改时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
"状态,0:禁用,1:启用"
)
private
Integer
state
;
}
common/src/main/java/com/sien/common/entity/VipRecord.java
View file @
435053c1
...
@@ -10,7 +10,6 @@ import lombok.Data;
...
@@ -10,7 +10,6 @@ import lombok.Data;
import
lombok.EqualsAndHashCode
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -51,9 +50,9 @@ public class VipRecord extends BaseEntity {
...
@@ -51,9 +50,9 @@ public class VipRecord extends BaseEntity {
@ApiModelProperty
(
"开通多久"
)
@ApiModelProperty
(
"开通多久"
)
private
Integer
years
;
private
Integer
years
;
@NotBlank
(
message
=
"会员等级不能为空"
)
//
@NotBlank(message = "会员等级不能为空")
@ApiModelProperty
(
"会员等级"
)
//
@ApiModelProperty("会员等级")
private
String
vipLevel
;
//
private String vipLevel;
@ApiModelProperty
(
"备注"
)
@ApiModelProperty
(
"备注"
)
private
String
remark
;
private
String
remark
;
...
...
common/src/main/java/com/sien/common/mapper/VipPriceMapper.java
0 → 100644
View file @
435053c1
package
com
.
sien
.
common
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.sien.common.entity.VipPrice
;
import
com.sien.common.param.VipPricePageParam
;
import
com.sien.common.vo.app.VipPriceQueryVo
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.io.Serializable
;
/**
* 会员价格表 Mapper 接口
*
* @author xxx
* @since 2021-03-11
*/
@Repository
public
interface
VipPriceMapper
extends
BaseMapper
<
VipPrice
>
{
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
VipPriceQueryVo
getVipPriceById
(
Serializable
id
);
/**
* 获取分页对象
*
* @param page
* @param vipPricePageParam
* @return
*/
IPage
<
VipPriceQueryVo
>
getVipPricePageList
(
@Param
(
"page"
)
Page
page
,
@Param
(
"param"
)
VipPricePageParam
vipPricePageParam
);
}
common/src/main/java/com/sien/common/param/VipPricePageParam.java
0 → 100644
View file @
435053c1
package
com
.
sien
.
common
.
param
;
import
io.geekidea.springbootplus.framework.core.pagination.BasePageOrderParam
;
import
io.swagger.annotations.ApiModel
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* <pre>
* 会员价格表 分页参数对象
* </pre>
*
* @author xxx
* @date 2021-03-11
*/
@Data
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
@ApiModel
(
value
=
"会员价格表分页参数"
)
public
class
VipPricePageParam
extends
BasePageOrderParam
{
private
static
final
long
serialVersionUID
=
1L
;
}
common/src/main/java/com/sien/common/param/VipRecordOpenParam.java
View file @
435053c1
...
@@ -9,7 +9,6 @@ import lombok.experimental.Accessors;
...
@@ -9,7 +9,6 @@ import lombok.experimental.Accessors;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
java.math.BigDecimal
;
/**
/**
* <pre>
* <pre>
...
@@ -26,16 +25,16 @@ import java.math.BigDecimal;
...
@@ -26,16 +25,16 @@ import java.math.BigDecimal;
public
class
VipRecordOpenParam
extends
BasePageOrderParam
{
public
class
VipRecordOpenParam
extends
BasePageOrderParam
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"开通会员金额"
)
//
@ApiModelProperty("开通会员金额")
private
BigDecimal
money
;
//
private BigDecimal money;
@NotNull
(
message
=
"开通多久不能为空"
)
@NotNull
(
message
=
"开通多久不能为空"
)
@ApiModelProperty
(
"开通多少年"
)
@ApiModelProperty
(
"开通多少年"
)
private
Integer
years
;
private
Integer
years
;
@NotBlank
(
message
=
"会员等级不能为空"
)
@NotBlank
(
message
=
"会员等级
id
不能为空"
)
@ApiModelProperty
(
"会员等级
,直接传文字
"
)
@ApiModelProperty
(
"会员等级
id,传入由会员列表接口返回的id
"
)
private
String
vipLevel
;
private
Long
vipLevelId
;
@NotBlank
(
message
=
"不能为空"
)
@NotBlank
(
message
=
"不能为空"
)
@ApiModelProperty
(
"是否代替他人开通"
)
@ApiModelProperty
(
"是否代替他人开通"
)
...
...
common/src/main/java/com/sien/common/service/DonationRecordService.java
View file @
435053c1
...
@@ -40,7 +40,7 @@ public interface DonationRecordService extends BaseService<DonationRecord> {
...
@@ -40,7 +40,7 @@ public interface DonationRecordService extends BaseService<DonationRecord> {
/**
/**
* 回调
* 回调
*/
*/
String
parseD
onationOrderNotifyResult
(
String
xmlData
);
String
d
onationOrderNotifyResult
(
String
xmlData
);
/**
/**
...
...
common/src/main/java/com/sien/common/service/VipPriceService.java
0 → 100644
View file @
435053c1
package
com
.
sien
.
common
.
service
;
import
com.sien.common.entity.VipPrice
;
import
com.sien.common.param.VipPricePageParam
;
import
com.sien.common.vo.app.VipPriceQueryVo
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
/**
* 会员价格表 服务类
*
* @author xxx
* @since 2021-03-11
*/
public
interface
VipPriceService
extends
BaseService
<
VipPrice
>
{
/**
* 保存
*
* @param vipPrice
* @return
* @throws Exception
*/
boolean
saveVipPrice
(
VipPrice
vipPrice
)
throws
Exception
;
/**
* 修改
*
* @param vipPrice
* @return
* @throws Exception
*/
boolean
updateVipPrice
(
VipPrice
vipPrice
)
throws
Exception
;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean
deleteVipPrice
(
Long
id
)
throws
Exception
;
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
VipPriceQueryVo
getVipPriceById
(
Long
id
)
throws
Exception
;
/**
* 获取分页对象
*
* @param vipPricePageParam
* @return
* @throws Exception
*/
Paging
<
VipPriceQueryVo
>
getVipPricePageList
(
VipPricePageParam
vipPricePageParam
)
throws
Exception
;
}
common/src/main/java/com/sien/common/service/VipRecordService.java
View file @
435053c1
package
com
.
sien
.
common
.
service
;
package
com
.
sien
.
common
.
service
;
import
com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult
;
import
com.sien.common.entity.VipRecord
;
import
com.sien.common.entity.VipRecord
;
import
com.sien.common.param.VipRecordOpenParam
;
import
com.sien.common.param.VipRecordOpenParam
;
import
com.sien.common.param.VipRecordPageParam
;
import
com.sien.common.param.VipRecordPageParam
;
import
com.sien.common.vo.VipRecordQueryVo
;
import
com.sien.common.vo.VipRecordQueryVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.common.service.BaseService
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
...
@@ -16,6 +18,13 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
...
@@ -16,6 +18,13 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
public
interface
VipRecordService
extends
BaseService
<
VipRecord
>
{
public
interface
VipRecordService
extends
BaseService
<
VipRecord
>
{
/**
/**
* 支付回调
* @param xmlData
* @return
*/
String
vipOrderNotifyResult
(
String
xmlData
);
/**
* 保存
* 保存
*
*
* @param vipRecord
* @param vipRecord
...
@@ -30,7 +39,7 @@ public interface VipRecordService extends BaseService<VipRecord> {
...
@@ -30,7 +39,7 @@ public interface VipRecordService extends BaseService<VipRecord> {
* @return
* @return
* @throws Exception
* @throws Exception
*/
*/
boolean
openVip
(
VipRecordOpenParam
vipRecordOpenParam
)
throws
Exception
;
ApiResult
<
WxPayMpOrderResult
>
openVip
(
VipRecordOpenParam
vipRecordOpenParam
)
throws
Exception
;
/**
/**
* 修改
* 修改
...
...
common/src/main/java/com/sien/common/service/impl/DonationRecordServiceImpl.java
View file @
435053c1
...
@@ -81,7 +81,7 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
...
@@ -81,7 +81,7 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
}
}
@Override
@Override
public
String
parseD
onationOrderNotifyResult
(
String
xmlData
)
{
public
String
d
onationOrderNotifyResult
(
String
xmlData
)
{
WxPayOrderNotifyResult
notifyResult
;
WxPayOrderNotifyResult
notifyResult
;
try
{
try
{
...
@@ -125,8 +125,6 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
...
@@ -125,8 +125,6 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
return
ApiResult
.
fail
(
ApiCode
.
FAIL
,
new
WxPayMpOrderResult
());
return
ApiResult
.
fail
(
ApiCode
.
FAIL
,
new
WxPayMpOrderResult
());
}
}
// 微信支付请求参数对象
WxPayUnifiedOrderRequest
wxPayUnifiedOrderRequest
=
new
WxPayUnifiedOrderRequest
();
String
openid
=
appUserById
.
getWechatOpenId
();
String
openid
=
appUserById
.
getWechatOpenId
();
String
spbillCreateIp
=
httpServletRequest
.
getRemoteAddr
();
String
spbillCreateIp
=
httpServletRequest
.
getRemoteAddr
();
...
@@ -152,6 +150,7 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
...
@@ -152,6 +150,7 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
}
}
// 设置捐款记录表
// 设置捐款记录表
donationRecord
.
setMoney
(
donationRecordAdd
.
getMoney
());
donationRecord
.
setMoney
(
donationRecordAdd
.
getMoney
());
donationRecord
.
setPurpose
(
donationRecordAdd
.
getPurpose
());
donationRecord
.
setPurpose
(
donationRecordAdd
.
getPurpose
());
donationRecord
.
setWay
(
donationRecordAdd
.
getWay
());
donationRecord
.
setWay
(
donationRecordAdd
.
getWay
());
...
@@ -174,7 +173,7 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
...
@@ -174,7 +173,7 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
// 调用微信支付api
// 调用微信支付api
WxPayMpOrderResult
order
=
null
;
WxPayMpOrderResult
order
=
null
;
try
{
try
{
order
=
getWxPayMpOrderResult
(
wxPayUnifiedOrderRequest
,
outTradeNo
,
openid
,
spbillCreateIp
,
totalFee
);
order
=
getWxPayMpOrderResult
(
outTradeNo
,
openid
,
spbillCreateIp
,
totalFee
);
}
catch
(
WxPayException
e
)
{
}
catch
(
WxPayException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
...
@@ -182,7 +181,9 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
...
@@ -182,7 +181,9 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
return
ApiResult
.
ok
(
order
);
return
ApiResult
.
ok
(
order
);
}
}
private
WxPayMpOrderResult
getWxPayMpOrderResult
(
WxPayUnifiedOrderRequest
wxPayUnifiedOrderRequest
,
String
outTradeNo
,
String
openid
,
String
spbillCreateIp
,
int
totalFee
)
throws
WxPayException
{
private
WxPayMpOrderResult
getWxPayMpOrderResult
(
String
outTradeNo
,
String
openid
,
String
spbillCreateIp
,
int
totalFee
)
throws
WxPayException
{
WxPayUnifiedOrderRequest
wxPayUnifiedOrderRequest
=
new
WxPayUnifiedOrderRequest
();
wxPayUnifiedOrderRequest
.
setBody
(
DonationRecordServiceImpl
.
BODY
);
wxPayUnifiedOrderRequest
.
setBody
(
DonationRecordServiceImpl
.
BODY
);
// 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
// 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
...
...
common/src/main/java/com/sien/common/service/impl/VipPriceServiceImpl.java
0 → 100644
View file @
435053c1
package
com
.
sien
.
common
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.OrderItem
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.sien.common.entity.VipPrice
;
import
com.sien.common.mapper.VipPriceMapper
;
import
com.sien.common.param.VipPricePageParam
;
import
com.sien.common.service.VipPriceService
;
import
com.sien.common.vo.app.VipPriceQueryVo
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
/**
* 会员价格表 服务实现类
*
* @author xxx
* @since 2021-03-11
*/
@Slf4j
@Service
public
class
VipPriceServiceImpl
extends
BaseServiceImpl
<
VipPriceMapper
,
VipPrice
>
implements
VipPriceService
{
@Autowired
private
VipPriceMapper
vipPriceMapper
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
saveVipPrice
(
VipPrice
vipPrice
)
throws
Exception
{
return
super
.
save
(
vipPrice
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
updateVipPrice
(
VipPrice
vipPrice
)
throws
Exception
{
return
super
.
updateById
(
vipPrice
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
deleteVipPrice
(
Long
id
)
throws
Exception
{
return
super
.
removeById
(
id
);
}
@Override
public
VipPriceQueryVo
getVipPriceById
(
Long
id
)
throws
Exception
{
return
vipPriceMapper
.
getVipPriceById
(
id
);
}
@Override
public
Paging
<
VipPriceQueryVo
>
getVipPricePageList
(
VipPricePageParam
vipPricePageParam
)
throws
Exception
{
Page
<
VipPriceQueryVo
>
page
=
new
PageInfo
<>(
vipPricePageParam
,
OrderItem
.
desc
(
getLambdaColumn
(
VipPrice:
:
getCreateTime
)));
IPage
<
VipPriceQueryVo
>
iPage
=
vipPriceMapper
.
getVipPricePageList
(
page
,
vipPricePageParam
);
return
new
Paging
<
VipPriceQueryVo
>(
iPage
);
}
}
common/src/main/java/com/sien/common/service/impl/VipRecordServiceImpl.java
View file @
435053c1
package
com
.
sien
.
common
.
service
.
impl
;
package
com
.
sien
.
common
.
service
.
impl
;
import
cn.hutool.captcha.generator.RandomGenerator
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.OrderItem
;
import
com.baomidou.mybatisplus.core.metadata.OrderItem
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse
;
import
com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult
;
import
com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult
;
import
com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest
;
import
com.github.binarywang.wxpay.exception.WxPayException
;
import
com.github.binarywang.wxpay.service.WxPayService
;
import
com.sien.common.entity.AppUser
;
import
com.sien.common.entity.VipRecord
;
import
com.sien.common.entity.VipRecord
;
import
com.sien.common.mapper.VipRecordMapper
;
import
com.sien.common.mapper.VipRecordMapper
;
import
com.sien.common.param.VipRecordOpenParam
;
import
com.sien.common.param.VipRecordOpenParam
;
import
com.sien.common.param.VipRecordPageParam
;
import
com.sien.common.param.VipRecordPageParam
;
import
com.sien.common.service.AppUserService
;
import
com.sien.common.service.VipPriceService
;
import
com.sien.common.service.VipRecordService
;
import
com.sien.common.service.VipRecordService
;
import
com.sien.common.vo.AppUserQueryVo
;
import
com.sien.common.vo.VipRecordQueryVo
;
import
com.sien.common.vo.VipRecordQueryVo
;
import
com.sien.common.vo.app.VipPriceQueryVo
;
import
io.geekidea.springbootplus.framework.common.api.ApiCode
;
import
io.geekidea.springbootplus.framework.common.api.ApiResult
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.PageInfo
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
import
io.geekidea.springbootplus.framework.core.pagination.Paging
;
...
@@ -19,7 +34,11 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -19,7 +34,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
java.math.BigDecimal
;
import
java.util.Calendar
;
import
java.util.Calendar
;
import
java.util.Date
;
/**
/**
* Vip开通记录 服务实现类
* Vip开通记录 服务实现类
...
@@ -31,40 +50,151 @@ import java.util.Calendar;
...
@@ -31,40 +50,151 @@ import java.util.Calendar;
@Service
@Service
public
class
VipRecordServiceImpl
extends
BaseServiceImpl
<
VipRecordMapper
,
VipRecord
>
implements
VipRecordService
{
public
class
VipRecordServiceImpl
extends
BaseServiceImpl
<
VipRecordMapper
,
VipRecord
>
implements
VipRecordService
{
private
static
final
String
BODY
=
"厦门市四恩慈善会会员开通"
;
private
static
final
String
NOTIFY_URL
=
"https://c7a30ed052d8.ngrok.io/api/pay/notify/vipOrder"
;
@Autowired
@Autowired
private
VipRecordMapper
vipRecordMapper
;
private
VipRecordMapper
vipRecordMapper
;
@Autowired
private
WxPayService
wxService
;
@Autowired
private
AppUserService
appUserService
;
@Resource
HttpServletRequest
httpServletRequest
;
@Autowired
private
VipPriceService
vipPriceService
;
@Override
public
String
vipOrderNotifyResult
(
String
xmlData
)
{
WxPayOrderNotifyResult
notifyResult
;
try
{
notifyResult
=
this
.
wxService
.
parseOrderNotifyResult
(
xmlData
);
}
catch
(
WxPayException
e
)
{
// 是否能解密成功
e
.
printStackTrace
();
return
WxPayNotifyResponse
.
fail
(
"错误"
);
}
VipRecord
vipRecord
=
super
.
getOne
(
new
QueryWrapper
<
VipRecord
>().
lambda
().
eq
(
VipRecord:
:
getWxMerPayId
,
notifyResult
.
getOutTradeNo
()));
// 如果已经支付 直接响应成功
if
(
vipRecord
.
getPayStatus
()
==
1
)
{
return
WxPayNotifyResponse
.
successResp
(
"成功"
);
}
vipRecord
.
setPayStatus
(
1
);
vipRecord
.
setPayTime
(
new
Date
());
super
.
updateById
(
vipRecord
);
return
WxPayNotifyResponse
.
successResp
(
"成功"
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
@Override
public
boolean
saveVipRecord
(
VipRecord
vipRecord
)
throws
Exception
{
public
boolean
saveVipRecord
(
VipRecord
vipRecord
)
throws
Exception
{
return
super
.
save
(
vipRecord
);
return
super
.
save
(
vipRecord
);
}
}
private
WxPayMpOrderResult
getWxPayMpOrderResult
(
String
outTradeNo
,
String
openid
,
String
spbillCreateIp
,
int
totalFee
)
throws
WxPayException
{
WxPayUnifiedOrderRequest
wxPayUnifiedOrderRequest
=
new
WxPayUnifiedOrderRequest
();
wxPayUnifiedOrderRequest
.
setBody
(
VipRecordServiceImpl
.
BODY
);
// 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
wxPayUnifiedOrderRequest
.
setOutTradeNo
(
outTradeNo
);
//订单总金额,单位为分,详见支付金额
wxPayUnifiedOrderRequest
.
setTotalFee
(
totalFee
);
// APP和网页支付提交用户端ip
wxPayUnifiedOrderRequest
.
setSpbillCreateIp
(
spbillCreateIp
);
// 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
wxPayUnifiedOrderRequest
.
setNotifyUrl
(
VipRecordServiceImpl
.
NOTIFY_URL
);
wxPayUnifiedOrderRequest
.
setOpenid
(
openid
);
String
jsapi
=
"JSAPI"
;
wxPayUnifiedOrderRequest
.
setTradeType
(
jsapi
);
WxPayMpOrderResult
order
=
null
;
// try {
order
=
this
.
wxService
.
createOrder
(
wxPayUnifiedOrderRequest
);
// } catch (WxPayException e) {
// e.printStackTrace();
// }
return
order
;
}
@Override
@Override
public
boolean
openVip
(
VipRecordOpenParam
vipRecordOpenParam
)
throws
Exception
{
public
ApiResult
<
WxPayMpOrderResult
>
openVip
(
VipRecordOpenParam
vipRecordOpenParam
)
throws
Exception
{
JwtToken
jwtToken
=
(
JwtToken
)
SecurityUtils
.
getSubject
().
getPrincipal
();
JwtToken
jwtToken
=
(
JwtToken
)
SecurityUtils
.
getSubject
().
getPrincipal
();
VipRecord
vipRecord
=
new
VipRecord
();
AppUserQueryVo
appUserById
=
appUserService
.
getAppUserById
(
jwtToken
.
getUserId
());
vipRecord
.
setFkUserId
(
jwtToken
.
getUserId
());
vipRecord
.
setMoney
(
vipRecordOpenParam
.
getMoney
());
// 获取vip价格表
vipRecord
.
setFkRechargeUser
(-
1L
);
VipPriceQueryVo
vipPriceById
=
vipPriceService
.
getVipPriceById
(
vipRecordOpenParam
.
getVipLevelId
());
if
(
vipPriceById
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
FAIL
,
null
);
}
// 应付金额
BigDecimal
money
=
vipPriceById
.
getPrice
().
multiply
(
new
BigDecimal
(
vipRecordOpenParam
.
getYears
()));
// 设置到期时间
// 设置到期时间
Calendar
calendar
=
Calendar
.
getInstance
();
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
add
(
Calendar
.
YEAR
,
vipRecordOpenParam
.
getYears
());
calendar
.
add
(
Calendar
.
YEAR
,
vipRecordOpenParam
.
getYears
());
vipRecord
.
setExpiredAt
(
calendar
.
getTime
());
Date
expiredAt
=
calendar
.
getTime
();
// 商家订单号
String
outTradeNo
=
new
RandomGenerator
(
32
).
generate
();
VipRecord
vipRecord
=
new
VipRecord
();
vipRecord
.
setMoney
(
money
);
vipRecord
.
setExpiredAt
(
expiredAt
);
vipRecord
.
setYears
(
vipRecordOpenParam
.
getYears
());
vipRecord
.
setYears
(
vipRecordOpenParam
.
getYears
());
vipRecord
.
setVipLevel
(
vipRecordOpenParam
.
getVipLevel
());
vipRecord
.
setPayStatus
(
0
);
// vipRecord.setRemark("");
// vipRecord.setCreateTime(new Date());
// vipRecord.setUpdateTime(new Date());
// 判断是否为替他人
//
// 判断是否为替他人
if
(
vipRecordOpenParam
.
getIsReplace
())
{
if
(
vipRecordOpenParam
.
getIsReplace
())
{
// vipRecord.setFkRechargeUser(vipRecordOpenParam.getAgentUserId());
AppUser
user
=
appUserService
.
getOne
(
new
QueryWrapper
<
AppUser
>().
lambda
()
.
eq
(
AppUser:
:
getPhone
,
vipRecordOpenParam
.
getUserPhone
())
.
eq
(
AppUser:
:
getPhoneArea
,
vipRecordOpenParam
.
getPhoneArea
()));
//判断接收方是否存在
if
(
user
==
null
)
{
return
ApiResult
.
fail
(
ApiCode
.
FAIL
,
new
WxPayMpOrderResult
());
}
vipRecord
.
setFkUserId
(
user
.
getId
());
vipRecord
.
setFkRechargeUser
(
jwtToken
.
getUserId
());
}
else
{
vipRecord
.
setFkUserId
(
jwtToken
.
getUserId
());
vipRecord
.
setFkRechargeUser
(-
1L
);
}
// 保存数据库
boolean
save
=
super
.
save
(
vipRecord
);
if
(
save
)
{
// 保存成功调用微信支付
String
ip
=
httpServletRequest
.
getRemoteAddr
();
BigDecimal
num2
=
new
BigDecimal
(
100
);
int
totalFee
=
money
.
multiply
(
num2
).
intValue
();
WxPayMpOrderResult
wxPayMpOrderResult
=
getWxPayMpOrderResult
(
outTradeNo
,
appUserById
.
getWechatOpenId
(),
ip
,
totalFee
);
return
ApiResult
.
ok
(
wxPayMpOrderResult
);
}
else
{
return
ApiResult
.
fail
(
ApiCode
.
FAIL
,
null
);
}
}
return
super
.
save
(
vipRecord
);
}
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
common/src/main/java/com/sien/common/vo/app/VipPriceQueryVo.java
0 → 100644
View file @
435053c1
package
com
.
sien
.
common
.
vo
.
app
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* <pre>
* 会员价格表 查询结果对象
* </pre>
*
* @author xxx
* @date 2021-03-11
*/
@Data
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"VipPriceQueryVo对象"
)
public
class
VipPriceQueryVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"id"
)
private
Long
id
;
@ApiModelProperty
(
"会员价格"
)
private
BigDecimal
price
;
@ApiModelProperty
(
"会员类型(名称)"
)
private
String
memberShips
;
@ApiModelProperty
(
"创建时间"
)
private
Date
createTime
;
@ApiModelProperty
(
"修改时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
"状态,0:禁用,1:启用"
)
private
Integer
state
;
}
\ No newline at end of file
common/src/main/resources/mapper/VipPriceMapper.xml
0 → 100644
View file @
435053c1
<?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=
"com.sien.common.mapper.VipPriceMapper"
>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
id
, price, member_ships, create_time, update_time, state
</sql>
<select
id=
"getVipPriceById"
resultType=
"com.sien.common.vo.app.VipPriceQueryVo"
>
select
<include
refid=
"Base_Column_List"
/>
from vip_price where id = #{id}
</select>
<select
id=
"getVipPricePageList"
parameterType=
"com.sien.common.param.VipPricePageParam"
resultType=
"com.sien.common.vo.app.VipPriceQueryVo"
>
select
<include
refid=
"Base_Column_List"
/>
from vip_price
</select>
</mapper>
common/src/main/resources/mapper/VipRecordMapper.xml
View file @
435053c1
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
<!-- 通用查询结果列 -->
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
<sql
id=
"Base_Column_List"
>
id, fk_user_id, fk_recharge_user, money, expired_at, years,
vip_level,
remark, create_time, update_time,wx_mer_pay_id,pay_status,pay_time
id, fk_user_id, fk_recharge_user, money, expired_at, years, remark, create_time, update_time,wx_mer_pay_id,pay_status,pay_time
</sql>
</sql>
<select
id=
"getVipRecordById"
resultType=
"com.sien.common.vo.VipRecordQueryVo"
>
<select
id=
"getVipRecordById"
resultType=
"com.sien.common.vo.VipRecordQueryVo"
>
...
...
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