package com.caimei.controller.admin.vip; import com.alibaba.fastjson.JSONObject; import com.caimei.annotation.CurrentUser; import com.caimei.model.ResponseJson; import com.caimei.model.po.SysMenu; import com.caimei.model.po.SysUser; import com.caimei.model.vo.*; import com.caimei.service.vip.VipService; import com.github.pagehelper.PageInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.List; import java.util.Map; /** * 用户公共API * * @author : Aslee * @date : 2021/5/11 */ @Api(tags = "会员API") @RestController @RequiredArgsConstructor @RequestMapping("/vip") public class VipApi { private final VipService vipService; @ApiOperation("会员套餐/订制服务配置") @ApiImplicitParam(name = "params", value = "packageList([{duration:2;unit:1;orginalPrice:999;price:888}]):套餐列表;serviceList([{name:111}]):订制服务列表;", required = true) @PostMapping("/configure") public ResponseJson configureVip(@RequestBody String params) { JSONObject parseObject = JSONObject.parseObject(params); List> packageList = (List>) parseObject.get("packageList"); List> serviceList = (List>) parseObject.get("serviceList"); if (null == packageList || packageList.size() <= 0) { return ResponseJson.error("参数异常,套餐列表不能为空"); } if (null == serviceList || serviceList.size() <= 0) { return ResponseJson.error("参数异常,订制服务列表不能为空"); } return vipService.configureVip(packageList, serviceList); } @ApiOperation("会员套餐/订制服务回显数据") @GetMapping("/configure/form") public ResponseJson configureVipForm() { return vipService.configureVipForm(); } @ApiOperation("在线支付开通会员") @ApiImplicitParams({ @ApiImplicitParam(required = false, name = "packageId", value = "会员套餐id"), @ApiImplicitParam(required = false, name = "services", value = "订制服务id,以,分开") }) @GetMapping("/pay") public ResponseJson payVip(@CurrentUser SysUser sysUser, Integer packageId, String services) { if (null == sysUser) { return ResponseJson.error("用户信息异常", null); } // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } if (null == packageId) { return ResponseJson.error("参数异常,套餐id不能为空", null); } return vipService.payVip(authUserId, packageId, services, 1, 0, null); } @ApiOperation("会员列表") @ApiImplicitParams({ @ApiImplicitParam(name = "shopName", required = false, value = "供应商名称"), @ApiImplicitParam(name = "shopType", required = false, value = "供应商类型:1品牌方,2代理商"), @ApiImplicitParam(name = "vipStatus", required = false, value = "会员状态:0已过期,1生效中"), @ApiImplicitParam(name = "mobile", required = false, value = "手机号"), @ApiImplicitParam(name = "linkMan", required = false, value = "联系人"), @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"), @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条") }) @GetMapping("/list") public ResponseJson> vipList(String shopName, Integer shopType,Integer vipStatus, String mobile, String linkMan, @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { return vipService.vipList(shopName, shopType, vipStatus, mobile, linkMan, pageNum, pageSize); } @ApiOperation("供应商会员购买记录") @ApiImplicitParams({ @ApiImplicitParam(name = "authUserId", required = false, value = "供应商用户id"), @ApiImplicitParam(name = "vipPackageId", required = false, value = "会员套餐id"), @ApiImplicitParam(name = "vipStatus", required = false, value = "会员状态:0已过期,1生效中,2待生效"), @ApiImplicitParam(name = "payBeginTime", required = false, value = "购买开始时间"), @ApiImplicitParam(name = "payEndTime", required = false, value = "购买结束时间"), @ApiImplicitParam(name = "endBeginTime", required = false, value = "到期开始时间"), @ApiImplicitParam(name = "endEndTime", required = false, value = "到期结束时间"), @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"), @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条") }) @GetMapping("/history/list") public ResponseJson> vipHistoryList(@CurrentUser SysUser sysUser, Integer authUserId, Integer vipPackageId, Integer vipStatus, String payBeginTime, String payEndTime, String endBeginTime, String endEndTime, @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { // 管理员/供应商公用接口,管理员调用时传authUserId,供应商调用不传 if (null != sysUser && 1 != sysUser.getId()) { // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } } else if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } return vipService.vipHistoryList(authUserId, vipPackageId, vipStatus, payBeginTime, payEndTime, endBeginTime, endEndTime, pageNum, pageSize); } @ApiOperation("会员数据") @GetMapping("/info") public ResponseJson vipInfo(@CurrentUser SysUser sysUser) { if (null == sysUser) { return ResponseJson.error("用户信息异常", null); } // 获取供应商用户id Integer userIdentity = sysUser.getUserIdentity(); Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null; if (null == authUserId) { return ResponseJson.error("供应商用户id不能为空", null); } return vipService.getVipInfo(authUserId); } @ApiOperation("会员套餐列表") @GetMapping("/package/list") public ResponseJson> packageList() { return vipService.vipPackageList(); } @ApiOperation("赠送会员") @ApiImplicitParam(name = "params", value = "authUserId:用户id;packageId:会员套餐id;", required = true) @PostMapping("/send") public ResponseJson sendVip(@RequestBody String params) { JSONObject parseObject = JSONObject.parseObject(params); Integer authUserId = parseObject.getInteger("authUserId"); Integer packageId = parseObject.getInteger("packageId"); if (null == authUserId) { return ResponseJson.error("参数异常,套餐列表不能为空"); } if (null == packageId) { return ResponseJson.error("参数异常,会员套餐id不能为空"); } return vipService.payVip(authUserId, packageId, "", 2, 1, new Date()); } @ApiOperation("会员服务配置表单数据") @GetMapping("/menus/form") public ResponseJson> vipMenusForm(){ return vipService.vipMenusForm(); } @ApiOperation("会员服务配置") @PostMapping("/menus/configure") public ResponseJson vipMenusConfigure(@RequestBody String params){ JSONObject parseObject = JSONObject.parseObject(params); List> baseMenuList = (List>) parseObject.get("baseMenuList"); List> upMenuList = (List>) parseObject.get("upMenuList"); return vipService.vipMenusConfigure(baseMenuList,upMenuList); } @ApiOperation("会员订制化服务配置表单") @ApiImplicitParam(name = "authUserId", value = "authUserId:用户id", required = true) @GetMapping("/services/form") public ResponseJson> vipServicesForm(Integer authUserId){ return vipService.vipServicesForm(authUserId); } @ApiOperation("会员订制化服务配置") @ApiImplicitParam(name = "params", value = "authUserId:用户id;roleIds:配置的角色id,以,隔开", required = true) @PostMapping("/services/configure") public ResponseJson vipServicesConfigure(@RequestBody String params){ JSONObject parseObject = JSONObject.parseObject(params); Integer authUserId = parseObject.getInteger("authUserId"); String roleIds = parseObject.getString("roleIds"); return vipService.vipServicesConfigure(authUserId, roleIds); } }