Merge remote-tracking branch 'origin/dev' into dev

dev_0531
zyy 5 years ago
commit 3f5187892e

@ -0,0 +1,35 @@
package com.kiisoo.ic.activity.bean;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
*/
@Data
@TableName ("pmn_promotion_friends_src")
public class PromotionFriendsSrcVO {
@TableId(type = IdType.AUTO)
private Long id;
private Long promotionSrcId;
private Long friendId;
private Long type;
private Long promoterId;
private Long storeId;
private Long instanceId;
private Long caseId;
private Long status;
private Date createTime;
}

@ -3,7 +3,6 @@ package com.kiisoo.ic.activity.bean;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kiisoo.ic.activity.entity.PmnActivityInstance;
import lombok.Data;
import java.util.Date;
@ -24,6 +23,8 @@ public class PromotionSrcVO {
private ActivityInstanceVO instanceVO;
private PromotionFriendsSrcVO friendsSrc;
private Long caseId;
private Long status;

@ -3,7 +3,9 @@ package com.kiisoo.ic.activity.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.kiisoo.ic.activity.bean.ActivityInstanceVO;
import com.kiisoo.ic.activity.bean.PromotionSrcVO;
import com.kiisoo.ic.activity.entity.PmnActivityInstance;
import com.kiisoo.ic.activity.entity.PmnPromotionFriendsSrc;
import com.kiisoo.ic.activity.entity.PmnPromotionSrc;
import com.kiisoo.ic.activity.service.IPmnActivityInstanceService;
import com.kiisoo.ic.activity.service.IPmnPromotionFriendsSrcService;
import com.kiisoo.ic.activity.service.IPmnPromotionSrcService;
@ -30,10 +32,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Api(value = "小程序-我的活动推广", tags = {"小程序-我的活动推广"})
@RestController
@ -42,8 +42,6 @@ import java.util.Map;
public class WebAppActivityController extends BaseController {
@Autowired
private IPmnPromotionSrcService pmnPromotionSrcService;
@Autowired
private IPmnPromotionFriendsSrcService pmnPromotionFriendsSrcService;
@ApiOperation(value = "我的活动推广列表")
@GetMapping("/get/promotions")
@ -63,35 +61,42 @@ public class WebAppActivityController extends BaseController {
}
}
@ApiOperation(value = "执行推广")
@ApiOperation(value = "店长-执行推广")
@PostMapping("/post/promotions")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "用户ID", dataType = "int", paramType = "form"),
@ApiImplicitParam(name = "list", value = "选中导购列表", dataType = "array", paramType = "form"),
@ApiImplicitParam(name = "promotionSrcId", value = "推广源关系ID", dataType = "array", paramType = "form"),
@ApiImplicitParam(name = "instanceId", value = "活动ID", dataType = "array", paramType = "form"),
})
public Map<String, Object> pushPromotion(long userId, List<PoiStoreStaff> list, long promotionSrcId) {
// TODO 将活动推广给单个或多个用户 promotion_friends_src
public Map<String, Object> pushPromotion(long userId, List<PoiStoreStaff> list, long instanceId) {
// TODO 将活动推广给单个或多个导购 promotion_src
// TODO 如果已经推广过了,则忽略
List<PmnPromotionFriendsSrc> adds = new ArrayList<>();
List<Long> friendIds = new ArrayList<>();
for (PoiStoreStaff store : list) {
PmnPromotionFriendsSrc friends = pmnPromotionFriendsSrcService.getOne(Wrappers.<PmnPromotionFriendsSrc>lambdaQuery().eq(PmnPromotionFriendsSrc::getFriendId, store.getUserId()).eq(PmnPromotionFriendsSrc::getPromotionSrcId, promotionSrcId));
friendIds.add(store.getUserId());
if(friends == null) {
PmnPromotionFriendsSrc friend = new PmnPromotionFriendsSrc();
friend.setPromotionSrcId(promotionSrcId);
friend.setFriendId(store.getUserId());
friend.setCreateTime(new Date());
adds.add(friend);
try {
List<PoiStoreStaff> fails = new ArrayList<>();
List<PoiStoreStaff> success = new ArrayList<>();
for (PoiStoreStaff staff : list) {
boolean create = pmnPromotionSrcService.createCode(staff, instanceId);
if (!create) {
fails.add(staff);
} else {
success.add(staff);
}
}
/**
* ,
*/
PmnPromotionSrc up = new PmnPromotionSrc();
up.setStatus(2L);
pmnPromotionSrcService.update(up, Wrappers.<PmnPromotionSrc>lambdaQuery().eq(PmnPromotionSrc::getInstanceId, instanceId).notIn(PmnPromotionSrc::getPromoterId, list.stream().map(PoiStoreStaff::getUserId).collect(Collectors.toList())).notIn(PmnPromotionSrc::getType, list.stream().map(PoiStoreStaff::getType).collect(Collectors.toList())));
//
Map<String, Object> ret = new HashMap<>();
ret.put("success", success);
ret.put("fail", fails);
return data(ret);
} catch (Exception e) {
log.error("获取用户信息异常", e);
return fail();
}
pmnPromotionFriendsSrcService.saveBatch(adds);
if(friendIds.size() > 0) {
//不在列表里的执行删除
pmnPromotionFriendsSrcService.remove(Wrappers.<PmnPromotionFriendsSrc>lambdaQuery().notIn(PmnPromotionFriendsSrc::getFriendId, friendIds).eq(PmnPromotionFriendsSrc::getPromotionSrcId, promotionSrcId));
}
return data(null);
}
@ApiOperation(value = "好友添加回调通知")

@ -3,6 +3,7 @@ package com.kiisoo.ic.activity.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kiisoo.ic.activity.bean.PromotionSrcVO;
import com.kiisoo.ic.activity.entity.PmnPromotionSrc;
import com.kiisoo.ic.store.entity.PoiStoreStaff;
import java.util.List;
@ -17,4 +18,5 @@ import java.util.List;
public interface IPmnPromotionSrcService extends IService<PmnPromotionSrc> {
List<PromotionSrcVO> listUserCodes(Long userId) throws Exception;
String saveCodeFile(String fileUrl, String code);
boolean createCode(PoiStoreStaff staff, Long instanceId);
}

@ -5,14 +5,17 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kiisoo.ic.activity.bean.ActivityInstanceVO;
import com.kiisoo.ic.activity.bean.PromotionSrcVO;
import com.kiisoo.ic.activity.entity.PmnActivityInstance;
import com.kiisoo.ic.activity.entity.PmnActivityInstanceConfig;
import com.kiisoo.ic.activity.entity.PmnPromotionSrc;
import com.kiisoo.ic.activity.mapper.PmnPromotionSrcDOMapper;
import com.kiisoo.ic.activity.service.IPmnActivityInstanceConfigService;
import com.kiisoo.ic.activity.service.IPmnActivityInstanceService;
import com.kiisoo.ic.activity.service.IPmnPromotionSrcService;
import com.kiisoo.ic.constants.Constants;
import com.kiisoo.ic.employee.entity.PrivilageCpUserDO;
import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper;
import com.kiisoo.ic.store.entity.PoiStore;
import com.kiisoo.ic.store.entity.PoiStoreStaff;
import com.kiisoo.ic.store.entity.PrivilageCpUserStoreDO;
import com.kiisoo.ic.store.mapper.PoiStoreDOMapper;
import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper;
@ -28,9 +31,11 @@ import com.kiisoo.ic.system.mapper.PrivilageUserDOMapper;
import com.kiisoo.ic.system.service.PrivilageAccountService;
import com.kiisoo.ic.webappmy.vo.StafferInfoVO;
import org.apache.commons.io.FileUtils;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.FileOutputStream;
@ -65,68 +70,100 @@ public class PmnPromotionSrcServiceImpl extends ServiceImpl<PmnPromotionSrcDOMap
private PrivilageAccountService privilageAccountService;
@Autowired
private PrivilageRoleDOMapper privilageRoleDOMapper;
@Autowired
private IPmnActivityInstanceConfigService pmnActivityInstanceConfigService;
@Autowired
private IPmnPromotionSrcService pmnPromotionSrcService;
@Override
@Transactional
public List<PromotionSrcVO> listUserCodes(Long userId) throws Exception {
List<StafferInfoVO> info = poiStoreStaffDOMapper.selectInfoById(userId);
PoiStoreStaff staff = poiStoreStaffDOMapper.selectOne(Wrappers.<PoiStoreStaff>lambdaQuery().eq(PoiStoreStaff::getUserId, userId));
List<PromotionSrcVO> lists = new ArrayList<>();
if (info.size() > 0) {
PrivilageUserDO privilageUserDO = privilageUserDOMapper.selectById(userId);
// 用户不存在
if (null == privilageUserDO) {
return lists;
}
PrivilageAccountDO result = privilageAccountService.getAccountByUserId(userId);
// 该账号已暂停,请联系店长
if (null != result && result.getStatus().equals(2)) {
return lists;
}
PrivilageRoleDO roleDO = privilageRoleDOMapper.selectRoleName(userId);
Long storeId = privilageUserDOMapper.selectStoreIdByUserId(userId);
info.get(0).setRoleCode(roleDO.getCode());
info.get(0).setStoreId(storeId);
info.get(0).setUserId(userId);
Long type;
if(roleDO.getCode().equals(RoleEnum.getRoleByCode("DZ-DIANZHANG"))) {
type = 2L;
}else if(roleDO.getCode().equals(RoleEnum.getRoleByCode("DZ-DAOGOU"))){
type = 1L;
}else {
return lists;
}
List<PmnPromotionSrc> srcs = list(Wrappers.<PmnPromotionSrc>lambdaQuery().eq(PmnPromotionSrc::getPromoterId, userId).eq(PmnPromotionSrc::getType, type));
for (PmnPromotionSrc src : srcs) {
File codeFile = new File("activity/" + src.getCode() + ".png");
if (!codeFile.exists() || src.getQrCode() == null) {
PoiStore store = poiStoreDOMapper.selectOne(Wrappers.<PoiStore>lambdaQuery().eq(PoiStore::getId, info.get(0).getStoreId()));
String cpUserId = "mayifei";
// String cpUserId = info.getCpUserId();
String url = "https://wework.qpic.cn/wwpic/789548_SW5hhAm-TgyEW0F_1590128879/0";
if (cpUserId != "mayifei") {
url = storeEmployeeService.createActivityQrCode(cpUserId, store.getCode(), src.getType().intValue(), src.getInstanceId(), src.getPromoterId());
}
saveCodeFile(url, src.getCode());
src.setQrCode(url);
updateById(src);
}
PromotionSrcVO vo = new PromotionSrcVO();
BeanUtils.copyProperties(src, vo);
ActivityInstanceVO instance = pmnActivityInstanceService.getVO(src.getInstanceId());
if (
!((instance.getBeginTime().compareTo(new Date()) == -1 || instance.getBeginTime().compareTo(new Date()) == 0) &&
instance.getEndTime().compareTo(new Date()) == 1
)) {
continue;
PrivilageUserDO privilageUserDO = privilageUserDOMapper.selectById(userId);
// 用户不存在
if (null == privilageUserDO) {
return lists;
}
PrivilageAccountDO result = privilageAccountService.getAccountByUserId(userId);
// 该账号已暂停,请联系店长
if (null != result && result.getStatus().equals(2)) {
return lists;
}
PrivilageRoleDO roleDO = privilageRoleDOMapper.selectRoleName(userId);
Long type;
if (roleDO.getCode().equals(RoleEnum.getRoleByCode("DZ-DIANZHANG"))) {
type = 2L;
} else if (roleDO.getCode().equals(RoleEnum.getRoleByCode("DZ-DAOGOU"))) {
type = 1L;
} else {
return lists;
}
List<PmnPromotionSrc> srcs = list(Wrappers.<PmnPromotionSrc>lambdaQuery().eq(PmnPromotionSrc::getPromoterId, userId).eq(PmnPromotionSrc::getType, type));
for (PmnPromotionSrc src : srcs) {
File codeFile = new File("activity/" + src.getCode() + ".png");
if (!codeFile.exists() || src.getQrCode() == null) {
String cpUserId = "mayifei";
// String cpUserId = staff.getStaffCode();
String url = "https://wework.qpic.cn/wwpic/789548_SW5hhAm-TgyEW0F_1590128879/0";
if (cpUserId != "mayifei") {
url = storeEmployeeService.createActivityQrCode(cpUserId, staff.getStoreCode(), src.getType().intValue(), src.getInstanceId(), src.getPromoterId());
}
vo.setInstanceVO(instance);
vo.setQrCode("/activity/" + src.getCode() + ".png");
lists.add(vo);
saveCodeFile(url, src.getCode());
src.setQrCode(url);
updateById(src);
}
PromotionSrcVO vo = new PromotionSrcVO();
BeanUtils.copyProperties(src, vo);
ActivityInstanceVO instance = pmnActivityInstanceService.getVO(src.getInstanceId());
if (
!((instance.getBeginTime().compareTo(new Date()) == -1 || instance.getBeginTime().compareTo(new Date()) == 0) &&
instance.getEndTime().compareTo(new Date()) == 1
)) {
continue;
}
vo.setInstanceVO(instance);
vo.setQrCode("/activity/" + src.getCode() + ".png");
lists.add(vo);
}
System.out.println(11);
return lists;
}
@Override
@Transactional
public boolean createCode(PoiStoreStaff staff, Long instanceId) {
try {
Long userId = staff.getUserId();
PmnPromotionSrc src = getOne(Wrappers.<PmnPromotionSrc>lambdaQuery().eq(PmnPromotionSrc::getPromoterId, userId).eq(PmnPromotionSrc::getType, staff.getType()).eq(PmnPromotionSrc::getInstanceId, instanceId));
ActivityInstanceVO instanceVO = pmnActivityInstanceService.getVO(instanceId);
PmnActivityInstanceConfig config = pmnActivityInstanceConfigService.getOne(Wrappers.<PmnActivityInstanceConfig>lambdaQuery().eq(PmnActivityInstanceConfig::getInstanceId, instanceId));
String state = Constants.ACTIVITY_QR_CODE_PREFIX + Constants.LINE + instanceId + Constants.LINE + staff.getType() + Constants.LINE + userId;
PmnPromotionSrc saveSrc = new PmnPromotionSrc();
if (src != null) {
saveSrc.setId(src.getId());
}
saveSrc.setCaseId(config.getCaseId());
saveSrc.setCode(state);
saveSrc.setCreateTime(new Date());
saveSrc.setExpiredTime(instanceVO.getEndTime());
saveSrc.setInstanceId(instanceId);
saveSrc.setPromoterId(userId);
saveSrc.setIsAddition(2L); //是否要独立码: 1、默认 2、额外码
saveSrc.setType(1L);
saveSrc.setUpdateTime(new Date());
saveSrc.setStatus(1L);
String url = storeEmployeeService.createActivityQrCode(staff.getStaffCode(), staff.getStoreCode(), 1, instanceId, userId);
saveSrc.setQrCode(url);
pmnPromotionSrcService.saveCodeFile(url, new SimpleHash("MD5", state).toHex());
boolean save = pmnPromotionSrcService.saveOrUpdate(saveSrc);
return save;
} catch (Exception e) {
log.error("活动码创建失败", e);
e.printStackTrace();
return false;
}
}
@Override
public String saveCodeFile(String fileUrl, String code) {
try {

@ -3,6 +3,8 @@ package com.kiisoo.ic.store.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@ -13,6 +15,7 @@ import java.util.Date;
*/
@Data
@TableName ("poi_store_staff")
@ApiModel("门店人员信息")
public class PoiStoreStaff {
/**
@ -24,78 +27,94 @@ public class PoiStoreStaff {
/**
* ID
*/
@ApiModelProperty(value = "店铺ID")
private Long storeId;
/**
* , ID
*/
@ApiModelProperty(value = "店铺人员, 用户ID")
private Long userId;
/**
* code
*/
@ApiModelProperty(value = "店铺code")
private String storeCode;
/**
* code
*/
@ApiModelProperty(value = "人员code")
private String staffCode;
/**
* 1 2 3 4
*/
@ApiModelProperty(value = "1 店长 2 副店长 3 店长助理 4 导购")
private Long type;
/**
* openID
*/
@ApiModelProperty(value = "企业微信openID")
private String epWechatOpenId;
/**
*
*/
@ApiModelProperty(value = "企业微信导购二维码")
private String epWechatQrCode;
/**
* ID
*/
@ApiModelProperty(value = "企业微信配置ID")
private String epWechatConfigId;
/**
* 1 2
*/
@ApiModelProperty(value = "状态 1 有效 2 无效")
private Long status;
/**
*
*/
@ApiModelProperty(value = "创建时间", hidden = true)
private Date createTime;
/**
*
*/
@ApiModelProperty(value = "修改时间", hidden = true)
private Date updateTime;
/**
*
*/
@ApiModelProperty(value = "创建人", hidden = true)
private String createBy;
/**
*
*/
@ApiModelProperty(value = "修改人", hidden = true)
private String updateBy;
/**
* : 0 false 1 true
*/
@ApiModelProperty(value = "是否删除", hidden = true)
private Integer deleted;
/**
* id
*/
@ApiModelProperty(value = "客户用户id", hidden = true)
private Long customerUserId;
/**
*
*/
@ApiModelProperty(value = "微信头像", hidden = true)
private String avatar;
}

Loading…
Cancel
Save