Compare commits

..

No commits in common. "d96583d316ecbb4dbcdd85e7004ef834145c465d" and "07ff5cd199df501638e7b0099fd5a559b043dd26" have entirely different histories.

19 changed files with 391 additions and 117 deletions

View File

@ -1,20 +1,37 @@
package com.hzs.report.stat;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.EApprovalBusiness;
import com.hzs.report.stat.dto.StatisticalLogDTO;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import java.util.List;
/**
* 统计分析
* @description: 统计分析
* @author: zhang jing
* @date: 2025/2/12 15:22
* @param:
* @return:
**/
public interface IMemberReportServiceApi {
/**
* 定时任务批量处理统计会员以及伞下金额业绩盒数
**/
R<?> pushAmountBoxmethod();
/**
* 定时任务7天重算直推会员金额业绩盒数
* @description: 定时任务批量处理统计会员以及伞下金额业绩盒数
* @author: zhang jing
* @date: 2025/2/13 10:41
* @param: []
* @return: com.hzs.common.core.domain.R
**/
R<?> repeatPushAmountBoxmethod(String startDateStr, String endDateStr);
R pushAmountBoxmethod();
/**
* @description: 定时任务7天重算直推会员金额业绩盒数
* @author: zhang jing
* @date: 2025/2/13 10:41
* @param: [startDateStr, endDateStr]
* @return: com.hzs.common.core.domain.R
**/
R repeatPushAmountBoxmethod(String startDateStr, String endDateStr);
}

View File

@ -30,22 +30,27 @@ import java.util.List;
public class MemberSettleBonusProvider implements IMemberSettleBonusApi {
@Autowired
private ICuMemberMonthAchieveService iCuMemberMonthAchieveService;
private ICuMemberMonthAchieveService cuMemberMonthAchieveService;
@Autowired
private IBonusSettleService iBonusSettleService;
private IBonusSettleService bonusSettleService;
@Autowired
private IBonusGrantService iBonusGrantService;
private ICuMemberBonusService cuMemberBonusService;
@Autowired
private ICuMemberBonusService iCuMemberBonusService;
private IBonusGrantService bonusGrantService;
@Autowired
private ICuMemberAchieveService iCuMemberAchieveService;
private ICuMemberAchieveService cuMemberAchieveService;
@Autowired
private ICuMemberRetailLogService iCuMemberRetailLogService;
private ICuMemberRetailLogService cuMemberRetailLogService;
@Override
public R<Boolean> calculateCumberBonusBySecond(String orderCode) {
try {
iBonusSettleService.calculateCumberBonusBySecond(orderCode);
bonusSettleService.calculateCumberBonusBySecond(orderCode);
} catch (Exception e) {
return R.fail();
}
@ -64,7 +69,7 @@ public class MemberSettleBonusProvider implements IMemberSettleBonusApi {
@Override
public void backupsSettleBonusEveryday() {
iCuMemberBonusService.backupsSettleBonusEveryday();
cuMemberBonusService.backupsSettleBonusEveryday();
}
class BonusCalculateBonus extends Thread {
@ -77,53 +82,55 @@ public class MemberSettleBonusProvider implements IMemberSettleBonusApi {
@Override
public void run() {
if (DateUtils.compareDateBefore(settleDate, DateUtils.parseStringToDate("2023-09-04"))) {
return;
}
Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleDate);
log.info("奖金结算开始, 结算时间:{}", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, settleDate));
log.info("奖金结算完成,结算时间:{}", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, settleDate));
// 奖金结算
try {
iCuMemberBonusService.autoCalculateBonus(settleDate, settleEndDate);
log.info("奖金结算结束");
cuMemberBonusService.autoCalculateBonus(settleDate, settleEndDate);
} catch (Exception e) {
log.error("奖金结算异常,结算时间:{}", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, settleDate), e);
log.info("BonusCalculateBonus error: ", e);
}
}
}
@Override
public void insertCuMemberAchieveByEveryDay() {
iCuMemberMonthAchieveService.insertCuMemberAchieveByEveryDay(DateUtils.beforeDate(1, ChronoUnit.DAYS));
cuMemberMonthAchieveService.insertCuMemberAchieveByEveryDay(DateUtils.beforeDate(1, ChronoUnit.DAYS));
}
@Override
public void autoPublishBonus() {
iBonusGrantService.publishBonusByPeriodEveryDay();
bonusGrantService.publishBonusByPeriodEveryDay();
}
@Override
public void autoGrantBonus() {
iBonusGrantService.grantWithdrawBonusByPeriodEveryDay();
bonusGrantService.grantWithdrawBonusByPeriodEveryDay();
}
@Override
public Boolean chargeBackSaOrder(SaOrder saOrder) {
return iCuMemberAchieveService.chargeBackSaOrder(saOrder);
return cuMemberAchieveService.chargeBackSaOrder(saOrder);
}
@Override
public void calculateCuMemberRetailRangeBonusBySaOrder() {
List<CuMemberRetailLog> cuMemberRetailLogs = iCuMemberRetailLogService.queryCuMemberRetailLog();
List<CuMemberRetailLog> cuMemberRetailLogs = cuMemberRetailLogService.queryCuMemberRetailLog();
if (cuMemberRetailLogs.size() > 0) {
List<CuMemberRetailLog> successLogList = new ArrayList<>();
try {
for (CuMemberRetailLog cuMemberRetailLog : cuMemberRetailLogs) {
iBonusSettleService.calculateCuMemberRetailRangeBonusBySaOrder(cuMemberRetailLog.getOrderCode());
bonusSettleService.calculateCuMemberRetailRangeBonusBySaOrder(cuMemberRetailLog.getOrderCode());
successLogList.add(cuMemberRetailLog);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (successLogList.size() > 0) {
iCuMemberRetailLogService.updateCuMemberRetailLogByList(successLogList);
cuMemberRetailLogService.updateCuMemberRetailLogByList(successLogList);
}
}
}
@ -131,6 +138,6 @@ public class MemberSettleBonusProvider implements IMemberSettleBonusApi {
@Override
public R<CuMemberRetail> queryValidateBoxOrAchieve(Long pkMember) {
return R.ok(iBonusSettleService.queryValidateBoxOrAchieve(pkMember));
return R.ok(bonusSettleService.queryValidateBoxOrAchieve(pkMember));
}
}

View File

@ -1,7 +1,10 @@
package com.hzs.retail.login.service.impl;
import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Validator;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.hzs.common.core.constant.SysConstants;
import com.hzs.common.core.constant.msg.SystemMsgConstants;
import com.hzs.common.core.enums.EAccountStatus;
import com.hzs.common.core.enums.ECategory;
@ -27,6 +30,7 @@ import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
/**
* 新零售会员登录服务
@ -48,27 +52,27 @@ public class RetailMemberLoginServiceImpl implements IRetailMemberLoginService {
throw new ServiceException("会员账号或联系方式必须填写");
}
CuMemberExt member = iCuMemberService.getRetailMemberByCode(userName);
CuMemberExt member;
// if (userName.startsWith(SysConstants.RETAIL_PREFIX)) {
// // 会员编号登录
// member = iCuMemberService.getRetailMemberByCode(userName);
// } else if ((userName.length() == 11 && userName.startsWith("1"))
// || Validator.isEmail(userName)) {
// // 手机号 邮箱 登录
// List<CuMemberExt> memberList = iCuMemberService.listMemberByPhone(userName);
// if (CollectionUtil.isEmpty(memberList)) {
// throw new ServiceException("会员账号或联系方式填写有误,请检查后重试");
// }
// if (memberList.size() > 1) {
// // 联系方式超过两个只能使用会员编号进行登录
// throw new ServiceException("当前会员需要使用会员编号进行登录");
// }
// member = memberList.get(0);
// } else {
// // 用户/密码必须填写
// throw new ServiceException("会员账号或联系方式填写有误,请检查后重试");
// }
if (userName.startsWith(SysConstants.RETAIL_PREFIX)) {
// 会员编号登录
member = iCuMemberService.getRetailMemberByCode(userName);
} else if ((userName.length() == 11 && userName.startsWith("1"))
|| Validator.isEmail(userName)) {
// 手机号 邮箱 登录
List<CuMemberExt> memberList = iCuMemberService.listMemberByPhone(userName);
if (CollectionUtil.isEmpty(memberList)) {
throw new ServiceException("会员账号或联系方式填写有误,请检查后重试");
}
if (memberList.size() > 1) {
// 联系方式超过两个只能使用会员编号进行登录
throw new ServiceException("当前会员需要使用会员编号进行登录");
}
member = memberList.get(0);
} else {
// 用户/密码必须填写
throw new ServiceException("会员账号或联系方式填写有误,请检查后重试");
}
if (null == member) {
recordLoginLog(null, EStatus.NO, userName + " 登录会员不存在");
@ -118,20 +122,20 @@ public class RetailMemberLoginServiceImpl implements IRetailMemberLoginService {
updateFlag = true;
}
}
// if (null == member.getPkTeamCode()) {
// // 空单注册会员如果团队为空处理
// CuMemberExt teamMember = iCuMemberService.queryParentTeam(member.getPkId());
// if (null != teamMember) {
// updateWrapper.set(CuMember::getPkTeamCode, teamMember.getPkTeamCode());
// updateFlag = true;
// }
// }
if (null == member.getPkTeamCode()) {
// 空单注册会员如果团队为空处理
CuMemberExt teamMember = iCuMemberService.queryParentTeam(member.getPkId());
if (null != teamMember) {
updateWrapper.set(CuMember::getPkTeamCode, teamMember.getPkTeamCode());
updateFlag = true;
}
}
if (updateFlag) {
updateWrapper.eq(CuMember::getPkId, member.getPkId());
iCuMemberService.update(updateWrapper);
}
} catch (Exception e) {
log.error("会员 {} 补全【体系】错误", member.getMemberCode());
log.error("会员 {} 补全【体系】或【团队】错误", member.getMemberCode());
}
recordLoginLog(loginMember.getPkId(), EStatus.YES, "登录成功");

View File

@ -166,8 +166,10 @@ public class RetailMemberController extends BaseController {
// 达到条件但是没有选择区域需要弹窗选择区域
CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType);
// TODO 2025.06.09 新需求选择区域判断等级达到合伙人血缘累计业绩达到30万可以选择
if (retailAchieve.getSmallAreaPv().add(retailAchieve.getBigArealPv()).compareTo(SysConstants.TOTAL_AREA_PV) < 0) {
// 2024.12.30 添加需求存在手动V0升V5需要判断小市场业绩达到2万以上才可以进行开通
if (retailAchieve.getSmallAreaPv().multiply(new BigDecimal("10000")).compareTo(SysConstants.SMALL_AREA_PV) < 0
|| retailAchieve.getBigArealPv().multiply(new BigDecimal("10000")).compareTo(SysConstants.SMALL_AREA_PV) < 0
) {
return AjaxResult.error("还未达到选择收益区域条件");
}
}

View File

@ -8,7 +8,11 @@ import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 统计分析相关dubbo服务
* @description: 统计分析相关dubbo服务
* @author: zhang jing
* @date: 2025/2/12 15:23
* @param:
* @return:
**/
@Slf4j
@DubboService
@ -17,14 +21,29 @@ public class MemberReportServiceProvider implements IMemberReportServiceApi {
@Autowired
private MemberReportService iMemberReportService;
/**
* @description: 定时任务批量处理统计会员以及伞下金额业绩盒数
* @author: zhang jing
* @date: 2025/2/12 15:28
* @param: []
* @return: com.hzs.common.core.domain.R
**/
@Override
public R<?> pushAmountBoxmethod() {
public R pushAmountBoxmethod() {
iMemberReportService.pushAmountBoxmethod();
return R.ok();
}
/**
* @description: 定时任务7天重算直推会员金额业绩盒数
* @author: zhang jing
* @date: '2025/2/12' 16:10
* @param: [startDateStr, endDateStr]
* @return: com.hzs.common.core.domain.R
**/
@Override
public R<?> repeatPushAmountBoxmethod(String startDateStr, String endDateStr) {
public R repeatPushAmountBoxmethod(String startDateStr, String endDateStr) {
iMemberReportService.repeatPushAmountBoxmethod(startDateStr,endDateStr);
return R.ok();
}

View File

@ -29,13 +29,13 @@ public class SysConstants {
public static final String PAY_PASSWORD = "222222";
/**
* 血缘累计业绩30万
* 小市场2万业绩人民币
*/
public static final BigDecimal TOTAL_AREA_PV = new BigDecimal("300000");
public static final BigDecimal SMALL_AREA_PV = new BigDecimal("20000");
/**
* 开放使用会员编号用于支付登录查看数据
*/
public static final List<String> CONTROL_MEMBER_LIST = Arrays.asList("RE20240001", "RE20240002");
public static final List<String> CONTROL_MEMBER_LIST = Arrays.asList("HZS20240001", "HZS20240002");
}

View File

@ -15,6 +15,9 @@ import java.util.Date;
/**
* 短信发送记录
*
* @author hzs
* @since 2023-03-08
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -22,6 +22,8 @@ import java.util.concurrent.TimeUnit;
/**
* token验证处理
*
* @author hzs
*/
@Slf4j
@Component

View File

@ -6,13 +6,19 @@ import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.temporal.ChronoUnit;
import java.util.Date;
/**
* 每日奖金计算定时任务
* @description: 每日奖金计算定时任务
* @author: sui q
* @time: 2023/4/10 14:19
* @classname: BonusSettleJob
* @package_name: com.hzs.third.job
* version 1.0.0
*/
@Component
@Slf4j
@ -20,124 +26,173 @@ import java.util.Date;
public class BonusSettleJob {
@DubboReference
IMemberSettleBonusApi iMemberSettleBonusApi;
private IMemberSettleBonusApi memberBonusSettleApi;
/**
* 奖金每天自动结算,计算前一天奖金
*
* @return: void
* @Author: sui q
* @Date: 2023/3/4 13:48
*/
@XxlJob("backSettleBonus")
// @Scheduled(cron = "10 8 10 * * ?")
public void backupsSettleBonusEveryday() {
log.info("开始进行奖金结算");
iMemberSettleBonusApi.backupsSettleBonusEveryday();
memberBonusSettleApi.backupsSettleBonusEveryday();
}
/**
* 奖金每天自动结算,计算前一天奖金
*
* @return: void
* @Author: sui q
* @Date: 2023/3/4 13:48
*/
@XxlJob("autoSettleBonus")
// @Scheduled(cron = "10 8 10 * * ?")
public void autoSettleBonusEveryday() {
Date startDate = DateUtils.beforeDate(7, ChronoUnit.DAYS, DateUtils.currentDate());
log.info("开始进行奖金结算");
iMemberSettleBonusApi.autoCalculateBonus(startDate);
memberBonusSettleApi.autoCalculateBonus(startDate);
}
/**
* 奖金每天自动结算,计算前一天奖金
*
* @return: void
* @Author: sui q
* @Date: 2023/3/4 13:48
*/
@XxlJob("autoSettleBonus1")
public void autoSettleBonusEveryday1() {
Date startDate = DateUtils.beforeDate(6, ChronoUnit.DAYS, DateUtils.currentDate());
log.info("开始进行奖金结算");
iMemberSettleBonusApi.autoCalculateBonus(startDate);
memberBonusSettleApi.autoCalculateBonus(startDate);
}
/**
* 奖金每天自动结算,计算前一天奖金
*
* @return: void
* @Author: sui q
* @Date: 2023/3/4 13:48
*/
@XxlJob("autoSettleBonus2")
public void autoSettleBonusEveryday2() {
Date startDate = DateUtils.beforeDate(5, ChronoUnit.DAYS, DateUtils.currentDate());
log.info("开始进行奖金结算");
iMemberSettleBonusApi.autoCalculateBonus(startDate);
memberBonusSettleApi.autoCalculateBonus(startDate);
}
/**
* 奖金每天自动结算,计算前一天奖金
*
* @return: void
* @Author: sui q
* @Date: 2023/3/4 13:48
*/
@XxlJob("autoSettleBonus3")
public void autoSettleBonusEveryday3() {
Date startDate = DateUtils.beforeDate(4, ChronoUnit.DAYS, DateUtils.currentDate());
log.info("开始进行奖金结算");
iMemberSettleBonusApi.autoCalculateBonus(startDate);
memberBonusSettleApi.autoCalculateBonus(startDate);
}
/**
* 奖金每天自动结算,计算前一天奖金
*
* @return: void
* @Author: sui q
* @Date: 2023/3/4 13:48
*/
@XxlJob("autoSettleBonus4")
// @Scheduled(cron = "10 6 11 * * ?")
public void autoSettleBonusEveryday4() {
Date startDate = DateUtils.beforeDate(3, ChronoUnit.DAYS, DateUtils.currentDate());
log.info("开始进行奖金结算");
iMemberSettleBonusApi.autoCalculateBonus(startDate);
memberBonusSettleApi.autoCalculateBonus(startDate);
}
/**
* 奖金每天自动结算,计算前一天奖金
*
* @return: void
* @Author: sui q
* @Date: 2023/3/4 13:48
*/
@XxlJob("autoSettleBonus5")
public void autoSettleBonusEveryday5() {
Date startDate = DateUtils.beforeDate(2, ChronoUnit.DAYS, DateUtils.currentDate());
log.info("开始进行奖金结算");
iMemberSettleBonusApi.autoCalculateBonus(startDate);
memberBonusSettleApi.autoCalculateBonus(startDate);
}
/**
* 奖金每天自动结算,计算前一天奖金
*
* @return: void
* @Author: sui q
* @Date: 2023/3/4 13:48
*/
@XxlJob("autoSettleBonus6")
public void autoSettleBonusEveryday6() {
Date startDate = DateUtils.beforeDate(1, ChronoUnit.DAYS, DateUtils.currentDate());
log.info("开始进行奖金结算");
iMemberSettleBonusApi.autoCalculateBonus(startDate);
memberBonusSettleApi.autoCalculateBonus(startDate);
}
/*
* 自动公布奖金
* @description: 自动公布奖金
* @author: sui q
* @date: 2023/4/24 14:26
* @param: null null
**/
@XxlJob("autoPublishBonus")
public void autoPublishBonusEveryday() {
log.info("开始进行奖金公布");
iMemberSettleBonusApi.autoPublishBonus();
memberBonusSettleApi.autoPublishBonus();
log.info("奖金公布完成");
}
/*
* 自动发放奖金
* @description: 自动发放奖金
* @author: sui q
* @date: 2023/4/24 14:26
* @param: null null
**/
@XxlJob("autoGrantBonus")
// @Scheduled(cron = "10 42 13 * * ?")
public void autoGrantBonusEveryday() {
log.info("开始进行奖金发放");
iMemberSettleBonusApi.autoGrantBonus();
memberBonusSettleApi.autoGrantBonus();
log.info("奖金发放完成");
}
/*
* 自动结算每日业绩每月业绩用于统计分析
* @description: 自动结算每日业绩每月业绩用于统计分析
* @author: sui q
* @date: 2023/9/1 9:53
* @param: null null
**/
@XxlJob("autoSettleMember")
// @Scheduled(cron = "50 55 15 * * ?")
public void autoSettleMemberAchieveEveryday() {
log.info("开始进行会员业绩计算");
iMemberSettleBonusApi.insertCuMemberAchieveByEveryDay();
memberBonusSettleApi.insertCuMemberAchieveByEveryDay();
}
/*
* 自动结算每日业绩每月业绩用于统计分析
* @description: 自动结算每日业绩每月业绩用于统计分析
* @author: sui q
* @date: 2023/9/1 9:53
* @param: null null
**/
@XxlJob("autoSecondBonus")
public void autoSettleMemberBonusBySecond() {
log.info("开始进行会员业绩计算");
iMemberSettleBonusApi.calculateCuMemberRetailRangeBonusBySaOrder();
memberBonusSettleApi.calculateCuMemberRetailRangeBonusBySaOrder();
}
}

View File

@ -9,6 +9,12 @@ import org.springframework.stereotype.Component;
/**
* 会员模块定时任务
*
* @Description:
* @Author: ljc
* @Time: 2023/4/11 19:11
* @Classname: CuMemberJob
* @Package_name: com.hzs.member.job
*/
@ConditionalOnProperty(name = "xxl-job.start", havingValue = "true")
@Component
@ -16,22 +22,23 @@ import org.springframework.stereotype.Component;
public class CuMemberJob {
@DubboReference
IMemberJobServiceApi iMemberJobServiceApi;
IMemberJobServiceApi memberJobServiceApi;
/**
* 定时插入账户详情数据
*/
@XxlJob("insertAccountDetail")
public void insertAccountDetail() {
iMemberJobServiceApi.insertAccountDetail();
memberJobServiceApi.insertAccountDetail();
}
/**
* 自动提现
*/
@XxlJob("automaticWithdrawal")
public void automaticWithdrawal() {
iMemberJobServiceApi.automaticWithdrawal();
memberJobServiceApi.automaticWithdrawal();
}
}

View File

@ -10,6 +10,7 @@ import com.hzs.member.statis.ICuBonusStatisServiceApi;
import com.hzs.member.statis.ICuBonusVertexStatisServiceApi;
import com.hzs.report.stat.IMemberReportServiceApi;
import com.hzs.retail.member.IMemberRetailApi;
import com.hzs.system.config.IBdBarCodeServiceApi;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
@ -19,22 +20,32 @@ import org.springframework.stereotype.Component;
import java.time.temporal.ChronoUnit;
import java.util.Date;
/**
* @BelongsProject: hzs_cloud
* @BelongsPackage: com.hzs.third.job
* @Author: yh
* @CreateTime: 2023-04-27 09:31
* @Description:
* @Version: 1.0
*/
@ConditionalOnProperty(name = "xxl-job.start", havingValue = "true")
@Component
@Slf4j
public class MemberJob {
@DubboReference
IMemberServiceApi iMemberServiceApi;
@DubboReference
IMemberRetailApi iMemberRetailApi;
IMemberServiceApi memberServiceApi;
@DubboReference
ICuBonusStatisServiceApi iCuBonusStatisServiceApi;
@DubboReference
ICuBonusVertexStatisServiceApi iCuBonusVertexStatisServiceApi;
@DubboReference
IBdBarCodeServiceApi iBdBarCodeServiceApi;
@DubboReference
ICuMemberRetailRegionServiceApi iCuMemberRetailRegionServiceApi;
@DubboReference
IMemberRetailApi iMemberRetailApi;
@DubboReference
IAcRetailPickLogServiceApi iAcRetailPickLogServiceApi;
@DubboReference
IMemberReportServiceApi iMemberReportServiceApi;
@ -72,7 +83,11 @@ public class MemberJob {
}
/**
* 重算7天内奖金拨比
* @description: 重算7天内奖金拨比
* @author: zhang jing
* @date: 2023/12/11 10:45
* @param: []
* @return: void
**/
@XxlJob("rerun-bonus-statis")
public void rerunCuBonusStatis() {
@ -94,7 +109,11 @@ public class MemberJob {
}
/**
* 7天重算顶点奖金拨比统计
* @description: 7天重算顶点奖金拨比统计
* @author: zhang jing
* @date: 2024/8/15 10:29
* @param: []
* @return: void
**/
@XxlJob("rerun-bonus-vertex-statis")
public void rerunCuBonusVertexStatis() {
@ -115,18 +134,35 @@ public class MemberJob {
}
}
/**
* 定时清除未使用的会员编号
*/
@XxlJob("clear-member-empty-code")
public void clearMemberEmptyCode() {
log.info("clear-member-empty-code 开始执行!");
Integer dataCount = iMemberServiceApi.clearMemberEmptyCode().getData();
Integer dataCount = memberServiceApi.clearMemberEmptyCode().getData();
log.info("clear-member-empty-code 开始结束! 共处理:{}", dataCount);
}
/**
* 定时修改到期的零售区域
* 定时初始化条形码配置
*/
@XxlJob("updatWarehouseLogJob")
public void updatWarehouseLogJob() {
/**
* 查询初始化条形码配置,将当前尾号初始化为初始尾号
*/
iBdBarCodeServiceApi.updatWarehouseLog();
}
/**
* @description: 定时修改到期的零售区域
* @author: zhang jing
* @date: 2024/12/30 14:25
* @param: []
* @return: void
**/
@XxlJob("retail-region")
public void retailRegion() {
@ -155,7 +191,11 @@ public class MemberJob {
}
/**
* 每月10号处理上个月提货赠送活动满足活动规则的数据
* @description: 每月10号处理上个月提货赠送活动满足活动规则的数据
* @author: zhang jing
* @date: 2025/2/6 10:59
* @param: []
* @return: void
**/
@XxlJob("deliveryLog")
public void deliveryLog() {
@ -163,7 +203,11 @@ public class MemberJob {
}
/**
* 统计直推会员金额业绩盒数
* @description: 统计直推会员金额业绩盒数
* @author: zhang jing
* @date: 2025/2/12 16:09
* @param: []
* @return: void
**/
@XxlJob("sta-smount-box")
public void pushAmountBoxmethod() {
@ -171,7 +215,11 @@ public class MemberJob {
}
/**
* 重算7天统计直推会员金额业绩盒数
* @description: 重算7天统计直推会员金额业绩盒数
* @author: zhang jing
* @date: 2023/12/11 10:45
* @param: []
* @return: void
**/
@XxlJob("repeat-sta-smount-box")
public void repeatPushAmountBoxmethod() {
@ -183,7 +231,9 @@ public class MemberJob {
String startDateStr = (DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, endDate));
//重算前6天的数据
iMemberReportServiceApi.repeatPushAmountBoxmethod(startDateStr, endDateStr);
}
}

View File

@ -1,6 +1,8 @@
package com.hzs.third.job;
import com.hzs.member.account.IMemberJobServiceApi;
import com.hzs.sale.order.ISaOrderServiceApi;
import com.hzs.system.base.ICurrencyServiceApi;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
@ -13,14 +15,14 @@ import org.springframework.stereotype.Component;
public class OrderJob {
@DubboReference
ISaOrderServiceApi iSaOrderServiceApi;
ISaOrderServiceApi orderServiceApi;
/**
* 定时关单 订单三十分钟未支付自动关闭
*/
@XxlJob("autoCloseOrder")
public void timingCloseOrder() {
iSaOrderServiceApi.closeOrder();
orderServiceApi.closeOrder();
}
}

View File

@ -8,7 +8,12 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
/**
* 供应链定时任务
* @description: 供应链定时任务
* @author: sui q
* @time: 2024/2/21 15:45
* @classname: ScmJob
* @package_name: com.hzs.third.job
* version 1.0.0
*/
@Slf4j
@ConditionalOnProperty(name = "xxl-job.start", havingValue = "true")
@ -16,13 +21,14 @@ import org.springframework.stereotype.Component;
public class ScmJob {
@DubboReference
IScmBillServiceApi iScmBillServiceApi;
private IScmBillServiceApi scmBillServiceApi;
/**
* 更新单据号初始化值
*/
// @Scheduled(cron = "0 54 15 * * ?")
@XxlJob("updateBillNo")
public void updateBillNo() {
iScmBillServiceApi.updateScmBillNoNextValue();
scmBillServiceApi.updateScmBillNoNextValue();
}
}

View File

@ -0,0 +1,76 @@
package com.hzs.third.job;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.constant.SystemFieldConstants;
import com.hzs.common.core.enums.ESmsSendResult;
import com.hzs.common.core.enums.ESmsSendStatus;
import com.hzs.common.core.enums.ESmsSendType;
import com.hzs.common.domain.third.sms.TSmsRecord;
import com.hzs.third.sms.service.ITSmsRecordService;
import com.hzs.third.sms.util.SmsUtil;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
/**
* @Description: 短信定时任务
* @Author: jiang chao
* @Time: 2023/3/11 16:22
* @Classname: SmsJob
* @PackageName: com.hzs.third.job
*/
@Slf4j
@ConditionalOnProperty(name = "xxl-job.start", havingValue = "true")
@Component
public class SmsJob {
@Autowired
private ITSmsRecordService itSmsRecordService;
/**
* 定时发送短信
*/
// @Scheduled(cron = "0 * * * * ?")
@XxlJob("sendSms")
public void sendSms() {
log.info("定时发送短信任务开始!");
Date date = new Date();
QueryWrapper<TSmsRecord> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("SEND_TYPE", ESmsSendType.SCHEDULED.getValue());
queryWrapper.eq("SEND_STATUS", ESmsSendStatus.NOT_SEND.getValue());
queryWrapper.le("SEND_TIME", date);
queryWrapper.orderByAsc(SystemFieldConstants.CREATION_TIME);
List<TSmsRecord> list = itSmsRecordService.list(queryWrapper);
if (CollectionUtil.isNotEmpty(list)) {
log.info("本次共需要发送短信{}条", list.size());
for (TSmsRecord tSmsRecord : list) {
String str = SmsUtil.sendSms(tSmsRecord.getPhone(), tSmsRecord.getContent());
if (null == str) {
// 发送成功
tSmsRecord.setSendResult(ESmsSendResult.SUCCESS.getValue());
} else {
tSmsRecord.setSendResult(ESmsSendResult.FAIL.getValue());
}
tSmsRecord.setSendStatus(ESmsSendStatus.SEND.getValue());
tSmsRecord.setPkModified(MagicNumberConstants.PK_ADMIN);
tSmsRecord.setModifiedTime(date);
itSmsRecordService.updateById(tSmsRecord);
}
} else {
log.info("本次没有需要发送的短信");
}
log.info("定时发送短信任务结束!");
}
}

View File

@ -4,18 +4,27 @@ import com.hzs.sale.wares.IWaresServiceApi;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* @BelongsProject: hzs_cloud
* @BelongsPackage: com.hzs.third.job
* @Author: yh
* @CreateTime: 2023-06-01 10:44
* @Description: TODO
* @Version: 1.0
*/
@Slf4j
@ConditionalOnProperty(name = "xxl-job.start", havingValue = "true")
@Component
public class WaresJob {
@DubboReference
IWaresServiceApi iWaresServiceApi;
private IWaresServiceApi waresServiceApi;
/**
* 商品自动上下架
@ -23,12 +32,14 @@ public class WaresJob {
@XxlJob("waresAutoLoadingJob")
public void waresAutoLoadingJob() {
// 修改符合 时间条件商品上架
// 获取当前时间
/**
* 获取当前时间
*/
Date currentTime = new Date();
// 自动上架
iWaresServiceApi.updateByAutoStartAndAutoStart(currentTime);
waresServiceApi.updateByAutoStartAndAutoStart(currentTime);
// 定时自动下架
iWaresServiceApi.updateByAutoStartAndAutoEnd(currentTime);
waresServiceApi.updateByAutoStartAndAutoEnd(currentTime);
}
/**
@ -37,6 +48,6 @@ public class WaresJob {
@XxlJob("waresPreSaleJob")
public void waresPreSaleJob() {
// 修改商品预售状态
iWaresServiceApi.waresPreSale();
waresServiceApi.waresPreSale();
}
}

View File

@ -20,7 +20,11 @@ import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 短信发送记录
* @Description: 短信发送记录
* @Author: jiang chao
* @Time: 2023/3/9 16:10
* @Classname: SmsRecordController
* @PackageName: com.hzs.third.sms.controller
*/
@RestController
@RequestMapping("/manage/sms-record/")

View File

@ -10,6 +10,9 @@ import java.util.List;
/**
* 短信发送记录 Mapper 接口
*
* @author hzs
* @since 2023-03-08
*/
public interface TSmsRecordMapper extends BaseMapper<TSmsRecord> {

View File

@ -10,6 +10,9 @@ import java.util.List;
/**
* 短信发送记录 服务类
*
* @author hzs
* @since 2023-03-08
*/
public interface ITSmsRecordService extends IService<TSmsRecord> {

View File

@ -26,6 +26,9 @@ import java.util.*;
/**
* 短信发送记录 服务实现类
*
* @author hzs
* @since 2023-03-08
*/
@Service
public class TSmsRecordServiceImpl extends ServiceImpl<TSmsRecordMapper, TSmsRecord> implements ITSmsRecordService {
@ -34,9 +37,9 @@ public class TSmsRecordServiceImpl extends ServiceImpl<TSmsRecordMapper, TSmsRec
private ITSmsTemplateService itSmsTemplateService;
@DubboReference
IMemberServiceApi iMemberServiceApi;
private IMemberServiceApi iMemberServiceApi;
@DubboReference
ISaOrderServiceApi iSaOrderServiceApi;
private ISaOrderServiceApi iSaOrderServiceApi;
@Override
public List<TSmsRecordExt> queryList(SmsRecordQueryParam param, Integer pkCountry) {