TPromoCodeController.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621
  1. package com.szwl.controller;
  2. import cn.afterturn.easypoi.excel.ExcelExportUtil;
  3. import cn.afterturn.easypoi.excel.entity.ExportParams;
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7. import com.baomidou.mybatisplus.core.metadata.IPage;
  8. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  9. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  10. import com.szwl.feign.bean.PayFeign;
  11. import com.szwl.constant.JoinpayConstant;
  12. import com.szwl.model.bo.JsonMessage;
  13. import com.szwl.model.bo.R;
  14. import com.szwl.model.bo.ResponseModel;
  15. import com.szwl.model.dto.PromoCodeTarget;
  16. import com.szwl.model.entity.*;
  17. import com.szwl.model.utils.DateUtils;
  18. import com.szwl.service.*;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. import org.apache.commons.lang.StringUtils;
  22. import org.apache.poi.ss.usermodel.Workbook;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.web.bind.annotation.*;
  25. import javax.servlet.http.HttpServletResponse;
  26. import java.io.IOException;
  27. import java.io.OutputStream;
  28. import java.math.BigDecimal;
  29. import java.net.URLEncoder;
  30. import java.text.SimpleDateFormat;
  31. import java.util.*;
  32. import java.util.stream.Collectors;
  33. import static com.szwl.constant.ResponseCodesEnum.A0001;
  34. import static com.szwl.constant.ResponseCodesEnum.A0002;
  35. import static com.szwl.model.utils.DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss;
  36. /**
  37. * <p>
  38. * 优惠码列表 前端控制器
  39. * </p>
  40. *
  41. * @author wuhs
  42. * @since 2022-06-17
  43. */
  44. @Api(value = "/tPromoCode", tags = {"优惠码"})
  45. @RestController
  46. @RequestMapping("/tPromoCode")
  47. public class TPromoCodeController {
  48. @Autowired
  49. TEquipmentService tEquipmentService;
  50. @Autowired
  51. TPromoCodeService promoCodeService;
  52. @Autowired
  53. TPriceService priceService;
  54. @Autowired
  55. TAdminService adminService;
  56. @Autowired
  57. TOrderService orderService;
  58. @Autowired
  59. TJoinpayMchService joinpayMchService;
  60. @Autowired
  61. PayFeign payFeign;
  62. @ApiOperation(value = "获取优惠码")
  63. @GetMapping("/getTPromoCode")
  64. public ResponseModel<IPage<TPromoCode>> getTPromoCode(@RequestParam String code) {
  65. LambdaQueryWrapper<TPromoCode> query = Wrappers.lambdaQuery();
  66. query.eq(TPromoCode::getCode,code);
  67. Page<TPromoCode> page = new Page<>(1, 10, true);
  68. IPage<TPromoCode> iPage = promoCodeService.page(page, query);
  69. return R.ok(iPage);
  70. }
  71. @ApiOperation(value = "获取优惠码")
  72. @GetMapping("/getPromoCode")
  73. public ResponseModel<TPromoCode> getPromoCode(@RequestParam String code) {
  74. LambdaQueryWrapper<TPromoCode> query = Wrappers.lambdaQuery();
  75. String[] split = code.split("-");
  76. query.eq(TPromoCode::getCode,split[0]);
  77. query.eq(TPromoCode::getAdminId,split[1]);
  78. List<TPromoCode> list = promoCodeService.list(query);
  79. if(list.size()>0){
  80. return R.ok(list.get(0));
  81. }
  82. return R.ok();
  83. }
  84. @ApiOperation(value = "获取优惠码")
  85. @GetMapping("/selectTPromoCode")
  86. public ResponseModel<TPromoCode> selectTPromoCode(@RequestParam String code,@RequestParam String adminId) {
  87. LambdaQueryWrapper<TPromoCode> query = Wrappers.lambdaQuery();
  88. query.eq(TPromoCode::getCode,code);
  89. query.eq(TPromoCode::getAdminId,adminId);
  90. List<TPromoCode> list = promoCodeService.list(query);
  91. return R.ok(list.get(0));
  92. }
  93. @ApiOperation(value = "小程序获取优惠码")
  94. @GetMapping("/getCode")
  95. public ResponseModel<TPromoCode> getCode(String clientId, String code) {
  96. if(StringUtils.isEmpty(clientId)){
  97. return null;
  98. }
  99. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  100. query.eq(TEquipment::getClientId,clientId);
  101. List<TEquipment> list = tEquipmentService.list(query);
  102. TEquipment equipment = list.get(0);
  103. LambdaQueryWrapper<TPromoCode> query1 = Wrappers.lambdaQuery();
  104. query1.eq(TPromoCode::getCode,code);
  105. query1.eq(TPromoCode::getAdminId,equipment.getAdminId());
  106. List<TPromoCode> list1 = promoCodeService.list(query1);
  107. if(list1.size()>0){
  108. TPromoCode tPromoCode = list1.get(0);
  109. String isUse = tPromoCode.getIsUse();
  110. if(isUse.equals("1")){
  111. return R.fail(A0002,"已使用");
  112. }
  113. Date lastUseDate = tPromoCode.getLastUseDate();
  114. Date date = new Date();
  115. if(date.getTime()>lastUseDate.getTime()){
  116. return R.fail(A0002,"已过期");
  117. }
  118. return R.ok(tPromoCode);
  119. }else {
  120. return R.fail(A0002,"没有找到优惠码");
  121. }
  122. }
  123. @ApiOperation(value = "修改优惠码状态")
  124. @GetMapping("/updateCode")
  125. public ResponseModel<?> updateCode(String clientId, String code) {
  126. if(StringUtils.isEmpty(clientId)){
  127. return null;
  128. }
  129. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  130. query.eq(TEquipment::getClientId,clientId);
  131. List<TEquipment> list = tEquipmentService.list(query);
  132. TEquipment equipment = list.get(0);
  133. LambdaQueryWrapper<TPromoCode> query1 = Wrappers.lambdaQuery();
  134. query1.eq(TPromoCode::getCode,code);
  135. query1.eq(TPromoCode::getAdminId,equipment.getAdminId());
  136. List<TPromoCode> list1 = promoCodeService.list(query1);
  137. if(list1.size()>0){
  138. TPromoCode tPromoCode = list1.get(0);
  139. tPromoCode.setIsUse("1");
  140. tPromoCode.setUseBy(equipment.getName());
  141. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  142. String time = sdf.format(new Date());
  143. tPromoCode.setUseDate(time);
  144. promoCodeService.updateById(tPromoCode);
  145. return R.ok(null,"修改成功");
  146. }else {
  147. return R.fail(A0002,"没有找到优惠码");
  148. }
  149. }
  150. @ApiOperation(value = "修改优惠码")
  151. @GetMapping("/updatePromoCode")
  152. public void updatePromoCode(@RequestParam(value = "id")String id, @RequestParam(value = "type")String type) {
  153. TPromoCode promoCode = promoCodeService.getById(id);
  154. promoCode.setIsUse(type);
  155. if(type.equals("1")){
  156. promoCode.setUseDate(DateUtils.formatDate(new Date(),PATTERN_yyyy_MM_dd_HH_mm_ss));
  157. }
  158. promoCodeService.updateById(promoCode);
  159. }
  160. @ApiOperation(value = "生成0折优惠码")
  161. @GetMapping("/addPromoCode")
  162. public void addPromoCode(@RequestParam(value = "adminId")String adminId,@RequestParam(value = "lastUseDate")Date lastUseDate,@RequestParam(value = "number")String number) {
  163. int num = Integer.parseInt(number);
  164. List<String> codes = new ArrayList<>();
  165. for (int i = 0; i < num; i++) {
  166. String code = orderService.initSn(Long.valueOf(adminId));
  167. StringBuffer str = new StringBuffer();
  168. str.append(code.substring(0, 6));
  169. codes.add(str.toString());
  170. }
  171. TAdmin admin = adminService.getById(adminId);
  172. for (String code : codes) {
  173. TPromoCode promoCode = new TPromoCode();
  174. promoCode.setCreateDate(new Date());
  175. promoCode.setModifyDate(new Date());
  176. promoCode.setCode(Long.parseLong(code));
  177. promoCode.setAdminId(adminId);
  178. promoCode.setIsUse("0");
  179. promoCode.setDiscount(0f);
  180. promoCode.setLastUseDate(lastUseDate);
  181. promoCode.setCreateDate(new Date());
  182. promoCode.setType("0");
  183. promoCode.setUserName(admin.getUsername());
  184. promoCodeService.save(promoCode);
  185. }
  186. }
  187. @ApiOperation(value = "生成n元优惠券")
  188. @GetMapping("/addYHJ")
  189. public ResponseModel<?> addYHJ(Long wxId,String flag) {
  190. if(wxId==null||StringUtils.isEmpty(flag)){
  191. return R.fail(A0001);
  192. }
  193. LambdaQueryWrapper<TPromoCode> query = Wrappers.lambdaQuery();
  194. query.eq(TPromoCode::getWxId,wxId);
  195. // if(flag.equals("YHJ5")||flag.equals("YHJ10")){
  196. // query.eq(TPromoCode::getType,"2");
  197. // List<TPromoCode> list = promoCodeService.list(query);
  198. // if(list.size()>0){
  199. // return R.ok(1,"此券每人限领一张,您已领取过,不能再领!");
  200. // }
  201. // }
  202. query.eq(TPromoCode::getType,"2");
  203. List<TPromoCode> list = promoCodeService.list(query);
  204. if(list.size()>0){
  205. return R.ok(1,"此券每人限领一张,您已领取过,不能再领!");
  206. }
  207. String code = orderService.initSn(Long.valueOf(wxId));
  208. TPromoCode promoCode = new TPromoCode();
  209. promoCode.setCreateDate(new Date());
  210. promoCode.setModifyDate(new Date());
  211. promoCode.setCode(Long.parseLong(code.substring(code.length()-8,code.length())));
  212. promoCode.setAdminId(null);
  213. promoCode.setIsUse("0");
  214. // if(flag.equals("YHJ5")){
  215. // promoCode.setDiscount(5f);
  216. // promoCode.setType("2");
  217. // }
  218. // if(flag.equals("YHJ10")){
  219. // promoCode.setDiscount(10f);
  220. // promoCode.setType("2");
  221. // }
  222. String[] js = flag.split("J");
  223. String s = js[1];
  224. int price = Integer.parseInt(s);
  225. if(price>100){
  226. return R.fail(A0001);
  227. }
  228. promoCode.setDiscount(Float.valueOf(price));
  229. promoCode.setType("2");
  230. Long data = Calendar.getInstance().getTimeInMillis();
  231. Long t = 3l;
  232. Long mon = 30L*24L*60L*60L*1000L;
  233. Long d = data + (mon*t);
  234. Date lastUseDate = new Date(Long.parseLong(String.valueOf(d)));
  235. promoCode.setLastUseDate(lastUseDate);
  236. promoCode.setCreateDate(new Date());
  237. promoCode.setUserName(null);
  238. promoCode.setWxId(wxId);
  239. promoCodeService.save(promoCode);
  240. return R.ok(promoCode,"领取成功");
  241. }
  242. @ApiOperation(value = "核销优惠券")
  243. @GetMapping("/useYHJ")
  244. public void useYHJ(@RequestParam String code,@RequestParam String adminId,@RequestParam String clentId) {
  245. LambdaQueryWrapper<TPromoCode> query = Wrappers.lambdaQuery();
  246. query.eq(TPromoCode::getCode,code);
  247. query.eq(TPromoCode::getIsUse,"0");
  248. List<TPromoCode> list = promoCodeService.list(query);
  249. if(list.size()>0){
  250. TPromoCode promoCode = list.get(0);
  251. promoCode.setUseDate(DateUtils.formatDate(new Date(), DateUtils.PATTERN_yyyy_MM_dd_HH_mm_ss));
  252. promoCode.setAdminId(adminId);
  253. promoCode.setUseBy(clentId);
  254. promoCode.setIsUse("1");
  255. promoCode.setModifyDate(new Date());
  256. promoCodeService.updateById(promoCode);
  257. }
  258. }
  259. @GetMapping("/getYHJList")
  260. public ResponseModel<?> getYHJList(Long wxId) {
  261. if(wxId==null){
  262. return R.fail(A0001);
  263. }
  264. LambdaQueryWrapper<TPromoCode> query = Wrappers.lambdaQuery();
  265. query.eq(TPromoCode::getWxId,wxId);
  266. query.eq(TPromoCode::getIsUse,"0");
  267. query.eq(TPromoCode::getType,"2");
  268. List<TPromoCode> list = promoCodeService.list(query);
  269. return R.ok(list,"成功");
  270. }
  271. @GetMapping("/checkYHJList")
  272. public ResponseModel<?> checkYHJList(Long wxId) {
  273. if(wxId==null){
  274. return R.fail(A0001);
  275. }
  276. LambdaQueryWrapper<TPromoCode> query = Wrappers.lambdaQuery();
  277. query.eq(TPromoCode::getWxId,wxId);
  278. query.eq(TPromoCode::getType,"2");
  279. List<TPromoCode> list = promoCodeService.list(query);
  280. if(list.size()>0){
  281. return R.ok(true,"已领取");
  282. }else {
  283. return R.ok(false,"未领取");
  284. }
  285. }
  286. @GetMapping("/getYHJ")
  287. public ResponseModel<TPromoCode> getYHJ(@RequestParam String code) {
  288. if(StringUtils.isEmpty(code)){
  289. return R.fail(A0001);
  290. }
  291. LambdaQueryWrapper<TPromoCode> query = Wrappers.lambdaQuery();
  292. query.eq(TPromoCode::getCode,code);
  293. query.eq(TPromoCode::getType,"2");
  294. List<TPromoCode> list = promoCodeService.list(query);
  295. if(list.size()>0){
  296. TPromoCode tPromoCode = list.get(0);
  297. // String isUse = tPromoCode.getIsUse();
  298. // if(isUse.equals("1")){
  299. // return R.fail(A0002,"已使用");
  300. // }
  301. // Date lastUseDate = tPromoCode.getLastUseDate();
  302. // Date date = new Date();
  303. // if(date.getTime()>lastUseDate.getTime()){
  304. // return R.fail(A0002,"已过期");
  305. // }
  306. return R.ok(tPromoCode);
  307. }
  308. return R.ok();
  309. }
  310. @ApiOperation(value = "添加优惠码")
  311. @GetMapping("/add")
  312. public ResponseModel<?> add(Long adminId,int number,Float discount,Float month,String type,String frpCode) {
  313. if(discount==null||month==null||adminId==null||StringUtils.isEmpty(type)){
  314. return R.fail(A0001);
  315. }
  316. TAdmin admin = adminService.getById(adminId);
  317. if(String.valueOf(admin.getId()).equals("1")){
  318. List<String> codes =new ArrayList<>();
  319. for(int i=0;i<number;i++){
  320. StringBuilder num = new StringBuilder();
  321. Random random = new Random();
  322. for (int j = 0; j < 8; j++) {
  323. num.append(String.valueOf(random.nextInt(10)));
  324. }
  325. String code = num.toString();
  326. codes.add(code);
  327. }
  328. Long data = Calendar.getInstance().getTimeInMillis();
  329. Float mm = month*10;
  330. String m = String.valueOf(mm);
  331. String[] split = m.split("\\.");
  332. String th = split[0];
  333. Long t = Long.valueOf(th);
  334. Long mon = 30L*24L*60L*60L*1000L;
  335. Long d = data + ((mon*t)/10);
  336. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  337. String sd = sdf.format(new Date(Long.parseLong(String.valueOf(d))));
  338. Date lastUseDate = new Date(Long.parseLong(String.valueOf(d)));
  339. for(String code : codes){
  340. TPromoCode promoCode = new TPromoCode();
  341. promoCode.setCode(Long.parseLong(code));
  342. promoCode.setAdminId(String.valueOf(admin.getId()));
  343. promoCode.setIsUse("0");
  344. promoCode.setDiscount(discount);
  345. promoCode.setLastUseDate(lastUseDate);
  346. promoCode.setCreateDate(new Date());
  347. promoCode.setUserName(admin.getUsername());
  348. promoCode.setType(type);
  349. promoCodeService.save(promoCode);
  350. }
  351. return R.ok(null,"生成成功");
  352. }
  353. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  354. query.eq(TEquipment::getAdminId,admin.getId());
  355. List<TEquipment> list = tEquipmentService.list(query);
  356. TEquipment equipment = list.get(0);
  357. if(list.size()==0){
  358. // "要有机器才能购买优惠码";
  359. return R.fail("没有机器");
  360. }
  361. //0折优惠码需要支付
  362. if(type.equals("0")&&discount==0){
  363. if(admin.getPromoCodeOpen()==null||admin.getPromoCodeOpen().equals("1")){
  364. Long equipmentId = equipment.getId();
  365. Double money = null;
  366. LambdaQueryWrapper<TPrice> query1 = Wrappers.lambdaQuery();
  367. query1.eq(TPrice::getName,"优惠码");
  368. List<TPrice> prices = priceService.list(query1);
  369. for(TPrice price:prices){
  370. if(price.getName().equals("优惠码")){
  371. money = price.getPrice();
  372. }
  373. }
  374. String sn = orderService.initSn(equipmentId);
  375. String orderNo = sn;
  376. String productName = "优惠码";
  377. BigDecimal price = BigDecimal.valueOf(money*number);
  378. BigDecimal cutPrice = price.multiply(new BigDecimal(100)).divide(new BigDecimal(100));
  379. BigDecimal amount = cutPrice;
  380. String productDesc = "";
  381. String commonParameter = "";
  382. String returnUrl = null;
  383. String notifyUrl = JoinpayConstant.Notify_Url_PromoCode;
  384. String isShowPic = "1";
  385. String openId = null;
  386. String authCode = null;
  387. String appid = null;
  388. String transactionModel = null;
  389. String tradeMerchantNo = null;
  390. String buyerId = null;
  391. String isAlt = "0";
  392. String altType = null;
  393. String altUrl = null;
  394. BigDecimal marketingAmount = null;
  395. // frpCode = "WEIXIN_NATIVE";
  396. TOrder order1 = new TOrder();
  397. order1.setSn(sn);
  398. order1.setType(0);
  399. order1.setAdminId(admin.getId());
  400. order1.setProductName(productName);
  401. order1.setPrice(price);
  402. order1.setEquipmentId(equipmentId);
  403. order1.setClientId(equipment.getClientId());
  404. order1.setStatus(0);
  405. order1.setFrpCode(frpCode);
  406. order1.setRefundTrxNo(String.valueOf(month));
  407. order1.setCreateDate(new Date());
  408. order1.setModifyDate(new Date());
  409. payFeign.addOrder(order1);
  410. JSONArray altInfo = new JSONArray();
  411. String result = null;
  412. try {
  413. result = joinpayMchService.uniPay(
  414. orderNo, amount, productName, productDesc,
  415. commonParameter, returnUrl, notifyUrl, frpCode,
  416. isShowPic, openId, authCode, appid, transactionModel, tradeMerchantNo,
  417. buyerId, isAlt, altType, altInfo, altUrl, marketingAmount
  418. );
  419. } catch (Exception e) {
  420. e.printStackTrace();
  421. return R.fail("申请支付失败");
  422. }
  423. JSONObject resultJson = JSONObject.parseObject(result);
  424. // 汇聚支付支付申请返回支付二维码图片
  425. String rd_Pic = resultJson.getString("rd_Pic");
  426. if (resultJson == null || StringUtils.isBlank(rd_Pic)) {
  427. return R.fail("找不到支付图片");
  428. }
  429. JSONObject kindData = new JSONObject();
  430. kindData.put("sn", sn);
  431. kindData.put("price", price);
  432. kindData.put("image", rd_Pic);
  433. return R.ok(kindData);
  434. }
  435. }
  436. Long equipmentId = equipment.getId();
  437. List<String> codes =new ArrayList<>();
  438. for(int i=0;i<number;i++){
  439. String code = orderService.initSn(equipmentId);
  440. StringBuffer str = new StringBuffer();
  441. str.append(code.substring(0,6));
  442. codes.add(str.toString());
  443. }
  444. Long data = Calendar.getInstance().getTimeInMillis();
  445. Float mm = month*10;
  446. String m = String.valueOf(mm);
  447. String[] split = m.split("\\.");
  448. String th = split[0];
  449. Long t = Long.valueOf(th);
  450. Long mon = 30L*24L*60L*60L*1000L;
  451. Long d = data + ((mon*t)/10);
  452. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  453. String sd = sdf.format(new Date(Long.parseLong(String.valueOf(d))));
  454. Date lastUseDate = new Date(Long.parseLong(String.valueOf(d)));
  455. for(String code : codes){
  456. TPromoCode promoCode = new TPromoCode();
  457. promoCode.setCode(Long.parseLong(code));
  458. promoCode.setAdminId(String.valueOf(admin.getId()));
  459. promoCode.setIsUse("0");
  460. promoCode.setDiscount(discount);
  461. promoCode.setLastUseDate(lastUseDate);
  462. promoCode.setCreateDate(new Date());
  463. promoCode.setUserName(admin.getUsername());
  464. promoCode.setType(type);
  465. promoCodeService.save(promoCode);
  466. }
  467. return R.ok(null,"生成成功");
  468. }
  469. @ApiOperation(value = "获取优惠码列表")
  470. @GetMapping("/pagePromoCode")
  471. public ResponseModel<IPage<?>> pagePromoCode(String adminId , String code, String isUse, Date useStratDate,Date useEndDate,Date createStratDate,Date createEndDate, long current, long size ) {
  472. LambdaQueryWrapper<TPromoCode> query = Wrappers.lambdaQuery();
  473. if(StringUtils.isNotEmpty(adminId)){
  474. TAdmin admin = adminService.getById(adminId);
  475. if(admin.getType()!=0 && admin.getType()!=1){
  476. query.eq(TPromoCode::getAdminId,adminId);
  477. }
  478. if (admin.getId() == 2738) {
  479. LambdaQueryWrapper<TAdmin> adminQuery = Wrappers.lambdaQuery();
  480. adminQuery.isNull(TAdmin::getCompanyType).or()
  481. .eq(TAdmin::getCompanyType, "0");
  482. List<Long> adminIds = adminService.list(adminQuery).stream()
  483. .map(TAdmin::getId).collect(Collectors.toList());
  484. query.in(TPromoCode::getAdminId,adminIds);
  485. }
  486. // 七云平台管理员
  487. if (admin.getId() == 2739) {
  488. LambdaQueryWrapper<TAdmin> adminQuery = Wrappers.lambdaQuery();
  489. adminQuery.eq(TAdmin::getCompanyType, "1");
  490. List<Long> adminIds = adminService.list(adminQuery).stream()
  491. .map(TAdmin::getId).collect(Collectors.toList());
  492. query.in(TPromoCode::getAdminId,adminIds);
  493. }
  494. }else {
  495. return R.fail(A0001);
  496. }
  497. if(StringUtils.isNotEmpty(code)){
  498. query.eq(TPromoCode::getCode,code);
  499. }
  500. if(StringUtils.isNotEmpty(isUse)){
  501. query.like(TPromoCode::getIsUse,isUse);
  502. }
  503. if(useStratDate!=null&&useEndDate!=null){
  504. query.gt(TPromoCode::getUseDate,useStratDate);
  505. query.lt(TPromoCode::getUseDate,useEndDate);
  506. }
  507. if(createStratDate!=null&&createEndDate!=null){
  508. query.gt(TPromoCode::getCreateDate,createStratDate);
  509. query.lt(TPromoCode::getCreateDate,createEndDate);
  510. }
  511. query.orderByDesc(TPromoCode::getCreateDate);
  512. Page<TPromoCode> page = new Page<>(current, size, true);
  513. IPage<TPromoCode> iPage = promoCodeService.page(page, query);
  514. return R.ok(iPage);
  515. }
  516. @ApiOperation(value = "导出优惠码列表")
  517. @GetMapping("/export")
  518. public Object export(HttpServletResponse response, String adminId , String code, String isUse, Date useStratDate, Date useEndDate, Date createStratDate, Date createEndDate, long current, long size ) {
  519. LambdaQueryWrapper<TPromoCode> query = Wrappers.lambdaQuery();
  520. if(StringUtils.isNotEmpty(adminId)){
  521. TAdmin admin = adminService.getById(adminId);
  522. if(admin.getType()!=0 && admin.getType()!=1){
  523. query.eq(TPromoCode::getAdminId,adminId);
  524. }
  525. // 申泽平台管理员
  526. if (admin.getId() == 2738) {
  527. LambdaQueryWrapper<TAdmin> adminQuery = Wrappers.lambdaQuery();
  528. adminQuery.isNull(TAdmin::getCompanyType).or()
  529. .eq(TAdmin::getCompanyType, "0");
  530. List<Long> adminIds = adminService.list(adminQuery).stream()
  531. .map(TAdmin::getId).collect(Collectors.toList());
  532. query.in(TPromoCode::getAdminId,adminIds);
  533. }
  534. // 七云平台管理员
  535. if (admin.getId() == 2739) {
  536. LambdaQueryWrapper<TAdmin> adminQuery = Wrappers.lambdaQuery();
  537. adminQuery.eq(TAdmin::getCompanyType, "1");
  538. List<Long> adminIds = adminService.list(adminQuery).stream()
  539. .map(TAdmin::getId).collect(Collectors.toList());
  540. query.in(TPromoCode::getAdminId,adminIds);
  541. }
  542. }else {
  543. return R.fail(A0001);
  544. }
  545. if(StringUtils.isNotEmpty(code)){
  546. query.eq(TPromoCode::getCode,code);
  547. }
  548. if(StringUtils.isNotEmpty(isUse)){
  549. query.like(TPromoCode::getIsUse,isUse);
  550. }
  551. if(useStratDate!=null&&useEndDate!=null){
  552. query.gt(TPromoCode::getUseDate,useStratDate);
  553. query.lt(TPromoCode::getUseDate,useEndDate);
  554. }
  555. if(createStratDate!=null&&createEndDate!=null){
  556. query.gt(TPromoCode::getCreateDate,createStratDate);
  557. query.lt(TPromoCode::getCreateDate,createEndDate);
  558. }
  559. Page<TPromoCode> page = new Page<>(current, size, true);
  560. IPage<TPromoCode> iPage = promoCodeService.page(page, query);
  561. List<TPromoCode> list = iPage.getRecords();
  562. List<PromoCodeTarget> promoCodeTargets = promoCodeService.findById(list);
  563. ExportParams exportParams = new ExportParams("优惠码记录", "sheet1");
  564. Workbook workbook = ExcelExportUtil.exportExcel(exportParams, PromoCodeTarget.class, promoCodeTargets);
  565. if (workbook != null) {
  566. OutputStream os = null;
  567. try {
  568. os = response.getOutputStream();
  569. SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
  570. response.setContentType("application/vnd.ms-excel;charset=utf-8");
  571. response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("优惠码数据" + format.format(new Date()) + ".xls", "UTF-8"));
  572. workbook.write(os);
  573. return JsonMessage.success("导出成功");
  574. } catch (Exception e) {
  575. e.printStackTrace();
  576. return JsonMessage.success("导出错误");
  577. } finally {
  578. try {
  579. os.close();
  580. workbook.close();
  581. } catch (IOException e) {
  582. e.printStackTrace();
  583. }
  584. }
  585. }
  586. return JsonMessage.success("导出成功");
  587. }
  588. @ApiOperation(value = "查询优惠码几折")
  589. @RequestMapping(value = "/getCodeDiscount", method = RequestMethod.GET)
  590. @ResponseBody
  591. public Object getCodeDiscount(String code) {
  592. if(!StringUtils.isEmpty(code)){
  593. LambdaQueryWrapper<TPromoCode> wrapper = new LambdaQueryWrapper<>();
  594. wrapper.in(TPromoCode::getCode,code);
  595. wrapper.in(TPromoCode::getIsUse,"0");
  596. TPromoCode promoCode = promoCodeService.getOne(wrapper);
  597. if(promoCode == null) {
  598. return null;
  599. }
  600. Float discount = promoCode.getDiscount();
  601. return JsonMessage.success(discount);
  602. }else{
  603. return null;
  604. }
  605. }
  606. }