diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/controller/MemberController.java b/src/main/java/com/chaozhanggui/system/cashierservice/controller/MemberController.java index 093be20..f3bd794 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/MemberController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/MemberController.java @@ -51,7 +51,7 @@ public class MemberController { @RequestBody Map map ){ - return memberService.memberScanPay(map); + return memberService.memberScanPay(map,token); } @@ -62,7 +62,7 @@ public class MemberController { @RequestHeader("clientType") String clientType, @RequestParam("flowId") String flowId ){ - return memberService.queryScanPay(flowId); + return memberService.queryScanPay(flowId,token); } @@ -73,7 +73,7 @@ public class MemberController { @RequestHeader("clientType") String clientType, @RequestBody Map map ){ - return memberService.memberAccountPay(map); + return memberService.memberAccountPay(map,token); } 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 7b4e83f..a830c83 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/controller/PayController.java @@ -73,9 +73,10 @@ public class PayController { @RequestHeader("loginName") String loginName, @RequestHeader("clientType") String clientType, @RequestParam("orderId") String orderId, - @RequestParam("memberId") String memberId + @RequestParam("memberId") String memberId, + @RequestParam("memberAccount") String memberAccount ){ - return payService.accountPay(orderId,memberId,token); + return payService.accountPay(orderId,memberId,token,memberAccount); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopUserMapper.java b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopUserMapper.java index e4abc48..b39573e 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopUserMapper.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/dao/TbShopUserMapper.java @@ -26,4 +26,6 @@ public interface TbShopUserMapper { TbShopUser selectByUserIdAndShopId(@Param("userId") String userId,@Param("shopId") String shopId); + + TbShopUser selectByShopIdAndDdynamicCode(@Param("shopId") String shopId,@Param("memberAccount") String memberAccount); } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/ShopUserDuty.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/ShopUserDuty.java index 6b67abc..ed2e852 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/ShopUserDuty.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/ShopUserDuty.java @@ -42,6 +42,12 @@ public class ShopUserDuty implements Serializable { private String type; private List detailList; + private BigDecimal memberInAmount; + + private BigDecimal memberOutAmount; + + private BigDecimal quickAmount; + private static final long serialVersionUID = 1L; public ShopUserDuty() { 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 247afea..5d30855 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,8 @@ public class TbShopUser implements Serializable { private String code; + private String dynamicCode; + private Byte isAttention; private Integer attentionAt; @@ -285,4 +287,12 @@ public class TbShopUser implements Serializable { public void setMiniOpenId(String miniOpenId) { this.miniOpenId = miniOpenId == null ? null : miniOpenId.trim(); } + + public String getDynamicCode() { + return dynamicCode; + } + + public void setDynamicCode(String dynamicCode) { + this.dynamicCode = dynamicCode; + } } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/model/HandoverInfo.java b/src/main/java/com/chaozhanggui/system/cashierservice/model/HandoverInfo.java index ab1ab97..1c0f29c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/model/HandoverInfo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/model/HandoverInfo.java @@ -36,8 +36,10 @@ public class HandoverInfo implements Serializable { private String orderNum; + private String quickAmount; + public HandoverInfo(String merchantName, String startTime, String endTime, String staff, List payInfos, List memberData, String totalAmount, String imprest, String payable, String handIn, String returnAmount,String orderNum - ,List productCategories + ,List productCategories,String quickAmount ) { this.merchantName = merchantName; @@ -53,6 +55,7 @@ public class HandoverInfo implements Serializable { this.returnAmount=returnAmount; this.orderNum = orderNum; this.productCategories=productCategories; + this.quickAmount=quickAmount; } @Data diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java index 2fe4e3c..760655d 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CloudPrinterService.java @@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -618,7 +619,8 @@ public class CloudPrinterService { ShopUserDutyPay shopUserDutyPay=shopUserDutyPayMapper.selectByDuctIdAndType(shopUserDuty.getId(),"deposit"); if(ObjectUtil.isNotEmpty(shopUserDutyPay)){ memberData=new ArrayList<>(); - memberData.add(new HandoverInfo.MemberData(shopUserDutyPay.getAmount().toPlainString(),"储值卡支付")); + memberData.add(new HandoverInfo.MemberData(ObjectUtil.isNull(shopUserDuty.getMemberInAmount())? BigDecimal.ONE.toPlainString() : shopUserDuty.getMemberInAmount().toPlainString(),"储值卡充值")); + memberData.add(new HandoverInfo.MemberData(ObjectUtil.isNull(shopUserDuty.getMemberOutAmount())? BigDecimal.ONE.toPlainString() : shopUserDuty.getMemberOutAmount().toPlainString(),"储值卡支付")); } @@ -632,13 +634,14 @@ public class CloudPrinterService { ObjectUtil.isNotEmpty(shopUserDuty.getLoginTime())?DateUtils.getTime(shopUserDuty.getLoginTime()):null, ObjectUtil.isNotEmpty(shopUserDuty.getLoginOutTime())?DateUtils.getTime(shopUserDuty.getLoginOutTime()):"", ObjectUtil.isNull(shopStaff.getName())?"":shopStaff.getName(), - list,memberData,shopUserDuty.getAmount().toPlainString(), + list,memberData,shopUserDuty.getAmount().add(ObjectUtil.isNull(shopUserDuty.getQuickAmount())?BigDecimal.ZERO:shopUserDuty.getQuickAmount()).add(ObjectUtil.isNull(shopUserDuty.getIncomeAmount())?BigDecimal.ZERO:shopUserDuty.getIncomeAmount()).toPlainString(), "0", shopUserDuty.getAmount().subtract(shopUserDuty.getReturnAmount()).toPlainString(), - shopUserDuty.getAmount().subtract(shopUserDuty.getReturnAmount()).toPlainString(), + shopUserDuty.getAmount().add(ObjectUtil.isNull(shopUserDuty.getQuickAmount())?BigDecimal.ZERO:shopUserDuty.getQuickAmount()).add(ObjectUtil.isNull(shopUserDuty.getIncomeAmount())?BigDecimal.ZERO:shopUserDuty.getIncomeAmount()).subtract(shopUserDuty.getReturnAmount()).toPlainString(), shopUserDuty.getReturnAmount().toPlainString(), shopUserDuty.getOrderNum().toString(), - productCategories + productCategories,shopUserDuty.getQuickAmount().toPlainString() + ); String voiceJson = "{\"bizType\":\"2\",\"content\":\"您有一笔新的订单,请及时处理\"}"; PrinterUtils.printTickets(voiceJson,1,1,it.getAddress(),PrinterUtils.handoverprintData(handoverInfo)); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java index 8b900d0..6aa8e36 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/DutyService.java @@ -55,15 +55,12 @@ public class DutyService { System.out.println("数据落地开始:" + message); JSONObject jsonObject = JSON.parseObject(message); String token = jsonObject.getString("token"); + String type = jsonObject.getString("type"); - boolean quick = jsonObject.containsKey("quick"); TbToken tbToken = tbTokenMapper.selectByToken(token); String day = DateUtils.getDay(); - if (quick) { - - + if ("quick".equals(type)) { Integer tokenId = tbToken.getId(); - String orderNo = jsonObject.getString("orderNo"); BigDecimal amount = new BigDecimal(jsonObject.getString("amount")); JSONObject tokenJson = TokenUtil.parseParamFromToken(tbToken.getToken()); @@ -72,19 +69,45 @@ public class DutyService { String loginName = tokenJson.getString("loginName"); TbShopInfo shopInfo = shopInfoMapper.selectByPrimaryKey(shopId); ShopUserDuty shopUserDuty = shopUserDutyMapper.selectByShopIdAndStatus(shopId, "0"); - - if (Objects.isNull(shopUserDuty)) { - shopUserDuty = new ShopUserDuty(userId, tbToken.getCreateTime(), 1, amount, shopInfo.getShopName(), "0", - amount, shopId, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, ""); + if(Objects.isNull(shopUserDuty)){ + shopUserDuty = new ShopUserDuty(userId, tbToken.getCreateTime(), 1, BigDecimal.ZERO, shopInfo.getShopName(), "0", + BigDecimal.ZERO, shopId, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, ""); shopUserDuty.setTokenId(tokenId); shopUserDuty.setReturnAmount(BigDecimal.ZERO); shopUserDuty.setTradeDay(DateUtils.getDay()); + shopUserDuty.setQuickAmount(amount); shopUserDutyMapper.insert(shopUserDuty); + }else { + shopUserDuty.setQuickAmount(ObjectUtil.isNull(shopUserDuty.getQuickAmount())?amount:shopUserDuty.getQuickAmount().add(amount)); + shopUserDutyMapper.updateByPrimaryKey(shopUserDuty); } - } else { + } else if("memberIn".equals(type)){ + + Integer tokenId = tbToken.getId(); + BigDecimal amount = new BigDecimal(jsonObject.getString("amount")); + + JSONObject tokenJson = TokenUtil.parseParamFromToken(tbToken.getToken()); + Integer shopId = tokenJson.getInteger("shopId"); + Integer userId = tokenJson.getInteger("staffId"); + String loginName = tokenJson.getString("loginName"); + TbShopInfo shopInfo = shopInfoMapper.selectByPrimaryKey(shopId); + ShopUserDuty shopUserDuty = shopUserDutyMapper.selectByShopIdAndStatus(shopId, "0"); + if(Objects.isNull(shopUserDuty)){ + shopUserDuty = new ShopUserDuty(userId, tbToken.getCreateTime(), 1, BigDecimal.ZERO, shopInfo.getShopName(), "0", + BigDecimal.ZERO, shopId, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, ""); + shopUserDuty.setTokenId(tokenId); + shopUserDuty.setReturnAmount(BigDecimal.ZERO); + shopUserDuty.setTradeDay(DateUtils.getDay()); + shopUserDuty.setMemberInAmount(amount); + shopUserDutyMapper.insert(shopUserDuty); + }else { + shopUserDuty.setMemberInAmount(ObjectUtil.isNull(shopUserDuty.getMemberInAmount())?amount:shopUserDuty.getMemberInAmount().add(amount)); + shopUserDutyMapper.updateByPrimaryKey(shopUserDuty); + } + }else { if (type.equals("return") || type.equals("create")) { if (Objects.isNull(tbToken)) { throw new MsgException("当前用户不存在"); @@ -115,6 +138,7 @@ public class DutyService { shopUserDuty = new ShopUserDuty(userId, tbToken.getCreateTime(), 1, orderInfo.getOrderAmount(), shopInfo.getShopName(), "0", orderInfo.getOrderAmount(), shopId, BigDecimal.ZERO, cashAmount, BigDecimal.ZERO, ""); shopUserDuty.setTokenId(tokenId); + shopUserDuty.setMemberOutAmount("deposit".equals(orderInfo.getPayType())?orderInfo.getOrderAmount():BigDecimal.ZERO); shopUserDuty.setReturnAmount(BigDecimal.ZERO); shopUserDuty.setTradeDay(DateUtils.getDay()); shopUserDutyMapper.insert(shopUserDuty); @@ -139,6 +163,7 @@ public class DutyService { shopUserDuty.setAmount(shopUserDuty.getAmount().add(orderInfo.getPayAmount())); shopUserDuty.setCashAmount(shopUserDuty.getCashAmount().add(cashAmount)); shopUserDuty.setIncomeAmount(shopUserDuty.getIncomeAmount().add(orderInfo.getPayAmount())); + shopUserDuty.setMemberOutAmount("deposit".equals(orderInfo.getPayType())?ObjectUtil.isNull(shopUserDuty.getMemberOutAmount())?orderInfo.getOrderAmount():shopUserDuty.getMemberOutAmount().add(orderInfo.getOrderAmount()):shopUserDuty.getMemberOutAmount()); shopUserDuty.setOrderNum(shopUserDuty.getOrderNum() + 1); shopUserDutyMapper.updateByPrimaryKeySelective(shopUserDuty); List skuIds = new ArrayList<>(); @@ -313,7 +338,7 @@ public class DutyService { } } }catch (Exception e) { - e.getMessage(); + e.printStackTrace(); } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java index d69cd58..487e681 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/MemberService.java @@ -7,6 +7,7 @@ import com.chaozhanggui.system.cashierservice.dao.*; import com.chaozhanggui.system.cashierservice.entity.*; import com.chaozhanggui.system.cashierservice.model.ScanPayReq; import com.chaozhanggui.system.cashierservice.model.TradeQueryReq; +import com.chaozhanggui.system.cashierservice.rabbit.RabbitProducer; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.thirdpay.resp.MainScanResp; @@ -137,9 +138,11 @@ public class MemberService { return Result.success(CodeEnum.SUCCESS); } + @Autowired + RabbitProducer producer; @Transactional(rollbackFor = Exception.class) - public Result memberScanPay(Map map) { + public Result memberScanPay(Map map,String token) { if (ObjectUtil.isEmpty(map) || map.size() <= 0 || !map.containsKey("shopId") || ObjectUtil.isEmpty(map.get("shopId")) || !map.containsKey("memberId") || ObjectUtil.isEmpty(map.get("memberId")) @@ -235,6 +238,17 @@ public class MemberService { flow.setBalance(shopUser.getAmount()); flow.setCreateTime(new Date()); tbShopUserFlowMapper.insert(flow); + + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("token", token); + jsonObject.put("type", "memberIn"); + jsonObject.put("amount", memberIn.getAmount()); + + producer.putOrderCollect(jsonObject.toJSONString()); + + + return Result.success(CodeEnum.SUCCESS, memberIn); } else { String status = ObjectUtil.isNotEmpty(object.getJSONObject("data")) ? object.getJSONObject("data").getString("status") : null; @@ -304,11 +318,11 @@ public class MemberService { tbShopUserFlowMapper.insert(flow); } - - - - - + JSONObject jsonObject = new JSONObject(); + jsonObject.put("token", token); + jsonObject.put("type", "memberIn"); + jsonObject.put("amount",memberIn.getAmount()); + producer.putOrderCollect(jsonObject.toJSONString()); return Result.success(CodeEnum.SUCCESS, memberIn); @@ -333,7 +347,7 @@ public class MemberService { } - public Result queryScanPay(String flowId) { + public Result queryScanPay(String flowId,String token) { if (ObjectUtil.isEmpty(flowId)) { return Result.fail(CodeEnum.PARAM); } @@ -440,6 +454,15 @@ public class MemberService { flow.setAmount(awardAmount); flow.setBalance(shopUser.getAmount()); flow.setCreateTime(new Date()); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("token", token); + jsonObject.put("quick", "quick"); + jsonObject.put("consumeType","in"); + jsonObject.put("amount",memberIn.getAmount()); + + producer.putOrderCollect(jsonObject.toJSONString()); + tbShopUserFlowMapper.insert(flow); } return Result.success(CodeEnum.SUCCESS, memberIn); @@ -456,7 +479,7 @@ public class MemberService { @Transactional(rollbackFor = Exception.class) - public Result memberAccountPay(Map map) { + public Result memberAccountPay(Map map,String token) { if (ObjectUtil.isEmpty(map) || map.size() <= 0 || !map.containsKey("shopId") || ObjectUtil.isEmpty(map.get("shopId")) || !map.containsKey("memberId") || ObjectUtil.isEmpty(map.get("memberId")) @@ -532,6 +555,13 @@ public class MemberService { flow.setBalance(shopUser.getAmount()); flow.setCreateTime(new Date()); tbShopUserFlowMapper.insert(flow); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("token", token); + jsonObject.put("type", "memberIn"); + jsonObject.put("amount",memberIn.getAmount()); + + producer.putOrderCollect(jsonObject.toJSONString()); } 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 8de0936..e10396c 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -409,9 +409,20 @@ public class PayService { } @Transactional(rollbackFor = Exception.class) - public Result accountPay(String orderId, String memberId, String token) { - if (ObjectUtil.isEmpty(orderId) || ObjectUtil.isEmpty(memberId)) { - return Result.fail(CodeEnum.PARAM); + public Result accountPay(String orderId, String memberId, String token,String memberAccount) { + if (ObjectUtil.isEmpty(orderId) ) { + if(ObjectUtil.isEmpty(memberAccount)){ + if(ObjectUtil.isEmpty(memberId)){ + return Result.fail(CodeEnum.PARAM); + } + } + + if(ObjectUtil.isEmpty(memberId)){ + if(ObjectUtil.isEmpty(memberAccount)){ + return Result.fail(CodeEnum.PARAM); + } + } + } TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId)); @@ -431,7 +442,18 @@ public class PayService { } - TbShopUser user = tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(memberId)); + TbShopUser user =null; + + if(ObjectUtil.isNotEmpty(memberId)){ + user =tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(memberId)); + } + + + if(ObjectUtil.isNotEmpty(memberAccount)){ + user=tbShopUserMapper.selectByShopIdAndDdynamicCode(orderInfo.getShopId(),memberAccount); + } + + if (ObjectUtil.isEmpty(user) || !"1".equals(user.getIsVip().toString())) { return Result.fail(CodeEnum.MEMBERNOEXIST); } @@ -889,6 +911,14 @@ public class PayService { tbQuickPay.setStatus("0"); tbQuickPay.setUpdateTime(new Date()); tbQuickPayMapper.insert(tbQuickPay); + + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("token", token); + jsonObject.put("type", "quick"); + jsonObject.put("amount",tbQuickPay.getAmount()); + producer.putOrderCollect(jsonObject.toJSONString()); + return Result.success(CodeEnum.SUCCESS, tbQuickPay); } else { @@ -940,8 +970,7 @@ public class PayService { JSONObject jsonObject = new JSONObject(); jsonObject.put("token", token); - jsonObject.put("quick", "quick"); - jsonObject.put("orderNo",tbQuickPay.getOrderNo()); + jsonObject.put("type", "quick"); jsonObject.put("amount",tbQuickPay.getAmount()); producer.putOrderCollect(jsonObject.toJSONString()); diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java index bb551f7..9038c94 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/PrinterUtils.java @@ -185,6 +185,8 @@ public class PrinterUtils { sb.append(" "+productCategory.getCategoryName()+" "+ productCategory.getNum()+" "+productCategory.getAmount()+"
"); } } + + sb.append("快捷收款金额 :".concat(ObjectUtil.isNull(handoverInfo.getQuickAmount())?"0":handoverInfo.getQuickAmount())+"
"); sb.append("退款金额 :".concat(handoverInfo.getReturnAmount())+"
"); sb.append("总收入: "+handoverInfo.getTotalAmount()+"
"); sb.append("备用金: "+handoverInfo.getImprest()+"
"); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 5415ce2..1f2a3a2 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -17,7 +17,7 @@ spring: com.chaozhanggui.system.openness: info redis: # redis数据库索引(默认为0),我们使用索引为3的数据库,避免和其他数据库冲突 - database: 1 + database: 0 # redis服务器地址(默认为localhost) host: 101.37.12.135 # redis端口(默认为6379) diff --git a/src/main/resources/mapper/ShopUserDutyMapper.xml b/src/main/resources/mapper/ShopUserDutyMapper.xml index 4e9005b..00a2096 100644 --- a/src/main/resources/mapper/ShopUserDutyMapper.xml +++ b/src/main/resources/mapper/ShopUserDutyMapper.xml @@ -20,10 +20,14 @@ + + + + id, user_id, login_time, order_num, amount, login_out_time, user_name, status, income_amount, - shop_id, petty_cash, cash_amount, hand_amount, equipment,return_amount,token_id,trade_day,type + shop_id, petty_cash, cash_amount, hand_amount, equipment,return_amount,token_id,trade_day,type,member_in_amount,member_out_amount,quick_amount select @@ -377,4 +379,8 @@ + + \ No newline at end of file