Commit 1d0330ed by 徐高华

Merge remote-tracking branch 'origin/feature/企微许可账号购买'

Conflicts:
	haoban-manage3-service/src/test/java/DealSyncTest.java
parents 5154ffb9 947b85f0
package com.gic.haoban.manage.api.dto.licence;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
public class LicenceOrderDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
private Long orderId;
/**
* gic商户Id
*/
private String enterpriseId;
/**
* gic品牌名称
*/
private String enterpriseName;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 微信商户名称
*/
private String wxEnterpriseName;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
/**
* 互通帐号个数
*/
private Integer externalContactCount;
/**
* 基础帐号个数
*/
private Integer baseCount;
/**
* 订单金额,单位分
*/
private Integer price;
/**
* 购买时间类型 1:按月购买,2:按天购买
*/
private Integer timeType;
/**
* 购买的时间数值
*/
private Integer timeValue;
/**
* 支付类型 1在线支付 2对公转账
*/
private Integer payType;
/**
* 订单编号
*/
private String orderNumber;
/**
* 上传凭证url
*/
private String voucher;
/**
* 订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:已退款,5:审核中
*/
private Integer orderStatus;
/**
* 订单状态更改原因
*/
private String orderStatusReason;
/**
* 支付时间 支付类型为1:微信支付时间 2:上传凭证时间
*/
private Date payTime;
/**
* 退款时间
*/
private Date refundTime;
/**
* 企业微信订单id
*/
private String qywxOrderId;
/**
* 企业微信订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:退款中,5:退款被拒绝,6:已退款,7已失效
*/
private Integer qywxOrderStatus;
/**
* 企业微信订单更改原因
*/
private String qywxOrderStatusReason;
/**
* 企业微信支付时间
*/
private Date qywxPayTime;
/**
* 企业微信退款时间
*/
private Date qywxRefundTime;
/**
* 审核不通过原因
*/
private String reason;
/**
* 创建时间
*/
private Date createTime;
/**
* 到期时间
*/
private Date expireTime;
/**
* 当前时间
*/
private Date nowTime;
/**
* 订单进度list
*/
private List<LicenceOrderProgressDTO> OrderProgressList;
/**
* 微信url
*/
private String wxUrl;
public String getWxUrl() {
return wxUrl;
}
public void setWxUrl(String wxUrl) {
this.wxUrl = wxUrl;
}
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getEnterpriseName() {
return enterpriseName;
}
public void setEnterpriseName(String enterpriseName) {
this.enterpriseName = enterpriseName;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getWxEnterpriseName() {
return wxEnterpriseName;
}
public void setWxEnterpriseName(String wxEnterpriseName) {
this.wxEnterpriseName = wxEnterpriseName;
}
public Integer getOrderType() {
return orderType;
}
public void setOrderType(Integer orderType) {
this.orderType = orderType;
}
public Integer getExternalContactCount() {
return externalContactCount;
}
public void setExternalContactCount(Integer externalContactCount) {
this.externalContactCount = externalContactCount;
}
public Integer getBaseCount() {
return baseCount;
}
public void setBaseCount(Integer baseCount) {
this.baseCount = baseCount;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Integer getTimeType() {
return timeType;
}
public void setTimeType(Integer timeType) {
this.timeType = timeType;
}
public Integer getTimeValue() {
return timeValue;
}
public void setTimeValue(Integer timeValue) {
this.timeValue = timeValue;
}
public Integer getPayType() {
return payType;
}
public void setPayType(Integer payType) {
this.payType = payType;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public String getVoucher() {
return voucher;
}
public void setVoucher(String voucher) {
this.voucher = voucher;
}
public Integer getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(Integer orderStatus) {
this.orderStatus = orderStatus;
}
public String getOrderStatusReason() {
return orderStatusReason;
}
public void setOrderStatusReason(String orderStatusReason) {
this.orderStatusReason = orderStatusReason;
}
public Date getPayTime() {
return payTime;
}
public void setPayTime(Date payTime) {
this.payTime = payTime;
}
public Date getRefundTime() {
return refundTime;
}
public void setRefundTime(Date refundTime) {
this.refundTime = refundTime;
}
public String getQywxOrderId() {
return qywxOrderId;
}
public void setQywxOrderId(String qywxOrderId) {
this.qywxOrderId = qywxOrderId;
}
public Integer getQywxOrderStatus() {
return qywxOrderStatus;
}
public void setQywxOrderStatus(Integer qywxOrderStatus) {
this.qywxOrderStatus = qywxOrderStatus;
}
public String getQywxOrderStatusReason() {
return qywxOrderStatusReason;
}
public void setQywxOrderStatusReason(String qywxOrderStatusReason) {
this.qywxOrderStatusReason = qywxOrderStatusReason;
}
public Date getQywxPayTime() {
return qywxPayTime;
}
public void setQywxPayTime(Date qywxPayTime) {
this.qywxPayTime = qywxPayTime;
}
public Date getQywxRefundTime() {
return qywxRefundTime;
}
public void setQywxRefundTime(Date qywxRefundTime) {
this.qywxRefundTime = qywxRefundTime;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
public Date getNowTime() {
return nowTime;
}
public void setNowTime(Date nowTime) {
this.nowTime = nowTime;
}
public List<LicenceOrderProgressDTO> getOrderProgressList() {
return OrderProgressList;
}
public void setOrderProgressList(List<LicenceOrderProgressDTO> orderProgressList) {
OrderProgressList = orderProgressList;
}
}
package com.gic.haoban.manage.api.dto.licence;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
public class LicenceOrderPageDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
private Long orderId;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
/**
* 互通帐号个数
*/
private Integer externalContactCount;
/**
* 基础帐号个数
*/
private Integer baseCount;
/**
* 订单金额,单位分
*/
private Integer price;
/**
* 购买时间类型 1:按月购买,2:按天购买
*/
private Integer timeType;
/**
* 购买的时间数值
*/
private Integer timeValue;
/**
* 支付类型 1在线支付 2对公转账
*/
private Integer payType;
/**
* 订单编号
*/
private String orderNumber;
/**
* 订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:已退款,5:审核中
*/
private Integer orderStatus;
/**
* 订单状态更改原因
*/
private String orderStatusReason;
/**
* 支付时间 支付类型为1:微信支付时间 2:审核确认通过的时间
*/
private Date payTime;
/**
* 企业微信订单id
*/
private String qywxOrderId;
/**
* 企业微信订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:退款中,5:退款被拒绝,6:已退款,7已失效
*/
private Integer qywxOrderStatus;
/**
* 企业微信订单更改原因
*/
private String qywxOrderStatusReason;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String creatorId;
/**
* 创建人名称
*/
private String creatorName;
/**
* 到期时间
*/
private Date expireTime;
/**
* 企业微信支付时间
*/
private Date qywxPayTime;
/**
* gic商户Id
*/
private String enterpriseId;
/**
* gic品牌名称
*/
private String enterpriseName;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 微信商户名称
*/
private String wxEnterpriseName;
/**
* 微信订单id
*/
private String wxOrderId;
public String getWxOrderId() {
return wxOrderId;
}
public void setWxOrderId(String wxOrderId) {
this.wxOrderId = wxOrderId;
}
public Date getQywxPayTime() {
return qywxPayTime;
}
public void setQywxPayTime(Date qywxPayTime) {
this.qywxPayTime = qywxPayTime;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getEnterpriseName() {
return enterpriseName;
}
public void setEnterpriseName(String enterpriseName) {
this.enterpriseName = enterpriseName;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getWxEnterpriseName() {
return wxEnterpriseName;
}
public void setWxEnterpriseName(String wxEnterpriseName) {
this.wxEnterpriseName = wxEnterpriseName;
}
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public Integer getOrderType() {
return orderType;
}
public void setOrderType(Integer orderType) {
this.orderType = orderType;
}
public Integer getExternalContactCount() {
return externalContactCount;
}
public void setExternalContactCount(Integer externalContactCount) {
this.externalContactCount = externalContactCount;
}
public Integer getBaseCount() {
return baseCount;
}
public void setBaseCount(Integer baseCount) {
this.baseCount = baseCount;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Integer getTimeType() {
return timeType;
}
public void setTimeType(Integer timeType) {
this.timeType = timeType;
}
public Integer getTimeValue() {
return timeValue;
}
public void setTimeValue(Integer timeValue) {
this.timeValue = timeValue;
}
public Integer getPayType() {
return payType;
}
public void setPayType(Integer payType) {
this.payType = payType;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public Integer getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(Integer orderStatus) {
this.orderStatus = orderStatus;
}
public String getOrderStatusReason() {
return orderStatusReason;
}
public void setOrderStatusReason(String orderStatusReason) {
this.orderStatusReason = orderStatusReason;
}
public Date getPayTime() {
return payTime;
}
public void setPayTime(Date payTime) {
this.payTime = payTime;
}
public String getQywxOrderId() {
return qywxOrderId;
}
public void setQywxOrderId(String qywxOrderId) {
this.qywxOrderId = qywxOrderId;
}
public Integer getQywxOrderStatus() {
return qywxOrderStatus;
}
public void setQywxOrderStatus(Integer qywxOrderStatus) {
this.qywxOrderStatus = qywxOrderStatus;
}
public String getQywxOrderStatusReason() {
return qywxOrderStatusReason;
}
public void setQywxOrderStatusReason(String qywxOrderStatusReason) {
this.qywxOrderStatusReason = qywxOrderStatusReason;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getCreatorId() {
return creatorId;
}
public void setCreatorId(String creatorId) {
this.creatorId = creatorId;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
}
package com.gic.haoban.manage.api.dto.licence;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
public class LicenceOrderProgressDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
private Long id;
/**
* 订单状态
*/
private String orderStatus;
/**
* 标记字段 1好办后台
*/
private Integer type;
/**
* 上传凭证url
*/
private String voucher;
/**
* 原因
*/
private String reason;
/**
* 创建时间
*/
private Date createTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(String orderStatus) {
this.orderStatus = orderStatus;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getVoucher() {
return voucher;
}
public void setVoucher(String voucher) {
this.voucher = voucher;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
package com.gic.haoban.manage.api.dto.qdto.licence;
import com.gic.api.base.commons.BasePageInfo;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
public class LicenceOrderPageQDTO extends BasePageInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单编号
*/
private String orderNumber;
/**
* 订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:已退款,5:审核中
*/
private Integer orderStatus;
/**
* 企业微信订单id
*/
private String qywxOrderId;
/**
* 企业微信订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:退款中,5:退款被拒绝,6:已退款,7已失效
*/
private Integer qywxOrderStatus;
/**
* 订单创建开始时间
*/
private String startTime;
/**
* 订单创建结束时间
*/
private String endTime;
/**
* gic商户Id
*/
private String enterpriseId;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 创建人名称
*/
private String creatorName;
/**
* 支付方式 1在线支付 2对公转账
*/
private Integer payType;
/**
* gic商户查询id
*/
private String enterpriseIdParam;
/**
* 微信订单id
*/
private String wxOrderId;
/**
* 1 好办后台 0 运维后台
*/
private Integer type;
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getWxOrderId() {
return wxOrderId;
}
public void setWxOrderId(String wxOrderId) {
this.wxOrderId = wxOrderId;
}
public String getEnterpriseIdParam() {
return enterpriseIdParam;
}
public void setEnterpriseIdParam(String enterpriseIdParam) {
this.enterpriseIdParam = enterpriseIdParam;
}
public Integer getPayType() {
return payType;
}
public void setPayType(Integer payType) {
this.payType = payType;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public Integer getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(Integer orderStatus) {
this.orderStatus = orderStatus;
}
public String getQywxOrderId() {
return qywxOrderId;
}
public void setQywxOrderId(String qywxOrderId) {
this.qywxOrderId = qywxOrderId;
}
public Integer getQywxOrderStatus() {
return qywxOrderStatus;
}
public void setQywxOrderStatus(Integer qywxOrderStatus) {
this.qywxOrderStatus = qywxOrderStatus;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
}
package com.gic.haoban.manage.api.dto.qdto.licence;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
public class LicenceOrderQDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
private Long orderId;
/**
* gic商户Id
*/
private String enterpriseId;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
/**
* 互通帐号个数
*/
private Integer externalContactCount;
/**
* 基础帐号个数
*/
private Integer baseCount;
/**
* 订单金额,单位分
*/
private Integer price;
/**
* 购买时间类型 1:按月购买,2:按天购买
*/
private Integer timeType;
/**
* 购买的时间数值
*/
private Integer timeValue;
/**
* 支付类型 1在线支付 2对公转账
*/
private Integer payType;
/**
* 订单编号
*/
private String transactionId;
/**
* 订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:已退款,5:审核中
*/
private Integer orderStatus;
/**
* 逻辑删除,0未删除,1删除
*/
private Integer deleteFlag;
/**
* 创建时间
*/
private Date createTime;
/**
* 过期时间 类型为在线支付 30分钟;类型为对公转账 3天
*/
private Date expireTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人
*/
private String creatorId;
/**
* 创建人名称
*/
private String creatorName;
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Integer getOrderType() {
return orderType;
}
public void setOrderType(Integer orderType) {
this.orderType = orderType;
}
public Integer getExternalContactCount() {
return externalContactCount;
}
public void setExternalContactCount(Integer externalContactCount) {
this.externalContactCount = externalContactCount;
}
public Integer getBaseCount() {
return baseCount;
}
public void setBaseCount(Integer baseCount) {
this.baseCount = baseCount;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Integer getTimeType() {
return timeType;
}
public void setTimeType(Integer timeType) {
this.timeType = timeType;
}
public Integer getTimeValue() {
return timeValue;
}
public void setTimeValue(Integer timeValue) {
this.timeValue = timeValue;
}
public Integer getPayType() {
return payType;
}
public void setPayType(Integer payType) {
this.payType = payType;
}
public String getTransactionId() {
return transactionId;
}
public void setTransactionId(String transactionId) {
this.transactionId = transactionId;
}
public Integer getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(Integer orderStatus) {
this.orderStatus = orderStatus;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getCreatorId() {
return creatorId;
}
public void setCreatorId(String creatorId) {
this.creatorId = creatorId;
}
public String getCreatorName() {
return creatorName;
}
public void setCreatorName(String creatorName) {
this.creatorName = creatorName;
}
}
...@@ -330,4 +330,11 @@ public interface StaffApiService { ...@@ -330,4 +330,11 @@ public interface StaffApiService {
* 转移员工许可 * 转移员工许可
*/ */
com.gic.api.base.commons.ServiceResponse<TransferActiveCodeDTO> batchTransferLicense(List<TransferActiveCodeQDTO> transferActiveCodeQOList,String wxEnterpriseId); com.gic.api.base.commons.ServiceResponse<TransferActiveCodeDTO> batchTransferLicense(List<TransferActiveCodeQDTO> transferActiveCodeQOList,String wxEnterpriseId);
/**
* 企业微信自动激活回调通知
* @param params 回调参数
* @return
*/
com.gic.api.base.commons.ServiceResponse<Boolean> autoActivateCallBack(String params) ;
} }
package com.gic.haoban.manage.api.service.licence;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.licence.LicenceOrderDTO;
import com.gic.haoban.manage.api.dto.licence.LicenceOrderPageDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.LicenceOrderPageQDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.LicenceOrderQDTO;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author jx
* @since 2023-03-09
*/
public interface LicenceOrderApiService {
/**
* 获取订单详情
*
* @param orderId 订单id
* @return LicenceOrderDTO
*/
ServiceResponse<LicenceOrderDTO> getLicenceOrderDetail(Long orderId, Integer type);
/**
* 删除订单
*
* @param orderId 订单id
* @return
*/
ServiceResponse<Boolean> deleteLicenceOrder(Long orderId);
/**
* 新增或者修改订单详情
*
* @param licenceOrderQDTO
* @return
*/
ServiceResponse<String> saveOrUpdateLicenceOrder(LicenceOrderQDTO licenceOrderQDTO);
/**
* 分页查询订单数据
*
* @param licenceOrderPageQDTO
* @return
*/
ServiceResponse<Page<LicenceOrderPageDTO>> getLicenceOrderPage(LicenceOrderPageQDTO licenceOrderPageQDTO);
/**
* 更新订单状态
*
* @param orderId 订单id
* @param type 订单状态
* @param wxFlag 1微信订单状态 0 企业微信订单状态
* @return
*/
ServiceResponse<Boolean> updateLicenceOrderType(Long orderId, Integer type, String enterpriseId, String wxEnterpriseId, String creatorName, Integer wxFlag);
/**
* 订单凭证上传
*
* @param orderId 订单id
* @param voucher 凭证url
* @return
*/
ServiceResponse<Boolean> uploadLicenceOrderVoucher(Long orderId, String voucher, String enterpriseId, String wxEnterpriseId, String creatorName);
/**
* 订单支付接口
*
* @param orderId 订单id
* @return
*/
ServiceResponse<String> payLicenceOrder(Long orderId);
/**
* 查询企业是否存在订单未支付接口
*
* @param wxEnterpriseId 企业微信id
* @return
*/
ServiceResponse<String> isPayLicenceOrder(String wxEnterpriseId);
/**
* 微信通知回调接口
*/
ServiceResponse<Boolean> wxCallBack(String params);
/**
* 企业微信通知回调接口
*/
ServiceResponse<Boolean> qywxCallBack(String params);
/**
* 保存微信交易信息
*
* @param orderId 订单id
* @param transactionCode 订单编号
* @param prepayId 微信预支付id
* @param wxOrderId 微信支付id
* @return
*/
ServiceResponse<Boolean> saveTransactionCode(Long orderId, String transactionCode, String prepayId, String wxOrderId, Date payTime,String wxUrl);
/**
* 查询订单编号id
*
* @param param 查询参数
* @param type 0 订单编号 1 企业微信订单编号 2微信订单编号
* @param wxEnterpriseId
* @return
*/
ServiceResponse<List<String>> getOrderIdList(String param, Integer type, String wxEnterpriseId);
/**
* 审核订单
*
* @param orderId 订单id
* @param flag 是否通过 0 否 1是
* @param reason 不通过原因
* @return
*/
ServiceResponse<Boolean> checkLicenceOrder(Long orderId, Integer flag, String reason, String creatorName);
/**
* 微信退款
*
* @return
*/
ServiceResponse<Boolean> wxRefund(Long orderId);
/**
* 查询开户信息
*/
ServiceResponse<HashMap<String, String>> getAccountInfo();
/**
* 取消企业微信订单
*/
ServiceResponse<Boolean> cancelQywxOrder(Long orderId);
}
package com.gic.haoban.manage.web.config;
import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableApolloConfig
public class Config {
@Value("${corpid}")
private String corpid;
@Value("${suiteid}")
private String suiteId;
@Value("${host}")
private String host;
@Value("${wxSuiteid}")
private String wxSuiteid;
@Value("${accountName}")
private String accountName;
@Value("${accountNumber}")
private String accountNumber;
@Value("${bankName}")
private String bankName;
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public String getAccountNumber() {
return accountNumber;
}
public void setAccountNumber(String accountNumber) {
this.accountNumber = accountNumber;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public String getCorpid() {
return corpid;
}
public void setCorpid(String corpid) {
this.corpid = corpid;
}
public String getSuiteId() {
return suiteId;
}
public void setSuiteId(String suiteId) {
this.suiteId = suiteId;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getWxSuiteid() {
return wxSuiteid;
}
public void setWxSuiteid(String wxSuiteid) {
this.wxSuiteid = wxSuiteid;
}
}
package com.gic.haoban.manage.web.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.authcenter.commons.dto.AuthcenterUserDetails;
import com.gic.authcenter.commons.util.SessionContextUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.manage.api.dto.WxEnterpriseDTO;
import com.gic.haoban.manage.api.dto.licence.LicenceOrderDTO;
import com.gic.haoban.manage.api.dto.licence.LicenceOrderPageDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.LicenceOrderPageQDTO;
import com.gic.haoban.manage.api.service.WxEnterpriseApiService;
import com.gic.haoban.manage.api.service.licence.LicenceOrderApiService;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import com.gic.haoban.manage.web.qo.licence.LicenceOrderPageQO;
import com.gic.haoban.manage.web.vo.licence.LicenceOrderPageVO;
import com.gic.haoban.manage.web.vo.licence.LicenceOrderVO;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
/**
* 企业微信许可账号购买
*
* @author jx
* @since 2023-03-09
*/
@RestController
@RequestMapping("/operation-licence-order")
public class LicenceOrderController {
private static Logger logger = LogManager.getLogger(LicenceOrderController.class);
@Autowired
private LicenceOrderApiService licenceOrderApiService;
@Autowired
private EnterpriseService enterpriseService;
@Autowired
private WxEnterpriseApiService wxEnterpriseApiService;
/**
* 查询订单详情
*/
@RequestMapping("licence-order-detail")
public RestResponse<LicenceOrderVO> getLicenceOrderDetail(@RequestParam Long orderId, HttpServletRequest request) {
AuthcenterUserDetails loginUser = (AuthcenterUserDetails) SessionContextUtil.getUser(request);
if (loginUser == null) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
ServiceResponse<LicenceOrderDTO> licenceOrderDetail = licenceOrderApiService.getLicenceOrderDetail(orderId, null);
LicenceOrderVO licenceOrderVO = JSONObject.parseObject(JSONObject.toJSONString(licenceOrderDetail.getResult()), LicenceOrderVO.class);
return RestResponse.successResult(licenceOrderVO);
}
/**
* 分页查询订单列表
*/
@RequestMapping("licence-order-page")
public RestResponse<Page<LicenceOrderPageVO>> getLicenceOrderPage(@RequestBody LicenceOrderPageQO licenceOrderPageQO, HttpServletRequest request) {
AuthcenterUserDetails loginUser = (AuthcenterUserDetails) SessionContextUtil.getUser(request);
if (loginUser == null) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
LicenceOrderPageQDTO qdto = JSONObject.parseObject(JSONObject.toJSONString(licenceOrderPageQO), LicenceOrderPageQDTO.class);
qdto.setType(0);
ServiceResponse<Page<LicenceOrderPageDTO>> licenceOrderPage = licenceOrderApiService.getLicenceOrderPage(qdto);
Page<LicenceOrderPageVO> result = PageHelperUtils.changePageToCurrentPage(licenceOrderPage.getResult(), LicenceOrderPageVO.class);
if (CollUtil.isNotEmpty(result.getResult())) {
for (LicenceOrderPageVO vo : result.getResult()) {
//查询gic品牌名称
EnterpriseDTO enterpriseDTO = enterpriseService.getEnterpriseById(vo.getEnterpriseId());
if (ObjectUtil.isNotNull(enterpriseDTO)) {
vo.setEnterpriseName(enterpriseDTO.getEnterpriseName());
}
WxEnterpriseDTO wxEnterpriseDTO = wxEnterpriseApiService.getOne(vo.getWxEnterpriseId());
if (ObjectUtil.isNotNull(wxEnterpriseDTO)) {
vo.setWxEnterpriseName(wxEnterpriseDTO.getCorpName());
}
}
}
return RestResponse.successResult(result);
}
/**
* 取消订单
*/
@RequestMapping("licence-order-cancel")
public RestResponse<Boolean> cancelLicenceOrder(@RequestParam Long orderId, HttpServletRequest request) {
AuthcenterUserDetails loginUser = (AuthcenterUserDetails) SessionContextUtil.getUser(request);
if (loginUser == null) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
ServiceResponse<Boolean> response = licenceOrderApiService.cancelQywxOrder(orderId);
if (!response.isSuccess()) {
return RestResponse.failure(response.getCode(), response.getMessage());
}
return RestResponse.successResult(true);
}
/**
* 支付订单
*/
@RequestMapping("licence-order-pay")
public RestResponse<String> payLicenceOrder(@RequestParam Long orderId, HttpServletRequest request) {
AuthcenterUserDetails loginUser = (AuthcenterUserDetails) SessionContextUtil.getUser(request);
if (loginUser == null) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
ServiceResponse<String> response = licenceOrderApiService.payLicenceOrder(orderId);
if (response.isSuccess()) {
return RestResponse.successResult(response.getResult());
}
return RestResponse.failure(response.getCode(), response.getMessage());
}
/**
* 审核订单
*
* @param orderId 订单id
* @param flag 是否通过 0 否 1是
* @param reason 不通过原因
* @return
*/
@RequestMapping("licence-order-check")
public RestResponse<Boolean> checkLicenceOrder(@RequestParam Long orderId, Integer flag, String reason, HttpServletRequest request) {
AuthcenterUserDetails loginUser = (AuthcenterUserDetails) SessionContextUtil.getUser(request);
if (loginUser == null) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
String clerkName = loginUser.getLoginName();
Boolean result = licenceOrderApiService.checkLicenceOrder(orderId, flag, reason, clerkName).getResult();
return RestResponse.successResult(result);
}
/**
* 订单编号和企业微信订单编号模糊搜索
*
* @param param 模糊查询
* @param type 0 订单编号 1 企业微信订单编号 2微信订单编号
* @return
*/
@RequestMapping("get-order-id-list")
public RestResponse<List<String>> getOrderIdList(String param, Integer type, HttpServletRequest request) {
AuthcenterUserDetails loginUser = (AuthcenterUserDetails) SessionContextUtil.getUser(request);
if (loginUser == null) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
ServiceResponse<List<String>> orderIdList = licenceOrderApiService.getOrderIdList(param, type, null);
return RestResponse.successResult(orderIdList.getResult());
}
/**
* 查询开户信息
*/
@RequestMapping("get-account-info")
public RestResponse<HashMap<String, String>> getAccountInfo(HttpServletRequest request) {
AuthcenterUserDetails loginUser = (AuthcenterUserDetails) SessionContextUtil.getUser(request);
if (loginUser == null) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
HashMap<String, String> result = licenceOrderApiService.getAccountInfo().getResult();
return RestResponse.successResult(result);
}
/**
* 申请退款
*/
@RequestMapping("licence-order-wxRefoud")
public RestResponse<Boolean> wxRefund(@RequestParam Long orderId, HttpServletRequest request) {
AuthcenterUserDetails loginUser = (AuthcenterUserDetails) SessionContextUtil.getUser(request);
if (loginUser == null) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
ServiceResponse<Boolean> response = licenceOrderApiService.wxRefund(orderId);
if (response.isSuccess()){
return RestResponse.successResult(true);
}
return RestResponse.failure(response.getCode(), response.getMessage());
}
}
package com.gic.haoban.manage.web.qo.licence;
import com.gic.api.base.commons.BasePageInfo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class LicenceOrderPageQO extends BasePageInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单编号
*/
private String orderNumber;
/**
* 订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:已退款,5:审核中
*/
private Integer orderStatus;
/**
* 企业微信订单id
*/
private String qywxOrderId;
/**
* 企业微信订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:退款中,5:退款被拒绝,6:已退款,7已失效
*/
private Integer qywxOrderStatus;
/**
* 订单创建开始时间
*/
private String startTime;
/**
* 订单创建结束时间
*/
private String endTime;
/**
* 支付方式 1在线支付 2对公转账
*/
private Integer payType;
/**
* gic商户查询id
*/
private String enterpriseIdParam;
/**
* 微信订单id
*/
private String wxOrderId;
}
package com.gic.haoban.manage.web.qo.licence;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class LicenceOrderQO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
/**
* 互通帐号个数
*/
private Integer externalContactCount;
// /**
// * 基础帐号个数
// */
// private Integer baseCount;
/**
* 订单金额,单位分
*/
private Integer price;
/**
* 购买时间类型 1:按月购买,2:按天购买
*/
private Integer timeType;
/**
* 购买的时间数值
*/
private Integer timeValue;
/**
* 支付类型 1在线支付 2对公转账
*/
private Integer payType;
/**
* 校验金额
*/
public Integer checkPrice(){
if (this.externalContactCount ==null || this.externalContactCount<0){
return -1;
}
Integer myPrice=0;
//根据企业微信的计费规则计算
if (this.externalContactCount<=5){
myPrice = 50*this.externalContactCount;
} else if (this.externalContactCount<=200) {
myPrice = 250+40*(this.externalContactCount-5);
} else if (this.externalContactCount<=500) {
myPrice = 8050+30*(this.externalContactCount-200);
} else if (this.externalContactCount<=1000) {
myPrice = 17050+20*(this.externalContactCount-500);
} else if (this.externalContactCount<=10000) {
myPrice = 27050+10*(this.externalContactCount-1000);
}else {
return -1;
}
//转化为分
myPrice = myPrice*this.timeValue*100;
if (this.timeType == 1){
//企业微信的规则: 12.312,最终保留的是12.32
if (myPrice%12==0){
myPrice = myPrice/12;
}else {
myPrice = myPrice/12+1;
}
}else {
if (myPrice%372==0){
myPrice = myPrice/372;
}else {
myPrice = myPrice/372+1;
}
}
if (!this.price .equals(myPrice)){
return 0;
}
return 1;
}
}
package com.gic.haoban.manage.web.vo.licence;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class LicenceOrderPageVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
private Long orderId;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
/**
* 互通帐号个数
*/
private Integer externalContactCount;
/**
* 基础帐号个数
*/
private Integer baseCount;
/**
* 订单金额,单位分
*/
private Integer price;
/**
* 购买时间类型 1:按月购买,2:按天购买
*/
private Integer timeType;
/**
* 购买的时间数值
*/
private Integer timeValue;
/**
* 支付类型 1在线支付 2对公转账
*/
private Integer payType;
/**
* 订单编号
*/
private String orderNumber;
/**
* 订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:已退款,5:审核中
*/
private Integer orderStatus;
/**
* 订单状态更改原因
*/
private String orderStatusReason;
/**
* 支付时间 支付类型为1:微信支付时间 2:审核确认通过的时间
*/
private Date payTime;
/**
* 企业微信订单id
*/
private String qywxOrderId;
/**
* 企业微信订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:退款中,5:退款被拒绝,6:已退款,7已失效
*/
private Integer qywxOrderStatus;
/**
* 企业微信订单更改原因
*/
private String qywxOrderStatusReason;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String creatorId;
/**
* 创建人名称
*/
private String creatorName;
/**
* 企业微信支付时间
*/
private Date qywxPayTime;
/**
* gic商户Id
*/
private String enterpriseId;
/**
* gic品牌名称
*/
private String enterpriseName;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 微信商户名称
*/
private String wxEnterpriseName;
/**
* 微信订单id
*/
private String wxOrderId;
}
package com.gic.haoban.manage.web.vo.licence;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class LicenceOrderProgressVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
private Long id;
/**
* 订单状态
*/
private String orderStatus;
/**
* 标记字段 1好办后台
*/
private Integer type;
/**
* 上传凭证url
*/
private String voucher;
/**
* 原因
*/
private String reason;
/**
* 创建时间
*/
private Date createTime;
}
package com.gic.haoban.manage.web.vo.licence;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class LicenceOrderVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
private Long orderId;
/**
* gic商户Id
*/
private String enterpriseId;
/**
* gic品牌名称
*/
private String enterpriseName;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 企业微信商户名称
*/
private String wxEnterpriseName;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
/**
* 互通帐号个数
*/
private Integer externalContactCount;
/**
* 基础帐号个数
*/
private Integer baseCount;
/**
* 订单金额,单位分
*/
private Integer price;
/**
* 购买时间类型 1:按月购买,2:按天购买
*/
private Integer timeType;
/**
* 购买的时间数值
*/
private Integer timeValue;
/**
* 支付类型 1在线支付 2对公转账
*/
private Integer payType;
/**
* 订单编号
*/
private String orderNumber;
/**
* 上传凭证url
*/
private String voucher;
/**
* 订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:已退款,5:审核中
*/
private Integer orderStatus;
/**
* 订单状态更改原因
*/
private String orderStatusReason;
/**
* 支付时间 支付类型为1:微信支付时间 2:上传凭证时间
*/
private Date payTime;
/**
* 退款时间
*/
private Date refundTime;
/**
* 企业微信订单id
*/
private String qywxOrderId;
/**
* 企业微信订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:退款中,5:退款被拒绝,6:已退款,7已失效
*/
private Integer qywxOrderStatus;
/**
* 企业微信订单更改原因
*/
private String qywxOrderStatusReason;
/**
* 企业微信支付时间
*/
private Date qywxPayTime;
/**
* 企业微信退款时间
*/
private Date qywxRefundTime;
/**
* 审核不通过原因
*/
private String reason;
/**
* 创建时间
*/
private Date createTime;
/**
* 到期时间
*/
private Date expireTime;
/**
* 当前时间
*/
private Date nowTime;
/**
* 订单进度list
*/
private List<LicenceOrderProgressVO> OrderProgressList;
}
...@@ -67,4 +67,5 @@ ...@@ -67,4 +67,5 @@
<dubbo:reference interface="com.gic.haoban.manage.api.service.fee.HaobanQywxFeeApiService" id="haobanQywxFeeApiService"/> <dubbo:reference interface="com.gic.haoban.manage.api.service.fee.HaobanQywxFeeApiService" id="haobanQywxFeeApiService"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.role.HaobanRoleApiService" id="haobanRoleApiService"/> <dubbo:reference interface="com.gic.haoban.manage.api.service.role.HaobanRoleApiService" id="haobanRoleApiService"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.role.HaobanMenuApiService" id="haobanMenuApiService"/> <dubbo:reference interface="com.gic.haoban.manage.api.service.role.HaobanMenuApiService" id="haobanMenuApiService"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.licence.LicenceOrderApiService" id="licenceOrderApiService"/>
</beans> </beans>
...@@ -29,6 +29,50 @@ public class Config { ...@@ -29,6 +29,50 @@ public class Config {
@Value("${addDelFriendEvent}") @Value("${addDelFriendEvent}")
private String addDelFriendEvent; private String addDelFriendEvent;
@Value("${buyerUserid}")
private String buyerUserid;
/**
* 企业微信许可账号购买信息
*/
@Value("${accountName}")
private String accountName;
@Value("${accountNumber}")
private String accountNumber;
@Value("${bankName}")
private String bankName;
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public String getAccountNumber() {
return accountNumber;
}
public void setAccountNumber(String accountNumber) {
this.accountNumber = accountNumber;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public String getBuyerUserid() {
return buyerUserid;
}
public void setBuyerUserid(String buyerUserid) {
this.buyerUserid = buyerUserid;
}
public String getHmLinkUrl() { public String getHmLinkUrl() {
return hmLinkUrl; return hmLinkUrl;
} }
......
package com.gic.haoban.manage.service.dao.mapper.licence;
import com.gic.haoban.manage.api.dto.qdto.licence.LicenceOrderPageQDTO;
import com.gic.haoban.manage.service.entity.licence.TabHaobanLicenceOrder;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jx
* @since 2023-03-09
*/
public interface TabHaobanLicenceOrderMapper {
/**
* 获取订单详情
*
* @param orderId
* @return
*/
TabHaobanLicenceOrder selectById(@Param("orderId") Long orderId);
/**
* 新增订单
*
* @param tabHaobanLicenceOrder
* @return
*/
Integer insert(TabHaobanLicenceOrder tabHaobanLicenceOrder);
/**
* 删除订单
*
* @param orderId
* @return
*/
Integer deleteById(@Param("orderId") Long orderId);
/**
* 跟新订单状态
*
* @param orderId
* @param type
* @return
*/
Integer updateLicenceOrderType(@Param("orderId") Long orderId, @Param("type") Integer type);
/**
* 跟新企业微信订单状态
*
* @param orderId
* @param type
* @return
*/
Integer updateQywxOrderType(@Param("orderId") Long orderId, @Param("type") Integer type);
/**
* 上传订单支付凭证
*
* @param orderId
* @param voucher
* @return
*/
Integer uploadLicenceOrderVoucher(@Param("orderId") Long orderId, @Param("voucher") String voucher);
/**
* 根据wxEnterpriseId查询企业是否存在未支付订单
*
* @param wxEnterpriseId
* @return order_id
*/
String selectByWxEnterpriseId(@Param("wxEnterpriseId") String wxEnterpriseId);
/**
* 分页查询订单列表
*
* @param licenceOrderPageQDTO
* @return
*/
List<TabHaobanLicenceOrder> getLicenceOrderPage(LicenceOrderPageQDTO licenceOrderPageQDTO);
Integer saveTransactionCode(@Param("orderId") Long orderId, @Param("orderNumber") String orderNumber, @Param("prepayId") String prepayId,
@Param("wxOrderId") String wxOrderId, @Param("payTime") Date payTime, @Param("wxUrl") String wxUrl);
/**
* 获取订单详情
*
* @param orderNumber 订单编号
* @return
*/
TabHaobanLicenceOrder selectByTransactionId(@Param("orderNumber") String orderNumber);
/**
* @param qywxOrderId 企业微信订单id
* @return
*/
TabHaobanLicenceOrder selectByQywxOrderId(@Param("qywxOrderId") String qywxOrderId);
/**
* 保存企业微信订单id
*
* @param orderId
* @param qywxOrderId
* @return
*/
Integer saveQywxOrderId(@Param("orderId") Long orderId, @Param("qywxOrderId") String qywxOrderId);
List<String> getTransactionIdList(@Param("orderNumber") String orderNumber, @Param("wxEnterpriseId") String wxEnterpriseId);
List<String> getQywxOrderId(@Param("qywxOrderId") String qywxOrderId, @Param("wxEnterpriseId") String wxEnterpriseId);
List<String> getWxOrderId(@Param("wxOrderId") String wxOrderId, @Param("wxEnterpriseId") String wxEnterpriseId);
Integer saveOrderCheckReason(@Param("orderId") Long orderId, @Param("reason") String reason, @Param("type") Integer type);
/**
* 记录回调时间
*
* @param orderId 订单id
* @param type 0 微信支付时间 1 微信退款时间 2 企业微信支付时间 3企业微信退款时间
* @param time
* @return
*/
Integer saveCallBackTime(@Param("orderId") Long orderId, @Param("type") Integer type, @Param("time") Date time);
}
package com.gic.haoban.manage.service.dao.mapper.licence;
import com.gic.haoban.manage.service.entity.licence.TabHaobanLicenceOrderProgress;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jx
* @since 2023-03-09
*/
public interface TabHaobanLicenceOrderProgressMapper {
/**
* 插入订单进度数据
* @param tabHaobanLicenceOrderProgress
* @return
*/
Integer insert(TabHaobanLicenceOrderProgress tabHaobanLicenceOrderProgress);
List<TabHaobanLicenceOrderProgress> getListByOrderId(@Param("orderId") Long orderId,@Param("type") Integer type);
Integer deleteByOrderId(@Param("orderId") Long orderId);
Integer uploadLicenceOrderVoucher(@Param("orderId")Long orderId, @Param("voucher")String voucher);
}
package com.gic.haoban.manage.service.entity.licence;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class TabHaobanLicenceOrder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
private Long orderId;
/**
* gic商户Id
*/
private String enterpriseId;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
/**
* 互通帐号个数
*/
private Integer externalContactCount;
/**
* 基础帐号个数
*/
private Integer baseCount;
/**
* 订单金额,单位分
*/
private Integer price;
/**
* 购买时间类型 1:按月购买,2:按天购买
*/
private Integer timeType;
/**
* 购买的时间数值
*/
private Integer timeValue;
/**
* 支付类型 1在线支付 2对公转账
*/
private Integer payType;
/**
* 订单编号
*/
private String orderNumber;
/**
* 上传凭证url
*/
private String voucher;
/**
* 订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:已退款,5:审核中
*/
private Integer orderStatus;
/**
* 订单状态更改原因
*/
private String orderStatusReason;
/**
* 支付类型为1:微信支付时间 2:上传凭证时间
*/
private Date payTime;
/**
* 退款时间
*/
private Date refundTime;
/**
* 企业微信订单id
*/
private String qywxOrderId;
/**
* 企业微信订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:退款中,5:退款被拒绝,6:已退款,7已失效
*/
private Integer qywxOrderStatus;
/**
* 企业微信订单更改原因
*/
private String qywxOrderStatusReason;
/**
* 企业微信支付时间
*/
private Date qywxPayTime;
/**
* 企业微信退款时间
*/
private Date qywxRefundTime;
/**
* 审核不通过原因
*/
private String reason;
/**
* 逻辑删除,0未删除,1删除
*/
private Integer deleteFlag;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人
*/
private String creatorId;
/**
* 创建人名称
*/
private String creatorName;
/**
* 到期时间
*/
private Date expireTime;
/**
* 微信预支付交易id
*/
private String prepayId;
/**
* 微信支付id
*/
private String wxOrderId;
/**
* 微信url
*/
private String wxUrl;
}
package com.gic.haoban.manage.service.entity.licence;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class TabHaobanLicenceOrderProgress implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
private Long id;
/**
* gic商户Id
*/
private String enterpriseId;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 订单id
*/
private Long orderId;
/**
* 订单状态
*/
private String orderStatus;
/**
* 标记字段 1好办后台
*/
private Integer type;
/**
* 上传凭证url
*/
private String voucher;
/**
* 原因
*/
private String reason;
/**
* 逻辑删除,0未删除,1删除
*/
private Integer deleteFlag;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人名称
*/
private String creatorName;
}
...@@ -9,6 +9,7 @@ public enum HaoBanErrCode { ...@@ -9,6 +9,7 @@ public enum HaoBanErrCode {
ERR_10012("10012","企业微信不存在"), ERR_10012("10012","企业微信不存在"),
ERR_OTHER("9999","业务异常"), ERR_OTHER("9999","业务异常"),
ERR_100033("100033", "活码分组已经被关联,不可删除"), ERR_100033("100033", "活码分组已经被关联,不可删除"),
ERR_100034("100034", "无法删除该分组"),
ERR_2000("2000", "企微接口调用次数限制-月"), ERR_2000("2000", "企微接口调用次数限制-月"),
ERR_2001("2001", "企微接口调用次数限制-天"), ERR_2001("2001", "企微接口调用次数限制-天"),
ERR_2002("2002", "企微接口调用次数限制-小时"), ERR_2002("2002", "企微接口调用次数限制-小时"),
......
package com.gic.haoban.manage.service.service.licence;
import com.gic.haoban.manage.service.entity.licence.TabHaobanLicenceOrderProgress;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author jx
* @since 2023-03-09
*/
public interface LicenceOrderProgressService {
Integer insert(TabHaobanLicenceOrderProgress tabHaobanLicenceOrderProgress);
List<TabHaobanLicenceOrderProgress> getListByOrderId(Long orderId,Integer type);
Integer deleteByOrderId(Long orderId);
}
package com.gic.haoban.manage.service.service.licence;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.licence.LicenceOrderPageDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.LicenceOrderPageQDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.LicenceOrderQDTO;
import com.gic.haoban.manage.service.entity.licence.TabHaobanLicenceOrder;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* <p>
* 企业微信许可账号购买
* </p>
*
* @author jx
* @since 2023-03-09
*/
public interface LicenceOrderService {
/**
* 查询企业微信订单详情
*
* @param orderId 订单id
* @return
*/
TabHaobanLicenceOrder getLicenceOrderDetail(Long orderId);
/**
* 删除订单
*
* @param orderId 订单id
* @return
*/
Integer deleteLicenceOrder(Long orderId);
/**
* 新增或者修改订单
*
* @param licenceOrderQDTO
* @return orderId
*/
String saveOrUpdateLicenceOrder(LicenceOrderQDTO licenceOrderQDTO);
/**
* 更新订单状态
*
* @param orderId 订单id
* @param type 订单状态
* @param wxFlag 1微信订单状态 0 企业微信订单状态
* @return
*/
Boolean updateLicenceOrderType(Long orderId, Integer type, String enterpriseId, String wxEnterpriseId, String creatorName, Integer wxFlag);
/**
* 上次订单支付凭证
*
* @param orderId 订单id
* @param voucher 凭证url
* @return
*/
Boolean uploadLicenceOrderVoucher(Long orderId, String voucher, String enterpriseId, String wxEnterpriseId, String creatorName);
/**
* 查询企业是否存在订单未支付接口
*
* @param wxEnterpriseId 企业微信id
* @return
*/
String isPayLicenceOrder(String wxEnterpriseId);
/**
* 分页查询订单列表
*
* @param licenceOrderPageQDTO
* @return
*/
Page<LicenceOrderPageDTO> getLicenceOrderPage(LicenceOrderPageQDTO licenceOrderPageQDTO);
/**
* 保存微信交易信息
*
* @param orderId 订单id
* @param transactionCode 订单编号
* @param prepayId 微信预支付id
* @param wxOrderId 微信支付id
* @return
*/
Integer saveTransactionCode(Long orderId, String transactionCode, String prepayId, String wxOrderId, Date payTime,String wxUrl);
/**
* 查询微信订单详情
*
* @param transactionId 订单编号
* @return
*/
TabHaobanLicenceOrder selectByTransactionId(String transactionId);
/**
* 查询订单详情
* @param qywxOrderId 企业微信订单id
* @return
*/
TabHaobanLicenceOrder selectByQywxOrderId(String qywxOrderId);
/**
* 保存企业微信订单id
*
* @param orderId
* @param qywxOrderId
* @return
*/
Integer saveQywxOrderId(Long orderId, String qywxOrderId);
/**
* 查询订单编号id
* @param param 查询参数
* @param type 0 微信订单编号 1 企业微信订单编号
* @param wxEnterpriseId
* @return
*/
List<String> getOrderIdList(String param, Integer type, String wxEnterpriseId);
/**
* 审核订单
* @param orderId 订单id
* @param flag 是否通过 0 否 1是
* @param reason 不通过原因
* @return
*/
Boolean checkLicenceOrder(Long orderId,Integer flag,String reason,String creatorName);
/**
* 记录回调时间
* @param orderId 订单id
* @param type 0 微信支付时间 1 微信退款时间 2 企业微信支付时间 3企业微信退款时间
* @param time
* @return
*/
Boolean saveCallBackTime(Long orderId,Integer type,Date time);
}
package com.gic.haoban.manage.service.service.licence.impl;
import com.gic.haoban.manage.service.dao.mapper.licence.TabHaobanLicenceOrderProgressMapper;
import com.gic.haoban.manage.service.entity.licence.TabHaobanLicenceOrderProgress;
import com.gic.haoban.manage.service.service.licence.LicenceOrderProgressService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @description:
* @Author: wenhua
* @Date: 2023/3/9 17:02
*/
@Service
public class LicenceOrderProgressServiceImpl implements LicenceOrderProgressService {
@Autowired
private TabHaobanLicenceOrderProgressMapper tabHaobanLicenceOrderProgressMapper;
@Override
public Integer insert(TabHaobanLicenceOrderProgress tabHaobanLicenceOrderProgress) {
Integer insert = tabHaobanLicenceOrderProgressMapper.insert(tabHaobanLicenceOrderProgress);
return insert;
}
@Override
public List<TabHaobanLicenceOrderProgress> getListByOrderId(Long orderId,Integer type) {
List<TabHaobanLicenceOrderProgress> list = tabHaobanLicenceOrderProgressMapper.getListByOrderId(orderId,type);
return list;
}
@Override
public Integer deleteByOrderId(Long orderId) {
return tabHaobanLicenceOrderProgressMapper.deleteByOrderId(orderId);
}
}
...@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.service.out.impl; ...@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.service.out.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Constant; import com.gic.api.base.commons.Constant;
...@@ -9,6 +10,7 @@ import com.gic.api.base.commons.Page; ...@@ -9,6 +10,7 @@ import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.ClerkDTO; import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService; import com.gic.clerk.api.service.ClerkService;
import com.gic.clerk.api.service.PowerService; import com.gic.clerk.api.service.PowerService;
import com.gic.commons.util.DateUtil;
import com.gic.commons.util.EntityUtil; import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.ImageUtil; import com.gic.commons.util.ImageUtil;
import com.gic.enterprise.api.dto.EnterpriseSettingDTO; import com.gic.enterprise.api.dto.EnterpriseSettingDTO;
...@@ -31,11 +33,9 @@ import com.gic.haoban.manage.api.service.StaffApiService; ...@@ -31,11 +33,9 @@ import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.service.config.Config; import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.dao.mapper.StaffDepartmentRelatedMapper; import com.gic.haoban.manage.service.dao.mapper.StaffDepartmentRelatedMapper;
import com.gic.haoban.manage.service.dao.mapper.StaffMapper; import com.gic.haoban.manage.service.dao.mapper.StaffMapper;
import com.gic.haoban.manage.service.entity.TabHaobanDepartment; import com.gic.haoban.manage.service.entity.*;
import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.TabHaobanStaffDepartmentRelated;
import com.gic.haoban.manage.service.entity.TabHaobanSyncErrorLog;
import com.gic.haoban.manage.service.service.*; import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.service.chat.GroupChatService;
import com.gic.haoban.manage.service.util.EmojiFilterUtil; import com.gic.haoban.manage.service.util.EmojiFilterUtil;
import com.gic.redis.data.util.RedisUtil; import com.gic.redis.data.util.RedisUtil;
import com.gic.thirdparty.cloudfile.CloudFileUtil; import com.gic.thirdparty.cloudfile.CloudFileUtil;
...@@ -56,6 +56,7 @@ import org.slf4j.LoggerFactory; ...@@ -56,6 +56,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -104,6 +105,8 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -104,6 +105,8 @@ public class StaffApiServiceImpl implements StaffApiService {
private Config config; private Config config;
@Autowired @Autowired
private QywxOrderApiService qywxOrderApiService; private QywxOrderApiService qywxOrderApiService;
@Autowired
private GroupChatService groupChatService;
@Override @Override
public StaffDTO selectById(String staffId) { public StaffDTO selectById(String staffId) {
...@@ -139,6 +142,9 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -139,6 +142,9 @@ public class StaffApiServiceImpl implements StaffApiService {
List<String> staffIds = new ArrayList<>(); List<String> staffIds = new ArrayList<>();
if (relationFlag != null) { if (relationFlag != null) {
staffIds = staffClerkRelationService.listByWxEnterpriseId(wxEnterpriseId); staffIds = staffClerkRelationService.listByWxEnterpriseId(wxEnterpriseId);
if (CollectionUtils.isEmpty(staffIds) && relationFlag == 1){
return new Page<>();
}
} }
PageHelper.startPage(pageInfo.getPageNum(), pageInfo.getPageSize()); PageHelper.startPage(pageInfo.getPageNum(), pageInfo.getPageSize());
Page<StaffDTO> page = PageUtil.changePageHelperToCurrentPage(staffService.pageStaff(staffIds, activeFlag, keyword, departmentIds, wxEnterpriseId, relationFlag,permitState,occupy), StaffDTO.class); Page<StaffDTO> page = PageUtil.changePageHelperToCurrentPage(staffService.pageStaff(staffIds, activeFlag, keyword, departmentIds, wxEnterpriseId, relationFlag,permitState,occupy), StaffDTO.class);
...@@ -993,6 +999,8 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -993,6 +999,8 @@ public class StaffApiServiceImpl implements StaffApiService {
successMap.put("takeoverStaffName",takeOverStaff.getStaffName()); successMap.put("takeoverStaffName",takeOverStaff.getStaffName());
successMap.put("takeoverStaffPhone",takeOverStaff.getPhoneNumber()); successMap.put("takeoverStaffPhone",takeOverStaff.getPhoneNumber());
successList.add(successMap); successList.add(successMap);
//更新成员群列表 todo
groupChatService.initStaffGroupChat(takeOverStaff.getStaffId());
}else{ }else{
//企微转移失败,记录失败明细 //企微转移失败,记录失败明细
...@@ -1028,4 +1036,47 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -1028,4 +1036,47 @@ public class StaffApiServiceImpl implements StaffApiService {
result.setFailedList(failedList); result.setFailedList(failedList);
return com.gic.api.base.commons.ServiceResponse.failure(listServiceResponse.getCode(),listServiceResponse.getMessage(),result); return com.gic.api.base.commons.ServiceResponse.failure(listServiceResponse.getCode(),listServiceResponse.getMessage(),result);
} }
@Override
public com.gic.api.base.commons.ServiceResponse<Boolean> autoActivateCallBack(String params) {
logger.info("接收企业微信自动激活回调通知:{}",JSON.toJSONString(params));
if (StrUtil.isBlank(params)) {
return com.gic.api.base.commons.ServiceResponse.success(false);
}
//1、解析参数 2、刷新企业微信群列表 3、更新成员信息
JSONObject object = JSONObject.parseObject(params, JSONObject.class);
String infoType = object.getString("infoType");
String authCorpId = object.getString("authCorpId");
String timeStamp = object.getString("timeStamp");
Object accountList = object.get("accountList");
JSONObject obj = JSONObject.parseObject(JSON.toJSONString(accountList), JSONObject.class);
String activeCode = obj.getString("ActiveCode");
String expireTime = obj.getString("ExpireTime");
String userId = obj.getString("UserId");
//将秒级时间戳转换位Date类型
SimpleDateFormat formatter = new SimpleDateFormat(DateUtil.FORMAT_DATETIME_19);
String date_time = formatter.format(new Date(Long.valueOf(timeStamp) * 1000L));
Date timeStampDate = DateUtil.strToDate(date_time, DateUtil.FORMAT_DATETIME_19);
String date_time1 = formatter.format(new Date(Long.valueOf(expireTime) * 1000L));
Date expireTimeDate = DateUtil.strToDate(date_time1, DateUtil.FORMAT_DATETIME_19);
if ("auto_activate".equals(infoType)){
// 成员许可自动激活回调通知
TabHaobanWxEnterprise wxEnterprise = this.wxEnterpriseService.getEnterpriseBycorpId(authCorpId);
if (wxEnterprise==null){
logger.info("微信企业id—>{}不存在",authCorpId);
return com.gic.api.base.commons.ServiceResponse.failure("-9999","微信企业id不存在!");
}
TabHaobanStaff staff = staffService.selectByUserIdAndEnterpriseId(userId, wxEnterprise.getWxEnterpriseId());
if (null == staff){
logger.info("成员userid—>{}不存在",userId);
return com.gic.api.base.commons.ServiceResponse.failure("-9999","成员userid不存在!");
}
String staffId = staff.getStaffId();
groupChatService.initStaffGroupChat(staffId);
staffMapper.updateActiveStatusById(staffId,timeStampDate,expireTimeDate,activeCode);
}
return com.gic.api.base.commons.ServiceResponse.success(true);
}
} }
...@@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -181,6 +182,13 @@ public class HmGroupApiServiceImpl implements HmGroupApiService { ...@@ -181,6 +182,13 @@ public class HmGroupApiServiceImpl implements HmGroupApiService {
if (groupSettingBo.getReferNum() != null && groupSettingBo.getReferNum() > 0) { if (groupSettingBo.getReferNum() != null && groupSettingBo.getReferNum() > 0) {
return ServiceResponse.failure(HaoBanErrCode.ERR_100033.getCode(), HaoBanErrCode.ERR_100033.getMsg()); return ServiceResponse.failure(HaoBanErrCode.ERR_100033.getCode(), HaoBanErrCode.ERR_100033.getMsg());
} }
List<HmQrcodeGroupNumBO> qrcodeGroupNumBoList = qrcodeService.getGroupIdNumByEnterpriseId(groupSettingBo.getWxEnterpriseId(), groupSettingBo.getEnterpriseId(), Arrays.asList(groupDTO.getGroupId()), null);
if (CollectionUtils.isNotEmpty(qrcodeGroupNumBoList)) {
if(qrcodeGroupNumBoList.get(0).getNum() > 0) {
return ServiceResponse.failure(HaoBanErrCode.ERR_100034.getCode(), HaoBanErrCode.ERR_100034.getMsg());
}
}
groupService.deleteGroupSetting(groupDTO); groupService.deleteGroupSetting(groupDTO);
return ServiceResponse.success(Boolean.TRUE); return ServiceResponse.success(Boolean.TRUE);
} }
......
...@@ -132,10 +132,12 @@ ...@@ -132,10 +132,12 @@
timeout="10000"/> timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.ValidationCodeApiService" ref="validationCodeApiServiceImpl"/> <dubbo:service interface="com.gic.haoban.manage.api.service.ValidationCodeApiService" ref="validationCodeApiServiceImpl"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.licence.LicenceOrderApiService" ref="licenceOrderApiServiceImpl"/>
<dubbo:reference interface="com.gic.enterprise.api.service.EnterpriseUseForbidService" id="enterpriseUseForbidService"/> <dubbo:reference interface="com.gic.enterprise.api.service.EnterpriseUseForbidService" id="enterpriseUseForbidService"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.role.HaobanMenuApiService" ref="haobanMenuApiServiceImpl"/> <dubbo:service interface="com.gic.haoban.manage.api.service.role.HaobanMenuApiService" ref="haobanMenuApiServiceImpl"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.role.HaobanRoleApiService" ref="haobanRoleApiServiceImpl"/> <dubbo:service interface="com.gic.haoban.manage.api.service.role.HaobanRoleApiService" ref="haobanRoleApiServiceImpl"/>
<dubbo:reference interface="com.gic.enterprise.api.service.DepartmentService" id="gicDepartmentService"/> <dubbo:reference interface="com.gic.enterprise.api.service.DepartmentService" id="gicDepartmentService"/>
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxDepartmentApiService" <dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxDepartmentApiService"
id="qywxDepartmentApiService"/> id="qywxDepartmentApiService"/>
...@@ -203,5 +205,6 @@ ...@@ -203,5 +205,6 @@
<dubbo:reference interface="com.gic.member.tag.api.service.MemberTagGroupApiService" id="memberTagGroupApiService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.member.tag.api.service.MemberTagGroupApiService" id="memberTagGroupApiService" timeout="10000" retries="0"/>
<dubbo:reference interface="com.gic.enterprise.api.service.ScreeningDetailService" id="screeningDetailService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.enterprise.api.service.ScreeningDetailService" id="screeningDetailService" timeout="10000" retries="0"/>
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxOrderApiService" id="qywxOrderApiService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxOrderApiService" id="qywxOrderApiService" timeout="10000" retries="0"/>
<dubbo:reference id="pay4WXService" interface="com.gic.thirdparty.api.service.Pay4WXService" timeout="10000" retries="0" check="false"/>
</beans> </beans>
\ No newline at end of file
<?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.gic.haoban.manage.service.dao.mapper.licence.TabHaobanLicenceOrderProgressMapper">
<resultMap type="com.gic.haoban.manage.service.entity.licence.TabHaobanLicenceOrderProgress" id="BaseResultMap">
<result column="id" property="id"/>
<result column="enterprise_id" property="enterpriseId"/>
<result column="wx_enterprise_id" property="wxEnterpriseId"/>
<result column="order_id" property="orderId"/>
<result column="order_status" property="orderStatus"/>
<result column="type" property="type"/>
<result column="voucher" property="voucher"/>
<result column="reason" property="reason"/>
<result column="delete_flag" property="deleteFlag"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="creator_name" property="creatorName"/>
</resultMap>
<sql id="Base_Column_List">
id,
enterprise_id,
wx_enterprise_id,
order_id,
order_status,
type,
voucher,
reason,
delete_flag,
create_time,
update_time,
creator_name
</sql>
<!-- ===================== 新增 ======================== -->
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.licence.TabHaobanLicenceOrderProgress"
useGeneratedKeys="true" keyProperty="id">
INSERT INTO tab_haoban_licence_order_progress(id,
enterprise_id,
wx_enterprise_id,
order_id,
order_status,
type,
voucher,
reason,
delete_flag,
create_time,
update_time,
creator_name)
VALUES (#{id,jdbcType=BIGINT},
#{enterpriseId,jdbcType=VARCHAR},
#{wxEnterpriseId,jdbcType=VARCHAR},
#{orderId,jdbcType=BIGINT},
#{orderStatus,jdbcType=VARCHAR},
#{type,jdbcType=INTEGER},
#{voucher,jdbcType=VARCHAR},
#{reason,jdbcType=VARCHAR},
0,
now(),
now(),
#{creatorName,jdbcType=VARCHAR})
</insert>
<!-- =====================删除==================== -->
<update id="deleteByPrimaryKey" parameterType="long">
UPDATE tab_haoban_licence_order_progress
SET delete_flag = 1
WHERE id = #{id}
</update>
<!-- ==================更新 ========== -->
<update id="updateByPrimaryKey"
parameterType="com.gic.haoban.manage.service.entity.licence.TabHaobanLicenceOrderProgress">
UPDATE tab_haoban_licence_order_progress
SET id=#{id,jdbcType=BIGINT},
enterprise_id=#{enterpriseId,jdbcType=VARCHAR},
wx_enterprise_id=#{wxEnterpriseId,jdbcType=VARCHAR},
order_id=#{orderId,jdbcType=BIGINT},
order_status=#{orderStatus,jdbcType=VARCHAR},
type=#{type,jdbcType=INTEGER},
voucher=#{voucher,jdbcType=VARCHAR},
reason=#{reason,jdbcType=VARCHAR},
delete_flag=#{deleteFlag,jdbcType=INTEGER},
create_time=#{createTime,jdbcType=TIMESTAMP},
update_time=#{updateTime,jdbcType=TIMESTAMP},
creator_name=#{creatorName,jdbcType=VARCHAR}
where id = #{id}
</update>
<!-- ============ 查询=============-->
<select id="selectById" parameterType="long" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM tab_haoban_licence_order_progress WHERE id = #{id} and delete_flag=0
</select>
<select id="getListByOrderId" parameterType="long" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM tab_haoban_licence_order_progress WHERE order_id = #{orderId}
<if test="type != null">
and type=#{type}
</if>
and delete_flag=0 order by create_time desc
</select>
<update id="deleteByOrderId" parameterType="long">
UPDATE tab_haoban_licence_order_progress
SET delete_flag = 1
WHERE order_id = #{orderId}
</update>
<update id="uploadLicenceOrderVoucher" >
UPDATE tab_haoban_licence_order_progress
SET voucher = #{voucher}
WHERE order_id = #{orderId} and delete_flag = 0
</update>
</mapper>
\ No newline at end of file
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.licence.LicenceOrderDTO;
import com.gic.haoban.manage.api.dto.licence.LicenceOrderPageDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.LicenceOrderPageQDTO;
import com.gic.haoban.manage.api.service.licence.LicenceOrderApiService;
import com.gic.haoban.manage.service.entity.licence.TabHaobanLicenceOrder;
import com.gic.haoban.manage.service.service.licence.LicenceOrderService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @description:
* @Author: wenhua
* @Date: 2023/3/22 11:37
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext-conf.xml" })
public class LicenceOrderServiceTest {
@Autowired
private LicenceOrderService licenceOrderService;
@Autowired
private LicenceOrderApiService licenceOrderApiService;
@Test
public void test1(){
Boolean qweqwe = licenceOrderService.uploadLicenceOrderVoucher(1L, "qweqwe","111","111","jx");
}
@Test
public void test2(){
LicenceOrderPageQDTO qdto = new LicenceOrderPageQDTO();
Page<LicenceOrderPageDTO> licenceOrderPage = licenceOrderService.getLicenceOrderPage(qdto);
}
@Test
public void test3(){
ServiceResponse<LicenceOrderDTO> licenceOrderDetail = licenceOrderApiService.getLicenceOrderDetail(1L, null);
}
@Test
public void test4(){
ServiceResponse<String> result = licenceOrderApiService.payLicenceOrder(512360219787935783L);
}
@Test
public void test5(){
ServiceResponse<Boolean> booleanServiceResponse = licenceOrderApiService.wxRefund(513736803677659139L);
}
@Test
public void test6(){
JSONObject json = new JSONObject();
json.put("infoType","license_refund");
json.put("openCorpId","wp59NLDQAAWfAU-uhldYZyNZnPXz_1xg");
json.put("orderId","OI00000D4BD3E76423DDEB15475B1T");
json.put("timeStamp","1680072171");
json.put("orderStatus",1);
json.put("buyerUserId","WangJianFeng");
licenceOrderApiService.qywxCallBack(JSON.toJSONString(json));
}
}
...@@ -19,6 +19,40 @@ public class Config { ...@@ -19,6 +19,40 @@ public class Config {
@Value("${wxSuiteid}") @Value("${wxSuiteid}")
private String wxSuiteid; private String wxSuiteid;
/**
* 企业微信许可账号购买信息
*/
@Value("${accountName}")
private String accountName;
@Value("${accountNumber}")
private String accountNumber;
@Value("${bankName}")
private String bankName;
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
public String getAccountNumber() {
return accountNumber;
}
public void setAccountNumber(String accountNumber) {
this.accountNumber = accountNumber;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public String getCorpid() { public String getCorpid() {
return corpid; return corpid;
} }
......
...@@ -6,6 +6,8 @@ import com.gic.clerk.api.dto.AuthorizedUser; ...@@ -6,6 +6,8 @@ import com.gic.clerk.api.dto.AuthorizedUser;
import com.gic.commons.util.DateUtil; import com.gic.commons.util.DateUtil;
import com.gic.enterprise.api.dto.EnterpriseDTO; import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService; import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.common.utils.HaobanResponse; import com.gic.haoban.common.utils.HaobanResponse;
import com.gic.haoban.common.utils.UploadUtils; import com.gic.haoban.common.utils.UploadUtils;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode; import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
...@@ -48,12 +50,15 @@ public class UploadController extends WebBaseController { ...@@ -48,12 +50,15 @@ public class UploadController extends WebBaseController {
@RequestMapping("/upload-file") @RequestMapping("/upload-file")
@ResponseBody @ResponseBody
public HaobanResponse upload(@RequestParam MultipartFile file, @RequestParam String fileType) throws Exception { public HaobanResponse upload(@RequestParam MultipartFile file) throws Exception {
if (file == null || file.isEmpty()) { if (file == null || file.isEmpty()) {
return resultResponse(HaoBanErrCode.ERR_2); return resultResponse(HaoBanErrCode.ERR_2);
} }
//获取登录人信息 //获取登录人信息
final AuthorizedUser au = SessionContextUtils.getLoginUser(); WebLoginDTO au = AuthWebRequestUtil.getLoginUser();
if(null == au){
return resultResponse(HaoBanErrCode.ERR_4);
}
EnterpriseDTO enterprise = this.enterpriseService.getEnterpriseById(au.getEnterpriseId()); EnterpriseDTO enterprise = this.enterpriseService.getEnterpriseById(au.getEnterpriseId());
if (null == enterprise) { if (null == enterprise) {
return resultResponse(HaoBanErrCode.ERR_OTHER, "商户不存在"); return resultResponse(HaoBanErrCode.ERR_OTHER, "商户不存在");
...@@ -77,7 +82,6 @@ public class UploadController extends WebBaseController { ...@@ -77,7 +82,6 @@ public class UploadController extends WebBaseController {
String dayFilePath = LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateUtil.FORMAT_DATETIME_14)); String dayFilePath = LocalDateTime.now().format(DateTimeFormatter.ofPattern(DateUtil.FORMAT_DATETIME_14));
String nameUpload = mediaName + "." + suffix; String nameUpload = mediaName + "." + suffix;
String key = "haoban/" + dayFilePath + "/" + nameUpload; String key = "haoban/" + dayFilePath + "/" + nameUpload;
fileType = FILE_TYPE.contains(fileType) ? fileType : BucketNameEnum.OTHER_90000.getName();
try { try {
//替换新的上传接口 //替换新的上传接口
// String url = FileUploadUtil.simpleUploadFileFromLocal(templateFile, key, fileType); // String url = FileUploadUtil.simpleUploadFileFromLocal(templateFile, key, fileType);
......
...@@ -131,6 +131,7 @@ public enum HaoBanErrCode { ...@@ -131,6 +131,7 @@ public enum HaoBanErrCode {
* *
*/ */
ERR_100033(100033, "分组被关联,不可删除"), ERR_100033(100033, "分组被关联,不可删除"),
ERR_100034(100034, "微信预支付订单生成失败!"),
; ;
private int code; private int code;
private String msg; private String msg;
......
package com.gic.haoban.manage.web.qo.licence;
import com.gic.api.base.commons.BasePageInfo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class LicenceOrderPageQO extends BasePageInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单编号
*/
private String orderNumber;
/**
* 订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:已退款,5:审核中
*/
private Integer orderStatus;
/**
* 企业微信订单id
*/
private String qywxOrderId;
/**
* 企业微信订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:退款中,5:退款被拒绝,6:已退款,7已失效
*/
private Integer qywxOrderStatus;
/**
* 订单创建开始时间
*/
private String startTime;
/**
* 订单创建结束时间
*/
private String endTime;
}
package com.gic.haoban.manage.web.qo.licence;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class LicenceOrderQO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
/**
* 互通帐号个数
*/
private Integer externalContactCount;
// /**
// * 基础帐号个数
// */
// private Integer baseCount;
/**
* 订单金额,单位分
*/
private Integer price;
/**
* 购买时间类型 1:按月购买,2:按天购买
*/
private Integer timeType;
/**
* 购买的时间数值
*/
private Integer timeValue;
/**
* 支付类型 1在线支付 2对公转账
*/
private Integer payType;
/**
* 校验金额
*/
public Integer checkPrice(){
if (this.externalContactCount ==null || this.externalContactCount<0){
return -1;
}
Integer myPrice=0;
//根据企业微信的计费规则计算
if (this.externalContactCount<=5){
myPrice = 50*this.externalContactCount;
} else if (this.externalContactCount<=200) {
myPrice = 250+40*(this.externalContactCount-5);
} else if (this.externalContactCount<=500) {
myPrice = 8050+30*(this.externalContactCount-200);
} else if (this.externalContactCount<=1000) {
myPrice = 17050+20*(this.externalContactCount-500);
} else if (this.externalContactCount<=10000) {
myPrice = 27050+10*(this.externalContactCount-1000);
}else {
return -1;
}
//转化为分
myPrice = myPrice*this.timeValue*100;
if (this.timeType == 1){
//企业微信的规则: 12.312,最终保留的是12.32
if (myPrice%12==0){
myPrice = myPrice/12;
}else {
myPrice = myPrice/12+1;
}
}else {
if (myPrice%372==0){
myPrice = myPrice/372;
}else {
myPrice = myPrice/372+1;
}
}
if (!this.price .equals(myPrice)){
return 0;
}
return 1;
}
}
package com.gic.haoban.manage.web.vo.licence;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class LicenceOrderPageVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
private Long orderId;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
/**
* 互通帐号个数
*/
private Integer externalContactCount;
/**
* 基础帐号个数
*/
private Integer baseCount;
/**
* 订单金额,单位分
*/
private Integer price;
/**
* 购买时间类型 1:按月购买,2:按天购买
*/
private Integer timeType;
/**
* 购买的时间数值
*/
private Integer timeValue;
/**
* 支付类型 1在线支付 2对公转账
*/
private Integer payType;
/**
* 订单编号
*/
private String orderNumber;
/**
* 订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:已退款,5:审核中
*/
private Integer orderStatus;
/**
* 订单状态更改原因
*/
private String orderStatusReason;
/**
* 支付时间 支付类型为1:微信支付时间 2:审核确认通过的时间
*/
private Date payTime;
/**
* 企业微信订单id
*/
private String qywxOrderId;
/**
* 企业微信订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:退款中,5:退款被拒绝,6:已退款,7已失效
*/
private Integer qywxOrderStatus;
/**
* 企业微信订单更改原因
*/
private String qywxOrderStatusReason;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String creatorId;
/**
* 创建人名称
*/
private String creatorName;
/**
* 企业微信支付时间
*/
private Date qywxPayTime;
}
package com.gic.haoban.manage.web.vo.licence;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class LicenceOrderProgressVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
private Long id;
/**
* 订单状态
*/
private String orderStatus;
/**
* 标记字段 1好办后台
*/
private Integer type;
/**
* 上传凭证url
*/
private String voucher;
/**
* 原因
*/
private String reason;
/**
* 创建时间
*/
private Date createTime;
}
package com.gic.haoban.manage.web.vo.licence;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author jx
* @since 2023-03-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class LicenceOrderVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
private Long orderId;
/**
* gic商户Id
*/
private String enterpriseId;
/**
* gic品牌名称
*/
private String enterpriseName;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 微信商户名称
*/
private String wxEnterpriseName;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
/**
* 互通帐号个数
*/
private Integer externalContactCount;
/**
* 基础帐号个数
*/
private Integer baseCount;
/**
* 订单金额,单位分
*/
private Integer price;
/**
* 购买时间类型 1:按月购买,2:按天购买
*/
private Integer timeType;
/**
* 购买的时间数值
*/
private Integer timeValue;
/**
* 支付类型 1在线支付 2对公转账
*/
private Integer payType;
/**
* 订单编号
*/
private String orderNumber;
/**
* 上传凭证url
*/
private String voucher;
/**
* 订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:已退款,5:审核中
*/
private Integer orderStatus;
/**
* 订单状态更改原因
*/
private String orderStatusReason;
/**
* 支付时间 支付类型为1:微信支付时间 2:上传凭证时间
*/
private Date payTime;
/**
* 退款时间
*/
private Date refundTime;
/**
* 企业微信订单id
*/
private String qywxOrderId;
/**
* 企业微信订单状态,0:待支付,1:已支付,2:已取消,3:已过期,4:退款中,5:退款被拒绝,6:已退款,7已失效
*/
private Integer qywxOrderStatus;
/**
* 企业微信订单更改原因
*/
private String qywxOrderStatusReason;
/**
* 企业微信支付时间
*/
private Date qywxPayTime;
/**
* 企业微信退款时间
*/
private Date qywxRefundTime;
/**
* 审核不通过原因
*/
private String reason;
/**
* 创建时间
*/
private Date createTime;
/**
* 到期时间
*/
private Date expireTime;
/**
* 当前时间
*/
private Date nowTime;
/**
* 订单进度list
*/
private List<LicenceOrderProgressVO> OrderProgressList;
}
...@@ -132,5 +132,7 @@ ...@@ -132,5 +132,7 @@
<dubbo:reference interface="com.gic.member.api.service.MemberService" id="memberService"/> <dubbo:reference interface="com.gic.member.api.service.MemberService" id="memberService"/>
<dubbo:reference interface="com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService" id="esApiService"/> <dubbo:reference interface="com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService" id="esApiService"/>
<dubbo:reference interface="com.gic.marketing.api.service.MemberTagMarketingApiService" id="memberTagMarketingApiService"/> <dubbo:reference interface="com.gic.marketing.api.service.MemberTagMarketingApiService" id="memberTagMarketingApiService"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.licence.LicenceOrderApiService" id="licenceOrderApiService"/>
<dubbo:reference id="pay4WXService" interface="com.gic.thirdparty.api.service.Pay4WXService" timeout="10000" retries="0" check="false"/>
</beans> </beans>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment