package com.dsh.account.controller; import com.dsh.account.entity.TAppUser; import com.dsh.account.feignclient.other.SysLogClient; import com.dsh.account.model.vo.userBenefitDetail.*; import com.dsh.account.service.RechargeRecordsService; import com.dsh.account.service.TAppUserService; import com.dsh.account.service.UserIntegralChangesService; import com.dsh.account.util.ResultUtil; import com.dsh.account.util.TokenUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.List; /** * 使用福利 控制器 */ @RestController @RequestMapping("") public class UseBenefitsController { @Autowired private TAppUserService tauService; @Autowired private TokenUtil tokenUtil; @Resource private SysLogClient slClient; @Autowired private RechargeRecordsService rechargeRService; @Autowired private UserIntegralChangesService uicService; private final SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); @ResponseBody @PostMapping("/api/useBenefit/indexOfAppUser") @ApiOperation(value = "福利主页", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil queryAppUserUser(){ try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ return ResultUtil.tokenErr(); } return ResultUtil.success(tauService.queryBenefitDetails(appUserId)); }catch (Exception e){ return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/useBenefit/userDetails") @ApiOperation(value = "用户个人信息", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil queryAppUserDetails(){ try { AppUserDetailsVo detailsVo = new AppUserDetailsVo(); Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ return ResultUtil.tokenErr(); } TAppUser tAppUser = tauService.getBaseMapper().selectById(appUserId); if (null != tAppUser){ detailsVo.setUserImage(tAppUser.getHeadImg()); detailsVo.setUserName(tAppUser.getName()); detailsVo.setUserPhone(tAppUser.getPhone()); detailsVo.setSex(tAppUser.getGender() == 1 ? "男" : "女"); detailsVo.setBirthday(format1.format(tAppUser.getBirthday())); detailsVo.setAddress(tAppUser.getProvince()+tAppUser.getCity()); detailsVo.setMemberLifespan(format1.format(tAppUser.getVipEndTime())); } return ResultUtil.success(detailsVo); }catch (Exception e){ return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/useBenefit/uploadImage") @ApiOperation(value = "上传用户头像", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(name = "file",value = "图片字节",dataType = "MultipartFile") }) public ResultUtil uploadAppUserProfile(MultipartFile file, HttpServletRequest request){ try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ return ResultUtil.tokenErr(); } return ResultUtil.success(tauService.uploadAppUserHeadImg(appUserId,file,request)); }catch (Exception e){ return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/useBenefit/cancellation") @ApiOperation(value = "个人信息-注销账号", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil cancellationAccount(){ try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ return ResultUtil.tokenErr(); } // 变更账号的状态为删除 tauService.cancellation(appUserId); // 增加一条注销账号的日志 slClient.cancellation(appUserId); // 删除redis中用户key tokenUtil.logout(); return ResultUtil.success(); }catch (Exception e){ return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/useBenefit/logOut") @ApiOperation(value = "个人信息-退出登录", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil logOutAccount(){ try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ return ResultUtil.tokenErr(); } // 增加一条退出账号的日志 slClient.logOut(appUserId); // 删除redis中用户key tokenUtil.logout(); return ResultUtil.success(); }catch (Exception e){ return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/useBenefit/userBilling") @ApiOperation(value = "账单", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "年月", name = "yearMonth", required = true, dataType = "string"), @ApiImplicitParam(value = "记录(1充值 2扣除)", name = "recordId", required = true, dataType = "int"), }) public ResultUtil> getUserBillingDetails(String yearMonth,Integer recordId){ try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ return ResultUtil.tokenErr(); } return ResultUtil.success(tauService.queryUserBillingDetails(yearMonth,recordId,appUserId)); }catch (Exception e){ return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/useBenefit/voucherDetail") @ApiOperation(value = "充值明细", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "年月", name = "yearMonth", required = true, dataType = "string"), @ApiImplicitParam(value = "页码", name = "pageNum", required = true, dataType = "int"), @ApiImplicitParam(value = "每页数量", name = "pageSize", required = true, dataType = "int"), @ApiImplicitParam(value = "记录(1充值 2扣除)", name = "recordId", required = true, dataType = "int"), }) public ResultUtil> wpGoldRechargeRecord(String yearMonth, Integer recordId,Integer pageNum,Integer pageSize){ try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ return ResultUtil.tokenErr(); } return ResultUtil.success(rechargeRService.getAppUserRechargeRecord(yearMonth,recordId,appUserId,pageNum,pageSize)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/base/useBenefit/voucherCenter") @ApiOperation(value = "充值中心", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil> rechargeCenterConfig(){ try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ return ResultUtil.tokenErr(); } return ResultUtil.success(tauService.getSysRechargeConfig(appUserId)); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 充值中心-支付 */ @ResponseBody @PostMapping("/api/useBenefit/payment") @ApiOperation(value = "充值中心-支付", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil rechargeCenPayment(RechargePayRequest request){ try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ return ResultUtil.tokenErr(); } return rechargeRService.rechargeCenPayment(userIdFormRedis,request); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 积分商城 */ @ResponseBody @PostMapping("/api/useBenefit/integralMallList") @ApiOperation(value = "积分商城", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil> pointsMallList(MallRequest request){ try { return ResultUtil.success(tauService.queryAppUserIntegral(request)); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 商品详情 */ @ResponseBody @PostMapping("/api/useBenefit/goodsDetails") @ApiOperation(value = "积分商城-商品详情", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "商品id", name = "goodId", required = true, dataType = "int"), @ApiImplicitParam(value = "商品类型 1实物 2课包 3门票 4优惠券", name = "goodsType", required = true, dataType = "int"), }) public ResultUtil productDetails(Integer goodId, Integer goodsType){ try { return ResultUtil.success(tauService.productDetails(goodId,goodsType)); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 实体、门票、优惠券为默认门店|课包为默认学员 */ @ResponseBody @PostMapping("/api/useBenefit/goodsOfCourseStore") @ApiOperation(value = "积分商城-实体、门票、优惠券为默认门店|课包为默认学员", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "纬度", name = "lat", required = false, dataType = "String"), @ApiImplicitParam(value = "经度", name = "lon", required = false, dataType = "String"), @ApiImplicitParam(value = "是否为课包商品(1=是 2=否)", name = "isCourse", required = true, dataType = "int"), @ApiImplicitParam(value = "商品id", name = "pointsMerId", required = true, dataType = "int"), }) public ResultUtil goodsOfCourseStore(String lat, String lon,Integer isCourse,Integer pointsMerId){ try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ return ResultUtil.tokenErr(); } return ResultUtil.success(tauService.queryAppUserDefaultStuAndStore(userIdFormRedis,pointsMerId,lat,lon,isCourse)); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 兑换详情(实体、门票、优惠券)中的门店列表 */ @ResponseBody @PostMapping("/api/useBenefit/exchangeStoreIds") @ApiOperation(value = "积分商城-兑换详情(实体、门票、优惠券)中的门店列表", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "商品类型 1实物 2课包 3门票 4优惠券", name = "goodsType", required = true, dataType = "String"), @ApiImplicitParam(value = "商品id", name = "pointsMerId", required = true, dataType = "int"), }) public ResultUtil> getExchangeStoreIds( Integer goodsType,Integer pointsMerId){ try { return ResultUtil.success(tauService.queryStoresOfExchange(goodsType,pointsMerId)); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 商品兑换 */ @ResponseBody @PostMapping("/api/useBenefit/productRedemptionOperation") @ApiOperation(value = "积分商城-商品兑换", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "商品id", name = "goodId", required = true, dataType = "int"), @ApiImplicitParam(value = "商品类型 1实物 2课包 3门票 4优惠券", name = "goodsType", required = true, dataType = "int"), @ApiImplicitParam(value = "兑换数量", name = "nums", required = false, dataType = "int"), @ApiImplicitParam(value = "兑换方式(1=积分,2=积分+现金)", name = "exchangeType", required = true, dataType = "int"), @ApiImplicitParam(value = "现金支付方式(1=微信 2=支付宝)", name = "payType", required = false, dataType = "int"), @ApiImplicitParam(value = "学员id列表", name = "stuIds", required = false), }) public ResultUtil productRedemptionOperation(Integer goodId, Integer goodsType,Integer nums,Integer exchangeType,Integer payType,List stuIds){ try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ return ResultUtil.tokenErr(); } return tauService.productRedemptionOperation(userIdFormRedis,goodId,goodsType,nums,exchangeType,payType,stuIds); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 积分明细 */ @ResponseBody @PostMapping("/api/useBenefit/integralDetails") @ApiOperation(value = "积分商城-积分明细", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "年月", name = "yearMonth", required = true, dataType = "string"), @ApiImplicitParam(value = "记录(1充值 2扣除)", name = "recordId", required = true, dataType = "int"), }) public ResultUtil pointDetails(String yearMonth, Integer recordId){ try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ return ResultUtil.tokenErr(); } return ResultUtil.success(uicService.queryUserPointsDetails(yearMonth,recordId,userIdFormRedis)); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 兑换记录 */ @ResponseBody @PostMapping("/api/useBenefit/exchangeRecords") @ApiOperation(value = "积分商城-兑换记录", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "使用状态 (1已使用 2未使用)", name = "useType", required = true, dataType = "string"), @ApiImplicitParam(value = "商品类型 1实物 2课包 3门票 4优惠券", name = "goodType", required = true, dataType = "int"), }) public ResultUtil> exchangeRecordsDetails(Integer useType, Integer goodType){ try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ return ResultUtil.tokenErr(); } return ResultUtil.success(uicService.queryExchangeGoodsdetails(userIdFormRedis,useType,goodType)); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 兑换记录详情 */ @ResponseBody @PostMapping("/api/useBenefit/redemptionDetails") @ApiOperation(value = "积分商城-兑换记录详情", tags = {"APP-使用福利"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "记录id", name = "detailsId", required = true, dataType = "string"), }) public ResultUtil redemptionDetails(Integer detailsId){ try { return ResultUtil.success(uicService.queryRedemptionDetails(detailsId)); }catch (Exception e){ return ResultUtil.runErr(); } } }