package com.matrix.system.hive.action;
|
|
import com.matrix.core.anotations.RemoveRequestToken;
|
import com.matrix.core.anotations.SaveRequestToken;
|
import com.matrix.core.constance.MatrixConstance;
|
import com.matrix.core.pojo.AjaxResult;
|
import com.matrix.core.pojo.PaginationVO;
|
import com.matrix.core.tools.*;
|
import com.matrix.core.tools.excl.ExcelSheetPO;
|
import com.matrix.core.tools.excl.ExcelUtil;
|
import com.matrix.core.tools.excl.ExcelVersion;
|
import com.matrix.system.common.bean.SysUsers;
|
import com.matrix.system.common.bean.SystemDictionary;
|
import com.matrix.system.common.constance.AppConstance;
|
import com.matrix.system.common.dao.CustomerDataDictionaryDao;
|
import com.matrix.system.common.service.SysUsersService;
|
import com.matrix.system.common.service.SystemDictionaryService;
|
import com.matrix.system.common.tools.ResponseHeadUtil;
|
import com.matrix.system.constance.Dictionary;
|
import com.matrix.system.hive.action.util.QueryUtil;
|
import com.matrix.system.hive.bean.Question;
|
import com.matrix.system.hive.bean.SysVipInfo;
|
import com.matrix.system.hive.bean.SysVipLevel;
|
import com.matrix.system.hive.bean.VipAnswer;
|
import com.matrix.system.hive.dao.MoneyCardUseDao;
|
import com.matrix.system.hive.dao.SysVipLabelDao;
|
import com.matrix.system.hive.dao.VipAnswerDao;
|
import com.matrix.system.hive.pojo.RegisterInfo;
|
import com.matrix.system.hive.service.*;
|
import com.matrix.system.score.dao.ScoreVipDetailDao;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.ModelMap;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.OutputStream;
|
import java.io.UnsupportedEncodingException;
|
import java.net.URLDecoder;
|
import java.net.URLEncoder;
|
import java.security.NoSuchAlgorithmException;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Calendar;
|
import java.util.List;
|
|
|
/**
|
* @author jyy
|
* @description 会员信息管理action
|
* @date 2016-07-12
|
*/
|
@Controller
|
@RequestMapping(value = "admin/vipInfo")
|
public class VipInfoController extends BaseController {
|
@Resource
|
private SysVipInfoService vipInfoService;
|
|
@Resource
|
private SysVipLevelService vipLevelService;
|
|
@Resource
|
private SysUsersService shopstaffInfoService;
|
|
@Autowired
|
private VipAnswerDao vipAnswerDao;
|
@Resource
|
private QuestionSerivce questionSerivce;
|
@Resource
|
private MoneyCardUseService cardUseService;
|
|
@Autowired
|
private MoneyCardUseDao moneyCardUseDao;
|
|
@Autowired
|
private SysVipLabelDao sysVipLabelDao;
|
|
@Autowired
|
private SystemDictionaryService dataDictionaryService;
|
|
@Autowired
|
private CustomerDataDictionaryDao customerDataDictionaryDao;
|
@Resource
|
private SysOrderService sysOrderService;
|
|
@Autowired
|
private ScoreVipDetailDao scoreVipDetailDao;
|
|
|
@RequestMapping(value = "/showVipLevel")
|
public @ResponseBody
|
AjaxResult findVipLevel() {
|
// 会员卡等级信息
|
List<SysVipLevel> vipLevels = vipLevelService.findByModel(null);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, vipLevels, 0);
|
}
|
|
/**
|
* 显示所有的会员信息
|
*/
|
@RequestMapping(value = "/showVipInfoList")
|
public @ResponseBody
|
AjaxResult showList(PaginationVO pageVo, SysVipInfo vipInfo) {
|
|
// if (!getMe().getShopRole().equals(Dictionary.FLAG_YES_Y)) {
|
vipInfo.setShopId(getMe().getShopId());
|
// }
|
return showList(vipInfoService, vipInfo, pageVo);
|
}
|
|
/**
|
* 门店查看会员信息
|
*
|
* @author luoyuanhong
|
* @date 2016-06-24
|
*/
|
@SuppressWarnings("unchecked")
|
@RequestMapping(value = "/showVipInfo")
|
public @ResponseBody
|
AjaxResult findByModel(String keyWord) {
|
|
List<SysVipInfo> vips = vipInfoService.findByVipNoOrTel(keyWord);
|
if (vips.size() > 0) {
|
vips.get(0).setPointAll(scoreVipDetailDao.selectUserTotalScore(vips.get(0).getId()));
|
vips.get(0).setSysOrder(sysOrderService.findSysOrderTjByVipId(vips.get(0).getId()));
|
vips.get(0).setLevelCard(cardUseService.findByVipId(vips.get(0).getId()));
|
vips.get(0).setLabels(sysVipLabelDao.selectByVipId(vips.get(0).getId()));
|
vips.get(0).setAge(DateUtil.getAgeForBirthDay(vips.get(0).getBirthday1()));
|
vips.get(0).setBalance(moneyCardUseDao.selectVipCardTotalMoney(vips.get(0).getId()));
|
AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, vips, 0);
|
return result;
|
} else {
|
return AjaxResult.buildFailInstance("未查到询客户信息");
|
}
|
|
}
|
|
|
/**
|
* 通过姓名或者电话号码
|
*/
|
@RequestMapping(value = "/findUserByPhotoOrName")
|
public @ResponseBody
|
AjaxResult findUserByPhotoOrName(String keyWord) {
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, vipInfoService.findUserByKey(keyWord), 0);
|
}
|
|
|
/**
|
* 添加或修改会员信息
|
*/
|
@RequestMapping(value = "/addOrModify")
|
@RemoveRequestToken
|
public @ResponseBody
|
AjaxResult addOrModify(SysVipInfo vipInfo) {
|
if (vipInfo.getId() != null) {
|
return modify(vipInfoService, vipInfo, "会员信息");
|
} else {
|
vipInfo.setVipState(Dictionary.VIP_STATE_HY);
|
SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
vipInfo.setShopId(users.getShopId());
|
return add(vipInfoService, vipInfo, "会员信息");
|
}
|
}
|
|
|
/**
|
* 保存客户的
|
*
|
* @param vipInfo
|
* @return
|
*/
|
@RequestMapping(value = "/modifyVipArchives")
|
public @ResponseBody
|
AjaxResult modifyVipArchives(@RequestBody SysVipInfo vipInfo) {
|
VipAnswer delAnswer = new VipAnswer();
|
delAnswer.setVipId(vipInfo.getId());
|
vipAnswerDao.deleteByModel(delAnswer);
|
if (vipInfo.getVipAnswers() != null && vipInfo.getVipAnswers().size() > 0) {
|
vipAnswerDao.batchInsert(vipInfo.getVipAnswers());
|
}
|
AjaxResult result = new AjaxResult();
|
result.setStatus(AjaxResult.STATUS_SUCCESS);
|
result.setInfo("档案更新成功");
|
return result;
|
}
|
|
|
/**
|
* 删除会员信息
|
*/
|
@RequestMapping(value = "/del")
|
public @ResponseBody
|
AjaxResult del(String keys) {
|
|
return remove(vipInfoService, keys);
|
}
|
|
/**
|
* 弹出框,会员信息
|
*/
|
@RequestMapping(value = "/editForm")
|
@SaveRequestToken
|
public String editForm(Long id, HttpServletRequest request) {
|
SysVipInfo vipInfo;
|
// 查询所有美疗师,由于是手动添加,因此不用框架中的下拉框方式
|
List<SysUsers> mlslist = new ArrayList<SysUsers>();
|
|
if (!getMe().getShopRole().equals(Dictionary.FLAG_YES_Y)) {
|
mlslist = shopstaffInfoService.findByRoleName(true, Dictionary.STAFF_POST_MLS);
|
} else {
|
mlslist = shopstaffInfoService.findByRoleName(false, Dictionary.STAFF_POST_MLS);
|
}
|
|
|
request.setAttribute("mlslist", mlslist);
|
|
|
// vip信息
|
if (id != null) {
|
vipInfo = vipInfoService.findById(id);
|
request.setAttribute("obj", vipInfo);
|
}
|
return "admin/hive/vip/vipInfo-form";
|
}
|
|
|
@RequestMapping(value = "/getVipQuestions")
|
public @ResponseBody
|
AjaxResult getVipQuestions(Long id, HttpServletRequest request) {
|
// 获取会员所有的答案,分类型
|
SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
|
List<Question> questions = questionSerivce.findByVipId(id, user.getCompanyId());
|
request.setAttribute("questions", questions);
|
AjaxResult result = new AjaxResult();
|
result.putInMap("questions", questions);
|
result.setStatus(AjaxResult.STATUS_SUCCESS);
|
return result;
|
}
|
|
|
/**
|
* 编辑会员备注
|
*/
|
@RequestMapping(value = "/editRemarkForm")
|
@SaveRequestToken
|
public String editRemarkForm(Long id, HttpServletRequest request) {
|
SysVipInfo vipInfo;
|
vipInfo = vipInfoService.findById(id);
|
request.setAttribute("obj", vipInfo);
|
return "admin/hive/vip/vipInfo-remark-form";
|
}
|
|
|
/**
|
* 批量修改健康顾问
|
*/
|
@RequestMapping(value = "/updateVipInfos")
|
public @ResponseBody
|
AjaxResult updateVipInfos(String ids, Long staffId) {
|
|
int i = vipInfoService.updateStaffId(ids, staffId);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "成功修改" + i + "条数据!");
|
}
|
|
/**
|
* 客户到访录入
|
*/
|
@RequestMapping(value = "/toVisitInfo")
|
public String toVisitInfo() {
|
Long shopId = getMe().getShopId();
|
|
SystemDictionary dataDictionary = new SystemDictionary();
|
// 获取到店途径
|
dataDictionary.setType("到店途径");
|
WebUtil.getRequest().setAttribute("ddtj", dataDictionaryService.findByModel(dataDictionary));
|
// 业务类型
|
dataDictionary.setType("业务类型");
|
WebUtil.getRequest().setAttribute("ywlx", dataDictionaryService.findByModel(dataDictionary));
|
// 门店信息
|
WebUtil.getRequest().setAttribute("shopNmae", getMe().getShopName());
|
WebUtil.getRequest().setAttribute("staffName", getMe().getSuName());
|
// 登录者门店的美疗师信息
|
WebUtil.getRequest().setAttribute("mls", shopstaffInfoService.findByRoleName(true, Dictionary.STAFF_POST_MLS));
|
return "admin/hive/mobile/CRM-visit";
|
}
|
|
|
/**
|
* 钉钉点击注册
|
*/
|
@RequestMapping(value = "/toRegister")
|
public String toRegister() {
|
SystemDictionary dataDictionary = new SystemDictionary();
|
// 获取到店途径
|
dataDictionary.setType("到店途径");
|
WebUtil.getRequest().setAttribute("ddtj", customerDataDictionaryDao.selectByParentCode("DDTJ", getMe().getCompanyId()));
|
// 获取生肖
|
dataDictionary.setType("生肖");
|
WebUtil.getRequest().setAttribute("sx", dataDictionaryService.findByModel(dataDictionary));
|
// 获取星座
|
dataDictionary.setType("星座");
|
WebUtil.getRequest().setAttribute("xz", dataDictionaryService.findByModel(dataDictionary));
|
// 获取
|
// 获取会员等级
|
WebUtil.getRequest().setAttribute("level", vipLevelService.findByModel(null));
|
return "admin/hive/mobile/CRM-vip";
|
}
|
|
/**
|
* 会员注册
|
*/
|
@RequestMapping(value = "/registerVipInfo")
|
public @ResponseBody
|
AjaxResult register(RegisterInfo vipInfo) {
|
|
vipInfo.setBirthday1(DateUtil.stringToDate(vipInfo.getVoBirthday(), "yyyy-MM-dd"));
|
vipInfo.setVipState(Dictionary.VIP_STATE_HY);
|
vipInfo.setStaffId(getMe().getSuId());
|
vipInfo.setShopId(getMe().getShopId());
|
vipInfo.setCompanyId(getMe().getCompanyId());
|
vipInfo.setVipType(Dictionary.VIP_TYPE_NOCARD);
|
vipInfoService.add(vipInfo);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "会员信息注册成功");
|
}
|
|
|
/**
|
* 修改会员信息
|
*/
|
@RequestMapping(value = "/modifyVip")
|
public @ResponseBody
|
AjaxResult modifyVip(SysVipInfo vipInfo) {
|
return modify(vipInfoService, vipInfo, "会员");
|
}
|
|
|
/**
|
* 通过电话号码模糊查询
|
*/
|
@RequestMapping(value = "/findUserByPhoto")
|
public @ResponseBody
|
AjaxResult findUserByPhoto(String keyWord) {
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, vipInfoService.findUserByKey(keyWord), 0);
|
}
|
|
/**
|
* 通过Id查询vip信息
|
*/
|
@RequestMapping(value = "/findUserById")
|
public @ResponseBody
|
AjaxResult findUserById(Long id) {
|
SysVipInfo vipInfo = vipInfoService.findById(id);
|
vipInfo.setBalance(moneyCardUseDao.selectVipCardTotalMoney(id));
|
vipInfo.setLevelCard(cardUseService.findByVipId(vipInfo.getId()));
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, Arrays.asList(vipInfo), 0);
|
}
|
|
|
/**
|
* 查询会员等级
|
*/
|
@RequestMapping(value = "/findVipLevel")
|
public @ResponseBody
|
AjaxResult findVipLevel(SysVipLevel sysVipLevel) {
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, vipLevelService.findByModel(sysVipLevel), 0);
|
}
|
|
/**
|
* 通过电话号码精确查询
|
*/
|
@RequestMapping(value = "/findUserPho")
|
public @ResponseBody
|
AjaxResult findUserPho(SysVipInfo info) {
|
//System.out.println(info.getPhone());
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, vipInfoService.findByModel1(info), 0);
|
}
|
|
/**
|
* 通过会员编号或者手机号查询会员
|
*/
|
@RequestMapping(value = "/findUserByPhoneOrNo")
|
public @ResponseBody
|
AjaxResult findUserByPhoneOrNo(String keyWord) {
|
List<SysVipInfo> vips = vipInfoService.findByVipNoOrTel(keyWord);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, vips, 0);
|
|
}
|
|
@RequestMapping(value = "/getBirthday")
|
public @ResponseBody
|
AjaxResult getBirthday(SysVipInfo info) {
|
Calendar c = Calendar.getInstance();
|
c.setTime(info.getBirthday1());
|
//获取年份
|
int year = c.get(Calendar.YEAR);
|
//获取月份
|
int month = c.get(Calendar.MONTH) + 1;
|
//获取日
|
int day = c.get(Calendar.DATE);
|
|
//星座
|
String xz = DateUtil.getConstellation(month, day);
|
|
|
SysVipInfo vip = new SysVipInfo();
|
vip.setConstell(xz);
|
List<SysVipInfo> vipList = new ArrayList<SysVipInfo>();
|
vipList.add(vip);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, vipList, 0);
|
}
|
|
@RequestMapping(value = "/exportExcel")
|
public void report(ModelMap model, HttpServletRequest request, HttpServletResponse response,
|
SysVipInfo vipInfo) throws IOException {
|
|
if (vipInfo.getVipType() != null && !(vipInfo.getVipType().equals(""))) {
|
vipInfo.setVipType(URLDecoder.decode(vipInfo.getVipType(), "UTF-8"));
|
}
|
if (vipInfo.getVipName() != null && !"".equals(vipInfo.getVipName())) {
|
vipInfo.setVipName(URLDecoder.decode(vipInfo.getVipName(), "UTF-8"));
|
}
|
if (vipInfo.getArrivalWay() != null && !"".equals(vipInfo.getArrivalWay())) {
|
vipInfo.setArrivalWay(URLDecoder.decode(vipInfo.getArrivalWay(), "UTF-8"));
|
}
|
if (vipInfo.getVipState() != null && !"".equals(vipInfo.getVipState())) {
|
vipInfo.setVipState(URLDecoder.decode(vipInfo.getVipState(), "UTF-8"));
|
}
|
|
List<ExcelSheetPO> res = new ArrayList<>();
|
ExcelSheetPO orderSheet = new ExcelSheetPO();
|
String title = "每日单据明细";
|
orderSheet.setSheetName(title);
|
orderSheet.setTitle(title);
|
String[] header = {"会员编号", "姓名", "性别", "手机号码", "会员类型", "会员活跃度", "到店途径", "健康顾问", "所属门店"};
|
orderSheet.setHeaders(header);
|
QueryUtil.setQueryLimit(vipInfo);
|
List<SysVipInfo> dataList = vipInfoService.findInPage(vipInfo, null);
|
List<List<Object>> list = new ArrayList<>();
|
if (dataList.size() > 0) {
|
for (SysVipInfo item : dataList) {
|
List<Object> temp = new ArrayList<>();
|
temp.add(item.getVipNo());
|
temp.add(item.getVipName());
|
temp.add(item.getSex());
|
temp.add(item.getPhone());
|
temp.add(item.getVipType());
|
temp.add(item.getVipState());
|
temp.add(item.getArrivalWay());
|
temp.add(item.getStaffName());
|
temp.add(item.getShopName());
|
list.add(temp);
|
}
|
}
|
orderSheet.setDataList(list);
|
res.add(orderSheet);
|
response = ResponseHeadUtil.setExcelHead(response);
|
response.setHeader("Content-Disposition",
|
"attachment;filename=" + URLEncoder.encode(title + DateUtil.getTimeMark() + ".xlsx".trim(), "UTF-8"));
|
OutputStream os = response.getOutputStream();
|
ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true);
|
|
}
|
|
@RequestMapping(value = "/findAllVipInfo")
|
@ResponseBody
|
public AjaxResult findAllVipInfo() {
|
return showList(vipInfoService, null, null);
|
}
|
|
@RequestMapping(value = "/findAllVipInfoWithShop")
|
@ResponseBody
|
public AjaxResult findAllVipInfoWithShop() {
|
SysVipInfo info = new SysVipInfo();
|
info.setShopId(getMe().getShopId());
|
return showList(vipInfoService, info, null);
|
}
|
|
@RequestMapping(value = "/importVipInfo")
|
@ResponseBody
|
public AjaxResult importVipInfo(HttpServletResponse response, HttpServletRequest request, @RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
|
|
String fileName = file.getOriginalFilename();
|
String dirPath = PropertiesUtil.getString(AppConstance.FILES_TORAGE_PATH);
|
// String dirPath = "C:/Users/wzy19/Desktop/zq";
|
File fileDir = new File(dirPath);
|
LogUtil.info("#----->{}#", fileDir.exists());
|
if (!fileDir.exists()) {
|
fileDir.mkdirs();
|
}
|
|
File saveFile = new File(dirPath + "/" + fileName);
|
file.transferTo(saveFile);
|
|
int i = vipInfoService.importVipInfo(saveFile);
|
if (i > 0) {
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "导入成功");
|
} else {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "导入失败");
|
}
|
}
|
|
@RequestMapping(value = "/toImportForm")
|
public String toImportForm() {
|
return "admin/hive/vip/vipImport-form";
|
}
|
}
|