diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170031__MENU_CHANGED.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170031__MENU_CHANGED.sql new file mode 100644 index 000000000..b1cab12ce --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170031__MENU_CHANGED.sql @@ -0,0 +1,24 @@ +DROP TABLE IF EXISTS `mall_sale_type` ; +CREATE TABLE `mall_sale_type` ( + `id` bigint(64) NOT NULL, + `name` varchar(32) DEFAULT NULL COMMENT '销售类型', + `type` tinyint(2) DEFAULT NULL COMMENT '资源类型1:尊享全能版 2:尊享营销版 3.速享版', + `period` tinyint(2) DEFAULT NULL COMMENT '有效期(单位月)', + `menus` json DEFAULT NULL COMMENT '菜单列表', + PRIMARY KEY (`id`), + UNIQUE `id_UNIQUE` USING BTREE (`id`) comment '' +) ENGINE=`InnoDB` ROW_FORMAT=DYNAMIC COMMENT='系统销售表' CHECKSUM=0 DELAY_KEY_WRITE=0; + +INSERT INTO `mall_sale_type` + (`id`,`name`, `type`, `period`, `menus`) +VALUES + (1, '尊享全能版', 1, 12, + '[1,2,3,4,5,6,7,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]' + ), + (2, '尊享营销版', 2, 12, + '[1,2,4,5,6,7,8,9,10,50,101,102,103,104,105,106,107,201,202,203,204,205,211,212,221,222,251,409,410,411,416,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,592,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932,951,961]' + ), + (3, '速享版', 3, 1, + '[2,4,5,6,7,10,50,201,202,205,211,212,221,222,251,409,410,411,416,501,502,503,504,505,506,507,508,511,512,513,521,522,523,531,532,533,591,592,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,711,712,713,901,902,903,931,932]' + ) + ; diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/PromotionCalc.java b/mallinkService/src/main/java/com/iformall/domain/vo/PromotionCalc.java index 99dd6bc5c..672b5d54a 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/PromotionCalc.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/PromotionCalc.java @@ -2,8 +2,10 @@ package com.iformall.domain.vo; import com.iformall.domain.po.BaseEntity; import lombok.Data; +import lombok.EqualsAndHashCode; @Data +@EqualsAndHashCode(callSuper = true) public class PromotionCalc extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="订单总金额",name="orderAmount") Integer orderAmount; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java index e458926d0..1efac2b15 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java @@ -447,36 +447,41 @@ public class WxBillSettleServiceImpl implements WxBillSettleService { final IdWorker idWorker = IdWorker.get(); //检查账单是否存在其他结算单中 - WxBillSettle query = new WxBillSettle(); - query.setId(record.getId()); - List list = new ArrayList<>(); - list.addAll(record.getReceiveBillIds()); - list.addAll(record.getPayBillIds()); - query.setReceiveBillIds(list); - List existList = wxBillSettleBillMapper.findExist(query); - Set idSet = new HashSet(); - if(CollectionUtils.isNotEmpty(existList)){ - for (WxBillSettleBill b:existList) { - idSet.add(b.getBillId()); - } - String ids = ""; - for (Long id:idSet) { - WxBillSettleBill queryBill = new WxBillSettleBill(); - queryBill.setBillId(id); - queryBill.setType(getType(id,record)); - WxBillSettleBill db = wxBillSettleBillMapper.findByBillId(queryBill).get(0); - BigDecimal r = new BigDecimal(db.getReceivePay()).divide(new BigDecimal(100),2,BigDecimal.ROUND_HALF_UP); - ids += db.getBillName()+r.toString()+"元,"; - } - - return new ResultData(ErrorCode.DB_FAIL.getCode(), ids.substring(0,ids.length()-1)+"已经在其他结算单中,请移除!"); - } +// WxBillSettle query = new WxBillSettle(); +// query.setId(record.getId()); +// List list = new ArrayList<>(); +// list.addAll(record.getReceiveBillIds()); +// list.addAll(record.getPayBillIds()); +// query.setReceiveBillIds(list); +// List existList = wxBillSettleBillMapper.findExist(query); +// Set idSet = new HashSet(); +// if(CollectionUtils.isNotEmpty(existList)){ +// for (WxBillSettleBill b:existList) { +// idSet.add(b.getBillId()); +// } +// String ids = ""; +// for (Long id:idSet) { +// WxBillSettleBill queryBill = new WxBillSettleBill(); +// queryBill.setBillId(id); +// queryBill.setType(getType(id,record)); +// WxBillSettleBill db = wxBillSettleBillMapper.findByBillId(queryBill).get(0); +// BigDecimal r = new BigDecimal(db.getReceivePay()).divide(new BigDecimal(100),2,BigDecimal.ROUND_HALF_UP); +// ids += db.getBillName()+r.toString()+"元,"; +// } +// +// return new ResultData(ErrorCode.DB_FAIL.getCode(), ids.substring(0,ids.length()-1)+"已经在其他结算单中,请移除!"); +// } if (record.getFlowParams() == null || record.getFlowParams().size() == 0) { record.setStatus(EnumSettleStatus.NOT_FINISH.getCode()); //选择的账单改为已结清 updateFreezeOrStatus(record.getReceiveBillIds(), null,EnumBillRentStatus.PAID.getCode()); updateFreezeOrStatus(record.getPayBillIds(), null,EnumBillRentStatus.PAID.getCode()); + + //刚好结清 + if(record.getReceiveMoney().equals(record.getPayMoney())){ + record.setStatus(EnumSettleStatus.FINISH.getCode()); + } } if (record.getId() == null) { record.setId(idWorker.nextId()); @@ -543,3 +548,4 @@ public class WxBillSettleServiceImpl implements WxBillSettleService { } } + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java index 2c5c7e238..ffaa007b6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -125,7 +125,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { // 4. 扣减计算 Double paymentD = 1.0 * cardInfo.getSaleAmount() * record.getDeductionAmount() / cardInfo.getAmount(); Integer payment = paymentD.intValue(); - int iChargeFee = PayUtils.getPayRate(payment, payAccount.getRate()); + int iChargeFee = PayUtils.getPayRate(payment, payAccount.getRate(), false); Integer real_payment = payment - iChargeFee; Integer remain_real_pament = cardInfo.getRemainingShareFeeAmount() - real_payment; Integer remaingAmount = cardInfo.getRemainingAmount()-record.getDeductionAmount(); @@ -200,7 +200,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { logger.info("补贴额: " + subsidyFee); if(subsidyFee > 0) { // 有补贴时入库 - int iSubChargeFee = PayUtils.getPayRate(subsidyFee, payAccount.getRate()); + int iSubChargeFee = PayUtils.getPayRate(subsidyFee, payAccount.getRate(), false); Integer realSubsidyFee = subsidyFee - iSubChargeFee; WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); merchantSubsidy.setId(idWorker.nextId()); @@ -599,7 +599,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { // 4. 扣减计算 Double paymentD = 1.0 * cardInfo.getSaleAmount() * record.getDeductionAmount() / cardInfo.getAmount(); Integer payment = paymentD.intValue(); - int iChargeFee = PayUtils.getPayRate(payment, payAccount.getRate()); + int iChargeFee = PayUtils.getPayRate(payment, payAccount.getRate(), false); Integer real_payment = payment - iChargeFee; Integer remain_real_pament = cardInfo.getRemainingShareFeeAmount() - real_payment; Integer remaingAmount = cardInfo.getRemainingAmount()-record.getDeductionAmount(); @@ -680,7 +680,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { // 4. 增加计算 Double paymentD = 1.0 * cardInfo.getSaleAmount() * record.getDeductionAmount() / cardInfo.getAmount(); Integer payment = paymentD.intValue(); - int iChargeFee = PayUtils.getPayRate(payment, payAccount.getRate()); + int iChargeFee = PayUtils.getPayRate(payment, payAccount.getRate(), false); Integer real_payment = payment - iChargeFee; Integer remain_real_pament = cardInfo.getRemainingShareFeeAmount() + real_payment; Integer remaingAmount = cardInfo.getRemainingAmount()+record.getDeductionAmount(); @@ -772,7 +772,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { logger.info("补贴额: " + subsidyFee); if(subsidyFee > 0) { // 有补贴时入库 - int iSubChargeFee = PayUtils.getPayRate(subsidyFee, payAccount.getRate()); + int iSubChargeFee = PayUtils.getPayRate(subsidyFee, payAccount.getRate(), false); Integer realSubsidyFee = subsidyFee - iSubChargeFee; WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); merchantSubsidy.setId(idWorker.nextId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index f2c0fd52f..6e4a3380a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -509,10 +509,10 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } if (subsidyNum != null && subsidyNum.intValue() > 0) { // 有补贴时入库 - int iSubChargeFee = PayUtils.getPayRate(subsidyNum, payAccount.getRate()); + int iSubChargeFee = PayUtils.getPayRate(subsidyNum, payAccount.getRate(), false); Integer realSubsidyFee = subsidyNum - iSubChargeFee; - int iPriceChargeFee = PayUtils.getPayRate(coupon.getSalePrice(), payAccount.getRate()); + int iPriceChargeFee = PayUtils.getPayRate(coupon.getSalePrice(), payAccount.getRate(), false); Integer realPayment = coupon.getSalePrice() - iPriceChargeFee; WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java index f7a549cee..6b1e9be95 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java @@ -309,11 +309,17 @@ public class WxFlowServiceImpl implements WxFlowService { wxBillSettle.setStatus(EnumSettleStatus.NOT_FINISH.getCode()); wxBillSettleService.updateFreezeOrStatus(settle.getReceiveBillIds(), EnumFreezeType.DEF.getCode(),EnumBillRentStatus.PAID.getCode()); wxBillSettleService.updateFreezeOrStatus(settle.getPayBillIds(),EnumFreezeType.DEF.getCode(),EnumBillRentStatus.PAID.getCode()); + + //刚好结清 + if(settle.getReceiveMoney().equals(settle.getPayMoney())){ + wxBillSettle.setStatus(EnumSettleStatus.FINISH.getCode()); + } }else if(EnumRentContractAppStatus.SETBACK.getCode().intValue() == applyStatus.intValue() || EnumRentContractAppStatus.REJECT.getCode().intValue() == applyStatus.intValue()) { //解冻 wxBillSettleService.updateFreezeOrStatus(settle.getReceiveBillIds(), EnumFreezeType.DEF.getCode(),null); wxBillSettleService.updateFreezeOrStatus(settle.getPayBillIds(),EnumFreezeType.DEF.getCode(),null); } + wxBillSettleMapper.updateByPrimaryKeySelective(wxBillSettle); } } @@ -549,7 +555,7 @@ public class WxFlowServiceImpl implements WxFlowService { public boolean isBill(Integer flowType){ if(EnumFlowKey.BILL.getCode().equals(flowType) ||EnumFlowKey.NEW_BILL_CHANGE.getCode().equals(flowType)){ - return true; + return true; } return false; } @@ -1516,4 +1522,10 @@ public class WxFlowServiceImpl implements WxFlowService { public List getModelBybusiness(WxFlowModel wxFlowModel) { return wxFlowModelMapper.getModelBybusiness(wxFlowModel); } + + public static void main(String[] args) { + new Thread(() -> System.out.println(1 + "hello world")).start(); + + } } + diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 578b45146..003c319d5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -228,11 +228,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setShare(isShare.getCode()); if (isShare == EnumPayShare.YES) { // 分账金额 - int iChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRate()); + int iChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRate(), false); Integer share_amount = record.getPayAmount() - iChargeFee; record.setShareAmount(share_amount); if(payAccount.getRealRate() != null) { - int iRealChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRealRate()); + int iRealChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRealRate(), true); if(iChargeFee > iRealChargeFee) { record.setRateAmount(iChargeFee - iRealChargeFee); } @@ -459,11 +459,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setShare(isShare.getCode()); if (isShare == EnumPayShare.YES) { // 分账金额 - int iChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRate()); + int iChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRate(), false); Integer share_amount = record.getPayAmount() - iChargeFee; record.setShareAmount(share_amount); if(payAccount.getRealRate() != null) { - int iRealChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRealRate()); + int iRealChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRealRate(), true); record.setRateAmount(iRealChargeFee); } if (share_amount <= 0) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxSubsidyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxSubsidyServiceImpl.java index 1ec3a1d08..547ebea7d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxSubsidyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxSubsidyServiceImpl.java @@ -114,7 +114,7 @@ public class WxSubsidyServiceImpl implements WxSubsidyService { record.setPayTimeEnd(curDate); record.setAmount(totalFee); // 分账金额 - int iChargeFee = PayUtils.getPayRate(record.getAmount(), payAccount.getRate()); + int iChargeFee = PayUtils.getPayRate(record.getAmount(), payAccount.getRate(), false); Integer share_amount = record.getAmount() - iChargeFee; record.setShareAmount(share_amount); record.setShareRemainAmount(share_amount); diff --git a/mallinkService/src/main/java/com/iformall/utils/PayUtils.java b/mallinkService/src/main/java/com/iformall/utils/PayUtils.java index d7ea670ba..10133e3b1 100755 --- a/mallinkService/src/main/java/com/iformall/utils/PayUtils.java +++ b/mallinkService/src/main/java/com/iformall/utils/PayUtils.java @@ -15,10 +15,16 @@ public class PayUtils { * @param rate 万分之几 * @return */ - public static int getPayRate(int payAmount, int rate) { + public static int getPayRate(int payAmount, int rate, boolean isReal) { Double dBaseAmount = 5.0D * 1000 / rate; // 基础分 千分之6 83分 - if(payAmount > dBaseAmount.intValue()) { + if (isReal) { + // 小于基础分,四舍五入 + Double dPayRate = 1.0D * payAmount * rate / 10000; + long dChargeFee = Math.round(dPayRate); + return Long.valueOf(dChargeFee).intValue(); + } + else if(payAmount > dBaseAmount.intValue()) { // 大于基础分,不小于他的最小整数 Double dChargeFee = Math.ceil(payAmount * 1.0D * rate / 10000); return dChargeFee.intValue(); @@ -30,21 +36,14 @@ public class PayUtils { } } + /* public static void main(String[] args) { - int iValue = getPayRate(100, 60); - System.out.println(iValue); - - iValue = getPayRate(200, 60); - System.out.println(iValue); - - iValue = getPayRate(82, 60); - System.out.println(iValue); - - iValue = getPayRate(83, 60); + int iValue = getPayRate(600, 60, false); System.out.println(iValue); - iValue = getPayRate(84, 60); + iValue = getPayRate(600, 20, true); System.out.println(iValue); } + */ } diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java index cc1ce4e7e..730d16e8d 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java @@ -55,14 +55,14 @@ public class DataInitController { */ @Transactional(rollbackFor = Exception.class) public void addBirthDayMsgModel() { - List list = signatureMapper.selectAll(); - Map tenantOfSignature = list.stream().collect(Collectors.toMap(WxMsgSignature::getTenantId, WxMsgSignature::getName)); + //List list = signatureMapper.selectAll(); + //Map tenantOfSignature = list.stream().collect(Collectors.toMap(WxMsgSignature::getTenantId, WxMsgSignature::getName)); IdWorker idWorker = IdWorker.get(); - addBirthDayMsgModelToMall(tenantOfSignature, EnumMsgModel.COUPON_BIRTHDAY_OPENED, idWorker, "亲到的{userName},在您的生日到来之际,我们精心的为您准备了一份生日礼物,并在生日当天消费领取{creditScale}倍积分,赶快打开{mallName}微信小程序领取您的专属生日礼物吧!"); - addBirthDayMsgModelToMall(tenantOfSignature, EnumMsgModel.COUPON_BIRTHDAY_OPENED_NO, idWorker, "亲到的{userName},在您的生日到来之际,我们精心的为您准备了一份生日礼物,赶快打开{mallName}微信小程序领取您的专属生日礼物吧!"); + addBirthDayMsgModelToMall(EnumMsgModel.COUPON_BIRTHDAY_OPENED, idWorker, "亲到的{userName},在您的生日到来之际,我们精心的为您准备了一份生日礼物,并在生日当天消费领取{creditScale}倍积分,赶快打开{mallName}微信小程序领取您的专属生日礼物吧!"); + addBirthDayMsgModelToMall(EnumMsgModel.COUPON_BIRTHDAY_OPENED_NO, idWorker, "亲到的{userName},在您的生日到来之际,我们精心的为您准备了一份生日礼物,赶快打开{mallName}微信小程序领取您的专属生日礼物吧!"); } - private void addBirthDayMsgModelToMall(Map tenantOfSignature, EnumMsgModel type, IdWorker idWorker, String content) { + private void addBirthDayMsgModelToMall(EnumMsgModel type, IdWorker idWorker, String content) { //查找已经添加过的接口列表 WxMsgValidationcodeModel query = new WxMsgValidationcodeModel(); query.setMsgType(1); @@ -70,19 +70,19 @@ public class DataInitController { List dbModelList = modelMapper.select(query); Map dbModelMap = dbModelList.stream().collect(Collectors.toMap(WxMsgValidationcodeModel::getTenantId, WxMsgValidationcodeModel::getName)); - List malls = mallMapper.selectAll(); + List malls = mallMapper.findList(new WxMall()); malls.stream().filter(wxMall -> !dbModelMap.containsKey(wxMall.getTenantId())).forEach(wxMall -> { - addBirthDayMsgModelItem(tenantOfSignature, idWorker, wxMall, type, content); + addBirthDayMsgModelItem(idWorker, wxMall, type, content); }); } - private void addBirthDayMsgModelItem(Map tenantOfSignature, IdWorker idWorker, WxMall wxMall, EnumMsgModel msgModel, String content) { + private void addBirthDayMsgModelItem(IdWorker idWorker, WxMall wxMall, EnumMsgModel msgModel, String content) { WxMsgValidationcodeModel model = new WxMsgValidationcodeModel(); model.setTenantId(wxMall.getTenantId()); model.setId(idWorker.nextId()); model.setType(msgModel.getCode()); model.setName(msgModel.getMessage()); - model.setSignature(tenantOfSignature.get(wxMall.getTenantId())); + model.setSignature(wxMall.getName()); model.setContent(content); model.setCreatetime(new Date()); model.setStatus(1);