From 616f788090c83156ac5cc0d4cd38b9de344ee3b7 Mon Sep 17 00:00:00 2001
From: lisy <linlangsur163@163.com>
Date: 星期五, 18 八月 2023 10:18:29 +0800
Subject: [PATCH] 管理后台:完善核销功能
---
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 295 +++++++++++++++++++++++++++++++++++++---------------------
1 files changed, 187 insertions(+), 108 deletions(-)
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index e87e6fd..a76a64c 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -42,6 +42,7 @@
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
@@ -854,107 +855,183 @@
}
@Override
+ @Transactional
public ResultUtil productRedemptionOperation(Integer userIdFormRedis, GoodsExchangeVo exchangeType) {
System.out.println("exchangeType:--->");
System.out.println(exchangeType);
- PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId());
+
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
- for (int i = 0; i < exchangeType.getNums(); i++) {
+ PointsMerchandise merchandise = mcClient.selectPointsMerchandiseById(exchangeType.getGoodId());
+ if (ToolUtil.isEmpty(merchandise)){
+ return ResultUtil.error("商品不存在");
+ }
+ TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis);
+ if (ToolUtil.isEmpty(tAppUser)){
+ return ResultUtil.error("用户不存在");
+ }
+ int goodsNums = 0;
+ if (ToolUtil.isEmpty(exchangeType.getNums())){
+ goodsNums = 1;
+ }else {
+ goodsNums = exchangeType.getNums();
+ }
+ AppUserGoodResp goodResp = new AppUserGoodResp();
+ goodResp.setAppUserId(userIdFormRedis);
+ goodResp.setGoodId(merchandise.getId());
+ int count = mcClient.queryUserHasGoodsNums(goodResp);
+ if (ToolUtil.isNotEmpty(count) && count >= merchandise.getPickUpQuantity()){
+ return ResultUtil.error("超过限领数量");
+ }
+
+ for (int i = 0; i < goodsNums; i++) {
+// 新增积分商品兑换记录
UserPointsMerchandise pointsMerchandise = new UserPointsMerchandise();
pointsMerchandise.setPointsMerchandiseId(exchangeType.getGoodId());
pointsMerchandise.setUserId(userIdFormRedis);
+ pointsMerchandise.setStatus(1);
+ pointsMerchandise.setState(1);
+ if (merchandise.getUseScope() == 3){
+ if (exchangeType.getGoodsType() == 2){
+ CoursePackage coursePackage = cpageClient.queryCoursePackageById(merchandise.getCoursePackageId());
+ pointsMerchandise.setStoreId(coursePackage.getStoreId());
+ }else {
+ pointsMerchandise.setStoreId(exchangeType.getStoreId());
+ }
+ }
pointsMerchandise.setCode(code);
mcClient.saveDetailsUserPointMercase(pointsMerchandise);
}
-// 扣减积分
- TAppUser tAppUser = this.baseMapper.selectById(userIdFormRedis);
-
-
-// 积分变更记录
- UserIntegralChanges userIntegralChanges = new UserIntegralChanges();
- userIntegralChanges.setAppUserId(userIdFormRedis);
- userIntegralChanges.setOldIntegral(tAppUser.getIntegral());
- userIntegralChanges.setType(2);
- tAppUser.setIntegral(null == tAppUser.getIntegral() ? merchandise.getIntegral() : tAppUser.getIntegral() +merchandise.getIntegral());
- userIntegralChanges.setNewIntegral(tAppUser.getIntegral());
- userIntegralChanges.setInsertTime(new Date());
- uicMapper.insert(userIntegralChanges);
-
- this.baseMapper.updateById(tAppUser);
-// 现金支付
- if (exchangeType.getExchangeType() == 2 || exchangeType.getExchangeType() == 3) {
- switch (exchangeType.getGoodsType()) {
- case 2:
- for (int i = 0; i < exchangeType.getStuIds().size(); i++) {
- List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId());
-
- TCoursePackagePayment packagePayment = new TCoursePackagePayment();
- packagePayment.setAppUserId(userIdFormRedis);
- packagePayment.setStudentId(exchangeType.getStuIds().get(i));
- packagePayment.setCoursePackageId(merchandise.getCoursePackageId());
- for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) {
- if (Objects.equals(coursePackagePaymentConfig.getId(),merchandise.getCoursePackageConfigId())){
- packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours());
- packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours());
- packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours());
- packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
- break;
+ switch (exchangeType.getExchangeType()){
+// 积分
+ case 1:
+ boolean b = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral());
+ if (b){
+ switch (exchangeType.getGoodsType()){
+ case 2:
+ Integer stuNums = 0;
+ if (ToolUtil.isNotEmpty(exchangeType.getStuIds())){
+ stuNums = exchangeType.getStuIds().size();
+ }else {
+ stuNums = 1;
}
+ for (int i = 0; i < stuNums; i++) {
+ List<CoursePackagePaymentConfig> courseConfigList = cpconClient.getCourseConfigList(merchandise.getCoursePackageId());
+ TCoursePackagePayment packagePayment = new TCoursePackagePayment();
+ packagePayment.setAppUserId(userIdFormRedis);
+ packagePayment.setStudentId(exchangeType.getStuIds().get(i));
+ packagePayment.setCoursePackageId(merchandise.getCoursePackageId());
+ for (CoursePackagePaymentConfig coursePackagePaymentConfig : courseConfigList) {
+ if (Objects.equals(coursePackagePaymentConfig.getId(), merchandise.getCoursePackageConfigId())) {
+ packagePayment.setClassHours(coursePackagePaymentConfig.getClassHours());
+ packagePayment.setTotalClassHours(coursePackagePaymentConfig.getClassHours());
+ packagePayment.setLaveClassHours(coursePackagePaymentConfig.getClassHours());
+ packagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
+ break;
+ }
+ }
+ packagePayment.setPlayPaiCoin(merchandise.getIntegral());
+ packagePayment.setAbsencesNumber(0);
+ packagePayment.setPayUserType(1);
+ packagePayment.setPayStatus(2);
+ packagePayment.setPayUserId(userIdFormRedis);
+ packagePayment.setStatus(1);
+ packagePayment.setState(1);
+ packagePayment.setCode(code);
+ paymentClient.savePaymentCoursePackage(packagePayment);
+ }
+ break;
+ case 4:
+ for (int i = 0; i < goodsNums; i++) {
+ UserCoupon coupon = new UserCoupon();
+ coupon.setCouponId(exchangeType.getGoodId());
+ coupon.setUserId(userIdFormRedis);
+ coupon.setStatus(1);
+ ucponClient.insertToAppuserCoupon(coupon);
+ }
+ break;
+ default:
+ break;
+ }
+ }else {
+ return ResultUtil.error("用户积分不足!");
+ }
+ break;
+ case 2:
+// 积分+现金
+ boolean dealt = dealAppUserIntegral(userIdFormRedis,tAppUser,merchandise.getIntegral());
+ switch (exchangeType.getPayType()) {
+ case 1:
+ try {
+ if (merchandise.getType() == 2) {
+ return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code);
+ } else {
+ return WechatPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code);
+ }
+ } catch (Exception e) {
+ return ResultUtil.runErr();
}
- packagePayment.setPlayPaiCoin(merchandise.getIntegral());
- packagePayment.setAbsencesNumber(0);
- packagePayment.setPayUserType(1);
- packagePayment.setPayStatus(1);
- packagePayment.setPayUserId(userIdFormRedis);
- packagePayment.setStatus(1);
- packagePayment.setState(1);
- packagePayment.setInsertTime(new Date());
- packagePayment.setCode(code);
- paymentClient.savePaymentCoursePackage(packagePayment);
- }
- break;
- case 4:
- for (int i = 0; i < exchangeType.getNums(); i++) {
- UserCoupon coupon = new UserCoupon();
- coupon.setCouponId(exchangeType.getGoodId());
- coupon.setUserId(userIdFormRedis);
- coupon.setStatus(1);
- coupon.setInsertTime(new Date());
- ucponClient.insertToAppuserCoupon(coupon);
- }
- break;
- default:
- break;
- }
-
- switch (exchangeType.getPayType()){
- case 1:
- try {
- if (merchandise.getType() == 2){
- return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())),code);
- }else {
- return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getNums())),code);
+ case 2:
+ if (merchandise.getType() == 2) {
+ return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code);
+ } else {
+ return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code);
}
- }catch (Exception e){
- return ResultUtil.runErr();
- }
- case 2:
- if (merchandise.getType() == 2){
- AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())),code);
- }else {
- AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getNums())),code);
- }
- break;
- default:
- break;
- }
+ default:
+ break;
+ }
+ break;
+ case 3:
+ switch (exchangeType.getPayType()) {
+ case 1:
+ try {
+ if (merchandise.getType() == 2) {
+ return WechatPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code);
+ } else {
+ return WechatPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code);
+ }
+ } catch (Exception e) {
+ return ResultUtil.runErr();
+ }
+ case 2:
+ if (merchandise.getType() == 2) {
+ return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(exchangeType.getStuIds().size())), code);
+ } else {
+ return AlipayPayment(merchandise.getCash().multiply(new BigDecimal(goodsNums)), code);
+ }
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
}
-
return ResultUtil.success();
}
+ public boolean dealAppUserIntegral(Integer appUserId,TAppUser appUser,Integer points){
+ try {
+ if (ToolUtil.isEmpty(appUser.getIntegral()) || (ToolUtil.isNotEmpty(appUser.getIntegral()) && appUser.getIntegral() < points)){
+ return false;
+ }
+ // 积分变更记录
+ UserIntegralChanges userIntegralChanges = new UserIntegralChanges();
+ userIntegralChanges.setAppUserId(appUserId);
+ userIntegralChanges.setOldIntegral(appUser.getIntegral());
+ userIntegralChanges.setType(2);
+ appUser.setIntegral(null == appUser.getIntegral() ? points : appUser.getIntegral() - points);
+ userIntegralChanges.setNewIntegral(appUser.getIntegral());
+ userIntegralChanges.setInsertTime(new Date());
+ userIntegralChanges.setCategory(2);
+ uicMapper.insert(userIntegralChanges);
+
+ this.baseMapper.updateById(appUser);
+ return true;
+ }catch (Exception e){
+ return false;
+ }
+ }
private ResultUtil AlipayPayment(BigDecimal cash, String code) {
ResultUtil alipay = payMoneyUtil.alipay("课包续费", "", "", code, cash.toString(),
@@ -985,11 +1062,10 @@
Map<String, String> data1 = resultUtil.getData();
String s = data1.get("tradeStatus");
String tradeNo = data1.get("tradeNo");
-// if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){
-// coursePackagePayment.setState(3);
-// couPayClient.delPaymentCoursePackage(coursePackagePayment.getId());
-// break;
-// }
+ if("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10){
+ mcClient.deletePaymentRecord(code);
+ break;
+ }
if("TRADE_SUCCESS".equals(s)){
for (UserPointsMerchandise userPointsMerchandise : userPointsMerchandises) {
userPointsMerchandise.setPayStatus(2);
@@ -1005,6 +1081,7 @@
}
}
}catch (Exception e){
+ mcClient.deletePaymentRecord(code);
e.printStackTrace();
}
}
@@ -1045,11 +1122,10 @@
Map<String, String> data1 = resultUtil.getData();
String s = data1.get("trade_state");
String transaction_id = data1.get("transaction_id");
-// if("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10){
-// coursePackagePayment.setState(3);
-// couPayClient.delPaymentCoursePackage(coursePackagePayment.getId());
-// break;
-// }
+ if("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10){
+ mcClient.deletePaymentRecord(code);
+ break;
+ }
if("SUCCESS".equals(s)){
for (UserPointsMerchandise userPointsMerchandise : userPointsMerchandises) {
userPointsMerchandise.setPayStatus(2);
@@ -1101,7 +1177,6 @@
coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId());
coupon.setUserId(userPointsMerchandises.get(0).getUserId());
coupon.setStatus(1);
- coupon.setInsertTime(new Date());
ucponClient.insertToAppuserCoupon(coupon);
break;
default:
@@ -1132,7 +1207,6 @@
coupon.setCouponId(userPointsMerchandises.get(0).getPointsMerchandiseId());
coupon.setUserId(userPointsMerchandises.get(0).getUserId());
coupon.setStatus(1);
- coupon.setInsertTime(new Date());
ucponClient.insertToAppuserCoupon(coupon);
break;
default:
@@ -1148,24 +1222,29 @@
List<StoreResponse> responses = new ArrayList<>();
if (goodsType == 4){
List<Integer> couponStoreIds = ucponClient.getCouponStoreIds(pointsMerId);
- for (Integer couponStoreId : couponStoreIds) {
- StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreId);
- if(ToolUtil.isNotEmpty(courseOfStore)){
- StoreResponse response = new StoreResponse();
- response.setStoreId(couponStoreId);
- response.setStoreName(courseOfStore.getStoreName());
- responses.add(response);
+ if (couponStoreIds.size() > 0 ){
+ for (Integer couponStoreId : couponStoreIds) {
+ StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStoreId);
+ if(ToolUtil.isNotEmpty(courseOfStore)){
+ StoreResponse response = new StoreResponse();
+ response.setStoreId(couponStoreId);
+ response.setStoreName(courseOfStore.getStoreName());
+ responses.add(response);
+ }
}
}
+
}else {
List<Integer> integers = mcsClient.queryPointMerStoreIds(pointsMerId);
- for (Integer integer : integers) {
- StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integer);
- if(ToolUtil.isNotEmpty(courseOfStore)){
- StoreResponse response = new StoreResponse();
- response.setStoreId(integer);
- response.setStoreName(courseOfStore.getStoreName());
- responses.add(response);
+ if (integers.size() > 0 ){
+ for (Integer integer : integers) {
+ StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(integer);
+ if(ToolUtil.isNotEmpty(courseOfStore)){
+ StoreResponse response = new StoreResponse();
+ response.setStoreId(integer);
+ response.setStoreName(courseOfStore.getStoreName());
+ responses.add(response);
+ }
}
}
}
--
Gitblit v1.7.1