记得上下班打卡 | git大法好,push需谨慎

Commit 96ab35ef authored by sunyuntian's avatar sunyuntian

猫登天空活动

parent e6496182
......@@ -65,6 +65,8 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_STRAWBERRY_POSTER = "sweet:strawberry:poster";
//猫登活动-触发活动
public final static String REDIS_KEY_SWEET_WECHAT_MAODENG_OPEN_POSTER = "sweet:maoDeng:open:userId";
//猫登活动整体
public final static String REDIS_KEY_SWEET_WECHAT_MAODENG_POSTER = "sweet:maoDeng:naneAndImg:userId";
//猫登活动-文本
public final static String REDIS_KEY_SWEET_WECHAT_MAODENG_TEXT_POSTER = "sweet:maoDeng:text:userId";
//猫登活动-图片
......
......@@ -86,6 +86,7 @@ public class MQConst {
SWEET_ANTIGENIC_QUESTION("sweet:stream:rk.antigenicQuestion", "group.antigenicQuestion", "防疫答题"),
SWEET_INTEGRAL_ACTIVITY_DRAW("sweet:stream:rk.integralActivityDraw", "group.integralActivityDraw", "积分抽奖"),
SWEET_POSTER("sweet:stream:rk.userLikeMusician", "group.userLikeMusician", "用户喜欢的音乐人"),
SWEET_WECHAT_MAODENG_TEXT_INSERT("sweet:stream:rk.textAndImgInsert", "group.sweetMaoDengInsert", "猫登天空"),
;
......
package com.liquidnet.service.consumer.sweet.config;
import com.liquidnet.service.consumer.sweet.receiver.ConsumerSweetMaoDengReceiver;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription;
import java.time.Duration;
import static com.liquidnet.service.base.constant.MQConst.SweetQueue.SWEET_WECHAT_MAODENG_TEXT_INSERT;
@Configuration
public class ConsumerSweetMaoDengConfig {
@Autowired
ConsumerSweetMaoDengReceiver consumerSweetMaoDengReceiver;
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions
.builder()
.pollTimeout(Duration.ofMillis(1))
.build();
return StreamMessageListenerContainer.create(factory, options);
}
/*
*猫登天空
* */
private Subscription receiveSqlMaoDeng(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_WECHAT_MAODENG_TEXT_INSERT.getGroup(), SWEET_WECHAT_MAODENG_TEXT_INSERT.name() + t),
StreamOffset.create(SWEET_WECHAT_MAODENG_TEXT_INSERT.getKey(), ReadOffset.lastConsumed()), consumerSweetMaoDengReceiver
);
}
@Bean
public Subscription subscriptionSqlMaoDeng(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlMaoDeng(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlMaoDeng2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlMaoDeng(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlMaoDeng3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlMaoDeng(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
}
package com.liquidnet.service.consumer.sweet.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerSweetMaoDengReceiver extends AbstractSqlRedisReceiver{
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.SWEET_WECHAT_MAODENG_TEXT_INSERT.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.SweetQueue.SWEET_WECHAT_MAODENG_TEXT_INSERT.getGroup();
}
}
-- 猫登天空活动用户传值表
DROP TABLE IF EXISTS `sweet_wechat_maodeng`;
CREATE TABLE `sweet_wechat_maodeng` (
`mid` int UNSIGNED NOT NULL AUTO_INCREMENT,
`mao_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
`text_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '猫名字',
`pic_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '图片url',
`builder_pic` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '生成图片',
PRIMARY KEY (`mid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
-- 猫登天空活动生成图片表
DROP TABLE IF EXISTS `sweet_wechat_maodeng_img`;
CREATE TABLE `sweet_wechat_maodeng_img` (
`mid` int NOT NULL AUTO_INCREMENT,
`mao_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`img_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '图url',
PRIMARY KEY (`mid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
\ No newline at end of file
......@@ -39,4 +39,8 @@ XGROUP CREATE sweet:stream:rk.integralActivityDraw group.integralActivityDraw 0
-- 2021草莓海报活动 --
XADD sweet:stream:rk.userLikeMusician * 0 0
XGROUP CREATE sweet:stream:rk.userLikeMusician group.userLikeMusician 0
\ No newline at end of file
XGROUP CREATE sweet:stream:rk.userLikeMusician group.userLikeMusician 0
-- 猫登天空 --
XADD sweet:stream:rk.textAndImgInsert * 0 0
XGROUP CREATE sweet:stream:rk.textAndImgInsert group.sweetMaoDengInsert 0
\ No newline at end of file
......@@ -68,7 +68,7 @@ public class WechatMpConfigure {
@Autowired
private TextMsgHandler textMsgHandler;
@Autowired
private MaodengImageHandler maodengImageHandler;
private MaoDengImageHandler maodengImageHandler;
@PostConstruct
public void init() {
......
package com.liquidnet.service.sweet.controller;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.WechatUsersRedisUtils;
import com.liquidnet.service.sweet.vo.SweetMaoDengVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
@Api(tags = "猫登活动")
import java.util.LinkedList;
@Api(tags = "活动-猫登活动")
@RestController
@RequestMapping("/wechatMaoDeng")
@Slf4j
......@@ -20,21 +27,21 @@ public class SweetWechatMaoDengController {
@Autowired
private WechatUsersRedisUtils redisUtils;
@Autowired
QueueUtils queueUtils;
@GetMapping("/backData")
@ApiOperation("返回文字图片")
public ResponseDto<SweetMaoDengVo> backDatas(String userId){
userId="1234";
SweetMaoDengVo sweetMaoDengVo = SweetMaoDengVo.getNew();
String textMsg = redisUtils.getSweetMaoDengText(userId);
String image = redisUtils.getSweetMaoDengImage(userId);
SweetMaoDengVo sweetMaoDeng = redisUtils.getSweetMaoDengText(userId);
String textMsg = sweetMaoDeng.getTextMsg();
String image = sweetMaoDeng.getPicUrl();
sweetMaoDengVo.setPicUrl(image);
sweetMaoDengVo.setTextMsg(textMsg);
sweetMaoDengVo.setUserId(userId);
// redisUtils.setSweetMaoDengText(sweetMaoDengVo,-1);
// redisUtils.setSweetMaoDengImage(sweetMaoDengVo,-1);
if (StringUtil.isEmpty(textMsg) && StringUtil.isEmpty(image)) {
return ResponseDto.failure("90081", "获取信息失败");
......@@ -43,4 +50,24 @@ public class SweetWechatMaoDengController {
return ResponseDto.success(sweetMaoDengVo);
}
@PostMapping("/backData")
@ApiOperation("存生成的图")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "userId", value = "userId"),
@ApiImplicitParam(type = "query", dataType = "String", name = "imgUrl", value = "imgUrl"),
})
public ResponseDto addBuilderImg(@RequestParam(value = "userId",required = false) String userId,
@RequestParam(value = "imgUrl",required = false)String imgUrl){
//redis队列入库
String maoId = IDGenerator.nextSnowId();
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_wechat_maodeng.insert_img"));
sqlsDataA.add(new Object[]{maoId, userId,imgUrl});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_MAODENG_TEXT_INSERT.getKey(), SqlMapping.gets(sqls, sqlsDataA));
return ResponseDto.success();
}
}
package com.liquidnet.service.sweet.handler;
import com.liquidnet.common.third.shumei.util.ShumeiUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.WechatUsersRedisUtils;
import com.liquidnet.service.sweet.vo.SweetMaoDengVo;
import lombok.extern.slf4j.Slf4j;
......@@ -9,41 +17,69 @@ import me.chanjar.weixin.mp.api.WxMpMessageHandler;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.LinkedList;
import java.util.Map;
@Component
@Slf4j
public class MaodengImageHandler implements WxMpMessageHandler {
public class MaoDengImageHandler implements WxMpMessageHandler {
@Autowired
private WechatUsersRedisUtils redisUtils;
@Autowired
private ShumeiUtil shumeiUtil;
@Autowired
QueueUtils queueUtils;
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> map, WxMpService wxMpService, WxSessionManager wxSessionManager) throws WxErrorException {
String fromUser = wxMessage.getFromUser();//用户id
String picUrl = wxMessage.getPicUrl();//图片url
String maoContent = wxMessage.getContent();//获取文字消息
//图片非法判断
//此处判断不需要用户登录,所以使用时间代替
String currentUid = DateUtil.now().getTime()+"";
if (!shumeiUtil.checkImage(currentUid, picUrl)) {
//图片非法 提示,发送文本消息
WxMpXmlOutTextMessage build = WxMpXmlOutMessage.TEXT().content("无法识别,TA是不是还有别的照片呀!")
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
return null;
}
SweetMaoDengVo sweetMaoDengVo = SweetMaoDengVo.getNew();
sweetMaoDengVo.setUserId(fromUser);
sweetMaoDengVo.setPicUrl(picUrl);
Integer i = redisUtils.getSweetMaoDengOpen(fromUser);
if (i == 1){
//活动已开启 持久化
redisUtils.setSweetMaoDengImage(sweetMaoDengVo);
}else {
//活动过期 不响应
return null;
}
String i = redisUtils.getSweetMaoDengOpen(fromUser);
if (StringUtil.isNotEmpty(i)){
//活动已开启 持久化 redis
SweetMaoDengVo sweetMaoDeng = redisUtils.getSweetMaoDeng(fromUser);
//是否上传了文字
if (sweetMaoDeng != null){
String textMsg = sweetMaoDeng.getTextMsg();
sweetMaoDengVo.setTextMsg(textMsg);
//更新mysql
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_wechat_maodeng.img.update"));
sqlsDataA.add(new Object[]{picUrl,fromUser});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_MAODENG_TEXT_INSERT.getKey(), SqlMapping.gets(sqls, sqlsDataA));
}else {
//redis队列入库
String maoId = IDGenerator.nextSnowId();
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_wechat_maodeng.insert"));
sqlsDataA.add(new Object[]{maoId, fromUser, null, picUrl});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_MAODENG_TEXT_INSERT.getKey(), SqlMapping.gets(sqls, sqlsDataA));
}
redisUtils.setSweetMaoDeng(sweetMaoDengVo);
}
return null;
}
}
package com.liquidnet.service.sweet.handler;
import com.liquidnet.common.third.shumei.util.ShumeiUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.config.WechatMaConfigure;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.WechatUsersRedisUtils;
import com.liquidnet.service.sweet.vo.SweetMaoDengVo;
import lombok.extern.slf4j.Slf4j;
......@@ -15,6 +23,7 @@ import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.LinkedList;
import java.util.Map;
/**
......@@ -31,9 +40,12 @@ public class TextMsgHandler implements WxMpMessageHandler {
@Autowired
private WechatUsersRedisUtils redisUtils;
@Autowired
WechatMaConfigure maConfigure;
@Autowired
private ShumeiUtil shumeiUtil;
@Autowired
QueueUtils queueUtils;
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService,
......@@ -43,19 +55,51 @@ public class TextMsgHandler implements WxMpMessageHandler {
SweetMaoDengVo sweetMaoDengVo = SweetMaoDengVo.getNew();
sweetMaoDengVo.setUserId(fromUser);
sweetMaoDengVo.setTextMsg(maoContent);
if(maoContent == "猫登天空"){
redisUtils.setSweetMaoDengOpen(fromUser,10*60);
//敏感词判断
//此处判断不需要用户登录,所以使用时间代替
String currentUid = DateUtil.now().getTime() + "";
if (!shumeiUtil.checkText(currentUid, maoContent)) {
//文字敏感 提示,发送文本消息
WxMpXmlOutTextMessage build = WxMpXmlOutMessage.TEXT().content("无法识别,TA是不是还有别的名字呢!(请勿使用表情等特殊字符)")
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
return null;
}
Integer i = redisUtils.getSweetMaoDengOpen(fromUser);
if (i == 1){
//活动已开启 持久化
redisUtils.setSweetMaoDengText(sweetMaoDengVo);
}else {
//活动过期 不响应
if (maoContent.equals("猫登天空")) {
redisUtils.setSweetMaoDengOpen(fromUser, 10 * 60);
WxMpXmlOutTextMessage build = WxMpXmlOutMessage.TEXT().content("欢迎关注猫登天空!请输入你的猫猫的名字,并发送一张你的猫猫的照片给服务号。")
.fromUser(wxMessage.getToUser()).toUser(wxMessage.getFromUser())
.build();
return null;
}
String i = redisUtils.getSweetMaoDengOpen(fromUser);
//是否参加了活动
if (StringUtil.isNotEmpty(i)) {
SweetMaoDengVo sweetMaoDeng = redisUtils.getSweetMaoDeng(fromUser);
//是否上传了图
if (sweetMaoDeng != null) {
String picUrl = sweetMaoDeng.getPicUrl();
sweetMaoDengVo.setPicUrl(picUrl);
//更新mysql
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_wechat_maodeng.text.update"));
sqlsDataA.add(new Object[]{fromUser, maoContent});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_MAODENG_TEXT_INSERT.getKey(), SqlMapping.gets(sqls, sqlsDataA));
} else {
//redis队列入库
String maoId = IDGenerator.nextSnowId();
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_wechat_maodeng.insert"));
sqlsDataA.add(new Object[]{maoId, fromUser, maoContent, null});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_WECHAT_MAODENG_TEXT_INSERT.getKey(), SqlMapping.gets(sqls, sqlsDataA));
}
redisUtils.setSweetMaoDeng(sweetMaoDengVo);
}
......@@ -83,6 +127,5 @@ public class TextMsgHandler implements WxMpMessageHandler {
}
}
}
......@@ -99,19 +99,19 @@ public class WechatUsersRedisUtils {
}
}
public String getSweetMaoDengText(String userId) {
public SweetMaoDengVo getSweetMaoDengText(String userId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_TEXT_POSTER.concat(userId);
Object obj = redisUtil.get(redisKey);
if (null == obj) {
return null;
} else {
SweetMaoDengVo sweetMaoDengVo = (SweetMaoDengVo) obj;
String textMsg = sweetMaoDengVo.getTextMsg();
return textMsg;
return sweetMaoDengVo;
}
}
public String getSweetMaoDengImage(String userId) {
/*public String getSweetMaoDengImage(String userId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_IMAGE_POSTER.concat(userId);
Object obj = redisUtil.get(redisKey);
if (null == obj) {
......@@ -121,29 +121,45 @@ public class WechatUsersRedisUtils {
String picUrl = sweetMaoDengVo.getPicUrl();
return picUrl;
}
}
}*/
public Integer getSweetMaoDengOpen(String fromUser) {
public String getSweetMaoDengOpen(String fromUser) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_OPEN_POSTER.concat(fromUser);
Integer obj = (Integer) redisUtil.get(redisKey);
String obj = (String) redisUtil.get(redisKey);
if (null == obj) {
return null;
} else {
return obj;
}
}
//整体取
public SweetMaoDengVo getSweetMaoDeng(String fromUser) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_POSTER.concat(fromUser);
SweetMaoDengVo obj = (SweetMaoDengVo) redisUtil.get(redisKey);
if (null == obj) {
return null;
} else {
return obj;
}
}
//整体存
public void setSweetMaoDeng(SweetMaoDengVo sweetMaoDengVo) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_POSTER.concat(sweetMaoDengVo.getUserId());
redisUtil.set(redisKey,sweetMaoDengVo);
}
public void setSweetMaoDengText(SweetMaoDengVo sweetMaoDengVo) {
/*public void setSweetMaoDengText(SweetMaoDengVo sweetMaoDengVo) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_TEXT_POSTER.concat(sweetMaoDengVo.getUserId());
redisUtil.set(redisKey,sweetMaoDengVo);
}
public void setSweetMaoDengImage(SweetMaoDengVo sweetMaoDengVo) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_IMAGE_POSTER.concat(sweetMaoDengVo.getUserId());
redisUtil.set(redisKey,sweetMaoDengVo);
}
}*/
public void setSweetMaoDengOpen(String fromUser, long time) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_MAODENG_OPEN_POSTER.concat(fromUser);
redisUtil.set(redisKey,1,time);
redisUtil.set(redisKey,"1",time);
}
}
......@@ -56,4 +56,18 @@ sweet_wechat_users.delete=DELETE FROM sweet_wechat_users WHERE union_id = ? and
#---------------------------音乐节活动海报--------------------------------
sweet_strawberry_poster_user=INSERT INTO sweet_strawberry_poster(open_id,poster_id,union_id,nickname,city_name,city_code,custom_text,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?,?)
sweet_strawberry_poster_Musician=INSERT INTO sweet_strawberry_poster_lineup(lineup_id,poster_id,lineup_num,musician_name,created_at,updated_at) VALUES (?,?,?,?,?,?)
\ No newline at end of file
sweet_strawberry_poster_Musician=INSERT INTO sweet_strawberry_poster_lineup(lineup_id,poster_id,lineup_num,musician_name,created_at,updated_at) VALUES (?,?,?,?,?,?)
#---------------------------猫登天空--------------------------------
sweet_wechat_maodeng.insert=INSERT INTO sweet_wechat_maodeng(mao_id,user_id,text_msg,pic_url) VALUES (?,?,?,?)
sweet_wechat_maodeng.insert_img=INSERT INTO sweet_wechat_maodeng_img(mao_id,user_id,img_url) VALUES (?,?,?)
sweet_wechat_maodeng.text.update=UPDATE sweet_wechat_maodeng SET text_msg=? WHERE user_id=?
sweet_wechat_maodeng.img.update=UPDATE sweet_wechat_maodeng SET pic_url=? WHERE user_id=?
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment