UserController.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. package com.fs.app.controller;
  2. import cn.hutool.core.img.ImgUtil;
  3. import cn.hutool.core.io.FileUtil;
  4. import cn.hutool.extra.qrcode.QrCodeUtil;
  5. import com.fs.app.annotation.Login;
  6. import com.fs.common.config.FSConfig;
  7. import com.fs.common.core.domain.R;
  8. import com.fs.common.param.BaseQueryParam;
  9. import com.fs.common.utils.OrderUtils;
  10. import com.fs.store.domain.FsStoreOrder;
  11. import com.fs.store.domain.FsUser;
  12. import com.fs.store.domain.FsUserBill;
  13. import com.fs.store.domain.FsUserPromoterApply;
  14. import com.fs.store.param.*;
  15. import com.fs.store.service.*;
  16. import com.fs.store.vo.*;
  17. import com.github.pagehelper.PageHelper;
  18. import com.github.pagehelper.PageInfo;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. import lombok.extern.slf4j.Slf4j;
  22. import org.apache.commons.io.FileUtils;
  23. import org.apache.commons.lang3.StringUtils;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.validation.annotation.Validated;
  26. import org.springframework.web.bind.annotation.*;
  27. import java.awt.*;
  28. import java.io.File;
  29. import java.io.InputStream;
  30. import java.math.BigDecimal;
  31. import java.util.List;
  32. @Api("个人中心")
  33. @RestController
  34. @RequestMapping(value="/app/user")
  35. @Slf4j
  36. public class UserController extends AppBaseController {
  37. @Autowired
  38. private FSConfig fsConfig;
  39. @Autowired
  40. private IFsUserService userService;
  41. @Autowired
  42. private IFsStoreOrderService orderService;
  43. @Autowired
  44. private IFsUserBillService userBillService;
  45. @Autowired
  46. private IFsStoreProductRelationService productRelationService;
  47. @Autowired
  48. private IFsUserExtractService userExtractService;
  49. @Autowired
  50. private IFsUserPromoterApplyService userPromoterApplyService;
  51. /**
  52. * 获取用户信息
  53. * @return R
  54. * */
  55. @Login
  56. @ApiOperation("获取用户信息")
  57. @GetMapping("/getUserInfo")
  58. public R getUserInfo(){
  59. try {
  60. FsUser user=userService.selectFsUserById(Long.parseLong(getUserId()));
  61. if (user.getIsShow()==0){
  62. FsStoreOrder order = orderService.selectOrderByUserIdLimit1(user.getUserId());
  63. if (order!=null){
  64. user.setIsShow(1);
  65. }
  66. }
  67. return R.ok().put("user",user);
  68. } catch (Exception e){
  69. return R.error("操作异常");
  70. }
  71. }
  72. @Login
  73. @ApiOperation("检测是否登录")
  74. @GetMapping("/checkLogin")
  75. public R checkLogin(){
  76. return R.ok("认证成功");
  77. }
  78. @Login
  79. @ApiOperation("获取推荐海报")
  80. @GetMapping("/getTuiImg")
  81. public R getTuiImg(){
  82. try {
  83. FsUser user=userService.selectFsUserById(Long.parseLong(getUserId()));
  84. if(StringUtils.isEmpty(user.getUserCode())){
  85. FsUser userMap=new FsUser();
  86. userMap.setUserId(user.getUserId());
  87. userMap.setUserCode(OrderUtils.genUserCode());
  88. userService.updateFsUser(userMap);
  89. user.setUserCode(userMap.getUserCode());
  90. }
  91. File newFile = new File("fx.jpg");
  92. File newFileT = new File("simsunb.ttf");
  93. InputStream stream = getClass().getClassLoader().getResourceAsStream("fx.jpg");
  94. FileUtils.copyInputStreamToFile(stream, newFile);
  95. if(!newFileT.exists()) {
  96. InputStream streamT = getClass().getClassLoader()
  97. .getResourceAsStream("simsunb.ttf");
  98. FileUtils.copyInputStreamToFile(streamT, newFileT);
  99. }
  100. String url=fsConfig.getTuiImgPath()+"/tui-"+getUserId()+".jpg";
  101. File outputFile = new File(url);
  102. if(!outputFile.exists()) {
  103. outputFile.createNewFile();
  104. }
  105. Font font = Font.createFont(Font.TRUETYPE_FONT, newFileT);
  106. Font f= font.deriveFont(Font.PLAIN,50);
  107. ImgUtil.pressText(//
  108. newFile,
  109. outputFile,
  110. user.getNickname()+"邀您加入",
  111. Color.BLACK,
  112. f, //字体
  113. -60, //x坐标修正值。 默认在中间,偏移量相对于中间偏移
  114. 900, //y坐标修正值。 默认在中间,偏移量相对于中间偏移
  115. 0.8f//透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
  116. );
  117. ImgUtil.pressText(//
  118. outputFile,
  119. outputFile,
  120. "邀请码:"+user.getUserCode(),
  121. Color.BLACK,
  122. f, //字体
  123. -40, //x坐标修正值。 默认在中间,偏移量相对于中间偏移
  124. 1000, //y坐标修正值。 默认在中间,偏移量相对于中间偏移
  125. 0.8f//透明度:alpha 必须是范围 [0.0, 1.0] 之内(包含边界值)的一个浮点数字
  126. );
  127. File qr = new File(fsConfig.getTuiImgPath()+"/qr-"+getUserId()+".png");
  128. if(!qr.exists()) {
  129. qr.createNewFile();
  130. }
  131. QrCodeUtil.generate(fsConfig.getUrl()+"/distribution?userCode="+user.getUserCode(), 300, 300,
  132. FileUtil.file(fsConfig.getTuiImgPath()+"/qr-"+getUserId()+".png"));
  133. ImgUtil.pressImage(
  134. outputFile,
  135. outputFile,
  136. ImgUtil.read(qr), //QR图片
  137. -400, //x坐标修正值。 默认在中间,偏移量相对于中间偏移
  138. 900, //y坐标修正值。 默认在中间,偏移量相对于中间偏移
  139. 1f
  140. );
  141. return R.ok().put("url","profile/tui/tui-"+getUserId()+".jpg");
  142. } catch (Exception e){
  143. log.error("获取推荐海报操作异常",e);
  144. return R.error("操作异常");
  145. }
  146. }
  147. @Login
  148. @ApiOperation("获取我的推荐人")
  149. @GetMapping("/getMyTuiList")
  150. public R getMyTuiList(BaseQueryParam param){
  151. PageHelper.startPage(param.getPage(), param.getPageSize());
  152. List<FsUserTuiVO> list= userService.selectFsUserTuiList(getUserId());
  153. PageInfo<FsUserTuiVO> listPageInfo=new PageInfo<>(list);
  154. return R.ok().put("data",listPageInfo);
  155. }
  156. @Login
  157. @ApiOperation("获取用户金额")
  158. @GetMapping("/getTuiMoney")
  159. public R getMemberTuiMoney(){
  160. try {
  161. FsUser user=userService.selectFsUserById(Long.parseLong(getUserId()));
  162. BigDecimal yesterdayMoney=userBillService.selectFsUserBillTotalByUserId(getUserId(),"brokerage_price");
  163. return R.ok().put("nowMoney",user.getNowMoney()).put("brokeragePrice",user.getBrokeragePrice()).put("yesterdayMoney",yesterdayMoney);
  164. } catch (Exception e){
  165. return R.error("操作异常");
  166. }
  167. }
  168. @Login
  169. @ApiOperation("获取我的推荐订单")
  170. @GetMapping("/getMyTuiOrderList")
  171. public R getMyTuiOrderList(BaseQueryParam param){
  172. PageHelper.startPage(param.getPage(), param.getPageSize());
  173. List<FsStoreOrderTuiVO> list= orderService.selectFsStoreOrderTuiListVO(getUserId());
  174. PageInfo<FsStoreOrderTuiVO> listPageInfo=new PageInfo<>(list);
  175. return R.ok().put("data",listPageInfo);
  176. }
  177. @Login
  178. @ApiOperation("获取用户佣金记录")
  179. @GetMapping("/getTuiMoneyLogs")
  180. public R getTuiMoneyLogs(BaseQueryParam param){
  181. PageHelper.startPage(param.getPage(), param.getPageSize());
  182. FsUserBill map=new FsUserBill();
  183. map.setUserId(Long.parseLong(getUserId()));
  184. map.setCategory("brokerage_price");
  185. List<FsUserBill> list=userBillService.selectFsUserBillList(map);
  186. PageInfo<FsUserBill> listPageInfo=new PageInfo<>(list);
  187. return R.ok().put("data",listPageInfo);
  188. }
  189. @Login
  190. @ApiOperation("获取商品足迹")
  191. @GetMapping("/getProductFoots")
  192. public R getProductFoots(FsStoreProductRelationQueryParam param){
  193. PageHelper.startPage(param.getPage(), param.getPageSize());
  194. param.setUserId(Long.parseLong(getUserId()));
  195. List<FsStoreProductRelationQueryVO> list=productRelationService.selectFsStoreProductRelationListVOQuery(param);
  196. PageInfo<FsStoreProductRelationQueryVO> listPageInfo=new PageInfo<>(list);
  197. return R.ok().put("data",listPageInfo);
  198. }
  199. @Login
  200. @ApiOperation("删除足迹")
  201. @PostMapping("/delProductFoots")
  202. public R delProductFoots(@RequestBody FsStoreProductFootDelParam param){
  203. productRelationService.deleteFsStoreProductRelationById(param.getId());
  204. return R.ok("操作成功");
  205. }
  206. @Login
  207. @ApiOperation("申请提现")
  208. @PostMapping("/doExtract")
  209. public R doExtract(@Validated @RequestBody FsUseDoExtractParam param){
  210. param.setUserId(Long.parseLong(getUserId()));
  211. return userExtractService.doExtract(param);
  212. }
  213. @Login
  214. @ApiOperation("获取提现记录")
  215. @GetMapping("/getExtractList")
  216. public R getExtractList(FsUseExtractQueryParam param){
  217. PageHelper.startPage(param.getPage(), param.getPageSize());
  218. param.setUserId(Long.parseLong(getUserId()));
  219. List<FsUserExtractVO> list=userExtractService.selectFsUserExtractListVOQuery(param);
  220. PageInfo<FsUserExtractVO> listPageInfo=new PageInfo<>(list);
  221. return R.ok().put("data",listPageInfo);
  222. }
  223. @Login
  224. @ApiOperation("修改用户信息")
  225. @PostMapping("/editUser")
  226. public R editUser(@RequestBody FsUserEditParam param){
  227. FsUser user=new FsUser();
  228. user.setUserId(Long.parseLong(getUserId()));
  229. user.setAvatar(param.getAvatar());
  230. user.setNickname(param.getNickname());
  231. if(userService.updateFsUser(user)>0){
  232. return R.ok("修改成功");
  233. }
  234. else{
  235. return R.error("修改失败");
  236. }
  237. }
  238. @Login
  239. @ApiOperation("申请推广员")
  240. @PostMapping("/applyPromoter")
  241. public R applyPromoter(@RequestBody FsUserPromoterApply param){
  242. param.setUserId(Long.parseLong(getUserId()));
  243. FsUserPromoterApply promoterApply=userPromoterApplyService.selectFsUserPromoterApplyByUserId(Long.parseLong(getUserId()));
  244. if(promoterApply!=null){
  245. return R.error("已提交申请,等待后台审核");
  246. }
  247. if(userPromoterApplyService.insertFsUserPromoterApply(param)>0){
  248. return R.ok("提交成功,等待后台审核");
  249. }
  250. else{
  251. return R.error("提交失败");
  252. }
  253. }
  254. @Login
  255. @ApiOperation("绑定推广员")
  256. @PostMapping("/bindPromoter")
  257. public R bindPromoter(@RequestBody FsUserBindPromoterParam param){
  258. FsUser user=userService.selectFsUserById(Long.parseLong(getUserId()));
  259. if(user.getIsPromoter()==null||user.getIsPromoter()==0){
  260. FsUser tuiUser=userService.selectFsUserByUserCode(param.getUserCode());
  261. if(tuiUser!=null){
  262. FsUser userMap=new FsUser();
  263. userMap.setUserId(user.getUserId());
  264. userMap.setIsPromoter(1);
  265. userMap.setSpreadUserId(tuiUser.getUserId());
  266. userService.updateFsUser(userMap);
  267. return R.ok("绑定成功");
  268. }
  269. else{
  270. return R.error("邀请码不存在");
  271. }
  272. }
  273. else{
  274. return R.error("您已是推广员,不能重复绑定");
  275. }
  276. }
  277. @Login
  278. @ApiOperation("获取分享用户列表")
  279. @GetMapping("/getUserShareList")
  280. public R getUserShareList(UserShareListParam param){
  281. PageHelper.startPage(param.getPage(), param.getPageSize());
  282. List<FsUserShareVO> list= userService.selectFsUserShareList(getUserId(),param.getType());
  283. PageInfo<FsUserShareVO> listPageInfo=new PageInfo<>(list);
  284. return R.ok().put("data",listPageInfo);
  285. }
  286. }