Commit d6cd0306 by jinxin

Merge remote-tracking branch 'origin/feature/六月需求'

# Conflicts:
#	haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/TabHaobanExternalClerkRelatedMapper.java
#	haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/ExternalClerkRelatedApiServiceImpl.java
parents 0d7aa17a 787e306b
...@@ -50,6 +50,18 @@ public class StaffActiveDataDTO implements Serializable { ...@@ -50,6 +50,18 @@ public class StaffActiveDataDTO implements Serializable {
* 已合并许可总数 * 已合并许可总数
*/ */
private Integer merged; private Integer merged;
/**
* 即将过期的许可总数
*/
private Integer expiring;
public Integer getExpiring() {
return expiring;
}
public void setExpiring(Integer expiring) {
this.expiring = expiring;
}
public Integer getMerged() { public Integer getMerged() {
return merged; return merged;
......
...@@ -60,6 +60,30 @@ public class StaffListDTO implements Serializable { ...@@ -60,6 +60,30 @@ public class StaffListDTO implements Serializable {
* 部门id数组 * 部门id数组
*/ */
private List<String> departmentIds; private List<String> departmentIds;
/**
* 许可到期时间区间查询
*/
private String startTime;
/**
* 许可到期时间区间查询
*/
private String endTime;
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;
}
public List<String> getDepartmentIds() { public List<String> getDepartmentIds() {
return departmentIds; return departmentIds;
......
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 AppOrderCheckDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 弹窗类型 0 正常 1新购 2 续期
*/
private Integer type;
/**
* 已购买人数
*/
private Integer userNum;
/**
* 购买生效期的开始时间
*/
private Date beginTime;
/**
* 购买生效期的结束时间
*/
private Date endTime;
/**
* 合同到期天数
*/
private Integer contractDay;
/**
* 当前时间
*/
private Date now;
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public Integer getUserNum() {
return userNum;
}
public void setUserNum(Integer userNum) {
this.userNum = userNum;
}
public Date getBeginTime() {
return beginTime;
}
public void setBeginTime(Date beginTime) {
this.beginTime = beginTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public Integer getContractDay() {
return contractDay;
}
public void setContractDay(Integer contractDay) {
this.contractDay = contractDay;
}
public Date getNow() {
return now;
}
public void setNow(Date now) {
this.now = now;
}
}
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 AppOrderNoticeDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 弹窗类型 0 无需弹窗 1 未购买付费应用弹窗 2付费应用已过期弹窗 3 查询购买许可账号是否存在未支付订单
*/
private Integer type;
/**
* 是否支付 0否 1是
*/
private Integer payFlag;
/**
* 未支付订单id
*/
private String orderId;
/**
* 支付的url
*/
private String orderUrl;
/**
* 到期时间
*/
private Date endTime;
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public Integer getPayFlag() {
return payFlag;
}
public void setPayFlag(Integer payFlag) {
this.payFlag = payFlag;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getOrderUrl() {
return orderUrl;
}
public void setOrderUrl(String orderUrl) {
this.orderUrl = orderUrl;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
}
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 AppOrderPageDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
private Long id;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 企业微信订单id
*/
private String orderId;
/**
* 订单状态1 - 待支付2 - 已支付3 - 订单取消4 - 支付过期5 - 退款申请中6 - 已退款7 - 交易完成8 - 待企业确认9 - 已部分退款
*/
private Integer orderStatus;
/**
* 订单类型 0 新购、1 扩容、2 续期
*/
private Integer orderType;
/**
* 购买人数
*/
private Integer userNum;
/**
* 购买时长
*/
private Integer duration;
/**
* 购买生效期的开始时间
*/
private Date beginTime;
/**
* 购买生效期的结束时间
*/
private Date endTime;
/**
* 支付时间
*/
private Date payTime;
/**
* 原价,单位分
*/
private Integer originPrice;
/**
* 折后价,单位分
*/
private Integer paidPrice;
/**
* 收款订单链接
*/
private String orderUrl;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人
*/
private String creatorId;
/**
* 创建人名称
*/
private String creatorName;
/**
* 订单支付到期时间
*/
private Date expireTime;
/**
* 有效状态 0 -- 1待生效 2生效中 3已失效
*/
private Integer effectiveState;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public Integer getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(Integer orderStatus) {
this.orderStatus = orderStatus;
}
public Integer getOrderType() {
return orderType;
}
public void setOrderType(Integer orderType) {
this.orderType = orderType;
}
public Integer getUserNum() {
return userNum;
}
public void setUserNum(Integer userNum) {
this.userNum = userNum;
}
public Integer getDuration() {
return duration;
}
public void setDuration(Integer duration) {
this.duration = duration;
}
public Date getBeginTime() {
return beginTime;
}
public void setBeginTime(Date beginTime) {
this.beginTime = beginTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public Date getPayTime() {
return payTime;
}
public void setPayTime(Date payTime) {
this.payTime = payTime;
}
public Integer getOriginPrice() {
return originPrice;
}
public void setOriginPrice(Integer originPrice) {
this.originPrice = originPrice;
}
public Integer getPaidPrice() {
return paidPrice;
}
public void setPaidPrice(Integer paidPrice) {
this.paidPrice = paidPrice;
}
public String getOrderUrl() {
return orderUrl;
}
public void setOrderUrl(String orderUrl) {
this.orderUrl = orderUrl;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
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;
}
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
public Integer getEffectiveState() {
return effectiveState;
}
public void setEffectiveState(Integer effectiveState) {
this.effectiveState = effectiveState;
}
}
package com.gic.haoban.manage.api.dto.licence;
import java.io.Serializable;
/**
* @description:
* @Author: wenhua
* @Date: 2023/6/12 15:25
*/
public class InvalidUserInfoDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 微信userId
*/
private String wxUserId;
/**
* 电话
*/
private String phone;
/**
* 名称
*/
private String name;
/**
* 不合法错误码
*/
private String invalidCode;
/**
* 不合法错误描述
*/
private String invalidMsg;
public String getWxUserId() {
return wxUserId;
}
public void setWxUserId(String wxUserId) {
this.wxUserId = wxUserId;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInvalidCode() {
return invalidCode;
}
public void setInvalidCode(String invalidCode) {
this.invalidCode = invalidCode;
}
public String getInvalidMsg() {
return invalidMsg;
}
public void setInvalidMsg(String invalidMsg) {
this.invalidMsg = invalidMsg;
}
}
package com.gic.haoban.manage.api.dto.licence;
import java.io.Serializable;
/**
* @description:
* @Author: wenhua
* @Date: 2023/6/12 17:10
*/
public class RenewalUserDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long renewalId;
/**
* 电话
*/
private String phone;
/**
* 名称
*/
private String name;
/**
* 职位
*/
private String postion;
public Long getRenewalId() {
return renewalId;
}
public void setRenewalId(Long renewalId) {
this.renewalId = renewalId;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPostion() {
return postion;
}
public void setPostion(String postion) {
this.postion = postion;
}
}
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 AppOrderPageQDTO extends BasePageInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单状态1 - 待支付2 - 已支付3 - 订单取消4 - 支付过期5 - 退款申请中6 - 已退款7 - 交易完成8 - 待企业确认9 - 已部分退款
*/
private Integer orderStatus;
/**
* 企业微信订单id
*/
private String orderId;
/**
* wx企业Id
*/
private String wxEnterpriseId;
public Integer getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(Integer orderStatus) {
this.orderStatus = orderStatus;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
}
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 AppOrderQDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单类型 0 新购、1 扩容、2 续期
*/
private Integer orderType;
/**
* 购买人数
*/
private Integer userNum;
/**
* 购买时长
*/
private Integer duration;
/**
* 购买生效期的开始时间
*/
private Date beginTime;
/**
* 购买生效期的结束时间
*/
private Date endTime;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 创建人
*/
private String creatorId;
/**
* 创建人名称
*/
private String creatorName;
public Integer getOrderType() {
return orderType;
}
public void setOrderType(Integer orderType) {
this.orderType = orderType;
}
public Integer getUserNum() {
return userNum;
}
public void setUserNum(Integer userNum) {
this.userNum = userNum;
}
public Integer getDuration() {
return duration;
}
public void setDuration(Integer duration) {
this.duration = duration;
}
public Date getBeginTime() {
return beginTime;
}
public void setBeginTime(Date beginTime) {
this.beginTime = beginTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
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;
}
}
...@@ -74,6 +74,18 @@ public class LicenceOrderPageQDTO extends BasePageInfo implements Serializable ...@@ -74,6 +74,18 @@ public class LicenceOrderPageQDTO extends BasePageInfo implements Serializable
* 1 好办后台 0 运维后台 * 1 好办后台 0 运维后台
*/ */
private Integer type; private Integer type;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
public Integer getOrderType() {
return orderType;
}
public void setOrderType(Integer orderType) {
this.orderType = orderType;
}
public Integer getType() { public Integer getType() {
return type; return type;
......
...@@ -2,6 +2,7 @@ package com.gic.haoban.manage.api.dto.qdto.licence; ...@@ -2,6 +2,7 @@ package com.gic.haoban.manage.api.dto.qdto.licence;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* <p> * <p>
...@@ -51,7 +52,7 @@ public class LicenceOrderQDTO implements Serializable { ...@@ -51,7 +52,7 @@ public class LicenceOrderQDTO implements Serializable {
private Integer price; private Integer price;
/** /**
* 购买时间类型 1:按月购买,2:按天购买 * 购买时间类型 1:按月购买,2:按天购买,3:指定到期时间(仅续期订单有此类型)
*/ */
private Integer timeType; private Integer timeType;
...@@ -105,6 +106,18 @@ public class LicenceOrderQDTO implements Serializable { ...@@ -105,6 +106,18 @@ public class LicenceOrderQDTO implements Serializable {
* 企业微信订单id * 企业微信订单id
*/ */
private String qywxOrderId; private String qywxOrderId;
/**
* 续期成员staffIdList
*/
private List<String> staffIdList;
public List<String> getStaffIdList() {
return staffIdList;
}
public void setStaffIdList(List<String> staffIdList) {
this.staffIdList = staffIdList;
}
public String getQywxOrderId() { public String getQywxOrderId() {
return qywxOrderId; return qywxOrderId;
......
package com.gic.haoban.manage.api.dto.qdto.licence;
import com.gic.api.base.commons.BasePageInfo;
import java.io.Serializable;
/**
* @description:
* @Author: wenhua
* @Date: 2023/6/12 17:08
*/
public class RenewalUserQDTO extends BasePageInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 员工姓名或手机号查询
*/
private String searchParam;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 订单id
*/
private Long orderId;
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public String getSearchParam() {
return searchParam;
}
public void setSearchParam(String searchParam) {
this.searchParam = searchParam;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
}
...@@ -146,6 +146,8 @@ public interface ExternalClerkRelatedApiService { ...@@ -146,6 +146,8 @@ public interface ExternalClerkRelatedApiService {
*/ */
List<String> listStoreIdByMemberId(String memberId); List<String> listStoreIdByMemberId(String memberId);
List<String> listStoreIdByMemberId(String memberId , Date endTime);
/** /**
* 获取该企业会员下的关联关系列表 * 获取该企业会员下的关联关系列表
* *
......
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.AppOrderCheckDTO;
import com.gic.haoban.manage.api.dto.licence.AppOrderNoticeDTO;
import com.gic.haoban.manage.api.dto.licence.AppOrderPageDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.AppOrderPageQDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.AppOrderQDTO;
/**
* @description: 订单应用购买
* @Author: wenhua
* @Date: 2023/6/25 15:43
*/
public interface AppOrderApiService {
/**
* 分页查询企业付费应用
*
* @param qdto
* @return
*/
ServiceResponse<Page<AppOrderPageDTO>> getAppOrderPage(AppOrderPageQDTO qdto);
/**
* 新增订单
* @param qdto
* @return
*/
ServiceResponse<Boolean> saveAppOrder(AppOrderQDTO qdto);
/**
* 取消订单
* @param orderId 应用订单主键id
* @return
*/
ServiceResponse<Boolean> cancelAppOrder(Long orderId);
/**
* 购买弹窗校验
* @param wxEnterpriseId
* @return
*/
ServiceResponse<AppOrderCheckDTO> checkAppOrder(String wxEnterpriseId);
/**
* 登录好办弹窗校验
* @param wxEnterpriseId
* @return
*/
ServiceResponse<AppOrderNoticeDTO> noticeAppOrder(String wxEnterpriseId);
/**
* 企业微信通知回调
* @param param 回调参数
* @return
*/
ServiceResponse<Boolean> qywxCallBack(String param);
/**
* 定时获取好办付费应用订单列表
* @param param {"start_time" : 1542091572,"end_time" : 1542177972,"test_mode" : 1}
* @return
*/
ServiceResponse<Boolean> getAppOrderList(String param);
}
...@@ -4,8 +4,10 @@ import com.gic.api.base.commons.Page; ...@@ -4,8 +4,10 @@ import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.licence.LicenceOrderDTO; 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.licence.LicenceOrderPageDTO;
import com.gic.haoban.manage.api.dto.licence.RenewalUserDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.LicenceOrderPageQDTO; 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.api.dto.qdto.licence.LicenceOrderQDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.RenewalUserQDTO;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
...@@ -113,7 +115,7 @@ public interface LicenceOrderApiService { ...@@ -113,7 +115,7 @@ public interface LicenceOrderApiService {
* 查询订单编号id * 查询订单编号id
* *
* @param param 查询参数 * @param param 查询参数
* @param type 0 订单编号 1 企业微信订单编号 2微信订单编号 * @param type 0 订单编号 1 企业微信订单编号 2微信订单编号 3付费应用企业微信订单编号
* @param wxEnterpriseId * @param wxEnterpriseId
* @return * @return
*/ */
...@@ -157,5 +159,7 @@ public interface LicenceOrderApiService { ...@@ -157,5 +159,7 @@ public interface LicenceOrderApiService {
*/ */
ServiceResponse<Boolean> checkQywxOrderStatus(Long orderId); ServiceResponse<Boolean> checkQywxOrderStatus(Long orderId);
ServiceResponse<Page<RenewalUserDTO>> getRenewalUserPage(RenewalUserQDTO qdto);
} }
...@@ -154,7 +154,7 @@ public class LicenceOrderController { ...@@ -154,7 +154,7 @@ public class LicenceOrderController {
* 订单编号和企业微信订单编号模糊搜索 * 订单编号和企业微信订单编号模糊搜索
* *
* @param param 模糊查询 * @param param 模糊查询
* @param type 0 订单编号 1 企业微信订单编号 2微信订单编号 * @param type 0 订单编号 1 企业微信订单编号 2微信订单编号 3付费应用企业微信订单编号
* @return * @return
*/ */
@RequestMapping("get-order-id-list") @RequestMapping("get-order-id-list")
......
...@@ -60,5 +60,9 @@ public class LicenceOrderPageQO extends BasePageInfo implements Serializable { ...@@ -60,5 +60,9 @@ public class LicenceOrderPageQO extends BasePageInfo implements Serializable {
* 微信订单id * 微信订单id
*/ */
private String wxOrderId; private String wxOrderId;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
} }
...@@ -44,6 +44,50 @@ public class Config { ...@@ -44,6 +44,50 @@ public class Config {
@Value("${dingUrl}") @Value("${dingUrl}")
private String dingUrl; private String dingUrl;
/**
* 企业微信付费应用购买信息
*/
@Value("${qywxCashierSecret}")
private String qywxCashierSecret;
@Value("${promotionCaseId}")
private String promotionCaseId;
@Value("${promotionCaseName}")
private String promotionCaseName;
@Value("${buySuiteId}")
private String buySuiteId;
public String getBuySuiteId() {
return buySuiteId;
}
public void setBuySuiteId(String buySuiteId) {
this.buySuiteId = buySuiteId;
}
public String getQywxCashierSecret() {
return qywxCashierSecret;
}
public void setQywxCashierSecret(String qywxCashierSecret) {
this.qywxCashierSecret = qywxCashierSecret;
}
public String getPromotionCaseId() {
return promotionCaseId;
}
public void setPromotionCaseId(String promotionCaseId) {
this.promotionCaseId = promotionCaseId;
}
public String getPromotionCaseName() {
return promotionCaseName;
}
public void setPromotionCaseName(String promotionCaseName) {
this.promotionCaseName = promotionCaseName;
}
public String getDingUrl() { public String getDingUrl() {
return dingUrl; return dingUrl;
} }
......
...@@ -167,6 +167,13 @@ public interface StaffMapper { ...@@ -167,6 +167,13 @@ public interface StaffMapper {
Integer getOccupyNum(@Param("wxEnterpriseId") String wxEnterpriseId); Integer getOccupyNum(@Param("wxEnterpriseId") String wxEnterpriseId);
/** /**
* 查询即将过期的许可总数
* @param wxEnterpriseId
* @return
*/
Integer getExpiringNum(@Param("wxEnterpriseId") String wxEnterpriseId);
/**
* 通过wxOpenUserId更新企业成员许可信息 * 通过wxOpenUserId更新企业成员许可信息
*/ */
void updateStaffInfoByStaffId(@Param("staffId") String staffId, void updateStaffInfoByStaffId(@Param("staffId") String staffId,
......
package com.gic.haoban.manage.service.dao.mapper;
import com.gic.haoban.manage.api.dto.qdto.licence.AppOrderPageQDTO;
import com.gic.haoban.manage.service.entity.TabHaobanAppOrder;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* (TabHaobanAppOrder)表数据库访问层
*
* @author makejava
* @since 2023-06-21 17:24:20
*/
public interface TabHaobanAppOrderMapper {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
TabHaobanAppOrder queryById(Long id);
/**
* 查询指定行数据
*
* @param tabHaobanAppOrder 查询条件
* @param pageable 分页对象
* @return 对象列表
*/
List<TabHaobanAppOrder> queryAllByLimit(TabHaobanAppOrder tabHaobanAppOrder, @Param("pageable") Pageable pageable);
/**
* 统计总行数
*
* @param tabHaobanAppOrder 查询条件
* @return 总行数
*/
long count(TabHaobanAppOrder tabHaobanAppOrder);
/**
* 新增数据
*
* @param tabHaobanAppOrder 实例对象
* @return 影响行数
*/
int insert(TabHaobanAppOrder tabHaobanAppOrder);
/**
* 批量新增数据(MyBatis原生foreach方法)
*
* @param entities List<TabHaobanAppOrder> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<TabHaobanAppOrder> entities);
/**
* 修改数据
*
* @param tabHaobanAppOrder 实例对象
* @return 影响行数
*/
int update(TabHaobanAppOrder tabHaobanAppOrder);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 影响行数
*/
int deleteById(Long id);
/**
* 查询企业微信订单id
* @param qywxOrderId
* @param wxEnterpriseId
* @return
*/
List<String> getQywxOrderId(@Param("qywxOrderId") String qywxOrderId, @Param("wxEnterpriseId") String wxEnterpriseId);
List<TabHaobanAppOrder> getAppOrderPage(AppOrderPageQDTO qdto);
/**
* @param orderId 企业微信订单id
* @return 实例对象
*/
TabHaobanAppOrder queryByOrderId(@Param("orderId")String orderId);
}
...@@ -207,7 +207,7 @@ public interface TabHaobanExternalClerkRelatedMapper { ...@@ -207,7 +207,7 @@ public interface TabHaobanExternalClerkRelatedMapper {
* @author mozhu * @author mozhu
* @date 2022-07-06 14:40:15 * @date 2022-07-06 14:40:15
*/ */
List<String> listStoreIdByMemberId(@Param("memberId") String memberId); List<String> listStoreIdByMemberId(@Param("memberId") String memberId , @Param("addCreateTime") String addCreateTime);
/** /**
* 查询会员在企业下的好友关系 根据会员id * 查询会员在企业下的好友关系 根据会员id
......
package com.gic.haoban.manage.service.dao.mapper;
import com.gic.haoban.manage.api.dto.qdto.licence.RenewalUserQDTO;
import com.gic.haoban.manage.service.entity.TabHaobanRenewalUser;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* (TabHaobanRenewalUser)表数据库访问层
*
* @author makejava
* @since 2023-06-08 15:11:49
*/
public interface TabHaobanRenewalUserMapper {
/**
* 通过ID查询单条数据
*
* @param renewalId 主键
* @return 实例对象
*/
TabHaobanRenewalUser queryById(Long renewalId);
/**
* 查询指定行数据
*
* @param tabHaobanRenewalUser 查询条件
* @param pageable 分页对象
* @return 对象列表
*/
List<TabHaobanRenewalUser> queryAllByLimit(TabHaobanRenewalUser tabHaobanRenewalUser, @Param("pageable") Pageable pageable);
/**
* 统计总行数
*
* @param tabHaobanRenewalUser 查询条件
* @return 总行数
*/
long count(TabHaobanRenewalUser tabHaobanRenewalUser);
/**
* 新增数据
*
* @param tabHaobanRenewalUser 实例对象
* @return 影响行数
*/
int insert(TabHaobanRenewalUser tabHaobanRenewalUser);
/**
* 批量新增数据(MyBatis原生foreach方法)
*
* @param entities List<TabHaobanRenewalUser> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<TabHaobanRenewalUser> entities);
/**
* 批量新增或按主键更新数据(MyBatis原生foreach方法)
*
* @param entities List<TabHaobanRenewalUser> 实例对象列表
* @return 影响行数
* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
*/
int insertOrUpdateBatch(@Param("entities") List<TabHaobanRenewalUser> entities);
/**
* 修改数据
*
* @param tabHaobanRenewalUser 实例对象
* @return 影响行数
*/
int update(TabHaobanRenewalUser tabHaobanRenewalUser);
/**
* 通过主键删除数据
*
* @param renewalId 主键
* @return 影响行数
*/
int deleteById(Long renewalId);
/**
* 分页查询续期成员列表
*
* @param qdto
* @return
*/
List<TabHaobanRenewalUser> getRenewalUserPage(RenewalUserQDTO qdto);
}
package com.gic.haoban.manage.service.entity;
import java.util.Date;
import java.io.Serializable;
/**
* (TabHaobanAppOrder)实体类
*
* @author makejava
* @since 2023-06-21 17:24:20
*/
public class TabHaobanAppOrder implements Serializable {
private static final long serialVersionUID = 863180181579186870L;
/**
* 主键id
*/
private Long id;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 企业微信订单id
*/
private String orderId;
/**
* 订单状态1 - 待支付2 - 已支付3 - 订单取消4 - 支付过期5 - 退款申请中6 - 已退款7 - 交易完成8 - 待企业确认9 - 已部分退款
*/
private Integer orderStatus;
/**
* 订单类型 0 新购、1 扩容、2 续期
*/
private Integer orderType;
/**
* 购买人数
*/
private Integer userNum;
/**
* 购买时长
*/
private Integer duration;
/**
* 购买生效期的开始时间
*/
private Date beginTime;
/**
* 购买生效期的结束时间
*/
private Date endTime;
/**
* 支付时间
*/
private Date payTime;
/**
* 原价,单位分
*/
private Integer originPrice;
/**
* 折后价,单位分
*/
private Integer paidPrice;
/**
* 收款订单链接
*/
private String orderUrl;
/**
* 逻辑删除,0未删除,1删除
*/
private Integer deleteFlag;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人
*/
private String creatorId;
/**
* 创建人名称
*/
private String creatorName;
/**
* 订单支付到期时间
*/
private Date expireTime;
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public Integer getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(Integer orderStatus) {
this.orderStatus = orderStatus;
}
public Integer getOrderType() {
return orderType;
}
public void setOrderType(Integer orderType) {
this.orderType = orderType;
}
public Integer getUserNum() {
return userNum;
}
public void setUserNum(Integer userNum) {
this.userNum = userNum;
}
public Integer getDuration() {
return duration;
}
public void setDuration(Integer duration) {
this.duration = duration;
}
public Date getBeginTime() {
return beginTime;
}
public void setBeginTime(Date beginTime) {
this.beginTime = beginTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public Date getPayTime() {
return payTime;
}
public void setPayTime(Date payTime) {
this.payTime = payTime;
}
public Integer getOriginPrice() {
return originPrice;
}
public void setOriginPrice(Integer originPrice) {
this.originPrice = originPrice;
}
public Integer getPaidPrice() {
return paidPrice;
}
public void setPaidPrice(Integer paidPrice) {
this.paidPrice = paidPrice;
}
public String getOrderUrl() {
return orderUrl;
}
public void setOrderUrl(String orderUrl) {
this.orderUrl = orderUrl;
}
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 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;
}
}
package com.gic.haoban.manage.service.entity;
import java.util.Date;
import java.io.Serializable;
/**
* (TabHaobanRenewalUser)实体类
*
* @author makejava
* @since 2023-06-08 15:11:49
*/
public class TabHaobanRenewalUser implements Serializable {
private static final long serialVersionUID = -16922328852683963L;
/**
* id
*/
private Long renewalId;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 微信userId
*/
private String wxUserId;
/**
* 订单id
*/
private Long orderId;
/**
* 电话
*/
private String phone;
/**
* 名称
*/
private String name;
/**
* 职位
*/
private String postion;
/**
* 续期是否合法 0 否 1是
*/
private Integer invalidFlag;
/**
* 不合法错误码
*/
private String invalidCode;
/**
* 不合法错误描述
*/
private String invalidMsg;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建时间
*/
private Date createTime;
/**
* 逻辑删除,0未删除,1删除
*/
private Integer deleteFlag;
public Long getRenewalId() {
return renewalId;
}
public void setRenewalId(Long renewalId) {
this.renewalId = renewalId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getWxUserId() {
return wxUserId;
}
public void setWxUserId(String wxUserId) {
this.wxUserId = wxUserId;
}
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPostion() {
return postion;
}
public void setPostion(String postion) {
this.postion = postion;
}
public Integer getInvalidFlag() {
return invalidFlag;
}
public void setInvalidFlag(Integer invalidFlag) {
this.invalidFlag = invalidFlag;
}
public String getInvalidCode() {
return invalidCode;
}
public void setInvalidCode(String invalidCode) {
this.invalidCode = invalidCode;
}
public String getInvalidMsg() {
return invalidMsg;
}
public void setInvalidMsg(String invalidMsg) {
this.invalidMsg = invalidMsg;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
}
...@@ -64,6 +64,30 @@ public class StaffListBO implements Serializable { ...@@ -64,6 +64,30 @@ public class StaffListBO implements Serializable {
* 关联成员id数组 * 关联成员id数组
*/ */
private List<String> staffIds; private List<String> staffIds;
/**
* 许可到期时间区间查询
*/
private String startTime;
/**
* 许可到期时间区间查询
*/
private String endTime;
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;
}
public List<String> getStaffIds() { public List<String> getStaffIds() {
return staffIds; return staffIds;
......
...@@ -134,6 +134,11 @@ public interface StaffService { ...@@ -134,6 +134,11 @@ public interface StaffService {
*/ */
Integer getOccupyNum(String wxEnterpriseId); Integer getOccupyNum(String wxEnterpriseId);
/**
* 查询即将过期的许可总数
*/
Integer getExpiringNum(String wxEnterpriseId);
/** /**
* 查询成员列表 * 查询成员列表
......
package com.gic.haoban.manage.service.service;
import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.api.dto.licence.AppOrderPageDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.AppOrderPageQDTO;
import com.gic.haoban.manage.service.entity.TabHaobanAppOrder;
import java.util.List;
/**
* (TabHaobanAppOrder)表服务接口
*
* @author makejava
* @since 2023-06-21 17:24:20
*/
public interface TabHaobanAppOrderService {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
TabHaobanAppOrder queryById(Long id);
/**
* 新增数据
*
* @param tabHaobanAppOrder 实例对象
* @return 实例对象
*/
TabHaobanAppOrder insert(TabHaobanAppOrder tabHaobanAppOrder);
/**
* 批量新增数据
* @param entities
*/
void insertBatch(List<TabHaobanAppOrder> entities);
/**
* 修改数据
*
* @param tabHaobanAppOrder 实例对象
* @return 实例对象
*/
TabHaobanAppOrder update(TabHaobanAppOrder tabHaobanAppOrder);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
boolean deleteById(Long id);
Page<AppOrderPageDTO> getAppOrderPage(AppOrderPageQDTO qdto);
/**
* 根据企业微信订单id查询
* @param orderId
* @return
*/
TabHaobanAppOrder queryByOrderId(String orderId);
}
package com.gic.haoban.manage.service.service;
import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.api.dto.licence.RenewalUserDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.RenewalUserQDTO;
import com.gic.haoban.manage.service.entity.TabHaobanRenewalUser;
import java.util.List;
/**
* (TabHaobanRenewalUser)表服务接口
*
* @author makejava
* @since 2023-06-08 15:11:49
*/
public interface TabHaobanRenewalUserService {
/**
* 通过ID查询单条数据
*
* @param renewalId 主键
* @return 实例对象
*/
TabHaobanRenewalUser queryById(Long renewalId);
/**
* 新增数据
*
* @param tabHaobanRenewalUser 实例对象
* @return 实例对象
*/
TabHaobanRenewalUser insert(TabHaobanRenewalUser tabHaobanRenewalUser);
void insertBatch(List<TabHaobanRenewalUser> tabHaobanRenewalUserList);
/**
* 修改数据
*
* @param tabHaobanRenewalUser 实例对象
* @return 实例对象
*/
TabHaobanRenewalUser update(TabHaobanRenewalUser tabHaobanRenewalUser);
/**
* 通过主键删除数据
*
* @param renewalId 主键
* @return 是否成功
*/
boolean deleteById(Long renewalId);
/**
* 分页查询续期成员列表
*
* @param qdto
* @return
*/
Page<RenewalUserDTO> getRenewalUserPage(RenewalUserQDTO qdto);
}
package com.gic.haoban.manage.service.service; package com.gic.haoban.manage.service.service;
import com.gic.haoban.manage.api.dto.StaffActiveDataDTO; import com.gic.haoban.manage.api.dto.StaffActiveDataDTO;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterpriseActiveData;
/** /**
* @description: 通讯录数据总览内部service * @description: 通讯录数据总览内部service
...@@ -17,4 +18,8 @@ public interface WxEnterpriseActiveDataService { ...@@ -17,4 +18,8 @@ public interface WxEnterpriseActiveDataService {
Integer saveOrUpdate(String wxEnterpriseId); Integer saveOrUpdate(String wxEnterpriseId);
StaffActiveDataDTO getWxEnterpriseActiveDataByWxEnterpriseId(String wxEnterpriseId); StaffActiveDataDTO getWxEnterpriseActiveDataByWxEnterpriseId(String wxEnterpriseId);
void updateByStaffActiveDataDTO(StaffActiveDataDTO dto);
void insert(TabHaobanWxEnterpriseActiveData data);
} }
...@@ -130,6 +130,14 @@ public class GroupChatHmServiceImpl implements GroupChatHmService { ...@@ -130,6 +130,14 @@ public class GroupChatHmServiceImpl implements GroupChatHmService {
return null; return null;
} }
this.updateLinkCount(hm.getWxEnterpriseId(), Arrays.asList(hmId)); this.updateLinkCount(hm.getWxEnterpriseId(), Arrays.asList(hmId));
String wxEnterpriseId = hm.getWxEnterpriseId(); ;
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(wxEnterpriseId, SecretTypeEnum.CUSTOMIZED_APP.getVal());
if (null != secretSetting && hm.getAutoCreateRoom() == 1) {
List<TabGroupChatHmRelation> chatRelation = this.groupChatHmRelationMapper.listByChatHmId(hmId);
if(CollectionUtils.isNotEmpty(chatRelation)) {
this.handleAutoCreateRoom(wxEnterpriseId, secretSetting.getSecretVal(), hm, chatRelation, null);
}
}
GroupChatHmBO bo = EntityUtil.changeEntityByJSON(GroupChatHmBO.class, hm); GroupChatHmBO bo = EntityUtil.changeEntityByJSON(GroupChatHmBO.class, hm);
return bo; return bo;
} }
...@@ -192,14 +200,16 @@ public class GroupChatHmServiceImpl implements GroupChatHmService { ...@@ -192,14 +200,16 @@ public class GroupChatHmServiceImpl implements GroupChatHmService {
String configId = hm.getWxConfigId(); String configId = hm.getWxConfigId();
ServiceResponse<AddJoinWayDTO> joinResp = this.qywxChatApiService.getJoinWay(qwDTO.getDkCorpid(), secret, ServiceResponse<AddJoinWayDTO> joinResp = this.qywxChatApiService.getJoinWay(qwDTO.getDkCorpid(), secret,
configId,qwDTO.getUrlHost()); configId,qwDTO.getUrlHost());
logger.info("查询群活码={}", JSON.toJSON(joinResp)); logger.info("处理群活码满-查询群活码={}", JSON.toJSON(joinResp));
if (joinResp.isSuccess()) { if (joinResp.isSuccess()) {
AddJoinWayDTO join = joinResp.getResult(); AddJoinWayDTO join = joinResp.getResult();
List<String> qwChatIdList = join.getChat_id_list(); List<String> qwChatIdList = join.getChat_id_list();
if (CollectionUtils.isNotEmpty(qwChatIdList)) { if (CollectionUtils.isNotEmpty(qwChatIdList)) {
if (qwChatIdList.size() == 1) { if (qwChatIdList.size() == 1) {
logger.info("只有1个群"); logger.info("只有1个群");
this.saveChatFullNotice(wxEnterpriseId, thisGroupChatId); if(null != thisGroupChatId) {
this.saveChatFullNotice(wxEnterpriseId, thisGroupChatId);
}
return; return;
} }
List<Long> chatIdList = chatRelation.stream().map(dto -> dto.getGroupChatId()) List<Long> chatIdList = chatRelation.stream().map(dto -> dto.getGroupChatId())
...@@ -211,7 +221,9 @@ public class GroupChatHmServiceImpl implements GroupChatHmService { ...@@ -211,7 +221,9 @@ public class GroupChatHmServiceImpl implements GroupChatHmService {
List<String> qwList = RolesListUtils.differenceList(qwChatIdList, hbIdList); List<String> qwList = RolesListUtils.differenceList(qwChatIdList, hbIdList);
if (qwChatIdList.size() == hbIdList.size() && CollectionUtils.isEmpty(qwList)) { if (qwChatIdList.size() == hbIdList.size() && CollectionUtils.isEmpty(qwList)) {
logger.info("群未变化"); logger.info("群未变化");
this.saveChatFullNotice(wxEnterpriseId, thisGroupChatId); if(null != thisGroupChatId) {
this.saveChatFullNotice(wxEnterpriseId, thisGroupChatId);
}
return; return;
} }
// 处理要踢的 // 处理要踢的
...@@ -255,7 +267,9 @@ public class GroupChatHmServiceImpl implements GroupChatHmService { ...@@ -255,7 +267,9 @@ public class GroupChatHmServiceImpl implements GroupChatHmService {
List<TabGroupChat> list = this.groupChatMapper.listByWxWxChatIdListDk(wxEnterpriseId, List<TabGroupChat> list = this.groupChatMapper.listByWxWxChatIdListDk(wxEnterpriseId,
qwChatIdList); qwChatIdList);
if (CollectionUtils.isEmpty(list) || list.size() != qwChatIdList.size()) { if (CollectionUtils.isEmpty(list) || list.size() != qwChatIdList.size()) {
this.saveChatFullNotice(wxEnterpriseId, thisGroupChatId); if(null != thisGroupChatId) {
this.saveChatFullNotice(wxEnterpriseId, thisGroupChatId);
}
logger.info("查询群列表空,或数量不一致,dkList={}", qwChatIdList); logger.info("查询群列表空,或数量不一致,dkList={}", qwChatIdList);
return; return;
} }
......
...@@ -1144,7 +1144,7 @@ public class GroupChatServiceImpl implements GroupChatService { ...@@ -1144,7 +1144,7 @@ public class GroupChatServiceImpl implements GroupChatService {
if (null == chat || chat.getTotalCount() < offNum) { if (null == chat || chat.getTotalCount() < offNum) {
continue; continue;
} }
if (chat.getOffTime().getTime() + 1000 * 60 * 60 * 8 < new Date().getTime()) { if (chat.getOffTime().getTime() + 1000 * 60 * 60 * 24 * 30 < new Date().getTime()) {
logger.info("超过8小时不重试groupChatId={}", groupChatId); logger.info("超过8小时不重试groupChatId={}", groupChatId);
continue; continue;
} }
......
package com.gic.haoban.manage.service.service.impl; package com.gic.haoban.manage.service.service.impl;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import com.gic.haoban.manage.service.pojo.bo.StaffListBO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil; import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.UniqueIdUtils; import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.common.utils.PageUtil;
import com.gic.haoban.common.utils.StringUtil; import com.gic.haoban.common.utils.StringUtil;
import com.gic.haoban.manage.api.dto.StaffDTO; import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.service.config.Config; import com.gic.haoban.manage.service.config.Config;
...@@ -26,6 +14,7 @@ import com.gic.haoban.manage.service.dao.mapper.WxEnterpriseMapper; ...@@ -26,6 +14,7 @@ import com.gic.haoban.manage.service.dao.mapper.WxEnterpriseMapper;
import com.gic.haoban.manage.service.entity.TabHaobanStaff; import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise; import com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise;
import com.gic.haoban.manage.service.entity.fee.TabHaobanQywxFeeAccountStaff; import com.gic.haoban.manage.service.entity.fee.TabHaobanQywxFeeAccountStaff;
import com.gic.haoban.manage.service.pojo.bo.StaffListBO;
import com.gic.haoban.manage.service.service.StaffService; import com.gic.haoban.manage.service.service.StaffService;
import com.gic.haoban.manage.service.service.fee.HaobanQywxFeeAccountStaffService; import com.gic.haoban.manage.service.service.fee.HaobanQywxFeeAccountStaffService;
import com.gic.wechat.api.dto.qywx.fee.AccountListDTO; import com.gic.wechat.api.dto.qywx.fee.AccountListDTO;
...@@ -34,10 +23,16 @@ import com.gic.wechat.api.dto.qywx.fee.ActiveInfoUserResponseDTO; ...@@ -34,10 +23,16 @@ import com.gic.wechat.api.dto.qywx.fee.ActiveInfoUserResponseDTO;
import com.gic.wechat.api.service.qywx.QywxOrderApiService; import com.gic.wechat.api.service.qywx.QywxOrderApiService;
import com.gic.wechat.api.service.qywx.QywxUserApiService; import com.gic.wechat.api.service.qywx.QywxUserApiService;
import com.github.pagehelper.Page; import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper; import org.apache.commons.collections.CollectionUtils;
import com.github.pagehelper.PageInfo; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.hutool.core.date.DateUtil; import java.util.Collections;
import java.util.Date;
import java.util.List;
@Service @Service
public class StaffServiceImpl implements StaffService { public class StaffServiceImpl implements StaffService {
...@@ -55,7 +50,7 @@ public class StaffServiceImpl implements StaffService { ...@@ -55,7 +50,7 @@ public class StaffServiceImpl implements StaffService {
private HaobanQywxFeeAccountStaffService haobanQywxFeeAccountStaffService; private HaobanQywxFeeAccountStaffService haobanQywxFeeAccountStaffService;
@Autowired @Autowired
private QywxUserApiService qywxUserApiService ; private QywxUserApiService qywxUserApiService ;
@Override @Override
public TabHaobanStaff selectById(String id) { public TabHaobanStaff selectById(String id) {
if (StringUtils.isBlank(id)) { if (StringUtils.isBlank(id)) {
...@@ -98,6 +93,13 @@ public class StaffServiceImpl implements StaffService { ...@@ -98,6 +93,13 @@ public class StaffServiceImpl implements StaffService {
String s = "ISNULL("+sortField+"),"+sortField; String s = "ISNULL("+sortField+"),"+sortField;
staffListBO.setSortField(s); staffListBO.setSortField(s);
} }
//时间处理
if (StrUtil.isNotBlank(staffListBO.getStartTime())) {
staffListBO.setStartTime(staffListBO.getStartTime() + " 00:00:00");
}
if (StrUtil.isNotBlank(staffListBO.getEndTime())) {
staffListBO.setEndTime(staffListBO.getEndTime() + " 23:59:59");
}
return mapper.pageStaff(staffListBO); return mapper.pageStaff(staffListBO);
} }
...@@ -169,13 +171,13 @@ public class StaffServiceImpl implements StaffService { ...@@ -169,13 +171,13 @@ public class StaffServiceImpl implements StaffService {
public int resetAddNum() { public int resetAddNum() {
return mapper.resetAddNum(); return mapper.resetAddNum();
} }
@Override @Override
public int updateActiveStatusById(String staffId, Date activeTime, Date expireTime, public int updateActiveStatusById(String staffId, Date activeTime, Date expireTime,
String activeCode) { String activeCode) {
return mapper.updateActiveStatusById(staffId, activeTime, expireTime, activeCode) ; return mapper.updateActiveStatusById(staffId, activeTime, expireTime, activeCode) ;
} }
@Override @Override
public void updateOpenConcatFlag(List<String> wxUserIdList,int mixFlag) { public void updateOpenConcatFlag(List<String> wxUserIdList,int mixFlag) {
if(CollectionUtils.isEmpty(wxUserIdList)) { if(CollectionUtils.isEmpty(wxUserIdList)) {
...@@ -183,14 +185,14 @@ public class StaffServiceImpl implements StaffService { ...@@ -183,14 +185,14 @@ public class StaffServiceImpl implements StaffService {
} }
this.mapper.updateOpenConcatFlag(wxUserIdList,mixFlag); this.mapper.updateOpenConcatFlag(wxUserIdList,mixFlag);
} }
@Override @Override
public void activedAccountTimer(String wxEid) { public void activedAccountTimer(String wxEid) {
log.info("开始查询激活账号,wxEid={}", wxEid); log.info("开始查询激活账号,wxEid={}", wxEid);
TabHaobanWxEnterprise wxEnterprise = this.wxEnterpriseMapper.selectByPrimaryKey(wxEid) ; TabHaobanWxEnterprise wxEnterprise = this.wxEnterpriseMapper.selectByPrimaryKey(wxEid) ;
if(wxEnterprise.getWxSecurityType()>0 && StringUtils.isNotEmpty(wxEnterprise.getOpenCorpid()) && wxEnterprise.getStatusFlag()==1) { if(wxEnterprise.getWxSecurityType()>0 && StringUtils.isNotEmpty(wxEnterprise.getOpenCorpid()) && wxEnterprise.getStatusFlag()==1) {
this.haobanQywxFeeAccountStaffService.deleteAll(wxEid) ; this.haobanQywxFeeAccountStaffService.deleteAll(wxEid) ;
this.mapper.deleteActivieInfo(wxEid); this.mapper.deleteActivieInfo(wxEid);
this.listAccount(wxEnterprise, 500, null); this.listAccount(wxEnterprise, 500, null);
} }
} }
...@@ -200,6 +202,11 @@ public class StaffServiceImpl implements StaffService { ...@@ -200,6 +202,11 @@ public class StaffServiceImpl implements StaffService {
return mapper.getOccupyNum(wxEnterpriseId); return mapper.getOccupyNum(wxEnterpriseId);
} }
@Override
public Integer getExpiringNum(String wxEnterpriseId) {
return mapper.getExpiringNum(wxEnterpriseId);
}
private void listAccount(TabHaobanWxEnterprise wxEnterprise , int limit , String cursor) { private void listAccount(TabHaobanWxEnterprise wxEnterprise , int limit , String cursor) {
String wxEnterpriseId = wxEnterprise.getWxEnterpriseId() ; String wxEnterpriseId = wxEnterprise.getWxEnterpriseId() ;
String openCorpid = wxEnterprise.getOpenCorpid() ; String openCorpid = wxEnterprise.getOpenCorpid() ;
...@@ -218,7 +225,7 @@ public class StaffServiceImpl implements StaffService { ...@@ -218,7 +225,7 @@ public class StaffServiceImpl implements StaffService {
} }
} }
} }
private void updateAccount(String wxEnterpriseId , String openCorpid ,List<AccountListDTO> list) { private void updateAccount(String wxEnterpriseId , String openCorpid ,List<AccountListDTO> list) {
for(AccountListDTO item : list) { for(AccountListDTO item : list) {
String userId = item.getUserid() ; String userId = item.getUserid() ;
......
package com.gic.haoban.manage.service.service.impl;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.PageHelperUtils;
import com.gic.haoban.manage.api.dto.licence.AppOrderPageDTO;
import com.gic.haoban.manage.api.dto.licence.RenewalUserDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.AppOrderPageQDTO;
import com.gic.haoban.manage.service.entity.TabHaobanAppOrder;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanAppOrderMapper;
import com.gic.haoban.manage.service.entity.TabHaobanRenewalUser;
import com.gic.haoban.manage.service.service.TabHaobanAppOrderService;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import javax.annotation.Resource;
import java.util.List;
/**
* (TabHaobanAppOrder)表服务实现类
*
* @author makejava
* @since 2023-06-21 17:24:20
*/
@Service("tabHaobanAppOrderService")
public class TabHaobanAppOrderServiceImpl implements TabHaobanAppOrderService {
@Resource
private TabHaobanAppOrderMapper tabHaobanAppOrderMapper;
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
@Override
public TabHaobanAppOrder queryById(Long id) {
return this.tabHaobanAppOrderMapper.queryById(id);
}
/**
* 新增数据
*
* @param tabHaobanAppOrder 实例对象
* @return 实例对象
*/
@Override
public TabHaobanAppOrder insert(TabHaobanAppOrder tabHaobanAppOrder) {
this.tabHaobanAppOrderMapper.insert(tabHaobanAppOrder);
return tabHaobanAppOrder;
}
@Override
public void insertBatch(List<TabHaobanAppOrder> entities) {
this.tabHaobanAppOrderMapper.insertBatch(entities);
}
/**
* 修改数据
*
* @param tabHaobanAppOrder 实例对象
* @return 实例对象
*/
@Override
public TabHaobanAppOrder update(TabHaobanAppOrder tabHaobanAppOrder) {
this.tabHaobanAppOrderMapper.update(tabHaobanAppOrder);
return this.queryById(tabHaobanAppOrder.getId());
}
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
@Override
public boolean deleteById(Long id) {
return this.tabHaobanAppOrderMapper.deleteById(id) > 0;
}
@Override
public Page<AppOrderPageDTO> getAppOrderPage(AppOrderPageQDTO qdto) {
if (qdto == null){
return null;
}
PageHelper.startPage(qdto);
List<TabHaobanAppOrder> page = tabHaobanAppOrderMapper.getAppOrderPage(qdto);
return PageHelperUtils.changePageHelperToCurrentPage(page, AppOrderPageDTO.class);
}
@Override
public TabHaobanAppOrder queryByOrderId(String orderId) {
return tabHaobanAppOrderMapper.queryByOrderId(orderId);
}
}
package com.gic.haoban.manage.service.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.PageHelperUtils;
import com.gic.haoban.manage.api.dto.licence.RenewalUserDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.RenewalUserQDTO;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanRenewalUserMapper;
import com.gic.haoban.manage.service.entity.TabHaobanRenewalUser;
import com.gic.haoban.manage.service.service.TabHaobanRenewalUserService;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* (TabHaobanRenewalUser)表服务实现类
*
* @author makejava
* @since 2023-06-08 15:11:49
*/
@Service("tabHaobanRenewalUserService")
public class TabHaobanRenewalUserServiceImpl implements TabHaobanRenewalUserService {
@Resource
private TabHaobanRenewalUserMapper tabHaobanRenewalUserMapper;
/**
* 通过ID查询单条数据
*
* @param renewalId 主键
* @return 实例对象
*/
@Override
public TabHaobanRenewalUser queryById(Long renewalId) {
return this.tabHaobanRenewalUserMapper.queryById(renewalId);
}
/**
* 新增数据
*
* @param tabHaobanRenewalUser 实例对象
* @return 实例对象
*/
@Override
public TabHaobanRenewalUser insert(TabHaobanRenewalUser tabHaobanRenewalUser) {
this.tabHaobanRenewalUserMapper.insert(tabHaobanRenewalUser);
return tabHaobanRenewalUser;
}
@Override
public void insertBatch(List<TabHaobanRenewalUser> tabHaobanRenewalUserList) {
if (CollUtil.isEmpty(tabHaobanRenewalUserList)) {
return;
}
this.tabHaobanRenewalUserMapper.insertBatch(tabHaobanRenewalUserList);
}
/**
* 修改数据
*
* @param tabHaobanRenewalUser 实例对象
* @return 实例对象
*/
@Override
public TabHaobanRenewalUser update(TabHaobanRenewalUser tabHaobanRenewalUser) {
this.tabHaobanRenewalUserMapper.update(tabHaobanRenewalUser);
return this.queryById(tabHaobanRenewalUser.getRenewalId());
}
/**
* 通过主键删除数据
*
* @param renewalId 主键
* @return 是否成功
*/
@Override
public boolean deleteById(Long renewalId) {
return this.tabHaobanRenewalUserMapper.deleteById(renewalId) > 0;
}
@Override
public Page<RenewalUserDTO> getRenewalUserPage(RenewalUserQDTO qdto) {
PageHelper.startPage(qdto);
List<TabHaobanRenewalUser> page = tabHaobanRenewalUserMapper.getRenewalUserPage(qdto);
return PageHelperUtils.changePageHelperToCurrentPage(page, RenewalUserDTO.class);
}
}
...@@ -119,6 +119,28 @@ public class WxEnterpriseActiveDataServiceImpl implements WxEnterpriseActiveData ...@@ -119,6 +119,28 @@ public class WxEnterpriseActiveDataServiceImpl implements WxEnterpriseActiveData
Integer occupy=0; Integer occupy=0;
occupy=staffService.getOccupyNum(wxEnterpriseId); occupy=staffService.getOccupyNum(wxEnterpriseId);
staffActiveDataDTO.setOccupy(occupy); staffActiveDataDTO.setOccupy(occupy);
//查询即将过期的许可总数
Integer expiringNum = 0;
expiringNum = staffService.getExpiringNum(wxEnterpriseId);
staffActiveDataDTO.setExpiring(expiringNum);
return staffActiveDataDTO; return staffActiveDataDTO;
} }
@Override
public void updateByStaffActiveDataDTO(StaffActiveDataDTO dto) {
if (null == dto){
return;
}
TabHaobanWxEnterpriseActiveData tabHaobanWxEnterpriseActiveData = EntityUtil.changeEntityByJSON(TabHaobanWxEnterpriseActiveData.class, dto);
tabHaobanWxEnterpriseActiveDataMapper.updateActiveDataByWxEnterpriseId(tabHaobanWxEnterpriseActiveData);
}
@Override
public void insert(TabHaobanWxEnterpriseActiveData data) {
if(null == data){
log.info("新增许可账号统计参数不能为空!");
return;
}
tabHaobanWxEnterpriseActiveDataMapper.insert(data);
}
} }
...@@ -117,7 +117,7 @@ public interface LicenceOrderService { ...@@ -117,7 +117,7 @@ public interface LicenceOrderService {
/** /**
* 查询订单编号id * 查询订单编号id
* @param param 查询参数 * @param param 查询参数
* @param type 0 微信订单编号 1 企业微信订单编号 * @param type 0 订单编号 1 企业微信订单编号 2微信订单编号 3付费应用企业微信订单编号
* @param wxEnterpriseId * @param wxEnterpriseId
* @return * @return
*/ */
......
...@@ -19,6 +19,7 @@ import com.gic.haoban.manage.api.dto.qdto.licence.LicenceOrderPageQDTO; ...@@ -19,6 +19,7 @@ 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.api.dto.qdto.licence.LicenceOrderQDTO;
import com.gic.haoban.manage.api.service.WxEnterpriseApiService; import com.gic.haoban.manage.api.service.WxEnterpriseApiService;
import com.gic.haoban.manage.service.config.Config; import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanAppOrderMapper;
import com.gic.haoban.manage.service.dao.mapper.licence.TabHaobanLicenceOrderMapper; import com.gic.haoban.manage.service.dao.mapper.licence.TabHaobanLicenceOrderMapper;
import com.gic.haoban.manage.service.dao.mapper.licence.TabHaobanLicenceOrderProgressMapper; import com.gic.haoban.manage.service.dao.mapper.licence.TabHaobanLicenceOrderProgressMapper;
import com.gic.haoban.manage.service.entity.licence.TabHaobanLicenceOrder; import com.gic.haoban.manage.service.entity.licence.TabHaobanLicenceOrder;
...@@ -61,6 +62,8 @@ public class LicenceOrderServiceImpl implements LicenceOrderService { ...@@ -61,6 +62,8 @@ public class LicenceOrderServiceImpl implements LicenceOrderService {
private ClerkService clerkService; private ClerkService clerkService;
@Autowired @Autowired
private Config config; private Config config;
@Autowired
private TabHaobanAppOrderMapper tabHaobanAppOrderMapper;
@Override @Override
public TabHaobanLicenceOrder getLicenceOrderDetail(Long orderId) { public TabHaobanLicenceOrder getLicenceOrderDetail(Long orderId) {
...@@ -258,8 +261,11 @@ public class LicenceOrderServiceImpl implements LicenceOrderService { ...@@ -258,8 +261,11 @@ public class LicenceOrderServiceImpl implements LicenceOrderService {
result = tabHaobanLicenceOrderMapper.getTransactionIdList(param,wxEnterpriseId); result = tabHaobanLicenceOrderMapper.getTransactionIdList(param,wxEnterpriseId);
}else if(type == 1){ }else if(type == 1){
result = tabHaobanLicenceOrderMapper.getQywxOrderId(param,wxEnterpriseId); result = tabHaobanLicenceOrderMapper.getQywxOrderId(param,wxEnterpriseId);
}else { }else if (type == 2){
result = tabHaobanLicenceOrderMapper.getWxOrderId(param,wxEnterpriseId); result = tabHaobanLicenceOrderMapper.getWxOrderId(param,wxEnterpriseId);
}else if (type == 3){
//查询付费应用企业微信订单id
result = tabHaobanAppOrderMapper.getQywxOrderId(param, wxEnterpriseId);
} }
return result; return result;
} }
......
...@@ -383,9 +383,21 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -383,9 +383,21 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
if (StringUtils.isBlank(memberId)) { if (StringUtils.isBlank(memberId)) {
return null; return null;
} }
return tabHaobanExternalClerkRelatedMapper.listStoreIdByMemberId(memberId); return tabHaobanExternalClerkRelatedMapper.listStoreIdByMemberId(memberId , null);
} }
@Override
public List<String> listStoreIdByMemberId(String memberId, Date endTime) {
if (StringUtils.isBlank(memberId)) {
return null;
}
if(null == endTime) {
return this.listStoreIdByMemberId(memberId) ;
}
String addCreateTime = String.valueOf(endTime.getTime()/1000) ;
return tabHaobanExternalClerkRelatedMapper.listStoreIdByMemberId(memberId , addCreateTime);
}
@Override @Override
public void delByMemberIdAndEnterpriseId(String memberId, String enterpriseId, String mergeMemberId, int type) { public void delByMemberIdAndEnterpriseId(String memberId, String enterpriseId, String mergeMemberId, int type) {
// 0 删除会员 1合并会员 2会员换绑 // 0 删除会员 1合并会员 2会员换绑
......
...@@ -119,6 +119,8 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -119,6 +119,8 @@ public class StaffApiServiceImpl implements StaffApiService {
private DealSyncOperationApiService dealSyncOperationApiService; private DealSyncOperationApiService dealSyncOperationApiService;
@Autowired @Autowired
private ExternalClerkRelatedService externalClerkRelatedService; private ExternalClerkRelatedService externalClerkRelatedService;
@Autowired
private WxEnterpriseActiveDataService wxEnterpriseActiveDataService;
@Override @Override
public StaffDTO selectById(String staffId) { public StaffDTO selectById(String staffId) {
...@@ -1132,7 +1134,7 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -1132,7 +1134,7 @@ public class StaffApiServiceImpl implements StaffApiService {
if (StrUtil.isBlank(params)) { if (StrUtil.isBlank(params)) {
return com.gic.api.base.commons.ServiceResponse.success(false); return com.gic.api.base.commons.ServiceResponse.success(false);
} }
//1、解析参数 2、刷新企业微信群列表 3、更新成员信息 //1、解析参数 2、刷新企业微信群列表 3、更新成员信息 4、实时统计许可总数
JSONObject object = JSONObject.parseObject(params, JSONObject.class); JSONObject object = JSONObject.parseObject(params, JSONObject.class);
String infoType = object.getString("infoType"); String infoType = object.getString("infoType");
String authCorpId = object.getString("authCorpId"); String authCorpId = object.getString("authCorpId");
...@@ -1165,6 +1167,24 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -1165,6 +1167,24 @@ public class StaffApiServiceImpl implements StaffApiService {
String staffId = staff.getStaffId(); String staffId = staff.getStaffId();
groupChatService.initStaffGroupChat(staffId); groupChatService.initStaffGroupChat(staffId);
staffMapper.updateActiveStatusById(staffId,timeStampDate,expireTimeDate,activeCode); staffMapper.updateActiveStatusById(staffId,timeStampDate,expireTimeDate,activeCode);
StaffActiveDataDTO activeDataDTO = wxEnterpriseActiveDataService.getWxEnterpriseActiveDataByWxEnterpriseId(wxEnterprise.getWxEnterpriseId());
if (null == activeDataDTO){
logger.info("查询不到企业微信id->{}的许可账号统计信息!",wxEnterprise.getWxEnterpriseId());
}else {
//已使用的加1,已激活的加1,未激活的减1
Integer used = activeDataDTO.getUsed();
Integer inactive = activeDataDTO.getInactive();
Integer activated = activeDataDTO.getActivated();
used++;
activated++;
if(null != inactive && inactive > 0){
inactive--;
}
activeDataDTO.setUsed(used);
activeDataDTO.setInactive(inactive);
activeDataDTO.setActivated(activated);
wxEnterpriseActiveDataService.updateByStaffActiveDataDTO(activeDataDTO);
}
} }
return com.gic.api.base.commons.ServiceResponse.success(true); return com.gic.api.base.commons.ServiceResponse.success(true);
} }
......
package com.gic.haoban.manage.service.util;
import com.alibaba.fastjson.JSONObject;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
import java.util.*;
public class SignatureGetterUtil {
private String secret;
public SignatureGetterUtil(String secret) {
this.secret = secret;
}
public String get(String jsonStr) throws Exception {
Map<String, Object> jsonDict = new HashMap<>();
jsonDict = JSONObject.parseObject(jsonStr, jsonDict.getClass());
List<String> paramList = new ArrayList<>();
json2List(jsonDict, paramList);
Collections.sort(paramList);
return hmacSha256(list2String(paramList));
}
private String list2String(List<String> paramList) {
String str = "";
for (String param : paramList) {
if (param.startsWith("sig=")) {
continue; // ignore sig self
}
str += param + "&";
}
return str.substring(0, str.length() - 1);
}
private String hmacSha256(String data) throws Exception {
Mac mac = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256");
mac.init(secretKeySpec);
byte[] signature = mac.doFinal(data.getBytes("UTF-8"));
return Base64.getEncoder().encodeToString(signature);
}
private void json2List(Map<String, Object> jsonDict, List<String> paramList) {
for (Map.Entry<String, Object> entry : jsonDict.entrySet()) {
String k = entry.getKey();
Object v = entry.getValue();
if (v instanceof List) {
for (Object item : (List<?>) v) {
json2List((Map<String, Object>) item, paramList);
}
} else if (v instanceof Map){
json2List((Map)v,paramList);
}else {
paramList.add(k + "=" + v);
}
}
}
/**
* 模拟生成随机 nonce 字符串
*
* @return 随机字符串
*/
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
public static String generateRandomString(int length) {
SecureRandom random = new SecureRandom();
StringBuilder sb = new StringBuilder(length);
for (int i = 0; i < length; i++) {
int randomIndex = random.nextInt(CHARACTERS.length());
char randomChar = CHARACTERS.charAt(randomIndex);
sb.append(randomChar);
}
return sb.toString();
}
}
...@@ -133,6 +133,7 @@ ...@@ -133,6 +133,7 @@
<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:service interface="com.gic.haoban.manage.api.service.licence.LicenceOrderApiService" ref="licenceOrderApiServiceImpl"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.licence.AppOrderApiService" ref="appOrderApiServiceImpl"/>
<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"/>
......
...@@ -329,7 +329,7 @@ ...@@ -329,7 +329,7 @@
<if test="occupy != null and 2==occupy"> <if test="occupy != null and 2==occupy">
and ( a.expire_time is null or a.expire_time <![CDATA[<]]> now() ) and ( a.expire_time is null or a.expire_time <![CDATA[<]]> now() )
</if> </if>
<!-- 许可状态 0 未激活,1 正常有效,2 即将过期,3 已过期,可多传,按‘,’隔开 --> <!-- 许可状态 0 未激活,1 正常有效,2 即将过期,3 已过期,4 查询可以续期的成员(即状态是1、2、3的成员) -->
<if test="null != permitState and '' != permitState"> <if test="null != permitState and '' != permitState">
<if test="permitState==0"> <if test="permitState==0">
and a.expire_time is null and a.expire_time is null
...@@ -345,8 +345,16 @@ ...@@ -345,8 +345,16 @@
<if test="permitState==3"> <if test="permitState==3">
and a.expire_time <![CDATA[<]]> now() and a.expire_time <![CDATA[<]]> now()
</if> </if>
<if test="permitState==4">
and a.expire_time is not null
</if>
</if>
<if test="null != startTime and startTime !='' ">
and a.expire_time <![CDATA[>=]]> #{startTime}
</if>
<if test="null != endTime and endTime !='' ">
and a.expire_time <![CDATA[<=]]> #{endTime}
</if> </if>
<if test="departmentIds != null and departmentIds.size() > 0"> <if test="departmentIds != null and departmentIds.size() > 0">
and b.department_id IN and b.department_id IN
<foreach collection="departmentIds" item="id" index="index" open="(" close=")" separator=","> <foreach collection="departmentIds" item="id" index="index" open="(" close=")" separator=",">
...@@ -616,6 +624,10 @@ ...@@ -616,6 +624,10 @@
SELECT count(*) FROM tab_haoban_staff WHERE status_flag = 0 and del_time >= DATE_FORMAT(NOW(),'%Y-%m-%d') and expire_time >= DATE_FORMAT(NOW(),'%Y-%m-%d') and wx_enterprise_id = #{wxEnterpriseId} SELECT count(*) FROM tab_haoban_staff WHERE status_flag = 0 and del_time >= DATE_FORMAT(NOW(),'%Y-%m-%d') and expire_time >= DATE_FORMAT(NOW(),'%Y-%m-%d') and wx_enterprise_id = #{wxEnterpriseId}
</select> </select>
<select id="getExpiringNum" resultType="java.lang.Integer">
SELECT count(*) FROM tab_haoban_staff WHERE status_flag = 1 and expire_time > now() and expire_time <![CDATA[<=]]> DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d'),INTERVAL 30 DAY) and wx_enterprise_id = #{wxEnterpriseId}
</select>
<update id="updateStaffInfoByStaffId"> <update id="updateStaffInfoByStaffId">
update tab_haoban_staff set update tab_haoban_staff set
......
...@@ -537,6 +537,9 @@ ...@@ -537,6 +537,9 @@
store_id store_id
from tab_haoban_external_clerk_related from tab_haoban_external_clerk_related
where member_id = #{memberId} where member_id = #{memberId}
<if test="null != addCreateTime">
and add_create_time <![CDATA[ <= ]]> #{addCreateTime}
</if>
and status_flag = 1 and status_flag = 1
</select> </select>
......
...@@ -250,6 +250,9 @@ ...@@ -250,6 +250,9 @@
<if test="type != null and type ==1 "> <if test="type != null and type ==1 ">
and wx_enterprise_id = #{wxEnterpriseId} and wx_enterprise_id = #{wxEnterpriseId}
</if> </if>
<if test="orderType != null">
and order_type = #{orderType}
</if>
order by create_time desc order by create_time desc
</select> </select>
......
package com.gic.haoban.manage.web.controller; package com.gic.haoban.manage.web.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.google.common.collect.Lists;
import org.apache.commons.lang.StringUtils;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.clerk.api.dto.right.RightMenuDTO; import com.gic.clerk.api.dto.right.RightMenuDTO;
...@@ -22,6 +8,15 @@ import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO; ...@@ -22,6 +8,15 @@ import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil; 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.manage.web.errCode.HaoBanErrCode; import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import org.apache.commons.lang.StringUtils;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/** /**
* *
......
...@@ -136,6 +136,13 @@ public class StaffController extends WebBaseController { ...@@ -136,6 +136,13 @@ public class StaffController extends WebBaseController {
StaffListDTO dto = EntityUtil.changeEntityByJSON(StaffListDTO.class, qo); StaffListDTO dto = EntityUtil.changeEntityByJSON(StaffListDTO.class, qo);
dto.setWxEnterpriseId(wxEnterpriseId); dto.setWxEnterpriseId(wxEnterpriseId);
dto.setDepartmentIds(departmentIds); dto.setDepartmentIds(departmentIds);
if (qo.getGetAllFlag() == 1){
//续期订单需要查询所有数据
BasePageInfo basePageInfo = new BasePageInfo();
basePageInfo.setPageNum(1);
basePageInfo.setPageSize(Integer.MAX_VALUE);
dto.setPageInfo(basePageInfo);
}
Page<StaffDTO> page = staffApiService.pageStaff(dto); Page<StaffDTO> page = staffApiService.pageStaff(dto);
logger.info("pages={},totalPage={}", page.getCurrentPage(), page.getTotalPage()); logger.info("pages={},totalPage={}", page.getCurrentPage(), page.getTotalPage());
...@@ -465,7 +472,7 @@ public class StaffController extends WebBaseController { ...@@ -465,7 +472,7 @@ public class StaffController extends WebBaseController {
@RequestMapping("staff-export") @RequestMapping("staff-export")
public HaobanResponse staffExport(HttpServletRequest request, HttpServletResponse response,String departmentId, Integer activeFlag, Integer relationFlag, public HaobanResponse staffExport(HttpServletRequest request, HttpServletResponse response,String departmentId, Integer activeFlag, Integer relationFlag,
String keyWord, String permitState,BasePageInfo pageInfo,@RequestParam(defaultValue = "create_time") String sortField, String keyWord, String permitState,BasePageInfo pageInfo,@RequestParam(defaultValue = "create_time") String sortField,
@RequestParam(defaultValue = "desc") String sortType,String enterpriseIdParam) { @RequestParam(defaultValue = "desc") String sortType,String enterpriseIdParam,String startTime,String endTime) {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser(); WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId(); String wxEnterpriseId = login.getWxEnterpriseId();
if(StringUtils.isBlank(departmentId)){ if(StringUtils.isBlank(departmentId)){
...@@ -490,6 +497,8 @@ public class StaffController extends WebBaseController { ...@@ -490,6 +497,8 @@ public class StaffController extends WebBaseController {
dto.setSortField(sortField); dto.setSortField(sortField);
dto.setSortType(sortType); dto.setSortType(sortType);
dto.setEnterpriseIdParam(enterpriseIdParam); dto.setEnterpriseIdParam(enterpriseIdParam);
dto.setStartTime(startTime);
dto.setEndTime(endTime);
pageInfo.setPageSize(Integer.MAX_VALUE); pageInfo.setPageSize(Integer.MAX_VALUE);
int pageNum = 1; int pageNum = 1;
while (true) { while (true) {
......
package com.gic.haoban.manage.web.controller.licence;
import cn.hutool.core.convert.Convert;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.PageHelperUtils;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.api.dto.licence.AppOrderCheckDTO;
import com.gic.haoban.manage.api.dto.licence.AppOrderNoticeDTO;
import com.gic.haoban.manage.api.dto.licence.AppOrderPageDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.AppOrderPageQDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.AppOrderQDTO;
import com.gic.haoban.manage.api.service.licence.AppOrderApiService;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import com.gic.haoban.manage.web.qo.licence.AppOrderPageQO;
import com.gic.haoban.manage.web.qo.licence.AppOrderQO;
import com.gic.haoban.manage.web.vo.licence.AppOrderCheckVO;
import com.gic.haoban.manage.web.vo.licence.AppOrderNoticeVO;
import com.gic.haoban.manage.web.vo.licence.AppOrderPageVO;
import org.apache.commons.lang3.StringUtils;
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;
/**
* @description:
* @Author: wenhua
* @Date: 2023/6/25 15:54
*/
@RestController
@RequestMapping("/app-order")
public class AppOrderController {
private static Logger logger = LogManager.getLogger(AppOrderController.class);
@Autowired
private AppOrderApiService appOrderApiService;
/**
* 分页查询应用订单列表
*/
@RequestMapping("app-order-page")
public RestResponse<Page<AppOrderPageVO>> getAppOrderPage(@RequestBody AppOrderPageQO qo) {
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
if (loginUser == null || StringUtils.isBlank(loginUser.getEnterpriseId())) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
AppOrderPageQDTO qdto = JSONObject.parseObject(JSONObject.toJSONString(qo), AppOrderPageQDTO.class);
qdto.setWxEnterpriseId(loginUser.getWxEnterpriseId());
Page<AppOrderPageDTO> page = appOrderApiService.getAppOrderPage(qdto).getResult();
Page<AppOrderPageVO> result = PageHelperUtils.changePageToCurrentPage(page, AppOrderPageVO.class);
return RestResponse.successResult(result);
}
/**
* 新增订单
*/
@RequestMapping("app-order-save")
public RestResponse<Boolean> saveAppOrder(@RequestBody AppOrderQO qo) {
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
if (loginUser == null || StringUtils.isBlank(loginUser.getEnterpriseId())) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
String wxEnterpriseId = loginUser.getWxEnterpriseId();
String clerkName = loginUser.getClerkName();
String clerkId = loginUser.getClerkId();
AppOrderQDTO qdto = JSONObject.parseObject(JSONObject.toJSONString(qo), AppOrderQDTO.class);
qdto.setWxEnterpriseId(wxEnterpriseId);
qdto.setCreatorName(clerkName);
qdto.setCreatorId(clerkId);
ServiceResponse<Boolean> response = appOrderApiService.saveAppOrder(qdto);
if (response.isSuccess()) {
return RestResponse.successResult(true);
}
return RestResponse.failure(response.getCode(), response.getMessage());
}
/**
* 取消订单
*/
@RequestMapping("app-order-cancel")
public RestResponse<Boolean> cancelAppOrder(@RequestParam Long orderId) {
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
if (loginUser == null || StringUtils.isBlank(loginUser.getEnterpriseId())) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
ServiceResponse<Boolean> response = appOrderApiService.cancelAppOrder(orderId);
if (response.isSuccess()) {
return RestResponse.successResult(true);
}
return RestResponse.failure(response.getCode(), response.getMessage());
}
/**
* 购买弹窗校验
*/
@RequestMapping("app-order-check")
public RestResponse<AppOrderCheckVO> checkAppOrder() {
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
if (loginUser == null || StringUtils.isBlank(loginUser.getEnterpriseId())) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
ServiceResponse<AppOrderCheckDTO> response = appOrderApiService.checkAppOrder(loginUser.getWxEnterpriseId());
AppOrderCheckVO vo = JSONObject.parseObject(JSONObject.toJSONString(response.getResult()), AppOrderCheckVO.class);
return RestResponse.successResult(vo);
}
/**
* 登录好办弹窗校验
*/
@RequestMapping("app-order-notice")
public RestResponse<AppOrderNoticeVO> noticeAppOrder() {
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
if (loginUser == null || StringUtils.isBlank(loginUser.getEnterpriseId())) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
ServiceResponse<AppOrderNoticeDTO> response = appOrderApiService.noticeAppOrder(loginUser.getWxEnterpriseId());
AppOrderNoticeVO vo = JSONObject.parseObject(JSONObject.toJSONString(response.getResult()), AppOrderNoticeVO.class);
return RestResponse.successResult(vo);
}
}
...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.web.controller.licence; ...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.web.controller.licence;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
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.Page; import com.gic.api.base.commons.Page;
...@@ -15,19 +16,26 @@ import com.gic.enterprise.api.service.EnterpriseService; ...@@ -15,19 +16,26 @@ import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO; import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil; import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.api.dto.WxEnterpriseDTO; import com.gic.haoban.manage.api.dto.WxEnterpriseDTO;
import com.gic.haoban.manage.api.dto.licence.AppOrderNoticeDTO;
import com.gic.haoban.manage.api.dto.licence.LicenceOrderDTO; 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.licence.LicenceOrderPageDTO;
import com.gic.haoban.manage.api.dto.licence.RenewalUserDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.LicenceOrderPageQDTO; 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.api.dto.qdto.licence.LicenceOrderQDTO;
import com.gic.haoban.manage.api.dto.qdto.licence.RenewalUserQDTO;
import com.gic.haoban.manage.api.service.WxEnterpriseApiService; import com.gic.haoban.manage.api.service.WxEnterpriseApiService;
import com.gic.haoban.manage.api.service.licence.AppOrderApiService;
import com.gic.haoban.manage.api.service.licence.LicenceOrderApiService; import com.gic.haoban.manage.api.service.licence.LicenceOrderApiService;
import com.gic.haoban.manage.web.config.Config; import com.gic.haoban.manage.web.config.Config;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode; import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import com.gic.haoban.manage.web.log.LogRecordUserServiceImpl; import com.gic.haoban.manage.web.log.LogRecordUserServiceImpl;
import com.gic.haoban.manage.web.qo.licence.LicenceOrderPageQO; import com.gic.haoban.manage.web.qo.licence.LicenceOrderPageQO;
import com.gic.haoban.manage.web.qo.licence.LicenceOrderQO; import com.gic.haoban.manage.web.qo.licence.LicenceOrderQO;
import com.gic.haoban.manage.web.qo.licence.RenewalUserQO;
import com.gic.haoban.manage.web.vo.licence.AppOrderNoticeVO;
import com.gic.haoban.manage.web.vo.licence.LicenceOrderPageVO; import com.gic.haoban.manage.web.vo.licence.LicenceOrderPageVO;
import com.gic.haoban.manage.web.vo.licence.LicenceOrderVO; import com.gic.haoban.manage.web.vo.licence.LicenceOrderVO;
import com.gic.haoban.manage.web.vo.licence.RenewalUserVO;
import com.gic.log.record.anno.GicLogRecord; import com.gic.log.record.anno.GicLogRecord;
import com.gic.log.record.util.GicLogRecordCategoryEnum; import com.gic.log.record.util.GicLogRecordCategoryEnum;
import com.gic.log.record.util.GicLogRecordEvaluationContext; import com.gic.log.record.util.GicLogRecordEvaluationContext;
...@@ -44,6 +52,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -44,6 +52,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
/** /**
...@@ -68,6 +77,8 @@ public class LicenceOrderController { ...@@ -68,6 +77,8 @@ public class LicenceOrderController {
private Pay4WXService pay4WXService; private Pay4WXService pay4WXService;
@Autowired @Autowired
private Config config; private Config config;
@Autowired
private AppOrderApiService appOrderApiService;
/** /**
* 查询订单详情 * 查询订单详情
...@@ -100,7 +111,7 @@ public class LicenceOrderController { ...@@ -100,7 +111,7 @@ public class LicenceOrderController {
* 新增订单 * 新增订单
* *
* @param licenceOrderQO * @param licenceOrderQO
* @return JSONObject key:orderId 和 price * @return JSONObject key:orderId 和 price 和 invalidUserList
*/ */
@RequestMapping("licence-order-saveOrUpdate") @RequestMapping("licence-order-saveOrUpdate")
@GicLogRecord(value = "${#logValue}", category = GicLogRecordCategoryEnum.HB_LICENCE_ORDER, @GicLogRecord(value = "${#logValue}", category = GicLogRecordCategoryEnum.HB_LICENCE_ORDER,
...@@ -119,12 +130,22 @@ public class LicenceOrderController { ...@@ -119,12 +130,22 @@ public class LicenceOrderController {
if (response.isSuccess()) { if (response.isSuccess()) {
JSONObject object = JSONObject.parseObject(response.getResult(), JSONObject.class); JSONObject object = JSONObject.parseObject(response.getResult(), JSONObject.class);
String time = ""; String time = "";
String logValue = null ;
if (licenceOrderQO.getTimeType() == 1) { if (licenceOrderQO.getTimeType() == 1) {
time = licenceOrderQO.getTimeValue() + "个月"; time = licenceOrderQO.getTimeValue() + "个月";
} else { } else if (licenceOrderQO.getTimeType() == 2){
time = licenceOrderQO.getTimeValue() + "天"; time = licenceOrderQO.getTimeValue() + "天";
}else {
//将秒级时间戳转换位Date类型
SimpleDateFormat formatter = new SimpleDateFormat(DateUtil.FORMAT_DATE_10);
String date_time = formatter.format(new Date(Long.valueOf(licenceOrderQO.getTimeValue()) * 1000L));
time = "指定到期时间"+date_time + " 23:59:59";
}
if (licenceOrderQO.getOrderType() == 1){
logValue = "【购买企微许可账号】:订单编号ZH" + object.getString("orderId") + ",企业员工账号" + licenceOrderQO.getExternalContactCount() + "个,时长" + time;
}else if (licenceOrderQO.getOrderType() == 2){
logValue = "【续期企微许可账号】:订单编号ZH" + object.getString("orderId") + ",企业员工账号" + licenceOrderQO.getStaffIdList().size() + "个,时长" + time;
} }
String logValue = "【购买企微许可账号】:订单编号ZH" + object.getString("orderId") + ",企业员工账号" + licenceOrderQO.getExternalContactCount() + "个,时长" + time;
GicLogRecordEvaluationContext.putAttribute("logValue", logValue); GicLogRecordEvaluationContext.putAttribute("logValue", logValue);
return RestResponse.successResult(object); return RestResponse.successResult(object);
} }
...@@ -178,7 +199,12 @@ public class LicenceOrderController { ...@@ -178,7 +199,12 @@ public class LicenceOrderController {
if (response.isSuccess()) { if (response.isSuccess()) {
Boolean result = licenceOrderApiService.updateLicenceOrderType(orderId, type, enterpriseId, wxEnterpriseId, clerkName, 1).getResult(); Boolean result = licenceOrderApiService.updateLicenceOrderType(orderId, type, enterpriseId, wxEnterpriseId, clerkName, 1).getResult();
//操作日志记录 //操作日志记录
String logValue = "【取消购买企微许可账号订单】:订单编号" + dto.getOrderNumber() + ",取消时间" + DateUtil.dateToStr(new Date(), DateUtil.FORMAT_DATETIME_19); String logValue = null;
if (dto.getOrderType() == 1 ){
logValue = "【取消购买企微许可账号订单】:订单编号" + dto.getOrderNumber() + ",取消时间" + DateUtil.dateToStr(new Date(), DateUtil.FORMAT_DATETIME_19);
}else {
logValue = "【取消续期企微许可账号订单】:订单编号" + dto.getOrderNumber() + ",取消时间" + DateUtil.dateToStr(new Date(), DateUtil.FORMAT_DATETIME_19);
}
GicLogRecordEvaluationContext.putAttribute("logValue", logValue); GicLogRecordEvaluationContext.putAttribute("logValue", logValue);
return RestResponse.successResult(result); return RestResponse.successResult(result);
} }
...@@ -208,7 +234,12 @@ public class LicenceOrderController { ...@@ -208,7 +234,12 @@ public class LicenceOrderController {
String clerkName = loginUser.getClerkName(); String clerkName = loginUser.getClerkName();
ServiceResponse<Boolean> response = licenceOrderApiService.uploadLicenceOrderVoucher(orderId, voucher, enterpriseId, wxEnterpriseId, clerkName); ServiceResponse<Boolean> response = licenceOrderApiService.uploadLicenceOrderVoucher(orderId, voucher, enterpriseId, wxEnterpriseId, clerkName);
if (response.isSuccess()) { if (response.isSuccess()) {
String logValue = "【上传购买企微许可账号支付凭证】:订单编号" + dto.getOrderNumber() + ",上传时间" + DateUtil.dateToStr(new Date(), DateUtil.FORMAT_DATETIME_19); String logValue = null;
if (dto.getOrderType() ==1){
logValue = "【上传购买企微许可账号支付凭证】:订单编号" + dto.getOrderNumber() + ",上传时间" + DateUtil.dateToStr(new Date(), DateUtil.FORMAT_DATETIME_19);
}else {
logValue = "【上传续期企微许可账号支付凭证】:订单编号" + dto.getOrderNumber() + ",上传时间" + DateUtil.dateToStr(new Date(), DateUtil.FORMAT_DATETIME_19);
}
GicLogRecordEvaluationContext.putAttribute("logValue", logValue); GicLogRecordEvaluationContext.putAttribute("logValue", logValue);
return RestResponse.successResult(true); return RestResponse.successResult(true);
} }
...@@ -319,13 +350,21 @@ public class LicenceOrderController { ...@@ -319,13 +350,21 @@ public class LicenceOrderController {
* 查询企业是否存在未支付订单 * 查询企业是否存在未支付订单
*/ */
@RequestMapping("licence-order-isPay") @RequestMapping("licence-order-isPay")
public RestResponse<String> isPayLicenceOrder() { public RestResponse<AppOrderNoticeVO> isPayLicenceOrder() {
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser(); WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
if (loginUser == null || StringUtils.isBlank(loginUser.getEnterpriseId())) { if (loginUser == null || StringUtils.isBlank(loginUser.getEnterpriseId())) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg()); return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
} }
ServiceResponse<String> payLicenceOrder = licenceOrderApiService.isPayLicenceOrder(loginUser.getWxEnterpriseId()); ServiceResponse<String> payLicenceOrder = licenceOrderApiService.isPayLicenceOrder(loginUser.getWxEnterpriseId());
return RestResponse.successResult(payLicenceOrder.getResult()); AppOrderNoticeDTO result = appOrderApiService.noticeAppOrder(loginUser.getWxEnterpriseId()).getResult();
if (null != result && (0 == result.getType() || 4 == result.getType())){
if (StrUtil.isNotBlank(payLicenceOrder.getResult())){
result.setType(3);
result.setOrderId(payLicenceOrder.getResult());
}
}
AppOrderNoticeVO vo = JSONObject.parseObject(JSONObject.toJSONString(result), AppOrderNoticeVO.class);
return RestResponse.successResult(vo);
} }
/** /**
...@@ -348,7 +387,7 @@ public class LicenceOrderController { ...@@ -348,7 +387,7 @@ public class LicenceOrderController {
* 订单编号和企业微信订单编号模糊搜索 * 订单编号和企业微信订单编号模糊搜索
* *
* @param param 模糊查询 * @param param 模糊查询
* @param type 0 微信订单编号 1 企业微信订单编号 * @param type 0 微信订单编号 1 企业微信订单编号 2微信订单编号 3付费应用企业微信订单编号
* @return * @return
*/ */
@RequestMapping("get-order-id-list") @RequestMapping("get-order-id-list")
...@@ -374,6 +413,22 @@ public class LicenceOrderController { ...@@ -374,6 +413,22 @@ public class LicenceOrderController {
ServiceResponse<HashMap<String, Integer>> response = licenceOrderApiService.hasPopup(loginUser.getWxEnterpriseId()); ServiceResponse<HashMap<String, Integer>> response = licenceOrderApiService.hasPopup(loginUser.getWxEnterpriseId());
return RestResponse.successResult(response.getResult()); return RestResponse.successResult(response.getResult());
} }
/**
* 分页查询续期成员列表
*/
@RequestMapping("renewal-user-page")
public RestResponse<Page<RenewalUserVO>> getRenewalUserPage(@RequestBody RenewalUserQO renewalUserQO) {
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
if (loginUser == null || StringUtils.isBlank(loginUser.getEnterpriseId())) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
String wxEnterpriseId = loginUser.getWxEnterpriseId();
RenewalUserQDTO qdto = JSONObject.parseObject(JSONObject.toJSONString(renewalUserQO), RenewalUserQDTO.class);
qdto.setWxEnterpriseId(wxEnterpriseId);
ServiceResponse<Page<RenewalUserDTO>> page = licenceOrderApiService.getRenewalUserPage(qdto);
Page<RenewalUserVO> voPage = PageHelperUtils.changePageToCurrentPage(page.getResult(), RenewalUserVO.class);
return RestResponse.successResult(voPage);
}
} }
...@@ -27,7 +27,7 @@ public class StaffListQO implements Serializable { ...@@ -27,7 +27,7 @@ public class StaffListQO implements Serializable {
*/ */
private String keyWord; private String keyWord;
/** /**
* 许可状态 0 未激活,1 正常有效,2 即将过期,3 已过期,可多传,按‘,’隔开 * 许可状态 0 未激活,1 正常有效,2 即将过期,3 已过期,4 查询可以续期的成员(即状态是1、2、3的成员)
*/ */
private String permitState; private String permitState;
/** /**
...@@ -50,6 +50,42 @@ public class StaffListQO implements Serializable { ...@@ -50,6 +50,42 @@ public class StaffListQO implements Serializable {
* 分页参数 * 分页参数
*/ */
private BasePageInfo pageInfo; private BasePageInfo pageInfo;
/**
* 许可到期时间区间查询
*/
private String startTime;
/**
* 许可到期时间区间查询
*/
private String endTime;
/**
* 是否查询全部 0 否 1是 默认0
*/
private Integer getAllFlag = 0;
public Integer getGetAllFlag() {
return getAllFlag;
}
public void setGetAllFlag(Integer getAllFlag) {
this.getAllFlag = getAllFlag;
}
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;
}
public String getDepartmentId() { public String getDepartmentId() {
return departmentId; return departmentId;
......
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 AppOrderPageQO extends BasePageInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单状态1 - 待支付2 - 已支付3 - 订单取消4 - 支付过期5 - 退款申请中6 - 已退款7 - 交易完成8 - 待企业确认9 - 已部分退款
*/
private Integer orderStatus;
/**
* 企业微信订单id
*/
private String orderId;
}
package com.gic.haoban.manage.web.qo.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 AppOrderQO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单类型 0 新购、1 扩容、2 续期
*/
private Integer orderType;
/**
* 购买人数
*/
private Integer userNum;
/**
* 购买时长
*/
private Integer duration;
/**
* 购买生效期的开始时间
*/
private Date beginTime;
/**
* 购买生效期的结束时间
*/
private Date endTime;
}
...@@ -48,5 +48,9 @@ public class LicenceOrderPageQO extends BasePageInfo implements Serializable { ...@@ -48,5 +48,9 @@ public class LicenceOrderPageQO extends BasePageInfo implements Serializable {
* 订单创建结束时间 * 订单创建结束时间
*/ */
private String endTime; private String endTime;
/**
* 订单类型,1:购买帐号,2:续期帐号
*/
private Integer orderType;
} }
...@@ -4,6 +4,7 @@ import lombok.Data; ...@@ -4,6 +4,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* <p> * <p>
...@@ -52,7 +53,10 @@ public class LicenceOrderQO implements Serializable { ...@@ -52,7 +53,10 @@ public class LicenceOrderQO implements Serializable {
* 支付类型 1在线支付 2对公转账 * 支付类型 1在线支付 2对公转账
*/ */
private Integer payType; private Integer payType;
/**
* 续期成员staffIdList
*/
private List<String> staffIdList;
/** /**
* 校验金额 * 校验金额
*/ */
......
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;
/**
* @description:
* @Author: wenhua
* @Date: 2023/6/12 17:08
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class RenewalUserQO extends BasePageInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 员工姓名或手机号查询
*/
private String searchParam;
/**
* 订单id
*/
private Long orderId;
}
...@@ -50,6 +50,18 @@ public class StaffActiveDataVO implements Serializable { ...@@ -50,6 +50,18 @@ public class StaffActiveDataVO implements Serializable {
* 已合并许可总数 * 已合并许可总数
*/ */
private Integer merged; private Integer merged;
/**
* 即将过期的许可总数
*/
private Integer expiring;
public Integer getExpiring() {
return expiring;
}
public void setExpiring(Integer expiring) {
this.expiring = expiring;
}
public Integer getMerged() { public Integer getMerged() {
return merged; return merged;
......
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 AppOrderCheckVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 弹窗类型 0 正常 1新购 2 续期
*/
private Integer type;
/**
* 已购买人数
*/
private Integer userNum;
/**
* 购买生效期的开始时间
*/
private Date beginTime;
/**
* 购买生效期的结束时间
*/
private Date endTime;
/**
* 合同到期天数和应用购买天数之差
*/
private Integer contractDay;
/**
* 当前时间
*/
private Date now;
}
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 AppOrderNoticeVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 弹窗类型 0 无需弹窗 1 未购买付费应用弹窗 2付费应用已过期弹窗 3 查询购买许可账号是否存在未支付订单 4登录好办,即将过期弹窗
*/
private Integer type;
/**
* 是否支付 0否 1是
*/
private Integer payFlag;
/**
* 未支付订单id
*/
private String orderId;
/**
* 支付的url
*/
private String orderUrl;
/**
* 到期时间
*/
private Date endTime;
}
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 AppOrderPageVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
private Long id;
/**
* wx企业Id
*/
private String wxEnterpriseId;
/**
* 企业微信订单id
*/
private String orderId;
/**
* 订单状态1 - 待支付2 - 已支付3 - 订单取消4 - 支付过期5 - 退款申请中6 - 已退款7 - 交易完成8 - 待企业确认9 - 已部分退款
*/
private Integer orderStatus;
/**
* 订单类型 0 新购、1 扩容、2 续期
*/
private Integer orderType;
/**
* 购买人数
*/
private Integer userNum;
/**
* 购买时长
*/
private Integer duration;
/**
* 购买生效期的开始时间
*/
private Date beginTime;
/**
* 购买生效期的结束时间
*/
private Date endTime;
/**
* 支付时间
*/
private Date payTime;
/**
* 原价,单位分
*/
private Integer originPrice;
/**
* 折后价,单位分
*/
private Integer paidPrice;
/**
* 收款订单链接
*/
private String orderUrl;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人
*/
private String creatorId;
/**
* 创建人名称
*/
private String creatorName;
/**
* 订单支付到期时间
*/
private Date expireTime;
/**
* 有效状态 0 -- 1待生效 2生效中 3已失效
*/
private Integer effectiveState;
}
package com.gic.haoban.manage.web.vo.licence;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @description:
* @Author: wenhua
* @Date: 2023/6/12 17:10
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class RenewalUserVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long renewalId;
/**
* 电话
*/
private String phone;
/**
* 名称
*/
private String name;
/**
* 职位
*/
private String postion;
}
...@@ -134,5 +134,6 @@ ...@@ -134,5 +134,6 @@
<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 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"/> <dubbo:reference id="pay4WXService" interface="com.gic.thirdparty.api.service.Pay4WXService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="appOrderApiService" interface="com.gic.haoban.manage.api.service.licence.AppOrderApiService" 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