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

@ -3,7 +3,9 @@ package com.kiisoo.ic.activity.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.kiisoo.ic.activity.bean.ActivityInstanceVO; import com.kiisoo.ic.activity.bean.ActivityInstanceVO;
import com.kiisoo.ic.activity.bean.PromotionSrcVO; 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.PmnPromotionFriendsSrc;
import com.kiisoo.ic.activity.entity.PmnPromotionSrc;
import com.kiisoo.ic.activity.service.IPmnActivityInstanceService; import com.kiisoo.ic.activity.service.IPmnActivityInstanceService;
import com.kiisoo.ic.activity.service.IPmnPromotionFriendsSrcService; import com.kiisoo.ic.activity.service.IPmnPromotionFriendsSrcService;
import com.kiisoo.ic.activity.service.IPmnPromotionSrcService; 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.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList; import java.util.*;
import java.util.Date; import java.util.stream.Collectors;
import java.util.List;
import java.util.Map;
@Api(value = "小程序-我的活动推广", tags = {"小程序-我的活动推广"}) @Api(value = "小程序-我的活动推广", tags = {"小程序-我的活动推广"})
@RestController @RestController
@ -42,8 +42,6 @@ import java.util.Map;
public class WebAppActivityController extends BaseController { public class WebAppActivityController extends BaseController {
@Autowired @Autowired
private IPmnPromotionSrcService pmnPromotionSrcService; private IPmnPromotionSrcService pmnPromotionSrcService;
@Autowired
private IPmnPromotionFriendsSrcService pmnPromotionFriendsSrcService;
@ApiOperation(value = "我的活动推广列表") @ApiOperation(value = "我的活动推广列表")
@GetMapping("/get/promotions") @GetMapping("/get/promotions")
@ -63,35 +61,42 @@ public class WebAppActivityController extends BaseController {
} }
} }
@ApiOperation(value = "执行推广") @ApiOperation(value = "店长-执行推广")
@PostMapping("/post/promotions") @PostMapping("/post/promotions")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "用户ID", dataType = "int", paramType = "form"), @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "int", paramType = "form"),
@ApiImplicitParam(name = "list", value = "选中导购列表", dataType = "array", 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) { public Map<String, Object> pushPromotion(long userId, List<PoiStoreStaff> list, long instanceId) {
// TODO 将活动推广给单个或多个用户 promotion_friends_src // TODO 将活动推广给单个或多个导购 promotion_src
// TODO 如果已经推广过了,则忽略 // TODO 如果已经推广过了,则忽略
List<PmnPromotionFriendsSrc> adds = new ArrayList<>(); try {
List<Long> friendIds = new ArrayList<>(); List<PoiStoreStaff> fails = new ArrayList<>();
for (PoiStoreStaff store : list) { List<PoiStoreStaff> success = new ArrayList<>();
PmnPromotionFriendsSrc friends = pmnPromotionFriendsSrcService.getOne(Wrappers.<PmnPromotionFriendsSrc>lambdaQuery().eq(PmnPromotionFriendsSrc::getFriendId, store.getUserId()).eq(PmnPromotionFriendsSrc::getPromotionSrcId, promotionSrcId)); for (PoiStoreStaff staff : list) {
friendIds.add(store.getUserId()); boolean create = pmnPromotionSrcService.createCode(staff, instanceId);
if(friends == null) { if (!create) {
PmnPromotionFriendsSrc friend = new PmnPromotionFriendsSrc(); fails.add(staff);
friend.setPromotionSrcId(promotionSrcId); } else {
friend.setFriendId(store.getUserId()); success.add(staff);
friend.setCreateTime(new Date()); }
adds.add(friend);
} }
/**
* ,
*/
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 = "好友添加回调通知") @ApiOperation(value = "好友添加回调通知")

@ -3,6 +3,7 @@ package com.kiisoo.ic.activity.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.kiisoo.ic.activity.bean.PromotionSrcVO; import com.kiisoo.ic.activity.bean.PromotionSrcVO;
import com.kiisoo.ic.activity.entity.PmnPromotionSrc; import com.kiisoo.ic.activity.entity.PmnPromotionSrc;
import com.kiisoo.ic.store.entity.PoiStoreStaff;
import java.util.List; import java.util.List;
@ -17,4 +18,5 @@ import java.util.List;
public interface IPmnPromotionSrcService extends IService<PmnPromotionSrc> { public interface IPmnPromotionSrcService extends IService<PmnPromotionSrc> {
List<PromotionSrcVO> listUserCodes(Long userId) throws Exception; List<PromotionSrcVO> listUserCodes(Long userId) throws Exception;
String saveCodeFile(String fileUrl, String code); 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.ActivityInstanceVO;
import com.kiisoo.ic.activity.bean.PromotionSrcVO; import com.kiisoo.ic.activity.bean.PromotionSrcVO;
import com.kiisoo.ic.activity.entity.PmnActivityInstance; 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.entity.PmnPromotionSrc;
import com.kiisoo.ic.activity.mapper.PmnPromotionSrcDOMapper; 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.IPmnActivityInstanceService;
import com.kiisoo.ic.activity.service.IPmnPromotionSrcService; import com.kiisoo.ic.activity.service.IPmnPromotionSrcService;
import com.kiisoo.ic.constants.Constants; import com.kiisoo.ic.constants.Constants;
import com.kiisoo.ic.employee.entity.PrivilageCpUserDO; import com.kiisoo.ic.employee.entity.PrivilageCpUserDO;
import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper; import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper;
import com.kiisoo.ic.store.entity.PoiStore; 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.entity.PrivilageCpUserStoreDO;
import com.kiisoo.ic.store.mapper.PoiStoreDOMapper; import com.kiisoo.ic.store.mapper.PoiStoreDOMapper;
import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper; 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.system.service.PrivilageAccountService;
import com.kiisoo.ic.webappmy.vo.StafferInfoVO; import com.kiisoo.ic.webappmy.vo.StafferInfoVO;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.shiro.crypto.hash.SimpleHash;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@ -65,68 +70,100 @@ public class PmnPromotionSrcServiceImpl extends ServiceImpl<PmnPromotionSrcDOMap
private PrivilageAccountService privilageAccountService; private PrivilageAccountService privilageAccountService;
@Autowired @Autowired
private PrivilageRoleDOMapper privilageRoleDOMapper; private PrivilageRoleDOMapper privilageRoleDOMapper;
@Autowired
private IPmnActivityInstanceConfigService pmnActivityInstanceConfigService;
@Autowired
private IPmnPromotionSrcService pmnPromotionSrcService;
@Override @Override
@Transactional
public List<PromotionSrcVO> listUserCodes(Long userId) throws Exception { 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<>(); List<PromotionSrcVO> lists = new ArrayList<>();
if (info.size() > 0) { PrivilageUserDO privilageUserDO = privilageUserDOMapper.selectById(userId);
PrivilageUserDO privilageUserDO = privilageUserDOMapper.selectById(userId); // 用户不存在
// 用户不存在 if (null == privilageUserDO) {
if (null == privilageUserDO) { return lists;
return lists; }
} PrivilageAccountDO result = privilageAccountService.getAccountByUserId(userId);
PrivilageAccountDO result = privilageAccountService.getAccountByUserId(userId); // 该账号已暂停,请联系店长
// 该账号已暂停,请联系店长 if (null != result && result.getStatus().equals(2)) {
if (null != result && result.getStatus().equals(2)) { return lists;
return lists; }
} PrivilageRoleDO roleDO = privilageRoleDOMapper.selectRoleName(userId);
PrivilageRoleDO roleDO = privilageRoleDOMapper.selectRoleName(userId); Long type;
Long storeId = privilageUserDOMapper.selectStoreIdByUserId(userId); if (roleDO.getCode().equals(RoleEnum.getRoleByCode("DZ-DIANZHANG"))) {
info.get(0).setRoleCode(roleDO.getCode()); type = 2L;
info.get(0).setStoreId(storeId); } else if (roleDO.getCode().equals(RoleEnum.getRoleByCode("DZ-DAOGOU"))) {
info.get(0).setUserId(userId); type = 1L;
Long type; } else {
if(roleDO.getCode().equals(RoleEnum.getRoleByCode("DZ-DIANZHANG"))) { return lists;
type = 2L; }
}else if(roleDO.getCode().equals(RoleEnum.getRoleByCode("DZ-DAOGOU"))){ List<PmnPromotionSrc> srcs = list(Wrappers.<PmnPromotionSrc>lambdaQuery().eq(PmnPromotionSrc::getPromoterId, userId).eq(PmnPromotionSrc::getType, type));
type = 1L; for (PmnPromotionSrc src : srcs) {
}else { File codeFile = new File("activity/" + src.getCode() + ".png");
return lists; if (!codeFile.exists() || src.getQrCode() == null) {
} String cpUserId = "mayifei";
List<PmnPromotionSrc> srcs = list(Wrappers.<PmnPromotionSrc>lambdaQuery().eq(PmnPromotionSrc::getPromoterId, userId).eq(PmnPromotionSrc::getType, type)); // String cpUserId = staff.getStaffCode();
for (PmnPromotionSrc src : srcs) { String url = "https://wework.qpic.cn/wwpic/789548_SW5hhAm-TgyEW0F_1590128879/0";
File codeFile = new File("activity/" + src.getCode() + ".png"); if (cpUserId != "mayifei") {
if (!codeFile.exists() || src.getQrCode() == null) { url = storeEmployeeService.createActivityQrCode(cpUserId, staff.getStoreCode(), src.getType().intValue(), src.getInstanceId(), src.getPromoterId());
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;
} }
vo.setInstanceVO(instance); saveCodeFile(url, src.getCode());
vo.setQrCode("/activity/" + src.getCode() + ".png"); src.setQrCode(url);
lists.add(vo); 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; 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 @Override
public String saveCodeFile(String fileUrl, String code) { public String saveCodeFile(String fileUrl, String code) {
try { try {

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

Loading…
Cancel
Save