From 4c2c165352b2693ba5067947b01fe807ed6a8bd9 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 6 Jun 2019 10:51:08 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=B4=BB=E5=8A=A8][=E4=BF=AE=E6=94=B9][?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E4=B8=9A=E5=8A=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/WxActivityController.java | 80 ++++++++++ .../com/iformall/enums/EnumActivityType.java | 36 +++++ .../iformall/service/WxActivityService.java | 48 ++++++ .../service/impl/WxActivityServiceImpl.java | 144 ++++++++++++++++++ 4 files changed, 308 insertions(+) create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityController.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumActivityType.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxActivityService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxActivityServiceImpl.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityController.java new file mode 100644 index 000000000..dc54b32c3 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityController.java @@ -0,0 +1,80 @@ +package com.iformall.controller.market; + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.SystemControllerLog; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.WxActivity; +import com.iformall.enums.EnumActivityStatus; +import com.iformall.service.WxActivityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author gongbiao + */ +@RestController +@RequestMapping("wxActivity") +@Api(description = "活动") +public class WxActivityController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxActivityService wxActivityService; + + @ApiOperation("分页列表接口") + @GetMapping("list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + @SystemControllerLog(description = "活动-列表") + public ResultData list(@ModelAttribute WxActivity wxActivity, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxActivityController::list"); + if (null == wxActivity) wxActivity = new WxActivity(); + if (wxActivity.getStatus() != null && wxActivity.getStatus() == -1) { + wxActivity.setStatus(null); + } + wxActivity.setTenantId(getTenantId()); + wxActivity.setSortColumns(WxActivity.Field.Id_DESC); + final PageInfo page = wxActivityService.listAsPage(wxActivity, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("新增接口") + @PostMapping("add") + @SystemControllerLog(description = "活动-新增") + public ResultData add(@RequestBody WxActivity wxActivity) { + logger.debug("[" + getIpAddr() + "] WxActivityController::add"); + wxActivity.setStatus(EnumActivityStatus.STATUS_THROW_IN.getCode()); + wxActivity.setTenantId(getTenantId()); + wxActivityService.saveOrUpdate(wxActivity); + return new ResultData(); + } + + @ApiOperation("根据id更新接口") + @PostMapping("update") + @SystemControllerLog(description = "活动-id更新") + public ResultData update(@RequestBody WxActivity wxActivity) { + logger.debug("[" + getIpAddr() + "] WxActivityController::update"); + return wxActivityService.saveOrUpdate(wxActivity); + } + + @ApiOperation("根据id查询接口") + @GetMapping("/findById") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "活动-查询") + public ResultData findById(Long id) { + logger.debug("[" + getIpAddr() + "] WxActivityController::findById"); + WxActivity wxActivity = wxActivityService.getById(id); + return new ResultData(Result.SUCCESS, "查询成功", wxActivity); + } + + +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumActivityType.java b/mallinkService/src/main/java/com/iformall/enums/EnumActivityType.java new file mode 100644 index 000000000..a2e78ce58 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumActivityType.java @@ -0,0 +1,36 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumActivityType { + + STABLE(1, "固定格式"), + FREE(2, "自由图文"), + PAGEPATH(3, "小程序路径"),; + + public static EnumActivityType getEnum(Integer code) { + for (EnumActivityType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumActivityType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxActivityService.java b/mallinkService/src/main/java/com/iformall/service/WxActivityService.java new file mode 100644 index 000000000..67a5c0a9d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxActivityService.java @@ -0,0 +1,48 @@ +package com.iformall.service; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxActivity; + +import javax.servlet.http.HttpServletResponse; + +public interface WxActivityService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param pageIndex + * @param pageSize + * @return + */ + PageInfo listAsPage(WxActivity record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + WxActivity getById(Long id); + + /** + * 保存或更新实体 + * + * @param record + */ + ResultData saveOrUpdate(WxActivity record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(Long id); + + + ResultData updateStatus(WxActivity wxActivity); + + void printHtmlById(Long id, HttpServletResponse response); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxActivityServiceImpl.java new file mode 100644 index 000000000..a78ab814e --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxActivityServiceImpl.java @@ -0,0 +1,144 @@ +package com.iformall.service.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; +import com.iformall.common.IdWorker; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxActivity; +import com.iformall.enums.EnumActivityStatus; +import com.iformall.enums.EnumActivityType; +import com.iformall.mapper.WxActivityMapper; +import com.iformall.mapper.WxCouponChannelMapper; +import com.iformall.service.WxActivityService; +import com.iformall.service.WxCouponChannelService; +import com.iformall.service.WxCouponService; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; + +/** + * @author gongbiao + */ +@Service +public class WxActivityServiceImpl implements WxActivityService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + WxActivityMapper wxActivityMapper; + + @Autowired + WxCouponChannelMapper wxCouponChannelMapper; + + @Autowired + WxCouponService wxCouponService; + + @Autowired + WxCouponChannelService wxCouponChannelService; + + @Override + public PageInfo listAsPage(WxActivity record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxActivityMapper.findList(record)); + } + + @Override + public WxActivity getById(Long id) { + WxActivity wxActivity = wxActivityMapper.selectByPrimaryKey(id); + String html = wxActivity.getHtml(); + if (!StringUtils.isEmpty(html)) { + try { + html = URLDecoder.decode(html, "utf-8"); + } catch (UnsupportedEncodingException e) { + logger.info("图文内容解码失败"); + } + wxActivity.setHtml(html); + } + return wxActivity; + } + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) + @Override + public ResultData saveOrUpdate(WxActivity wxActivity) { + if (wxActivity.getType().equals(EnumActivityType.STABLE.getCode())) { + if (StringUtils.isEmpty(wxActivity.getCoverImg())) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "封面图不能为空"); + } + if (StringUtils.isEmpty(wxActivity.getTitle())) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "标题不能为空"); + } + if (StringUtils.isEmpty(wxActivity.getDetail())) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "活动说明不能为空"); + } + } else if (wxActivity.getType().equals(EnumActivityType.FREE.getCode())) { + if (StringUtils.isEmpty(wxActivity.getHtml())) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "图文不能为空"); + } + int length = wxActivity.getHtml().getBytes().length; + if (length >= 0xFFFFFF) { //Mysql MiddleText length limited + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "图文内容过大无法保存"); + } + } else { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + } + wxActivity.setStatus(EnumActivityStatus.STATUS_THROW_IN.getCode()); + if (wxActivity.getId() == null) { + final IdWorker idWorker = IdWorker.get(); + wxActivity.setId(idWorker.nextId()); + wxActivityMapper.insertSelective(wxActivity); + } else { + wxActivityMapper.updateByPrimaryKeySelective(wxActivity); + } + return new ResultData(Result.SUCCESS, "操作成功"); + } + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) + @Override + public ResultData updateStatus(WxActivity wxActivity) { + wxActivityMapper.updateByPrimaryKeySelective(wxActivity); + return new ResultData(Result.SUCCESS, "操作成功"); + } + + @Override + public void deleteById(Long id) { + wxActivityMapper.deleteByPrimaryKey(id); + } + + + @Override + public void printHtmlById(Long id, HttpServletResponse response) { + try { + response.setHeader("Content-type", "text/html;charset=utf-8"); + WxActivity wxActivity = wxActivityMapper.selectByPrimaryKey(id); + String html = StringUtils.isEmpty(wxActivity.getHtml()) ? "" : wxActivity.getHtml(); + try { + html = URLDecoder.decode(html, "utf-8"); + } catch (UnsupportedEncodingException e) { + logger.info("图文内容解码失败"); + } + // 循环取出流中的数据 + byte[] b = new byte[1024]; + int len; + InputStream inStream = new ByteArrayInputStream(html.getBytes()); + while ((len = inStream.read(b)) > 0) { + response.getOutputStream().write(b, 0, len); + } + inStream.close(); + } catch (Exception e) { + logger.info("输出富文本内容" + e.getMessage()); + e.printStackTrace(); + } + } + + +}