PosReviewController.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. package com.ruoyi.app.order;
  2. import java.math.BigDecimal;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import java.util.List;
  6. import jakarta.servlet.http.HttpServletResponse;
  7. import cn.hutool.core.util.ObjectUtil;
  8. import com.alibaba.fastjson.JSONArray;
  9. import com.alibaba.fastjson.JSONObject;
  10. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  11. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  12. import com.baomidou.mybatisplus.core.metadata.IPage;
  13. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  14. import com.ruoyi.common.annotation.Anonymous;
  15. import com.ruoyi.common.exception.ServiceException;
  16. import com.ruoyi.system.domain.WalletTransaction;
  17. import com.ruoyi.system.domain.SysPointControl;
  18. import com.ruoyi.system.domain.UserWallet;
  19. import com.ruoyi.system.mapper.PosReviewMapper;
  20. import com.ruoyi.system.service.*;
  21. import com.ruoyi.system.utils.Auth;
  22. import com.ruoyi.system.utils.JwtUtil;
  23. import org.springframework.security.access.prepost.PreAuthorize;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.transaction.annotation.Transactional;
  26. import org.springframework.web.bind.annotation.*;
  27. import com.ruoyi.common.annotation.Log;
  28. import com.ruoyi.common.core.controller.BaseController;
  29. import com.ruoyi.common.core.domain.AjaxResult;
  30. import com.ruoyi.common.enums.BusinessType;
  31. import com.ruoyi.system.domain.PosReview;
  32. import com.ruoyi.common.utils.MessageUtils;
  33. import com.ruoyi.common.utils.poi.ExcelUtil;
  34. import com.ruoyi.common.core.page.TableDataInfo;
  35. /**
  36. * reviewController
  37. *
  38. * @author ruoyi
  39. * @date 2023-06-08
  40. */
  41. @RestController
  42. @RequestMapping("/system/review")
  43. public class PosReviewController extends BaseController
  44. {
  45. @Autowired
  46. private IPosReviewService posReviewService;
  47. @Autowired
  48. private IInfoUserService infoUserService;
  49. @Autowired
  50. private PosReviewMapper posReviewMapper;
  51. @Autowired
  52. private ISysPointControlService pointControlService;
  53. @Autowired
  54. private IUserWalletService userWalletService;
  55. @Autowired
  56. private IPointsTransactionService pointsTransactionService;
  57. @Anonymous
  58. @GetMapping("/getmdrevew")
  59. public AjaxResult getmdrevew(@RequestParam Integer page,
  60. @RequestParam Integer size,
  61. @RequestParam Long mdid){
  62. IPage<PosReview> palist = new Page<>(page,size);
  63. QueryWrapper<PosReview> Wrapper= new QueryWrapper<>();
  64. Wrapper.eq("md_id",mdid);
  65. IPage<PosReview> list = posReviewService.page(palist,Wrapper);
  66. List<PosReview> orlist = list.getRecords();
  67. JSONArray arr = new JSONArray();
  68. for(int i=0;i<orlist.size();i++){
  69. JSONObject org = new JSONObject();
  70. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  71. org.put("id",orlist.get(i).getId());
  72. org.put("ddId",orlist.get(i).getDdId());
  73. org.put("score",orlist.get(i).getScore());
  74. org.put("cretim",sdf.format(orlist.get(i).getCretim()));
  75. org.put("content",orlist.get(i).getContent());
  76. org.put("images",orlist.get(i).getImages());
  77. org.put("user",orlist.get(i).getAnonymous()==0?infoUserService.getById(orlist.get(i).getUserId()):"匿名");
  78. arr.add(org);
  79. }
  80. return success(arr);
  81. }
  82. @Transactional(rollbackFor = Exception.class)
  83. @Anonymous
  84. @Auth
  85. @PostMapping("/addrevew")
  86. public AjaxResult addrevew(@RequestHeader String token,@RequestBody PosReview posReview)
  87. {
  88. JwtUtil jwtUtil = new JwtUtil();
  89. String id = jwtUtil.getusid(token);
  90. PosReview review = posReviewMapper.getrewiew(posReview.getDdId());
  91. if(review==null){
  92. posReview.setUserId(Long.valueOf(id));
  93. //判断是否为新增
  94. if(ObjectUtil.isEmpty(posReview.getId())){
  95. addPoint(Long.valueOf(id),posReview.getDdId());
  96. }
  97. boolean org = posReviewService.saveOrUpdate(posReview);
  98. if(org){
  99. return success(MessageUtils.message("no.comment.success"));
  100. }else {
  101. throw new ServiceException(MessageUtils.message("no.comment.fail"));
  102. }
  103. }else {
  104. return error(MessageUtils.message("no.comment.repeat"));
  105. }
  106. }
  107. /**
  108. * 添加积分
  109. */
  110. private void addPoint(Long userid, String ddId){
  111. SysPointControl control = pointControlService.getById(1);
  112. //开启评论获得积分
  113. if(control.getReviewEnable().equals(1L)){
  114. LambdaQueryWrapper<UserWallet> walletQuery=new LambdaQueryWrapper<>();
  115. walletQuery.eq(UserWallet::getUserId,userid);
  116. UserWallet userWallet = userWalletService.getOne(walletQuery);
  117. if(userWallet==null){
  118. userWallet=new UserWallet();
  119. userWallet.setUserId(userid);
  120. userWallet.setPointsWallet(control.getReviewPoints());
  121. // createPointTransaction(userid, BigDecimal.valueOf(control.getReviewPoints()), BigDecimal.valueOf(userWallet.getPointsWallet()),ddId.toString());
  122. userWalletService.save(userWallet);
  123. }else{
  124. Long userPoint = userWallet.getPointsWallet();
  125. Long point = control.getReviewPoints();
  126. long newPoint = userPoint+point;
  127. userWallet.setPointsWallet(newPoint);
  128. int oldVersion = userWallet.getVersion();
  129. userWallet.setVersion(userWallet.getVersion()+1);
  130. walletQuery.eq(UserWallet::getVersion,oldVersion);
  131. boolean update= userWalletService.update(userWallet,walletQuery);
  132. if(!update){
  133. throw new ServiceException(MessageUtils.message("no.points.update.fail"));
  134. }
  135. // createPointTransaction(userid,BigDecimal.valueOf(control.getReviewPoints()), BigDecimal.valueOf(userWallet.getPointsWallet()),ddId.toString());
  136. }
  137. }
  138. }
  139. /**
  140. * 创建积分流水
  141. */
  142. // private void createPointTransaction(Long userid,BigDecimal pointsChange,BigDecimal currentPoints,String ddId){
  143. // WalletTransaction pointsTransaction = new WalletTransaction();
  144. // pointsTransaction.setUserId(userid);
  145. // pointsTransaction.setChange("+"+pointsChange);
  146. // pointsTransaction.setCurrentBalance(currentPoints.toString());
  147. // pointsTransaction.setType("0");
  148. // pointsTransaction.setDdId(ddId);
  149. // pointsTransaction.setCreateTime(new Date());
  150. // pointsTransactionService.save(pointsTransaction);
  151. // }
  152. /**
  153. * 查询review列表
  154. */
  155. @PreAuthorize("@ss.hasPermi('system:review:list')")
  156. @GetMapping("/list")
  157. public TableDataInfo list(PosReview posReview)
  158. {
  159. startPage();
  160. List<PosReview> list = posReviewService.selectPosReviewList(posReview);
  161. return getDataTable(list);
  162. }
  163. /**
  164. * 导出review列表
  165. */
  166. @PreAuthorize("@ss.hasPermi('system:review:export')")
  167. @Log(title = "review", businessType = BusinessType.EXPORT)
  168. @PostMapping("/export")
  169. public void export(HttpServletResponse response, PosReview posReview)
  170. {
  171. List<PosReview> list = posReviewService.selectPosReviewList(posReview);
  172. ExcelUtil<PosReview> util = new ExcelUtil<PosReview>(PosReview.class);
  173. util.exportExcel(response, list, MessageUtils.message("no.export.excel.review"));
  174. }
  175. /**
  176. * 获取review详细信息
  177. */
  178. @PreAuthorize("@ss.hasPermi('system:review:query')")
  179. @GetMapping(value = "/{id}")
  180. public AjaxResult getInfo(@PathVariable("id") Long id)
  181. {
  182. return success(posReviewService.selectPosReviewById(id));
  183. }
  184. /**
  185. * 新增review
  186. */
  187. @PreAuthorize("@ss.hasPermi('system:review:add')")
  188. @Log(title = "review", businessType = BusinessType.INSERT)
  189. @PostMapping
  190. public AjaxResult add(@RequestBody PosReview posReview)
  191. {
  192. return toAjax(posReviewService.insertPosReview(posReview));
  193. }
  194. /**
  195. * 修改review
  196. */
  197. @PreAuthorize("@ss.hasPermi('system:review:edit')")
  198. @Log(title = "review", businessType = BusinessType.UPDATE)
  199. @PutMapping
  200. public AjaxResult edit(@RequestBody PosReview posReview)
  201. {
  202. return toAjax(posReviewService.updatePosReview(posReview));
  203. }
  204. /**
  205. * 删除review
  206. */
  207. @PreAuthorize("@ss.hasPermi('system:review:remove')")
  208. @Log(title = "review", businessType = BusinessType.DELETE)
  209. @DeleteMapping("/{ids}")
  210. public AjaxResult remove(@PathVariable Long[] ids)
  211. {
  212. return toAjax(posReviewService.deletePosReviewByIds(ids));
  213. }
  214. }