更改购买套餐包扣款
This commit is contained in:
parent
d8f87d7806
commit
6ca0ab65a6
@ -94,7 +94,7 @@ public class AccountRechargeController extends DefaultBaseController {
|
||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||
@PutMapping("update/{accountRechargeId}/{result}")
|
||||
@CheckRequestBodyAnnotation
|
||||
public SuccessResult update(@PathVariable("accountRechargeId") String accountRechargeId, @PathVariable("result") String result, @RequestBody AccountRechargeVO accountRechargeVO) {
|
||||
public synchronized SuccessResult update(@PathVariable("accountRechargeId") String accountRechargeId, @PathVariable("result") String result, @RequestBody AccountRechargeVO accountRechargeVO) {
|
||||
accountRechargeService.updateRecharge(accountRechargeId, result, accountRechargeVO);
|
||||
return new SuccessResult();
|
||||
}
|
||||
|
@ -17,6 +17,8 @@ public class AccountItemVO {
|
||||
|
||||
@ApiModelProperty(name = "accountId", value = "关联账户ID")
|
||||
private String accountId;
|
||||
@ApiModelProperty(name = "accountItemId", value = "关联账户流水ID")
|
||||
private String accountItemId;
|
||||
@ApiModelProperty(name = "accountBeforeMoney", value = "动账前余额")
|
||||
@CheckNumberAnnotation(name = "动账前余额")
|
||||
private Integer accountBeforeMoney;
|
||||
@ -42,6 +44,13 @@ public class AccountItemVO {
|
||||
private String checkStatus;
|
||||
private Integer isPostpaid;
|
||||
|
||||
public String getAccountItemId() {
|
||||
return accountItemId == null ? "" : accountItemId.trim();
|
||||
}
|
||||
|
||||
public void setAccountItemId(String accountItemId) {
|
||||
this.accountItemId = accountItemId;
|
||||
}
|
||||
|
||||
public String getOrderType() {
|
||||
return orderType == null ? "" : orderType.trim();
|
||||
|
@ -197,5 +197,7 @@ public interface IPackageOrderService {
|
||||
|
||||
void updateOrder(PackageOrderAppVO packageOrderVO);
|
||||
|
||||
Boolean updateOrder2(PackageOrderAppVO packageOrderVO);
|
||||
|
||||
void updateClose(String packageNo);
|
||||
}
|
@ -191,40 +191,66 @@ public class PackageOrderServiceImpl extends DefaultBaseService implements IPack
|
||||
private IAccountItemService iAccountItemService;
|
||||
|
||||
@Override
|
||||
public void updateOrder(PackageOrderAppVO packageOrderVO) {
|
||||
public Boolean updateOrder2(PackageOrderAppVO packageOrderVO) {
|
||||
PackageOrderDTO orderDTO = getByPackageNo(packageOrderVO.getAccountRechargeId());
|
||||
if(orderDTO.getPackagePayStatus().equals("1")) { // 当前状态已经是已支付的不做操作
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
PackageInfoAppDTO infoAppDTO = orderDTO.getPackageInfoAppDTO();
|
||||
// 仅限购买1次的
|
||||
if(infoAppDTO.equals("single")) {
|
||||
List<PackageOrderDTO> list = list(packageOrderVO.getPackageInfoId(), orderDTO.getCreator());
|
||||
if(infoAppDTO.getPackageMode().equals("single")) {
|
||||
List<PackageOrderDTO> list = list(orderDTO.getPackageInfoId(), orderDTO.getCreator());
|
||||
Boolean exists = false;
|
||||
for(PackageOrderDTO dto : list) {
|
||||
if(dto.getPackagePayStatus().equals("1")) {
|
||||
exists = true;
|
||||
}
|
||||
}
|
||||
if (!exists) {
|
||||
Map<String, Object> params = super.getHashMap(2);
|
||||
params.put("packageNo", packageOrderVO.getAccountRechargeId());// 关联支付
|
||||
params.put("packageAccountItem", packageOrderVO.getPackageAccountItem()); // 关联扣款流水
|
||||
params.put("packagePayStatus", "1"); // 已支付
|
||||
params.put("packagePay", DateUtil.getTime()); // 支付时间
|
||||
packageOrderDao.updatePay(params);
|
||||
if (exists) {
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
/**
|
||||
* 1. 更改到账时间 , 状态
|
||||
*/
|
||||
Map<String, Object> params = super.getHashMap(2);
|
||||
params.put("packageNo", packageOrderVO.getAccountRechargeId());// 关联支付
|
||||
params.put("packageAccountItem", packageOrderVO.getPackageAccountItem()); // 关联扣款流水
|
||||
params.put("packagePayStatus", "1"); // 已支付
|
||||
params.put("packagePay", DateUtil.getTime()); // 支付时间
|
||||
packageOrderDao.updatePay(params);
|
||||
}
|
||||
/**
|
||||
* 1. 更改到账时间 , 状态
|
||||
*/
|
||||
Map<String, Object> params = super.getHashMap(2);
|
||||
params.put("packageNo", packageOrderVO.getAccountRechargeId());// 关联支付
|
||||
params.put("packageAccountItem", packageOrderVO.getPackageAccountItem()); // 关联扣款流水
|
||||
params.put("packagePayStatus", "1"); // 已支付
|
||||
params.put("packagePay", DateUtil.getTime()); // 支付时间
|
||||
packageOrderDao.updatePay(params);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateOrder(PackageOrderAppVO packageOrderVO) {
|
||||
PackageOrderDTO orderDTO = getByPackageNo(packageOrderVO.getAccountRechargeId());
|
||||
if(orderDTO.getPackagePayStatus().equals("1")) { // 当前状态已经是已支付的不做操作
|
||||
throw new SaveException("该套餐订单已购买");
|
||||
}
|
||||
PackageInfoAppDTO infoAppDTO = orderDTO.getPackageInfoAppDTO();
|
||||
// 仅限购买1次的
|
||||
if(infoAppDTO.getPackageMode().equals("single")) {
|
||||
List<PackageOrderDTO> list = list(orderDTO.getPackageInfoId(), orderDTO.getCreator());
|
||||
Boolean exists = false;
|
||||
for(PackageOrderDTO dto : list) {
|
||||
if(dto.getPackagePayStatus().equals("1")) {
|
||||
exists = true;
|
||||
}
|
||||
}
|
||||
if (exists) {
|
||||
throw new SaveException("该套餐只允许购买一次");
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 1. 更改到账时间 , 状态
|
||||
*/
|
||||
Map<String, Object> params = super.getHashMap(2);
|
||||
params.put("packageNo", packageOrderVO.getAccountRechargeId());// 关联支付
|
||||
params.put("packageAccountItem", packageOrderVO.getPackageAccountItem()); // 关联扣款流水
|
||||
params.put("packagePayStatus", "1"); // 已支付
|
||||
params.put("packagePay", DateUtil.getTime()); // 支付时间
|
||||
packageOrderDao.updatePay(params);
|
||||
}
|
||||
|
||||
@Autowired
|
||||
|
@ -56,7 +56,7 @@ public class AccountItemServiceImpl extends DefaultBaseService implements IAccou
|
||||
|
||||
@Override
|
||||
public synchronized String saveReturnId(String token, AccountItemVO accountItemVO) {
|
||||
String accountItemId = UUIDUtil.getUUID();
|
||||
String accountItemId = StringUtils.isEmpty(accountItemVO.getAccountItemId()) ? UUIDUtil.getUUID() : accountItemVO.getAccountItemId();
|
||||
/**
|
||||
* 找出账户
|
||||
*/
|
||||
|
@ -8,6 +8,7 @@ import cn.com.tenlion.operator.enums.RechargeTypeEnum;
|
||||
import cn.com.tenlion.operator.enums.ReconciliationStatusEnum;
|
||||
import cn.com.tenlion.operator.enums.ThirdPartyEnum;
|
||||
import cn.com.tenlion.operator.pojo.bos.accountrecharge.AccountRechargeBO;
|
||||
import cn.com.tenlion.operator.pojo.dtos.account.AccountDTO;
|
||||
import cn.com.tenlion.operator.pojo.dtos.accountrecharge.AccountRechargeDTO;
|
||||
import cn.com.tenlion.operator.pojo.dtos.accountrecharge.AccountRechargePayDTO;
|
||||
import cn.com.tenlion.operator.pojo.dtos.accountrecharge.AccountRechargePayResultDTO;
|
||||
@ -21,6 +22,7 @@ import cn.com.tenlion.operator.pojo.vos.packageorder.PackageOrderAppVO;
|
||||
import cn.com.tenlion.operator.properties.SystemApiPathProperties;
|
||||
import cn.com.tenlion.operator.service.packageinfo.IPackageInfoService;
|
||||
import cn.com.tenlion.operator.service.packageorder.IPackageOrderService;
|
||||
import cn.com.tenlion.operator.serviceother.operator.account.IAccountService;
|
||||
import cn.com.tenlion.operator.serviceother.operator.accountitem.IAccountItemService;
|
||||
import cn.com.tenlion.operator.serviceother.operator.accountrecharge.IAccountRechargeService;
|
||||
import cn.com.tenlion.operator.service.user.info.IUserInfoService;
|
||||
@ -397,6 +399,8 @@ public class AccountRechargeServiceImpl extends DefaultBaseService implements IA
|
||||
private IPackageOrderService iPackageOrderService;
|
||||
@Autowired
|
||||
private IPackageInfoService iPackageInfoService;
|
||||
@Autowired
|
||||
private IAccountService iAccountService;
|
||||
|
||||
@Override
|
||||
public synchronized void updateCheck(String accountRechargeId, RechargeCheckEnum check, String checkRemark, String accountItemId, String orderId, String successTime) {
|
||||
@ -427,24 +431,33 @@ public class AccountRechargeServiceImpl extends DefaultBaseService implements IA
|
||||
if(!StringUtils.isEmpty(dto.getPackageInfoId()) && dto.getReconciliationStatus().equals("1") && dto.getRechargeCheck().equals("2")) {
|
||||
PackageInfoDTO packageInfoDTO = iPackageInfoService.get(dto.getPackageInfoId());
|
||||
PackageOrderDTO orderDTO = iPackageOrderService.getByPackageNo(accountRechargeId);
|
||||
/**
|
||||
* 1. 创建流水
|
||||
*/
|
||||
AccountItemVO vo = new AccountItemVO();
|
||||
vo.setType(2);
|
||||
vo.setMode(2);
|
||||
vo.setAccountId(orderDTO.getCreator());
|
||||
vo.setOrderId(orderDTO.getPackageOrderId());
|
||||
vo.setAccountMoney(packageInfoDTO.getPackageMoney());
|
||||
vo.setDescription("购买" + (packageInfoDTO.getPackageType().equals("ALL") ? "全托管" : "写材料" ) + "套餐包 " + packageInfoDTO.getPackageCount() + " 件:" + packageInfoDTO.getPackageName());
|
||||
String accountItemId1 = iAccountItemService.saveReturnId(vo);
|
||||
|
||||
PackageOrderAppVO appVO = new PackageOrderAppVO();
|
||||
appVO.setPackageInfoId(dto.getPackageInfoId());
|
||||
appVO.setUserId(dto.getCreator());
|
||||
appVO.setAccountRechargeId(dto.getAccountRechargeId());
|
||||
appVO.setPackageAccountItem(accountItemId1);
|
||||
iPackageOrderService.updateOrder(appVO);
|
||||
// 远程更改套餐包的付款到账状态
|
||||
String accountItemId1 = UUIDUtil.getUUID();
|
||||
// 获取用户余额 , 如果不够 , 则不购买
|
||||
AccountDTO accountDTO = iAccountService.get(dto.getAccountId());
|
||||
if(accountDTO.getAccountMoney() >= packageInfoDTO.getPackageMoney()) {
|
||||
PackageOrderAppVO appVO = new PackageOrderAppVO();
|
||||
appVO.setAccountRechargeId(dto.getAccountRechargeId());
|
||||
appVO.setPackageAccountItem(accountItemId1);
|
||||
Boolean result = iPackageOrderService.updateOrder2(appVO);
|
||||
if(result) {
|
||||
AccountDTO accountDTO2 = iAccountService.get(dto.getAccountId());
|
||||
if(accountDTO2.getAccountMoney() >= packageInfoDTO.getPackageMoney()) {
|
||||
/**
|
||||
* 1. 创建流水
|
||||
*/
|
||||
AccountItemVO vo = new AccountItemVO();
|
||||
vo.setAccountItemId(accountItemId1);
|
||||
vo.setType(2);
|
||||
vo.setMode(2);
|
||||
vo.setAccountId(orderDTO.getCreator());
|
||||
vo.setOrderId(orderDTO.getPackageOrderId());
|
||||
vo.setAccountMoney(packageInfoDTO.getPackageMoney());
|
||||
vo.setDescription("购买" + (packageInfoDTO.getPackageType().equals("ALL") ? "全托管" : "写材料" ) + "套餐包 " + packageInfoDTO.getPackageCount() + " 件:" + packageInfoDTO.getPackageName());
|
||||
iAccountItemService.saveReturnId(vo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 绑定了套餐包 & 已对账 & 已关闭
|
||||
if(!StringUtils.isEmpty(dto.getPackageInfoId()) && dto.getReconciliationStatus().equals("1") && dto.getRechargeCheck().equals("-1")) {
|
||||
|
@ -392,12 +392,12 @@
|
||||
)
|
||||
OR
|
||||
(
|
||||
t1.package_mode = 'single' AND t1.package_limit_users != '' AND t1.package_limit_users LIKE CONCAT('%', #{userId} ,'%') AND 1 > (SELECT COUNT(1) FROM operator_package_order t2 WHERE t1.package_info_id = t2.package_info_id AND t2.package_pay_status = '1' AND t2.creator = #{userId})
|
||||
t1.package_mode = 'single' AND t1.package_limit_users != '' AND t1.package_limit_users LIKE CONCAT('%', #{userId} ,'%') AND 1 > (SELECT COUNT(1) FROM operator_package_order t2 WHERE t1.package_info_id = t2.package_info_id AND t2.package_pay_status = '1' AND t2.creator = #{userId})
|
||||
)
|
||||
OR
|
||||
(
|
||||
t1.package_mode = 'single' AND t1.package_limit_users = '' AND 1 > (SELECT COUNT(1) FROM operator_package_order t2 WHERE t1.package_info_id = t2.package_info_id AND t2.package_pay_status = '1' AND t2.creator = #{userId})
|
||||
)
|
||||
t1.package_mode = 'single' AND t1.package_limit_users = '' AND 1 > (SELECT COUNT(1) FROM operator_package_order t2 WHERE t1.package_info_id = t2.package_info_id AND t2.package_pay_status = '1' AND t2.creator = #{userId})
|
||||
)
|
||||
)
|
||||
ORDER BY t1.package_order , t1.package_onlien_time DESC
|
||||
</select>
|
||||
|
Loading…
Reference in New Issue
Block a user