| package com.matrix.system.app.action; | 
|   | 
| import com.matrix.core.constance.MatrixConstance; | 
| import com.matrix.core.pojo.AjaxResult; | 
| import com.matrix.core.tools.StringUtils; | 
| import com.matrix.core.tools.WebUtil; | 
| import com.matrix.system.app.dto.AddVipDto; | 
| import com.matrix.system.app.dto.ModifyVipDto; | 
| import com.matrix.system.app.dto.QuestionAnswerDto; | 
| import com.matrix.system.app.dto.VipInfoListDto; | 
| import com.matrix.system.app.mapper.MoneyCardUseMapper; | 
| import com.matrix.system.app.mapper.QuestionMapper; | 
| import com.matrix.system.app.vo.*; | 
| import com.matrix.system.common.bean.CustomerDataDictionary; | 
| import com.matrix.system.common.bean.SysUsers; | 
| import com.matrix.system.common.dao.CustomerDataDictionaryDao; | 
| import com.matrix.system.common.tools.DataAuthUtil; | 
| import com.matrix.system.hive.action.BaseController; | 
| import com.matrix.system.hive.action.util.QueryUtil; | 
| import com.matrix.system.hive.bean.*; | 
| import com.matrix.system.hive.dao.VipAnswerDao; | 
| import com.matrix.system.hive.plugin.util.CollectionUtils; | 
| import com.matrix.system.hive.service.MoneyCardUseService; | 
| import com.matrix.system.hive.service.QuestionSerivce; | 
| import com.matrix.system.hive.service.SysVipInfoService; | 
| import com.matrix.system.hive.service.SysVipLevelService; | 
| import io.swagger.annotations.Api; | 
| import io.swagger.annotations.ApiOperation; | 
| import io.swagger.annotations.ApiResponse; | 
| import io.swagger.annotations.ApiResponses; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.validation.annotation.Validated; | 
| import org.springframework.web.bind.annotation.*; | 
|   | 
| import java.util.List; | 
|   | 
| /** | 
|  * @author wzy | 
|  * @date 2020-12-21 | 
|  **/ | 
| @Api(value = "ApiVipInfoAction", tags = "会员接口类") | 
| @RestController | 
| @RequestMapping(value = "/api/vip") | 
| public class ApiVipInfoAction extends BaseController { | 
|   | 
|     @Autowired | 
|     private SysVipInfoService sysVipInfoService; | 
|   | 
|     @Autowired | 
|     private SysVipLevelService sysVipLevelService; | 
|   | 
|     @Autowired | 
|     private CustomerDataDictionaryDao customerDataDictionaryDao; | 
|   | 
|     @Autowired | 
|     private MoneyCardUseService moneyCardUseService; | 
|   | 
|     @Autowired | 
|     private QuestionSerivce questionSerivce; | 
|   | 
|     @Autowired | 
|     private VipAnswerDao vipAnswerDao; | 
|   | 
|     @ApiOperation(value = "获取会员通讯录列表", notes = "获取会员通讯录列表") | 
|     @ApiResponses({ | 
|             @ApiResponse(code = 200, message = "ok", response = VipInfoListVo.class) | 
|     }) | 
|     @PostMapping(value = "/findVipInfoList") | 
|     public AjaxResult findVipInfoList(@RequestBody VipInfoListDto vipInfoListDto) { | 
|         if (StringUtils.isBlank(vipInfoListDto.getSort())) { | 
|             vipInfoListDto.setSort("zjm"); | 
|         } | 
|   | 
|         if (StringUtils.isBlank(vipInfoListDto.getOrder())) { | 
|             vipInfoListDto.setOrder("asc"); | 
|         } | 
|   | 
|   | 
|         int offset = (vipInfoListDto.getPageNum() - 1) * vipInfoListDto.getPageSize(); | 
|         int limit = vipInfoListDto.getPageSize(); | 
|         vipInfoListDto.setOffset(offset); | 
|         vipInfoListDto.setLimit(limit); | 
|   | 
|   | 
|   | 
|   | 
|         return AjaxResult.buildSuccessInstance(sysVipInfoService.findVipAddressBook(vipInfoListDto)); | 
|     } | 
|   | 
|     @ApiOperation(value = "根据id查询用户信息(通讯录及个人中心)", notes = "根据id查询用户信息") | 
|     @ApiResponses({ | 
|             @ApiResponse(code = 200, message = "ok", response = VipInfoVo.class) | 
|     }) | 
|     @GetMapping(value = "/findVipInfoById/{id}") | 
|     public AjaxResult findVipInfoById(@PathVariable("id") Long id) { | 
|         AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); | 
|         VipInfoVo vipInfoVo = sysVipInfoService.findApiVipInfoById(id); | 
|         ajaxResult.putInMap("vipInfo", vipInfoVo); | 
|         return ajaxResult; | 
|     } | 
|   | 
|     @ApiOperation(value = "根据id查询用户详细信息") | 
|     @ApiResponses({ | 
|             @ApiResponse(code = 200, message = "ok", response = VipInfoDetailVo.class) | 
|     }) | 
|     @GetMapping(value = "/findVipInfoDetailById/{id}") | 
|     public AjaxResult findVipInfoDetailById(@PathVariable("id") Long id) { | 
|         VipInfoDetailVo vipInfoDetailVo = sysVipInfoService.findVipInfoDetail(id); | 
|         AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); | 
|         ajaxResult.putInMap("vipInfo", vipInfoDetailVo); | 
|         return ajaxResult; | 
|     } | 
|   | 
|     @ApiOperation(value = "查询会员类型", notes = "查询会员类型") | 
|     @ApiResponses( | 
|             @ApiResponse(code = 200, message = "ok", response = SysVipLevel.class) | 
|     ) | 
|     @GetMapping(value = "/findVipType") | 
|     public AjaxResult findVipType() { | 
|         SysUsers sysUsers = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|         SysVipLevel sysVipLevel = new SysVipLevel(); | 
|         if(!DataAuthUtil.hasAllShopAuth()) { | 
|             sysVipLevel.setShopId(sysUsers.getShopId()); | 
|         } | 
|   | 
|         return AjaxResult.buildSuccessInstance(sysVipLevelService.findByModel(sysVipLevel)); | 
|     } | 
|   | 
|   | 
|     @ApiOperation(value = "获取到店途径列表", notes = "获取到店途径列表") | 
|     @ApiResponses({ | 
|             @ApiResponse(code = 200, message = "ok", response = CustomerDataDictionary.class) | 
|     }) | 
|     @GetMapping(value = "/findArrivalWayList") | 
|     public AjaxResult findArrivalWayList() { | 
|         List<CustomerDataDictionary> ddtj = customerDataDictionaryDao.selectByParentCode("DDTJ", getMe().getCompanyId()); | 
|         return AjaxResult.buildSuccessInstance(ddtj); | 
|     } | 
|   | 
|     @ApiOperation(value = "添加会员", notes = "添加会员") | 
|     @PostMapping(value = "/addVip") | 
|     public AjaxResult addVip(@RequestBody @Validated AddVipDto addVipDto) { | 
|         int i = sysVipInfoService.apiAddVip(addVipDto); | 
|         if (i > 0) { | 
|             return AjaxResult.buildSuccessInstance("新增成功"); | 
|         } | 
|         return AjaxResult.buildFailInstance("新增失败"); | 
|     } | 
|   | 
|     @ApiOperation(value = "编辑会员", notes = "编辑会员") | 
|     @PostMapping(value = "/modifyVip") | 
|     public AjaxResult modifyVip(@RequestBody ModifyVipDto modifyVipDto) { | 
|         int i = sysVipInfoService.apiModifyVip(modifyVipDto); | 
|         if (i > 0) { | 
|             return AjaxResult.buildSuccessInstance("修改成功"); | 
|         } | 
|         return AjaxResult.buildFailInstance("修改失败"); | 
|     } | 
|   | 
|     @ApiOperation(value = "获取用户信息列表", notes = "获取用户信息列表") | 
|     @GetMapping(value = "/findAllVipInfo") | 
|     public AjaxResult findAllVipInfo() { | 
|         SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); | 
|         SysVipInfo sysVipInfo = new SysVipInfo(); | 
|         if(!DataAuthUtil.hasAllShopAuth()) { | 
|             sysVipInfo.setShopId(user.getShopId()); | 
|         } | 
|         QueryUtil.setQueryLimitCom(sysVipInfo); | 
|         return AjaxResult.buildSuccessInstance(sysVipInfoService.findAll(sysVipInfo)); | 
|     } | 
|   | 
|     @ApiOperation(value = "卡项 - 获取会员卡项列表", notes = "卡项 - 获取会员卡项列表") | 
|     @ApiResponses({ | 
|             @ApiResponse(code = 200, message = "ok", response = VipCardListVo.class) | 
|     }) | 
|     @GetMapping(value = "/findVipCardInfo/{vipId}") | 
|     public AjaxResult findVipCardInfo(@PathVariable("vipId") Long vipId) { | 
|         MoneyCardUse moneyCardUse = new MoneyCardUse(); | 
|         moneyCardUse.setVipId(vipId); | 
|         List<MoneyCardUse> list = moneyCardUseService.findVipCardUseInPage(moneyCardUse, null); | 
|   | 
|         List<VipCardListVo> dataList = MoneyCardUseMapper.INSTANCE.entitiesToCardListVos(list); | 
|         return AjaxResult.buildSuccessInstance(dataList); | 
|     } | 
|   | 
|     @ApiOperation(value = "会员档案 - 获取客户档案问题", notes = "会员档案 - 获取客户档案问题") | 
|     @ApiResponses({ | 
|             @ApiResponse(code = 200, message = "ok", response = QuestionVo.class) | 
|     }) | 
|     @GetMapping(value = "/findVipQuestions/{vipId}") | 
|     public AjaxResult findVipQuestions(@PathVariable("vipId") Long vipId) { | 
|         // 获取会员所有的答案,分类型 | 
|         SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); | 
|         List<Question> questions = questionSerivce.findByVipId(vipId,user.getCompanyId()); | 
|         AjaxResult result = AjaxResult.buildSuccessInstance("获取成功"); | 
|         List<QuestionVo> list = QuestionMapper.INSTANCE.entitiesToVos(questions); | 
|         result.putInMap("questions", list); | 
|         return result; | 
|     } | 
|   | 
|     @ApiOperation(value = "会员档案 - 提交会员档案", notes = "会员档案 - 提交会员档案") | 
|     @PostMapping(value = "/saveVipQuestionsAnswer") | 
|     public AjaxResult saveVipQuestionsAnswer(@RequestBody QuestionAnswerDto questionAnswerDto) { | 
|         VipAnswer delAnswer = new VipAnswer(); | 
|         delAnswer.setVipId(questionAnswerDto.getVipId()); | 
|         vipAnswerDao.deleteByModel(delAnswer); | 
|         if (CollectionUtils.isNotEmpty(questionAnswerDto.getItems())) { | 
|             List<VipAnswer> vipAnswers = QuestionMapper.INSTANCE.dtosToVipAnswers(questionAnswerDto.getItems()); | 
|             vipAnswerDao.batchInsert(vipAnswers); | 
|         } | 
|         return AjaxResult.buildSuccessInstance("档案更新成功"); | 
|     } | 
|   | 
|     @ApiOperation(value = "用户是否存在资金密码", notes = "用户是否存在资金密码") | 
|     @GetMapping(value = "/isExistFundPassword/{vipId}") | 
|     public AjaxResult isExistFundPassword(@PathVariable(value = "vipId") Long vipId) { | 
|         SysVipInfo vipInfo = sysVipInfoService.findById(vipId); | 
|         AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("获取成功"); | 
|         if (StringUtils.isNotBlank(vipInfo.getPassWord())) { | 
|             ajaxResult.putInMap("isExist", true); | 
|         } else { | 
|             ajaxResult.putInMap("isExist", false); | 
|         } | 
|   | 
|         return ajaxResult; | 
|     } | 
| } |