From 7265489d49f986f147c0104ee12b7ffaf6795a8a Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Mon, 30 Mar 2020 11:14:20 +0800 Subject: [PATCH 1/6] =?UTF-8?q?[POS][=E4=BF=AE=E6=94=B9]:=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=90=8C=E6=AD=A5=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=A3=80?= =?UTF-8?q?=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/controller/PosController.java | 4 ++++ .../java/com/iformall/service/impl/PosServiceImpl.java | 10 +++++++++- .../src/main/java/com/iformall/pay/WxPayConstant.java | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java b/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java index 328ff0840..499d0e5e2 100644 --- a/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java +++ b/mallinkPosApi/src/main/java/com/iformall/controller/PosController.java @@ -298,6 +298,10 @@ public class PosController extends BaseController { "\"order_amount\":\"string单位(分)(必填)\"," + "\"order_amount_left\":\"string单位(分)(选填)\"," + "\"order_create_sn\":\"string单位(分)(必填)\"," + + "\"payment_detail\":{支付时必填...." + + "}" + + "\"refund_detail\":{退款时必填...." + + "}" + "\"payment_info\":{" + "\"card_id\":\"string(必填)\"," + "\"card_spend_id\":\"string(必填)\"," + diff --git a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java index f8de6e1c0..ffab6c2d6 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java @@ -1784,7 +1784,7 @@ public class PosServiceImpl implements PosService { String buUserIdStr = params.get(WxPayConstant.BUSER_ID); // POS操作员ID String cuUserIdStr = params.get(WxPayConstant.MEM_ID); // 富茂系统会员ID String cuPhoneStr = params.get(WxPayConstant.MEM_PHONE); // 富茂系统会员手机号 - String sceneTypeStr = params.get(WxPayConstant.SCENE_TYPE); // 场景类型 + String sceneTypeStr = params.get(WxPayConstant.SCENE_TYPE); // 场景类型 String posOrderIdStr = params.get(WxPayConstant.POS_ORDER_ID); // POS订单ID String posOrderTimeStr = params.get(WxPayConstant.POS_ORDER_TIME); // POS订单时间 String posAmountStr = params.get(WxPayConstant.ORDER_AMOUNT); // POS订单总额 @@ -1855,9 +1855,17 @@ public class PosServiceImpl implements PosService { WxMerchantBUser merchantBUser = checkAndGetMerchantUser(buUserId, merchantId); // 4. 同步 if (posStatusStr.equalsIgnoreCase(WxPayConstant.NEU_ORDER_PAY)) { + String payDetail = params.get(WxPayConstant.PAY_DETAIL); + if (StringUtils.isBlank(posStatusStr)) { + errParam(WxPayConstant.PAYMENT_DETAIL); + } // 4.1 支付同步 syncOrder(params, merchant, merchantBUser, iSceneType, posOrderId, memId, posAmount, orderTime, orderCreateSN); } else if (posStatusStr.equalsIgnoreCase(WxPayConstant.NEU_ORDER_REFUND)) { + String payDetail = params.get(WxPayConstant.NEU_REFUND_DETAIL); + if (StringUtils.isBlank(posStatusStr)) { + errParam(WxPayConstant.REFUND_DETAIL); + } // 退款同步 syncRefundOrder(params, merchantBUser, iSceneType, posOrderId, memId, posAmount, orderTime, orderCreateSN); } diff --git a/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java b/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java index 99d482895..ff0fb12d0 100644 --- a/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java +++ b/mallinkService/src/main/java/com/iformall/pay/WxPayConstant.java @@ -114,6 +114,9 @@ public class WxPayConstant { public final static String REMAIN_AMOUNT = "remain_amount"; public final static String ORDER_STATUS = "order_status"; + public final static String PAYMENT_DETAIL = "payment_detail"; + public final static String REFUND_DETAIL = "refund_detail"; + public final static String POINT = "point"; public final static String CREDIT = "credit"; From 53fa6dcc7b92f98edc9ef5df8ef3d44bcad42330 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Mon, 30 Mar 2020 19:14:08 +0800 Subject: [PATCH 2/6] =?UTF-8?q?[=E5=8D=A1=E6=B6=88=E8=B4=B9=E5=88=97?= =?UTF-8?q?=E8=A1=A8][=E4=BF=AE=E6=94=B9]:=E4=BF=AE=E5=A4=8Dcrash?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/iformall/domain/po/WxCardInfo.java | 4 ---- .../com/iformall/service/impl/WxCardSpendServiceImpl.java | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCardInfo.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCardInfo.java index 89a2ce960..172354dd6 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCardInfo.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCardInfo.java @@ -58,9 +58,5 @@ public class WxCardInfo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "是否支持转送(0:不支持,1支持)", name = "supportTransfer") private Integer supportTransfer; - public boolean isBuyed() { - return saleAmount > 0; - } - } 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 401e118e4..793cfd1e4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardSpendServiceImpl.java @@ -247,7 +247,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { if (payAccount.checkShare()) { // 分账 - if (cardInfo.isBuyed()) { + if (cardInfo.getSaleAmount() > 0) { // 9. 只有有价卡才能分账 try { shareForCardPay(record, record.getCardId(), record.getOrderId(), record.getId()); @@ -270,7 +270,7 @@ public class WxCardSpendServiceImpl implements WxCardSpendService { } } else { // 有价储值卡消费时,如果未启用分账,金额也记入补贴表,可能会导致查询错误, TODO - if (cardInfo.isBuyed() && payment > 0) { + if (cardInfo.getSaleAmount() > 0 && payment > 0) { try { creteMerchantSubsidy(record, curDate, idWorker, coupon, payment); } catch (Exception ex) { From 09d56393b4beb332b7dd9c89d2a96c4be3b937b9 Mon Sep 17 00:00:00 2001 From: Gitea Date: Mon, 30 Mar 2020 17:27:58 +0800 Subject: [PATCH 3/6] =?UTF-8?q?[=E6=B8=B8=E6=88=8F=E5=8F=91=E5=88=B8]?= =?UTF-8?q?=E6=8A=BD=E5=A5=96=E6=97=B6=E8=AE=BE=E7=BD=AE=E5=88=B8=E7=BC=93?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WxGameServiceImpl.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java index 0ecefd21e..63054c3c1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java @@ -10,6 +10,7 @@ import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.*; +import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import com.iformall.enums.EnumCouponChannelStatus; import com.iformall.enums.EnumCouponChannelType; @@ -24,11 +25,15 @@ import com.iformall.service.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.concurrent.TimeUnit; @Service public class WxGameServiceImpl implements WxGameService { @@ -58,6 +63,10 @@ public class WxGameServiceImpl implements WxGameService { @Autowired private QrCodeService qrCodeService; + @Autowired + @Qualifier("couponDetailRedisTemplate") + RedisTemplate cdRedisTemplate; + @Override public PageInfo listAsPage(WxGame record, Integer pageIndex, Integer pageSize) { PageInfo page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxGameMapper.findList(record)); @@ -176,6 +185,7 @@ public class WxGameServiceImpl implements WxGameService { // get game's coupon List couponIdsList = new ArrayList(); JSONArray couponChannelIds = JSON.parseArray(record.getCouponIds()); + ValueOperations operations = cdRedisTemplate.opsForValue(); for(int i=0; i Date: Mon, 30 Mar 2020 19:32:25 +0800 Subject: [PATCH 4/6] =?UTF-8?q?[=E6=B8=B8=E6=88=8F][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WxGameServiceImpl.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java index 63054c3c1..0ecefd21e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java @@ -10,7 +10,6 @@ import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.*; -import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponChannelVo; import com.iformall.enums.EnumCouponChannelStatus; import com.iformall.enums.EnumCouponChannelType; @@ -25,15 +24,11 @@ import com.iformall.service.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.*; -import java.util.concurrent.TimeUnit; @Service public class WxGameServiceImpl implements WxGameService { @@ -63,10 +58,6 @@ public class WxGameServiceImpl implements WxGameService { @Autowired private QrCodeService qrCodeService; - @Autowired - @Qualifier("couponDetailRedisTemplate") - RedisTemplate cdRedisTemplate; - @Override public PageInfo listAsPage(WxGame record, Integer pageIndex, Integer pageSize) { PageInfo page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxGameMapper.findList(record)); @@ -185,7 +176,6 @@ public class WxGameServiceImpl implements WxGameService { // get game's coupon List couponIdsList = new ArrayList(); JSONArray couponChannelIds = JSON.parseArray(record.getCouponIds()); - ValueOperations operations = cdRedisTemplate.opsForValue(); for(int i=0; i Date: Mon, 30 Mar 2020 19:37:40 +0800 Subject: [PATCH 5/6] =?UTF-8?q?[=E6=B8=B8=E6=88=8F][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E7=BC=93=E5=AD=98=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/controller/WxOrderController.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 226afb48b..9c6c6c175 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -33,6 +33,7 @@ import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.Map; +import java.util.concurrent.TimeUnit; @RestController @RequestMapping("/api/order/") @@ -87,6 +88,13 @@ public class WxOrderController extends BaseController { if (hasKey) { // 从缓存获取用户信息 wxCouponCVo = operations.get(key); + } else { + // 游戏没有入缓存,需要从数据库中读取 + wxCouponCVo = wxCouponChannelService.findDetailVo(orderSaveDto.getCouponChannelId()); + if (wxCouponCVo != null) { + // 游戏优化,进缓存 + cdRedisTemplate.opsForValue().set(key, wxCouponCVo, 3600, TimeUnit.SECONDS); + } } if (wxCouponCVo == null) { return new ResultData(ErrorCode.COUPON_IS_EMPTY); From 3821ed33da3a659cc7f395cc40d94d9f99740b75 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Mon, 30 Mar 2020 19:41:16 +0800 Subject: [PATCH 6/6] =?UTF-8?q?[B=E7=AB=AF][=E4=BF=AE=E6=94=B9]:getByOpenI?= =?UTF-8?q?d=20selectOne=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/service/impl/WxBuserServiceImpl.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBuserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBuserServiceImpl.java index 8b2576f71..cca144668 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBuserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBuserServiceImpl.java @@ -38,7 +38,15 @@ public class WxBuserServiceImpl implements WxBuserService { @Override public WxBuser getByOpenId(WxBuser record) { - return wxBuserMapper.findByOpenId(record); + try { + List list = wxBuserMapper.selectList(new QueryWrapper(record)); + if (list.size() > 0) { + return list.get(0); + } + } catch (Exception e) { + logger.error("NOT found: " + e.getMessage()); + } + return null; } @Override