Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 店铺用户管理
|
* 店铺用户管理
|
||||||
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@@ -28,6 +29,7 @@ public class ShopUserController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取店铺用户概述信息
|
* 获取店铺用户概述信息
|
||||||
|
*
|
||||||
* @param isVip 0 非vip 1 vip
|
* @param isVip 0 非vip 1 vip
|
||||||
* @return 概述信息
|
* @return 概述信息
|
||||||
*/
|
*/
|
||||||
@@ -39,7 +41,8 @@ public class ShopUserController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取店铺用户列表
|
* 获取店铺用户列表
|
||||||
* @param key 昵称或手机号
|
*
|
||||||
|
* @param key 昵称或手机号
|
||||||
* @param isVip 0 非vip 1 vip
|
* @param isVip 0 非vip 1 vip
|
||||||
* @return 用户列表
|
* @return 用户列表
|
||||||
*/
|
*/
|
||||||
@@ -51,6 +54,7 @@ public class ShopUserController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 店铺用户信息添加
|
* 店铺用户信息添加
|
||||||
|
*
|
||||||
* @return 是否成功
|
* @return 是否成功
|
||||||
*/
|
*/
|
||||||
@SaAdminCheckPermission("shopUser:add")
|
@SaAdminCheckPermission("shopUser:add")
|
||||||
@@ -61,6 +65,7 @@ public class ShopUserController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 店铺用户信息修改
|
* 店铺用户信息修改
|
||||||
|
*
|
||||||
* @return 是否成功
|
* @return 是否成功
|
||||||
*/
|
*/
|
||||||
@SaAdminCheckPermission("shopUser:edit")
|
@SaAdminCheckPermission("shopUser:edit")
|
||||||
@@ -71,13 +76,14 @@ public class ShopUserController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 店铺用户余额修改
|
* 店铺用户余额修改
|
||||||
|
*
|
||||||
* @return 是否成功
|
* @return 是否成功
|
||||||
*/
|
*/
|
||||||
@SaAdminCheckPermission("shopUser:editFlow")
|
@SaAdminCheckPermission("shopUser:editFlow")
|
||||||
@PutMapping("/money")
|
@PutMapping("/money")
|
||||||
public CzgResult<Boolean> editMoney(@RequestBody @Validated ShopUserMoneyEditDTO shopUserMoneyEditDTO) {
|
public CzgResult<Boolean> editMoney(@RequestBody @Validated ShopUserMoneyEditDTO shopUserMoneyEditDTO) {
|
||||||
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.ADMIN_IN);
|
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.ADMIN_IN);
|
||||||
return CzgResult.success(shopUserService.updateMoney(StpKit.USER.getShopId(), shopUserMoneyEditDTO));
|
return CzgResult.success(shopUserService.updateMoney(StpKit.USER.getShopId(), shopUserMoneyEditDTO) > 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 店铺充值活动管理
|
* 用户店铺充值活动管理
|
||||||
|
*
|
||||||
* @author ww
|
* @author ww
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
|
|||||||
@@ -27,6 +27,15 @@ public class VipPayController {
|
|||||||
@Resource
|
@Resource
|
||||||
private PayService payService;
|
private PayService payService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 现金充值
|
||||||
|
*/
|
||||||
|
@PostMapping("cashPayVip")
|
||||||
|
public CzgResult<Object> cashPayVip(@Validated @RequestBody VipPayParamDTO payParam) {
|
||||||
|
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
||||||
|
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType"));
|
||||||
|
return payService.cashPayVip(payParam);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* js支付
|
* js支付
|
||||||
@@ -36,7 +45,7 @@ public class VipPayController {
|
|||||||
@PostMapping("jsPayVip")
|
@PostMapping("jsPayVip")
|
||||||
public CzgResult<Map<String, Object>> jsPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> jsPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
|
||||||
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
||||||
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType"));
|
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType"));
|
||||||
return payService.jsPayVip(ServletUtil.getClientIPByHeader(request), payParam);
|
return payService.jsPayVip(ServletUtil.getClientIPByHeader(request), payParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,7 +57,7 @@ public class VipPayController {
|
|||||||
@PostMapping("ltPayVip")
|
@PostMapping("ltPayVip")
|
||||||
public CzgResult<Map<String, Object>> ltPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> ltPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
|
||||||
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
||||||
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType"));
|
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType"));
|
||||||
return payService.ltPayVip(ServletUtil.getClientIPByHeader(request), payParam);
|
return payService.ltPayVip(ServletUtil.getClientIPByHeader(request), payParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +67,7 @@ public class VipPayController {
|
|||||||
@PostMapping("scanPayVip")
|
@PostMapping("scanPayVip")
|
||||||
public CzgResult<Map<String, Object>> scanPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> scanPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
|
||||||
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
||||||
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType"));
|
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType"));
|
||||||
return payService.scanPayVip(ServletUtil.getClientIPByHeader(request), payParam);
|
return payService.scanPayVip(ServletUtil.getClientIPByHeader(request), payParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,7 +78,7 @@ public class VipPayController {
|
|||||||
@PostMapping("microPayVip")
|
@PostMapping("microPayVip")
|
||||||
public CzgResult<Map<String, Object>> microPayVip(@Validated @RequestBody VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> microPayVip(@Validated @RequestBody VipPayParamDTO payParam) {
|
||||||
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
||||||
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType"));
|
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(), "platformType"));
|
||||||
return payService.microPayVip(payParam);
|
return payService.microPayVip(payParam);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import lombok.NoArgsConstructor;
|
|||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,12 +40,12 @@ public class ShopActivateDTO implements Serializable {
|
|||||||
* 充值金额
|
* 充值金额
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "充值金额不能为空", groups = {InsertGroup.class, UpdateGroup.class})
|
@NotNull(message = "充值金额不能为空", groups = {InsertGroup.class, UpdateGroup.class})
|
||||||
private Integer amount;
|
private BigDecimal amount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 赠送金额
|
* 赠送金额
|
||||||
*/
|
*/
|
||||||
private Integer giftAmount;
|
private BigDecimal giftAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 赠送积分
|
* 赠送积分
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
|
|
||||||
package com.czg.account.dto;
|
package com.czg.account.dto;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.sql.Time;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import com.alibaba.fastjson2.annotation.JSONField;
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
import java.io.Serial;
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.sql.Time;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 优惠券 实体类。
|
* 优惠券 实体类。
|
||||||
*
|
*
|
||||||
@@ -37,18 +38,12 @@ public class ShopCouponDTO implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
private LocalDateTime createTime;
|
|
||||||
|
|
||||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
|
||||||
private LocalDateTime updateTime;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 名称(无意义)
|
* 名称(无意义)
|
||||||
*/
|
*/
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
private String shopId;
|
private Long shopId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 已使用数量
|
* 已使用数量
|
||||||
@@ -139,4 +134,11 @@ public class ShopCouponDTO implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String editor;
|
private String editor;
|
||||||
|
|
||||||
|
|
||||||
|
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
package com.czg.account.dto;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 活动赠送商品表 实体类。
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @since 2025-02-18
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ShopCouponProductDTO implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 活动Id
|
||||||
|
*/
|
||||||
|
private Long couponId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品id
|
||||||
|
*/
|
||||||
|
private Long productId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数量
|
||||||
|
*/
|
||||||
|
private Integer num;
|
||||||
|
|
||||||
|
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,16 +4,16 @@ import com.mybatisflex.annotation.Column;
|
|||||||
import com.mybatisflex.annotation.Id;
|
import com.mybatisflex.annotation.Id;
|
||||||
import com.mybatisflex.annotation.KeyType;
|
import com.mybatisflex.annotation.KeyType;
|
||||||
import com.mybatisflex.annotation.Table;
|
import com.mybatisflex.annotation.Table;
|
||||||
import java.io.Serializable;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 活动 实体类。
|
* 活动 实体类。
|
||||||
*
|
*
|
||||||
@@ -38,12 +38,12 @@ public class ShopActivate implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 充值金额
|
* 充值金额
|
||||||
*/
|
*/
|
||||||
private Integer amount;
|
private BigDecimal amount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 赠送金额
|
* 赠送金额
|
||||||
*/
|
*/
|
||||||
private Integer giftAmount;
|
private BigDecimal giftAmount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 赠送积分
|
* 赠送积分
|
||||||
|
|||||||
@@ -1,22 +1,20 @@
|
|||||||
package com.czg.account.entity;
|
package com.czg.account.entity;
|
||||||
|
|
||||||
import com.alibaba.fastjson2.annotation.JSONField;
|
|
||||||
import com.mybatisflex.annotation.Column;
|
import com.mybatisflex.annotation.Column;
|
||||||
import com.mybatisflex.annotation.Id;
|
import com.mybatisflex.annotation.Id;
|
||||||
import com.mybatisflex.annotation.KeyType;
|
import com.mybatisflex.annotation.KeyType;
|
||||||
import com.mybatisflex.annotation.Table;
|
import com.mybatisflex.annotation.Table;
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.sql.Time;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
import java.io.Serial;
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.sql.Time;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 优惠券 实体类。
|
* 优惠券 实体类。
|
||||||
*
|
*
|
||||||
@@ -44,18 +42,12 @@ public class ShopCoupon implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
@Column(onInsertValue = "now()")
|
|
||||||
private LocalDateTime createTime;
|
|
||||||
|
|
||||||
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
|
||||||
private LocalDateTime updateTime;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 名称(无意义)
|
* 名称(无意义)
|
||||||
*/
|
*/
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
private String shopId;
|
private Long shopId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 已使用数量
|
* 已使用数量
|
||||||
@@ -80,7 +72,7 @@ public class ShopCoupon implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 有效天数
|
* 有效天数
|
||||||
*/
|
*/
|
||||||
private Integer validDays;
|
private Long validDays;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 隔多少天生效
|
* 隔多少天生效
|
||||||
@@ -142,4 +134,10 @@ public class ShopCoupon implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String editor;
|
private String editor;
|
||||||
|
|
||||||
|
@Column(onInsertValue = "now()")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package com.czg.account.entity;
|
||||||
|
|
||||||
|
import com.mybatisflex.annotation.Column;
|
||||||
|
import com.mybatisflex.annotation.Id;
|
||||||
|
import com.mybatisflex.annotation.KeyType;
|
||||||
|
import com.mybatisflex.annotation.Table;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 活动赠送商品表 实体类。
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @since 2025-02-18
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Table("tb_shop_coupon_product")
|
||||||
|
public class ShopCouponProduct implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Id(keyType = KeyType.Auto)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 活动Id
|
||||||
|
*/
|
||||||
|
private Long couponId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品id
|
||||||
|
*/
|
||||||
|
private Long productId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数量
|
||||||
|
*/
|
||||||
|
private Integer num;
|
||||||
|
|
||||||
|
@Column(onInsertValue = "now()")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ import com.czg.account.dto.ShopActivateDTO;
|
|||||||
import com.czg.account.entity.ShopActivate;
|
import com.czg.account.entity.ShopActivate;
|
||||||
import com.mybatisflex.core.service.IService;
|
import com.mybatisflex.core.service.IService;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -20,5 +21,13 @@ public interface ShopActivateService extends IService<ShopActivate> {
|
|||||||
|
|
||||||
Boolean edit(ShopActivateDTO activateDTO);
|
Boolean edit(ShopActivateDTO activateDTO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param memAmount 充值金额
|
||||||
|
* @param relationId 关联Id
|
||||||
|
* 霸王餐时 订单id
|
||||||
|
* 充值奖励 的关联id 是tb_shop_user_flow的充值 记录id
|
||||||
|
* 支付/退款 tb_order_payment.id
|
||||||
|
*/
|
||||||
|
void giveActivate(Long shopId, Long vipId, BigDecimal memAmount, Long relationId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.czg.account.service;
|
||||||
|
|
||||||
|
import com.czg.account.entity.ShopCouponProduct;
|
||||||
|
import com.mybatisflex.core.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 活动赠送商品表 服务层。
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @since 2025-02-18
|
||||||
|
*/
|
||||||
|
public interface ShopCouponProductService extends IService<ShopCouponProduct> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -17,7 +17,10 @@ public interface ShopUserService extends IService<ShopUser> {
|
|||||||
|
|
||||||
Boolean updateInfo(Long shopId, ShopUserEditDTO shopUserEditDTO);
|
Boolean updateInfo(Long shopId, ShopUserEditDTO shopUserEditDTO);
|
||||||
|
|
||||||
Boolean updateMoney(Long shopId, ShopUserMoneyEditDTO shopUserEditDTO);
|
/**
|
||||||
|
* 返回流水Id
|
||||||
|
*/
|
||||||
|
Long updateMoney(Long shopId, ShopUserMoneyEditDTO shopUserEditDTO);
|
||||||
|
|
||||||
ShopUserSummaryDTO getSummary(Long shopId, Integer isVip);
|
ShopUserSummaryDTO getSummary(Long shopId, Integer isVip);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.czg.account.vo;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ww
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CouponProductVo {
|
||||||
|
/**
|
||||||
|
* 商品id
|
||||||
|
*/
|
||||||
|
private Long productId;
|
||||||
|
/**
|
||||||
|
* 数量
|
||||||
|
*/
|
||||||
|
private Integer num;
|
||||||
|
}
|
||||||
@@ -23,7 +23,13 @@ public enum ShopUserFlowBizEnum {
|
|||||||
// 充值退款
|
// 充值退款
|
||||||
RECHARGE_REFUND("rechargeRefund"),
|
RECHARGE_REFUND("rechargeRefund"),
|
||||||
// 管理员手动增减余额
|
// 管理员手动增减余额
|
||||||
ADMIN_IN("adminIn");
|
ADMIN_IN("adminIn"),
|
||||||
|
//管理员退款充值
|
||||||
|
ADMIN_REFUND("adminRefund"),
|
||||||
|
//adminOut
|
||||||
|
ADMIN_OUT("adminOut"),
|
||||||
|
//adminInOut
|
||||||
|
ADMIN_IN_OUT("adminInOut"),;
|
||||||
private final String code;
|
private final String code;
|
||||||
|
|
||||||
ShopUserFlowBizEnum(String code) {
|
ShopUserFlowBizEnum(String code) {
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.czg.service.account.mapper;
|
||||||
|
|
||||||
|
import com.czg.account.entity.ShopCouponProduct;
|
||||||
|
import com.mybatisflex.core.BaseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 活动赠送商品表 映射层。
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @since 2025-02-18
|
||||||
|
*/
|
||||||
|
public interface ShopCouponProductMapper extends BaseMapper<ShopCouponProduct> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,15 +1,29 @@
|
|||||||
package com.czg.service.account.service.impl;
|
package com.czg.service.account.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.czg.account.dto.ShopActivateDTO;
|
import com.czg.account.dto.ShopActivateDTO;
|
||||||
|
import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO;
|
||||||
import com.czg.account.entity.ShopActivate;
|
import com.czg.account.entity.ShopActivate;
|
||||||
import com.czg.account.service.ShopActivateService;
|
import com.czg.account.entity.ShopActivateInRecord;
|
||||||
|
import com.czg.account.entity.ShopCoupon;
|
||||||
|
import com.czg.account.entity.ShopCouponProduct;
|
||||||
|
import com.czg.account.service.*;
|
||||||
|
import com.czg.account.vo.CouponProductVo;
|
||||||
|
import com.czg.enums.ShopUserFlowBizEnum;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import com.czg.service.account.mapper.ShopActivateMapper;
|
import com.czg.service.account.mapper.ShopActivateMapper;
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -21,6 +35,15 @@ import java.util.List;
|
|||||||
@DubboService
|
@DubboService
|
||||||
public class ShopActivateServiceImpl extends ServiceImpl<ShopActivateMapper, ShopActivate> implements ShopActivateService {
|
public class ShopActivateServiceImpl extends ServiceImpl<ShopActivateMapper, ShopActivate> implements ShopActivateService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ShopCouponService couponService;
|
||||||
|
@Resource
|
||||||
|
private ShopActivateInRecordService inRecordService;
|
||||||
|
@Resource
|
||||||
|
private ShopCouponProductService couProductService;
|
||||||
|
@Resource
|
||||||
|
private ShopUserService shopUserService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ShopActivateDTO> getList() {
|
public List<ShopActivateDTO> getList() {
|
||||||
return queryChain().select()
|
return queryChain().select()
|
||||||
@@ -42,4 +65,106 @@ public class ShopActivateServiceImpl extends ServiceImpl<ShopActivateMapper, Sho
|
|||||||
BeanUtil.copyProperties(activateDTO, shopActivate);
|
BeanUtil.copyProperties(activateDTO, shopActivate);
|
||||||
return updateById(shopActivate);
|
return updateById(shopActivate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void giveActivate(Long shopId, Long vipId, BigDecimal memAmount, Long relationId) {
|
||||||
|
ShopActivate activate = queryChain().select().eq(ShopActivate::getShopId, shopId)
|
||||||
|
.le(ShopActivate::getAmount, memAmount)
|
||||||
|
.orderBy(ShopActivate::getGiftAmount, false)
|
||||||
|
.one();
|
||||||
|
if (ObjectUtil.isNull(activate)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//赠送优惠券
|
||||||
|
if (activate.getIsGiftCoupon() == 1) {
|
||||||
|
ShopCoupon shopCoupon = couponService.getById(activate.getCouponId());
|
||||||
|
if (shopCoupon != null && shopCoupon.getStatus().equals(1) && shopCoupon.getLeftNumber() > activate.getNum()) {
|
||||||
|
LocalDateTime start = LocalDateTime.now().with(LocalTime.MIN);
|
||||||
|
LocalDateTime end = null;
|
||||||
|
if ("fixed".equals(shopCoupon.getValidityType())) {
|
||||||
|
//固定时间
|
||||||
|
end = LocalDateTimeUtil.offset(start, shopCoupon.getValidDays(), ChronoUnit.DAYS).with(LocalTime.MAX);
|
||||||
|
} else if ("custom".equals(shopCoupon.getValidityType())) {
|
||||||
|
//自定义时间
|
||||||
|
start = shopCoupon.getValidStartTime();
|
||||||
|
end = shopCoupon.getValidEndTime();
|
||||||
|
}
|
||||||
|
List<ShopActivateInRecord> actGiveRecords = new ArrayList<>();
|
||||||
|
if (shopCoupon.getType() == 1) {
|
||||||
|
//满减
|
||||||
|
ShopActivateInRecord record = new ShopActivateInRecord();
|
||||||
|
record.setVipUserId(vipId);
|
||||||
|
record.setCouponId(shopCoupon.getId());
|
||||||
|
record.setName("满" + shopCoupon.getFullAmount() + "减" + shopCoupon.getDiscountAmount());
|
||||||
|
record.setFullAmount(shopCoupon.getFullAmount());
|
||||||
|
record.setDiscountAmount(shopCoupon.getDiscountAmount());
|
||||||
|
record.setType(1);
|
||||||
|
record.setNum(activate.getNum());
|
||||||
|
record.setOverNum(activate.getNum());
|
||||||
|
record.setShopId(shopId);
|
||||||
|
record.setSourceActId(activate.getId());
|
||||||
|
record.setSourceFlowId(relationId);
|
||||||
|
record.setUseStartTime(start);
|
||||||
|
record.setUseEndTime(end);
|
||||||
|
record.setSource("activate");
|
||||||
|
record.setCouponJson(getCouponJson(activate, shopCoupon, null));
|
||||||
|
actGiveRecords.add(record);
|
||||||
|
} else if (shopCoupon.getType() == 2) {
|
||||||
|
List<CouponProductVo> couponProducts = couProductService.queryChain()
|
||||||
|
.select(ShopCouponProduct::getProductId, ShopCouponProduct::getNum)
|
||||||
|
.eq(ShopCouponProduct::getCouponId, shopCoupon.getId())
|
||||||
|
.listAs(CouponProductVo.class);
|
||||||
|
//商品券
|
||||||
|
for (CouponProductVo actPro : couponProducts) {
|
||||||
|
ShopActivateInRecord record = new ShopActivateInRecord();
|
||||||
|
record.setVipUserId(vipId);
|
||||||
|
record.setCouponId(shopCoupon.getId());
|
||||||
|
record.setName("商品券");
|
||||||
|
record.setType(2);
|
||||||
|
record.setProId(actPro.getProductId());
|
||||||
|
record.setNum(actPro.getNum() * activate.getNum());
|
||||||
|
record.setOverNum(actPro.getNum() * activate.getNum());
|
||||||
|
record.setShopId(shopId);
|
||||||
|
record.setSourceActId(activate.getId());
|
||||||
|
record.setSourceFlowId(relationId);
|
||||||
|
record.setUseStartTime(start);
|
||||||
|
record.setUseEndTime(end);
|
||||||
|
record.setSource("activate");
|
||||||
|
record.setCouponJson(getCouponJson(activate, shopCoupon, actPro));
|
||||||
|
actGiveRecords.add(record);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
inRecordService.saveBatch(actGiveRecords);
|
||||||
|
shopCoupon.setLeftNumber(shopCoupon.getLeftNumber() - activate.getNum());
|
||||||
|
couponService.updateChain()
|
||||||
|
.set(ShopCoupon::getLeftNumber, shopCoupon.getLeftNumber() - activate.getNum())
|
||||||
|
.eq(ShopCoupon::getId, shopCoupon.getId())
|
||||||
|
.update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//赠送金额
|
||||||
|
if (activate.getGiftAmount() != null && activate.getGiftAmount().compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
ShopUserMoneyEditDTO shopUserMoneyEditDTO = ShopUserMoneyEditDTO.builder()
|
||||||
|
.id(vipId)
|
||||||
|
.money(activate.getGiftAmount())
|
||||||
|
.type(1)
|
||||||
|
.remark("充值活动赠送")
|
||||||
|
.relationId(relationId)
|
||||||
|
.bizEnum(ShopUserFlowBizEnum.AWARD_IN)
|
||||||
|
.build();
|
||||||
|
//更新会员余额 并生成流水
|
||||||
|
shopUserService.updateMoney(shopId, shopUserMoneyEditDTO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String getCouponJson(ShopActivate activate, ShopCoupon tbShopCoupon, CouponProductVo couProduct) {
|
||||||
|
JSONObject result = new JSONObject();
|
||||||
|
result.put("activate", JSONObject.toJSONString(activate));
|
||||||
|
result.put("coupon", JSONObject.toJSONString(tbShopCoupon));
|
||||||
|
if (couProduct != null) {
|
||||||
|
result.put("couProduct", JSONObject.toJSONString(couProduct));
|
||||||
|
}
|
||||||
|
return result.toJSONString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.czg.service.account.service.impl;
|
||||||
|
|
||||||
|
import com.czg.account.entity.ShopCouponProduct;
|
||||||
|
import com.czg.account.service.ShopCouponProductService;
|
||||||
|
import com.czg.service.account.mapper.ShopCouponProductMapper;
|
||||||
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 活动赠送商品表 服务层实现。
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @since 2025-02-18
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class ShopCouponProductServiceImpl extends ServiceImpl<ShopCouponProductMapper, ShopCouponProduct> implements ShopCouponProductService {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,7 +2,6 @@ package com.czg.service.account.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
|
||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.czg.account.dto.shopuser.*;
|
import com.czg.account.dto.shopuser.*;
|
||||||
@@ -13,7 +12,6 @@ import com.czg.account.service.ShopUserFlowService;
|
|||||||
import com.czg.account.service.ShopUserService;
|
import com.czg.account.service.ShopUserService;
|
||||||
import com.czg.account.service.UserInfoService;
|
import com.czg.account.service.UserInfoService;
|
||||||
import com.czg.config.RedisCst;
|
import com.czg.config.RedisCst;
|
||||||
import com.czg.enums.ShopUserFlowBizEnum;
|
|
||||||
import com.czg.exception.ApiNotPrintException;
|
import com.czg.exception.ApiNotPrintException;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import com.czg.service.RedisService;
|
import com.czg.service.RedisService;
|
||||||
@@ -21,12 +19,10 @@ import com.czg.service.account.mapper.ShopUserMapper;
|
|||||||
import com.czg.utils.AssertUtil;
|
import com.czg.utils.AssertUtil;
|
||||||
import com.czg.utils.PageUtil;
|
import com.czg.utils.PageUtil;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
import com.mybatisflex.core.query.QueryCondition;
|
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
|
||||||
@@ -47,7 +43,7 @@ public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> i
|
|||||||
@Resource
|
@Resource
|
||||||
private RedisService redisService;
|
private RedisService redisService;
|
||||||
|
|
||||||
private ShopUser getUserInfo(Long shopUserId, Long shopId) {
|
private ShopUser getUserInfo(Long shopId, Long shopUserId) {
|
||||||
ShopUser shopUser = queryChain().eq(ShopUser::getShopId, shopId).eq(ShopUser::getId, shopUserId).one();
|
ShopUser shopUser = queryChain().eq(ShopUser::getShopId, shopId).eq(ShopUser::getId, shopUserId).one();
|
||||||
if (shopUser == null) {
|
if (shopUser == null) {
|
||||||
throw new ApiNotPrintException("用户信息不存在");
|
throw new ApiNotPrintException("用户信息不存在");
|
||||||
@@ -77,12 +73,12 @@ public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> i
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean updateMoney(Long shopId, ShopUserMoneyEditDTO shopUserEditDTO) {
|
public Long updateMoney(Long shopId, ShopUserMoneyEditDTO shopUserEditDTO) {
|
||||||
shopUserEditDTO.setMoney(shopUserEditDTO.getMoney().setScale(2, RoundingMode.DOWN));
|
shopUserEditDTO.setMoney(shopUserEditDTO.getMoney().setScale(2, RoundingMode.DOWN));
|
||||||
ShopUser userInfo = getUserInfo(shopId, shopUserEditDTO.getId());
|
ShopUser userInfo = getUserInfo(shopId, shopUserEditDTO.getId());
|
||||||
|
|
||||||
ShopUserFlow userFlow = new ShopUserFlow();
|
ShopUserFlow userFlow = new ShopUserFlow();
|
||||||
int flag = 0;
|
int flag;
|
||||||
if (shopUserEditDTO.getType() == 0) {
|
if (shopUserEditDTO.getType() == 0) {
|
||||||
flag = mapper.decrAccount(shopId, shopUserEditDTO.getId(), DateUtil.date().toLocalDateTime(), shopUserEditDTO.getMoney());
|
flag = mapper.decrAccount(shopId, shopUserEditDTO.getId(), DateUtil.date().toLocalDateTime(), shopUserEditDTO.getMoney());
|
||||||
} else {
|
} else {
|
||||||
@@ -100,7 +96,8 @@ public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> i
|
|||||||
userFlow.setType(shopUserEditDTO.getType() == 0 ? "-" : "+");
|
userFlow.setType(shopUserEditDTO.getType() == 0 ? "-" : "+");
|
||||||
userFlow.setRemark(shopUserEditDTO.getRemark());
|
userFlow.setRemark(shopUserEditDTO.getRemark());
|
||||||
userFlow.setRelationId(shopUserEditDTO.getRelationId());
|
userFlow.setRelationId(shopUserEditDTO.getRelationId());
|
||||||
return shopUserFlowService.save(userFlow);
|
shopUserFlowService.save(userFlow);
|
||||||
|
return userFlow.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -135,6 +132,7 @@ public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> i
|
|||||||
|
|
||||||
ShopUser shopUser = BeanUtil.copyProperties(shopUserAddDTO, ShopUser.class);
|
ShopUser shopUser = BeanUtil.copyProperties(shopUserAddDTO, ShopUser.class);
|
||||||
shopUser.setShopId(shopId);
|
shopUser.setShopId(shopId);
|
||||||
|
shopUser.setUserId(userInfo.getId());
|
||||||
shopUser.setJoinTime(shopUser.getIsVip() != null && shopUser.getIsVip() == 1 ? DateUtil.date().toLocalDateTime() : null);
|
shopUser.setJoinTime(shopUser.getIsVip() != null && shopUser.getIsVip() == 1 ? DateUtil.date().toLocalDateTime() : null);
|
||||||
return save(shopUser);
|
return save(shopUser);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<?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.czg.service.account.mapper.ShopCouponProductMapper">
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
where a.id=#{userId}
|
where a.id=#{userId}
|
||||||
</select>
|
</select>
|
||||||
<select id="selectPageByKeyAndIsVip" resultType="com.czg.account.entity.ShopUser">
|
<select id="selectPageByKeyAndIsVip" resultType="com.czg.account.entity.ShopUser">
|
||||||
select tb_user_info.* from tb_user_info
|
select tb_shop_user.* from tb_user_info
|
||||||
left join tb_shop_user on tb_user_info.id=tb_shop_user.user_id ${qwSql} limit ${pageOffset}, ${pageSize}
|
left join tb_shop_user on tb_user_info.id=tb_shop_user.user_id ${qwSql} limit ${pageOffset}, ${pageSize}
|
||||||
</select>
|
</select>
|
||||||
<select id="selectPageByKeyAndIsVip_COUNT" resultType="java.lang.Long">
|
<select id="selectPageByKeyAndIsVip_COUNT" resultType="java.lang.Long">
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.czg.service.order.service;
|
package com.czg.service.order.service;
|
||||||
|
|
||||||
import com.czg.entity.resp.*;
|
import com.czg.entity.resp.CzgBaseResp;
|
||||||
|
import com.czg.entity.resp.CzgRefundResp;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
import com.czg.service.order.dto.OrderPayParamDTO;
|
import com.czg.service.order.dto.OrderPayParamDTO;
|
||||||
import com.czg.service.order.dto.VipPayParamDTO;
|
import com.czg.service.order.dto.VipPayParamDTO;
|
||||||
@@ -11,6 +12,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付
|
* 支付
|
||||||
|
*
|
||||||
* @author ww
|
* @author ww
|
||||||
*/
|
*/
|
||||||
public interface PayService {
|
public interface PayService {
|
||||||
@@ -39,6 +41,12 @@ public interface PayService {
|
|||||||
*/
|
*/
|
||||||
CzgResult<Map<String, Object>> microPayOrder(OrderPayParamDTO payParam);
|
CzgResult<Map<String, Object>> microPayOrder(OrderPayParamDTO payParam);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 现金充值
|
||||||
|
*/
|
||||||
|
CzgResult<Object> cashPayVip(VipPayParamDTO payParam);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* js支付
|
* js支付
|
||||||
*/
|
*/
|
||||||
@@ -63,7 +71,7 @@ public interface PayService {
|
|||||||
/**
|
/**
|
||||||
* 订单退款
|
* 订单退款
|
||||||
*/
|
*/
|
||||||
CzgResult<CzgRefundResp> refundOrder(Long shopId, Long orderId,String refundReason,BigDecimal refundAmount);
|
CzgResult<CzgRefundResp> refundOrder(Long shopId, Long orderId, String refundReason, BigDecimal refundAmount);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO;
|
import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO;
|
||||||
import com.czg.account.entity.ShopUser;
|
import com.czg.account.entity.ShopUser;
|
||||||
|
import com.czg.account.service.ShopActivateService;
|
||||||
import com.czg.account.service.ShopUserService;
|
import com.czg.account.service.ShopUserService;
|
||||||
import com.czg.entity.notify.CzgPayNotifyDTO;
|
import com.czg.entity.notify.CzgPayNotifyDTO;
|
||||||
import com.czg.enums.ShopUserFlowBizEnum;
|
import com.czg.enums.ShopUserFlowBizEnum;
|
||||||
@@ -51,6 +52,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
private OrderPaymentService paymentService;
|
private OrderPaymentService paymentService;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private ShopUserService shopUserService;
|
private ShopUserService shopUserService;
|
||||||
|
@DubboReference
|
||||||
|
private ShopActivateService activateService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<OrderInfoVo> getOrderByPage(OrderInfoQueryDTO param) {
|
public Page<OrderInfoVo> getOrderByPage(OrderInfoQueryDTO param) {
|
||||||
@@ -111,10 +114,12 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
if (shopUser == null) {
|
if (shopUser == null) {
|
||||||
log.error("会员充值失败,会员不存在,会员id:{}", payment.getSourceId());
|
log.error("会员充值失败,会员不存在,会员id:{}", payment.getSourceId());
|
||||||
} else {
|
} else {
|
||||||
shopUserService.updateChain()
|
if (shopUser.getIsVip().equals(0)) {
|
||||||
.set(ShopUser::getIsVip, 1)
|
shopUserService.updateChain()
|
||||||
.eq(ShopUser::getId, payment.getSourceId())
|
.set(ShopUser::getIsVip, 1)
|
||||||
.update();
|
.eq(ShopUser::getId, payment.getSourceId())
|
||||||
|
.update();
|
||||||
|
}
|
||||||
ShopUserMoneyEditDTO shopUserMoneyEditDTO = ShopUserMoneyEditDTO.builder()
|
ShopUserMoneyEditDTO shopUserMoneyEditDTO = ShopUserMoneyEditDTO.builder()
|
||||||
.id(payment.getSourceId())
|
.id(payment.getSourceId())
|
||||||
.money(new BigDecimal(czgCallBackDto.getAmount() / 100L))
|
.money(new BigDecimal(czgCallBackDto.getAmount() / 100L))
|
||||||
@@ -124,11 +129,16 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
if ("WECHAT".equals(czgCallBackDto.getPayType())) {
|
if ("WECHAT".equals(czgCallBackDto.getPayType())) {
|
||||||
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.WECHAT_IN);
|
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.WECHAT_IN);
|
||||||
} else if ("ALIPAY".equals(czgCallBackDto.getPayType())) {
|
} else if ("ALIPAY".equals(czgCallBackDto.getPayType())) {
|
||||||
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.ADMIN_IN);
|
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.ALIPAY_IN);
|
||||||
|
} else {
|
||||||
|
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.CASH_IN);
|
||||||
}
|
}
|
||||||
//更新会员余额 并生成流水
|
//更新会员余额 并生成流水
|
||||||
shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
||||||
//会员活动
|
//会员活动
|
||||||
|
activateService.giveActivate(shopUser.getShopId(), shopUser.getId(),
|
||||||
|
new BigDecimal(czgCallBackDto.getAmount() / 100L), flowId);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,15 @@ package com.czg.service.order.service.impl;
|
|||||||
import cn.hutool.core.exceptions.ValidateException;
|
import cn.hutool.core.exceptions.ValidateException;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.czg.account.dto.shopuser.ShopUserMoneyEditDTO;
|
||||||
import com.czg.account.entity.ShopMerchant;
|
import com.czg.account.entity.ShopMerchant;
|
||||||
import com.czg.account.entity.ShopUser;
|
import com.czg.account.entity.ShopUser;
|
||||||
|
import com.czg.account.service.ShopActivateService;
|
||||||
import com.czg.account.service.ShopMerchantService;
|
import com.czg.account.service.ShopMerchantService;
|
||||||
import com.czg.account.service.ShopUserService;
|
import com.czg.account.service.ShopUserService;
|
||||||
import com.czg.entity.req.*;
|
import com.czg.entity.req.*;
|
||||||
import com.czg.entity.resp.*;
|
import com.czg.entity.resp.*;
|
||||||
|
import com.czg.enums.ShopUserFlowBizEnum;
|
||||||
import com.czg.order.entity.OrderInfo;
|
import com.czg.order.entity.OrderInfo;
|
||||||
import com.czg.order.entity.OrderPayment;
|
import com.czg.order.entity.OrderPayment;
|
||||||
import com.czg.order.service.OrderInfoService;
|
import com.czg.order.service.OrderInfoService;
|
||||||
@@ -27,6 +30,7 @@ import jakarta.validation.constraints.NotBlank;
|
|||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -45,6 +49,8 @@ public class PayServiceImpl implements PayService {
|
|||||||
private SysParamsService sysParamsService;
|
private SysParamsService sysParamsService;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private ShopUserService shopUserService;
|
private ShopUserService shopUserService;
|
||||||
|
@DubboReference
|
||||||
|
private ShopActivateService shopActivateService;
|
||||||
@Resource
|
@Resource
|
||||||
private CzgPayService czgPayService;
|
private CzgPayService czgPayService;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -55,6 +61,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
private final BigDecimal MONEY_RATE = new BigDecimal("100");
|
private final BigDecimal MONEY_RATE = new BigDecimal("100");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
||||||
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
||||||
AssertUtil.isNull(orderInfo, "订单不存在");
|
AssertUtil.isNull(orderInfo, "订单不存在");
|
||||||
@@ -67,6 +74,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> jsPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> jsPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
||||||
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
||||||
AssertUtil.isNull(orderInfo, "订单不存在");
|
AssertUtil.isNull(orderInfo, "订单不存在");
|
||||||
@@ -80,6 +88,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> ltPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> ltPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
||||||
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
||||||
AssertUtil.isNull(orderInfo, "订单不存在");
|
AssertUtil.isNull(orderInfo, "订单不存在");
|
||||||
@@ -91,6 +100,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> scanPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> scanPayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
||||||
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
||||||
AssertUtil.isNull(orderInfo, "订单不存在");
|
AssertUtil.isNull(orderInfo, "订单不存在");
|
||||||
@@ -102,6 +112,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> microPayOrder(OrderPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> microPayOrder(OrderPayParamDTO payParam) {
|
||||||
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
OrderInfo orderInfo = orderInfoService.getById(payParam.getOrderId());
|
||||||
AssertUtil.isNull(orderInfo, "订单不存在");
|
AssertUtil.isNull(orderInfo, "订单不存在");
|
||||||
@@ -114,10 +125,37 @@ public class PayServiceImpl implements PayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public CzgResult<Object> cashPayVip(VipPayParamDTO payParam) {
|
||||||
|
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
||||||
|
.eq(ShopUser::getUserId, payParam.getUserId()).one();
|
||||||
|
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||||
|
if (shopUser.getIsVip().equals(0)) {
|
||||||
|
shopUserService.updateChain()
|
||||||
|
.set(ShopUser::getIsVip, 1)
|
||||||
|
.eq(ShopUser::getId, payParam.getShopId())
|
||||||
|
.update();
|
||||||
|
}
|
||||||
|
ShopUserMoneyEditDTO shopUserMoneyEditDTO = ShopUserMoneyEditDTO.builder()
|
||||||
|
.id(shopUser.getId())
|
||||||
|
.money(payParam.getAmount())
|
||||||
|
.type(1)
|
||||||
|
.remark("现金充值")
|
||||||
|
.bizEnum(ShopUserFlowBizEnum.CASH_IN)
|
||||||
|
.build();
|
||||||
|
//更新会员余额 并生成流水
|
||||||
|
Long flowId = shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
||||||
|
//会员活动
|
||||||
|
shopActivateService.giveActivate(shopUser.getShopId(), shopUser.getId(), payParam.getAmount(), flowId);
|
||||||
|
return CzgResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> jsPayVip(String clintIp, VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> jsPayVip(String clintIp, VipPayParamDTO payParam) {
|
||||||
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
||||||
.eq(ShopUser::getUserId, payParam.getShopUserId()).one();
|
.eq(ShopUser::getUserId, payParam.getUserId()).one();
|
||||||
AssertUtil.isNull(shopUser,"充值失败 该店铺用户不存在");
|
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||||
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
||||||
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
||||||
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
@@ -127,10 +165,11 @@ public class PayServiceImpl implements PayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> ltPayVip(String clintIp, VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> ltPayVip(String clintIp, VipPayParamDTO payParam) {
|
||||||
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
||||||
.eq(ShopUser::getUserId, payParam.getShopUserId()).one();
|
.eq(ShopUser::getUserId, payParam.getUserId()).one();
|
||||||
AssertUtil.isNull(shopUser,"充值失败 该店铺用户不存在");
|
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||||
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
||||||
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
||||||
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
@@ -140,10 +179,11 @@ public class PayServiceImpl implements PayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> scanPayVip(String clintIp, VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> scanPayVip(String clintIp, VipPayParamDTO payParam) {
|
||||||
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
||||||
.eq(ShopUser::getUserId, payParam.getShopUserId()).one();
|
.eq(ShopUser::getUserId, payParam.getUserId()).one();
|
||||||
AssertUtil.isNull(shopUser,"充值失败 该店铺用户不存在");
|
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||||
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, "", payParam.getAmount()));
|
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, "", payParam.getAmount()));
|
||||||
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
||||||
@@ -151,10 +191,11 @@ public class PayServiceImpl implements PayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<Map<String, Object>> microPayVip(VipPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> microPayVip(VipPayParamDTO payParam) {
|
||||||
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
||||||
.eq(ShopUser::getUserId, payParam.getShopUserId()).one();
|
.eq(ShopUser::getUserId, payParam.getUserId()).one();
|
||||||
AssertUtil.isNull(shopUser,"充值失败 该店铺用户不存在");
|
AssertUtil.isNull(shopUser, "充值失败 该店铺用户不存在");
|
||||||
AssertUtil.isBlank(payParam.getAuthCode(), "扫描码不能为空");
|
AssertUtil.isBlank(payParam.getAuthCode(), "扫描码不能为空");
|
||||||
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, payParam.getAuthCode(), payParam.getAmount()));
|
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, payParam.getAuthCode(), payParam.getAmount()));
|
||||||
@@ -164,6 +205,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<CzgRefundResp> refundOrder(@NonNull Long shopId, @NonNull Long orderId, @NonNull String refundReason, @NonNull BigDecimal refundAmount) {
|
public CzgResult<CzgRefundResp> refundOrder(@NonNull Long shopId, @NonNull Long orderId, @NonNull String refundReason, @NonNull BigDecimal refundAmount) {
|
||||||
|
|
||||||
// refund(shopId, new CzgRefundReq("1", refundReason, refundAmount.multiply(MONEY_RATE).longValue(),
|
// refund(shopId, new CzgRefundReq("1", refundReason, refundAmount.multiply(MONEY_RATE).longValue(),
|
||||||
@@ -172,12 +214,14 @@ public class PayServiceImpl implements PayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<CzgBaseResp> queryPayOrder(@NonNull Long shopId, String payOrderId, String mchOrderNo) {
|
public CzgResult<CzgBaseResp> queryPayOrder(@NonNull Long shopId, String payOrderId, String mchOrderNo) {
|
||||||
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
||||||
return czgPayService.queryPayOrder(shopMerchant.getAppId(), shopMerchant.getAppSecret(), payOrderId, mchOrderNo);
|
return czgPayService.queryPayOrder(shopMerchant.getAppId(), shopMerchant.getAppSecret(), payOrderId, mchOrderNo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public CzgResult<CzgRefundResp> queryRefund(@NonNull Long shopId, String mchRefundNo, String refundOrderId) {
|
public CzgResult<CzgRefundResp> queryRefund(@NonNull Long shopId, String mchRefundNo, String refundOrderId) {
|
||||||
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
||||||
return czgPayService.queryRefundOrder(shopMerchant.getAppId(), shopMerchant.getAppSecret(), mchRefundNo, refundOrderId);
|
return czgPayService.queryRefundOrder(shopMerchant.getAppId(), shopMerchant.getAppSecret(), mchRefundNo, refundOrderId);
|
||||||
@@ -250,7 +294,7 @@ public class PayServiceImpl implements PayService {
|
|||||||
} else if (firstTwoDigits >= 25 && firstTwoDigits <= 30) {
|
} else if (firstTwoDigits >= 25 && firstTwoDigits <= 30) {
|
||||||
//支付宝支付
|
//支付宝支付
|
||||||
bizData.setSubAppid(shopMerchant.getAlipaySmallAppid());
|
bizData.setSubAppid(shopMerchant.getAlipaySmallAppid());
|
||||||
}else {
|
} else {
|
||||||
throw new ValidateException("扫描码非法或暂不支持");
|
throw new ValidateException("扫描码非法或暂不支持");
|
||||||
}
|
}
|
||||||
CzgResult<CzgMicroPayResp> czgScanPayResult = czgPayService.microPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
CzgResult<CzgMicroPayResp> czgScanPayResult = czgPayService.microPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
||||||
|
|||||||
Reference in New Issue
Block a user