| @@ -0,0 +1,47 @@ | |||||
| package com.iformall.controller.market; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | |||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.base.BaseEntity; | |||||
| import com.iformall.service.*; | |||||
| import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | |||||
| import io.swagger.annotations.ApiImplicitParams; | |||||
| import io.swagger.annotations.ApiOperation; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.web.bind.annotation.*; | |||||
| @RestController | |||||
| @RequestMapping("businessCircle") | |||||
| @Api(description = "订单相关接口") | |||||
| public class WxBusinessCircleOrderController extends BaseController { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxBusinessCircleOrderService wxBusinessCircleOrderService; | |||||
| @ApiOperation("分页列表接口") | |||||
| @GetMapping("list") | |||||
| @ApiImplicitParams({ | |||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true), | |||||
| }) | |||||
| @SystemControllerLog(description = "-列表") | |||||
| public ResultData list(@ModelAttribute WxBusinessCircleOrder circleOrder, Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] WxOrderController::list"); | |||||
| if (null == circleOrder) { | |||||
| circleOrder = new WxBusinessCircleOrder(); | |||||
| } | |||||
| circleOrder.updateTenantInfo(getTenantInfo()); | |||||
| circleOrder.setSortColumns(BaseEntity.SortField.CreateDate_DESC,BaseEntity.SortField.Id_DESC); | |||||
| final PageInfo<WxBusinessCircleOrder> page = wxBusinessCircleOrderService.listAsPage(circleOrder, pageNum, pageSize); | |||||
| return new ResultData(page); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,4 @@ | |||||
| INSERT INTO `wx_flow_config`(`id`, `parent_id`, `tenant_id`, `parent_tenant_id`, `name`, `type`, `model_id`, `create_date`, `update_date`, `sort`) | |||||
| select CEILING(RAND()*90000000000+10000000000) ,id,tenant_id,parent_tenant_id, '商户提现审批',23,0,'2021-04-23 13:42:18', '2021-04-23 13:42:18', 6 | |||||
| from wx_flow_config where parent_id = 0 and type = 0 and name = '营销审批'; | |||||
| @@ -11,6 +11,7 @@ import com.iformall.domain.po.WxBusinessCircleOrder; | |||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.enums.EnumThirdPartyConfigType; | import com.iformall.enums.EnumThirdPartyConfigType; | ||||
| import com.iformall.interceptor.BodyReaderHttpServletRequestWrapper; | import com.iformall.interceptor.BodyReaderHttpServletRequestWrapper; | ||||
| import com.iformall.pay.WxPayConstant; | |||||
| import com.iformall.service.WxBusinessCircleOrderService; | import com.iformall.service.WxBusinessCircleOrderService; | ||||
| import com.iformall.service.WxMallService; | import com.iformall.service.WxMallService; | ||||
| import com.iformall.service.WxPayAccountService; | import com.iformall.service.WxPayAccountService; | ||||
| @@ -83,7 +84,7 @@ public class WxBusinessOrderController extends BaseController { | |||||
| wxBusinessCircleOrder.setSourceType(EnumThirdPartyConfigType.WEIXIN.getCode()); | wxBusinessCircleOrder.setSourceType(EnumThirdPartyConfigType.WEIXIN.getCode()); | ||||
| //解密 | //解密 | ||||
| if(MaUtil.noticeEventType.equals(notifyData.getEventType())){ | |||||
| if(WxPayConstant.NOTICE_EVENT_TYPE.equals(notifyData.getEventType())){ | |||||
| PaidResult result = wxPayService.getBusinessCircleService().decryptPaidNotifyDataResource(notifyData); | PaidResult result = wxPayService.getBusinessCircleService().decryptPaidNotifyDataResource(notifyData); | ||||
| logger.info("微信商圈支付成功通知---解密结果{}"+notifyData.toString()); | logger.info("微信商圈支付成功通知---解密结果{}"+notifyData.toString()); | ||||
| @@ -108,7 +109,7 @@ public class WxBusinessOrderController extends BaseController { | |||||
| resultMap.put("code","SUCCESS"); | resultMap.put("code","SUCCESS"); | ||||
| return resultMap; | return resultMap; | ||||
| }else if(MaUtil.refundEventType.equals(notifyData.getEventType())){ | |||||
| }else if(WxPayConstant.REFUND_EVENT_TYPE.equals(notifyData.getEventType())){ | |||||
| RefundResult result = wxPayService.getBusinessCircleService().decryptRefundNotifyDataResource(notifyData); | RefundResult result = wxPayService.getBusinessCircleService().decryptRefundNotifyDataResource(notifyData); | ||||
| logger.info("微信商圈退款成功通知---解密结果{}"+result.toString()); | logger.info("微信商圈退款成功通知---解密结果{}"+result.toString()); | ||||
| @@ -51,6 +51,9 @@ public class MqBaseConsumer { | |||||
| @Autowired | @Autowired | ||||
| private FmInsideBusinessCircleMsgServiceImpl fmInsideBusinessCircleMsgService; | private FmInsideBusinessCircleMsgServiceImpl fmInsideBusinessCircleMsgService; | ||||
| @Autowired | |||||
| private FmInsideThirdPartyOrderMsgServiceImpl fmInsideThirdPartyOrderMsgService; | |||||
| @@ -121,10 +124,15 @@ public class MqBaseConsumer { | |||||
| //baseMsg.setMsgStatus(EnumMsgRecordStatus.CONSUME_SUCC.getCode()); | //baseMsg.setMsgStatus(EnumMsgRecordStatus.CONSUME_SUCC.getCode()); | ||||
| //wxMsgRecordMapper.updateByBaseMsg(baseMsg); | //wxMsgRecordMapper.updateByBaseMsg(baseMsg); | ||||
| else if(EnumMsgRecordType.BUSINESS_CIRCLE_NOTICE.getCode().equals(baseMsg.getMsgType())) { | else if(EnumMsgRecordType.BUSINESS_CIRCLE_NOTICE.getCode().equals(baseMsg.getMsgType())) { | ||||
| // 商圈通知 | |||||
| FmInsideBusinessCircleMsg msg = (FmInsideBusinessCircleMsg)JsonUtil.readValue(message, FmInsideBusinessCircleMsg.class); | |||||
| // 微信商圈内部通知 | |||||
| FmInsideCircleOrderMsg msg = (FmInsideCircleOrderMsg)JsonUtil.readValue(message, FmInsideCircleOrderMsg.class); | |||||
| fmInsideBusinessCircleMsgService.send(msg); | fmInsideBusinessCircleMsgService.send(msg); | ||||
| } | } | ||||
| else if(EnumMsgRecordType.THIRD_PARTY_NOTICE.getCode().equals(baseMsg.getMsgType())) { | |||||
| // 第三方订单内部通知 | |||||
| FmInsideCircleOrderMsg msg = (FmInsideCircleOrderMsg)JsonUtil.readValue(message, FmInsideCircleOrderMsg.class); | |||||
| fmInsideThirdPartyOrderMsgService.send(msg); | |||||
| } | |||||
| }catch (Throwable e){ | }catch (Throwable e){ | ||||
| log.error("consum received error: ", e); | log.error("consum received error: ", e); | ||||
| /** | /** | ||||
| @@ -48,9 +48,9 @@ public class UserBasicInfoController extends BaseController { | |||||
| return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"手机号格式不正确"); | return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"手机号格式不正确"); | ||||
| } | } | ||||
| TenantEntity tenantEntity = new TenantEntity(); | TenantEntity tenantEntity = new TenantEntity(); | ||||
| WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.registerByPhone(tenantEntity, phone); | |||||
| WxCUserBasicInfo userBasicInfo = wxCUserBasicInfoService.registerByPhone(tenantEntity, phone); | |||||
| return new ResultData(wxCUserBasicInfo); | |||||
| return new ResultData(userBasicInfo); | |||||
| } | } | ||||
| @@ -75,8 +75,6 @@ public class UserBasicInfoController extends BaseController { | |||||
| System.out.println("timeStamp="+timeStamp); | System.out.println("timeStamp="+timeStamp); | ||||
| paramMap.put("timeStamp",timeStamp);//当前时间戳 | paramMap.put("timeStamp",timeStamp);//当前时间戳 | ||||
| paramMap.put("phone","17600000000"); | paramMap.put("phone","17600000000"); | ||||
| paramMap.put("userName","昵称"); | |||||
| paramMap.put("userSex","1"); | |||||
| String sign = SignUtils.getSign(signKey, paramMap, "MD5"); | String sign = SignUtils.getSign(signKey, paramMap, "MD5"); | ||||
| System.out.println("sign="+sign); | System.out.println("sign="+sign); | ||||
| @@ -56,6 +56,8 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { | |||||
| if(apiConfig == null){ | if(apiConfig == null){ | ||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"非法请求"); | throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"非法请求"); | ||||
| } | } | ||||
| request.setAttribute(Constant.TENANT_ID, apiConfig.getTenantId()); | |||||
| request.setAttribute(Constant.PARENT_TENANT_ID, apiConfig.getParentTenantId()); | |||||
| String signature = request.getHeader("sign"); | String signature = request.getHeader("sign"); | ||||
| logger.info("sign={}"+signature); | logger.info("sign={}"+signature); | ||||
| @@ -114,6 +114,9 @@ public class WxCUserBasicInfo extends TenantEntityWithoutFinalTenantId { | |||||
| @io.swagger.annotations.ApiModelProperty(value="会员等级",name="level") | @io.swagger.annotations.ApiModelProperty(value="会员等级",name="level") | ||||
| private String level; | private String level; | ||||
| @TableField(exist = false) | |||||
| private List<WxLevelConfig> lecelList; | |||||
| @Excel(name="积分",width = 20, orderNum = "12") | @Excel(name="积分",width = 20, orderNum = "12") | ||||
| @io.swagger.annotations.ApiModelProperty(value="积分",name="credit") | @io.swagger.annotations.ApiModelProperty(value="积分",name="credit") | ||||
| private Integer credit; | private Integer credit; | ||||
| @@ -0,0 +1,116 @@ | |||||
| package com.iformall.domain.po; | |||||
| import com.baomidou.mybatisplus.annotation.TableField; | |||||
| import com.baomidou.mybatisplus.annotation.TableName; | |||||
| import com.iformall.domain.po.base.TenantEntity; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| import java.math.BigDecimal; | |||||
| import java.util.Date; | |||||
| @TableName(value = "wx_third_party_orders") | |||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class WxThirdPartyOrders extends TenantEntity { | |||||
| protected Long id; | |||||
| @io.swagger.annotations.ApiModelProperty(value="来源(wx_third_party_api)",name="sourceAppId") | |||||
| private String sourceAppId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="门店名称",name="shopName") | |||||
| private String shopName; | |||||
| @io.swagger.annotations.ApiModelProperty(value="门店编号",name="shopNumber") | |||||
| private String shopNumber; | |||||
| @io.swagger.annotations.ApiModelProperty(value="顾客手机号",name="userPhone") | |||||
| private String userPhone; | |||||
| @io.swagger.annotations.ApiModelProperty(value="顾客编号",name="userNumber") | |||||
| private String userNumber; | |||||
| @io.swagger.annotations.ApiModelProperty(value="交易完成时间",name="timeEnd") | |||||
| private Date timeEnd; | |||||
| @io.swagger.annotations.ApiModelProperty(value="用户实际消费金额,单位(分)",name="amount") | |||||
| private Integer amount; | |||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value="用户实际消费金额,单位(元)",name="amount") | |||||
| private String amountStr; | |||||
| public String getAmountStr() { | |||||
| return amount != null ? new BigDecimal(amount).divide(new BigDecimal(100)).toPlainString(): amountStr; | |||||
| } | |||||
| @io.swagger.annotations.ApiModelProperty(value="支付订单号",name="transactionId") | |||||
| private String transactionId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="订单摘要",name="summary") | |||||
| private String summary; | |||||
| @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") | |||||
| private Date createTime; | |||||
| @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateTime") | |||||
| private Date updateTime; | |||||
| @io.swagger.annotations.ApiModelProperty(value="门店Id,与shop_number对齐",name="merchantId") | |||||
| private Long merchantId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="c端会员id,与user_number对齐",name="cUserId") | |||||
| private Long cUserId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="是否获得积分(1:是,0:否)",name="earnPoints") | |||||
| private Integer earnPoints; | |||||
| @io.swagger.annotations.ApiModelProperty(value="订单新增积分值",name="increasedPoints") | |||||
| private Integer increasedPoints; | |||||
| @io.swagger.annotations.ApiModelProperty(value="积分更新时间(新增)",name="increasedPoints") | |||||
| private Date pointsUpdateTime; | |||||
| @io.swagger.annotations.ApiModelProperty(value="是否退款(1:是,0:否)",name="isRefund") | |||||
| private Integer isRefund; | |||||
| @io.swagger.annotations.ApiModelProperty(value="退款摘要",name="refundSummary") | |||||
| private String refundSummary; | |||||
| @io.swagger.annotations.ApiModelProperty(value="退款完成时间",name="refundTime") | |||||
| private Date refundTime; | |||||
| @io.swagger.annotations.ApiModelProperty(value="用户退款金额,单位(分)",name="refundSummary") | |||||
| private Integer refundAmount; | |||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value="用户退款金额,单位(元)",name="amount") | |||||
| private String refundAmountStr; | |||||
| public String getRefundAmountStr() { | |||||
| return refundAmount != null ? new BigDecimal(refundAmount).divide(new BigDecimal(100)).toPlainString(): refundAmountStr; | |||||
| } | |||||
| @io.swagger.annotations.ApiModelProperty(value="退款单号",name="refundId") | |||||
| private String refundId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="用户是否退积分(1:是,0:否)",name="isRefundPoints") | |||||
| private Integer isRefundPoints; | |||||
| @io.swagger.annotations.ApiModelProperty(value="用户退积分时间",name="refundPointsTime") | |||||
| private Date refundPointsTime; | |||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value="查询-开始时间",name="startdate") | |||||
| private Date startTime; | |||||
| @TableField(exist = false) | |||||
| @io.swagger.annotations.ApiModelProperty(value="查询-结束时间",name="enddate") | |||||
| private Date endTime; | |||||
| } | |||||
| @@ -0,0 +1,35 @@ | |||||
| package com.iformall.domain.po.msg; | |||||
| import lombok.Data; | |||||
| import lombok.EqualsAndHashCode; | |||||
| import lombok.ToString; | |||||
| @Data | |||||
| @ToString(callSuper = true) | |||||
| @EqualsAndHashCode(callSuper = true) | |||||
| public class FmInsideCircleOrderMsg extends BaseMsg{ | |||||
| private static final long serialVersionUID = 1L; | |||||
| @io.swagger.annotations.ApiModelProperty(value="是否退款",name="isRefund") | |||||
| private Integer isRefund; | |||||
| @io.swagger.annotations.ApiModelProperty(value="第三方订单对应己方Id",name="circleOrderId") | |||||
| private Long circleOrderId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="门店Id",name="merchantId") | |||||
| private Long merchantId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="c端会员id",name="cUserId") | |||||
| private Long cUserId; | |||||
| @io.swagger.annotations.ApiModelProperty(value="门店名称",name="shopName") | |||||
| private String shopName; | |||||
| @io.swagger.annotations.ApiModelProperty(value="顾客手机号",name="userPhone") | |||||
| private String userPhone; | |||||
| @io.swagger.annotations.ApiModelProperty(value="用户实际消费金额,单位(分)",name="amount") | |||||
| private Integer amount; | |||||
| } | |||||
| @@ -7,10 +7,10 @@ import lombok.ToString; | |||||
| @Data | @Data | ||||
| @ToString(callSuper = true) | @ToString(callSuper = true) | ||||
| @EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||
| public class FmInsideBusinessCircleMsg extends BaseMsg{ | |||||
| public class FmInsideThirdPartyOrdersMsg extends BaseMsg{ | |||||
| private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
| @io.swagger.annotations.ApiModelProperty(value="商圈支付结果通知类型",name="eventType") | |||||
| @io.swagger.annotations.ApiModelProperty(value="第三方交易状态",name="eventType") | |||||
| private String eventType; | private String eventType; | ||||
| @io.swagger.annotations.ApiModelProperty(value="商圈订单Id",name="businessCircleOrderId") | @io.swagger.annotations.ApiModelProperty(value="商圈订单Id",name="businessCircleOrderId") | ||||
| @@ -20,7 +20,8 @@ public enum EnumMsgRecordType { | |||||
| INSIDE_NOTIFY_REFUND_SUCCESS(104, "微信退款回调"), | INSIDE_NOTIFY_REFUND_SUCCESS(104, "微信退款回调"), | ||||
| COUPON_STOCK(105, "券库存更新"), | COUPON_STOCK(105, "券库存更新"), | ||||
| CASH_OUT(106,"商户提现"), | CASH_OUT(106,"商户提现"), | ||||
| BUSINESS_CIRCLE_NOTICE(107, "商圈支付通知"),//内部消息,加积分+积分同步 | |||||
| BUSINESS_CIRCLE_NOTICE(1000, "商圈订单通知"),//内部消息,加减积分+积分同步 | |||||
| THIRD_PARTY_NOTICE(1001, "第三方订单通知"),//内部消息,加减积分+积分同步 | |||||
| ; | ; | ||||
| public static EnumMsgRecordType getEnum(Integer code) { | public static EnumMsgRecordType getEnum(Integer code) { | ||||
| @@ -7,7 +7,8 @@ public enum EnumUserType { | |||||
| BUSER(3, "B端用户"), | BUSER(3, "B端用户"), | ||||
| MALLUSER(4, "A端用户"), | MALLUSER(4, "A端用户"), | ||||
| BUSINESS_CIRCLE(5, "微信商圈") | |||||
| BUSINESS_CIRCLE(100, "微信商圈"), | |||||
| THIRD_CIRCLE(101, "第三方") | |||||
| ; | ; | ||||
| public static EnumUserType getEnum(Integer code) { | public static EnumUserType getEnum(Integer code) { | ||||
| @@ -9,38 +9,38 @@ public interface WxBusinessCircleOrderMapper extends CommonMapper<WxBusinessCirc | |||||
| List<WxBusinessCircleOrder> findList(WxBusinessCircleOrder record); | List<WxBusinessCircleOrder> findList(WxBusinessCircleOrder record); | ||||
| WxBusinessCircleOrder getById(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| WxBusinessCircleOrder getById(WxBusinessCircleOrder record); | |||||
| WxBusinessCircleOrder getByTransactionId(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| WxBusinessCircleOrder getByTransactionId(WxBusinessCircleOrder record); | |||||
| /** | /** | ||||
| * 成功通知新建 | * 成功通知新建 | ||||
| * @param wxBusinessCircleOrder | |||||
| * @param record | |||||
| */ | */ | ||||
| void insertNoticeOrder(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| void insertNoticeOrder(WxBusinessCircleOrder record); | |||||
| /** | /** | ||||
| * 加积分 | * 加积分 | ||||
| * @param wxBusinessCircleOrder | |||||
| * @param record | |||||
| */ | */ | ||||
| void updateAddPoints(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| void updateAddPoints(WxBusinessCircleOrder record); | |||||
| /** | /** | ||||
| * 积分同步状态修改 | * 积分同步状态修改 | ||||
| */ | */ | ||||
| void updateIsPointsNotify(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| void updateIsPointsNotify(WxBusinessCircleOrder record); | |||||
| /** | /** | ||||
| * 退款 | * 退款 | ||||
| * @param wxBusinessCircleOrder | |||||
| * @param record | |||||
| */ | */ | ||||
| void updateRefundNoticeOrder(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| void updateRefundNoticeOrder(WxBusinessCircleOrder record); | |||||
| /** | /** | ||||
| * 退积分 | * 退积分 | ||||
| * @param wxBusinessCircleOrder | |||||
| * @param record | |||||
| */ | */ | ||||
| void updateRefundPoints(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| void updateRefundPoints(WxBusinessCircleOrder record); | |||||
| } | } | ||||
| @@ -0,0 +1,43 @@ | |||||
| package com.iformall.mapper; | |||||
| import com.iformall.common.CommonMapper; | |||||
| import com.iformall.domain.po.WxThirdPartyOrders; | |||||
| import java.util.List; | |||||
| public interface WxThirdPartyOrdersMapper extends CommonMapper<WxThirdPartyOrders, Long> { | |||||
| List<WxThirdPartyOrders> findList(WxThirdPartyOrders record); | |||||
| WxThirdPartyOrders getById(WxThirdPartyOrders record); | |||||
| WxThirdPartyOrders getByTransactionId(WxThirdPartyOrders record); | |||||
| /** | |||||
| * 成功通知新建 | |||||
| * @param record | |||||
| */ | |||||
| void insertNoticeOrder(WxThirdPartyOrders record); | |||||
| /** | |||||
| * 加积分 | |||||
| * @param record | |||||
| */ | |||||
| void updateAddPoints(WxThirdPartyOrders record); | |||||
| /** | |||||
| * 退款 | |||||
| * @param record | |||||
| */ | |||||
| void updateRefundNoticeOrder(WxThirdPartyOrders record); | |||||
| /** | |||||
| * 退积分 | |||||
| * @param record | |||||
| */ | |||||
| void updateRefundPoints(WxThirdPartyOrders record); | |||||
| } | |||||
| @@ -1,6 +1,10 @@ | |||||
| package com.iformall.pay; | package com.iformall.pay; | ||||
| public class WxPayConstant { | public class WxPayConstant { | ||||
| public static final String NOTICE_EVENT_TYPE = "MALL_TRANSACTION.SUCCESS"; | |||||
| public static final String REFUND_EVENT_TYPE = "MALL_REFUND.SUCCESS"; | |||||
| public final static String REQ_KEY = "reqKey"; | public final static String REQ_KEY = "reqKey"; | ||||
| public final static String RES_KEY = "resKey"; | public final static String RES_KEY = "resKey"; | ||||
| @@ -30,26 +30,26 @@ public interface WxBusinessCircleOrderService { | |||||
| */ | */ | ||||
| WxBusinessCircleOrder getByTransactionId(String transactionId, String tenantId); | WxBusinessCircleOrder getByTransactionId(String transactionId, String tenantId); | ||||
| void createOrder(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| void createOrder(WxBusinessCircleOrder record); | |||||
| void updateRefundOrder(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| void updateRefundOrder(WxBusinessCircleOrder record); | |||||
| /** | /** | ||||
| * 加积分 | * 加积分 | ||||
| * @param wxBusinessCircleOrder | |||||
| * @param record | |||||
| */ | */ | ||||
| void updateAddPoints(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| void updateAddPoints(WxBusinessCircleOrder record); | |||||
| /** | /** | ||||
| * 积分同步状态修改 | * 积分同步状态修改 | ||||
| */ | */ | ||||
| void updateIsPointsNotify(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| void updateIsPointsNotify(WxBusinessCircleOrder record); | |||||
| /** | /** | ||||
| * 退积分 | * 退积分 | ||||
| * @param wxBusinessCircleOrder | |||||
| * @param record | |||||
| */ | */ | ||||
| void updateRefundPoints(WxBusinessCircleOrder wxBusinessCircleOrder); | |||||
| void updateRefundPoints(WxBusinessCircleOrder record); | |||||
| } | } | ||||
| @@ -0,0 +1,50 @@ | |||||
| package com.iformall.service; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.domain.po.WxThirdPartyOrders; | |||||
| public interface WxThirdPartyOrdersService { | |||||
| /** | |||||
| * 根据实体查询分页列表 | |||||
| * | |||||
| * @param record | |||||
| * @param pageIndex | |||||
| * @param pageSize | |||||
| * @return | |||||
| */ | |||||
| PageInfo<WxThirdPartyOrders> listAsPage(WxThirdPartyOrders record, Integer pageIndex, Integer pageSize); | |||||
| /** | |||||
| * id+tenantId | |||||
| * @param | |||||
| * @return | |||||
| */ | |||||
| WxThirdPartyOrders getById(Long id, String tenantId); | |||||
| /** | |||||
| * transactionId+tenantId | |||||
| * @param | |||||
| * @return | |||||
| */ | |||||
| WxThirdPartyOrders getByTransactionId(String transactionId, String tenantId); | |||||
| void createOrder(WxThirdPartyOrders record); | |||||
| void updateRefundOrder(WxThirdPartyOrders record); | |||||
| /** | |||||
| * 加积分 | |||||
| * @param record | |||||
| */ | |||||
| void updateAddPoints(WxThirdPartyOrders record); | |||||
| /** | |||||
| * 退积分 | |||||
| * @param record | |||||
| */ | |||||
| void updateRefundPoints(WxThirdPartyOrders record); | |||||
| } | |||||
| @@ -6,10 +6,8 @@ import com.iformall.common.IdWorker; | |||||
| import com.iformall.domain.po.WxBusinessCircleOrder; | import com.iformall.domain.po.WxBusinessCircleOrder; | ||||
| import com.iformall.domain.po.WxCUser; | import com.iformall.domain.po.WxCUser; | ||||
| import com.iformall.domain.po.WxMerchant; | import com.iformall.domain.po.WxMerchant; | ||||
| import com.iformall.domain.po.msg.FmInsideBusinessCircleMsg; | |||||
| import com.iformall.enums.EnumMsgMqKey; | |||||
| import com.iformall.enums.EnumMsgMqTag; | |||||
| import com.iformall.enums.EnumMsgMqTopic; | |||||
| import com.iformall.domain.po.msg.FmInsideCircleOrderMsg; | |||||
| import com.iformall.enums.*; | |||||
| import com.iformall.mapper.WxBusinessCircleOrderMapper; | import com.iformall.mapper.WxBusinessCircleOrderMapper; | ||||
| import com.iformall.mq.MqBaseProducer; | import com.iformall.mq.MqBaseProducer; | ||||
| import com.iformall.service.WxBusinessCircleOrderService; | import com.iformall.service.WxBusinessCircleOrderService; | ||||
| @@ -46,104 +44,107 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe | |||||
| @Override | @Override | ||||
| public WxBusinessCircleOrder getById(Long id, String tenantId) { | public WxBusinessCircleOrder getById(Long id, String tenantId) { | ||||
| WxBusinessCircleOrder wxBusinessCircleOrder = new WxBusinessCircleOrder(); | |||||
| wxBusinessCircleOrder.setId(id); | |||||
| wxBusinessCircleOrder.setTenantId(tenantId); | |||||
| return wxBusinessCircleOrderMapper.getById(wxBusinessCircleOrder); | |||||
| WxBusinessCircleOrder recordQ = new WxBusinessCircleOrder(); | |||||
| recordQ.setId(id); | |||||
| recordQ.setTenantId(tenantId); | |||||
| return wxBusinessCircleOrderMapper.getById(recordQ); | |||||
| } | } | ||||
| @Override | @Override | ||||
| public WxBusinessCircleOrder getByTransactionId(String transactionId, String tenantId) { | public WxBusinessCircleOrder getByTransactionId(String transactionId, String tenantId) { | ||||
| WxBusinessCircleOrder wxBusinessCircleOrder = new WxBusinessCircleOrder(); | |||||
| wxBusinessCircleOrder.setTransactionId(transactionId); | |||||
| wxBusinessCircleOrder.setTenantId(tenantId); | |||||
| return wxBusinessCircleOrderMapper.getByTransactionId(wxBusinessCircleOrder); | |||||
| WxBusinessCircleOrder recordQ = new WxBusinessCircleOrder(); | |||||
| recordQ.setTransactionId(transactionId); | |||||
| recordQ.setTenantId(tenantId); | |||||
| return wxBusinessCircleOrderMapper.getByTransactionId(recordQ); | |||||
| } | } | ||||
| @Override | @Override | ||||
| public void createOrder(WxBusinessCircleOrder wxBusinessCircleOrder) { | |||||
| WxBusinessCircleOrder byTransactionId = wxBusinessCircleOrderMapper.getByTransactionId(wxBusinessCircleOrder); | |||||
| public void createOrder(WxBusinessCircleOrder record) { | |||||
| WxBusinessCircleOrder byTransactionId = wxBusinessCircleOrderMapper.getByTransactionId(record); | |||||
| if(byTransactionId != null){ | if(byTransactionId != null){ | ||||
| logger.error("--商圈付款--通知消息已存在--"); | |||||
| logger.error("--商圈付款--通知消息已存在---byTransactionId="+byTransactionId.getTransactionId()); | |||||
| }else{ | }else{ | ||||
| Date now = new Date(); | Date now = new Date(); | ||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| wxBusinessCircleOrder.setId(idWorker.nextId()); | |||||
| wxBusinessCircleOrder.setCreateTime(now); | |||||
| wxBusinessCircleOrder.setUpdateTime(now); | |||||
| WxMerchant wxMerchant = wxMerchantService.getById(Long.parseLong(wxBusinessCircleOrder.getWxShopNumber())); | |||||
| record.setId(idWorker.nextId()); | |||||
| record.setCreateTime(now); | |||||
| record.setUpdateTime(now); | |||||
| //TODO 第三方获取门店(标识可能发生变化) | |||||
| WxMerchant wxMerchant = wxMerchantService.getById(Long.parseLong(record.getWxShopNumber())); | |||||
| if(wxMerchant != null){ | if(wxMerchant != null){ | ||||
| wxBusinessCircleOrder.setMerchantId(wxMerchant.getId()); | |||||
| record.setMerchantId(wxMerchant.getId()); | |||||
| }else{ | }else{ | ||||
| logger.error("--商圈付款通知消息未找到门店--"); | |||||
| logger.error("--商圈付款通知消息未找到门店--shopName="+record.getWxShopName()+"&shopNumber="+record.getWxShopNumber()); | |||||
| } | } | ||||
| WxCUser userQ = new WxCUser(); | WxCUser userQ = new WxCUser(); | ||||
| userQ.updateTenantInfo(wxBusinessCircleOrder); | |||||
| userQ.setOpenId(wxBusinessCircleOrder.getOpenid()); | |||||
| userQ.setAppId(wxBusinessCircleOrder.getAppid()); | |||||
| userQ.updateTenantInfo(record); | |||||
| userQ.setOpenId(record.getOpenid()); | |||||
| userQ.setAppId(record.getAppid()); | |||||
| WxCUser user = wxCUserService.getByOpenId(userQ); | WxCUser user = wxCUserService.getByOpenId(userQ); | ||||
| if(user != null && user.getUserId() != null){ | if(user != null && user.getUserId() != null){ | ||||
| wxBusinessCircleOrder.setCUserId(user.getUserId()); | |||||
| record.setCUserId(user.getUserId()); | |||||
| }else{ | }else{ | ||||
| logger.error("--商圈付款通知消息未找到会员--"); | |||||
| logger.error("--商圈付款通知消息未找到会员--openid="+record.getOpenid()); | |||||
| } | } | ||||
| wxBusinessCircleOrderMapper.insertNoticeOrder(wxBusinessCircleOrder); | |||||
| wxBusinessCircleOrderMapper.insertNoticeOrder(record); | |||||
| // TODO: 2021/4/21 mq 新增积分 积分同步 | |||||
| this.sendMessage(wxBusinessCircleOrder,wxBusinessCircleOrder.getNoticeEventType()); | |||||
| this.sendMessage(record,EnumYesOrNo.NO.getCode()); | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * | * | ||||
| * @param wxBusinessCircleOrder | |||||
| * @param eventType | |||||
| * @param record | |||||
| * @param isRefund 是否退款 | |||||
| */ | */ | ||||
| private void sendMessage(WxBusinessCircleOrder wxBusinessCircleOrder,String eventType){ | |||||
| FmInsideBusinessCircleMsg msg = new FmInsideBusinessCircleMsg(); | |||||
| msg.updateTenantInfo(wxBusinessCircleOrder); | |||||
| msg.setEventType(eventType); | |||||
| msg.setBusinessCircleOrderId(wxBusinessCircleOrder.getId()); | |||||
| msg.setMerchantId(wxBusinessCircleOrder.getMerchantId()); | |||||
| msg.setCUserId(wxBusinessCircleOrder.getCUserId()); | |||||
| msg.setWxShopName(wxBusinessCircleOrder.getWxShopName()); | |||||
| msg.setAmount(wxBusinessCircleOrder.getAmount()); | |||||
| private void sendMessage(WxBusinessCircleOrder record,Integer isRefund){ | |||||
| FmInsideCircleOrderMsg msg = new FmInsideCircleOrderMsg(); | |||||
| msg.setMsgType(EnumMsgRecordType.BUSINESS_CIRCLE_NOTICE.getCode()); | |||||
| msg.updateTenantInfo(record); | |||||
| msg.setIsRefund(isRefund); | |||||
| msg.setCircleOrderId(record.getId()); | |||||
| msg.setMerchantId(record.getMerchantId()); | |||||
| msg.setCUserId(record.getCUserId()); | |||||
| msg.setShopName(record.getWxShopName()); | |||||
| msg.setAmount(record.getAmount()); | |||||
| mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | ||||
| } | } | ||||
| @Override | @Override | ||||
| public void updateRefundOrder(WxBusinessCircleOrder wxBusinessCircleOrder) { | |||||
| WxBusinessCircleOrder byTransactionId = this.getByTransactionId(wxBusinessCircleOrder.getTransactionId(),wxBusinessCircleOrder.getTenantId()); | |||||
| public void updateRefundOrder(WxBusinessCircleOrder record) { | |||||
| WxBusinessCircleOrder byTransactionId = this.getByTransactionId(record.getTransactionId(),record.getTenantId()); | |||||
| if(byTransactionId == null){ | if(byTransactionId == null){ | ||||
| logger.error("--商圈退款--付款消息未找到--"); | |||||
| logger.error("--商圈退款--付款消息未找到--transactionId="+record.getTransactionId()); | |||||
| }else if(byTransactionId.getIsRefund().equals(EnumYesOrNo.YES.getCode())){ | |||||
| logger.error("--商圈退款--已是退款状态--transactionId="+record.getTransactionId()); | |||||
| }else{ | }else{ | ||||
| Date now = new Date(); | Date now = new Date(); | ||||
| wxBusinessCircleOrder.setId(byTransactionId.getId()); | |||||
| wxBusinessCircleOrder.setUpdateTime(now); | |||||
| wxBusinessCircleOrderMapper.updateRefundNoticeOrder(wxBusinessCircleOrder); | |||||
| record.setId(byTransactionId.getId()); | |||||
| record.setUpdateTime(now); | |||||
| wxBusinessCircleOrderMapper.updateRefundNoticeOrder(record); | |||||
| // TODO: 2021/4/21 mq 退积分 | |||||
| this.sendMessage(wxBusinessCircleOrder,wxBusinessCircleOrder.getRefundEventType()); | |||||
| this.sendMessage(record,EnumYesOrNo.YES.getCode()); | |||||
| } | } | ||||
| } | } | ||||
| @Override | @Override | ||||
| public void updateAddPoints(WxBusinessCircleOrder wxBusinessCircleOrder) { | |||||
| wxBusinessCircleOrder.setUpdateTime(new Date()); | |||||
| wxBusinessCircleOrderMapper.updateAddPoints(wxBusinessCircleOrder); | |||||
| public void updateAddPoints(WxBusinessCircleOrder record) { | |||||
| record.setUpdateTime(new Date()); | |||||
| wxBusinessCircleOrderMapper.updateAddPoints(record); | |||||
| } | } | ||||
| @Override | @Override | ||||
| public void updateIsPointsNotify(WxBusinessCircleOrder wxBusinessCircleOrder) { | |||||
| wxBusinessCircleOrder.setUpdateTime(new Date()); | |||||
| wxBusinessCircleOrderMapper.updateIsPointsNotify(wxBusinessCircleOrder); | |||||
| public void updateIsPointsNotify(WxBusinessCircleOrder record) { | |||||
| record.setUpdateTime(new Date()); | |||||
| wxBusinessCircleOrderMapper.updateIsPointsNotify(record); | |||||
| } | } | ||||
| @Override | @Override | ||||
| public void updateRefundPoints(WxBusinessCircleOrder wxBusinessCircleOrder) { | |||||
| wxBusinessCircleOrder.setUpdateTime(new Date()); | |||||
| wxBusinessCircleOrderMapper.updateRefundPoints(wxBusinessCircleOrder); | |||||
| public void updateRefundPoints(WxBusinessCircleOrder record) { | |||||
| record.setUpdateTime(new Date()); | |||||
| wxBusinessCircleOrderMapper.updateRefundPoints(record); | |||||
| } | } | ||||
| @@ -10,7 +10,6 @@ import com.iformall.domain.dto.WxCUserBasicInfoDto; | |||||
| import com.iformall.domain.dto.WxCUserBasicInfoFilterDto; | import com.iformall.domain.dto.WxCUserBasicInfoFilterDto; | ||||
| import com.iformall.domain.dto.WxCUserBasicInfoFilterListDto; | import com.iformall.domain.dto.WxCUserBasicInfoFilterListDto; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.base.BaseTenantEntity; | |||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.domain.vo.*; | import com.iformall.domain.vo.*; | ||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| @@ -644,19 +643,29 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc | |||||
| return null; | return null; | ||||
| WxCUserBasicInfo basicInfo = this.findInfoByPhone(tenantEntity, phone); | WxCUserBasicInfo basicInfo = this.findInfoByPhone(tenantEntity, phone); | ||||
| if(basicInfo != null){ | |||||
| return basicInfo; | |||||
| }else{ | |||||
| if(basicInfo == null){ | |||||
| basicInfo = new WxCUserBasicInfo(); | basicInfo = new WxCUserBasicInfo(); | ||||
| basicInfo.setTenantId("," + tenantEntity.getTenantId() + ","); | basicInfo.setTenantId("," + tenantEntity.getTenantId() + ","); | ||||
| basicInfo.setFinalTenantId(tenantEntity.getFinalTenantId()); | |||||
| basicInfo.setPhone(phone); | basicInfo.setPhone(phone); | ||||
| this.save(basicInfo); | this.save(basicInfo); | ||||
| return basicInfo; | |||||
| } | } | ||||
| // TODO: 2021/4/21 重新组装数据结构 | |||||
| List<WxLevelConfig> levelList = wxLevelConfigService.getByTenantInfo(tenantEntity); | |||||
| basicInfo.setLecelList(levelList); | |||||
| basicInfo.setLevel(WxLevelConfigService.DEFAULT_LEVEL); | |||||
| if(basicInfo.getPoins() != null && basicInfo.getPoins() > 0){ | |||||
| for (WxLevelConfig levelConfig : levelList) { | |||||
| if (basicInfo.getPoins() >= levelConfig.getPoints()) { | |||||
| basicInfo.setLevel(levelConfig.getLevel()); | |||||
| } | |||||
| } | |||||
| } | |||||
| return basicInfo; | |||||
| } | } | ||||
| @Override | @Override | ||||
| public WxCUserBasicInfo getById(Long id,String finalTenantId) { | public WxCUserBasicInfo getById(Long id,String finalTenantId) { | ||||
| return wxCUserBasicInfoMapper.selectById(id,finalTenantId); | return wxCUserBasicInfoMapper.selectById(id,finalTenantId); | ||||
| @@ -119,6 +119,7 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| " ( '" + idWorker.nextId() + "', '" + id1 + "', '" + tenantId + "', '卡审批', '10', '0', '" + nowTimestr + "', '" + nowTimestr + "', '2')," + | " ( '" + idWorker.nextId() + "', '" + id1 + "', '" + tenantId + "', '卡审批', '10', '0', '" + nowTimestr + "', '" + nowTimestr + "', '2')," + | ||||
| " ( '" + idWorker.nextId() + "', '" + id1 + "', '" + tenantId + "', '砍价审批', '12', '0', '" + nowTimestr + "', '" + nowTimestr + "', '4')," + | " ( '" + idWorker.nextId() + "', '" + id1 + "', '" + tenantId + "', '砍价审批', '12', '0', '" + nowTimestr + "', '" + nowTimestr + "', '4')," + | ||||
| " ( '" + idWorker.nextId() + "', '" + id1 + "', '" + tenantId + "', 'B端创建券', '22', '0', '" + nowTimestr + "', '" + nowTimestr + "', '5')," + | " ( '" + idWorker.nextId() + "', '" + id1 + "', '" + tenantId + "', 'B端创建券', '22', '0', '" + nowTimestr + "', '" + nowTimestr + "', '5')," + | ||||
| " ( '" + idWorker.nextId() + "', '" + id1 + "', '" + tenantId + "', '商户提现审批', '23', '0', '" + nowTimestr + "', '" + nowTimestr + "', '6')," + | |||||
| " ( '" + idWorker.nextId() + "', '" + id2 + "', '" + tenantId + "', '多经点位租金+物业合同签约', '19', '0', '" + nowTimestr + "', '" + nowTimestr + "', '11')," + | " ( '" + idWorker.nextId() + "', '" + id2 + "', '" + tenantId + "', '多经点位租金+物业合同签约', '19', '0', '" + nowTimestr + "', '" + nowTimestr + "', '11')," + | ||||
| " ( '" + idWorker.nextId() + "', '" + id2 + "', '" + tenantId + "', '商铺租金+物业合同终止', '18', '0', '" + nowTimestr + "', '" + nowTimestr + "', '10')," + | " ( '" + idWorker.nextId() + "', '" + id2 + "', '" + tenantId + "', '商铺租金+物业合同终止', '18', '0', '" + nowTimestr + "', '" + nowTimestr + "', '10')," + | ||||
| " ( '" + idWorker.nextId() + "', '" + id2 + "', '" + tenantId + "', '商铺物业合同签约', '13', '0', '" + nowTimestr + "', '" + nowTimestr + "', '5')," + | " ( '" + idWorker.nextId() + "', '" + id2 + "', '" + tenantId + "', '商铺物业合同签约', '13', '0', '" + nowTimestr + "', '" + nowTimestr + "', '5')," + | ||||
| @@ -0,0 +1,154 @@ | |||||
| package com.iformall.service.impl; | |||||
| import com.github.pagehelper.PageHelper; | |||||
| import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.common.IdWorker; | |||||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||||
| import com.iformall.domain.po.WxMerchant; | |||||
| import com.iformall.domain.po.WxThirdPartyOrders; | |||||
| import com.iformall.domain.po.msg.FmInsideCircleOrderMsg; | |||||
| import com.iformall.enums.*; | |||||
| import com.iformall.mapper.WxThirdPartyOrdersMapper; | |||||
| import com.iformall.mq.MqBaseProducer; | |||||
| import com.iformall.service.WxCUserBasicInfoService; | |||||
| import com.iformall.service.WxCUserService; | |||||
| import com.iformall.service.WxMerchantService; | |||||
| import com.iformall.service.WxThirdPartyOrdersService; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | |||||
| import java.util.Date; | |||||
| @Service | |||||
| public class WxThirdPartyOrdersServiceImpl implements WxThirdPartyOrdersService { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| WxThirdPartyOrdersMapper wxThirdPartyOrdersMapper; | |||||
| @Autowired | |||||
| WxMerchantService wxMerchantService; | |||||
| @Autowired | |||||
| WxCUserService wxCUserService; | |||||
| @Autowired | |||||
| WxCUserBasicInfoService wxCUserBasicInfoService; | |||||
| @Autowired | |||||
| MqBaseProducer mqBaseProducer; | |||||
| @Override | |||||
| public PageInfo<WxThirdPartyOrders> listAsPage(WxThirdPartyOrders record, Integer pageIndex, Integer pageSize) { | |||||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxThirdPartyOrdersMapper.findList(record)); | |||||
| } | |||||
| @Override | |||||
| public WxThirdPartyOrders getById(Long id, String tenantId) { | |||||
| WxThirdPartyOrders recordQ = new WxThirdPartyOrders(); | |||||
| recordQ.setId(id); | |||||
| recordQ.setTenantId(tenantId); | |||||
| return wxThirdPartyOrdersMapper.getById(recordQ); | |||||
| } | |||||
| @Override | |||||
| public WxThirdPartyOrders getByTransactionId(String transactionId, String tenantId) { | |||||
| WxThirdPartyOrders recordQ = new WxThirdPartyOrders(); | |||||
| recordQ.setTransactionId(transactionId); | |||||
| recordQ.setTenantId(tenantId); | |||||
| return wxThirdPartyOrdersMapper.getByTransactionId(recordQ); | |||||
| } | |||||
| @Override | |||||
| public void createOrder(WxThirdPartyOrders record) { | |||||
| WxThirdPartyOrders byTransactionId = wxThirdPartyOrdersMapper.getByTransactionId(record); | |||||
| if(byTransactionId != null){ | |||||
| logger.error("--第三方付款--通知消息已存在---byTransactionId="+byTransactionId.getTransactionId()); | |||||
| }else{ | |||||
| Date now = new Date(); | |||||
| final IdWorker idWorker = IdWorker.get(); | |||||
| record.setId(idWorker.nextId()); | |||||
| record.setCreateTime(now); | |||||
| record.setUpdateTime(now); | |||||
| //TODO 第三方获取门店(标识可能发生变化) | |||||
| WxMerchant wxMerchant = wxMerchantService.getById(Long.parseLong(record.getShopNumber())); | |||||
| if(wxMerchant != null){ | |||||
| record.setMerchantId(wxMerchant.getId()); | |||||
| }else{ | |||||
| logger.error("--第三方付款通知消息未找到门店--shopName="+record.getShopName()+"&shopNumber="+record.getShopNumber()); | |||||
| } | |||||
| WxCUserBasicInfo basicInfo = null; | |||||
| try{ | |||||
| basicInfo = wxCUserBasicInfoService.getById(Long.parseLong(record.getUserNumber()), record.getFinalTenantId()); | |||||
| if(basicInfo == null){ | |||||
| basicInfo = wxCUserBasicInfoService.registerByPhone(record, record.getUserPhone()); | |||||
| } | |||||
| }catch(Exception e){} | |||||
| if(basicInfo != null){ | |||||
| record.setCUserId(basicInfo.getId()); | |||||
| }else{ | |||||
| logger.error("--第三方付款通知消息未找到会员--userPhone="+record.getUserPhone()+"$userNumer="+record.getId()); | |||||
| } | |||||
| wxThirdPartyOrdersMapper.insertNoticeOrder(record); | |||||
| this.sendMessage(record,EnumYesOrNo.NO.getCode()); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * | |||||
| * @param record | |||||
| * @param isRefund 是否退款 | |||||
| */ | |||||
| private void sendMessage(WxThirdPartyOrders record,Integer isRefund){ | |||||
| FmInsideCircleOrderMsg msg = new FmInsideCircleOrderMsg(); | |||||
| msg.setMsgType(EnumMsgRecordType.THIRD_PARTY_NOTICE.getCode()); | |||||
| msg.updateTenantInfo(record); | |||||
| msg.setIsRefund(isRefund); | |||||
| msg.setCircleOrderId(record.getId()); | |||||
| msg.setMerchantId(record.getMerchantId()); | |||||
| msg.setCUserId(record.getCUserId()); | |||||
| msg.setShopName(record.getShopName()); | |||||
| msg.setUserPhone(record.getUserPhone()); | |||||
| msg.setAmount(record.getAmount()); | |||||
| mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||||
| } | |||||
| @Override | |||||
| public void updateRefundOrder(WxThirdPartyOrders record) { | |||||
| WxThirdPartyOrders byTransactionId = this.getByTransactionId(record.getTransactionId(),record.getTenantId()); | |||||
| if(byTransactionId == null){ | |||||
| logger.error("--第三方退款--付款消息未找到--transactionId="+record.getTransactionId()); | |||||
| }else if(byTransactionId.getIsRefund().equals(EnumYesOrNo.YES.getCode())){ | |||||
| logger.error("--第三方退款--已是退款状态--transactionId="+record.getTransactionId()); | |||||
| }else{ | |||||
| Date now = new Date(); | |||||
| record.setId(byTransactionId.getId()); | |||||
| record.setUpdateTime(now); | |||||
| wxThirdPartyOrdersMapper.updateRefundNoticeOrder(record); | |||||
| this.sendMessage(record,EnumYesOrNo.YES.getCode()); | |||||
| } | |||||
| } | |||||
| @Override | |||||
| public void updateAddPoints(WxThirdPartyOrders record) { | |||||
| record.setUpdateTime(new Date()); | |||||
| wxThirdPartyOrdersMapper.updateAddPoints(record); | |||||
| } | |||||
| @Override | |||||
| public void updateRefundPoints(WxThirdPartyOrders record) { | |||||
| record.setUpdateTime(new Date()); | |||||
| wxThirdPartyOrdersMapper.updateRefundPoints(record); | |||||
| } | |||||
| } | |||||
| @@ -7,13 +7,13 @@ import com.iformall.domain.po.WxCUserBasicInfo; | |||||
| import com.iformall.domain.po.WxCreditHistory; | import com.iformall.domain.po.WxCreditHistory; | ||||
| import com.iformall.domain.po.WxMerchant; | import com.iformall.domain.po.WxMerchant; | ||||
| import com.iformall.domain.po.msg.BaseMsg; | import com.iformall.domain.po.msg.BaseMsg; | ||||
| import com.iformall.domain.po.msg.FmInsideBusinessCircleMsg; | |||||
| import com.iformall.domain.po.msg.FmInsideCircleOrderMsg; | |||||
| import com.iformall.enums.EnumBusiness; | import com.iformall.enums.EnumBusiness; | ||||
| import com.iformall.enums.EnumScoreType; | import com.iformall.enums.EnumScoreType; | ||||
| import com.iformall.enums.EnumUserType; | import com.iformall.enums.EnumUserType; | ||||
| import com.iformall.enums.EnumYesOrNo; | |||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.service.msg.MsgSendService; | import com.iformall.service.msg.MsgSendService; | ||||
| import com.iformall.utils.MaUtil; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -44,6 +44,7 @@ public class FmInsideBusinessCircleMsgServiceImpl implements MsgSendService { | |||||
| @Autowired | @Autowired | ||||
| WxCUserBasicInfoService cUserBasicInfoService; | WxCUserBasicInfoService cUserBasicInfoService; | ||||
| @Autowired | |||||
| WxBusinessCircleOrderService businessCircleOrderService; | WxBusinessCircleOrderService businessCircleOrderService; | ||||
| @Autowired | @Autowired | ||||
| @@ -51,8 +52,8 @@ public class FmInsideBusinessCircleMsgServiceImpl implements MsgSendService { | |||||
| @Override | @Override | ||||
| public void send(BaseMsg baseMsg) throws Exception { | public void send(BaseMsg baseMsg) throws Exception { | ||||
| FmInsideBusinessCircleMsg msg = (FmInsideBusinessCircleMsg)baseMsg; | |||||
| FmInsideCircleOrderMsg msg = (FmInsideCircleOrderMsg)baseMsg; | |||||
| logger.info("FmInsideBusinessCircleMsgServiceImpl---{}"+msg.toString()); | |||||
| if(msg.getCUserId() == null){ | if(msg.getCUserId() == null){ | ||||
| return; | return; | ||||
| } | } | ||||
| @@ -61,35 +62,50 @@ public class FmInsideBusinessCircleMsgServiceImpl implements MsgSendService { | |||||
| return; | return; | ||||
| } | } | ||||
| WxBusinessCircleOrder wxBusinessCircleOrder = businessCircleOrderService.getById(msg.getBusinessCircleOrderId(),msg.getTenantId()); | |||||
| WxBusinessCircleOrder wxBusinessCircleOrder = businessCircleOrderService.getById(msg.getCircleOrderId(),msg.getTenantId()); | |||||
| if(wxBusinessCircleOrder == null){ | if(wxBusinessCircleOrder == null){ | ||||
| return; | return; | ||||
| } | } | ||||
| if(msg.getMerchantId() == null){ | |||||
| return; | |||||
| } | |||||
| Integer businessId = EnumBusiness.BUSINESS_ID6.getCode(); | Integer businessId = EnumBusiness.BUSINESS_ID6.getCode(); | ||||
| WxMerchant wxMerchant = wxMerchantService.getById(msg.getMerchantId()); | |||||
| if(wxMerchant != null){ | |||||
| businessId = wxMerchant.getBusinessId(); | |||||
| if(msg.getMerchantId() != null){ | |||||
| //TODO 第三方获取门店(标识可能发生变化) | |||||
| WxMerchant wxMerchant = wxMerchantService.getById(msg.getMerchantId()); | |||||
| if(wxMerchant != null){ | |||||
| businessId = wxMerchant.getBusinessId(); | |||||
| } | |||||
| } | } | ||||
| WxCreditHistory creditHistory = new WxCreditHistory(); | WxCreditHistory creditHistory = new WxCreditHistory(); | ||||
| creditHistory.setTenantId(msg.getFinalTenantId()); | creditHistory.setTenantId(msg.getFinalTenantId()); | ||||
| creditHistory.setOperatorType(EnumUserType.BUSINESS_CIRCLE.getCode()); | creditHistory.setOperatorType(EnumUserType.BUSINESS_CIRCLE.getCode()); | ||||
| creditHistory.setOperatorId(msg.getCUserId()); | creditHistory.setOperatorId(msg.getCUserId()); | ||||
| creditHistory.setCUserId(msg.getCUserId()); | creditHistory.setCUserId(msg.getCUserId()); | ||||
| creditHistory.setCreateDate(new Date()); | creditHistory.setCreateDate(new Date()); | ||||
| creditHistory.setCouponId(msg.getBusinessCircleOrderId()); | |||||
| creditHistory.setCouponId(msg.getCircleOrderId()); | |||||
| creditHistory.setBusinessId(businessId); | creditHistory.setBusinessId(businessId); | ||||
| creditHistory.setMerchantId(msg.getMerchantId()); | creditHistory.setMerchantId(msg.getMerchantId()); | ||||
| if(MaUtil.noticeEventType.equals(msg.getEventType())){ | |||||
| if(EnumYesOrNo.YES.getCode().equals(msg.getIsRefund())){ | |||||
| creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); | |||||
| creditHistory.setSpend(msg.getAmount()); | |||||
| creditHistory.setChangePurpose("商圈消费:消费商户["+msg.getWxShopName()+"] ("+creditHistory.getSpendStr()+"元) "); | |||||
| if(wxBusinessCircleOrder.getIsRefundPoints() == null){ | |||||
| logger.error("积分数据异常------"+ wxBusinessCircleOrder.getId()); | |||||
| return; | |||||
| } | |||||
| if(wxBusinessCircleOrder.getIsRefundPoints().equals(EnumYesOrNo.YES.getCode())){ | |||||
| logger.error("积分已退------"+ wxBusinessCircleOrder.getId()); | |||||
| return; | |||||
| } | |||||
| creditHistory.setCreditType(EnumScoreType.REFUND_CONSUMPTION.getCode()); | |||||
| creditHistory.setCreditNum(wxBusinessCircleOrder.getIncreasedPoints()); | |||||
| creditHistory.setSpend(0-msg.getAmount()); | |||||
| creditHistory.setChangePurpose("商圈消费退款:商户["+msg.getShopName()+"] ("+creditHistory.getSpendStr()+"元) ");// | |||||
| creditHistory = creditHistoryService.saveOrUpdate(creditHistory,msg.getTenantId()); | creditHistory = creditHistoryService.saveOrUpdate(creditHistory,msg.getTenantId()); | ||||
| Integer creditNum = 0; | Integer creditNum = 0; | ||||
| if (creditHistory.getCreditNum() != null) { | if (creditHistory.getCreditNum() != null) { | ||||
| @@ -99,20 +115,19 @@ public class FmInsideBusinessCircleMsgServiceImpl implements MsgSendService { | |||||
| return; | return; | ||||
| } | } | ||||
| wxBusinessCircleOrder.setIncreasedPoints(creditNum); | |||||
| wxBusinessCircleOrder.setPointsUpdateTime(creditHistory.getCreateDate()); | |||||
| businessCircleOrderService.updateAddPoints(wxBusinessCircleOrder); | |||||
| this.notifyPoints(wxBusinessCircleOrder); | |||||
| }else if(MaUtil.refundEventType.equals(msg.getEventType())){ | |||||
| wxBusinessCircleOrder.setRefundPointsTime(creditHistory.getCreateDate()); | |||||
| businessCircleOrderService.updateRefundPoints(wxBusinessCircleOrder); | |||||
| creditHistory.setCreditType(EnumScoreType.REFUND_CONSUMPTION.getCode()); | |||||
| creditHistory.setCreditNum(wxBusinessCircleOrder.getIncreasedPoints()); | |||||
| }else if(EnumYesOrNo.NO.getCode().equals(msg.getIsRefund())){ | |||||
| creditHistory.setSpend(0-msg.getAmount()); | |||||
| if(wxBusinessCircleOrder.getEarnPoints().equals(EnumYesOrNo.YES.getCode())){ | |||||
| logger.error("已加过积分------"+ wxBusinessCircleOrder.getId()); | |||||
| return; | |||||
| } | |||||
| creditHistory.setChangePurpose("商圈消费退款:消费商户["+msg.getWxShopName()+"] ("+creditHistory.getSpendStr()+"元) ");// | |||||
| creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); | |||||
| creditHistory.setSpend(msg.getAmount()); | |||||
| creditHistory.setChangePurpose("商圈消费:消费商户["+msg.getShopName()+"] ("+creditHistory.getSpendStr()+"元) "); | |||||
| creditHistory = creditHistoryService.saveOrUpdate(creditHistory,msg.getTenantId()); | creditHistory = creditHistoryService.saveOrUpdate(creditHistory,msg.getTenantId()); | ||||
| Integer creditNum = 0; | Integer creditNum = 0; | ||||
| if (creditHistory.getCreditNum() != null) { | if (creditHistory.getCreditNum() != null) { | ||||
| @@ -122,12 +137,21 @@ public class FmInsideBusinessCircleMsgServiceImpl implements MsgSendService { | |||||
| return; | return; | ||||
| } | } | ||||
| wxBusinessCircleOrder.setRefundPointsTime(creditHistory.getCreateDate()); | |||||
| businessCircleOrderService.updateRefundPoints(wxBusinessCircleOrder); | |||||
| wxBusinessCircleOrder.setIncreasedPoints(creditNum); | |||||
| wxBusinessCircleOrder.setPointsUpdateTime(creditHistory.getCreateDate()); | |||||
| businessCircleOrderService.updateAddPoints(wxBusinessCircleOrder); | |||||
| this.notifyPoints(wxBusinessCircleOrder); | |||||
| } | } | ||||
| } | } | ||||
| private void notifyPoints(WxBusinessCircleOrder wxBusinessCircleOrder) throws Exception{ | private void notifyPoints(WxBusinessCircleOrder wxBusinessCircleOrder) throws Exception{ | ||||
| if(wxBusinessCircleOrder.getIsPointsNotify().equals(EnumYesOrNo.YES.getCode())){ | |||||
| logger.error("积分已同步------"+ wxBusinessCircleOrder.getId()); | |||||
| return; | |||||
| } | |||||
| //添加积分成功,做积分同步 | //添加积分成功,做积分同步 | ||||
| WxPayService wxPayService = wxPayAccountService.getWxPayService(wxBusinessCircleOrder.getTenantId()); | WxPayService wxPayService = wxPayAccountService.getWxPayService(wxBusinessCircleOrder.getTenantId()); | ||||
| @@ -138,6 +162,7 @@ public class FmInsideBusinessCircleMsgServiceImpl implements MsgSendService { | |||||
| request.setEarnPoints(true); | request.setEarnPoints(true); | ||||
| request.setIncreasedPoints(wxBusinessCircleOrder.getIncreasedPoints()); | request.setIncreasedPoints(wxBusinessCircleOrder.getIncreasedPoints()); | ||||
| request.setPointsUpdateTime(sdf.format(new Date())); | request.setPointsUpdateTime(sdf.format(new Date())); | ||||
| String result = wxPayService.getBusinessCircleService().notifyPoints(request); | String result = wxPayService.getBusinessCircleService().notifyPoints(request); | ||||
| logger.info("微信商圈同步积分请求结果----"+result); | logger.info("微信商圈同步积分请求结果----"+result); | ||||
| @@ -0,0 +1,145 @@ | |||||
| package com.iformall.service.msg.impl; | |||||
| import com.github.binarywang.wxpay.bean.businesscircle.PointsNotifyRequest; | |||||
| import com.github.binarywang.wxpay.service.WxPayService; | |||||
| import com.iformall.domain.po.*; | |||||
| import com.iformall.domain.po.msg.BaseMsg; | |||||
| import com.iformall.domain.po.msg.FmInsideCircleOrderMsg; | |||||
| import com.iformall.enums.EnumBusiness; | |||||
| import com.iformall.enums.EnumScoreType; | |||||
| import com.iformall.enums.EnumUserType; | |||||
| import com.iformall.enums.EnumYesOrNo; | |||||
| import com.iformall.service.*; | |||||
| import com.iformall.service.msg.MsgSendService; | |||||
| import org.slf4j.Logger; | |||||
| import org.slf4j.LoggerFactory; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | |||||
| import org.springframework.stereotype.Service; | |||||
| import java.text.SimpleDateFormat; | |||||
| import java.util.Date; | |||||
| import java.util.Locale; | |||||
| /** | |||||
| * | |||||
| * | |||||
| */ | |||||
| @Service | |||||
| public class FmInsideThirdPartyOrderMsgServiceImpl implements MsgSendService { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'+'mm:ss", Locale.CHINA); | |||||
| @Autowired | |||||
| WxMerchantService wxMerchantService; | |||||
| @Autowired | |||||
| WxCreditHistoryService creditHistoryService; | |||||
| @Autowired | |||||
| WxCUserBasicInfoService cUserBasicInfoService; | |||||
| @Autowired | |||||
| WxThirdPartyOrdersService thirdPartyOrdersService; | |||||
| @Autowired | |||||
| WxPayAccountService wxPayAccountService; | |||||
| @Override | |||||
| public void send(BaseMsg baseMsg) throws Exception { | |||||
| FmInsideCircleOrderMsg msg = (FmInsideCircleOrderMsg)baseMsg; | |||||
| logger.info("FmInsideThirdPartyOrderMsgServiceImpl---{}"+msg.toString()); | |||||
| if(msg.getCUserId() == null){ | |||||
| return; | |||||
| } | |||||
| WxCUserBasicInfo user = cUserBasicInfoService.getById(msg.getCUserId(), msg.getFinalTenantId()); | |||||
| if(user == null){ | |||||
| return; | |||||
| } | |||||
| WxThirdPartyOrders wxThirdPartyOrders = thirdPartyOrdersService.getById(msg.getCircleOrderId(),msg.getTenantId()); | |||||
| if(wxThirdPartyOrders == null){ | |||||
| return; | |||||
| } | |||||
| Integer businessId = EnumBusiness.BUSINESS_ID6.getCode(); | |||||
| if(msg.getMerchantId() != null){ | |||||
| //TODO 第三方获取门店(标识可能发生变化) | |||||
| WxMerchant wxMerchant = wxMerchantService.getById(msg.getMerchantId()); | |||||
| if(wxMerchant != null){ | |||||
| businessId = wxMerchant.getBusinessId(); | |||||
| } | |||||
| } | |||||
| WxCreditHistory creditHistory = new WxCreditHistory(); | |||||
| creditHistory.setTenantId(msg.getFinalTenantId()); | |||||
| creditHistory.setOperatorType(EnumUserType.THIRD_CIRCLE.getCode()); | |||||
| creditHistory.setOperatorId(msg.getCUserId()); | |||||
| creditHistory.setCUserId(msg.getCUserId()); | |||||
| creditHistory.setCreateDate(new Date()); | |||||
| creditHistory.setCouponId(msg.getCircleOrderId()); | |||||
| creditHistory.setBusinessId(businessId); | |||||
| creditHistory.setMerchantId(msg.getMerchantId()); | |||||
| if(EnumYesOrNo.YES.getCode().equals(msg.getIsRefund())){ | |||||
| if(wxThirdPartyOrders.getIsRefundPoints() == null){ | |||||
| logger.error("积分数据异常------"+ wxThirdPartyOrders.getId()); | |||||
| return; | |||||
| } | |||||
| if(wxThirdPartyOrders.getIsRefundPoints().equals(EnumYesOrNo.YES.getCode())){ | |||||
| logger.error("积分已退------"+ wxThirdPartyOrders.getId()); | |||||
| return; | |||||
| } | |||||
| creditHistory.setCreditType(EnumScoreType.REFUND_CONSUMPTION.getCode()); | |||||
| creditHistory.setCreditNum(wxThirdPartyOrders.getIncreasedPoints()); | |||||
| creditHistory.setSpend(0-msg.getAmount()); | |||||
| creditHistory.setChangePurpose("第三方消费退款:商户["+msg.getShopName()+"] ("+creditHistory.getSpendStr()+"元) ");// | |||||
| creditHistory = creditHistoryService.saveOrUpdate(creditHistory,msg.getTenantId()); | |||||
| Integer creditNum = 0; | |||||
| if (creditHistory.getCreditNum() != null) { | |||||
| creditNum = creditHistory.getCreditNum(); | |||||
| } | |||||
| if(creditNum == 0){ | |||||
| return; | |||||
| } | |||||
| wxThirdPartyOrders.setRefundPointsTime(creditHistory.getCreateDate()); | |||||
| thirdPartyOrdersService.updateRefundPoints(wxThirdPartyOrders); | |||||
| }else if(EnumYesOrNo.NO.getCode().equals(msg.getIsRefund())){ | |||||
| if(wxThirdPartyOrders.getEarnPoints().equals(EnumYesOrNo.YES.getCode())){ | |||||
| logger.error("已加过积分------"+ wxThirdPartyOrders.getId()); | |||||
| return; | |||||
| } | |||||
| creditHistory.setCreditType(EnumScoreType.CONSUMPTION.getCode()); | |||||
| creditHistory.setSpend(msg.getAmount()); | |||||
| creditHistory.setChangePurpose("第三方消费:消费商户["+msg.getShopName()+"] ("+creditHistory.getSpendStr()+"元) "); | |||||
| creditHistory = creditHistoryService.saveOrUpdate(creditHistory,msg.getTenantId()); | |||||
| Integer creditNum = 0; | |||||
| if (creditHistory.getCreditNum() != null) { | |||||
| creditNum = creditHistory.getCreditNum(); | |||||
| } | |||||
| if(creditNum == 0){ | |||||
| return; | |||||
| } | |||||
| wxThirdPartyOrders.setIncreasedPoints(creditNum); | |||||
| wxThirdPartyOrders.setPointsUpdateTime(creditHistory.getCreateDate()); | |||||
| thirdPartyOrdersService.updateAddPoints(wxThirdPartyOrders); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -13,9 +13,6 @@ import org.apache.commons.lang3.StringUtils; | |||||
| public class MaUtil { | public class MaUtil { | ||||
| public static final String noticeEventType = "MALL_TRANSACTION.SUCCESS"; | |||||
| public static final String refundEventType = "MALL_REFUND.SUCCESS"; | |||||
| static public WxMaService getWeappService(WxAppinfo appinfo) { | static public WxMaService getWeappService(WxAppinfo appinfo) { | ||||
| WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl(); | WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl(); | ||||
| config.setAppid(appinfo.getAppId()); | config.setAppid(appinfo.getAppId()); | ||||
| @@ -199,13 +199,13 @@ | |||||
| <update id="updateAddPoints" parameterType="com.iformall.domain.po.WxBusinessCircleOrder"> | <update id="updateAddPoints" parameterType="com.iformall.domain.po.WxBusinessCircleOrder"> | ||||
| update wx_business_circle_order set | update wx_business_circle_order set | ||||
| `earn_points` = 1, `increased_points` = #{increasedPoints}, `points_update_time` = #{pointsUpdateTime}, | `earn_points` = 1, `increased_points` = #{increasedPoints}, `points_update_time` = #{pointsUpdateTime}, | ||||
| `is_refund_points` = 0, #{updateTime} | |||||
| `is_refund_points` = 0, `update_time` = #{updateTime} | |||||
| where `id` = #{id} and `tenant_id` = #{tenantId} | where `id` = #{id} and `tenant_id` = #{tenantId} | ||||
| </update> | </update> | ||||
| <update id="updateIsPointsNotify" parameterType="com.iformall.domain.po.WxBusinessCircleOrder"> | <update id="updateIsPointsNotify" parameterType="com.iformall.domain.po.WxBusinessCircleOrder"> | ||||
| update wx_business_circle_order set | update wx_business_circle_order set | ||||
| `is_points_notify` = 1, #{updateTime} | |||||
| `is_points_notify` = 1, `update_time` = #{updateTime} | |||||
| where `id` = #{id} and `tenant_id` = #{tenantId} | where `id` = #{id} and `tenant_id` = #{tenantId} | ||||
| </update> | </update> | ||||
| @@ -214,13 +214,13 @@ | |||||
| update wx_business_circle_order set | update wx_business_circle_order set | ||||
| `is_refund` = 1, `refund_notice_id` = #{refundNoticeId}, `refund_create_time` = #{refundCreateTime}, | `is_refund` = 1, `refund_notice_id` = #{refundNoticeId}, `refund_create_time` = #{refundCreateTime}, | ||||
| `refund_event_type` = #{refundEventType}, `refund_resource_type` = #{refundResourceType}, `refund_summary` = #{refundSummary}, | `refund_event_type` = #{refundEventType}, `refund_resource_type` = #{refundResourceType}, `refund_summary` = #{refundSummary}, | ||||
| `refund_time` = #{refundTime}, `refund_amount` = #{refundAmount}, `refund_id` = #{refundId}, #{updateTime} | |||||
| `refund_time` = #{refundTime}, `refund_amount` = #{refundAmount}, `refund_id` = #{refundId},`update_time` = #{updateTime} | |||||
| where `id` = #{id} and `tenant_id` = #{tenantId} | where `id` = #{id} and `tenant_id` = #{tenantId} | ||||
| </update> | </update> | ||||
| <update id="updateRefundPoints" parameterType="com.iformall.domain.po.WxBusinessCircleOrder"> | <update id="updateRefundPoints" parameterType="com.iformall.domain.po.WxBusinessCircleOrder"> | ||||
| update wx_business_circle_order set | update wx_business_circle_order set | ||||
| `is_refund_points` = 1, `refund_points_time` = #{refundPointsTime}, #{updateTime} | |||||
| `is_refund_points` = 1, `refund_points_time` = #{refundPointsTime}, `update_time` = #{updateTime} | |||||
| where `id` = #{id} and `tenant_id` = #{tenantId} | where `id` = #{id} and `tenant_id` = #{tenantId} | ||||
| </update> | </update> | ||||
| @@ -0,0 +1,183 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
| <mapper namespace="com.iformall.mapper.WxThirdPartyOrdersMapper"> | |||||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.WxThirdPartyOrders"> | |||||
| <id column="id" jdbcType="BIGINT" property="id"/> | |||||
| <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/> | |||||
| <result column="parent_tenant_id" jdbcType="VARCHAR" property="parentTenantId" /> | |||||
| <result column="source_app_id" jdbcType="VARCHAR" property="sourceAppId"/> | |||||
| <result column="shop_name" jdbcType="VARCHAR" property="shopName" /> | |||||
| <result column="shop_number" jdbcType="VARCHAR" property="shopNumber" /> | |||||
| <result column="user_phone" jdbcType="VARCHAR" property="userPhone" /> | |||||
| <result column="user_number" jdbcType="VARCHAR" property="userNumber" /> | |||||
| <result column="time_end" jdbcType="TIMESTAMP" property="timeEnd"/> | |||||
| <result column="amount" jdbcType="INTEGER" property="amount"/> | |||||
| <result column="transaction_id" jdbcType="VARCHAR" property="transactionId" /> | |||||
| <result column="summary" jdbcType="VARCHAR" property="summary" /> | |||||
| <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/> | |||||
| <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/> | |||||
| <result column="merchant_id" jdbcType="BIGINT" property="merchantId"/> | |||||
| <result column="c_user_id" jdbcType="BIGINT" property="cUserId"/> | |||||
| <result column="earn_points" jdbcType="TINYINT" property="earnPoints"/> | |||||
| <result column="increased_points" jdbcType="INTEGER" property="increasedPoints"/> | |||||
| <result column="points_update_time" jdbcType="TIMESTAMP" property="pointsUpdateTime"/> | |||||
| <result column="is_refund" jdbcType="TINYINT" property="isRefund"/> | |||||
| <result column="refund_summary" jdbcType="VARCHAR" property="refundSummary" /> | |||||
| <result column="refund_time" jdbcType="TIMESTAMP" property="refundTime"/> | |||||
| <result column="refund_amount" jdbcType="INTEGER" property="refundAmount"/> | |||||
| <result column="refund_id" jdbcType="VARCHAR" property="refundId" /> | |||||
| <result column="is_refund_points" jdbcType="TINYINT" property="isRefundPoints"/> | |||||
| <result column="refund_points_time" jdbcType="TIMESTAMP" property="refundPointsTime"/> | |||||
| </resultMap> | |||||
| <sql id="allColumns"> | |||||
| `id`, `tenant_id`, `parent_tenant_id`, `source_app_id`, `shop_name`, `shop_number`, | |||||
| `user_phone`, `user_number`, `time_end`, `amount`, `transaction_id`, `summary`, | |||||
| `create_time`, `update_time`, `merchant_id`, `c_user_id`, | |||||
| `earn_points`, `increased_points`, `points_update_time`, | |||||
| `is_refund`, `refund_summary`, `refund_time`, `refund_amount`, `refund_id`, | |||||
| `is_refund_points`, `refund_points_time` | |||||
| </sql> | |||||
| <sql id="dynamicWhereConditions"> | |||||
| where 1 = 1 | |||||
| <if test=" null != id "> | |||||
| and `id` = #{id} | |||||
| </if> | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != sourceAppId and '' != sourceAppId"> | |||||
| and `source_app_id` = #{sourceAppId} | |||||
| </if> | |||||
| <if test=" null != shopName "> | |||||
| and `shop_name` like concat('%', #{shopName},'%') | |||||
| </if> | |||||
| <if test=" null != shopNumber and '' != shopNumber"> | |||||
| and `shop_number` = #{shopNumber} | |||||
| </if> | |||||
| <if test=" null != userPhone and '' != userPhone"> | |||||
| and `user_phone` = #{userPhone} | |||||
| </if> | |||||
| <if test=" null != userNumber and '' != userNumber"> | |||||
| and `user_number` = #{userNumber} | |||||
| </if> | |||||
| <if test=" null != startTime "> | |||||
| and `time_end` >= #{startTime} | |||||
| </if> | |||||
| <if test=" null != endTime"> | |||||
| and `time_end` < #{endTime} | |||||
| </if> | |||||
| <if test=" null != transactionId and '' != transactionId"> | |||||
| and `transaction_id` = #{transactionId} | |||||
| </if> | |||||
| <if test=" null != merchantId "> | |||||
| and `merchant_id` = #{merchantId} | |||||
| </if> | |||||
| <if test=" null != cUserId "> | |||||
| and `c_user_id` = #{cUserId} | |||||
| </if> | |||||
| <if test=" null != earnPoints "> | |||||
| and `earn_points` = #{earnPoints} | |||||
| </if> | |||||
| <if test=" null != isRefund "> | |||||
| and `is_refund` = #{isRefund} | |||||
| </if> | |||||
| <if test=" null != refundId and '' != refundId"> | |||||
| and `refund_id` = #{refundId} | |||||
| </if> | |||||
| <if test=" null != isRefundPoints"> | |||||
| and `is_refund_points` = #{isRefundPoints} | |||||
| </if> | |||||
| <if test=" null != ids "> | |||||
| and `id` in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != sortColumns">order by ${sortColumns}</if> | |||||
| </sql> | |||||
| <select id="findList" parameterType="com.iformall.domain.po.WxThirdPartyOrders" resultMap="BaseResultMap"> | |||||
| select | |||||
| <include refid="allColumns"/> | |||||
| from wx_third_party_orders | |||||
| <include refid="dynamicWhereConditions"/> | |||||
| </select> | |||||
| <select id="getById" parameterType="com.iformall.domain.po.WxThirdPartyOrders" resultMap="BaseResultMap"> | |||||
| select | |||||
| <include refid="allColumns"/> | |||||
| from wx_third_party_orders | |||||
| where `id` = #{id} | |||||
| and tenant_id=#{tenantId} | |||||
| </select> | |||||
| <select id="getByTransactionId" parameterType="com.iformall.domain.po.WxThirdPartyOrders" resultMap="BaseResultMap"> | |||||
| select | |||||
| <include refid="allColumns"/> | |||||
| from wx_third_party_orders | |||||
| where `transaction_id` = #{transactionId} | |||||
| and tenant_id=#{tenantId} | |||||
| </select> | |||||
| <insert id="insertNoticeOrder" parameterType="com.iformall.domain.po.WxThirdPartyOrders" > | |||||
| INSERT INTO wx_business_circle_order ( | |||||
| `id`, `tenant_id`, `parent_tenant_id`, `source_app_id`,`shop_name`, `shop_number`, | |||||
| `user_phone`, `user_number`, `time_end`, `amount`, `transaction_id`, `summary`, | |||||
| `create_time`, `update_time`, `merchant_id`, `c_user_id`, `earn_points`, `is_refund` | |||||
| ) | |||||
| VALUES( | |||||
| #{id},#{tenantId},#{parentTenantId},#{sourceAppId},#{shopName},#{shopNumber}, | |||||
| #{userPhone},#{userNumber},#{timeEnd},#{amount},#{transactionId},#{summary}, | |||||
| #{createTime},#{updateTime}, #{merchantId},#{cUserId},0,0 | |||||
| ); | |||||
| </insert> | |||||
| <update id="updateAddPoints" parameterType="com.iformall.domain.po.WxThirdPartyOrders"> | |||||
| update wx_business_circle_order set | |||||
| `earn_points` = 1, `increased_points` = #{increasedPoints}, `points_update_time` = #{pointsUpdateTime}, | |||||
| `is_refund_points` = 0, `update_time` = #{updateTime} | |||||
| where `id` = #{id} and `tenant_id` = #{tenantId} | |||||
| </update> | |||||
| <update id="updateRefundNoticeOrder" parameterType="com.iformall.domain.po.WxThirdPartyOrders"> | |||||
| update wx_business_circle_order set | |||||
| `is_refund` = 1, `refund_summary` = #{refundSummary}, | |||||
| `refund_time` = #{refundTime}, `refund_amount` = #{refundAmount}, `refund_id` = #{refundId}, | |||||
| `update_time` = #{updateTime} | |||||
| where `id` = #{id} and `tenant_id` = #{tenantId} | |||||
| </update> | |||||
| <update id="updateRefundPoints" parameterType="com.iformall.domain.po.WxThirdPartyOrders"> | |||||
| update wx_business_circle_order set | |||||
| `is_refund_points` = 1, `refund_points_time` = #{refundPointsTime}, `update_time` = #{updateTime} | |||||
| where `id` = #{id} and `tenant_id` = #{tenantId} | |||||
| </update> | |||||
| </mapper> | |||||