From 3868b706ee3ee115a400d77abc3b69b83ea448c7 Mon Sep 17 00:00:00 2001
From: jyy <jyy>
Date: Fri, 03 Sep 2021 14:15:36 +0800
Subject: [PATCH] bug123

---
 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java |  223 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 160 insertions(+), 63 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java
index d75f8f2..8980936 100644
--- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java
+++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysVipInfoServiceImpl.java
@@ -3,7 +3,10 @@
 import com.matrix.core.constance.MatrixConstance;
 import com.matrix.core.exception.GlobleException;
 import com.matrix.core.pojo.PaginationVO;
-import com.matrix.core.tools.*;
+import com.matrix.core.tools.DateUtil;
+import com.matrix.core.tools.EncrypUtil;
+import com.matrix.core.tools.StringUtils;
+import com.matrix.core.tools.WebUtil;
 import com.matrix.core.tools.excl.ExcelSheetPO;
 import com.matrix.core.tools.excl.ExcelUtil;
 import com.matrix.system.app.dto.AddVipDto;
@@ -11,17 +14,24 @@
 import com.matrix.system.app.dto.VipInfoListDto;
 import com.matrix.system.app.vo.VipInfoDetailVo;
 import com.matrix.system.app.vo.VipInfoListVo;
+import com.matrix.system.common.bean.BusParameterSettings;
 import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.dao.BusParameterSettingsDao;
 import com.matrix.system.common.tools.DataAuthUtil;
 import com.matrix.system.common.tools.ServiceUtil;
 import com.matrix.system.constance.Dictionary;
 import com.matrix.system.constance.TableMapping;
+import com.matrix.system.hive.action.util.QueryUtil;
 import com.matrix.system.hive.bean.*;
 import com.matrix.system.hive.dao.*;
 import com.matrix.system.hive.plugin.util.CollectionUtils;
 import com.matrix.system.hive.pojo.VipInfoVo;
 import com.matrix.system.hive.service.SysVipInfoService;
+import com.matrix.system.score.constant.ScoreSettingConstant;
+import com.matrix.system.score.entity.ScoreVipDetail;
+import com.matrix.system.score.service.ScoreVipDetailService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -58,13 +68,25 @@
 	@Autowired
 	private SysVipLabelDao sysVipLabelDao;
 
+	@Value("${default.vip.photo.woman}")
+	String defaultWoman;
+
+	@Value("${default.vip.photo.man}")
+	String defaultMan;
+	@Autowired
+	BusParameterSettingsDao busParameterSettingsDao;
+
+	@Autowired
+	ScoreVipDetailService scoreVipDetailService;
+
+
 	/**
 	 * 新增会员储值卡
 	 * @param vipId
 	 * @return
 	 */
 	@Override
-	public  int addVipDefaultCard(Long vipId){
+	public MoneyCardUse addVipDefaultCard(Long vipId){
 		MoneyCardUse defaultCardUse=new MoneyCardUse();
 		defaultCardUse.setVipId(vipId);
 		defaultCardUse.setCardName("储值卡");
@@ -73,17 +95,18 @@
 		defaultCardUse.setGiftMoney(0D);
 		defaultCardUse.setSource("-");
 		defaultCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
-		return  moneyCardUseDao.insert(defaultCardUse);
+		moneyCardUseDao.insert(defaultCardUse);
+		return  defaultCardUse;
 
 	}
 
 	@Override
 	public int add(SysVipInfo sysVipInfo) {
-		SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+
 
 		if (sysVipInfo.getVipNo() != null && (!sysVipInfo.getVipNo().equals(""))) {
 			if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "VIP_NO", sysVipInfo.getVipNo(),
-					"company_id",user.getCompanyId())) {
+					"company_id",sysVipInfo.getCompanyId())) {
 				throw new GlobleException("编号已存在!");
 			}
 		}
@@ -92,20 +115,26 @@
 				throw new GlobleException("请输入手机号!");
 			}
 			if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "PHONE", sysVipInfo.getPhone(),
-					"company_id",user.getCompanyId() )) {
-				throw new GlobleException("手机已被注册!");
+					"company_id",sysVipInfo.getCompanyId() )) {
+				throw new GlobleException(sysVipInfo.getPhone()+"手机已被注册!");
 			}
 		}
-
-
-		sysVipInfo.setShopId(user.getShopId());
-		sysVipInfo.setCompanyId(user.getCompanyId());
+		SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+		if(user!=null){
+			sysVipInfo.setCompanyId(user.getCompanyId());
+		}
 		sysVipInfo.setCreateTime(new Date());
 		sysVipInfo.setPointAll(0);
 		sysVipInfo.setIsDeal(SysVipInfo.UNDEAL_VIP);
-		sysVipInfo.setZjm(StringUtils.toHanyuPinyin(sysVipInfo.getVipName())+","+StringUtils.toHeadWordHanyuPinyin(sysVipInfo.getVipName()));
+		if(StringUtils.isNotBlank(sysVipInfo.getVipName())){
+			sysVipInfo.setZjm(StringUtils.toHanyuPinyin(sysVipInfo.getVipName())+","+StringUtils.toHeadWordHanyuPinyin(sysVipInfo.getVipName()));
+		}
+		if(Dictionary.SEX_MAN.equals(sysVipInfo.getSex())){
+			sysVipInfo.setPhoto(defaultMan);
+		}else{
+			sysVipInfo.setPhoto(defaultWoman);
+		}
 		int i=sysVipInfoDao.insert(sysVipInfo);
-		modifyVipWithOtherInfo(sysVipInfo);
 		//创建用户默认储值卡
 		addVipDefaultCard(sysVipInfo.getId());
 		return i;
@@ -197,8 +226,7 @@
 
 	@Override
 	public List<SysVipInfo> findByVipNoOrTel(String key) {
-		SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
-		return sysVipInfoDao.selectByVipNoOrTel(key, users.getShopId());
+		return sysVipInfoDao.selectByVipNoOrTel(key);
 
 	}
 
@@ -240,31 +268,7 @@
 		}
 		
 		
-        //如果会员id不为空则表示是修改,删除原有的绑定关系,建立新的关系
-         if(vipInfo.getId()!=null && !vipInfo.getId().equals("")){
-	         MyBeatician query=new MyBeatician();
-	         query.setVipId(vipInfo.getId());
-	         List<MyBeatician> listDel= myBeaticianDao.selectByModel(query);
-	         if(listDel!=null && listDel.size()>0){
-	         List<Long> delIds=new ArrayList<>();
-		         for (int i = 0; i < listDel.size(); i++) {
-					delIds.add(listDel.get(i).getId());
-				 }
-	         myBeaticianDao.deleteByIds(delIds);
-             }
-         }
-         //添加客户的美疗师
- 		List<MyBeatician> list=vipInfo.getBeauticains();
- 		if(list!=null && list.size()>0){
- 			List<MyBeatician> saveList=new ArrayList<>();
- 			//此处由于前台传递过来list中的下标可能是不连续的。因此要过滤掉空的,即要过滤掉美疗师的id为空的数据
- 			for (MyBeatician temp:list) {
- 				if(temp.getBeauticainId()!=null && !temp.getBeauticainId().equals("")){
- 					saveList.add(temp);
- 				   }
- 				}
- 			myBeaticianDao.insertAll(saveList,vipInfo.getId());
-			}
+
  			
 	}
 	
@@ -279,8 +283,8 @@
 
 	@Override
 	public List<SysVipInfo> findUserByKey(String keyWord) {
-		SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
-		return sysVipInfoDao.selectUserByKey(keyWord, users.getShopId());
+		SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+		return sysVipInfoDao.selectUserByKey(keyWord,user.getCompanyId());
 	}
 	
 
@@ -336,6 +340,11 @@
 		SysUsers users = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
 		sysVipInfo.setCompanyId(users.getCompanyId());
 		sysVipInfo.setShopId(users.getShopId());
+		if(sysVipInfo.getSex().equals(Dictionary.SEX_MAN)){
+			sysVipInfo.setPhoto(defaultMan);
+		}else{
+			sysVipInfo.setPhoto(defaultWoman);
+		}
 		int i=sysVipInfoDao.insert(sysVipInfo);
 		modifyVipWithOtherInfo(sysVipInfo);
 		return i;
@@ -394,7 +403,7 @@
 					SysVipInfo vipInfo = new SysVipInfo();
 					vipInfo.setVipNo(objects.get(0).toString());
 
-					SysVipInfo exist = sysVipInfoDao.selectByPhone(objects.get(3).toString());
+					SysVipInfo exist = sysVipInfoDao.selectByPhone(objects.get(3).toString(),sysUsers.getCompanyId());
 					if (exist != null) {
 						continue;
 					}
@@ -420,10 +429,12 @@
 
 	@Override
 	public List<VipInfoListVo> findVipAddressBook(VipInfoListDto vipInfoListDto) {
+		//todo 会员查询单独做控制
 		SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
-		if (!DataAuthUtil.hasAllShopAuth()) {
+		if (!DataAuthUtil.hasAllCustomerAuth()) {
 			vipInfoListDto.setShopId(sysUsers.getShopId());
 		}
+		QueryUtil.setQueryLimitCom(vipInfoListDto);
 		return sysVipInfoDao.selectVipAddressBookByList(vipInfoListDto);
 	}
 
@@ -433,12 +444,15 @@
 	}
 
 	@Override
+	@Transactional
 	public int apiAddVip(AddVipDto addVipDto) {
 		SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
 
-		if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "VIP_NO", addVipDto.getVipNo(),
-				"company_id",user.getCompanyId())) {
-			throw new GlobleException("编号已存在!");
+		if (StringUtils.isNotBlank(addVipDto.getVipNo())) {
+			if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "VIP_NO", addVipDto.getVipNo(),
+					"company_id", user.getCompanyId())) {
+				throw new GlobleException("编号已存在!");
+			}
 		}
 
 		if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "PHONE", addVipDto.getPhone(),
@@ -447,6 +461,8 @@
 		}
 
 		SysVipInfo vipInfo = new SysVipInfo();
+
+		vipInfo.setPhoto(addVipDto.getPhoto());
 		vipInfo.setVipName(addVipDto.getVipName());
 		vipInfo.setVipNo(addVipDto.getVipNo());
 		vipInfo.setSex(addVipDto.getSex());
@@ -455,6 +471,7 @@
 		vipInfo.setAddr(addVipDto.getAddress());
 		vipInfo.setRemark(addVipDto.getRemark());
 		vipInfo.setBirthday1(addVipDto.getBirthday());
+		vipInfo.setPassWord(addVipDto.getPassword());
 		vipInfo.setRecommendId(addVipDto.getRecommendId());
 
 		if (StringUtils.isNotBlank(addVipDto.getAreas())) {
@@ -476,15 +493,69 @@
 		vipInfo.setPointAll(0);
 		vipInfo.setIsDeal(SysVipInfo.UNDEAL_VIP);
 		vipInfo.setZjm(StringUtils.toHanyuPinyin(vipInfo.getVipName())+","+StringUtils.toHeadWordHanyuPinyin(vipInfo.getVipName()));
+		if(vipInfo.getSex().equals(Dictionary.SEX_MAN)){
+			vipInfo.setPhoto(defaultMan);
+		}else{
+			vipInfo.setPhoto(defaultWoman);
+		}
 		int i=sysVipInfoDao.insert(vipInfo);
 
 		if (CollectionUtils.isNotEmpty(addVipDto.getLabels())) {
-			batchInsertLabel(addVipDto.getLabels(), user.getSuName(), vipInfo.getId());
+			batchInsertLabel(addVipDto.getLabels(), vipInfo.getId());
 		}
+		//添加推荐人积分
+		addReferrerVipScore(vipInfo);
 
 		//创建用户默认储值卡
 		addVipDefaultCard(vipInfo.getId());
 		return i;
+	}
+
+	/**
+	 * 添加推荐人积分
+	 * @param vipInfo
+	 */
+	public void addReferrerVipScore(SysVipInfo vipInfo) {
+		if(vipInfo.getRecommendId()!=null){
+			SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
+			BusParameterSettings referrerScoreSetting = busParameterSettingsDao.selectCompanyParamByCode(ScoreSettingConstant.REFERRALS_CONSUMPTION, user.getCompanyId());
+			//推荐注册老带新积分奖励
+			SysVipInfo referrerVip = sysVipInfoDao.selectById(vipInfo.getRecommendId());
+
+			if(StringUtils.isNotBlank(referrerScoreSetting.getParamValue())){
+
+				scoreVipDetailService.addScore(
+						referrerVip.getId(),
+						user.getSuId(),
+						vipInfo.getShopId(),
+						Integer.parseInt(referrerScoreSetting.getParamValue()),
+						vipInfo.getId(),
+						ScoreVipDetail.SCORE_VIP_TYPE_REFERRER,
+						"推荐会员"
+						);
+			}
+
+			//推荐注册二级带新积分奖励
+
+			if(referrerVip.getRecommendId()!=null){
+
+				SysVipInfo topVipInfo = sysVipInfoDao.selectById(referrerVip.getRecommendId());
+
+
+				if(StringUtils.isNotBlank(referrerScoreSetting.getParamValue1())){
+					scoreVipDetailService.addScore(
+							topVipInfo.getId(),
+							user.getSuId(),
+							vipInfo.getShopId(),
+							Integer.parseInt(referrerScoreSetting.getParamValue1()),
+							vipInfo.getId(),
+							ScoreVipDetail.SCORE_VIP_TYPE_REFERRER,
+							"间接推荐会员"
+					);
+				}
+			}
+
+		}
 	}
 
 	@Override
@@ -496,10 +567,12 @@
 			throw new GlobleException("用户不存在");
 		}
 
-		if (!modifyVipDto.getVipNo().equals(vipInfo.getVipNo())) {
-			if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "VIP_NO", modifyVipDto.getVipNo(),
-					"company_id",user.getCompanyId())) {
-				throw new GlobleException("编号已存在!");
+		if (StringUtils.isNotBlank(modifyVipDto.getVipNo())) {
+			if (!modifyVipDto.getVipNo().equals(vipInfo.getVipNo())) {
+				if (serviceUtil.addCheckRepeatTowColumn(TableMapping.SYS_VIP_INFO, "VIP_NO", modifyVipDto.getVipNo(),
+						"company_id", user.getCompanyId())) {
+					throw new GlobleException("编号已存在!");
+				}
 			}
 		}
 
@@ -523,28 +596,27 @@
 		vipInfo.setPhone(modifyVipDto.getPhone());
 		vipInfo.setAddr(modifyVipDto.getAddress());
 		vipInfo.setRemark(modifyVipDto.getRemark());
+		vipInfo.setPassWord(modifyVipDto.getPassword());
 		vipInfo.setBirthday1(modifyVipDto.getBirthday());
 		vipInfo.setRecommendId(modifyVipDto.getRecommendId());
+		vipInfo.setPhoto(modifyVipDto.getPhoto());
 		int i = sysVipInfoDao.update(vipInfo);
 
 		if (CollectionUtils.isNotEmpty(modifyVipDto.getLabels())) {
-			sysVipLabelDao.deleteByVipId(modifyVipDto.getVipId());
-
-			batchInsertLabel(modifyVipDto.getLabels(), user.getSuName(), vipInfo.getId());
+			sysVipLabelDao.deleteRelateByVipId(modifyVipDto.getVipId());
+			batchInsertLabel(modifyVipDto.getLabels(), vipInfo.getId());
 		}
 		return i;
 	}
 
-	private void batchInsertLabel(List<String> labelList, String suName, Long id) {
+	private void batchInsertLabel(List<String> labelList, Long id) {
 		Set<String> labels = new HashSet<>(labelList);
 		Iterator<String> iterator = labels.iterator();
-		if (iterator.hasNext()) {
-			SysVipLabel sysVipLabel = new SysVipLabel();
-			sysVipLabel.setCreateTime(new Date());
-			sysVipLabel.setCreateBy(suName);
-			sysVipLabel.setLabel(iterator.next());
-			sysVipLabel.setVipId(id);
-			sysVipLabelDao.insert(sysVipLabel);
+		while (iterator.hasNext()) {
+			SysVipLabelRelate relate = new SysVipLabelRelate();
+			relate.setLabelId(Long.parseLong(iterator.next()));
+			relate.setVipId(id);
+			sysVipLabelDao.insertRelate(relate);
 		}
 	}
 
@@ -568,9 +640,34 @@
 		vipInfoDetailVo.setArea(sysVipInfo.getArea());
 		vipInfoDetailVo.setRemark(sysVipInfo.getRemark());
 		vipInfoDetailVo.setBirthday(sysVipInfo.getBirthday1());
+		vipInfoDetailVo.setPassword(sysVipInfo.getPassWord());
+		vipInfoDetailVo.setPhoto(sysVipInfo.getPhoto());
+		vipInfoDetailVo.setVipNo(sysVipInfo.getVipNo());
 
 		List<SysVipLabel> labels = sysVipLabelDao.selectByVipId(sysVipInfo.getId());
 		vipInfoDetailVo.setLabels(labels);
 		return vipInfoDetailVo;
 	}
+
+	@Override
+	public SysVipInfo findByOpenId(String openId) {
+		return sysVipInfoDao.findByOpenId(openId);
+	}
+
+	/**
+	 * 设置成为推广员
+	 * @param invitationId
+	 */
+	@Override
+	public int setToBeAnSalesman(Long userId,Long invitationId,long gradeId) {
+		SysVipInfo sysVipInfo=sysVipInfoDao.selectById(userId);
+		sysVipInfo.setIsSales(SysVipInfo.IS_SALES);
+		sysVipInfo.setRecommendId(invitationId);
+		sysVipInfo.setBindingParentTime(new Date());
+		sysVipInfo.setSalesmanGrade(gradeId);
+		return sysVipInfoDao.update(sysVipInfo);
+	}
+
+
+
 }
\ No newline at end of file

--
Gitblit v1.9.1