diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxQuestionController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxQuestionController.java index 60950c5de..b57058d28 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxQuestionController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxQuestionController.java @@ -1,7 +1,5 @@ package com.iformall.controller; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.iformall.common.ErrorCode; import com.iformall.common.Result; @@ -22,7 +20,7 @@ import java.util.List; @RestController @RequestMapping("wxQuestion") -@Api(description="标签弹窗接口") +@Api(description="问券调查") public class WxQuestionController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxQuestionController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxQuestionController.java new file mode 100644 index 000000000..a8ea15866 --- /dev/null +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxQuestionController.java @@ -0,0 +1,96 @@ +package com.iformall.controller; + +import com.alibaba.fastjson.JSONObject; +import com.iformall.common.ErrorCode; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxQuestion; +import com.iformall.domain.po.WxQuestionConfig; +import com.iformall.domain.po.WxQuestionLog; +import com.iformall.enums.EnumQuestionConfigStatus; +import com.iformall.service.WxQuestionService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.configurationprocessor.json.JSONArray; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Random; + +@RestController +@RequestMapping("wxQuestion") +@Api(description="问券调查") +public class WxQuestionController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxQuestionService wxQuestionService; + + + @ApiOperation("查寻问券") + @GetMapping("getQuestion") + public Result getQuestion(String couponType) { + WxQuestionConfig wxQuestionConfig = new WxQuestionConfig(); + wxQuestionConfig.setTenantId(getTenantId()); + JSONArray ct = new JSONArray(); + ct.put(Integer.valueOf(couponType)); + wxQuestionConfig.setCouponTypeList(ct.toString()); + List listConfig = wxQuestionService.findConfigList(wxQuestionConfig); + if (listConfig.size() > 0) { + if (listConfig.get(0).getStatus().equals(EnumQuestionConfigStatus.ON.getCode())) { + WxQuestion wxQuestion = new WxQuestion(); + wxQuestion.setTenantId(getTenantId()); + wxQuestion.setIds(JSONObject.parseArray(wxQuestionConfig.getQuestionList(), Long.class)); + + List listQuestion = wxQuestionService.findList(wxQuestion); + if (listQuestion.size() > 0) { + Iterator q = listQuestion.iterator(); + WxQuestionLog wxQuestionLog = new WxQuestionLog(); + while(q.hasNext()){ + WxQuestion x = q.next(); + wxQuestionLog.setQuestionId(x.getId()); + wxQuestionLog.setUserId(getUserId()); + wxQuestionLog.setTenantId(getTenantId()); + + if(wxQuestionService.findLogList(wxQuestionLog).size()>0){ + q.remove(); + } + } + if (listQuestion.size() > 0) + return new ResultData(listQuestion.get(new Random().nextInt(listQuestion.size()))); + } + } + } + return new ResultData(); + } + + + @ApiOperation("设置问券配置") + @PostMapping("answerQuestion") + public Result answerQuestion(@RequestBody WxQuestionLog wxQuestionLog) { + if (wxQuestionLog == null) + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + if (wxQuestionLog.getQuestionId() == null) + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + if (wxQuestionLog.getAnswer() == null) + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); + + String[] arys1 = wxQuestionLog.getAnswer().split(","); + List as = new ArrayList<>(); + for (int i = 0; i < arys1.length; i++) { + as.add(Long.parseLong(arys1[i])); + } + + wxQuestionLog.setAnswer(JSONObject.toJSONString(as)); + wxQuestionLog.setUserId(getUserId()); + + wxQuestionService.saveOrUpdateLog(wxQuestionLog); + return new ResultData(); + } + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxQuestionService.java b/mallinkService/src/main/java/com/iformall/service/WxQuestionService.java index 2f2fe7cf5..5591c33d9 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxQuestionService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxQuestionService.java @@ -3,6 +3,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxQuestion; import com.iformall.domain.po.WxQuestionConfig; +import com.iformall.domain.po.WxQuestionLog; import java.util.List; @@ -46,5 +47,9 @@ public interface WxQuestionService { List findConfigList(WxQuestionConfig wxQuestionConfig); + List findLogList(WxQuestionLog wxQuestionLog); + void saveOrUpdateConfig(WxQuestionConfig record); + + void saveOrUpdateLog(WxQuestionLog record); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java index cdd7c9fef..9af8adc3e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxGameServiceImpl.java @@ -62,17 +62,10 @@ public class WxGameServiceImpl implements WxGameService { @Override public WxGame getOne(WxGame wxGame) { + List list = wxGameMapper.findList(wxGame); WxGame record = null; - // get game's count - int countOfGame = wxGameMapper.selectCount(wxGame); - if (countOfGame == 1){ - record = wxGameMapper.selectOne(wxGame); - } else if (countOfGame > 1){ - // random - int pageNum = (int)(1+Math.random()*(countOfGame-1+1)); - PageInfo gamePageInfo = - PageHelper.startPage(pageNum, 1).doSelectPageInfo(() -> wxGameMapper.findList(wxGame)); - record = gamePageInfo.getList().get(0); + if (list.size() >0) { + record = list.get(new Random().nextInt(list.size())); } if (record != null) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxQuestionServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxQuestionServiceImpl.java index 3ee01dfe2..ed0405214 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxQuestionServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxQuestionServiceImpl.java @@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; import com.iformall.domain.po.WxQuestion; import com.iformall.domain.po.WxQuestionConfig; +import com.iformall.domain.po.WxQuestionLog; import com.iformall.mapper.WxQuestionConfigMapper; import com.iformall.mapper.WxQuestionLogMapper; import com.iformall.mapper.WxQuestionMapper; @@ -14,6 +15,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; @Service @@ -66,15 +68,37 @@ public class WxQuestionServiceImpl implements WxQuestionService { return wxQuestionConfigMapper.findList(wxQuestionConfig); } + @Override + public List findLogList(WxQuestionLog wxQuestionLog) { + return wxQuestionLogMapper.findList(wxQuestionLog); + } + @Override public void saveOrUpdateConfig(WxQuestionConfig record) { if (record.getId() == null) { final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); + record.setCreateTime(new Date()); + record.setUpdateTime(new Date()); wxQuestionConfigMapper.insertSelective(record); } else { + record.setUpdateTime(new Date()); wxQuestionConfigMapper.updateByPrimaryKeySelective(record); } } + @Override + public void saveOrUpdateLog(WxQuestionLog record) { + if (record.getId() == null) { + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + record.setCreateTime(new Date()); + record.setUpdateTime(new Date()); + wxQuestionLogMapper.insertSelective(record); + } else { + record.setUpdateTime(new Date()); + wxQuestionLogMapper.updateByPrimaryKeySelective(record); + } + } + } diff --git a/mallinkService/src/main/resources/mapper/WxQuestionConfigMapper.xml b/mallinkService/src/main/resources/mapper/WxQuestionConfigMapper.xml index 80d7950d7..aa7f04e30 100644 --- a/mallinkService/src/main/resources/mapper/WxQuestionConfigMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxQuestionConfigMapper.xml @@ -27,11 +27,11 @@ - and JSON_CONTAINS(`question_list`->'$',JSON_ARRAY(#{questionList})) + and JSON_CONTAINS(question_list,#{questionList}) - and JSON_CONTAINS(`coupon_type_list`->'$',JSON_ARRAY(#{couponTypeList})) + and JSON_CONTAINS(coupon_type_list,#{couponTypeList}) diff --git a/mallinkService/src/main/resources/mapper/WxQuestionLogMapper.xml b/mallinkService/src/main/resources/mapper/WxQuestionLogMapper.xml index d1c5508f2..45576a535 100644 --- a/mallinkService/src/main/resources/mapper/WxQuestionLogMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxQuestionLogMapper.xml @@ -38,7 +38,7 @@ and `tenant_id` = #{tenantId} - + and `answer` = #{answer}