Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
f67b6cd714
|
|
@ -4,6 +4,7 @@ import com.czg.account.dto.ShopActivateDTO;
|
||||||
import com.czg.account.service.ShopActivateService;
|
import com.czg.account.service.ShopActivateService;
|
||||||
import com.czg.annotation.SaAdminCheckPermission;
|
import com.czg.annotation.SaAdminCheckPermission;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
|
import com.czg.sa.StpKit;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
@ -39,6 +40,7 @@ public class ShopActivateController {
|
||||||
@SaAdminCheckPermission("activate:add")
|
@SaAdminCheckPermission("activate:add")
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public CzgResult<Boolean> add(@RequestBody @Validated ShopActivateDTO activateDTO) {
|
public CzgResult<Boolean> add(@RequestBody @Validated ShopActivateDTO activateDTO) {
|
||||||
|
activateDTO.setShopId(StpKit.USER.getShopId());
|
||||||
return CzgResult.success(shopActivateService.add(activateDTO));
|
return CzgResult.success(shopActivateService.add(activateDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.czg.account.dto.shopuser.ShopUserSummaryDTO;
|
||||||
import com.czg.account.entity.ShopUser;
|
import com.czg.account.entity.ShopUser;
|
||||||
import com.czg.account.service.ShopUserService;
|
import com.czg.account.service.ShopUserService;
|
||||||
import com.czg.annotation.SaAdminCheckPermission;
|
import com.czg.annotation.SaAdminCheckPermission;
|
||||||
|
import com.czg.enums.ShopUserFlowBizEnum;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import com.mybatisflex.core.paginate.Page;
|
import com.mybatisflex.core.paginate.Page;
|
||||||
|
|
@ -75,6 +76,7 @@ public class ShopUserController {
|
||||||
@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);
|
||||||
return CzgResult.success(shopUserService.updateMoney(StpKit.USER.getShopId(), shopUserMoneyEditDTO));
|
return CzgResult.success(shopUserService.updateMoney(StpKit.USER.getShopId(), shopUserMoneyEditDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ import java.util.Map;
|
||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/pay")
|
@RequestMapping("/pay")
|
||||||
public class PayController {
|
public class OrderPayController {
|
||||||
@Resource
|
@Resource
|
||||||
private PayService payService;
|
private PayService payService;
|
||||||
|
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
package com.czg.controller;
|
||||||
|
|
||||||
|
import com.czg.resp.CzgResult;
|
||||||
|
import com.czg.sa.StpKit;
|
||||||
|
import com.czg.service.order.dto.VipPayParamDTO;
|
||||||
|
import com.czg.service.order.service.PayService;
|
||||||
|
import com.czg.utils.ServletUtil;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员 支付
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/pay")
|
||||||
|
public class VipPayController {
|
||||||
|
@Resource
|
||||||
|
private PayService payService;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* js支付
|
||||||
|
* payType 必填 支付方式,aliPay 支付宝,wechatPay 微信
|
||||||
|
* openId 必填
|
||||||
|
*/
|
||||||
|
@PostMapping("jsPayVip")
|
||||||
|
public CzgResult<Map<String, Object>> jsPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
|
||||||
|
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
||||||
|
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType"));
|
||||||
|
return payService.jsPayVip(ServletUtil.getClientIPByHeader(request), payParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序支付
|
||||||
|
* payType 必填 支付方式,aliPay 支付宝,wechatPay 微信
|
||||||
|
* openId 必填
|
||||||
|
*/
|
||||||
|
@PostMapping("ltPayVip")
|
||||||
|
public CzgResult<Map<String, Object>> ltPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
|
||||||
|
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
||||||
|
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType"));
|
||||||
|
return payService.ltPayVip(ServletUtil.getClientIPByHeader(request), payParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 正扫
|
||||||
|
*/
|
||||||
|
@PostMapping("scanPayVip")
|
||||||
|
public CzgResult<Map<String, Object>> scanPayVip(HttpServletRequest request, @Validated @RequestBody VipPayParamDTO payParam) {
|
||||||
|
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
||||||
|
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType"));
|
||||||
|
return payService.scanPayVip(ServletUtil.getClientIPByHeader(request), payParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 反扫
|
||||||
|
* authCode 必填 扫描码
|
||||||
|
*/
|
||||||
|
@PostMapping("microPayVip")
|
||||||
|
public CzgResult<Map<String, Object>> microPayVip(@Validated @RequestBody VipPayParamDTO payParam) {
|
||||||
|
payParam.setUserId(StpKit.USER.getLoginIdAsLong());
|
||||||
|
payParam.setPlatformType(ServletUtil.getHeaderIgnoreCase(ServletUtil.getRequest(),"platformType"));
|
||||||
|
return payService.microPayVip(payParam);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -30,7 +30,7 @@ dubbo:
|
||||||
application:
|
application:
|
||||||
name: order-server
|
name: order-server
|
||||||
qos-port: 22231
|
qos-port: 22231
|
||||||
qos-enable: true
|
# qos-enable: true
|
||||||
registry:
|
registry:
|
||||||
address: nacos://121.40.109.122:8848 # Nacos 服务地址
|
address: nacos://121.40.109.122:8848 # Nacos 服务地址
|
||||||
group: server
|
group: server
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ dubbo:
|
||||||
application:
|
application:
|
||||||
name: order-server
|
name: order-server
|
||||||
qos-port: 22232
|
qos-port: 22232
|
||||||
qos-enable: true
|
# qos-enable: true
|
||||||
registry:
|
registry:
|
||||||
address: nacos://121.40.109.122:8848 # Nacos 服务地址
|
address: nacos://121.40.109.122:8848 # Nacos 服务地址
|
||||||
group: server-test
|
group: server-test
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ public class SaTokenConfigure implements WebMvcConfigurer {
|
||||||
// admin配置
|
// admin配置
|
||||||
SaTokenConfig adminConfig = new SaTokenConfig();
|
SaTokenConfig adminConfig = new SaTokenConfig();
|
||||||
adminConfig.setTokenName("token");
|
adminConfig.setTokenName("token");
|
||||||
adminConfig.setTimeout(1000);
|
// adminConfig.setTimeout(1000);
|
||||||
adminConfig.setTokenStyle("simple-uuid");
|
adminConfig.setTokenStyle("simple-uuid");
|
||||||
adminConfig.setIsConcurrent(true);
|
adminConfig.setIsConcurrent(true);
|
||||||
adminConfig.setIsShare(false);
|
adminConfig.setIsShare(false);
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package com.czg.account.dto.shopuser;
|
package com.czg.account.dto.shopuser;
|
||||||
|
|
||||||
|
import com.czg.enums.ShopUserFlowBizEnum;
|
||||||
import jakarta.validation.constraints.DecimalMax;
|
import jakarta.validation.constraints.DecimalMax;
|
||||||
import jakarta.validation.constraints.DecimalMin;
|
import jakarta.validation.constraints.DecimalMin;
|
||||||
import jakarta.validation.constraints.Min;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
@ -12,6 +13,7 @@ import java.math.BigDecimal;
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@Builder
|
||||||
public class ShopUserMoneyEditDTO {
|
public class ShopUserMoneyEditDTO {
|
||||||
/**
|
/**
|
||||||
* 对应shopUserid
|
* 对应shopUserid
|
||||||
|
|
@ -23,6 +25,12 @@ public class ShopUserMoneyEditDTO {
|
||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
/**
|
||||||
|
* 关联id,
|
||||||
|
* 霸王餐时 订单id
|
||||||
|
* 支付/退款 tb_order_payment.id
|
||||||
|
*/
|
||||||
|
private Long relationId;
|
||||||
/**
|
/**
|
||||||
* 浮动金额
|
* 浮动金额
|
||||||
*/
|
*/
|
||||||
|
|
@ -30,6 +38,8 @@ public class ShopUserMoneyEditDTO {
|
||||||
@DecimalMin("0.01")
|
@DecimalMin("0.01")
|
||||||
@DecimalMax("9999")
|
@DecimalMax("9999")
|
||||||
private BigDecimal money;
|
private BigDecimal money;
|
||||||
|
|
||||||
|
private ShopUserFlowBizEnum bizEnum;
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -55,9 +55,11 @@ public class ShopUserFlow implements Serializable {
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关联订单编号,支付单号,退款单号
|
* 关联id,
|
||||||
|
* 霸王餐时 订单id
|
||||||
|
* 支付/退款 tb_order_payment.id
|
||||||
*/
|
*/
|
||||||
private String relationOrderNo;
|
private Long relationId;
|
||||||
|
|
||||||
@Column(onInsertValue = "now()")
|
@Column(onInsertValue = "now()")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ public class OrderPayment implements Serializable {
|
||||||
public OrderPayment() {
|
public OrderPayment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public OrderPayment(@NonNull Long shopId, @NonNull Long sourceId, @NotBlank String payType, @NotBlank String orderNo,
|
public OrderPayment(@NonNull Long shopId,@NonNull Long sourceId, @NotBlank String payType, @NotBlank String orderNo,
|
||||||
String authCode, @NonNull BigDecimal amount) {
|
String authCode, @NonNull BigDecimal amount) {
|
||||||
this.shopId = shopId;
|
this.shopId = shopId;
|
||||||
this.sourceId = sourceId;
|
this.sourceId = sourceId;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
package com.czg.utils;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author ww
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
public class CzgStrUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 如果str为空,返回null,否则返回str
|
||||||
|
* flex sql查询时 自动忽略null 不忽略''
|
||||||
|
*/
|
||||||
|
public static String getStrOrNull(String str) {
|
||||||
|
return StrUtil.isNotBlank(str) ? str : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -66,12 +66,7 @@ public class CzgBaseResp {
|
||||||
* 微信 / 支付宝订单号
|
* 微信 / 支付宝订单号
|
||||||
*/
|
*/
|
||||||
private String channelTradeNo;
|
private String channelTradeNo;
|
||||||
/**
|
|
||||||
* 扩展参数
|
|
||||||
* {
|
|
||||||
* "pay_type": "order/vip"
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
private String extParam;
|
private String extParam;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,9 @@ import java.time.LocalDateTime;
|
||||||
*/
|
*/
|
||||||
public interface ShopUserMapper extends BaseMapper<ShopUser> {
|
public interface ShopUserMapper extends BaseMapper<ShopUser> {
|
||||||
|
|
||||||
Page<ShopUser> selectPageByKeyAndIsVip(Page<Object> objectPage, @Param("key") String key, @Param("isVip") Integer isVip,
|
Page<ShopUser> selectPageByKeyAndIsVip();
|
||||||
@Param("shopId") Long shopId);
|
|
||||||
|
long selectPageByKeyAndIsVip_COUNT();
|
||||||
|
|
||||||
int incrAccount(@Param("shopId") long shopId, @Param("id") Long id, @Param("time") LocalDateTime time, @Param("money") BigDecimal money);
|
int incrAccount(@Param("shopId") long shopId, @Param("id") Long id, @Param("time") LocalDateTime time, @Param("money") BigDecimal money);
|
||||||
int decrAccount(@Param("shopId") long shopId, @Param("id") Long id, @Param("time") LocalDateTime time, @Param("money") BigDecimal money);
|
int decrAccount(@Param("shopId") long shopId, @Param("id") Long id, @Param("time") LocalDateTime time, @Param("money") BigDecimal money);
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,10 @@ public class ShopActivateServiceImpl extends ServiceImpl<ShopActivateMapper, Sho
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ShopActivateDTO> getList() {
|
public List<ShopActivateDTO> getList() {
|
||||||
return queryChain().select().eq(ShopActivate::getShopId, StpKit.USER.getShopId())
|
return queryChain().select()
|
||||||
.orderBy(ShopActivate::getAmount, true).listAs(ShopActivateDTO.class);
|
.eq(ShopActivate::getShopId, StpKit.USER.getShopId())
|
||||||
|
.orderBy(ShopActivate::getAmount, true)
|
||||||
|
.listAs(ShopActivateDTO.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
import com.czg.account.entity.ShopUserFlow;
|
import com.czg.account.entity.ShopUserFlow;
|
||||||
import com.czg.account.service.ShopUserFlowService;
|
import com.czg.account.service.ShopUserFlowService;
|
||||||
import com.czg.service.account.mapper.ShopUserFlowMapper;
|
import com.czg.service.account.mapper.ShopUserFlowMapper;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -12,7 +13,7 @@ import org.springframework.stereotype.Service;
|
||||||
* @author zs
|
* @author zs
|
||||||
* @since 2025-02-13
|
* @since 2025-02-13
|
||||||
*/
|
*/
|
||||||
@Service
|
@DubboService
|
||||||
public class ShopUserFlowServiceImpl extends ServiceImpl<ShopUserFlowMapper, ShopUserFlow> implements ShopUserFlowService{
|
public class ShopUserFlowServiceImpl extends ServiceImpl<ShopUserFlowMapper, ShopUserFlow> implements ShopUserFlowService{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ 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.IdUtil;
|
||||||
import cn.hutool.core.util.RandomUtil;
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.czg.account.dto.shopuser.*;
|
import com.czg.account.dto.shopuser.*;
|
||||||
import com.czg.account.entity.ShopUser;
|
import com.czg.account.entity.ShopUser;
|
||||||
import com.czg.account.entity.ShopUserFlow;
|
import com.czg.account.entity.ShopUserFlow;
|
||||||
|
|
@ -20,19 +21,24 @@ 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.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.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
|
||||||
|
import static com.mybatisflex.core.query.QueryMethods.column;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商户储值会员 服务层实现。
|
* 商户储值会员 服务层实现。
|
||||||
*
|
*
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
* @since 2025-02-08
|
* @since 2025-02-08
|
||||||
*/
|
*/
|
||||||
@Service
|
@DubboService
|
||||||
public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> implements ShopUserService {
|
public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> implements ShopUserService {
|
||||||
@Resource
|
@Resource
|
||||||
private ShopUserFlowService shopUserFlowService;
|
private ShopUserFlowService shopUserFlowService;
|
||||||
|
|
@ -52,7 +58,15 @@ public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> i
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<ShopUser> getPage(String key, Integer isVip) {
|
public Page<ShopUser> getPage(String key, Integer isVip) {
|
||||||
return mapper.selectPageByKeyAndIsVip(PageUtil.buildPage(), key, isVip, StpKit.USER.getShopId());
|
QueryWrapper queryWrapper = new QueryWrapper().eq(ShopUser::getShopId, StpKit.USER.getShopId());
|
||||||
|
if (StrUtil.isNotBlank(key)) {
|
||||||
|
queryWrapper.and(column(UserInfo::getNickName).like(key).or(column(UserInfo::getPhone).like(key)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isVip != null) {
|
||||||
|
queryWrapper.eq(ShopUser::getIsVip, isVip);
|
||||||
|
}
|
||||||
|
return mapper.xmlPaginate("selectPageByKeyAndIsVip", PageUtil.buildPage(), queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -82,9 +96,10 @@ public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> i
|
||||||
userFlow.setShopId(userInfo.getShopId());
|
userFlow.setShopId(userInfo.getShopId());
|
||||||
userFlow.setAmount(shopUserEditDTO.getMoney());
|
userFlow.setAmount(shopUserEditDTO.getMoney());
|
||||||
userFlow.setBalance(shopUserEditDTO.getType() == 0 ? userInfo.getAmount().subtract(shopUserEditDTO.getMoney()) : userInfo.getAmount().add(shopUserEditDTO.getMoney()));
|
userFlow.setBalance(shopUserEditDTO.getType() == 0 ? userInfo.getAmount().subtract(shopUserEditDTO.getMoney()) : userInfo.getAmount().add(shopUserEditDTO.getMoney()));
|
||||||
userFlow.setBizCode(ShopUserFlowBizEnum.ADMIN_IN.getCode());
|
userFlow.setBizCode(shopUserEditDTO.getBizEnum().getCode());
|
||||||
userFlow.setType(shopUserEditDTO.getType() == 0 ? "-" : "+");
|
userFlow.setType(shopUserEditDTO.getType() == 0 ? "-" : "+");
|
||||||
userFlow.setRemark(shopUserEditDTO.getRemark());
|
userFlow.setRemark(shopUserEditDTO.getRemark());
|
||||||
|
userFlow.setRelationId(shopUserEditDTO.getRelationId());
|
||||||
return shopUserFlowService.save(userFlow);
|
return shopUserFlowService.save(userFlow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,17 +19,7 @@
|
||||||
and amount - #{money} >= 0
|
and amount - #{money} >= 0
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<select id="selectPageByKeyAndIsVip" resultType="com.czg.account.entity.ShopUser">
|
|
||||||
select a.* from tb_user_info as a
|
|
||||||
left join tb_shop_user as b on a.id=b.user_id
|
|
||||||
where b.shop_id=#{shopId}
|
|
||||||
<if test="key != null and key != ''">
|
|
||||||
and (a.nick_name like %#{key}% or a.phone like %#{key}%)
|
|
||||||
</if>
|
|
||||||
<if test="isVip != null">
|
|
||||||
and b.is_vip=#{isVip}
|
|
||||||
</if>
|
|
||||||
</select>
|
|
||||||
<select id="selectUserSummary" resultType="com.czg.account.dto.shopuser.ShopUserSummaryDTO">
|
<select id="selectUserSummary" resultType="com.czg.account.dto.shopuser.ShopUserSummaryDTO">
|
||||||
select count(a.id) userTotal, sum(IFNULL(a.amount, 0)) balanceTotal,sum(IFNULL(b.amount,0)) chargeTotal from
|
select count(a.id) userTotal, sum(IFNULL(a.amount, 0)) balanceTotal,sum(IFNULL(b.amount,0)) chargeTotal from
|
||||||
tb_shop_user as a
|
tb_shop_user as a
|
||||||
|
|
@ -53,4 +43,12 @@
|
||||||
left join tb_shop_activate_in_record as c on c.shop_id = b.shop_id
|
left join tb_shop_activate_in_record as c on c.shop_id = b.shop_id
|
||||||
where a.id=#{userId}
|
where a.id=#{userId}
|
||||||
</select>
|
</select>
|
||||||
|
<select id="selectPageByKeyAndIsVip" resultType="com.czg.account.entity.ShopUser">
|
||||||
|
select tb_user_info.* from tb_user_info
|
||||||
|
left join tb_shop_user on tb_user_info.id=tb_shop_user.user_id ${qwSql} limit ${pageOffset}, ${pageSize}
|
||||||
|
</select>
|
||||||
|
<select id="selectPageByKeyAndIsVip_COUNT" resultType="java.lang.Long">
|
||||||
|
select count(1) from tb_user_info
|
||||||
|
left join tb_shop_user on tb_user_info.id=tb_shop_user.user_id ${qwSql}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
package com.czg.service.order.dto;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付接收参数 实体类
|
||||||
|
*
|
||||||
|
* @author ww
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class VipPayParamDTO {
|
||||||
|
@NotNull(message = "店铺不能为空")
|
||||||
|
private Long shopId;
|
||||||
|
private Long shopUserId;
|
||||||
|
private Long userId;
|
||||||
|
@NotNull(message = "充值金额不为空")
|
||||||
|
private BigDecimal amount;
|
||||||
|
|
||||||
|
private String buyerRemark;
|
||||||
|
private String returnUrl;
|
||||||
|
/**
|
||||||
|
* 平台类型 pc 收银机客户端 wechat 微信小程序 alipay 支付宝小程序 admin-pc PC管理端 admin-app APP管理端
|
||||||
|
*/
|
||||||
|
private String platformType;
|
||||||
|
private String payType;
|
||||||
|
private String openId;
|
||||||
|
private String authCode;
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ package com.czg.service.order.service;
|
||||||
import com.czg.entity.resp.*;
|
import com.czg.entity.resp.*;
|
||||||
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 java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -38,6 +39,26 @@ public interface PayService {
|
||||||
*/
|
*/
|
||||||
CzgResult<Map<String, Object>> microPayOrder(OrderPayParamDTO payParam);
|
CzgResult<Map<String, Object>> microPayOrder(OrderPayParamDTO payParam);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* js支付
|
||||||
|
*/
|
||||||
|
CzgResult<Map<String, Object>> jsPayVip(String clintIp, VipPayParamDTO payParam);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序支付
|
||||||
|
*/
|
||||||
|
CzgResult<Map<String, Object>> ltPayVip(String clintIp, VipPayParamDTO payParam);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PC扫码支付
|
||||||
|
*/
|
||||||
|
CzgResult<Map<String, Object>> scanPayVip(String clintIp, VipPayParamDTO payParam);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 聚合反扫
|
||||||
|
*/
|
||||||
|
CzgResult<Map<String, Object>> microPayVip(VipPayParamDTO payParam);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单退款
|
* 订单退款
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,11 @@ package com.czg.service.order.service.impl;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
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.entity.ShopUser;
|
||||||
|
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.order.dto.OrderInfoQueryDTO;
|
import com.czg.order.dto.OrderInfoQueryDTO;
|
||||||
import com.czg.order.entity.OrderDetail;
|
import com.czg.order.entity.OrderDetail;
|
||||||
import com.czg.order.entity.OrderInfo;
|
import com.czg.order.entity.OrderInfo;
|
||||||
|
|
@ -15,12 +19,15 @@ import com.czg.order.vo.OrderDetailSmallVO;
|
||||||
import com.czg.order.vo.OrderInfoVo;
|
import com.czg.order.vo.OrderInfoVo;
|
||||||
import com.czg.service.order.enums.OrderStatusEnums;
|
import com.czg.service.order.enums.OrderStatusEnums;
|
||||||
import com.czg.service.order.mapper.OrderInfoMapper;
|
import com.czg.service.order.mapper.OrderInfoMapper;
|
||||||
|
import com.czg.utils.CzgStrUtils;
|
||||||
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.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 jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboReference;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
|
@ -33,6 +40,7 @@ import java.util.List;
|
||||||
* @author ww
|
* @author ww
|
||||||
* @since 2025-02-13
|
* @since 2025-02-13
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo> implements OrderInfoService {
|
public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo> implements OrderInfoService {
|
||||||
|
|
||||||
|
|
@ -41,6 +49,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private OrderPaymentService paymentService;
|
private OrderPaymentService paymentService;
|
||||||
|
@DubboReference
|
||||||
|
private ShopUserService shopUserService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<OrderInfoVo> getOrderByPage(OrderInfoQueryDTO param) {
|
public Page<OrderInfoVo> getOrderByPage(OrderInfoQueryDTO param) {
|
||||||
|
|
@ -56,11 +66,11 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
QueryWrapper queryWrapper = PageUtil.buildSortQueryWrapper();
|
QueryWrapper queryWrapper = PageUtil.buildSortQueryWrapper();
|
||||||
|
|
||||||
queryWrapper.eq(OrderInfo::getShopId, param.getShopId())
|
queryWrapper.eq(OrderInfo::getShopId, param.getShopId())
|
||||||
.eq(OrderInfo::getStatus, param.getStatus())
|
.eq(OrderInfo::getStatus, CzgStrUtils.getStrOrNull(param.getStatus()))
|
||||||
.eq(OrderInfo::getPayType, param.getPayType())
|
.eq(OrderInfo::getPayType, CzgStrUtils.getStrOrNull(param.getPayType()))
|
||||||
.eq(OrderInfo::getUserId, param.getUserId())
|
.eq(OrderInfo::getUserId, param.getUserId())
|
||||||
.eq(OrderInfo::getTableCode, param.getTableCode())
|
.eq(OrderInfo::getTableCode, CzgStrUtils.getStrOrNull(param.getTableCode()))
|
||||||
.eq(OrderInfo::getOrderNo, param.getOrderNo())
|
.eq(OrderInfo::getOrderNo, CzgStrUtils.getStrOrNull(param.getOrderNo()))
|
||||||
.gt(OrderInfo::getCreateTime, param.getStartTime())
|
.gt(OrderInfo::getCreateTime, param.getStartTime())
|
||||||
.le(OrderInfo::getCreateTime, param.getEndTime())
|
.le(OrderInfo::getCreateTime, param.getEndTime())
|
||||||
.in(OrderInfo::getId, like);
|
.in(OrderInfo::getId, like);
|
||||||
|
|
@ -68,7 +78,8 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
orderInfoVoPage.getRecords().parallelStream().forEach(s -> {
|
orderInfoVoPage.getRecords().parallelStream().forEach(s -> {
|
||||||
List<OrderDetailSmallVO> orderDetails = orderDetailService.queryChain().select()
|
List<OrderDetailSmallVO> orderDetails = orderDetailService.queryChain().select()
|
||||||
.eq(OrderDetail::getShopId, s.getShopId())
|
.eq(OrderDetail::getShopId, s.getShopId())
|
||||||
.eq(OrderDetail::getOrderId, s.getId()).listAs(OrderDetailSmallVO.class);
|
.eq(OrderDetail::getOrderId, s.getId())
|
||||||
|
.listAs(OrderDetailSmallVO.class);
|
||||||
s.setGoods(orderDetails);
|
s.setGoods(orderDetails);
|
||||||
});
|
});
|
||||||
return orderInfoVoPage;
|
return orderInfoVoPage;
|
||||||
|
|
@ -79,7 +90,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
public void payCallBackOrder(@NotBlank String orderNo, @NotBlank JSONObject resultJson) {
|
public void payCallBackOrder(@NotBlank String orderNo, @NotBlank JSONObject resultJson) {
|
||||||
CzgPayNotifyDTO czgCallBackDto = JSONObject.parseObject(resultJson.toString(), CzgPayNotifyDTO.class);
|
CzgPayNotifyDTO czgCallBackDto = JSONObject.parseObject(resultJson.toString(), CzgPayNotifyDTO.class);
|
||||||
OrderPayment payment = paymentService.queryChain().eq(OrderPayment::getOrderNo, orderNo).one();
|
OrderPayment payment = paymentService.queryChain().eq(OrderPayment::getOrderNo, orderNo).one();
|
||||||
paymentService.updateChain().of(OrderPayment.class)
|
paymentService.updateChain()
|
||||||
.set(OrderPayment::getTradeNumber, czgCallBackDto.getPayOrderId())
|
.set(OrderPayment::getTradeNumber, czgCallBackDto.getPayOrderId())
|
||||||
.set(OrderPayment::getRespJson, resultJson.toString())
|
.set(OrderPayment::getRespJson, resultJson.toString())
|
||||||
.where(OrderPayment::getId).eq(payment.getId())
|
.where(OrderPayment::getId).eq(payment.getId())
|
||||||
|
|
@ -87,7 +98,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
|
|
||||||
if ("TRADE_SUCCESS".equals(czgCallBackDto.getState())) {
|
if ("TRADE_SUCCESS".equals(czgCallBackDto.getState())) {
|
||||||
if ("order".equals(payment.getPayType())) {
|
if ("order".equals(payment.getPayType())) {
|
||||||
updateChain().of(OrderInfo.class)
|
updateChain()
|
||||||
.set(OrderInfo::getPayAmount, new BigDecimal(czgCallBackDto.getAmount() / 100L))
|
.set(OrderInfo::getPayAmount, new BigDecimal(czgCallBackDto.getAmount() / 100L))
|
||||||
.set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
|
.set(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())
|
||||||
.set(OrderInfo::getPaidTime, DateUtil.parseLocalDateTime(czgCallBackDto.getPayTime()))
|
.set(OrderInfo::getPaidTime, DateUtil.parseLocalDateTime(czgCallBackDto.getPayTime()))
|
||||||
|
|
@ -95,9 +106,31 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
||||||
.where(OrderInfo::getId).eq(payment.getSourceId())
|
.where(OrderInfo::getId).eq(payment.getSourceId())
|
||||||
.update();
|
.update();
|
||||||
//发送打票信息
|
//发送打票信息
|
||||||
|
} else if ("memberIn".equals(payment.getPayType())) {
|
||||||
|
ShopUser shopUser = shopUserService.getById(payment.getSourceId());
|
||||||
|
if (shopUser == null) {
|
||||||
|
log.error("会员充值失败,会员不存在,会员id:{}", payment.getSourceId());
|
||||||
|
} else {
|
||||||
|
shopUserService.updateChain()
|
||||||
|
.set(ShopUser::getIsVip, 1)
|
||||||
|
.eq(ShopUser::getId, payment.getSourceId())
|
||||||
|
.update();
|
||||||
|
ShopUserMoneyEditDTO shopUserMoneyEditDTO = ShopUserMoneyEditDTO.builder()
|
||||||
|
.id(payment.getSourceId())
|
||||||
|
.money(new BigDecimal(czgCallBackDto.getAmount() / 100L))
|
||||||
|
.type(1)
|
||||||
|
.relationId(payment.getId())
|
||||||
|
.build();
|
||||||
|
if ("WECHAT".equals(czgCallBackDto.getPayType())) {
|
||||||
|
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.WECHAT_IN);
|
||||||
|
} else if ("ALIPAY".equals(czgCallBackDto.getPayType())) {
|
||||||
|
shopUserMoneyEditDTO.setBizEnum(ShopUserFlowBizEnum.ADMIN_IN);
|
||||||
|
}
|
||||||
|
//更新会员余额 并生成流水
|
||||||
|
shopUserService.updateMoney(shopUser.getShopId(), shopUserMoneyEditDTO);
|
||||||
|
//会员活动
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
package com.czg.service.order.service.impl;
|
package com.czg.service.order.service.impl;
|
||||||
|
|
||||||
|
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.entity.ShopMerchant;
|
import com.czg.account.entity.ShopMerchant;
|
||||||
|
import com.czg.account.entity.ShopUser;
|
||||||
import com.czg.account.service.ShopMerchantService;
|
import com.czg.account.service.ShopMerchantService;
|
||||||
|
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.order.entity.OrderInfo;
|
import com.czg.order.entity.OrderInfo;
|
||||||
|
|
@ -13,6 +16,7 @@ import com.czg.order.service.OrderPaymentService;
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
import com.czg.service.CzgPayService;
|
import com.czg.service.CzgPayService;
|
||||||
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.enums.PayEnums;
|
import com.czg.service.order.enums.PayEnums;
|
||||||
import com.czg.service.order.service.PayService;
|
import com.czg.service.order.service.PayService;
|
||||||
import com.czg.system.enums.SysParamCodeEnum;
|
import com.czg.system.enums.SysParamCodeEnum;
|
||||||
|
|
@ -39,6 +43,8 @@ public class PayServiceImpl implements PayService {
|
||||||
private ShopMerchantService shopMerchantService;
|
private ShopMerchantService shopMerchantService;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private SysParamsService sysParamsService;
|
private SysParamsService sysParamsService;
|
||||||
|
@DubboReference
|
||||||
|
private ShopUserService shopUserService;
|
||||||
@Resource
|
@Resource
|
||||||
private CzgPayService czgPayService;
|
private CzgPayService czgPayService;
|
||||||
@Resource
|
@Resource
|
||||||
|
|
@ -47,8 +53,6 @@ public class PayServiceImpl implements PayService {
|
||||||
private OrderPaymentService paymentService;
|
private OrderPaymentService paymentService;
|
||||||
|
|
||||||
private final BigDecimal MONEY_RATE = new BigDecimal("100");
|
private final BigDecimal MONEY_RATE = new BigDecimal("100");
|
||||||
private final String payJsonExtParam = "{\"payType\":\"1\"}";
|
|
||||||
private final String refundJsonExtParam = "{\"payType\":\"1\"}";
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CzgResult<Map<String, Object>> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
public CzgResult<Map<String, Object>> h5PayOrder(@NonNull String clintIp, OrderPayParamDTO payParam) {
|
||||||
|
|
@ -58,7 +62,7 @@ public class PayServiceImpl implements PayService {
|
||||||
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
||||||
upOrderPayInfo(orderInfo.getId(), PayEnums.H5_PAY.getValue(), payOrderNo);
|
upOrderPayInfo(orderInfo.getId(), PayEnums.H5_PAY.getValue(), payOrderNo);
|
||||||
return h5Pay(payParam.getShopId(), new CzgH5PayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
return h5Pay(payParam.getShopId(), new CzgH5PayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
||||||
"点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
|
"点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -66,11 +70,13 @@ public class PayServiceImpl implements PayService {
|
||||||
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, "订单不存在");
|
||||||
|
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
||||||
|
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
||||||
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
||||||
upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI.getValue() : PayEnums.WECHAT_MINI.getValue(), payOrderNo);
|
upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI.getValue() : PayEnums.WECHAT_MINI.getValue(), payOrderNo);
|
||||||
return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
||||||
"点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
|
"点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -81,7 +87,7 @@ public class PayServiceImpl implements PayService {
|
||||||
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
||||||
upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI.getValue() : PayEnums.WECHAT_MINI.getValue(), payOrderNo);
|
upOrderPayInfo(orderInfo.getId(), "aliPay".equals(payParam.getPayType()) ? PayEnums.ALIPAY_MINI.getValue() : PayEnums.WECHAT_MINI.getValue(), payOrderNo);
|
||||||
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
||||||
"点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
|
"点餐支付", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -92,20 +98,71 @@ public class PayServiceImpl implements PayService {
|
||||||
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, "", orderInfo.getOrderAmount()));
|
||||||
upOrderPayInfo(orderInfo.getId(), PayEnums.MAIN_SCAN.getValue(), payOrderNo);
|
upOrderPayInfo(orderInfo.getId(), PayEnums.MAIN_SCAN.getValue(), payOrderNo);
|
||||||
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
||||||
"点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), payJsonExtParam));
|
"点餐支付", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
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, "订单不存在");
|
||||||
|
AssertUtil.isBlank(payParam.getAuthCode(), "扫描码不能为空");
|
||||||
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
String payOrderNo = orderInfo.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, payParam.getAuthCode(), orderInfo.getOrderAmount()));
|
initOrderPayment(new OrderPayment(payParam.getShopId(), payParam.getOrderId(), "order", payOrderNo, payParam.getAuthCode(), orderInfo.getOrderAmount()));
|
||||||
upOrderPayInfo(orderInfo.getId(), PayEnums.BACK_SCAN.getValue(), payOrderNo);
|
upOrderPayInfo(orderInfo.getId(), PayEnums.BACK_SCAN.getValue(), payOrderNo);
|
||||||
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, orderInfo.getOrderAmount().multiply(MONEY_RATE).longValue(),
|
||||||
"点餐支付", payParam.getAuthCode(), payParam.getBuyerRemark(), payJsonExtParam));
|
"点餐支付", payParam.getAuthCode(), payParam.getBuyerRemark(), ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CzgResult<Map<String, Object>> jsPayVip(String clintIp, VipPayParamDTO payParam) {
|
||||||
|
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
||||||
|
.eq(ShopUser::getUserId, payParam.getShopUserId()).one();
|
||||||
|
AssertUtil.isNull(shopUser,"充值失败 该店铺用户不存在");
|
||||||
|
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
||||||
|
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
||||||
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
|
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, "", payParam.getAmount()));
|
||||||
|
return jsPay(payParam.getShopId(), payParam.getPayType(), new CzgJsPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
||||||
|
"会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CzgResult<Map<String, Object>> ltPayVip(String clintIp, VipPayParamDTO payParam) {
|
||||||
|
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
||||||
|
.eq(ShopUser::getUserId, payParam.getShopUserId()).one();
|
||||||
|
AssertUtil.isNull(shopUser,"充值失败 该店铺用户不存在");
|
||||||
|
AssertUtil.isBlank(payParam.getOpenId(), "用户小程序ID不能为空");
|
||||||
|
AssertUtil.isBlank(payParam.getPayType(), "支付方式不能为空");
|
||||||
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
|
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, "", payParam.getAmount()));
|
||||||
|
return ltPay(payParam.getShopId(), payParam.getPayType(), new CzgLtPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
||||||
|
"会员充值", payParam.getOpenId(), clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CzgResult<Map<String, Object>> scanPayVip(String clintIp, VipPayParamDTO payParam) {
|
||||||
|
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
||||||
|
.eq(ShopUser::getUserId, payParam.getShopUserId()).one();
|
||||||
|
AssertUtil.isNull(shopUser,"充值失败 该店铺用户不存在");
|
||||||
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
|
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, "", payParam.getAmount()));
|
||||||
|
return scanPay(payParam.getShopId(), new CzgScanPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
||||||
|
"会员充值", clintIp, payParam.getReturnUrl(), payParam.getBuyerRemark(), ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CzgResult<Map<String, Object>> microPayVip(VipPayParamDTO payParam) {
|
||||||
|
ShopUser shopUser = shopUserService.queryChain().eq(ShopUser::getShopId, payParam.getShopId())
|
||||||
|
.eq(ShopUser::getUserId, payParam.getShopUserId()).one();
|
||||||
|
AssertUtil.isNull(shopUser,"充值失败 该店铺用户不存在");
|
||||||
|
AssertUtil.isBlank(payParam.getAuthCode(), "扫描码不能为空");
|
||||||
|
String payOrderNo = payParam.getPlatformType() + IdUtil.getSnowflakeNextId();
|
||||||
|
initOrderPayment(new OrderPayment(payParam.getShopId(), shopUser.getId(), "memberIn", payOrderNo, payParam.getAuthCode(), payParam.getAmount()));
|
||||||
|
return microPay(payParam.getShopId(), new CzgMicroPayReq(payOrderNo, payParam.getAmount().multiply(MONEY_RATE).longValue(),
|
||||||
|
"会员充值", payParam.getAuthCode(), payParam.getBuyerRemark(), ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
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) {
|
||||||
|
|
||||||
|
|
@ -150,20 +207,20 @@ public class PayServiceImpl implements PayService {
|
||||||
|
|
||||||
private CzgResult<Map<String, Object>> jsPay(@NonNull Long shopId, @NonNull String payType, CzgJsPayReq bizData) {
|
private CzgResult<Map<String, Object>> jsPay(@NonNull Long shopId, @NonNull String payType, CzgJsPayReq bizData) {
|
||||||
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
||||||
|
bizData.setSubAppid("aliPay".equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid());
|
||||||
AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay".equals(payType) ? "支付宝" : "微信") + "小程序");
|
AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay".equals(payType) ? "支付宝" : "微信") + "小程序");
|
||||||
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
|
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
|
||||||
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
|
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
|
||||||
bizData.setSubAppid("aliPay".equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid());
|
|
||||||
CzgResult<CzgJsPayResp> jsPayRespCzgResult = czgPayService.jsPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
CzgResult<CzgJsPayResp> jsPayRespCzgResult = czgPayService.jsPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
||||||
return execPayResult(jsPayRespCzgResult);
|
return execPayResult(jsPayRespCzgResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
private CzgResult<Map<String, Object>> ltPay(@NonNull Long shopId, String payType, CzgLtPayReq bizData) {
|
private CzgResult<Map<String, Object>> ltPay(@NonNull Long shopId, String payType, CzgLtPayReq bizData) {
|
||||||
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
||||||
|
bizData.setSubAppid("aliPay".equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid());
|
||||||
AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay".equals(payType) ? "支付宝" : "微信") + "小程序");
|
AssertUtil.isBlank(bizData.getSubAppid(), "暂不可用,请联系商家配置" + ("aliPay".equals(payType) ? "支付宝" : "微信") + "小程序");
|
||||||
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
|
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
|
||||||
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
|
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
|
||||||
bizData.setSubAppid("aliPay".equals(payType) ? shopMerchant.getAlipaySmallAppid() : shopMerchant.getWechatSmallAppid());
|
|
||||||
CzgResult<CzgLtPayResp> ltPayRespCzgResult = czgPayService.ltPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
CzgResult<CzgLtPayResp> ltPayRespCzgResult = czgPayService.ltPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
||||||
return execPayResult(ltPayRespCzgResult);
|
return execPayResult(ltPayRespCzgResult);
|
||||||
}
|
}
|
||||||
|
|
@ -177,10 +234,10 @@ public class PayServiceImpl implements PayService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private CzgResult<Map<String, Object>> microPay(@NonNull Long shopId, CzgMicroPayReq bizData) {
|
private CzgResult<Map<String, Object>> microPay(@NonNull Long shopId, CzgMicroPayReq bizData) {
|
||||||
|
AssertUtil.isBlank(bizData.getAuthCode(), "扫码失败,请重试");
|
||||||
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
ShopMerchant shopMerchant = shopMerchantService.getById(shopId);
|
||||||
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
|
bizData.assignMerchant(shopMerchant.getStoreId(), shopMerchant.getMerchantName(),
|
||||||
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
|
sysParamsService.getSysParamValue(SysParamCodeEnum.PAY_CZG_NOTIFY_URL.getCode()));
|
||||||
AssertUtil.isBlank(bizData.getAuthCode(), "扫码失败,请重试");
|
|
||||||
String firstTwoDigitsStr = bizData.getAuthCode().substring(0, 2);
|
String firstTwoDigitsStr = bizData.getAuthCode().substring(0, 2);
|
||||||
|
|
||||||
// 将截取的字符串转换为整数
|
// 将截取的字符串转换为整数
|
||||||
|
|
@ -193,6 +250,8 @@ 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 {
|
||||||
|
throw new ValidateException("扫描码非法或暂不支持");
|
||||||
}
|
}
|
||||||
CzgResult<CzgMicroPayResp> czgScanPayResult = czgPayService.microPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
CzgResult<CzgMicroPayResp> czgScanPayResult = czgPayService.microPay(shopMerchant.getAppId(), shopMerchant.getAppSecret(), bizData);
|
||||||
|
|
||||||
|
|
@ -224,13 +283,16 @@ public class PayServiceImpl implements PayService {
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
case CzgH5PayResp h5PayResp -> map = JSONObject.parseObject(JSONObject.toJSONString(h5PayResp.getPayInfo()));
|
case CzgH5PayResp h5PayResp ->
|
||||||
case CzgJsPayResp jsPayResp -> map = JSONObject.parseObject(JSONObject.toJSONString(jsPayResp.getPayInfo()));
|
map = JSONObject.parseObject(JSONObject.toJSONString(h5PayResp.getPayInfo()));
|
||||||
|
case CzgJsPayResp jsPayResp ->
|
||||||
|
map = JSONObject.parseObject(JSONObject.toJSONString(jsPayResp.getPayInfo()));
|
||||||
case CzgLtPayResp ltPayResp -> {
|
case CzgLtPayResp ltPayResp -> {
|
||||||
map.put("payInfo", JSONObject.toJSONString(ltPayResp.getPayInfo()));
|
map.put("payInfo", JSONObject.toJSONString(ltPayResp.getPayInfo()));
|
||||||
map.put("liteInfo", JSONObject.toJSONString(ltPayResp.getLiteInfo()));
|
map.put("liteInfo", JSONObject.toJSONString(ltPayResp.getLiteInfo()));
|
||||||
}
|
}
|
||||||
case CzgScanPayResp scanPayResp -> map = JSONObject.parseObject(JSONObject.toJSONString(scanPayResp.getPayInfo()));
|
case CzgScanPayResp scanPayResp ->
|
||||||
|
map = JSONObject.parseObject(JSONObject.toJSONString(scanPayResp.getPayInfo()));
|
||||||
default -> throw new IllegalStateException("Unexpected value: " + data);
|
default -> throw new IllegalStateException("Unexpected value: " + data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue