Explorar el Código

Merge commit 'refs/tags/jenkins-back-end-701^{}' into release

release_toaliyun_real
hupeng hace 7 años
padre
commit
1a87409e07
Se han modificado 5 ficheros con 86 adiciones y 48 borrados
  1. +7
    -5
      mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java
  2. +62
    -36
      mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java
  3. +1
    -0
      mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java
  4. +2
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxMerchantShopServiceImpl.java
  5. +14
    -6
      mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml

+ 7
- 5
mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java Ver fichero

@@ -254,6 +254,8 @@ public class WxUserStructureController extends BaseController {
@ApiOperation("查询会员数量")
@GetMapping("/findUserDataCount")
public ResultData findUserCount(Date startTime, Date endTime) {

final int daysBefore = 29;
logger.debug("[" + getIpAddr() + "] WxUserStructureController::findUserCount");
WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto();
dto.setTenantId(getTenantId());
@@ -280,7 +282,7 @@ public class WxUserStructureController extends BaseController {
long wxtodayCount = wxCUserService.findCount(dto);//今天新增
List<UserStructureVo> wxnewCountVos = new ArrayList<>();//每日新增会员数
int j = 1;
for (int i = 29; i >= 0; i--) {
for (int i = daysBefore; i >= 0; i--) {
c.clear();
c.setTime(today);
c.add(Calendar.DAY_OF_YEAR, -i);
@@ -298,7 +300,7 @@ public class WxUserStructureController extends BaseController {
List<UserStructureVo> wxallCountVos = new ArrayList<>();//累计会员数
c.clear();
c.setTime(today);
c.add(Calendar.DAY_OF_YEAR, -30);
c.add(Calendar.DAY_OF_YEAR, -daysBefore);
dto.setEndTime(c.getTime());
dto.setStartTime(null);
long firstDay = wxCUserService.findCount(dto);//统计的第一天总数
@@ -341,7 +343,7 @@ public class WxUserStructureController extends BaseController {
}

private Map<String,Object> getMemberData(WxCUserBasicInfoDto dto) {
final int daysBefore = 29;
long allCount = wxCUserBasicInfoService.findCount(dto);//总量

Calendar c = Calendar.getInstance();
@@ -354,7 +356,7 @@ public class WxUserStructureController extends BaseController {
long todayCount = wxCUserBasicInfoService.findCount(dto);//今天新增
List<UserStructureVo> newCountVos = new ArrayList<>();//每日新增会员数
int j = 1;
for (int i = 29; i >= 0; i--) {
for (int i = daysBefore; i >= 0; i--) {
c.clear();
c.setTime(today);
c.add(Calendar.DAY_OF_YEAR, -i);
@@ -372,7 +374,7 @@ public class WxUserStructureController extends BaseController {
List<UserStructureVo> allCountVos = new ArrayList<>();//累计会员数
c.clear();
c.setTime(today);
c.add(Calendar.DAY_OF_YEAR, -30);
c.add(Calendar.DAY_OF_YEAR, -daysBefore);
dto.setEndTime(c.getTime());
dto.setStartTime(null);
long firstDay = wxCUserBasicInfoService.findCount(dto);//统计的第一天总数


+ 62
- 36
mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java Ver fichero

@@ -44,6 +44,9 @@ public class CouponSendSchedule {
@Autowired
private WxCUserBasicInfoMapper wxCUserBasicInfoMapper;

@Autowired
private WxCUserMapper wxCUserMapper;

@Autowired
private WxCouponSendMapper wxCouponSendMapper;

@@ -59,7 +62,7 @@ public class CouponSendSchedule {

//@Scheduled(cron = "0 0 6 1 * ?") // 每月1号发放会员的权益券
@Scheduled(cron = "0 0 6 * * ?") // 测试每天6点发券
//@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次
//@Scheduled(cron = "*/30 * * * * ?") // 测试30秒中一次
public void couponSendSchedule() {

List<WxMall> mallList = wxMallMapper.findList(new WxMall());
@@ -89,12 +92,12 @@ public class CouponSendSchedule {
.sorted(Comparator.comparing(WxLevelConfig::getPoints))
.collect(Collectors.toList());

for (int i = 0; i < levelConfigList.size(); i++) {
WxLevelConfig l = levelConfigList.get(i);
for (int levelIndex = 0; levelIndex < levelConfigList.size(); levelIndex++) {
WxLevelConfig l = levelConfigList.get(levelIndex);
if (l.getCapability() == null)
continue;
Integer levelStartScore = l.getPoints();
Integer levelEndScore = levelConfigList.size() < i+1? levelConfigList.get(i+1).getPoints() : null;
Integer levelEndScore = levelIndex+1 < levelConfigList.size() ? levelConfigList.get(levelIndex+1).getPoints() : null;

JSONObject jo = null;
Long result = null;
@@ -107,28 +110,37 @@ public class CouponSendSchedule {
}
Long sendCount = result;
if (sendCount > 0) {
WxCouponSend wxCouponSend = new WxCouponSend();
wxCouponSend.setTenantId(l.getTenantId());
wxCouponSend.setSendType(EnumCouponSendSendType.TIMED.getCode());
wxCouponSend.setStatus(EnumCouponSendStatus.VALID.getCode());
List<WxCouponSendVo> couponSendList = wxCouponSendMapper.findListVo(wxCouponSend);
couponSendList.stream().forEach(cs->{
if (cs.getRemainInventory() < sendCount){
logger.error("定时发券:库存不足 levelId="+ l.getId() +" couponId="+ cs.getCouponId());
return; //下一个券

WxCUserBasicInfoDto wxCUserBasicInfoDto = new WxCUserBasicInfoDto();
wxCUserBasicInfoDto.setTenantId(l.getTenantId());
wxCUserBasicInfoDto.setLevelStartScore(levelStartScore);
wxCUserBasicInfoDto.setLevelEndScore(levelEndScore);
List<WxCUserBasicInfo> wxCUserBasicInfoList = wxCUserBasicInfoMapper.findListByScore(wxCUserBasicInfoDto);

logger.info("定时发券:给LEVEL["+ l.getLevel() +
"]积分["+levelStartScore+"-"+levelEndScore+"]发券"+sendCount+"张");

wxCUserBasicInfoList.stream().forEach(cu->{

WxCouponSend wxCouponSend = new WxCouponSend();
wxCouponSend.setTenantId(l.getTenantId());
wxCouponSend.setSendType(EnumCouponSendSendType.TIMED.getCode());
wxCouponSend.setStatus(EnumCouponSendStatus.VALID.getCode());
List<WxCouponSendVo> couponSendList = wxCouponSendMapper.findListVo(wxCouponSend);
int remain = couponSendList.stream().map(cs->{
int count = cs.getRemainInventory();
logger.info("定时发券:给["+ cu.getNickName() +
"]券[" + cs.getTitle() + "]还剩" +
count +"张");
return count;
}).reduce(Integer::sum).get();

if (remain < sendCount){
logger.error("定时发券:库存不足["+ cu.getNickName() +"]应发"+sendCount+"张,总共剩"+ remain + "张");
return;
}
WxCUserBasicInfoDto wxCUserBasicInfoDto = new WxCUserBasicInfoDto();
wxCUserBasicInfoDto.setTenantId(l.getTenantId());
wxCUserBasicInfoDto.setLevelStartScore(levelStartScore);
wxCUserBasicInfoDto.setLevelEndScore(levelEndScore);
List<WxCUserBasicInfo> wxCUserBasicInfoList = wxCUserBasicInfoMapper.findListByScore(wxCUserBasicInfoDto);

wxCUserBasicInfoList.stream().forEach(cu->{
if (cs.getRemainInventory() < sendCount){
logger.error("定时发券:库存不足 levelId="+ l.getId() +" couponId="+ cs.getCouponId()+"userId="+cu.getId());
return; //下一个券
}

int sentCount = couponSendList.stream().map(cs->{
Map params = new HashMap<String, Object>();
params.put("tenantId", cs.getTenantId());
params.put("cUserId", cu.getId());
@@ -136,31 +148,45 @@ public class CouponSendSchedule {
params.put("startTime", startTime);
params.put("endTime", endTime);
params.put("channelType", EnumCouponSendSendType.TIMED.getCode());
int count = wxCouponActionLogMapper.getCountByUserAndCouponAndDate(params);
logger.info("定时发券:已经给["+ cu.getNickName() +
"]券[" + cs.getTitle() + "] " +
count +"张");
return count;
}).reduce(Integer::sum).get();

int sentCount = wxCouponActionLogMapper.getCountByUserAndCouponAndDate(params);

logger.info("定时发券:给["+ cu.getNickName() +
"]已发送券[" + cs.getTitle() + "] " +
sentCount +"张,还需发"+ (sendCount-sentCount) +"张");
logger.info("定时发券:给["+ cu.getNickName() +
"]总共已发送券" + sentCount + "张,还需发"+ (sendCount-sentCount) +"张");

for (int count = 0; count < sendCount - sentCount; count++) {
boolean sent = false;
for(int couponIndex = 0; couponIndex< couponSendList.size(); couponIndex++) {
WxCouponSendVo cs = couponSendList.get(couponIndex);
if (cs.getRemainInventory() <= 0)
continue;

for (int count = 0; count<sendCount-sentCount; count++) {
// 发放免费券
try {
WxCouponOrder couponOrder = wxOrderService.sendFreeCouponToUser(cu.getId(), cs.getCouponId());
wxCouponActionLogService.addOne(l.getTenantId(), cs.getCouponId(), couponOrder.getId(), cs.getSendType(), cs.getId());
} catch (Exception e) {
logger.error("定时发券:发券失败 levelId=" + l.getId() + " couponId=" + cs.getCouponId() + " userId=" + cu.getId() + e.getMessage());
return;
continue;
}

logger.info("定时发券:商场[" + mall.getName() +
"]会员等级[" + l.getLevel() +
"]发送券[" + cs.getTitle() +
"]给:" + cu.getNickName() +
" 电话-" + cu.getPhone() +
" id-" + cu.getId());
"]会员等级[" + l.getLevel() +
"]发送券[" + cs.getTitle() +
"]给:" + cu.getNickName() +
" 电话-" + cu.getPhone() +
" id-" + cu.getId());
sent = true;
break;
}
});
if (!sent)
break;
}
});
}
}


+ 1
- 0
mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java Ver fichero

@@ -299,6 +299,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params.put("channelType", EnumCouponSendSendType.C_ORDER.getCode());
list = wxCouponActionLogMapper.sceneDataList(params);
}else {
PageHelper.clearPage();
list = new ArrayList<MarkingSceneDataVo>();

}


+ 2
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxMerchantShopServiceImpl.java Ver fichero

@@ -35,6 +35,7 @@ public class WxMerchantShopServiceImpl implements WxMerchantShopService {
@Override
public PageInfo<WxShop> queryShopList(WxMerchantShop record, Integer pageIndex, Integer pageSize) {
List<WxShop> resultlist=new ArrayList<>();
PageHelper.startPage(pageIndex, pageSize);

List<WxMerchantShop> merchantShops = wxMerchantShopMapper.findList(record);
for(WxMerchantShop merchantShop:merchantShops){
@@ -45,7 +46,7 @@ public class WxMerchantShopServiceImpl implements WxMerchantShopService {
resultlist.add(shopList.get(0));
}
}
PageHelper.startPage(pageIndex, pageSize);
PageInfo<WxShop> pageInfo = new PageInfo<>(resultlist);
return pageInfo;
}


+ 14
- 6
mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml Ver fichero

@@ -181,24 +181,32 @@

</select>

<sql id="allColumnsOfScoreList">
cub.id,cub.phone,cub.birthdate,cub.education,cub.sex,cub.email,cub.address,cub.poins,cub.tag_id,
cub.create_date,cub.update_date,cub.tenant_id,cub.name,cub.level,cub.nick_name
</sql>

<select id="findListByScore" parameterType="com.iformall.domain.dto.WxCUserBasicInfoDto" resultMap="BaseResultMap">
select <include refid="allColumns"/>
from wx_c_user_basic_info where 1=1
select <include refid="allColumnsOfScoreList"/>
from wx_c_user_basic_info cub
inner join wx_c_user cu on cu.id = cub.id

where 1=1

<if test=" null != levelStartScore ">
and poins &gt;= #{levelStartScore}
and cub.poins &gt;= #{levelStartScore}
</if>

<if test=" null != levelEndScore">
and poins &lt;= #{levelEndScore}
and cub.poins &lt;= #{levelEndScore}
</if>

<if test=" null == levelStartScore and null == levelEndScore">
and poins is null
and cub.poins is null
</if>

<if test="null != tenantId">
and tenant_id =#{tenantId}
and cub.tenant_id =#{tenantId}
</if>

</select>


Cargando…
Cancelar
Guardar