RegisterApi.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. package com.caimei365.user.controller;
  2. import com.caimei365.user.idempotent.Idempotent;
  3. import com.caimei365.user.model.ResponseJson;
  4. import com.caimei365.user.model.dto.*;
  5. import com.caimei365.user.model.vo.ClubTemporaryVo;
  6. import com.caimei365.user.service.RegisterService;
  7. import io.swagger.annotations.Api;
  8. import io.swagger.annotations.ApiImplicitParam;
  9. import io.swagger.annotations.ApiOperation;
  10. import lombok.RequiredArgsConstructor;
  11. import org.apache.commons.lang.StringUtils;
  12. import org.springframework.http.HttpHeaders;
  13. import org.springframework.web.bind.annotation.*;
  14. /**
  15. * 注册Api
  16. *
  17. * @author : Charles
  18. * @date : 2021/3/10
  19. */
  20. @Api(tags = "注册Api")
  21. @RestController
  22. @RequiredArgsConstructor
  23. @RequestMapping("/user/register")
  24. public class RegisterApi {
  25. private final RegisterService registerService;
  26. /**
  27. * 检查手机号是否可以注册
  28. * <p>
  29. * spi旧接口:/seller/club/check
  30. *
  31. * @param bindMobile 手机号
  32. */
  33. @ApiOperation("检查手机号是否可以注册")
  34. @ApiImplicitParam(required = true, name = "bindMobile", value = "手机号或邮箱")
  35. @GetMapping("/check")
  36. public ResponseJson registerCheck(String bindMobile) {
  37. return registerService.registerCheck(bindMobile);
  38. }
  39. /**
  40. * 普通机构入驻(注册)
  41. * <p>
  42. * spi旧接口:/club/common
  43. *
  44. * @param clubRegisterDto ClubRegisterDto{
  45. * source 注册来源: 0网站 1小程序
  46. * userName 用户名
  47. * bindMobile 企业绑定手机号
  48. * password 密码
  49. * unionId 微信unionId
  50. * nickName 微信昵称
  51. * avatarUrl 微信头像(旧:headimgurl)
  52. * passWordConfirm 用户确认密码
  53. * smsCode 短信验证码(旧:activationCode)
  54. * isAgreed 是否同意勾选同意协议,1是,其他否
  55. * }
  56. * @param headers HttpHeaders
  57. */
  58. @ApiOperation("注册普通机构")
  59. @Idempotent(prefix = "idempotent_club", keys = {"#clubRegisterDto"}, expire = 5)
  60. @PostMapping("/club")
  61. public ResponseJson clubRegister(ClubRegisterDto clubRegisterDto, @RequestHeader HttpHeaders headers) {
  62. return registerService.clubRegister(clubRegisterDto, headers);
  63. }
  64. /**
  65. * 普通机构升级会员机构
  66. * <p>
  67. * spi旧接口:/club/upgrade
  68. *
  69. * @param upgradeDto ClubUpgradeDto:{
  70. * clubId 机构ID
  71. * userId 用户ID
  72. * name 机构名称
  73. * shortName 机构简称
  74. * contractEmail 邮箱(contractEmail1)
  75. * contractPhone 固定电话
  76. * linkMan 联系人(linkMan1)
  77. * provinceId 省Id
  78. * cityId 市Id
  79. * townId 县区Id
  80. * address 地址
  81. * shopPhoto 门头照(headpic)
  82. * businessLicense 营业执照(businessLicenseImage)
  83. * socialCreditCode 统一社会信用代码(socialCreditCode)
  84. * firstClubType 一级分类:医美=1和生美=2
  85. * secondClubType 医美的二级分类:诊所=1、门诊=2、医院=3。 生美没有二级分类
  86. * department 医美分类下的门诊和医院则需要填写科室
  87. * medicalPracticeLicense 医美分类必须上传医疗执业许可证(medicalPracticeLicenseImg)
  88. * mainProduct 主打项目(mainpro)
  89. * fax 传真
  90. * profile 公司简介
  91. * }
  92. * @param headers HttpHeaders
  93. */
  94. @ApiOperation("普通机构升级会员机构")
  95. @PostMapping("/club/upgrade")
  96. public ResponseJson clubUpgrade(ClubUpgradeDto upgradeDto, @RequestHeader HttpHeaders headers) {
  97. return registerService.clubUpgrade(upgradeDto, headers);
  98. }
  99. /**
  100. * 协销拉机构上线(用户点击注册)
  101. * <p>
  102. * spi旧接口:/seller/club/register
  103. *
  104. * @param online 暂存数据id
  105. * @param headers HttpHeaders
  106. */
  107. @ApiOperation("协销拉机构上线(机构注册)")
  108. @ApiImplicitParam(required = true, name = "id", value = "暂存机构数据id")
  109. @Idempotent(prefix = "idempotent_club", keys = {"#userOnlineDto"}, expire = 5)
  110. @PostMapping("/club/online")
  111. public ResponseJson<Integer> clubOnline(OnlineDto online, @RequestHeader HttpHeaders headers) {
  112. Integer id = online.getId();
  113. if (id == null) {
  114. return ResponseJson.error("参数异常", null);
  115. }
  116. return registerService.clubOnline(id, headers);
  117. }
  118. /**
  119. * 供应商注册
  120. * <p>
  121. * spi旧接口:supplier/appletsRegistered
  122. *
  123. * @param shopRegisterDto ShopRegisterDto{
  124. * source 注册来源: 0网站 1小程序
  125. * name 组织名称
  126. * shortName 供应商公司简称(sname)
  127. * bindMobile 企业绑定手机号
  128. * email 邮箱
  129. * password 密码
  130. * linkMan 联系人
  131. * provinceId 省(provinceID)
  132. * cityId 市(cityID)
  133. * townId 所在县区Id(townID)
  134. * address 地址
  135. * socialCreditCode 统一社会信用代码
  136. * businessLicense 营业执照(businessLicenseImage)
  137. * firstShopType 医疗=1和非医疗=2
  138. * secondShopType 医疗的二级分类 一类器械=1、二类器械 =2、三类器械=3、其他=4 /// 1和非医疗没有二级分类
  139. * mainProduct 主打项目(mainpro)
  140. * mainProductDesc 主打系列商品说明
  141. * passWordConfirm 用户确认密码
  142. * shopDesc 公司介绍
  143. * website 官网网址
  144. * wxOfficialAccount 微信公众号
  145. * wxApplets 微信小程序
  146. * smsCode 短信验证码(旧:activationCode)
  147. * isAgreed 是否同意勾选同意协议,1是,其他否
  148. * whichStep 注册步数: PC(0),小程序(1,2,3)
  149. * }
  150. * @param headers HttpHeaders
  151. */
  152. @ApiOperation("供应商注册")
  153. @Idempotent(prefix = "idempotent_shop", keys = {"#shopRegisterDto"}, expire = 5)
  154. @PostMapping("/shop")
  155. public ResponseJson shopRegister(ShopRegisterDto shopRegisterDto, @RequestHeader HttpHeaders headers) {
  156. String passWordConfirm = shopRegisterDto.getPassWordConfirm();
  157. String smsCode = shopRegisterDto.getSmsCode();
  158. Integer isAgreed = shopRegisterDto.getIsAgreed();
  159. Integer whichStep = shopRegisterDto.getWhichStep();
  160. return registerService.shopRegister(shopRegisterDto, passWordConfirm, smsCode, isAgreed, whichStep, headers);
  161. }
  162. /**
  163. * 更新供应商申请信息
  164. * <p>
  165. * spi旧接口:/supplier/updateCompanyInfo
  166. *
  167. * @param shopApplyDto ShopApplyDto
  168. * @param headers HttpHeaders
  169. * @return ShopPo
  170. */
  171. @ApiOperation("更新供应商申请信息")
  172. @PostMapping("/shop/apply")
  173. public ResponseJson updateShopApplyInfo(ShopApplyDto shopApplyDto, @RequestHeader HttpHeaders headers) {
  174. return registerService.updateShopApply(shopApplyDto, headers);
  175. }
  176. /**
  177. * 引导升级后改变guideFlag状态
  178. *
  179. * @param userId 用户Id(userId)
  180. */
  181. @ApiOperation("引导升级后改变guideFlag状态")
  182. @ApiImplicitParam(required = true, name = "userId", value = "用户Id")
  183. @GetMapping("/guide")
  184. public ResponseJson updateGuideFlag(Integer userId) {
  185. return registerService.updateGuideFlag(userId);
  186. }
  187. /**
  188. * @param onlineDto ClubOnlineDto:{
  189. * source 注册来源: 0网站 1小程序
  190. * userId 协销用户ID(userID)
  191. * name 机构名称
  192. * shortName 机构简称(shortName)
  193. * bindMobile 企业绑定手机号
  194. * contractEmail 邮箱(email)
  195. * linkMan 联系人(linkMan1)
  196. * provinceId 省Id
  197. * cityId 市Id
  198. * townId 县区Id
  199. * address 地址
  200. * shopPhoto 门头照(headpic)
  201. * businessLicense 营业执照(businessLicenseImage)
  202. * socialCreditCode 统一社会信用代码(socialCreditCode)
  203. * firstClubType 一级分类:医美=1和生美=2
  204. * secondClubType 医美的二级分类:诊所=1、门诊=2、医院=3。 生美没有二级分类
  205. * department 医美分类下的门诊和医院则需要填写科室
  206. * medicalPracticeLicense 医美分类必须上传医疗执业许可证(medicalPracticeLicenseImg)
  207. * mainProduct 主打项目(mainpro)
  208. * isAgreed 是否同意勾选同意协议,1是,其他否
  209. * }
  210. */
  211. @ApiOperation("协销拉机构上线(资料填写)")
  212. @PostMapping("/club/temporary")
  213. public ResponseJson<Integer> clubTemporary(ClubOnlineDto onlineDto) {
  214. if (null == onlineDto.getUserId()) {
  215. return ResponseJson.error("参数异常:用户Id不能为空!", null);
  216. }
  217. if (StringUtils.isBlank(onlineDto.getBindMobile())) {
  218. return ResponseJson.error("参数异常:企业绑定手机号不能为空!", null);
  219. }
  220. if (StringUtils.isBlank(onlineDto.getLinkMan())) {
  221. return ResponseJson.error("参数异常:联系人不能为空!", null);
  222. }
  223. if (null == onlineDto.getIsAgreed() || 1 != onlineDto.getIsAgreed()) {
  224. return ResponseJson.error("请勾选同意协议", null);
  225. }
  226. return registerService.clubTemporary(onlineDto);
  227. }
  228. @ApiOperation("协销拉机构上线(查询暂时数据)")
  229. @GetMapping("/temporary/data")
  230. public ResponseJson<ClubTemporaryVo> temporaryData(Integer id) {
  231. if (id == null) {
  232. return ResponseJson.error("参数异常", null);
  233. }
  234. return registerService.temporaryData(id);
  235. }
  236. @ApiOperation("现金开通超级会员")
  237. @GetMapping("super/money")
  238. public ResponseJson superVipUpgrade(SuperVipDto superVipDto, @RequestHeader HttpHeaders headers) {
  239. return registerService.superVipUpgrade(superVipDto, headers);
  240. }
  241. @ApiOperation("采美豆开通超级会员")
  242. @GetMapping("super/beans")
  243. public ResponseJson superVipUpByBeans(SuperVipDto superVipDto, @RequestHeader HttpHeaders headers) {
  244. if (null == superVipDto.getUserPackage()) {
  245. return ResponseJson.error("参数异常:购买套餐不能为空!", null);
  246. }
  247. if (null == superVipDto.getUserId()) {
  248. return ResponseJson.error("参数异常:用户id不能为空", null);
  249. }
  250. return registerService.superVipUpByBeans(superVipDto, headers);
  251. }
  252. }