VipApi.java 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. package com.caimei.controller.admin.vip;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.caimei.annotation.CurrentUser;
  4. import com.caimei.model.ResponseJson;
  5. import com.caimei.model.po.SysMenu;
  6. import com.caimei.model.po.SysUser;
  7. import com.caimei.model.vo.*;
  8. import com.caimei.service.vip.VipService;
  9. import com.github.pagehelper.PageInfo;
  10. import io.swagger.annotations.Api;
  11. import io.swagger.annotations.ApiImplicitParam;
  12. import io.swagger.annotations.ApiImplicitParams;
  13. import io.swagger.annotations.ApiOperation;
  14. import lombok.RequiredArgsConstructor;
  15. import org.springframework.web.bind.annotation.*;
  16. import java.util.Date;
  17. import java.util.List;
  18. import java.util.Map;
  19. /**
  20. * 用户公共API
  21. *
  22. * @author : Aslee
  23. * @date : 2021/5/11
  24. */
  25. @Api(tags = "会员API")
  26. @RestController
  27. @RequiredArgsConstructor
  28. @RequestMapping("/vip")
  29. public class VipApi {
  30. private final VipService vipService;
  31. @ApiOperation("会员套餐/订制服务配置")
  32. @ApiImplicitParam(name = "params", value = "packageList([{duration:2;unit:1;orginalPrice:999;price:888}]):套餐列表;serviceList([{name:111}]):订制服务列表;", required = true)
  33. @PostMapping("/configure")
  34. public ResponseJson configureVip(@RequestBody String params) {
  35. JSONObject parseObject = JSONObject.parseObject(params);
  36. List<Map<String,Object>> packageList = (List<Map<String,Object>>) parseObject.get("packageList");
  37. List<Map<String,String>> serviceList = (List<Map<String,String>>) parseObject.get("serviceList");
  38. if (null == packageList || packageList.size() <= 0) {
  39. return ResponseJson.error("参数异常,套餐列表不能为空");
  40. }
  41. if (null == serviceList || serviceList.size() <= 0) {
  42. return ResponseJson.error("参数异常,订制服务列表不能为空");
  43. }
  44. return vipService.configureVip(packageList, serviceList);
  45. }
  46. @ApiOperation("会员套餐/订制服务回显数据")
  47. @GetMapping("/configure/form")
  48. public ResponseJson<VipConfigurationVo> configureVipForm() {
  49. return vipService.configureVipForm();
  50. }
  51. @ApiOperation("在线支付开通会员")
  52. @ApiImplicitParams({
  53. @ApiImplicitParam(required = false, name = "packageId", value = "会员套餐id"),
  54. @ApiImplicitParam(required = false, name = "services", value = "订制服务id,以,分开")
  55. })
  56. @GetMapping("/pay")
  57. public ResponseJson<Integer> payVip(@CurrentUser SysUser sysUser, Integer packageId, String services) {
  58. if (null == sysUser) {
  59. return ResponseJson.error("用户信息异常", null);
  60. }
  61. // 获取供应商用户id
  62. Integer userIdentity = sysUser.getUserIdentity();
  63. Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null;
  64. if (null == authUserId) {
  65. return ResponseJson.error("供应商用户id不能为空", null);
  66. }
  67. if (null == packageId) {
  68. return ResponseJson.error("参数异常,套餐id不能为空", null);
  69. }
  70. return vipService.payVip(authUserId, packageId, services, 1, 0, null);
  71. }
  72. @ApiOperation("会员列表")
  73. @ApiImplicitParams({
  74. @ApiImplicitParam(name = "shopName", required = false, value = "供应商名称"),
  75. @ApiImplicitParam(name = "shopType", required = false, value = "供应商类型:1品牌方,2代理商"),
  76. @ApiImplicitParam(name = "vipStatus", required = false, value = "会员状态:0已过期,1生效中"),
  77. @ApiImplicitParam(name = "mobile", required = false, value = "手机号"),
  78. @ApiImplicitParam(name = "linkMan", required = false, value = "联系人"),
  79. @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"),
  80. @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
  81. })
  82. @GetMapping("/list")
  83. public ResponseJson<PageInfo<VipListVo>> vipList(String shopName, Integer shopType,Integer vipStatus, String mobile, String linkMan,
  84. @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
  85. @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
  86. return vipService.vipList(shopName, shopType, vipStatus, mobile, linkMan, pageNum, pageSize);
  87. }
  88. @ApiOperation("供应商会员购买记录")
  89. @ApiImplicitParams({
  90. @ApiImplicitParam(name = "authUserId", required = false, value = "供应商用户id"),
  91. @ApiImplicitParam(name = "vipPackageId", required = false, value = "会员套餐id"),
  92. @ApiImplicitParam(name = "vipStatus", required = false, value = "会员状态:0已过期,1生效中,2待生效"),
  93. @ApiImplicitParam(name = "payBeginTime", required = false, value = "购买开始时间"),
  94. @ApiImplicitParam(name = "payEndTime", required = false, value = "购买结束时间"),
  95. @ApiImplicitParam(name = "endBeginTime", required = false, value = "到期开始时间"),
  96. @ApiImplicitParam(name = "endEndTime", required = false, value = "到期结束时间"),
  97. @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"),
  98. @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
  99. })
  100. @GetMapping("/history/list")
  101. public ResponseJson<PageInfo<VipHistoryListVo>> vipHistoryList(@CurrentUser SysUser sysUser, Integer authUserId, Integer vipPackageId, Integer vipStatus, String payBeginTime,
  102. String payEndTime, String endBeginTime, String endEndTime,
  103. @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
  104. @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
  105. // 管理员/供应商公用接口,管理员调用时传authUserId,供应商调用不传
  106. if (null != sysUser && 1 != sysUser.getId()) {
  107. // 获取供应商用户id
  108. Integer userIdentity = sysUser.getUserIdentity();
  109. authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null;
  110. if (null == authUserId) {
  111. return ResponseJson.error("供应商用户id不能为空", null);
  112. }
  113. } else if (null == authUserId) {
  114. return ResponseJson.error("供应商用户id不能为空", null);
  115. }
  116. return vipService.vipHistoryList(authUserId, vipPackageId, vipStatus, payBeginTime, payEndTime, endBeginTime, endEndTime, pageNum, pageSize);
  117. }
  118. @ApiOperation("会员数据")
  119. @GetMapping("/info")
  120. public ResponseJson<VipInfoVo> vipInfo(@CurrentUser SysUser sysUser) {
  121. if (null == sysUser) {
  122. return ResponseJson.error("用户信息异常", null);
  123. }
  124. // 获取供应商用户id
  125. Integer userIdentity = sysUser.getUserIdentity();
  126. Integer authUserId = 2 == userIdentity ? sysUser.getId() : 3 == userIdentity ? sysUser.getParentId() : null;
  127. if (null == authUserId) {
  128. return ResponseJson.error("供应商用户id不能为空", null);
  129. }
  130. return vipService.getVipInfo(authUserId);
  131. }
  132. @ApiOperation("会员套餐列表")
  133. @GetMapping("/package/list")
  134. public ResponseJson<List<VipPackageVo>> packageList() {
  135. return vipService.vipPackageList();
  136. }
  137. @ApiOperation("赠送会员")
  138. @ApiImplicitParam(name = "params", value = "authUserId:用户id;packageId:会员套餐id;", required = true)
  139. @PostMapping("/send")
  140. public ResponseJson sendVip(@RequestBody String params) {
  141. JSONObject parseObject = JSONObject.parseObject(params);
  142. Integer authUserId = parseObject.getInteger("authUserId");
  143. Integer packageId = parseObject.getInteger("packageId");
  144. if (null == authUserId) {
  145. return ResponseJson.error("参数异常,套餐列表不能为空");
  146. }
  147. if (null == packageId) {
  148. return ResponseJson.error("参数异常,会员套餐id不能为空");
  149. }
  150. return vipService.payVip(authUserId, packageId, "", 2, 1, new Date());
  151. }
  152. @ApiOperation("会员服务配置表单数据")
  153. @GetMapping("/menus/form")
  154. public ResponseJson<Map<String,Object>> vipMenusForm(){
  155. return vipService.vipMenusForm();
  156. }
  157. @ApiOperation("会员服务配置")
  158. @PostMapping("/menus/configure")
  159. public ResponseJson vipMenusConfigure(@RequestBody String params){
  160. JSONObject parseObject = JSONObject.parseObject(params);
  161. List<Map<String,Object>> baseMenuList = (List<Map<String,Object>>) parseObject.get("baseMenuList");
  162. List<Map<String,Object>> upMenuList = (List<Map<String,Object>>) parseObject.get("upMenuList");
  163. return vipService.vipMenusConfigure(baseMenuList,upMenuList);
  164. }
  165. @ApiOperation("会员订制化服务配置表单")
  166. @ApiImplicitParam(name = "authUserId", value = "authUserId:用户id", required = true)
  167. @GetMapping("/services/form")
  168. public ResponseJson<List<SysMenu>> vipServicesForm(Integer authUserId){
  169. return vipService.vipServicesForm(authUserId);
  170. }
  171. @ApiOperation("会员订制化服务配置")
  172. @ApiImplicitParam(name = "params", value = "authUserId:用户id;roleIds:配置的角色id,以,隔开", required = true)
  173. @PostMapping("/services/configure")
  174. public ResponseJson vipServicesConfigure(@RequestBody String params){
  175. JSONObject parseObject = JSONObject.parseObject(params);
  176. Integer authUserId = parseObject.getInteger("authUserId");
  177. String roleIds = parseObject.getString("roleIds");
  178. return vipService.vipServicesConfigure(authUserId, roleIds);
  179. }
  180. }