package com.matrix.system.hive.action;
|
|
import com.matrix.core.constance.MatrixConstance;
|
import com.matrix.core.exception.GlobleException;
|
import com.matrix.core.pojo.AjaxResult;
|
import com.matrix.core.pojo.PaginationVO;
|
import com.matrix.core.tools.DateUtil;
|
import com.matrix.core.tools.LogUtil;
|
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.common.bean.SysUsers;
|
import com.matrix.system.constance.Dictionary;
|
import com.matrix.system.hive.bean.MoneyCardUse;
|
import com.matrix.system.hive.bean.ShoppingGoods;
|
import com.matrix.system.hive.bean.SysProjUse;
|
import com.matrix.system.hive.bean.SysVipInfo;
|
import com.matrix.system.hive.dao.MoneyCardUseDao;
|
import com.matrix.system.hive.dao.ShoppingGoodsDao;
|
import com.matrix.system.hive.dao.SysProjUseDao;
|
import com.matrix.system.hive.dao.SysVipInfoDao;
|
import com.matrix.system.hive.plugin.message.StringUtil;
|
import com.matrix.system.hive.plugin.util.CollectionUtils;
|
import com.matrix.system.hive.service.MoneyCardUseService;
|
import com.matrix.system.hive.service.SysProjUseService;
|
import com.matrix.system.hive.service.SysProjuseFreezeService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.transaction.annotation.Transactional;
|
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.util.ArrayList;
|
import java.util.List;
|
|
|
/**
|
* 会员项目管理
|
*
|
* @author jyy
|
* @date 2016-09-03
|
*/
|
@Controller
|
@RequestMapping(value = "admin/projUser")
|
public class ProjUseController extends BaseController {
|
@Resource
|
private SysProjUseService projUseService;
|
|
@Resource
|
private SysProjuseFreezeService sysProjuseFreezeService;
|
|
@Resource
|
private MoneyCardUseService moneyCardUseService;
|
|
|
public static final String fnCode = "projUse";
|
public static final String search = fnCode + ":search";
|
public static final String edit = fnCode + ":edit";
|
public static final String del = fnCode + ":del";
|
public static final String add = fnCode + ":add";
|
|
//权限放到会员管理那里去
|
public static final String viptc = "vipInfo:viptc";
|
|
/**
|
* 查看会员项目使用情况
|
*
|
* @author jiangyouyao
|
* @date 2016-09-03
|
*/
|
@RequestMapping(value = "/showList")
|
public @ResponseBody
|
AjaxResult showTc(PaginationVO pageVo, SysProjUse sysProjUse) {
|
sysProjUse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
|
sysProjUse.setTaocanId(-1L);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS,
|
projUseService.findInPage(sysProjUse, pageVo), projUseService.findTotal(sysProjUse));
|
}
|
|
|
/**
|
* 将项目设置为有效
|
*
|
* @author jiangyouyao
|
* @date 2016-09-03
|
*/
|
@RequestMapping(value = "/activeProj")
|
public @ResponseBody
|
AjaxResult activeTc(SysProjUse sysProjUse) {
|
|
return projUseService.activeProj(sysProjUse);
|
|
}
|
|
/**
|
* 将项目设置为无效
|
*
|
* @author jiangyouyao
|
* @date 2016-09-03
|
*/
|
@RequestMapping(value = "/invalidProj")
|
public @ResponseBody
|
AjaxResult invalidTc(SysProjUse sysProjUse) {
|
|
|
int i = projUseService.invalidProj(sysProjUse);
|
if (i > 0) {
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "已设置为无效");
|
} else {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "设置失败");
|
}
|
}
|
|
/**
|
* 转让项目
|
*
|
* @param sysProjUse 转让信息
|
* 被转让的会员id
|
* @return
|
* @author jiangyouyao
|
* @date 2016-09-04
|
*/
|
@RequestMapping(value = "/transferProj")
|
public @ResponseBody
|
AjaxResult transferTc(SysProjUse sysProjUse, Long vipId2) {
|
|
int i = projUseService.transferProj(sysProjUse, vipId2);
|
if (i > 0) {
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "项目转让成功");
|
}
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "项目转让失败");
|
}
|
|
@RequestMapping(value = "/returnProj")
|
public @ResponseBody
|
AjaxResult returnTc(SysProjUse sysProjUse, Long moneyCardUseId, String tcRemark, Long shopId, Double money, String tcName) {
|
|
MoneyCardUse card = null;
|
if (moneyCardUseId != null) {
|
card = moneyCardUseService.findById(moneyCardUseId);
|
}
|
int i = projUseService.returnMoneyProj(sysProjUse, card, moneyCardUseId);
|
if (i > 0) {
|
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "退款成功");
|
}
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "退款失败");
|
}
|
|
|
/**
|
* 冻结会员项目
|
*
|
* @param sysProjUse
|
* @return
|
*/
|
@RequestMapping(value = "/freezeProj")
|
public @ResponseBody
|
AjaxResult freezeTc(SysProjUse sysProjUse) {
|
|
int i = projUseService.freezeProj(sysProjUse);
|
if (i > 0) {
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "冻结成功");
|
}
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "冻结失败");
|
}
|
|
|
/**
|
* 退款
|
*
|
* @return
|
*/
|
@RequestMapping(value = "/getEffectCard")
|
public @ResponseBody
|
AjaxResult getEffectCard(SysProjUse sysProjUse) {
|
MoneyCardUse cardUse = moneyCardUseService.findByVipId(sysProjUse.getVipId());
|
double money = projUseService.getTotalMoneyProj(sysProjUse);
|
if (cardUse != null) {
|
cardUse.setRealMoney(money);
|
List<MoneyCardUse> list = new ArrayList<MoneyCardUse>();
|
list.add(cardUse);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, null, "有有效会籍卡", list, null);
|
} else {
|
//无会员卡则new一个,为了把钱传递到前台
|
cardUse = new MoneyCardUse();
|
cardUse.setRealMoney(money);
|
List<MoneyCardUse> list = new ArrayList<MoneyCardUse>();
|
list.add(cardUse);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, null, "无有效会籍卡", list, null);
|
}
|
|
}
|
|
/**
|
* 冻结会员项目
|
*
|
* @return
|
*/
|
@RequestMapping(value = "/editForm")
|
public String editForm(Long id, HttpServletRequest request) {
|
if (id != null) {
|
SysProjUse sysProjUse = projUseService.findById(id);
|
request.setAttribute("obj", sysProjUse);
|
}
|
return "admin/hive/vip/projUse-form";
|
}
|
|
/**
|
* 添加或修改会员項目信息
|
*/
|
@RequestMapping(value = "/addOrModify")
|
public @ResponseBody
|
AjaxResult addOrModify(SysProjUse sysProjUse) {
|
if (sysProjUse.getId() != null) {
|
return modify(projUseService, sysProjUse, "项目");
|
} else {
|
return add(projUseService, sysProjUse, "项目");
|
}
|
}
|
|
|
@Autowired
|
SysVipInfoDao vipInfoDao;
|
|
@Autowired
|
ShoppingGoodsDao shoppingGoodsDao;
|
|
@Autowired
|
SysProjUseDao projUseDao;
|
|
@Autowired
|
MoneyCardUseDao moneyCardUseDao;
|
|
|
@RequestMapping(value = "/importProjUse")
|
@ResponseBody
|
@Transactional
|
public AjaxResult importVipInfo(HttpServletResponse response, HttpServletRequest request, @RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
|
|
String fileName = file.getOriginalFilename();
|
String dirPath = "E:";
|
//PropertiesUtil.getString(AppConstance.FILES_TORAGE_PATH);
|
|
File saveFile = new File(dirPath + "/" + fileName);
|
file.transferTo(saveFile);
|
|
SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
|
List<ExcelSheetPO> excelSheetPOList = ExcelUtil.readExcel(saveFile, null, null);
|
|
/*
|
//项目资料导入
|
List<List<Object>> dataList = excelSheetPOList.get(0).getDataList();
|
List<SysProjUse> projUseList = new ArrayList<>();
|
if (CollectionUtils.isNotEmpty(dataList)) {
|
for (int j = 1; j < dataList.size(); j++) {
|
List<Object> objects = dataList.get(j);
|
LogUtil.info("导入项目第" + j + "行" + objects);
|
SysProjUse projUse = getProjFromExcelObjs(objects, Dictionary.SHOPPING_GOODS_TYPE_XM, j);
|
projUseDao.insert(projUse);
|
}
|
}
|
//项目资料导入=======end===
|
|
|
//套餐资料导入
|
List<List<Object>> taocanDataList = excelSheetPOList.get(1).getDataList();
|
List<SysProjUse> taocanProjUseList = new ArrayList<>();
|
if (CollectionUtils.isNotEmpty(taocanDataList)) {
|
//定义一个空套餐
|
SysProjUse taocan = null;
|
for (int j = 1; j < taocanDataList.size(); j++) {
|
List<Object> objects = taocanDataList.get(j);
|
LogUtil.info("导入套餐第" + j + "行" + objects);
|
Object vipName = objects.get(0);
|
String vipNameStr = vipName.toString();
|
if (taocan == null
|
|| (taocan != null && StringUtils.isNotBlank(vipNameStr))) {
|
//切换下一个套餐
|
taocan = getProjFromExcelObjs(objects, Dictionary.SHOPPING_GOODS_TYPE_TC, j);
|
projUseDao.insert(taocan);
|
} else if (taocan != null && StringUtils.isBlank(vipNameStr)) {
|
//添加套餐中的项目
|
SysProjUse projUse = getProjFromExcelObjs(objects, Dictionary.SHOPPING_GOODS_TYPE_XM, j);
|
projUse.setTaocanId(taocan.getId());
|
projUseDao.insert(projUse);
|
} else {
|
throw new GlobleException("第" + j + "行套餐导入格式不符合要求");
|
}
|
}
|
}
|
//套餐资料导入=======end===
|
|
|
*/
|
//充值卡资料导入
|
List<List<Object>> cardList = excelSheetPOList.get(2).getDataList();
|
List<MoneyCardUse> cardUseArrayList = new ArrayList<>();
|
if (CollectionUtils.isNotEmpty(cardList)) {
|
for (int j = 1; j < cardList.size(); j++) {
|
List<Object> objects = cardList.get(j);
|
LogUtil.info("导入项目第" + j + "行" + objects);
|
MoneyCardUse moneyCardUse = getMoneyCarFromExcelObjs(objects, j);
|
|
moneyCardUseDao.insert(moneyCardUse);
|
}
|
}
|
//充值卡资料导入=======end===
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "导入成功");
|
}
|
|
private SysProjUse getProjFromExcelObjs(List<Object> objects, String type, int line) {
|
SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
SysProjUse projUse = new SysProjUse();
|
Object tel = objects.get(1);
|
if (tel != null) {
|
String telStr = tel.toString();
|
SysVipInfo vipInfo = vipInfoDao.selectByPhone(telStr);
|
if (vipInfo == null) {
|
vipInfo = new SysVipInfo();
|
vipInfo.setShopId(sysUsers.getShopId());
|
vipInfo.setPhone(telStr);
|
vipInfo.setName(objects.get(0).toString());
|
vipInfoDao.insert(vipInfo);
|
}
|
|
if (vipInfo != null) {
|
String goodNo = String.valueOf(objects.get(3));
|
ShoppingGoods goods = shoppingGoodsDao.findByCode(goodNo);
|
if (goods != null) {
|
|
projUse.setVipId(vipInfo.getId());
|
projUse.setProjName(objects.get(2).toString());
|
projUse.setProjId(goods.getId());
|
projUse.setBalance(Double.valueOf(getDefautZero(objects.get(4) + "")));
|
projUse.setSurplusCount(Integer.parseInt(getDefautZero(objects.get(5) + "")));
|
projUse.setPrice(Double.parseDouble(getDefautZero(objects.get(6) + "")));
|
projUse.setDeductionNum(1);
|
|
String timeStr = objects.get(7) + "";
|
if (StringUtils.isNotBlank(timeStr)) {
|
projUse.setFailTime(DateUtil.stringToDate(timeStr, DateUtil.DATE_FORMAT_DD));
|
}
|
|
projUse.setSource(objects.get(8) + "");
|
projUse.setRemark(objects.get(9) + "");
|
projUse.setIsOver(Dictionary.DELETED_N);
|
projUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
|
if (Dictionary.SHOPPING_GOODS_TYPE_XM.equals(type)) {
|
projUse.setType(Dictionary.SHOPPING_GOODS_TYPE_XM);
|
} else {
|
projUse.setType(Dictionary.SHOPPING_GOODS_TYPE_TC);
|
projUse.setIsCourse(goods.getIsCourse());
|
}
|
} else {
|
throw new GlobleException("第" + line + "行产品编号" + goodNo + "在系统中不存在");
|
}
|
} else {
|
throw new GlobleException("第" + line + "行会员" + telStr + "在系统中不存在");
|
}
|
} else {
|
throw new GlobleException("第" + line + "行会员号码为空");
|
}
|
return projUse;
|
}
|
|
|
private MoneyCardUse getMoneyCarFromExcelObjs(List<Object> objects, int line) {
|
MoneyCardUse moneyCardUse = new MoneyCardUse();
|
SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
|
Object tel = objects.get(1);
|
if (tel != null) {
|
String telStr = tel.toString();
|
SysVipInfo vipInfo = vipInfoDao.selectByPhone(telStr);
|
if (vipInfo == null) {
|
vipInfo = new SysVipInfo();
|
vipInfo.setShopId(sysUsers.getShopId());
|
vipInfo.setPhone(telStr);
|
vipInfo.setName(objects.get(0).toString());
|
vipInfoDao.insert(vipInfo);
|
}
|
String goodNo = String.valueOf(objects.get(3));
|
String goodName = String.valueOf(objects.get(2)).trim();
|
|
|
ShoppingGoods goods = shoppingGoodsDao.findByCode(goodNo);
|
if (goods != null || "储值卡".equals(goodName)) {
|
|
moneyCardUse.setVipId(vipInfo.getId());
|
moneyCardUse.setCardName(objects.get(2).toString());
|
if (!"储值卡".equals(goodName)) {
|
moneyCardUse.setGoodsId(goods.getId());
|
}
|
moneyCardUse.setRealMoney(Double.valueOf(getDefautZero(objects.get(4) + "")));
|
moneyCardUse.setGiftMoney(Double.valueOf(getDefautZero(objects.get(5) + "")));
|
moneyCardUse.setLastCount(Integer.valueOf(getDefautZero(objects.get(6) + "")));
|
moneyCardUse.setUseTotal(moneyCardUse.getLastCount());
|
String timeStr = objects.get(7) + "";
|
if (StringUtils.isNotBlank(timeStr)) {
|
moneyCardUse.setFailTime(DateUtil.stringToDate(timeStr, DateUtil.DATE_FORMAT_DD));
|
}
|
|
moneyCardUse.setSource(objects.get(8) + "");
|
moneyCardUse.setRemark(objects.get(9) + "");
|
moneyCardUse.setIsOver(Dictionary.DELETED_N);
|
moneyCardUse.setStatus(Dictionary.TAOCAN_STATUS_YX);
|
if ("储值卡".equals(moneyCardUse.getCardName())) {
|
moneyCardUse.setIsVipCar(Dictionary.FLAG_YES_Y);
|
} else if(Dictionary.FLAG_YES.equals(goods.getCarIsAll())){
|
moneyCardUse.setIsVipCar(Dictionary.FLAG_YES_Y);
|
}else{
|
moneyCardUse.setIsVipCar(Dictionary.FLAG_NO_N);
|
}
|
} else {
|
throw new GlobleException("第" + line + "行产品编号" + goodNo + "在系统中不存在");
|
}
|
} else {
|
throw new GlobleException("第" + line + "行会员号码为空");
|
}
|
return moneyCardUse;
|
}
|
|
|
private String getDefautZero(String s) {
|
if (StringUtils.isBlank(s)) {
|
return "0";
|
} else {
|
return s;
|
}
|
}
|
|
|
}
|