| @@ -167,15 +167,15 @@ public class PosController extends BaseController { | |||||
| "\"mem_phone_number\":\"string(选填)\"," + | "\"mem_phone_number\":\"string(选填)\"," + | ||||
| "\"business_type\":\"string(0:核销1支付(必填)\"," + | "\"business_type\":\"string(0:核销1支付(必填)\"," + | ||||
| "\"order_number_of_platform\":\"string(必填)\"," + | "\"order_number_of_platform\":\"string(必填)\"," + | ||||
| "\"order_amount\":\"string单位(分)(必填)\"," + | |||||
| "\"order_amount_left\":\"string单位(分)(必填)\"," + | |||||
| "\"order_amount\":\"string单位(分)(选填)\"," + | |||||
| "\"order_amount_left\":\"string单位(分)(选填)\"," + | |||||
| "\"order_create_sn\":\"string单位(分)(必填)\"," + | "\"order_create_sn\":\"string单位(分)(必填)\"," + | ||||
| "\"payment_info\":{" + | "\"payment_info\":{" + | ||||
| "\"coupon_id\":\"string(必填)\"," + | "\"coupon_id\":\"string(必填)\"," + | ||||
| "\"order_amount\":\"string单位(分)(必填)\"," + | |||||
| "\"amount_left\":\"string单位(分)(必填)\"," + | |||||
| "\"promotion_amount\":\"string单位(分)(必填)\"," + | |||||
| "\"amount_left_after_pay\":\"string单位(分)(必填)\"" + | |||||
| "\"order_amount\":\"string单位(分)(选填)\"," + | |||||
| "\"amount_left\":\"string单位(分)(选填)\"," + | |||||
| "\"promotion_amount\":\"string单位(分)(选填)\"," + | |||||
| "\"amount_left_after_pay\":\"string单位(分)(选填)\"" + | |||||
| "}}") | "}}") | ||||
| @PostMapping("/couponOrderVerifyCancel") | @PostMapping("/couponOrderVerifyCancel") | ||||
| @SystemControllerLog(description = "券核销取消") | @SystemControllerLog(description = "券核销取消") | ||||
| @@ -201,73 +201,6 @@ public class PosController extends BaseController { | |||||
| return buildReturnMap(retObj, resKey, WxPayConstant.RET_SUCCESS, "",500, e.getMessage()); | return buildReturnMap(retObj, resKey, WxPayConstant.RET_SUCCESS, "",500, e.getMessage()); | ||||
| } | } | ||||
| } | } | ||||
| /* | |||||
| @ApiOperation(value = "POS支付-券", notes = "{" + | |||||
| "\"dev_id\":\"string(必填)\"," + | |||||
| "\"nonce_str\":\"string(必填)\"," + | |||||
| "\"tenant_id\":\"string(必填)\"," + | |||||
| "\"merchant_id\":\"string(必填)\"," + | |||||
| "\"bu_user_id\":\"string(必填)\"," + | |||||
| "\"sel_co_list\":\"json array[券包ID list](必填),例[\"1\",\"2\",\"3\"]\"" + | |||||
| "\"pos_order_id\":\"string(必填)\"," + | |||||
| "\"pos_amount\":\"string(必填)\"}") | |||||
| @PostMapping("/couponOrderPay") | |||||
| @SystemControllerLog(description = "POS支付-券") | |||||
| public Map<String, String> couponOrderPay(@RequestBody Map<String, String> params) { | |||||
| JSONObject payContent = new JSONObject(); | |||||
| // 1. check sign | |||||
| Map<String, String> retMap = checkSign(params, payContent); | |||||
| if (retMap != null) { | |||||
| // 签名相关异常返回 | |||||
| return retMap; | |||||
| } | |||||
| String resKey = payContent.getString(WxPayConstant.RES_KEY); | |||||
| logger.info(WxPayConstant.RES_KEY + ": " + resKey); | |||||
| try { | |||||
| //retMap = posService.couponOrderVerifyDo(params, EnumPosActionType.PAY_VERIFY_PRE); | |||||
| //return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "",null); | |||||
| } catch (MallinkException e) { | |||||
| return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "", e.getErrorCode(), e.getMessage()); | |||||
| } catch (Exception e) { | |||||
| return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "",500, e.getMessage()); | |||||
| } | |||||
| return null; | |||||
| } | |||||
| @ApiOperation(value = "POS支付取消-券", notes = "{" + | |||||
| "\"dev_id\":\"string(必填)\"," + | |||||
| "\"tenant_id\":\"string(必填)\"," + | |||||
| "\"merchant_id\":\"string(必填)\"," + | |||||
| "\"bu_user_id\":\"string(必填)\"," + | |||||
| "\"coupon_order_id\":\"string(必填)\" +" + | |||||
| "\"nonce_str\":\"string(必填)\" +" + | |||||
| "\"pos_order_id\":\"string(必填)\" }") | |||||
| @PostMapping("/couponOrderPayCancel") | |||||
| @SystemControllerLog(description = "POS支付取消-券") | |||||
| public Map<String, String> couponOrderPayCancel(@RequestBody Map<String, String> params) { | |||||
| JSONObject payContent = new JSONObject(); | |||||
| // 1. check sign | |||||
| Map<String, String> retMap = checkSign(params, payContent); | |||||
| if (retMap != null) { | |||||
| // 签名相关异常返回 | |||||
| return retMap; | |||||
| } | |||||
| String resKey = payContent.getString(WxPayConstant.RES_KEY); | |||||
| logger.info(WxPayConstant.RES_KEY + ": " + resKey); | |||||
| try { | |||||
| retMap = posService.couponOrderVerifyCancel(params, EnumPosActionType.PAY_VERIFY_PRE_CANCEL); | |||||
| return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "",null); | |||||
| } catch (MallinkException e) { | |||||
| return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "", e.getErrorCode(), e.getMessage()); | |||||
| } catch (Exception e) { | |||||
| return buildReturnMap(retMap, resKey, WxPayConstant.RET_SUCCESS, "",500, e.getMessage()); | |||||
| } | |||||
| } | |||||
| */ | |||||
| @ApiOperation(value = "POS订单同步", notes = "支付成功/支付取消后订单同步") | @ApiOperation(value = "POS订单同步", notes = "支付成功/支付取消后订单同步") | ||||
| @PostMapping("/posOrderSync") | @PostMapping("/posOrderSync") | ||||
| @@ -21,7 +21,6 @@ import org.slf4j.LoggerFactory; | |||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | import org.springframework.web.bind.annotation.RequestBody; | ||||
| import springfox.documentation.spring.web.json.Json; | |||||
| import java.text.ParseException; | import java.text.ParseException; | ||||
| import java.text.SimpleDateFormat; | import java.text.SimpleDateFormat; | ||||
| @@ -894,19 +893,9 @@ public class PosServiceImpl implements PosService { | |||||
| logger.error(errMessage); | logger.error(errMessage); | ||||
| throw new MallinkException(ErrorCode.POS_COUPON_PAY_ERROR.getCode(), errMessage); | throw new MallinkException(ErrorCode.POS_COUPON_PAY_ERROR.getCode(), errMessage); | ||||
| } | } | ||||
| for (int i = 0; i < avaCoList.size(); i++) { | |||||
| WxCouponOrderCVo couponOrderCVo = avaCoList.get(i); | |||||
| boolean selCoupon = isSelCoupon(selCoArr, couponOrderCVo.getId()); | |||||
| try { | |||||
| JSONObject couponObj = oneCouponPay(promotionCalc, couponOrderCVo, merchantId, buUserId, posOrderId, selCoupon); | |||||
| couponList.add(couponObj); | |||||
| } catch (MallinkException e) { | |||||
| throw new MallinkException(e.getErrorCode(), e.getMessage()); | |||||
| } catch (Exception e) { | |||||
| throw new MallinkException(500, e.getMessage()); | |||||
| } | |||||
| } | |||||
| } else if (config.getCoupon().equals(EnumPosCouponEnableType.MultiEnable.getCode())) { | |||||
| } | |||||
| if (config.getCoupon().equals(EnumPosCouponEnableType.SingleEnable.getCode()) || | |||||
| config.getCoupon().equals(EnumPosCouponEnableType.MultiEnable.getCode())) { | |||||
| for (int i = 0; i < avaCoList.size(); i++) { | for (int i = 0; i < avaCoList.size(); i++) { | ||||
| WxCouponOrderCVo couponOrderCVo = avaCoList.get(i); | WxCouponOrderCVo couponOrderCVo = avaCoList.get(i); | ||||
| boolean selCoupon = isSelCoupon(selCoArr, couponOrderCVo.getId()); | boolean selCoupon = isSelCoupon(selCoArr, couponOrderCVo.getId()); | ||||
| @@ -1520,13 +1509,7 @@ public class PosServiceImpl implements PosService { | |||||
| posCouponOrderVerify = posCouponOrderVerifyList.get(0); | posCouponOrderVerify = posCouponOrderVerifyList.get(0); | ||||
| if(posCouponOrderVerify != null) { | if(posCouponOrderVerify != null) { | ||||
| try { | try { | ||||
| PosCouponOrderVerify updateCouponOrderVerify = new PosCouponOrderVerify(); | |||||
| updateCouponOrderVerify.setId(posCouponOrderVerify.getId()); | |||||
| updateCouponOrderVerify.setTenantId(posCouponOrderVerify.getTenantId()); | |||||
| updateCouponOrderVerify.setState(EnumEnableType.Disable.getCode()); | |||||
| updateCouponOrderVerify.setUpdateDate(new Date()); | |||||
| posCouponOrderVerifyService.saveOrUpdate(updateCouponOrderVerify); | |||||
| // posCouponOrderVerifyService.deleteById(posCouponOrderVerify.getId()); | |||||
| posCouponOrderVerifyService.deleteById(posCouponOrderVerify.getId()); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| logger.error("db failed: couponOrder-" + couponOrderCVo.getId() + ", e:" + e.getMessage()); | logger.error("db failed: couponOrder-" + couponOrderCVo.getId() + ", e:" + e.getMessage()); | ||||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | ||||
| @@ -1606,23 +1589,6 @@ public class PosServiceImpl implements PosService { | |||||
| logger.error("核销异常:update num " + num); | logger.error("核销异常:update num " + num); | ||||
| throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num); | throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num); | ||||
| } | } | ||||
| // 3. 成长值 | |||||
| try { | |||||
| WxOrder order = orderMapper.selectByPrimaryKey(couponOrderCVo.getOrderId()); | |||||
| int point = scoreRulesService.addScore2(EnumScoreType.CONSUMPTION, order, couponOrderCVo.getBusinessId()); | |||||
| retMap.put(WxPayConstant.POINT, point); | |||||
| } catch (Exception e) { | |||||
| logger.error("核销成长值异常:" + e.getMessage()); | |||||
| } | |||||
| // 4. 积分 | |||||
| int credit = posAddCredit(couponOrderCVo, coupon, merchantId, buUserId); | |||||
| if (credit > 0) { | |||||
| retMap.put(WxPayConstant.CREDIT, credit); | |||||
| } else { | |||||
| retMap.put(WxPayConstant.CREDIT, 0); | |||||
| } | |||||
| logger.info("核销已完成: " + couponOrderCVo.getId()); | logger.info("核销已完成: " + couponOrderCVo.getId()); | ||||
| } | } | ||||
| @@ -2335,6 +2301,29 @@ public class PosServiceImpl implements PosService { | |||||
| updateCO.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); | updateCO.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); | ||||
| couponOrderMapper.updateByPrimaryKeySelective(updateCO); | couponOrderMapper.updateByPrimaryKeySelective(updateCO); | ||||
| } | } | ||||
| WxCouponOrderCVo couponOrderCVo = couponOrderService.detailCUserVo(posPayOrderNo); | |||||
| if (couponOrderCVo != null) { | |||||
| // 3. 成长值 | |||||
| try { | |||||
| WxOrder scoreOrder = orderMapper.selectByPrimaryKey(couponOrderCVo.getOrderId()); | |||||
| int point = scoreRulesService.addScore2(EnumScoreType.CONSUMPTION, scoreOrder, couponOrderCVo.getBusinessId()); | |||||
| } catch (Exception e) { | |||||
| logger.error("交易核销成长值异常:" + e.getMessage()); | |||||
| } | |||||
| WxCoupon wxCoupon = couponMapper.selectByPrimaryKey(couponOrderCVo.getCouponId()); | |||||
| if (wxCoupon == null) { | |||||
| logger.error("券: coupon-" + wxCoupon.getId() + "不存在" + "couponOrder-" + couponOrderCVo.getId()); | |||||
| throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); | |||||
| } | |||||
| // 4. 积分 | |||||
| try { | |||||
| int credit = posAddCredit(couponOrderCVo, wxCoupon, merchantBUser.getMerchantId(), merchantBUser.getId()); | |||||
| } catch (Exception e) { | |||||
| logger.error("交易核销积分异常:" + e.getMessage()); | |||||
| } | |||||
| } | |||||
| // 3. 核销后处理 | // 3. 核销后处理 | ||||
| couponOrderService.sendInsideCouponVerifyMsg(merchantBUser.getTenantId(), couponOrderId, merchantBUser.getId()); | couponOrderService.sendInsideCouponVerifyMsg(merchantBUser.getTenantId(), couponOrderId, merchantBUser.getId()); | ||||
| return payOrder; | return payOrder; | ||||