From 4fc29e3ad8df087a0ee68d97e41da07bf67ef427 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9F=A9=E9=B9=8F=E8=BE=89?= <18322780655@163.com>
Date: Thu, 18 Apr 2024 13:59:16 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BC=9A=E5=91=98=E6=94=AF?=
=?UTF-8?q?=E4=BB=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controller/LoginContoller.java | 9 +-
.../controller/PayController.java | 11 ++
.../dao/TbShopPayTypeMapper.java | 7 ++
.../cashierservice/entity/TbShopUser.java | 31 +++++
.../cashierservice/service/LoginService.java | 24 ++--
.../cashierservice/service/PayService.java | 107 +++++++++++++++++-
.../resources/mapper/TbShopPayTypeMapper.xml | 5 +
.../resources/mapper/TbShopUserMapper.xml | 13 +++
8 files changed, 192 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java
index 1dce6f1..2fa566b 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/LoginContoller.java
@@ -210,9 +210,12 @@ public class LoginContoller {
* @param id
* @return
*/
- @RequestMapping("createCardNo")
- public Result createCardNo(@RequestHeader("openId") String openId, @RequestHeader("token") String token, @RequestHeader("id") String id) {
- return loginService.createCardNo(id, openId);
+ @GetMapping("createCardNo")
+ public Result createCardNo(@RequestHeader("openId") String openId, @RequestHeader("token") String token, @RequestHeader("id") String id,
+
+ @RequestParam("shopId") String shopId
+ ) {
+ return loginService.createCardNo(id, openId,shopId);
}
@GetMapping("/wx/userInfo")
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java
index fee5b56..6d20ad5 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java
@@ -46,6 +46,17 @@ public class PayController {
}
+//
+// public Result memberAccountPay(@RequestHeader("openId") String openId,
+// @RequestParam("orderId") String orderId,
+// @RequestParam("userId") Integer userId,
+// @RequestParam("shopId") String shopId,
+// @RequestParam("pwd") String pwd
+// ){
+//
+// }
+
+
/**
* 修改订单状态
* @param map
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopPayTypeMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopPayTypeMapper.java
index e656808..6990b03 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopPayTypeMapper.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopPayTypeMapper.java
@@ -1,7 +1,12 @@
package com.chaozhanggui.system.cashierservice.dao;
import com.chaozhanggui.system.cashierservice.entity.TbShopPayType;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Component;
+@Component
+@Mapper
public interface TbShopPayTypeMapper {
int deleteByPrimaryKey(Integer id);
@@ -14,4 +19,6 @@ public interface TbShopPayTypeMapper {
int updateByPrimaryKeySelective(TbShopPayType record);
int updateByPrimaryKey(TbShopPayType record);
+
+ int countSelectByShopIdAndPayType(@Param("shopId") String shopId, @Param("payType") String payType );
}
\ No newline at end of file
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopUser.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopUser.java
index c1a688d..f447e2d 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopUser.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbShopUser.java
@@ -42,6 +42,13 @@ public class TbShopUser implements Serializable {
private String code;
+
+ private String dynamicCode;
+
+ private String isPwd;
+
+ private String pwd;
+
private Byte isAttention;
private Integer attentionAt;
@@ -214,6 +221,30 @@ public class TbShopUser implements Serializable {
this.code = code == null ? null : code.trim();
}
+ public String getDynamicCode() {
+ return dynamicCode;
+ }
+
+ public void setDynamicCode(String dynamicCode) {
+ this.dynamicCode = dynamicCode;
+ }
+
+ public String getIsPwd() {
+ return isPwd;
+ }
+
+ public void setIsPwd(String isPwd) {
+ this.isPwd = isPwd;
+ }
+
+ public String getPwd() {
+ return pwd;
+ }
+
+ public void setPwd(String pwd) {
+ this.pwd = pwd;
+ }
+
public Byte getIsAttention() {
return isAttention;
}
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/LoginService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/LoginService.java
index 57217a6..1adb333 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/service/LoginService.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/LoginService.java
@@ -122,6 +122,7 @@ public class LoginService {
tbShopUser.setShopId(tbShopInfo.getId().toString());
tbShopUser.setUserId(userInfo.getId().toString());
tbShopUser.setMiniOpenId(openId);
+ tbShopUser.setIsPwd("1");
tbShopUser.setCreatedAt(System.currentTimeMillis());
tbShopUser.setUpdatedAt(System.currentTimeMillis());
tbShopUserMapper.insert(tbShopUser);
@@ -250,12 +251,11 @@ public class LoginService {
return Result.fail("登录失败");
}
- public Result createCardNo(String id, String openId) {
+ public Result createCardNo(String id, String openId,String shopId) {
if (ObjectUtil.isEmpty(id) || ObjectUtil.isEmpty(openId)) {
return Result.fail("head 信息不允许为空");
}
-
TbUserInfo userInfo = tbUserInfoMapper.selectByPrimaryKey(Integer.valueOf(id));
if (userInfo == null || ObjectUtil.isEmpty(userInfo)) {
userInfo = tbUserInfoMapper.selectByOpenId(openId);
@@ -265,12 +265,22 @@ public class LoginService {
return Result.fail("用户信息不存在");
}
- String cardNo = RandomUtil.randomNumbers(10);
- userInfo.setCardNo(cardNo);
- userInfo.setUpdatedAt(System.currentTimeMillis());
- tbUserInfoMapper.updateByPrimaryKeySelective(userInfo);
- return Result.success(CodeEnum.SUCCESS, cardNo);
+ TbShopUser tbShopUser= tbShopUserMapper.selectByUserIdAndShopId(userInfo.getId().toString(),shopId);
+ if(ObjectUtil.isEmpty(tbShopUser)||tbShopUser==null){
+ return Result.fail("用户信息错误");
+ }
+
+ String dynamicCode = RandomUtil.randomNumbers(8);
+ dynamicCode= StringUtils.rightPad(tbShopUser.getId(),6,"0").concat(dynamicCode);
+
+ tbShopUser.setDynamicCode(dynamicCode);
+ tbShopUser.setUpdatedAt(System.currentTimeMillis());
+ tbShopUserMapper.updateByPrimaryKeySelective(tbShopUser);
+
+
+
+ return Result.success(CodeEnum.SUCCESS, dynamicCode);
}
diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java
index 0162190..8810012 100644
--- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java
+++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java
@@ -15,6 +15,7 @@ import com.chaozhanggui.system.cashierservice.sign.Result;
import com.chaozhanggui.system.cashierservice.socket.AppWebSocketServer;
import com.chaozhanggui.system.cashierservice.util.BeanUtil;
import com.chaozhanggui.system.cashierservice.util.MD5Util;
+import com.chaozhanggui.system.cashierservice.util.N;
import com.chaozhanggui.system.cashierservice.util.SnowFlakeUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -54,6 +55,11 @@ public class PayService {
TbOrderDetailMapper tbOrderDetailMapper;
+
+ @Autowired
+ TbShopPayTypeMapper tbShopPayTypeMapper;
+
+
@Value("${ysk.url}")
private String url;
@@ -182,6 +188,100 @@ public class PayService {
+ @Transactional(rollbackFor = Exception.class)
+ public Result accountPay(String orderId, String userId, String shopId,String pwd) {
+ if (ObjectUtil.isEmpty(orderId) || ObjectUtil.isEmpty(userId)||ObjectUtil.isEmpty(shopId)||ObjectUtil.isEmpty(pwd)) {
+ return Result.fail("参数错误");
+ }
+
+ TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
+ if (ObjectUtil.isEmpty(orderInfo)) {
+ return Result.fail("订单信息不存在");
+ }
+
+
+ if (!"unpaid".equals(orderInfo.getStatus())) {
+ return Result.fail("订单状态异常");
+ }
+
+
+ int count = tbShopPayTypeMapper.countSelectByShopIdAndPayType(orderInfo.getShopId(), "deposit");
+ if (count < 1) {
+ return Result.fail("当前店铺未开通储值卡支付");
+ }
+
+ TbShopUser user = tbShopUserMapper.selectByUserIdAndShopId(userId,shopId);
+
+ if (ObjectUtil.isEmpty(user) || !"1".equals(user.getIsVip().toString())) {
+ return Result.fail("此用户非会员用户");
+ }
+
+
+ if("1".equals(user.getIsPwd())){
+ return Result.fail("会员支付密码为初始化密码");
+ }
+
+ if(!MD5Util.encrypt(pwd).equals(user.getPwd())){
+ return Result.fail("会员支付密码错误");
+ }
+
+ if (N.gt(orderInfo.getPayAmount(), user.getAmount())) {
+ return Result.fail("会员卡余额不足");
+ }
+
+ user.setAmount(user.getAmount().subtract(orderInfo.getOrderAmount()));
+ user.setConsumeAmount(user.getConsumeAmount().add(orderInfo.getPayAmount()));
+ user.setConsumeNumber(user.getConsumeNumber() + 1);
+ user.setUpdatedAt(System.currentTimeMillis());
+ tbShopUserMapper.updateByPrimaryKeySelective(user);
+
+
+ TbShopUserFlow flow = new TbShopUserFlow();
+ flow.setShopUserId(Integer.valueOf(user.getId()));
+ flow.setBizCode("accountPay");
+ flow.setBizName("会员储值卡支付");
+ flow.setAmount(orderInfo.getOrderAmount());
+ flow.setBalance(user.getAmount());
+ flow.setCreateTime(new Date());
+ tbShopUserFlowMapper.insert(flow);
+
+
+ orderInfo.setPayAmount(orderInfo.getOrderAmount());
+ orderInfo.setMemberId(userId);
+ orderInfo.setPayType("deposit");
+ orderInfo.setStatus("closed");
+ orderInfo.setPayOrderNo("deposit".concat(SnowFlakeUtil.generateOrderNo()));
+ tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
+
+
+ int cartCount= tbCashierCartMapper.updateStatusByOrderId(orderId.toString(),"final");
+
+ log.info("更新购物车:{}",cartCount);
+
+ //更新子单状态
+ tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId),"closed");
+
+ //修改主单状态
+ orderInfo.setStatus("closed");
+ orderInfo.setPayType("deposit");
+ orderInfo.setPayOrderNo(user.getDynamicCode());
+ orderInfo.setPayAmount(orderInfo.getOrderAmount());
+ tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
+
+
+ JSONObject jsonObject=new JSONObject();
+ jsonObject.put("token",0);
+ jsonObject.put("type","wxcreate");
+ jsonObject.put("orderId",orderInfo.getId().toString());
+
+ producer.putOrderCollect(jsonObject.toJSONString());
+
+ producer.printMechine(orderInfo.getId() + "");
+
+ return Result.success(CodeEnum.SUCCESS);
+ }
+
+
@Transactional(rollbackFor = Exception.class)
public Result modifyOrderStatus(Integer orderId) throws IOException {
TbOrderInfo orderInfo= tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
@@ -289,10 +389,6 @@ public class PayService {
return Result.fail("对应的用户信息不存在");
}
- if(ObjectUtil.isEmpty(tbShopUser.getIsVip())||!"1".equals(tbShopUser.getIsVip().toString())){
- return Result.fail("非会员用户不允许充值");
- }
-
TbShopInfo shopInfo= tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId));
if(ObjectUtil.isEmpty(shopInfo)){
@@ -311,7 +407,7 @@ public class PayService {
TbMemberIn memberIn=new TbMemberIn();
memberIn.setAmount(payAmount);
memberIn.setUserId(Integer.valueOf(tbShopUser.getUserId()));
- memberIn.setCode(tbShopUser.getCode());
+ memberIn.setCode(tbShopUser.getDynamicCode());
memberIn.setShopId(shopInfo.getId());
memberIn.setStatus("7");
memberIn.setMerchantId(Integer.valueOf(shopInfo.getMerchantId()));
@@ -414,6 +510,7 @@ public class PayService {
}
//修改客户资金
+ tbShopUser.setIsVip(Byte.parseByte("1"));
tbShopUser.setAmount(tbShopUser.getAmount().add(memberIn.getAmount()));
tbShopUser.setUpdatedAt(System.currentTimeMillis());
tbShopUserMapper.updateByPrimaryKeySelective(tbShopUser);
diff --git a/src/main/resources/mapper/TbShopPayTypeMapper.xml b/src/main/resources/mapper/TbShopPayTypeMapper.xml
index 9b2c36c..10527de 100644
--- a/src/main/resources/mapper/TbShopPayTypeMapper.xml
+++ b/src/main/resources/mapper/TbShopPayTypeMapper.xml
@@ -185,4 +185,9 @@
updated_at = #{updatedAt,jdbcType=BIGINT}
where id = #{id,jdbcType=INTEGER}
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/TbShopUserMapper.xml b/src/main/resources/mapper/TbShopUserMapper.xml
index 04e272f..9716cd0 100644
--- a/src/main/resources/mapper/TbShopUserMapper.xml
+++ b/src/main/resources/mapper/TbShopUserMapper.xml
@@ -301,6 +301,19 @@
code = #{code,jdbcType=VARCHAR},
+
+
+ dynamic_code = #{dynamicCode,jdbcType=VARCHAR},
+
+
+
+
+ is_pwd = #{isPwd,jdbcType=VARCHAR},
+
+
+
+ pwd = #{pwd,jdbcType=VARCHAR},
+
is_attention = #{isAttention,jdbcType=TINYINT},